diff --git a/.appveyor.yml b/.appveyor.yml index 7e066134e4e84..3b9dc254a6678 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -2,58 +2,29 @@ version: '{branch}.{build}' os: Windows clone_folder: C:\Projects\Cataclysm-DDA shallow_clone: true -matrix: - fast_finish: false pull_requests: do_not_increment_build_number: false -image: - # - Visual Studio 2017 - - Visual Studio 2015 -configuration: - - Release - # - Debug -platform: - - x64 - # - x86 environment: matrix: - - TOOLCHAIN: msvc14 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + PROJECT: /msvc-full-features/Cataclysm-vcpkg.sln + COMPILER: msvc2017 + TOOLCHAIN: msvc15 + PLATFORM: x64 + CONFIGURATION: Release + APPVEYOR_SAVE_CACHE_ON_ERROR: true +matrix: + fast_finish: false +cache: + - 'c:\tools\vcpkg\installed' install: - # Set TEMP folder - - cmd: set TEMP_FOLDER=C:\Temp - - cmd: mkdir "%TEMP_FOLDER%" - - # Create WINDEPEND folder - - cmd: mkdir "%APPVEYOR_BUILD_FOLDER%\WinDepend" - - # Add WINDEPEND folder to PATH (for LUA binary) - - cmd: set PATH=%APPVEYOR_BUILD_FOLDER%\WinDepend;%PATH% - - # Download WINDEPEND archive - - ps : | - [Net.ServicePointManager]::SecurityProtocol = 'Ssl3, Tls, Tls11, Tls12' - Start-FileDownload "http://dev.narc.ro/cataclysm/WinDepend-MSVC.7z" -FileName "$($env:TEMP_FOLDER)\WinDepend-MSVC.7z" - - # Unpack WINDEPEND archive to WINDEPEND folder - - cmd: 7z x -y "%TEMP_FOLDER%\WinDepend-MSVC.7z" -o"%APPVEYOR_BUILD_FOLDER%" - - # Download LUA archive - - ps : | - [Net.ServicePointManager]::SecurityProtocol = 'Ssl3, Tls, Tls11, Tls12' - Start-FileDownload "https://www.dropbox.com/s/49vexob83bi5nrf/lua.zip?dl=1" -FileName "$($env:TEMP_FOLDER)\lua.zip" - - # Unpack LUA archive to WINDEPEND folder - - cmd: 7z x -y "%TEMP_FOLDER%\lua.zip" -o"%APPVEYOR_BUILD_FOLDER%\WinDepend" - + # Install dependency packages + - cmd: vcpkg --triplet %PLATFORM%-windows install sdl2 sdl2-image sdl2-mixer sdl2-ttf gettext lua + # Add LUA binary folder to PATH + - cmd: set PATH=c:\tools\vcpkg\installed\%PLATFORM%-windows\tools\lua;%PATH% # Report LUA binary version - cmd: lua.exe -v - - # Report debug info - #- cmd: echo %APPVEYOR_BUILD_FOLDER% - #- cmd: path - #- cmd: dir "%APPVEYOR_BUILD_FOLDER%\src\lua" - build: - project: /msvc-full-features/Cataclysm.sln parallel: true + project: /msvc-full-features/Cataclysm-vcpkg.sln verbosity: minimal diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 96d3507c1dbb2..2326d0b579ea4 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -222,6 +222,25 @@ You can also set the tracking information at the same time as creating the branc To https://github.com/YOUR_USERNAME/Cataclysm-DDA.git xxxx..xxxx new_feature -> new_feature +## Unit tests + +There is a suite of tests built into the source tree at tests/ +You should run the test suite after ANY change to the game source. +An ordinary invocation of ``make`` will build the test executable at tests/cata_test, and it can be invoked like any ordinary executable. +With no arguments it will run the entire test suite. +With ``--help`` it will print a number of invocation options you can use to adjust its operation. + + $ make + ... compilation details ... + $ tests/cata_test + Starting the actual test at Fri Nov 9 04:37:03 2018 + =============================================================================== + All tests passed (1324684 assertions in 94 test cases) + Ended test at Fri Nov 9 04:37:45 2018 + The test took 41.772 seconds + +I recommend habitually invoking make like ``make YOUR BUILD OPTIONS && tests/cata_test``. + ## In-game testing, test environment and the debug menu Whether you are implementing a new feature or whether you are fixing a bug, it is always a good practice to test your changes in-game. It can be a hard task to create the exact conditions by playing a normal game to be able to test your changes, which is why there is a debug menu. There is no default key to bring up the menu so you will need to assign one first. diff --git a/.gitignore b/.gitignore index 2fbca40bf5209..25caf07dbb9f3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ cataclysm cataclysm-tiles +cataclysm-vcpkg +cata_test +cata_test-tiles chkjson* !src/chkjson data/*.template @@ -31,6 +34,7 @@ dep/ *.d *.a cmake-build-debug/ +*.tmp data/font/ config/ @@ -51,6 +55,7 @@ Debug*/ *.user *.vcxproj.filters .vscode/ +.vs/ *.code-workspace # Temporary and backup files diff --git a/.travis.yml b/.travis.yml index 7c8e892647834..f62adec362051 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ # this file is HEAVILY influenced by https://github.com/boostorg/hana/blob/master/.travis.yml -sudo: false -dist: trusty +dist: xenial language: c++ cache: ccache @@ -15,13 +14,6 @@ notifications: git: depth: 5 -env: - global: - # Workaround for https://github.com/travis-ci/travis-ci/issues/4681 - # "Defining the build matrix only with matrix.include leads to an additional, unwanted job" - matrix: - - TRAVIS_EMPTY_JOB_WORKAROUND=true - addons: # these apt sources will be referenced later (by using *name) apt: @@ -33,25 +25,43 @@ addons: compiler: gcc os: linux -matrix: - exclude: - - env: TRAVIS_EMPTY_JOB_WORKAROUND=true - +jobs: include: - # test mods - - env: COMPILER=g++-4.8 MODS=--mods=RL_Classes + # Initial test stage, if this fails everything else is cancelled. + - stage: test + # GCC 5 is the pre-installed compiler on Xenial + env: COMPILER=g++ MODS=--mods=RL_Classes + + # Then build different configurations and targets in parallell. + - stage: variants + # GCC MinGW + env: COMPILER='g++' LDFLAGS='-static-libgcc -static-libstdc++' MXE_TARGET='i686-w64-mingw32.static' WINE='wine' + addons: &gcc + apt: + packages: ["wine"] + + # Windows Tiles + - env: COMPILER='g++' LDFLAGS='-static-libgcc -static-libstdc++' MXE_TARGET='i686-w64-mingw32.static' WINE='wine' TILES=1 SOUND=1 compiler: gcc - addons: &gcc48 + addons: &gcc + apt: + packages: ["wine"] + + # Linux Tiles + - env: COMPILER=g++-8 CXXFLAGS='-Wno-implicit-fallthrough' TILES=1 SOUND=1 + compiler: gcc + addons: &gcc8 apt: - packages: ["g++-4.8", "g++-4.8-multilib", "libc6-dbg", "libc6-dbg:i386", "lcov", "astyle"] + packages: ["g++-8", "g++-8-multilib", "libc6-dbg", "libc6-dbg:i386", "libsdl2-dev", "libsdl2-ttf-dev", "libsdl2-image-dev", "libsdl2-mixer-dev"] sources: *apt_sources - # coverage - - env: COMPILER=g++-4.8 CODE_COVERAGE=true + # Finally check the compiler variants + - stage: compilers + env: COMPILER=g++-4.8 compiler: gcc addons: &gcc48 apt: - packages: ["g++-4.8", "g++-4.8-multilib", "libc6-dbg", "libc6-dbg:i386", "lcov", "astyle"] + packages: ["g++-4.8", "g++-4.8-multilib", "libc6-dbg", "libc6-dbg:i386"] sources: *apt_sources # GCC 4.9 @@ -62,14 +72,6 @@ matrix: packages: ["g++-4.9", "g++-4.9-multilib", "libc6-dbg", "libc6-dbg:i386"] sources: *apt_sources - # GCC 5 - - env: COMPILER=g++-5 - compiler: gcc - addons: &gcc5 - apt: - packages: ["g++-5", "g++-5-multilib", "libc6-dbg", "libc6-dbg:i386"] - sources: *apt_sources - # GCC 6 - env: COMPILER=g++-6 compiler: gcc @@ -79,11 +81,12 @@ matrix: sources: *apt_sources # GCC 7 - - env: COMPILER=g++-7 CXXFLAGS='-Wno-implicit-fallthrough' + - env: COMPILER=g++-7 CXXFLAGS='-Wno-implicit-fallthrough' CODE_COVERAGE=true compiler: gcc + dist: trusty addons: &gcc7 apt: - packages: ["g++-7", "g++-7-multilib", "libc6-dbg", "libc6-dbg:i386"] + packages: ["g++-7", "g++-7-multilib", "libc6-dbg", "libc6-dbg:i386", "lcov"] sources: *apt_sources # GCC 8 @@ -94,14 +97,6 @@ matrix: packages: ["g++-8", "g++-8-multilib", "libc6-dbg", "libc6-dbg:i386"] sources: *apt_sources - # GCC MinGW - - env: COMPILER='g++' LDFLAGS='-static-libgcc -static-libstdc++' MXE_TARGET='i686-w64-mingw32.static' WINE='wine' - compiler: gcc - sudo: required - addons: &gcc - apt: - packages: ["wine"] - # Clang 3.8 - env: CLANG=clang++-3.8 CXXFLAGS='-Wno-error=unused-command-line-argument -D__extern_always_inline="extern __always_inline"' compiler: clang @@ -120,7 +115,6 @@ matrix: # Clang 4.0 - env: CLANG=clang++-4.0 CXXFLAGS=-Wno-error=unused-command-line-argument - dist: trusty compiler: clang addons: &clang40 apt: @@ -145,22 +139,6 @@ matrix: packages: ["clang-6.0", "g++-multilib", "libc6-dbg", "libc6-dbg:i386", "g++-6"] sources: [*apt_sources, llvm-toolchain-trusty-6.0] - # Windows Tiles - - env: COMPILER='g++' LDFLAGS='-static-libgcc -static-libstdc++' MXE_TARGET='i686-w64-mingw32.static' WINE='wine' TILES=1 SOUND=1 - compiler: gcc - sudo: required - addons: &gcc - apt: - packages: ["wine"] - - # Linux Tiles - - env: COMPILER=g++-8 CXXFLAGS='-Wno-implicit-fallthrough' TILES=1 SOUND=1 - compiler: gcc - addons: &gcc8 - apt: - packages: ["g++-8", "g++-8-multilib", "libc6-dbg", "libc6-dbg:i386", "libsdl2-dev", "libsdl2-ttf-dev", "libsdl2-image-dev", "libsdl2-mixer-dev"] - sources: *apt_sources - before_script: - if [ -n "${CLANG}" ]; then COMPILER="$CLANG"; fi - ${COMPILER} --version @@ -169,7 +147,8 @@ before_script: script: - make -j3 RELEASE=1 BACKTRACE=1 DEBUG_SYMBOLS=1 CROSS="$CROSS_COMPILATION" - - $WINE ./tests/cata_test -r cata --rng-seed `shuf -i 0-1000000000 -n 1` $MODS + - $WINE ./tests/cata_test -r cata --rng-seed `shuf -i 0-1000000000 -n 1` + - if [ -n "$MODS" ]; then $WINE ./tests/cata_test -r cata --rng-seed `shuf -i 0-1000000000 -n 1` $MODS; fi after_success: - if [ -n "${CODE_COVERAGE}" ]; then coveralls -b . -i src -e tests --gcov /usr/bin/gcov-4.8; fi diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b109e96bb371..060461aab9522 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ # Main project build script -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.0.0) PROJECT(CataclysmDDA) @@ -23,6 +23,8 @@ option(LUA_BINARY "Lua binary name or path. You can try to use luajit for extr option(GIT_BINARY "Git binary name or path." "") OPTION(PREFIX "Location of Data,GFX, & Lua directories" "") +include(CTest) + include(GetGitRevisionDescription) git_describe(GIT_VERSION) @@ -385,6 +387,7 @@ add_subdirectory(data) if (NOT MSVC) add_subdirectory(src/chkjson) endif() +add_subdirectory(tests) CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" @@ -402,3 +405,5 @@ if(CCACHE_FOUND) set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) endif(CCACHE_FOUND) + +# vim:noet diff --git a/CMakeModules/CMakeParseArguments.cmake b/CMakeModules/CMakeParseArguments.cmake new file mode 100644 index 0000000000000..4248176ad6648 --- /dev/null +++ b/CMakeModules/CMakeParseArguments.cmake @@ -0,0 +1,160 @@ +#.rst: +# CMakeParseArguments +# ------------------- +# +# +# +# CMAKE_PARSE_ARGUMENTS( +# args...) +# +# CMAKE_PARSE_ARGUMENTS() is intended to be used in macros or functions +# for parsing the arguments given to that macro or function. It +# processes the arguments and defines a set of variables which hold the +# values of the respective options. +# +# The argument contains all options for the respective macro, +# i.e. keywords which can be used when calling the macro without any +# value following, like e.g. the OPTIONAL keyword of the install() +# command. +# +# The argument contains all keywords for this macro +# which are followed by one value, like e.g. DESTINATION keyword of the +# install() command. +# +# The argument contains all keywords for this +# macro which can be followed by more than one value, like e.g. the +# TARGETS or FILES keywords of the install() command. +# +# When done, CMAKE_PARSE_ARGUMENTS() will have defined for each of the +# keywords listed in , and +# a variable composed of the given +# followed by "_" and the name of the respective keyword. These +# variables will then hold the respective value from the argument list. +# For the keywords this will be TRUE or FALSE. +# +# All remaining arguments are collected in a variable +# _UNPARSED_ARGUMENTS, this can be checked afterwards to see +# whether your macro was called with unrecognized parameters. +# +# As an example here a my_install() macro, which takes similar arguments +# as the real install() command: +# +# :: +# +# function(MY_INSTALL) +# set(options OPTIONAL FAST) +# set(oneValueArgs DESTINATION RENAME) +# set(multiValueArgs TARGETS CONFIGURATIONS) +# cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) +# ... +# +# +# +# Assume my_install() has been called like this: +# +# :: +# +# my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub) +# +# +# +# After the cmake_parse_arguments() call the macro will have set the +# following variables: +# +# :: +# +# MY_INSTALL_OPTIONAL = TRUE +# MY_INSTALL_FAST = FALSE (this option was not used when calling my_install() +# MY_INSTALL_DESTINATION = "bin" +# MY_INSTALL_RENAME = "" (was not used) +# MY_INSTALL_TARGETS = "foo;bar" +# MY_INSTALL_CONFIGURATIONS = "" (was not used) +# MY_INSTALL_UNPARSED_ARGUMENTS = "blub" (no value expected after "OPTIONAL" +# +# +# +# You can then continue and process these variables. +# +# Keywords terminate lists of values, e.g. if directly after a +# one_value_keyword another recognized keyword follows, this is +# interpreted as the beginning of the new option. E.g. +# my_install(TARGETS foo DESTINATION OPTIONAL) would result in +# MY_INSTALL_DESTINATION set to "OPTIONAL", but MY_INSTALL_DESTINATION +# would be empty and MY_INSTALL_OPTIONAL would be set to TRUE therefor. + +#============================================================================= +# Copyright 2010 Alexander Neundorf +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + + +if(__CMAKE_PARSE_ARGUMENTS_INCLUDED) + return() +endif() +set(__CMAKE_PARSE_ARGUMENTS_INCLUDED TRUE) + + +function(CMAKE_PARSE_ARGUMENTS prefix _optionNames _singleArgNames _multiArgNames) + # first set all result variables to empty/FALSE + foreach(arg_name ${_singleArgNames} ${_multiArgNames}) + set(${prefix}_${arg_name}) + endforeach() + + foreach(option ${_optionNames}) + set(${prefix}_${option} FALSE) + endforeach() + + set(${prefix}_UNPARSED_ARGUMENTS) + + set(insideValues FALSE) + set(currentArgName) + + # now iterate over all arguments and fill the result variables + foreach(currentArg ${ARGN}) + list(FIND _optionNames "${currentArg}" optionIndex) # ... then this marks the end of the arguments belonging to this keyword + list(FIND _singleArgNames "${currentArg}" singleArgIndex) # ... then this marks the end of the arguments belonging to this keyword + list(FIND _multiArgNames "${currentArg}" multiArgIndex) # ... then this marks the end of the arguments belonging to this keyword + + if(${optionIndex} EQUAL -1 AND ${singleArgIndex} EQUAL -1 AND ${multiArgIndex} EQUAL -1) + if(insideValues) + if("${insideValues}" STREQUAL "SINGLE") + set(${prefix}_${currentArgName} ${currentArg}) + set(insideValues FALSE) + elseif("${insideValues}" STREQUAL "MULTI") + list(APPEND ${prefix}_${currentArgName} ${currentArg}) + endif() + else() + list(APPEND ${prefix}_UNPARSED_ARGUMENTS ${currentArg}) + endif() + else() + if(NOT ${optionIndex} EQUAL -1) + set(${prefix}_${currentArg} TRUE) + set(insideValues FALSE) + elseif(NOT ${singleArgIndex} EQUAL -1) + set(currentArgName ${currentArg}) + set(${prefix}_${currentArgName}) + set(insideValues "SINGLE") + elseif(NOT ${multiArgIndex} EQUAL -1) + set(currentArgName ${currentArg}) + set(${prefix}_${currentArgName}) + set(insideValues "MULTI") + endif() + endif() + + endforeach() + + # propagate the result variables to the caller: + foreach(arg_name ${_singleArgNames} ${_multiArgNames} ${_optionNames}) + set(${prefix}_${arg_name} ${${prefix}_${arg_name}} PARENT_SCOPE) + endforeach() + set(${prefix}_UNPARSED_ARGUMENTS ${${prefix}_UNPARSED_ARGUMENTS} PARENT_SCOPE) + +endfunction() diff --git a/CMakeModules/CheckLibraryExists.cmake b/CMakeModules/CheckLibraryExists.cmake new file mode 100644 index 0000000000000..67d1b47dd2af8 --- /dev/null +++ b/CMakeModules/CheckLibraryExists.cmake @@ -0,0 +1,78 @@ +#.rst: +# CheckLibraryExists +# ------------------ +# +# Check if the function exists. +# +# CHECK_LIBRARY_EXISTS (LIBRARY FUNCTION LOCATION VARIABLE) +# +# :: +# +# LIBRARY - the name of the library you are looking for +# FUNCTION - the name of the function +# LOCATION - location where the library should be found +# VARIABLE - variable to store the result +# +# +# +# The following variables may be set before calling this macro to modify +# the way the check is run: +# +# :: +# +# CMAKE_REQUIRED_FLAGS = string of compile command line flags +# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) +# CMAKE_REQUIRED_LIBRARIES = list of libraries to link + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + + + +macro(CHECK_LIBRARY_EXISTS LIBRARY FUNCTION LOCATION VARIABLE) + if(${VARIABLE} MATCHES "^${VARIABLE}$") + set(MACRO_CHECK_LIBRARY_EXISTS_DEFINITION + "-DCHECK_FUNCTION_EXISTS=${FUNCTION} ${CMAKE_REQUIRED_FLAGS}") + message(STATUS "Looking for ${FUNCTION} in ${LIBRARY}") + set(CHECK_LIBRARY_EXISTS_LIBRARIES ${LIBRARY}) + if(CMAKE_REQUIRED_LIBRARIES) + set(CHECK_LIBRARY_EXISTS_LIBRARIES + ${CHECK_LIBRARY_EXISTS_LIBRARIES} ${CMAKE_REQUIRED_LIBRARIES}) + endif() + try_compile(${VARIABLE} + ${CMAKE_BINARY_DIR} + ${CMAKE_ROOT}/Modules/CheckFunctionExists.c + COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} + LINK_LIBRARIES ${CHECK_LIBRARY_EXISTS_LIBRARIES} + CMAKE_FLAGS + -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_LIBRARY_EXISTS_DEFINITION} + -DLINK_DIRECTORIES:STRING=${LOCATION} + OUTPUT_VARIABLE OUTPUT) + + if(${VARIABLE}) + message(STATUS "Looking for ${FUNCTION} in ${LIBRARY} - found") + set(${VARIABLE} 1 CACHE INTERNAL "Have library ${LIBRARY}") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if the function ${FUNCTION} exists in the ${LIBRARY} " + "passed with the following output:\n" + "${OUTPUT}\n\n") + else() + message(STATUS "Looking for ${FUNCTION} in ${LIBRARY} - not found") + set(${VARIABLE} "" CACHE INTERNAL "Have library ${LIBRARY}") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if the function ${FUNCTION} exists in the ${LIBRARY} " + "failed with the following output:\n" + "${OUTPUT}\n\n") + endif() + endif() +endmacro() diff --git a/CMakeModules/FindCurses.cmake b/CMakeModules/FindCurses.cmake index a25a3d33f6d69..a453a675dd4f0 100644 --- a/CMakeModules/FindCurses.cmake +++ b/CMakeModules/FindCurses.cmake @@ -1,38 +1,57 @@ -# - Find the curses include file and library +#.rst: +# FindCurses +# ---------- # -# CURSES_FOUND - system has Curses -# CURSES_INCLUDE_DIR - the Curses include directory -# CURSES_LIBRARIES - The libraries needed to use Curses -# CURSES_HAVE_CURSES_H - true if curses.h is available -# CURSES_HAVE_NCURSES_H - true if ncurses.h is available -# CURSES_HAVE_NCURSES_NCURSES_H - true if ncurses/ncurses.h is available -# CURSES_HAVE_NCURSES_CURSES_H - true if ncurses/curses.h is available -# CURSES_LIBRARY - set for backwards compatibility with 2.4 CMake +# Find the curses include file and library # -# Set CURSES_NEED_NCURSES to TRUE before the FIND_PACKAGE() command if NCurses -# functionality is required. - -# Set CURSES_NEED_WIDE to TRUE before the FIND_PACKAGE() command if unicode -# functionality is required - -SET(CURSES_LIBRARY_NAME "curses") -SET(NCURSES_LIBRARY_NAME "ncurses") -IF(CURSES_NEED_WIDE) - SET(CURSES_LIBRARY_NAME "cursesw") - SET(NCURSES_LIBRARY_NAME "ncursesw") -ENDIF(CURSES_NEED_WIDE) - -FIND_LIBRARY(CURSES_CURSES_LIBRARY "${CURSES_LIBRARY_NAME}") -# MESSAGE(STATUS "CURSES! " ${CURSES_CURSES_LIBRARY}) - -FIND_LIBRARY(CURSES_NCURSES_LIBRARY "${NCURSES_LIBRARY_NAME}") -# MESSAGE(STATUS "NCURSES! " ${CURSES_NCURSES_LIBRARY}) - -SET(CURSES_USE_NCURSES FALSE) +# +# +# :: +# +# CURSES_FOUND - system has Curses +# CURSES_INCLUDE_DIR - the Curses include directory +# CURSES_LIBRARIES - The libraries needed to use Curses +# CURSES_HAVE_CURSES_H - true if curses.h is available +# CURSES_HAVE_NCURSES_H - true if ncurses.h is available +# CURSES_HAVE_NCURSES_NCURSES_H - true if ncurses/ncurses.h is available +# CURSES_HAVE_NCURSES_CURSES_H - true if ncurses/curses.h is available +# CURSES_LIBRARY - set for backwards compatibility with 2.4 CMake +# +# +# +# Set CURSES_NEED_NCURSES to TRUE before the find_package() command if +# NCurses functionality is required. -IF(CURSES_NCURSES_LIBRARY AND NOT CURSES_CURSES_LIBRARY) - SET(CURSES_USE_NCURSES TRUE) -ENDIF(CURSES_NCURSES_LIBRARY AND NOT CURSES_CURSES_LIBRARY) +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +find_library(CURSES_CURSES_LIBRARY NAMES curses ) + +find_library(CURSES_NCURSES_LIBRARY NAMES ncurses ) +set(CURSES_USE_NCURSES FALSE) + +if(CURSES_NCURSES_LIBRARY AND ((NOT CURSES_CURSES_LIBRARY) OR CURSES_NEED_NCURSES)) + set(CURSES_USE_NCURSES TRUE) +endif() +# http://cygwin.com/ml/cygwin-announce/2010-01/msg00002.html +# cygwin ncurses stopped providing curses.h symlinks see above +# message. Cygwin is an ncurses package, so force ncurses on +# cygwin if the curses.h is missing +if(CYGWIN) + if(NOT EXISTS /usr/include/curses.h) + set(CURSES_USE_NCURSES TRUE) + endif() +endif() # Not sure the logic is correct here. @@ -44,116 +63,123 @@ ENDIF(CURSES_NCURSES_LIBRARY AND NOT CURSES_CURSES_LIBRARY) # some web pages also say that even with ncurses there is not always a ncurses.h: # http://osdir.com/ml/gnome.apps.mc.devel/2002-06/msg00029.html # So at first try ncurses.h, if not found, try to find curses.h under the same -# prefix as the library was found, if still not found, try curses.h with the +# prefix as the library was found, if still not found, try curses.h with the # default search paths. -IF(CURSES_CURSES_LIBRARY AND CURSES_NEED_NCURSES) - INCLUDE(CheckLibraryExists) - CHECK_LIBRARY_EXISTS("${CURSES_CURSES_LIBRARY}" +if(CURSES_CURSES_LIBRARY AND CURSES_NEED_NCURSES) + include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake) + CHECK_LIBRARY_EXISTS("${CURSES_CURSES_LIBRARY}" wsyncup "" CURSES_CURSES_HAS_WSYNCUP) - IF(CURSES_NCURSES_LIBRARY AND NOT CURSES_CURSES_HAS_WSYNCUP) - CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}" + if(CURSES_NCURSES_LIBRARY AND NOT CURSES_CURSES_HAS_WSYNCUP) + CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}" wsyncup "" CURSES_NCURSES_HAS_WSYNCUP) - IF( CURSES_NCURSES_HAS_WSYNCUP) - SET(CURSES_USE_NCURSES TRUE) - ENDIF( CURSES_NCURSES_HAS_WSYNCUP) - ENDIF(CURSES_NCURSES_LIBRARY AND NOT CURSES_CURSES_HAS_WSYNCUP) + if( CURSES_NCURSES_HAS_WSYNCUP) + set(CURSES_USE_NCURSES TRUE) + endif() + endif() -ENDIF(CURSES_CURSES_LIBRARY AND CURSES_NEED_NCURSES) +endif() -IF(NOT CURSES_USE_NCURSES) - FIND_FILE(CURSES_HAVE_CURSES_H curses.h ) - FIND_FILE(CURSES_HAVE_CURSESW_H cursesw.h ) - FIND_PATH(CURSES_CURSES_H_PATH curses.h ) - FIND_PATH(CURSES_CURSESW_H_PATH cursesw.h ) - GET_FILENAME_COMPONENT(_cursesLibDir "${CURSES_CURSES_LIBRARY}" PATH) - GET_FILENAME_COMPONENT(_cursesParentDir "${_cursesLibDir}" PATH) +if(NOT CURSES_USE_NCURSES) + find_file(CURSES_HAVE_CURSES_H curses.h ) + find_path(CURSES_CURSES_H_PATH curses.h ) + get_filename_component(_cursesLibDir "${CURSES_CURSES_LIBRARY}" PATH) + get_filename_component(_cursesParentDir "${_cursesLibDir}" PATH) # for compatibility with older FindCurses.cmake this has to be in the cache # FORCE must not be used since this would break builds which preload a cache wqith these variables set - SET(CURSES_INCLUDE_PATH "${CURSES_CURSES_H_PATH} ${CURSES_CURSESW_H_PATH}" + set(CURSES_INCLUDE_PATH "${CURSES_CURSES_H_PATH}" CACHE FILEPATH "The curses include path") - SET(CURSES_LIBRARY "${CURSES_CURSES_LIBRARY}" + set(CURSES_LIBRARY "${CURSES_CURSES_LIBRARY}" CACHE FILEPATH "The curses library") -ELSE(NOT CURSES_USE_NCURSES) +else() # we need to find ncurses - GET_FILENAME_COMPONENT(_cursesLibDir "${CURSES_NCURSES_LIBRARY}" PATH) - GET_FILENAME_COMPONENT(_cursesParentDir "${_cursesLibDir}" PATH) + get_filename_component(_cursesLibDir "${CURSES_NCURSES_LIBRARY}" PATH) + get_filename_component(_cursesParentDir "${_cursesLibDir}" PATH) - FIND_FILE(CURSES_HAVE_NCURSES_H ncurses.h) - FIND_FILE(CURSES_HAVE_NCURSES_NCURSES_H ncurses/ncurses.h) - FIND_FILE(CURSES_HAVE_NCURSES_CURSES_H ncurses/curses.h) - FIND_FILE(CURSES_HAVE_CURSES_H curses.h + find_file(CURSES_HAVE_NCURSES_H ncurses.h) + find_file(CURSES_HAVE_NCURSES_NCURSES_H ncurses/ncurses.h) + find_file(CURSES_HAVE_NCURSES_CURSES_H ncurses/curses.h) + find_file(CURSES_HAVE_CURSES_H curses.h HINTS "${_cursesParentDir}/include") - FIND_FILE(CURSES_HAVE_NCURSESW_H ncursesw.h) - FIND_FILE(CURSES_HAVE_NCURSESW_NCURSES_H ncursesw/ncurses.h) - FIND_FILE(CURSES_HAVE_NCURSESW_CURSES_H ncursesw/curses.h) - FIND_FILE(CURSES_HAVE_CURSESW_H cursesw.h + find_path(CURSES_NCURSES_INCLUDE_PATH ncurses.h ncurses/ncurses.h + ncurses/curses.h) + find_path(CURSES_NCURSES_INCLUDE_PATH curses.h HINTS "${_cursesParentDir}/include") - #FIND_PATH(CURSES_NCURSES_INCLUDE_PATH ncurses.h ncurses/ncurses.h - # ncurses/curses.h ncursesw.h ncursesw/ncurses.h ncursesw/curses.h cursesw.h) - FIND_PATH(CURSES_NCURSES_INCLUDE_PATH curses.h - HINTS "${_cursesParentDir}/include/ncursesw" "${_cursesParentDir}/include" "${_cursesParentDir}") - # for compatibility with older FindCurses.cmake this has to be in the cache # FORCE must not be used since this would break builds which preload + # however if the value of the variable has NOTFOUND in it, then + # it is OK to force, and we need to force in order to have it work. # a cache wqith these variables set - # only put ncurses include and library into + # only put ncurses include and library into # variables if they are found - IF(CURSES_NCURSES_INCLUDE_PATH AND CURSES_NCURSES_LIBRARY) - - SET(CURSES_INCLUDE_PATH "${CURSES_NCURSES_INCLUDE_PATH}" - CACHE FILEPATH "The curses include path") - SET(CURSES_LIBRARY "${CURSES_NCURSES_LIBRARY}" - CACHE FILEPATH "The curses library") - ENDIF(CURSES_NCURSES_INCLUDE_PATH AND CURSES_NCURSES_LIBRARY) - -ENDIF(NOT CURSES_USE_NCURSES) - - - -FIND_LIBRARY(CURSES_EXTRA_LIBRARY cur_colr HINTS "${_cursesLibDir}") -FIND_LIBRARY(CURSES_EXTRA_LIBRARY cur_colr ) - -SET(CURSES_FORM_LIBRARY_NAME "form") -IF(CURSES_NEED_WIDE) - SET(CURSES_FORM_LIBRARY_NAME "formw") -ENDIF(CURSES_NEED_WIDE) - -FIND_LIBRARY(CURSES_CURSES_LIBRARY "${CURSES_LIBRARY_NAME}") -FIND_LIBRARY(CURSES_FORM_LIBRARY "${CURSES_FORM_LIBRARY_NAME}" HINTS "${_cursesLibDir}") -FIND_LIBRARY(CURSES_FORM_LIBRARY "${CURSES_FORM_LIBRARY_NAME}" ) + if(NOT CURSES_NCURSES_INCLUDE_PATH AND CURSES_HAVE_NCURSES_NCURSES_H) + get_filename_component(CURSES_NCURSES_INCLUDE_PATH + "${CURSES_HAVE_NCURSES_NCURSES_H}" PATH) + endif() + if(CURSES_NCURSES_INCLUDE_PATH AND CURSES_NCURSES_LIBRARY) + set( FORCE_IT ) + if(CURSES_INCLUDE_PATH MATCHES NOTFOUND) + set(FORCE_IT FORCE) + endif() + set(CURSES_INCLUDE_PATH "${CURSES_NCURSES_INCLUDE_PATH}" + CACHE FILEPATH "The curses include path" ${FORCE_IT}) + set( FORCE_IT) + if(CURSES_LIBRARY MATCHES NOTFOUND) + set(FORCE_IT FORCE) + endif() + set(CURSES_LIBRARY "${CURSES_NCURSES_LIBRARY}" + CACHE FILEPATH "The curses library" ${FORCE_IT}) + endif() + + CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}" + cbreak "" CURSES_NCURSES_HAS_CBREAK) + if(NOT CURSES_NCURSES_HAS_CBREAK) + find_library(CURSES_EXTRA_LIBRARY tinfo HINTS "${_cursesLibDir}") + find_library(CURSES_EXTRA_LIBRARY tinfo ) + CHECK_LIBRARY_EXISTS("${CURSES_EXTRA_LIBRARY}" + cbreak "" CURSES_TINFO_HAS_CBREAK) + endif() +endif() + +if (NOT CURSES_TINFO_HAS_CBREAK) + find_library(CURSES_EXTRA_LIBRARY cur_colr HINTS "${_cursesLibDir}") + find_library(CURSES_EXTRA_LIBRARY cur_colr ) +endif() + +find_library(CURSES_FORM_LIBRARY form HINTS "${_cursesLibDir}") +find_library(CURSES_FORM_LIBRARY form ) # for compatibility with older FindCurses.cmake this has to be in the cache # FORCE must not be used since this would break builds which preload a cache # qith these variables set -SET(FORM_LIBRARY "${CURSES_FORM_LIBRARY}" +set(FORM_LIBRARY "${CURSES_FORM_LIBRARY}" CACHE FILEPATH "The curses form library") # Need to provide the *_LIBRARIES -SET(CURSES_LIBRARIES ${CURSES_LIBRARY}) +set(CURSES_LIBRARIES ${CURSES_LIBRARY}) -IF(CURSES_EXTRA_LIBRARY) - SET(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_EXTRA_LIBRARY}) -ENDIF(CURSES_EXTRA_LIBRARY) +if(CURSES_EXTRA_LIBRARY) + set(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_EXTRA_LIBRARY}) +endif() -IF(CURSES_FORM_LIBRARY) - SET(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_FORM_LIBRARY}) -ENDIF(CURSES_FORM_LIBRARY) +if(CURSES_FORM_LIBRARY) + set(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_FORM_LIBRARY}) +endif() # Proper name is *_INCLUDE_DIR -SET(CURSES_INCLUDE_DIR ${CURSES_INCLUDE_PATH}) +set(CURSES_INCLUDE_DIR ${CURSES_INCLUDE_PATH}) -# handle the QUIETLY and REQUIRED arguments and set CURSES_FOUND to TRUE if +# handle the QUIETLY and REQUIRED arguments and set CURSES_FOUND to TRUE if # all listed variables are TRUE -INCLUDE(FindPackageHandleStandardArgs) +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Curses DEFAULT_MSG CURSES_LIBRARY CURSES_INCLUDE_PATH) -MARK_AS_ADVANCED( +mark_as_advanced( CURSES_INCLUDE_PATH CURSES_LIBRARY CURSES_CURSES_INCLUDE_PATH @@ -162,18 +188,11 @@ MARK_AS_ADVANCED( CURSES_NCURSES_LIBRARY CURSES_EXTRA_LIBRARY FORM_LIBRARY - CURSES_FORM_LIBRARY CURSES_LIBRARIES CURSES_INCLUDE_DIR CURSES_CURSES_HAS_WSYNCUP CURSES_NCURSES_HAS_WSYNCUP - CURSES_HAVE_CURSESW_H - CURSES_HAVE_CURSES_H - CURSES_HAVE_NCURSESW_CURSES_H - CURSES_HAVE_NCURSESW_H - CURSES_HAVE_NCURSESW_NCURSES_H - CURSES_HAVE_NCURSES_CURSES_H - CURSES_HAVE_NCURSES_H - CURSES_HAVE_NCURSES_NCURSES_H + CURSES_NCURSES_HAS_CBREAK + CURSES_TINFO_HAS_CBREAK ) diff --git a/CMakeModules/FindPackageHandleStandardArgs.cmake b/CMakeModules/FindPackageHandleStandardArgs.cmake new file mode 100644 index 0000000000000..d03041852de88 --- /dev/null +++ b/CMakeModules/FindPackageHandleStandardArgs.cmake @@ -0,0 +1,351 @@ +#.rst: +# FindPackageHandleStandardArgs +# ----------------------------- +# +# +# +# FIND_PACKAGE_HANDLE_STANDARD_ARGS( ... ) +# +# This function is intended to be used in FindXXX.cmake modules files. +# It handles the REQUIRED, QUIET and version-related arguments to +# find_package(). It also sets the _FOUND variable. The +# package is considered found if all variables ... listed contain +# valid results, e.g. valid filepaths. +# +# There are two modes of this function. The first argument in both +# modes is the name of the Find-module where it is called (in original +# casing). +# +# The first simple mode looks like this: +# +# :: +# +# FIND_PACKAGE_HANDLE_STANDARD_ARGS( (DEFAULT_MSG|"Custom failure message") ... ) +# +# If the variables to are all valid, then +# _FOUND will be set to TRUE. If DEFAULT_MSG is given +# as second argument, then the function will generate itself useful +# success and error messages. You can also supply a custom error +# message for the failure case. This is not recommended. +# +# The second mode is more powerful and also supports version checking: +# +# :: +# +# FIND_PACKAGE_HANDLE_STANDARD_ARGS(NAME [FOUND_VAR ] +# [REQUIRED_VARS ...] +# [VERSION_VAR ] +# [HANDLE_COMPONENTS] +# [CONFIG_MODE] +# [FAIL_MESSAGE "Custom failure message"] ) +# +# +# +# In this mode, the name of the result-variable can be set either to +# either _FOUND or _FOUND using the +# FOUND_VAR option. Other names for the result-variable are not +# allowed. So for a Find-module named FindFooBar.cmake, the two +# possible names are FooBar_FOUND and FOOBAR_FOUND. It is recommended +# to use the original case version. If the FOUND_VAR option is not +# used, the default is _FOUND. +# +# As in the simple mode, if through are all valid, +# _FOUND will be set to TRUE. After REQUIRED_VARS the +# variables which are required for this package are listed. Following +# VERSION_VAR the name of the variable can be specified which holds the +# version of the package which has been found. If this is done, this +# version will be checked against the (potentially) specified required +# version used in the find_package() call. The EXACT keyword is also +# handled. The default messages include information about the required +# version and the version which has been actually found, both if the +# version is ok or not. If the package supports components, use the +# HANDLE_COMPONENTS option to enable handling them. In this case, +# find_package_handle_standard_args() will report which components have +# been found and which are missing, and the _FOUND variable +# will be set to FALSE if any of the required components (i.e. not the +# ones listed after OPTIONAL_COMPONENTS) are missing. Use the option +# CONFIG_MODE if your FindXXX.cmake module is a wrapper for a +# find_package(... NO_MODULE) call. In this case VERSION_VAR will be +# set to _VERSION and the macro will automatically check whether +# the Config module was found. Via FAIL_MESSAGE a custom failure +# message can be specified, if this is not used, the default message +# will be displayed. +# +# Example for mode 1: +# +# :: +# +# find_package_handle_standard_args(LibXml2 DEFAULT_MSG LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR) +# +# +# +# LibXml2 is considered to be found, if both LIBXML2_LIBRARY and +# LIBXML2_INCLUDE_DIR are valid. Then also LIBXML2_FOUND is set to +# TRUE. If it is not found and REQUIRED was used, it fails with +# FATAL_ERROR, independent whether QUIET was used or not. If it is +# found, success will be reported, including the content of . On +# repeated Cmake runs, the same message won't be printed again. +# +# Example for mode 2: +# +# :: +# +# find_package_handle_standard_args(LibXslt FOUND_VAR LibXslt_FOUND +# REQUIRED_VARS LibXslt_LIBRARIES LibXslt_INCLUDE_DIRS +# VERSION_VAR LibXslt_VERSION_STRING) +# +# In this case, LibXslt is considered to be found if the variable(s) +# listed after REQUIRED_VAR are all valid, i.e. LibXslt_LIBRARIES and +# LibXslt_INCLUDE_DIRS in this case. The result will then be stored in +# LibXslt_FOUND . Also the version of LibXslt will be checked by using +# the version contained in LibXslt_VERSION_STRING. Since no +# FAIL_MESSAGE is given, the default messages will be printed. +# +# Another example for mode 2: +# +# :: +# +# find_package(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4) +# find_package_handle_standard_args(Automoc4 CONFIG_MODE) +# +# In this case, FindAutmoc4.cmake wraps a call to find_package(Automoc4 +# NO_MODULE) and adds an additional search directory for automoc4. Here +# the result will be stored in AUTOMOC4_FOUND. The following +# FIND_PACKAGE_HANDLE_STANDARD_ARGS() call produces a proper +# success/error message. + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageMessage.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseArguments.cmake) + +# internal helper macro +macro(_FPHSA_FAILURE_MESSAGE _msg) + if (${_NAME}_FIND_REQUIRED) + message(FATAL_ERROR "${_msg}") + else () + if (NOT ${_NAME}_FIND_QUIETLY) + message(STATUS "${_msg}") + endif () + endif () +endmacro() + + +# internal helper macro to generate the failure message when used in CONFIG_MODE: +macro(_FPHSA_HANDLE_FAILURE_CONFIG_MODE) + # _CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found: + if(${_NAME}_CONFIG) + _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing: ${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})") + else() + # If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version. + # List them all in the error message: + if(${_NAME}_CONSIDERED_CONFIGS) + set(configsText "") + list(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount) + math(EXPR configsCount "${configsCount} - 1") + foreach(currentConfigIndex RANGE ${configsCount}) + list(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename) + list(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version) + set(configsText "${configsText} ${filename} (version ${version})\n") + endforeach() + if (${_NAME}_NOT_FOUND_MESSAGE) + set(configsText "${configsText} Reason given by package: ${${_NAME}_NOT_FOUND_MESSAGE}\n") + endif() + _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:\n${configsText}") + + else() + # Simple case: No Config-file was found at all: + _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}") + endif() + endif() +endmacro() + + +function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG) + +# set up the arguments for CMAKE_PARSE_ARGUMENTS and check whether we are in +# new extended or in the "old" mode: + set(options CONFIG_MODE HANDLE_COMPONENTS) + set(oneValueArgs FAIL_MESSAGE VERSION_VAR FOUND_VAR) + set(multiValueArgs REQUIRED_VARS) + set(_KEYWORDS_FOR_EXTENDED_MODE ${options} ${oneValueArgs} ${multiValueArgs} ) + list(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX) + + if(${INDEX} EQUAL -1) + set(FPHSA_FAIL_MESSAGE ${_FIRST_ARG}) + set(FPHSA_REQUIRED_VARS ${ARGN}) + set(FPHSA_VERSION_VAR) + else() + + CMAKE_PARSE_ARGUMENTS(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN}) + + if(FPHSA_UNPARSED_ARGUMENTS) + message(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"") + endif() + + if(NOT FPHSA_FAIL_MESSAGE) + set(FPHSA_FAIL_MESSAGE "DEFAULT_MSG") + endif() + endif() + +# now that we collected all arguments, process them + + if("${FPHSA_FAIL_MESSAGE}" STREQUAL "DEFAULT_MSG") + set(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}") + endif() + + # In config-mode, we rely on the variable _CONFIG, which is set by find_package() + # when it successfully found the config-file, including version checking: + if(FPHSA_CONFIG_MODE) + list(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG) + list(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS) + set(FPHSA_VERSION_VAR ${_NAME}_VERSION) + endif() + + if(NOT FPHSA_REQUIRED_VARS) + message(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()") + endif() + + list(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR) + + string(TOUPPER ${_NAME} _NAME_UPPER) + string(TOLOWER ${_NAME} _NAME_LOWER) + + if(FPHSA_FOUND_VAR) + if(FPHSA_FOUND_VAR MATCHES "^${_NAME}_FOUND$" OR FPHSA_FOUND_VAR MATCHES "^${_NAME_UPPER}_FOUND$") + set(_FOUND_VAR ${FPHSA_FOUND_VAR}) + else() + message(FATAL_ERROR "The argument for FOUND_VAR is \"${FPHSA_FOUND_VAR}\", but only \"${_NAME}_FOUND\" and \"${_NAME_UPPER}_FOUND\" are valid names.") + endif() + else() + set(_FOUND_VAR ${_NAME_UPPER}_FOUND) + endif() + + # collect all variables which were not found, so they can be printed, so the + # user knows better what went wrong (#6375) + set(MISSING_VARS "") + set(DETAILS "") + # check if all passed variables are valid + unset(${_FOUND_VAR}) + foreach(_CURRENT_VAR ${FPHSA_REQUIRED_VARS}) + if(NOT ${_CURRENT_VAR}) + set(${_FOUND_VAR} FALSE) + set(MISSING_VARS "${MISSING_VARS} ${_CURRENT_VAR}") + else() + set(DETAILS "${DETAILS}[${${_CURRENT_VAR}}]") + endif() + endforeach() + if(NOT "${${_FOUND_VAR}}" STREQUAL "FALSE") + set(${_FOUND_VAR} TRUE) + endif() + + # component handling + unset(FOUND_COMPONENTS_MSG) + unset(MISSING_COMPONENTS_MSG) + + if(FPHSA_HANDLE_COMPONENTS) + foreach(comp ${${_NAME}_FIND_COMPONENTS}) + if(${_NAME}_${comp}_FOUND) + + if(NOT DEFINED FOUND_COMPONENTS_MSG) + set(FOUND_COMPONENTS_MSG "found components: ") + endif() + set(FOUND_COMPONENTS_MSG "${FOUND_COMPONENTS_MSG} ${comp}") + + else() + + if(NOT DEFINED MISSING_COMPONENTS_MSG) + set(MISSING_COMPONENTS_MSG "missing components: ") + endif() + set(MISSING_COMPONENTS_MSG "${MISSING_COMPONENTS_MSG} ${comp}") + + if(${_NAME}_FIND_REQUIRED_${comp}) + set(${_FOUND_VAR} FALSE) + set(MISSING_VARS "${MISSING_VARS} ${comp}") + endif() + + endif() + endforeach() + set(COMPONENT_MSG "${FOUND_COMPONENTS_MSG} ${MISSING_COMPONENTS_MSG}") + set(DETAILS "${DETAILS}[c${COMPONENT_MSG}]") + endif() + + # version handling: + set(VERSION_MSG "") + set(VERSION_OK TRUE) + set(VERSION ${${FPHSA_VERSION_VAR}} ) + if (${_NAME}_FIND_VERSION) + + if(VERSION) + + if(${_NAME}_FIND_VERSION_EXACT) # exact version required + if (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}") + set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"") + set(VERSION_OK FALSE) + else () + set(VERSION_MSG "(found suitable exact version \"${VERSION}\")") + endif () + + else() # minimum version specified: + if ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}") + set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"") + set(VERSION_OK FALSE) + else () + set(VERSION_MSG "(found suitable version \"${VERSION}\", minimum required is \"${${_NAME}_FIND_VERSION}\")") + endif () + endif() + + else() + + # if the package was not found, but a version was given, add that to the output: + if(${_NAME}_FIND_VERSION_EXACT) + set(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")") + else() + set(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")") + endif() + + endif() + else () + if(VERSION) + set(VERSION_MSG "(found version \"${VERSION}\")") + endif() + endif () + + if(VERSION_OK) + set(DETAILS "${DETAILS}[v${VERSION}(${${_NAME}_FIND_VERSION})]") + else() + set(${_FOUND_VAR} FALSE) + endif() + + + # print the result: + if (${_FOUND_VAR}) + FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}") + else () + + if(FPHSA_CONFIG_MODE) + _FPHSA_HANDLE_FAILURE_CONFIG_MODE() + else() + if(NOT VERSION_OK) + _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (found ${${_FIRST_REQUIRED_VAR}})") + else() + _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing: ${MISSING_VARS}) ${VERSION_MSG}") + endif() + endif() + + endif () + + set(${_FOUND_VAR} ${${_FOUND_VAR}} PARENT_SCOPE) + +endfunction() diff --git a/CMakeModules/FindPackageMessage.cmake b/CMakeModules/FindPackageMessage.cmake new file mode 100644 index 0000000000000..b6a58e427d143 --- /dev/null +++ b/CMakeModules/FindPackageMessage.cmake @@ -0,0 +1,57 @@ +#.rst: +# FindPackageMessage +# ------------------ +# +# +# +# FIND_PACKAGE_MESSAGE( "message for user" "find result details") +# +# This macro is intended to be used in FindXXX.cmake modules files. It +# will print a message once for each unique find result. This is useful +# for telling the user where a package was found. The first argument +# specifies the name (XXX) of the package. The second argument +# specifies the message to display. The third argument lists details +# about the find result so that if they change the message will be +# displayed again. The macro also obeys the QUIET argument to the +# find_package command. +# +# Example: +# +# :: +# +# if(X11_FOUND) +# FIND_PACKAGE_MESSAGE(X11 "Found X11: ${X11_X11_LIB}" +# "[${X11_X11_LIB}][${X11_INCLUDE_DIR}]") +# else() +# ... +# endif() + +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +function(FIND_PACKAGE_MESSAGE pkg msg details) + # Avoid printing a message repeatedly for the same find result. + if(NOT ${pkg}_FIND_QUIETLY) + string(REGEX REPLACE "[\n]" "" details "${details}") + set(DETAILS_VAR FIND_PACKAGE_MESSAGE_DETAILS_${pkg}) + if(NOT "${details}" STREQUAL "${${DETAILS_VAR}}") + # The message has not yet been printed. + message(STATUS "${msg}") + + # Save the find details in the cache to avoid printing the same + # message again. + set("${DETAILS_VAR}" "${details}" + CACHE INTERNAL "Details about finding ${pkg}") + endif() + endif() +endfunction() diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000000..9f740e860f17b --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,25 @@ +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +1. Assume other participants are posting in good faith, even if you disagree with what they say. +2. Make an effort to treat other participants with respect. + 1. Do not take a harsh tone towards other participants, and especially don't make personal attacks against them. + 2. Recognize that criticism of your statements is not a personal attack on you. + 3. Avoid statements about the presumed typical desires, capabilities or actions of some demographic group. +3. Be especially kind to other contributors when saying they made a mistake. +4. Don't argue unceasingly for your preferred course of action when a decision for some other course has already been made. +5. If other participants complain about the way you express your ideas, please make an effort to cater to them. +6. Don't raise unrelated political issues. +7. If you feel these standards are being violated, please alert the project lead Kevin Granade at kevin.granade@gmail.com + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][CoC homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][CoC version] and the [GNU Kind Communications Guidelines][GKCG homepage]. + + +[CoC homepage]: http://contributor-covenant.org +[CoC version]: http://contributor-covenant.org/version/1/4/ +[GKCG homepage]: https://www.gnu.org/philosophy/kind-communication.html diff --git a/COMPILING-CMAKE.md b/COMPILING-CMAKE.md index 5cc83f9cf5864..baa21d98f5c79 100644 --- a/COMPILING-CMAKE.md +++ b/COMPILING-CMAKE.md @@ -3,7 +3,7 @@ **WARNING**: CMake build is **NOT** official and should be used for *dev purposes ONLY*. For official way to build CataclysmDDA See: - * The latest instructions on how to compile can be found on [our wiki](http://tools.cataclysmdda.com/wiki). + * The latest instructions on how to compile can be found on [our wiki](http://tools.cataclysmdda.com/wiki). * [COMPILING.md](https://github.com/CleverRaven/Cataclysm-DDA/blob/master/COMPILING.md) @@ -65,7 +65,7 @@ The following build systems are fully supported for compiling CataclysmDDA on Li 1. Follow steps from here: https://msys2.github.io/ 2. Install CataclysmDDA build deps: - + ``` pacman -S mingw-w64-i686-toolchain msys/git \ mingw-w64-i686-cmake \ @@ -75,7 +75,7 @@ The following build systems are fully supported for compiling CataclysmDDA on Li gettext-devel ``` - This should get your environment set up to build console and tiles version of windows. + This should get your environment set up to build console and tiles version of windows. **NOTE**: This is only for 32bit builds. 64bit requires the x86_64 instead of the i686 packages listed above: @@ -141,7 +141,7 @@ The following build systems are fully supported for compiling CataclysmDDA on Li For Mingw,MSYS,MSYS2 you should set [Makefiles generator](http://www.cmake.org/cmake/help/cmake-2.6.html#section_Generators) Valid choices for MINGW/MSYS are: - + * MSYS Makefiles * MinGW Makefiles @@ -178,12 +178,12 @@ The following build systems are fully supported for compiling CataclysmDDA on Li ``` Shared libraries: - + If you got `libgcc_s_dw2-1.dll not found` error you need to copy shared libraries to directory with CataclysmDDA executables. **NOTE**: For `-DRELEASE=OFF` development builds, You can automate copy process with: - + ``` $ mingw32-make install ``` @@ -233,7 +233,7 @@ The following build systems are fully supported for compiling CataclysmDDA on Li * `smpeg2.dll` * `libvorbisfile-3.dll` - + # Build Options A full list of options supported by CMake, you may either run the `ccmake` @@ -245,7 +245,7 @@ The following build systems are fully supported for compiling CataclysmDDA on Li ``` -## CMake specific options +## CMake specific options * CMAKE_BUILD_TYPE=`` @@ -262,7 +262,7 @@ The following build systems are fully supported for compiling CataclysmDDA on Li Installation prefix for binaries, resources, and documentation files. - + ## CataclysmDDA specific options * CURSES=`` @@ -315,7 +315,7 @@ The following build systems are fully supported for compiling CataclysmDDA on Li * GIT_BINARY=`` Override default Git binary name or path. - + So a CMake command for building Cataclysm-DDA in release mode with tiles, sound and lua support will look as follows, provided it is run in build directory located in the project. ``` cmake ../ -DCMAKE_BUILD_TYPE=Release -DTILES=ON -DSOUND=ON -DLUA=ON diff --git a/COMPILING-MSYS.md b/COMPILING-MSYS.md index 8e0c204b921e6..fe523ae4ac620 100644 --- a/COMPILING-MSYS.md +++ b/COMPILING-MSYS.md @@ -4,10 +4,10 @@ This guide contains steps required to allow compilation of Cataclysm-DDA on Wind Steps from current guide were tested on Windows 10 (64 bit) and MSYS2 (64 bit), but should work for other versions of Windows and also MSYS2 (32 bit) if you download 32 bit version of all files. -## Preqrequisites: +## Prerequisites: -* Computer with 64 bit version of modern Windows operating system installed; -* NTFS partition with ~10 Gb free space (~2 Gb from MSYS2 installation, ~3 Gb for repository and ~5 Gb for ccache); +* Computer with 64 bit version of modern Windows operating system installed (Windows 10, Windows 8.1 or Windows 7); +* NTFS partition with ~10 Gb free space (~2 Gb for MSYS2 installation, ~3 Gb for repository and ~5 Gb for ccache); * 64 bit version of MSYS2 (installer can be downloaded from [MSYS2 homepage](http://www.msys2.org/)); **Note:** Windows XP is unsupported! @@ -16,7 +16,7 @@ Steps from current guide were tested on Windows 10 (64 bit) and MSYS2 (64 bit), 1. Go to [MSYS2 homepage](http://www.msys2.org/) and download 64 bit installer (e.g. [msys2-x86_64-20180531.exe](http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20180531.exe)). -2. Run downloaded file and install MSYS2 (click `Next` button, specifiy directory where MSYS2 64 bit will be installed (e.g. `C:\msys64`), click `Next` button again, specify Start Menu folder name and click `Install` button). +2. Run downloaded file and install MSYS2 (click `Next` button, specify directory where MSYS2 64 bit will be installed (e.g. `C:\msys64`), click `Next` button again, specify Start Menu folder name and click `Install` button). 3. After MSYS2 installation is complete press `Next` button, tick `Run MSYS2 64 bit now` checkbox and press `Finish` button. @@ -76,19 +76,19 @@ and ## Cloning and compilation: -1. Clone with following command-line: +1. Clone Cataclysm-DDA repository with following command line: **Note:** This will download whole CDDA repository. If you're just testing you should probably add `--depth=1`. ```bash git clone https://github.com/CleverRaven/Cataclysm-DDA.git cd Cataclysm-DDA -``` +``` 2. Compile with following command line: ```bash -make CCACHE=1 RELEASE=1 MSYS2=1 DYNAMIC_LINKING=1 LUA=1 SDL=1 TILES=1 SOUND=1 LOCALIZE=1 LANGUAGES=all LINTJSON=0 ASTYLE=0 RUNTESTS=0 +make CCACHE=1 RELEASE=1 MSYS2=1 DYNAMIC_LINKING=1 LUA=1 SDL=1 TILES=1 SOUND=1 LOCALIZE=1 LANGUAGES=all LINTJSON=0 ASTYLE=0 RUNTESTS=0 ``` **Note**: This will compile release version with Lua, Sound and Tiles support and all localization languages, skipping checks and tests and using ccache for faster build. You can use other switches, but `MSYS2=1`, `DYNAMIC_LINKING=1` and probably `RELEASE=1` are required to compile without issues. diff --git a/COMPILING-VS-VCPKG.md b/COMPILING-VS-VCPKG.md new file mode 100644 index 0000000000000..37049de404401 --- /dev/null +++ b/COMPILING-VS-VCPKG.md @@ -0,0 +1,65 @@ +# Compilation guide for Windows (using Visual Studio and vcpkg) + +This guide contains steps required to allow compilation of Cataclysm-DDA on Windows using Visual Studio and vcpkg. + +Steps from current guide were tested on Windows 10 (64 bit), Visual Studio 2017 (64 bit) and vcpkg, but should as well work with slight modifications for other versions of Windows and Visual Studio. + +## Prerequisites: + +* Computer with modern Windows operating system installed (Windows 10, Windows 8.1 or Windows 7); +* NTFS partition with ~15 Gb free space (~10 Gb for Visual Studio, ~1 Gb for vcpkg installation, ~3 Gb for repository and ~1 Gb for build cache); +* Git for Windows (installer can be downloaded from [Git homepage](https://git-scm.com/)); +* Visual Studio 2017 (or 2015 Visual Studio Update 3 and above); +* Latest version of vcpkg (see instructions on [vcpkg homepage](https://github.com/Microsoft/vcpkg)). + +**Note:** Windows XP is unsupported! + +## Installation and configuration: + +1. Install `Visual Studio` (installer can be downloaded from [Visual Studio homepage](https://visualstudio.microsoft.com/)). + +2. Install `Git for Windows` (installer can be downloaded from [Git homepage](https://git-scm.com/)). + +3. Install and configure `vcpkg` using instruction from [vcpkg homepage](https://github.com/Microsoft/vcpkg/blob/master/README.md#quick-start) with following command line: + +```cmd +git clone https://github.com/Microsoft/vcpkg.git +cd vcpkg +.\bootstrap-vcpkg.bat +vcpkg integrate install +``` + +4. Install (or upgrade) neccessary packages with following command line: + +#### install 64 bit dependencies: + +```cmd +vcpkg --triplet x64-windows install sdl2 sdl2-image sdl2-mixer sdl2-ttf gettext lua +``` + +#### install32 bit dependencies: + +```cmd +vcpkg --triplet x86-windows install sdl2 sdl2-image sdl2-mixer sdl2-ttf gettext lua +``` + +#### upgrade all dependencies: + +```cmd +vcpkg upgrade +``` + +## Cloning and compilation: + +1. Clone Cataclysm-DDA repository with following command line: + +**Note:** This will download whole CDDA repository. If you're just testing you should probably add `--depth=1`. + +```cmd +git clone https://github.com/CleverRaven/Cataclysm-DDA.git +cd Cataclysm-DDA +``` + +2. Open provided solution (`msvc-full-features\Cataclysm-vcpkg.sln`) in `Visual Studio`, select configuration (`Release` or `Debug`) an platform (`x64` or `x86`) and build it. + +**Note**: This will compile release version with Lua, Sound, Tiles and Localization support (language files won't be automatically compiled). diff --git a/COMPILING.md b/COMPILING.md index 1cccbd9e731e4..0d7d619935785 100644 --- a/COMPILING.md +++ b/COMPILING.md @@ -154,7 +154,7 @@ A more comprehensive alternative is: make -j2 TILES=1 SOUND=1 RELEASE=1 LUA=1 USE_HOME_DIR=1 -The -j2 flag means it will compile with two parallel processes. It can be omitted or changed to -j4 in a more modern processor. If there is no desire to use lua, or have sound, those flags can also be ommitted. The USE_HOME_DIR flag places the user files, like configurations and saves into the home folder, making It easier for backups, and can also be omitted. +The -j2 flag means it will compile with two parallel processes. It can be omitted or changed to -j4 in a more modern processor. If there is no desire to use lua, or have sound, those flags can also be omitted. The USE_HOME_DIR flag places the user files, like configurations and saves into the home folder, making It easier for backups, and can also be omitted. @@ -298,7 +298,7 @@ The Gradle project lives in the repository under `android/`. You can build it vi * SDL2_image (tested with 2.0.3) * libintl-lite (tested with a custom fork of libintl-lite 0.5) * lua (tested with lua 5.1.5) - + The Gradle build process automatically installs dependencies from [deps.zip](android/app/deps.zip). ### Setup @@ -522,6 +522,12 @@ For SDL: For `app` builds, launch Cataclysm.app from Finder. +### Test suite + +The build will also generate a test executable at tests/cata_test. +Invoke it as you would any other executable and it will run the full suite of tests. +Pass the ``--help`` flag to list options. + ### dmg distribution You can build a nice dmg distribution file with the `dmgdist` target. You will need a tool called [dmgbuild](https://pypi.python.org/pypi/dmgbuild). To install this tool, you will need Python first. If you are on Mac OS X >= 10.8, Python 2.7 is pre-installed with the OS. If you are on an older version of OS X, you can download Python [on their official website](https://www.python.org/downloads/) or install it with homebrew `brew install python`. Once you have Python, you should be able to install `dmgbuild` by running: @@ -606,11 +612,11 @@ If we want to compile with Tiles (SDL) we have to download a few libraries. * `freetype` http://gnuwin32.sourceforge.net/packages/freetype.htm chose `Binaries` and `Developer files` #### Bundled Libraries -The following archives were pre-bundled for convienience and reduction of head-aches, simply download and extract directly to the root directory of the CDDA source: +The following archives were pre-bundled for convenience and reduction of head-aches, simply download and extract directly to the root directory of the CDDA source: * `64-bit SDL \ Tiles \ Sound \ Lua \ Localization` http://dev.narc.ro/cataclysm/cdda-win64-codeblocks.7z #### Installing Tiles(SDL) libraries. -For the first 3 (`SDL2`, `SDL_ttf` and `SDL_image`) you want to extract the include and lib folders from the `i686-w64-mingw32` folders into your MinGW installtion folder. (Reccomended `C:\MinGW`). And the `SDL2_image.dll` and `SDL2_ttf.dll` into your cataclysm root folder. +For the first 3 (`SDL2`, `SDL_ttf` and `SDL_image`) you want to extract the include and lib folders from the `i686-w64-mingw32` folders into your MinGW installation folder. (Recommended `C:\MinGW`). And the `SDL2_image.dll` and `SDL2_ttf.dll` into your cataclysm root folder. For freetype you want to grab the include and lib folders from the `freetype-2.X.X-X-lib.zip` and move them into your your MinGW installation folder. Then you want to get the freetype6.dll from the `freetype-2.X.X-X-bin.zip` and move it into your cataclysm root folder. @@ -620,7 +626,7 @@ https://hg.libsdl.org/SDL/raw-file/e217ed463f25/include/SDL_platform.h Replace SDL_platform.h in the MinGW/include/SDL2 folder and it should be fine. ### Makefile changes -This probably not the best way to do it. But it seems that you need to remove a few dependenceis from the makefile or it will not build. +This probably not the best way to do it. But it seems that you need to remove a few dependencies from the makefile or it will not build. change the line `LDFLAGS += -lfreetype -lpng -lz -ljpeg -lbz2` to `LDFLAGS += -lfreetype` ### Compiling diff --git a/Makefile b/Makefile index 7bb0bce65fce0..e3eebfaef52ac 100644 --- a/Makefile +++ b/Makefile @@ -43,6 +43,8 @@ # (for example: make LANGUAGES="zh_CN zh_TW" for Chinese) # make localization LANGUAGES=all # (for every .po file in lang/po) +# Enable sanitizer (address, undefined, etc.) +# make SANITIZE=address # Change mapsize (reality bubble size) # make MAPSIZE= # Adjust names of build artifacts (for example to allow easily toggling between build types). @@ -124,9 +126,9 @@ TILES_TARGET_NAME = $(TARGET_NAME)-tiles TARGET = $(BUILD_PREFIX)$(TARGET_NAME) TILESTARGET = $(BUILD_PREFIX)$(TILES_TARGET_NAME) ifdef TILES -APPTARGET = $(TILESTARGET) + APPTARGET = $(TILESTARGET) else -APPTARGET = $(TARGET) + APPTARGET = $(TARGET) endif W32TILESTARGET = $(BUILD_PREFIX)$(TILES_TARGET_NAME).exe W32TARGET = $(BUILD_PREFIX)$(TARGET_NAME).exe @@ -169,7 +171,7 @@ W32ODIR = $(BUILD_PREFIX)objwin W32ODIRTILES = $(W32ODIR)/tiles ifdef AUTO_BUILD_PREFIX - BUILD_PREFIX = $(if $(RELEASE),release-)$(if $(DEBUG_SYMBOLS),symbol-)$(if $(TILES),tiles-)$(if $(SOUND),sound-)$(if $(LOCALIZE),local-)$(if $(BACKTRACE),back-)$(if $(MAPSIZE),map-$(MAPSIZE)-)$(if $(LUA),lua-)$(if $(USE_XDG_DIR),xdg-)$(if $(USE_HOME_DIR),home-)$(if $(DYNAMIC_LINKING),dynamic-)$(if $(MSYS2),msys2-) + BUILD_PREFIX = $(if $(RELEASE),release-)$(if $(DEBUG_SYMBOLS),symbol-)$(if $(TILES),tiles-)$(if $(SOUND),sound-)$(if $(LOCALIZE),local-)$(if $(BACKTRACE),back-)$(if $(SANITIZE),sanitize-)$(if $(MAPSIZE),map-$(MAPSIZE)-)$(if $(LUA),lua-)$(if $(USE_XDG_DIR),xdg-)$(if $(USE_HOME_DIR),home-)$(if $(DYNAMIC_LINKING),dynamic-)$(if $(MSYS2),msys2-) export BUILD_PREFIX endif @@ -230,13 +232,24 @@ AR = $(CROSS)ar CXXFLAGS += -ffast-math LDFLAGS += $(PROFILE) +ifneq ($(SANITIZE),) + CXXFLAGS += -fsanitize=$(SANITIZE) + LDFLAGS += -fsanitize=$(SANITIZE) +endif + # enable optimizations. slow to build ifdef RELEASE ifeq ($(NATIVE), osx) - ifeq ($(shell $(CXX) -E -Os - < /dev/null > /dev/null 2>&1 && echo fos),fos) - OPTLEVEL = -Os + ifdef OSXCROSS + OPTLEVEL = -O0 + else ifeq ($(shell expr $(OSX_MIN) \<= 10.11), 1) + OPTLEVEL = -O0 else - OPTLEVEL = -O3 + ifeq ($(shell $(CXX) -E -Os - < /dev/null > /dev/null 2>&1 && echo fos),fos) + OPTLEVEL = -Os + else + OPTLEVEL = -O3 + endif endif else # MXE ICE Workaround @@ -293,9 +306,9 @@ ifndef RELEASE endif ifeq ($(shell sh -c 'uname -o 2>/dev/null || echo not'),Cygwin) - OTHERS += -std=gnu++11 - else - OTHERS += -std=c++11 + OTHERS += -std=gnu++11 +else + OTHERS += -std=c++11 endif CXXFLAGS += $(WARNINGS) $(DEBUG) $(DEBUGSYMS) $(PROFILE) $(OTHERS) -MMD -MP @@ -650,7 +663,7 @@ ifeq ($(BSD), 1) CXXFLAGS += -fno-omit-frame-pointer endif - # And similarly, their libcs don't have gettext built in + # And similarly, their libcs don't have gettext built in ifeq ($(LOCALIZE),1) LDFLAGS += -lintl -liconv endif @@ -658,10 +671,10 @@ endif # Global settings for Windows targets (at end) ifeq ($(TARGETSYSTEM),WINDOWS) - LDFLAGS += -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lversion - ifeq ($(BACKTRACE),1) - LDFLAGS += -ldbghelp - endif + LDFLAGS += -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lversion + ifeq ($(BACKTRACE),1) + LDFLAGS += -ldbghelp + endif endif ifeq ($(BACKTRACE),1) @@ -674,6 +687,10 @@ endif ifeq ($(TARGETSYSTEM),LINUX) BINDIST_EXTRAS += cataclysm-launcher + ifeq ($(BACKTRACE),1) + # -rdynamic needed for symbols in backtraces + LDFLAGS += -rdynamic + endif endif ifeq ($(TARGETSYSTEM),CYGWIN) @@ -906,7 +923,7 @@ APPTARGETDIR=Cataclysm.app APPRESOURCESDIR=$(APPTARGETDIR)/Contents/Resources APPDATADIR=$(APPRESOURCESDIR)/data ifndef FRAMEWORK -SDLLIBSDIR=$(shell sdl2-config --libs | sed -n 's/.*-L\([^ ]*\) .*/\1/p') + SDLLIBSDIR=$(shell sdl2-config --libs | sed -n 's/.*-L\([^ ]*\) .*/\1/p') endif # ifndef FRAMEWORK appclean: @@ -1032,7 +1049,7 @@ astyle-all: $(SOURCES) $(HEADERS) $(TESTSRC) $(TESTHDR) $(TOOLSRC) # Test whether the system has a version of astyle that supports --dry-run ifeq ($(shell if $(ASTYLE_BINARY) -Q -X --dry-run src/game.h > /dev/null; then echo foo; fi),foo) -ASTYLE_CHECK=$(shell LC_ALL=C $(ASTYLE_BINARY) --options=.astylerc --dry-run -X -Q $(ASTYLED_WHITELIST)) + ASTYLE_CHECK=$(shell LC_ALL=C $(ASTYLE_BINARY) --options=.astylerc --dry-run -X -Q $(ASTYLED_WHITELIST)) endif astyle-check: diff --git a/build-scripts/requirements.sh b/build-scripts/requirements.sh index dab22b33c2aee..b78ec973235ad 100644 --- a/build-scripts/requirements.sh +++ b/build-scripts/requirements.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -e + if [ -n "${CODE_COVERAGE}" ]; then travis_retry pip install --user pyyaml cpp-coveralls; export CXXFLAGS=--coverage; @@ -12,7 +14,13 @@ if [ -n "${MXE_TARGET}" ]; then | sudo tee /etc/apt/sources.list.d/mxeapt.list travis_retry sudo apt-key adv --keyserver x-hkp://keyserver.ubuntu.com:80 \ --recv-keys D43A795B73B16ABE9643FE1AFD8FFF16DB45C6AB - travis_retry sudo apt-get update + # We need to treat apt-get update warnings as errors for which the exit code + # is not sufficient. The following workaround inspired by + # https://unix.stackexchange.com/questions/175146/apt-get-update-exit-status/ + exec {fd}>&2 + travis_retry bash -o pipefail -c \ + "sudo apt-get update 2>&1 | tee /dev/fd/$fd | ( ! grep -q -e '^Err:' -e '^[WE]:' )" + exec {fd}>&- MXE2_TARGET=$(echo "$MXE_TARGET" | sed 's/_/-/g') export MXE_DIR=/usr/lib/mxe/usr/bin diff --git a/build-scripts/validate_pr_in_jenkins b/build-scripts/validate_pr_in_jenkins index f3e514d9a4095..b9cf708a4b938 100755 --- a/build-scripts/validate_pr_in_jenkins +++ b/build-scripts/validate_pr_in_jenkins @@ -5,7 +5,7 @@ if [ -z "$ghprbPullId" ]; then exit 0; fi allowed_section_titles='Features|Content|Interface|Mods|Balance|Bugfixes|Performance|Infrastructure|Build|I18N' echo 'Validating Summary line from pull request.' -echo "$ghprbPullLongDescription" | grep -Pi '(^|\\r\\n)\s*(`){0,3}SUMMARY: ((None)|(('"${allowed_section_titles}"') \\?"(.*?)\\?"))(`){0,3}\s*(\\r\\n|$)' +echo "$ghprbPullLongDescription" | grep -Pi '(^|\\r\\n)\s*(`){0,3}SUMMARY: +((None)|(('"${allowed_section_titles}"') +\\?"(.*?)\\?"))(`){0,3}\s*(\\r\\n|$)' if [ $? -eq 0 ]; then echo 'Summary looks good.' exit 0 diff --git a/data/json/construction.json b/data/json/construction.json index 27726f9e155a2..0f37e440804ba 100644 --- a/data/json/construction.json +++ b/data/json/construction.json @@ -2201,8 +2201,9 @@ "required_skills" : [ [ "survival", 0 ] ], "time" : 30, "qualities": [ [ { "id": "DIG", "level": 1 } ] ], + "byproducts": [ { "item": "material_sand", "charges": [ 300, 600 ] } ], "pre_terrain" : "t_sand", - "post_special" : "done_extract_sand" + "post_special" : "done_extract_maybe_revert_to_dirt" },{ "type" : "construction", "description" : "Extract Clay", @@ -2210,8 +2211,9 @@ "required_skills" : [ [ "survival", 0 ] ], "time" : 30, "qualities": [ [ { "id": "DIG", "level": 1 } ] ], + "byproducts": [ { "item": "clay_lump", "count": [ 6, 12 ] } ], "pre_terrain" : "t_clay", - "post_special" : "done_extract_clay" + "post_special" : "done_extract_maybe_revert_to_dirt" },{ "type" : "construction", "description" : "Build Charcoal Kiln", @@ -2386,6 +2388,7 @@ "category" : "OTHER", "required_skills" : [], "time" : 0, + "pre_note" : "Firewood or other flammable materials on a nearby tile marked in this way may be used to automatically refuel fires. This will be done to maintain light during long-running tasks that require it such as crafting or reading, but not (for example) if you are simply waiting nearby.", "pre_special" : "check_no_trap", "post_special" : "done_mark_firewood" },{ diff --git a/data/json/default_blacklist.json b/data/json/default_blacklist.json index 5f3fc04b02abc..9a4748a196ee8 100644 --- a/data/json/default_blacklist.json +++ b/data/json/default_blacklist.json @@ -1,6 +1,6 @@ [ { "type": "MONSTER_BLACKLIST", - "monsters": [ "mon_zombie_dancer", "mon_zombie_jackson", "mon_shia", "mon_bear_smoky" ] + "monsters": [ "mon_zombie_dancer", "mon_zombie_jackson", "mon_shia" ] } ] diff --git a/data/json/effects.json b/data/json/effects.json index 7aef3caf89d27..912c558467413 100644 --- a/data/json/effects.json +++ b/data/json/effects.json @@ -452,7 +452,7 @@ { "type": "effect_type", "id": "smoke", - "name": ["Smoke"], + "name": [ { "ctxt": "inhaled", "str": "Smoke" } ], "desc": ["You've inhaled a lungful of thick smoke."], "apply_message": "You inhale a lungful of thick smoke.", "rating": "bad", @@ -1425,7 +1425,7 @@ "type": "effect_type", "id": "relax_gas", "name": ["Relaxation gas"], - "desc": ["Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\nYou are thoroughly relaxed and don't feel like moving. Fighting? Too much effort."], + "desc": ["You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort."], "apply_message": "You inhale sweetish gas.", "remove_message": "The slackness leaves your muscles.", "rating": "bad", @@ -1723,7 +1723,7 @@ { "type": "effect_type", "id": "disabled", - "name": [ "Disabled" ], + "name": [ { "ctxt": "physically", "str": "Disabled" } ], "desc": [ "This limb is damaged beyond use and may require a splint to recover." ], "//": "This sounds weird. We need tag or something", "apply_message": "Your limb breaks!", diff --git a/data/json/furniture.json b/data/json/furniture.json index bc86c4fd50b7d..b6716a09b9aa2 100644 --- a/data/json/furniture.json +++ b/data/json/furniture.json @@ -1736,7 +1736,7 @@ "color": "light_red", "move_cost_mod": 0, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "flower_poppy", "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } }, @@ -1748,7 +1748,7 @@ "color": "dark_gray", "move_cost_mod": 1, "required_str": -1, - "flags": [ "TRANSPARENT", "FLOWER", "FUNGUS", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "FLOWER", "FUNGUS", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "fungus", "bash": { "str_min": 2, "str_max": 6, "sound": "poof.", "sound_fail": "poof." } }, @@ -2107,7 +2107,7 @@ "color": "blue", "move_cost_mod": 0, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "flower_bluebell", "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } }, @@ -2119,7 +2119,7 @@ "color": "magenta", "move_cost_mod": 0, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "flower_dahlia", "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } }, @@ -2131,7 +2131,7 @@ "color": "light_green", "move_cost_mod": 1, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "harvest_furn_nectar", "harvest_by_season": [ { "seasons": [ "spring", "summer", "autumn" ], "entries": [ { "drop": "datura_seed", "base_num": [ 2, 6 ] } ] } ], "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } @@ -2144,7 +2144,7 @@ "color": "cyan", "move_cost_mod": 1, "required_str": -1, - "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "FUNGUS", "TINY" ], + "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "FUNGUS", "TINY", "NOCOLLIDE" ], "examine_action": "flower_marloss", "bash": { "str_min": 2, "str_max": 6, "sound": "poof.", "sound_fail": "poof." } }, @@ -2156,7 +2156,7 @@ "color": "yellow", "move_cost_mod": 0, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "harvest_furn_nectar", "harvest_by_season": [ { "seasons": [ "spring", "summer", "autumn" ], "entries": [ { "drop": "raw_dandelion", "base_num": [ 1, 4 ] } ] } ], "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } @@ -2169,7 +2169,7 @@ "color": "white", "move_cost_mod": 0, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } }, { @@ -2181,7 +2181,7 @@ "color": "magenta", "move_cost_mod": 0, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "flower_tulip", "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } }, @@ -2194,7 +2194,7 @@ "color": "light_green", "move_cost_mod": 0, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "flower_spurge", "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } }, @@ -2206,7 +2206,7 @@ "color": "brown", "move_cost_mod": 1, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "harvest_furn", "harvest_by_season": [ { "seasons": [ "winter" ], "entries": [ { "drop": "cattail_rhizome" } ] }, @@ -2226,7 +2226,7 @@ "color": "yellow", "move_cost_mod": 0, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "harvest_furn_nectar", "//": "Add flower and bud spawns once useful.", "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } @@ -2240,7 +2240,7 @@ "color": "magenta", "move_cost_mod": 0, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "harvest_furn_nectar", "//": "Add flower and bud spawns once useful.", "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } @@ -2268,7 +2268,7 @@ "color": "yellow", "move_cost_mod": 0, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "examine_action": "harvest_furn_nectar", "harvest_by_season": [ { "seasons": [ "summer" ], "entries": [ { "drop": "sunflower" } ] } ], "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } @@ -2281,7 +2281,7 @@ "color": "green", "move_cost_mod": 0, "required_str": -1, - "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH" ], + "flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE" ], "bash": { "str_min": 2, "str_max": 6, "sound": "crunch.", "sound_fail": "whish." } }, { diff --git a/data/json/item_actions.json b/data/json/item_actions.json index 3200643b4c726..2124af4ae8959 100644 --- a/data/json/item_actions.json +++ b/data/json/item_actions.json @@ -334,7 +334,7 @@ },{ "type" : "item_action", "id" : "ECIG", - "name" : "Smoke" + "name" : { "ctxt": "ECIG", "str": "Smoke" } },{ "type" : "item_action", "id" : "EHANDCUFFS", @@ -558,7 +558,7 @@ },{ "type" : "item_action", "id" : "PORTABLE_GAME", - "name" : "Play" + "name" : { "ctxt": "PORTABLE_GAME", "str": "Play" } },{ "type" : "item_action", "id" : "PORTABLE_STRUCTURE", @@ -658,7 +658,7 @@ },{ "type" : "item_action", "id" : "SMOKING", - "name" : "Smoke" + "name" : { "ctxt": "SMOKING", "str": "Smoke" } },{ "type" : "item_action", "id" : "SPRAY_CAN", @@ -766,7 +766,7 @@ },{ "type" : "item_action", "id" : "musical_instrument", - "name" : "Play" + "name" : { "ctxt": "musical_instrument", "str": "Play" } },{ "type" : "item_action", "id" : "place_monster", diff --git a/data/json/item_groups.json b/data/json/item_groups.json index e6c6bca4570da..bcb6f8528c393 100644 --- a/data/json/item_groups.json +++ b/data/json/item_groups.json @@ -107,6 +107,12 @@ ["syringe", 1], ["cig_butt", 1] ] + },{ + "type" : "item_group", + "id" : "forest_trail", + "items":[ + { "group": "forest", "prob": 100 } + ] },{ "type" : "item_group", "id" : "hive", @@ -6095,11 +6101,29 @@ ["neccowafers", 30], ["can_beans", 40], ["pork_beans", 40], + ["mre_chilibeans_box", 45], + ["mre_bbqbeef_box", 45], + ["mre_chickennoodle_box", 45], + ["mre_spaghetti_box", 45], + ["mre_chicken_box", 45], + ["mre_beeftaco_box", 45], ["mre_beef_box", 45], + ["mre_meatball_box", 45], + ["mre_beefstew_box", 45], + ["mre_chilimac_box", 45], ["mre_veggy_box", 45], - ["mre_chicken_box", 45], - ["mre_hotdog_box", 60], - ["mre_ravioli_box", 30], + ["mre_macaronimarinara_box", 45], + ["mre_cheesetort_box", 45], + ["mre_mushroomfettuccine_box", 45], + ["mre_mexicanchickenstew_box", 45], + ["mre_maplesausage_box", 45], + ["mre_ravioli_box", 45], + ["mre_hashbrownbacon_box", 45], + ["mre_lemontuna_box", 45], + ["mre_asianbeef_box", 45], + ["mre_chickenpesto_box", 45], + ["mre_southwestbeef_box", 45], + ["mre_hotdog_box", 45], ["1st_aid", 35], ["saline", 15], ["con_milk", 5], @@ -6127,11 +6151,29 @@ ["chocolate", 50], ["can_beans", 40], ["pork_beans", 40], + ["mre_chilibeans_box", 45], + ["mre_bbqbeef_box", 45], + ["mre_chickennoodle_box", 45], + ["mre_spaghetti_box", 45], + ["mre_chicken_box", 45], + ["mre_beeftaco_box", 45], ["mre_beef_box", 45], + ["mre_meatball_box", 45], + ["mre_beefstew_box", 45], + ["mre_chilimac_box", 45], ["mre_veggy_box", 45], - ["mre_chicken_box", 45], - ["mre_hotdog_box", 60], - ["mre_ravioli_box", 30], + ["mre_macaronimarinara_box", 45], + ["mre_cheesetort_box", 45], + ["mre_mushroomfettuccine_box", 45], + ["mre_mexicanchickenstew_box", 45], + ["mre_maplesausage_box", 45], + ["mre_ravioli_box", 45], + ["mre_hashbrownbacon_box", 45], + ["mre_lemontuna_box", 45], + ["mre_asianbeef_box", 45], + ["mre_chickenpesto_box", 45], + ["mre_southwestbeef_box", 45], + ["mre_hotdog_box", 45], ["1st_aid", 35], ["saline", 10], ["con_milk", 10], @@ -7181,11 +7223,29 @@ ["knuckle_brass", 15], ["battery_ups", 10], ["duffelbag", 15], + ["mre_chilibeans_box", 45], + ["mre_bbqbeef_box", 45], + ["mre_chickennoodle_box", 45], + ["mre_spaghetti_box", 45], + ["mre_chicken_box", 45], + ["mre_beeftaco_box", 45], ["mre_beef_box", 45], + ["mre_meatball_box", 45], + ["mre_beefstew_box", 45], + ["mre_chilimac_box", 45], ["mre_veggy_box", 45], - ["mre_chicken_box", 45], - ["mre_hotdog_box", 60], - ["mre_ravioli_box", 30], + ["mre_macaronimarinara_box", 45], + ["mre_cheesetort_box", 45], + ["mre_mushroomfettuccine_box", 45], + ["mre_mexicanchickenstew_box", 45], + ["mre_maplesausage_box", 45], + ["mre_ravioli_box", 45], + ["mre_hashbrownbacon_box", 45], + ["mre_lemontuna_box", 45], + ["mre_asianbeef_box", 45], + ["mre_chickenpesto_box", 45], + ["mre_southwestbeef_box", 45], + ["mre_hotdog_box", 45], ["bandages", 50], ["cotton_ball", 20], ["1st_aid", 35], diff --git a/data/json/items/ammo.json b/data/json/items/ammo.json index ce9b2acef0b70..322e2c6dc6df6 100644 --- a/data/json/items/ammo.json +++ b/data/json/items/ammo.json @@ -14,6 +14,7 @@ "weight" : 1, "ammo_type" : "battery", "count" : 100, + "//": "1 battery is 1 kJ of energy. 40 batteries is an alkaline C-cell.", "fuel": { "energy": 1 } @@ -145,9 +146,9 @@ "price": 150, "material": "paper", "weight": 1, - "volume": 1, + "volume": "100ml", "ammo_type" : "components", - "stack_size" : 500, + "stack_size" : 200, "count" : 30, "flags" : ["UNRECOVERABLE"] }, @@ -281,13 +282,13 @@ "color" : "light_gray", "description" : "A box of small steel balls. They deal virtually no damage.", "material" : "steel", - "volume" : 1, + "volume" : "200ml", "weight" : 1, "ammo_type" : "BB", "damage" : 2, "dispersion" : 100, "count" : 500, - "stack_size": 250, + "stack_size": 200, "loudness": 9, "effects" : ["NOGIB","NEVER_MISFIRES"] }, @@ -816,7 +817,7 @@ "description" : "A liquid that is made up of propylene glycol, vegetable glycerin, flavorings and nicotine.", "container" : "bottle_plastic_small", "phase" : "liquid", - "volume" : 0, + "volume" : 1, "weight" : 2, "ammo_type" : "components", "count" : 50 diff --git a/data/json/items/archery.json b/data/json/items/archery.json index a279e7aa17287..3b06f8a8529fa 100644 --- a/data/json/items/archery.json +++ b/data/json/items/archery.json @@ -1,842 +1,792 @@ [ - { - "type" : "AMMO", - "id" : "arrow_fire_hardened_fletched", - "price" : 900, - "name" : "fire-hardened wooden arrow", - "symbol" : "=", - "color" : "green", - "description" : "This simple arrow has a fire-hardened point and fletching. Stands a below average chance of remaining intact once fired.", - "material" : "wood", - "volume" : 1, - "weight" : 43, - "bashing" : 3, - "ammo_type" : "arrow", - "damage" : 4, - "range" : 6, - "dispersion" : 190, - "loudness": 0, - "count" : 10, - "effects" : ["RECOVER_5"] - }, - { - "type" : "AMMO", - "id" : "arrow_field_point_fletched", - "price" : 1000, - "name" : "field point wooden arrow", - "symbol" : "=", - "color" : "green", - "description" : "A simple arrow shaft with a crude arrowhead and fletching. Useful for hunting small woodland creatures, or as a last ditch defense against zombies. Stands a below average chance of remaining intact once fired.", - "material" : "wood", - "volume" : 1, - "weight" : 46, - "bashing" : 3, - "ammo_type" : "arrow", - "damage" : 7, - "pierce" : 2, - "range" : 6, - "dispersion" : 175, - "loudness": 0, - "count" : 10, - "effects" : ["RECOVER_5"] - }, - { - "type" : "AMMO", - "id" : "arrow_small_game_fletched", - "price" : 600, - "name" : "small game arrow", - "symbol" : "=", - "color" : "green", - "description" : "A simple arrow shaft that has a wide, blunt head. Useful for hunting small woodland creatures without splattering them all over the ground, but stands a below average chance of remaining intact once fired.", - "material" : "wood", - "volume" : 1, - "weight" : 44, - "bashing" : 4, - "ammo_type" : "arrow", - "damage" : 3, - "range" : 6, - "dispersion" : 210, - "loudness": 0, - "count" : 10, - "effects" : [ "RECOVER_5", "NOGIB" ] - }, - { - "type" : "AMMO", - "id" : "arrow_wood", - "price" : 1000, - "name" : "wooden arrow", - "symbol" : "=", - "color" : "green", - "description" : "A basic wooden arrow, it has a metal arrowhead and fletching. It's lightweight, does some damage, and is so-so on accuracy. Stands a below average chance of remaining intact once fired.", - "material" : "wood", - "volume" : 1, - "weight" : 51, - "bashing" : 2, - "cutting" : 1, - "ammo_type" : "arrow", - "damage" : 10, - "pierce" : 3, - "range" : 7, - "dispersion" : 135, - "loudness": 0, - "count" : 10, - "effects" : ["RECOVER_5"] - }, - { - "type" : "AMMO", - "id" : "arrow_heavy_fire_hardened_fletched", - "price" : 1000, - "name" : "heavy fire-hardened arrow", - "symbol" : "=", - "color" : "green", - "description" : "This arrow is significantly sturdier than other wooden arrows. It has a fire-hardened point and fletching. Stands a good chance of remaining intact once fired.", - "material" : "wood", - "volume" : 1, - "weight" : 49, - "bashing" : 4, - "ammo_type" : "arrow", - "damage" : 5, - "pierce" : 2, - "range" : 7, - "dispersion" : 135, - "loudness": 0, - "count" : 10, - "effects" : ["RECOVER_10"] - }, - { - "type" : "AMMO", - "id" : "arrow_heavy_field_point_fletched", - "price" : 1000, - "name" : "heavy field point arrow", - "symbol" : "=", - "color" : "green", - "description" : "This arrow is significantly sturdier than other wooden arrows. It has a crude field point head and fletching. Stands a good chance of remaining intact once fired.", - "material" : "wood", - "volume" : 1, - "weight" : 57, - "bashing" : 4, - "ammo_type" : "arrow", - "damage" : 6, - "pierce" : 3, - "range" : 7, - "dispersion" : 135, - "loudness": 0, - "count" : 10, - "effects" : ["RECOVER_10"] - }, - { - "type" : "AMMO", - "id" : "arrow_wood_heavy", - "price" : 2400, - "name" : "heavy wooden arrow", - "symbol" : "=", - "color" : "green", - "description" : "A heavy wooden arrow, it has a metal arrowhead and fletching. It's much heavier than other wooden arrows, and as a result, it does more damage and flies straighter, resulting in better accuracy over a longer range. Stands a good chance of remaining intact once fired.", - "material" : "wood", - "volume" : 1, - "weight" : 57, - "bashing" : 6, - "cutting" : 2, - "ammo_type" : "arrow", - "damage" : 12, - "pierce" : 5, - "range" : 8, - "dispersion" : 60, - "loudness": 0, - "count" : 10, - "effects" : ["RECOVER_10"] - }, - { - "type" : "AMMO", - "id" : "arrow_metal_sharpened_fletched", - "price" : 1000, - "name" : "sharpened metal arrow", - "symbol" : "=", - "color" : "green", - "description" : "This metal shaft has been roughly sharpened so that it has a crude point at the end. Stands a very good chance of remaining intact once fired.", - "material" : "steel", - "volume" : 1, - "weight" : 55, - "bashing" : 2, - "ammo_type" : "arrow", - "damage" : 5, - "pierce" : 3, - "range" : 5, - "dispersion" : 285, - "loudness": 0, - "count" : 10, - "effects" : ["RECOVER_15"] - }, - { - "type" : "AMMO", - "id" : "arrow_metal", - "price" : 5000, - "name": "metal broadhead arrow", - "symbol" : "=", - "color" : "green", - "description" : "This metal arrow has fletching and a steel arrowhead. Stands a very good chance of remaining intact once fired.", - "material" : "steel", - "volume" : 1, - "weight" : 63, - "bashing" : 3, - "cutting" : 2, - "ammo_type" : "arrow", - "damage" : 14, - "pierce" : 7, - "range" : 10, - "dispersion": 80, - "loudness": 0, - "count" : 10, - "effects": ["RECOVER_50"] - }, - { - "type": "AMMO", - "id": "arrow_metal_bodkin", - "price": 4000, - "name": "metal bodkin arrow", - "symbol": "=", - "color": "green", - "description": "This metal arrow has fletching and a steel bodkin arrowhead for armor penetration. Stands a very good chance of remaining intact once fired.", - "material": "steel", - "volume": 1, - "weight": 60, - "bashing": 3, - "cutting": 2, - "ammo_type": "arrow", - "damage": 10, - "pierce": 15, - "range": 12, - "dispersion": 75, - "loudness": 0, - "count": 10, - "effects": ["RECOVER_50"] - }, - { - "type": "AMMO", - "id": "arrow_metal_target", - "price": 4000, - "name": "metal target arrow", - "symbol": "=", - "color": "green", - "description": "This metal arrow has extra long fletching and a round, balanced arrowhead for extra accuracy, at the cost of some damage. Stands a very good chance of remaining intact once fired.", - "material": "steel", - "volume": 1, - "weight": 50, - "bashing": 3, - "cutting": 2, - "ammo_type": "arrow", - "damage": 12, - "pierce": 5, - "range": 14, - "dispersion": 50, - "loudness": 0, - "count": 10, - "effects": ["RECOVER_60"] - }, - { - "type" : "AMMO", - "id" : "arrow_cf", - "price" : 9500, - "name" : "carbon fiber arrow", - "symbol" : "=", - "color" : "green", - "description" : "High-tech carbon fiber shafts and 100 grain broadheads. Very lightweight, fast, and durable. Stands a great chance of remaining intact once fired.", - "material" : "kevlar", - "volume" : 2, - "weight" : 10, - "bashing" : 1, - "ammo_type" : "arrow", - "damage" : 16, - "pierce" : 8, - "range" : 14, - "dispersion" : 65, - "loudness": 0, - "count" : 8, - "stack_size" : 10, - "effects" : ["RECOVER_80"] - }, - { - "type" : "AMMO", - "id" : "arrow_exploding", - "price" : 5000, - "name" : "explosive arrow", - "symbol" : "=", - "color" : "green", - "description" : "This arrow has a small IED strapped to its tip. Horribly inaccurate, heavy, and bulky, not only does this contraption require expert hands to pull off a shot, it requires one to loose this with a small measure of confidence that the shooter won't be caught in the blast radius.", - "material" : ["steel", "powder"], - "volume" : 2, - "weight" : 633, - "bashing" : 2, - "ammo_type" : "arrow", - "damage" : 15, - "pierce" : 9, - "range" : 5, - "dispersion" : 285, - "loudness": 0, - "count" : 5, - "effects" : ["EXPLOSIVE_SMALL"] - }, - { - "type":"GENERIC", - "id" : "exploding_arrow_warhead", - "category" : "spare_parts", - "symbol" : "=", - "color" : "green", - "name" : "explosive arrowhead", - "description" : "This simple IED is designed to be attached to an arrow and detonate on impact.", - "price" : 2000, - "material" : "steel", - "weight" : 562, - "volume" : 1, - "bashing" : 10, - "to_hit" : -1, - "count" : 5, - "effects" : ["EXPLOSIVE_SMALL"] - }, - { - "type" : "AMMO", - "id" : "arrow_flamming", - "price" : 1200, - "name" : "flaming arrow", - "symbol" : "=", - "color" : "green", - "description" : "This arrow has a flaming rag wrapped around the shaft near the head. You should shoot it soon before it burns your bow.", - "material" : "steel", - "volume" : 2, - "weight" : 150, - "bashing" : 2, - "ammo_type" : "arrow", - "damage" : 15, - "pierce" : 9, - "range" : 5, - "dispersion" : 285, - "loudness": 0, - "count" : 5, - "effects" : ["IGNITE"] - }, - { - "id" : "selfbow", - "type" : "GUN", - "symbol" : "(", - "color" : "yellow", - "name" : "self bow", - "description" : "A primitive bow fashioned from a single piece of wood, made specifically for the person using it. Weak and wildly inaccurate, it doesn't work that well, unfortunately...", - "price" : 10000, "//" : "Not exactly something that would have high resale value, I'm afraid.", - "material" : "wood", - "flags" : ["FIRE_TWOHAND", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED"], - "reload_noise_volume": 3, - "loudness": 8, - "skill" : "archery", - "ammo" : "arrow", - "weight" : 1360, - "volume" : 10, - "bashing" : 6, - "armor_data" : { - "covers" : ["TORSO"], - "coverage" : 5, - "material_thickness" : 1, - "encumbrance" : 20 - }, - "ranged_damage" : 5, - "range" : 5, - "dispersion" : 250, - "durability" : 6, - "clip_size" : 1, - "reload" : 50 - }, - { - "id" : "shortbow", - "type" : "GUN", - "symbol" : "(", - "color" : "yellow", - "name" : "short bow", - "description" : "Though not as powerful as the longbow, this bow is quicker and easier to draw, and can be used effectively by those of average strength. Good for small game or the survivor on the go.", - "price" : 16000, - "material" : "wood", - "flags" : ["FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED"], - "skill" : "archery", - "min_strength": 4, - "ammo" : "arrow", - "weight" : 340, - "volume" : 6, - "bashing" : 6, - "armor_data" : { - "covers" : ["TORSO"], - "coverage" : 5, - "material_thickness" : 1, - "encumbrance" : 14 - }, - "reload_noise_volume": 3, - "loudness": 6, - "ranged_damage" : 4, - "range" : 4, - "dispersion" : 210, - "durability" : 6, - "clip_size" : 1, - "reload" : 30, - "valid_mod_locations": [["dampening", 1]] - }, - { - "id" : "compbow", - "type" : "GUN", - "symbol" : "(", - "color" : "yellow", - "name" : "compound bow", - "description" : "A high-power bow with shaped cams and extra cables for high velocity shots that can be used effectively by fairly strong archers. Currently set to a medium weight.", - "price" : 55000, - "material" : ["steel", "plastic"], - "flags" : ["FIRE_TWOHAND", "RELOAD_AND_SHOOT"], - "skill" : "archery", - "min_strength" : 6, - "ammo" : "arrow", - "weight" : 907, - "volume" : 6, - "bashing" : 8, - "to_hit" : 1, - "reload_noise_volume": 3, - "loudness": 10, - "ranged_damage" : 18, - "range" : 18, - "dispersion" : 100, - "durability" : 6, - "clip_size" : 1, - "reload": 110, - "valid_mod_locations": [["underbarrel", 1],[ "sights", 1 ],[ "accessories", 2 ],["stabilizer", 1],["dampening", 1]], - "use_action": { - "menu_text": "Tighten Limbs", - "type": "transform", - "target": "compbow_high", - "msg": "You tighten the limbs, increasing the strength of the bow." - } - }, - { - "id" : "compbow_high", - "copy-from" : "compbow", - "override" : true, - "type" : "GUN", - "name" : "compound bow (high)", - "name_plural" : "compound bows (high)", - "description" : "A high-power bow with shaped cams and extra cables for high velocity shots that can be used effectively by very strong archers. Currently set to a high weight, and ready to cause some real damage - if you can draw it.", - "min_strength" : 8, - "dispersion" : 85, - "reload" : 120, - "ranged_damage" : 22, - "range" : 22, - "use_action" : { - "menu_text" : "Loosen Limbs", - "type" : "transform", - "target" : "compbow_low", - "msg" : "You loosen the limbs, decreasing the strength of the bow." - } - }, - { - "id" : "compbow_low", - "copy-from" : "compbow", - "override" : true, - "type" : "GUN", - "name" : "compound bow (low)", - "name_plural" : "compound bows (low)", - "description" : "A high-power bow with shaped cams and extra cables for high velocity shots that can be used effectively by average archers. Currently set to a low weight, making it much easier to draw.", - "min_strength" : 4, - "dispersion" : 115, - "reload" : 85, - "ranged_damage" : 14, - "range" : 14, - "use_action" : { - "menu_text" : "Tighten Limbs", - "type" : "transform", - "target" : "compbow", - "msg" : "You tighten the limbs, increasing the strength of the bow." - } - }, - { - "id" : "compositebow", - "type" : "GUN", - "symbol" : "(", - "color" : "yellow", - "name" : "composite bow", - "description" : "A bow made from multiple materials for increased energy efficiency. Complicated to make, but stronger than an all-wood short bow.", - "price" : 32000, - "material" : ["wood", "bone"], - "flags" : ["FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED"], - "skill" : "archery", - "min_strength" : 5, - "ammo" : "arrow", - "weight" : 400, - "volume" : 7, - "bashing" : 8, - "armor_data" : { - "covers" : ["TORSO"], - "coverage" : 5, - "material_thickness" : 1, - "encumbrance" : 14 - }, - "reload_noise_volume": 3, - "loudness": 6, - "ranged_damage" : 5, - "range" : 5, - "dispersion" : 150, - "durability" : 6, - "clip_size" : 1, - "reload" : 35, - "valid_mod_locations": [["dampening", 1]] - }, - { - "id" : "recurbow", - "type" : "GUN", - "symbol" : "(", - "color" : "yellow", - "name" : "recurve bow", - "description" : "A modern bow that curves away from the archer at the tips for increased power, which can be used effectively by those of somewhat above-average strength. Good and easy to use, but nothing special.", - "price" : 38000, - "material" : ["steel", "plastic"], - "flags" : ["FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED"], - "skill" : "archery", - "min_strength" : 5, - "ammo" : "arrow", - "weight" : 540, - "volume" : 10, - "bashing" : 12, - "armor_data" : { - "covers" : ["TORSO"], - "coverage" : 5, - "material_thickness" : 1, - "encumbrance" : 20 - }, - "reload_noise_volume": 3, - "loudness": 8, - "ranged_damage" : 14, - "range" : 14, - "dispersion" : 120, - "durability" : 6, - "clip_size" : 1, - "reload": 90, - "valid_mod_locations": [["underbarrel", 1],[ "sights", 1 ],[ "accessories", 2 ],["stabilizer", 1],["dampening", 1]] - }, - { - "id" : "reflexbow", - "type" : "GUN", - "symbol" : "(", - "color" : "yellow", - "name" : "reflex bow", - "description" : "A bow with limbs that curve away from the archer near the riser for power. Smaller than some bows, but decently powerful and quick.", - "price" : 42000, - "material" : ["wood", "bone"], - "flags" : ["FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED"], - "skill" : "archery", - "ammo" : "arrow", - "min_strength" : 5, - "weight" : 400, - "volume" : 6, - "bashing" : 12, - "armor_data" : { - "covers" : ["TORSO"], - "coverage" : 5, - "material_thickness" : 1, - "encumbrance" : 14 - }, - "reload_noise_volume": 3, - "loudness": 6, - "ranged_damage" : 6, - "range" : 6, - "dispersion" : 120, - "durability" : 6, - "clip_size" : 1, - "reload": 40, - "valid_mod_locations": [["dampening", 1]] - }, - { - "id" : "hybridbow", - "type" : "GUN", - "symbol" : "(", - "color" : "yellow", - "name" : "hybrid longbow", - "description" : "A modernized, six-foot longbow that curves away from the archer at the tips for increased power. It can be used effectively by those of somewhat above-average strength. Designed for archers that appreciate the smoothness of a traditional longbow, but desire the superior power of a modern recurve.", - "price" : 38000, - "material": ["steel", "plastic", "wood"], - "flags" : ["FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED"], - "skill" : "archery", - "min_strength" : 5, - "ammo" : "arrow", - "weight" : 600, - "volume" : 14, - "bashing" : 12, - "armor_data" : { - "covers" : ["TORSO"], - "coverage" : 5, - "material_thickness" : 1, - "encumbrance" : 20 - }, - "reload_noise_volume": 3, - "loudness": 8, - "ranged_damage" : 12, - "range" : 10, - "dispersion" : 140, - "durability" : 6, - "clip_size" : 1, - "reload" : 80, - "valid_mod_locations": [["underbarrel", 1],[ "sights", 1 ],[ "accessories", 2 ],["stabilizer", 1],["dampening", 1]] - }, - { - "id" : "longbow", - "type" : "GUN", - "symbol" : "(", - "color" : "yellow", - "name" : "longbow", - "description" : "A six-foot wooden bow that takes a fair amount of strength to draw. It can be used effectively by those of somewhat above-average strength. Used mainly in medieval England in wartime, but pierces zombie hide just as well as chainmail.", - "price" : 50000, - "material" : "wood", - "flags" : ["FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED"], - "skill" : "archery", - "min_strength" : 5, - "ammo" : "arrow", - "weight" : 680, - "volume" : 14, - "bashing" : 10, - "armor_data" : { - "covers" : ["TORSO"], - "coverage" : 5, - "material_thickness" : 1, - "encumbrance" : 20 - }, - "reload_noise_volume": 3, - "loudness": 8, - "ranged_damage" : 10, - "range" : 10, - "dispersion" : 210, - "durability" : 6, - "clip_size" : 1, - "reload" : 70, - "valid_mod_locations": [["dampening", 1]] - }, - { - "id" : "woodgreatbow", - "copy-from" : "longbow", - "override" : true, - "type" : "GUN", - "name" : "wooden greatbow", - "name_plural" : "wooden greatbows", - "description" : "An extremely large and stiff longbow, made with enormous limbs and a thick string to take an immense amount of energy. Takes incredible strength to draw.", - "price" : 150000, - "min_strength" : 18, - "weight" : 3200, - "volume" : 25, - "armor_data" : { - "covers" : ["TORSO"], - "coverage" : 7, - "material_thickness" : 2, - "encumbrance" : 25 - }, - "dispersion" : 200, - "durability" : 8, - "reload" : 100, - "loudness": 16, - "ranged_damage" : 35, - "range" : 12 - }, - { - "id" : "compgreatbow", - "type" : "GUN", - "symbol" : "(", - "color" : "yellow", - "name" : "compound greatbow", - "name_plural" : "compound greatbows", - "description" : "An extremely large and powerful compound bow, made with enormous limbs and a thick string to take an immense amount of energy. Takes incredible strength to draw.", - "price" : 160000, - "material" : ["steel", "plastic"], - "flags" : ["FIRE_TWOHAND", "RELOAD_AND_SHOOT"], - "skill" : "archery", - "min_strength" : 18, - "ammo" : "arrow", - "weight" : 2000, - "volume" : 16, - "bashing" : 14, - "reload_noise_volume": 4, - "loudness": 20, - "durability" : 8, - "reload" : 150, - "ranged_damage" : 60, - "range" : 22, - "dispersion" : 100, - "clip_size" : 1, - "valid_mod_locations": [["underbarrel", 1],[ "sights", 1 ],[ "accessories", 2 ],["stabilizer", 1],["dampening", 1]] - }, - { - "id" : "reflexrecurvebow", - "type" : "GUN", - "symbol" : "(", - "color" : "yellow", - "name" : "reflex recurve bow", - "description" : "A modernized bow that combines the traits from both the reflex and the recurve bows, with both limbs and tips curving away from the archer, and reinforced with composite materials. This dramatically increases the power and requires significant strength to draw the bow effectively, but can still be fired quickly.", - "price" : 72000, - "material" : ["wood"], - "flags" : ["FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED"], - "skill" : "archery", - "min_strength" : 6, - "ammo" : "arrow", - "weight" : 450, - "volume" : 8, - "bashing" : 12, - "armor_data" : { - "covers" : ["TORSO"], - "coverage" : 5, - "material_thickness" : 1, - "encumbrance" : 14 - }, - "reload_noise_volume": 3, - "loudness": 8, - "ranged_damage" : 8, - "range" : 8, - "dispersion" : 120, - "durability" : 6, - "clip_size" : 1, - "reload" : 40, - "valid_mod_locations": [["underbarrel", 1],[ "sights", 1 ],[ "accessories", 2 ],["stabilizer", 1],["dampening", 1]] - }, - { "type" : "AMMO", - "id" : "throwing_knife", - "category" : "weapons", - "price" : 5200, - "name" : "throwing knife", - "name_plural" : "throwing knives", - "symbol" : ";", - "color" : "light_gray", - "description" : "A thin and flat knife made for throwing. Its ineffective cutting edge and odd shape makes it unsuitable for use as a tool.", - "material" : "steel", - "volume" : 1, - "weight" : 268, - "bashing" : 1, - "cutting" : 10, - "thrown_damage" : [ - { "damage_type": "cut", "amount": 14 } - ], - "ammo_type" : "thrown", - "count" : 5 - }, - { - "type" : "AMMO", - "id" : "throwing_axe", - "category" : "weapons", - "price" : 12400, - "name" : "throwing axe", - "symbol" : ";", - "color" : "light_gray", - "description" : "A lightweight hatchet made for throwing. Its ineffective cutting edge and light weight makes it unsuitable for use as a tool.", - "material" : ["steel", "wood"], - "volume" : 3, - "weight" : 792, - "bashing" : 6, - "cutting" : 16, - "thrown_damage" : [ - { "damage_type": "bash", "amount": 6 }, - { "damage_type": "cut", "amount": 16 } - ], - "ammo_type" : "thrown", - "count" : 3 - }, - { - "type" : "AMMO", - "id" : "lawn_dart", - "category" : "weapons", - "price" : 1000, - "name" : "lawn dart", - "symbol" : ";", - "color" : "yellow", - "description" : "A large plastic dart made for outdoor games.", - "material" : ["plastic", "iron"], - "volume" : 2, - "weight" : 175, - "to_hit" : -1, - "cutting" : 8, - "thrown_damage" : [ - { "damage_type": "stab", "amount": 16 } - ], - "ammo_type" : "thrown", - "count" : 2 - }, - { - "type" : "AMMO", - "id" : "fishspear", - "price" : 4000, - "name" : "wooden fishing spear", - "symbol" : "=", - "color" : "brown", - "description" : "An underwater fishing spear made from wood tipped with steel. It's very light, but doesn't have much range. Stands a below average chance of remaining intact once fired.", - "material" : "wood", - "volume" : 1, - "weight" : 18, - "bashing" : 1, - "ammo_type" : "fishspear", - "damage" : 12, - "pierce" : 4, - "range" : 6, - "dispersion" : 150, - "loudness": 0, - "count" : 4, - "effects" : ["RECOVER_5"] - }, - { - "type" : "AMMO", - "id" : "m_fishspear", - "price" : 16000, - "name" : "metal fishing spear", - "symbol" : "=", - "color" : "light_gray", - "description" : "An underwater fishing spear made from metal. It's light, but doesn't have much range. Stands a very good chance of remaining intact once fired.", - "material" : "iron", - "volume" : 1, - "weight" : 28, - "bashing" : 1, - "ammo_type" : "fishspear", - "damage" : 14, - "pierce" : 8, - "range" : 6, - "dispersion" : 120, - "loudness": 0, - "count" : 4, - "effects" : ["RECOVER_15"] - }, - { - "type" : "AMMO", - "id" : "c_fishspear", - "price" : 32000, - "name" : "carbon fiber fishing spear", - "symbol" : "=", - "color" : "dark_gray", - "description" : "An underwater fishing spear made from carbon fiber. It's very light, but doesn't have much range. Stands a bad chance of remaining intact once fired.", - "material" : "kevlar", - "volume" : 1, - "weight" : 12, - "bashing" : 1, - "ammo_type" : "fishspear", - "damage" : 14, - "pierce" : 12, - "range" : 10, - "dispersion" : 90, - "loudness": 0, - "count" : 4, - "effects" : ["RECOVER_3"] - }, - { - "id":"arrow_plastic", - "type":"AMMO", - "symbol":"=", - "color":"green", - "name":"plastic arrow", - "description":"This plastic arrow has a plastic arrowhead and fletching. Stands a good chance of remaining intact once fired.", - "price": 2000, - "material":"plastic", - "volume":1, - "weight":8, - "bashing":2, - "cutting":1, - "ammo_type":"arrow", - "damage":8, - "pierce":1, - "range":12, - "dispersion":125, - "loudness": 0, - "count":10, - "effects" : ["RECOVER_10"] + { + "type": "AMMO", + "id": "arrow_fire_hardened_fletched", + "price": 900, + "name": "fire-hardened wooden arrow", + "symbol": "=", + "color": "green", + "description": "This simple arrow has a fire-hardened point and fletching. Stands a below average chance of remaining intact once fired.", + "material": "wood", + "volume": 1, + "weight": 43, + "bashing": 3, + "ammo_type": "arrow", + "damage": 4, + "range": 6, + "dispersion": 190, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_5" ] + }, + { + "type": "AMMO", + "id": "arrow_field_point_fletched", + "price": 1000, + "name": "field point wooden arrow", + "symbol": "=", + "color": "green", + "description": "A simple arrow shaft with a crude arrowhead and fletching. Useful for hunting small woodland creatures, or as a last ditch defense against zombies. Stands a below average chance of remaining intact once fired.", + "material": "wood", + "volume": 1, + "weight": 46, + "bashing": 3, + "ammo_type": "arrow", + "damage": 7, + "pierce": 2, + "range": 6, + "dispersion": 175, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_5" ] + }, + { + "type": "AMMO", + "id": "arrow_small_game_fletched", + "price": 600, + "name": "small game arrow", + "symbol": "=", + "color": "green", + "description": "A simple arrow shaft that has a wide, blunt head. Useful for hunting small woodland creatures without splattering them all over the ground, but stands a below average chance of remaining intact once fired.", + "material": "wood", + "volume": 1, + "weight": 44, + "bashing": 4, + "ammo_type": "arrow", + "damage": 3, + "range": 6, + "dispersion": 210, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_5", "NOGIB" ] + }, + { + "type": "AMMO", + "id": "arrow_wood", + "price": 1000, + "name": "wooden arrow", + "symbol": "=", + "color": "green", + "description": "A basic wooden arrow, it has a metal arrowhead and fletching. It's lightweight, does some damage, and is so-so on accuracy. Stands a below average chance of remaining intact once fired.", + "material": "wood", + "volume": 1, + "weight": 51, + "bashing": 2, + "cutting": 1, + "ammo_type": "arrow", + "damage": 10, + "pierce": 3, + "range": 7, + "dispersion": 135, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_5" ] + }, + { + "type": "AMMO", + "id": "arrow_heavy_fire_hardened_fletched", + "price": 1000, + "name": "heavy fire-hardened arrow", + "symbol": "=", + "color": "green", + "description": "This arrow is significantly sturdier than other wooden arrows. It has a fire-hardened point and fletching. Stands a good chance of remaining intact once fired.", + "material": "wood", + "volume": 1, + "weight": 49, + "bashing": 4, + "ammo_type": "arrow", + "damage": 5, + "pierce": 2, + "range": 7, + "dispersion": 135, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_10" ] + }, + { + "type": "AMMO", + "id": "arrow_heavy_field_point_fletched", + "price": 1000, + "name": "heavy field point arrow", + "symbol": "=", + "color": "green", + "description": "This arrow is significantly sturdier than other wooden arrows. It has a crude field point head and fletching. Stands a good chance of remaining intact once fired.", + "material": "wood", + "volume": 1, + "weight": 57, + "bashing": 4, + "ammo_type": "arrow", + "damage": 6, + "pierce": 3, + "range": 7, + "dispersion": 135, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_10" ] + }, + { + "type": "AMMO", + "id": "arrow_wood_heavy", + "price": 2400, + "name": "heavy wooden arrow", + "symbol": "=", + "color": "green", + "description": "A heavy wooden arrow, it has a metal arrowhead and fletching. It's much heavier than other wooden arrows, and as a result, it does more damage and flies straighter, resulting in better accuracy over a longer range. Stands a good chance of remaining intact once fired.", + "material": "wood", + "volume": 1, + "weight": 57, + "bashing": 6, + "cutting": 2, + "ammo_type": "arrow", + "damage": 12, + "pierce": 5, + "range": 8, + "dispersion": 60, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_10" ] + }, + { + "type": "AMMO", + "id": "arrow_metal_sharpened_fletched", + "price": 1000, + "name": "sharpened metal arrow", + "symbol": "=", + "color": "green", + "description": "This metal shaft has been roughly sharpened so that it has a crude point at the end. Stands a very good chance of remaining intact once fired.", + "material": "steel", + "volume": 1, + "weight": 55, + "bashing": 2, + "ammo_type": "arrow", + "damage": 5, + "pierce": 3, + "range": 5, + "dispersion": 285, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_15" ] + }, + { + "type": "AMMO", + "id": "arrow_metal", + "price": 5000, + "name": "metal broadhead arrow", + "symbol": "=", + "color": "green", + "description": "This metal arrow has fletching and a steel arrowhead. Stands a very good chance of remaining intact once fired.", + "material": "steel", + "volume": 1, + "weight": 63, + "bashing": 3, + "cutting": 2, + "ammo_type": "arrow", + "damage": 14, + "pierce": 7, + "range": 10, + "dispersion": 80, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_50" ] + }, + { + "type": "AMMO", + "id": "arrow_metal_bodkin", + "price": 4000, + "name": "metal bodkin arrow", + "symbol": "=", + "color": "green", + "description": "This metal arrow has fletching and a steel bodkin arrowhead for armor penetration. Stands a very good chance of remaining intact once fired.", + "material": "steel", + "volume": 1, + "weight": 60, + "bashing": 3, + "cutting": 2, + "ammo_type": "arrow", + "damage": 10, + "pierce": 15, + "range": 12, + "dispersion": 75, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_50" ] + }, + { + "type": "AMMO", + "id": "arrow_metal_target", + "price": 4000, + "name": "metal target arrow", + "symbol": "=", + "color": "green", + "description": "This metal arrow has extra long fletching and a round, balanced arrowhead for extra accuracy, at the cost of some damage. Stands a very good chance of remaining intact once fired.", + "material": "steel", + "volume": 1, + "weight": 50, + "bashing": 3, + "cutting": 2, + "ammo_type": "arrow", + "damage": 12, + "pierce": 5, + "range": 14, + "dispersion": 50, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_60" ] + }, + { + "type": "AMMO", + "id": "arrow_cf", + "price": 9500, + "name": "carbon fiber arrow", + "symbol": "=", + "color": "green", + "description": "High-tech carbon fiber shafts and 100 grain broadheads. Very lightweight, fast, and durable. Stands a great chance of remaining intact once fired.", + "material": "kevlar", + "volume": 2, + "weight": 10, + "bashing": 1, + "ammo_type": "arrow", + "damage": 16, + "pierce": 8, + "range": 14, + "dispersion": 65, + "loudness": 0, + "count": 8, + "stack_size": 10, + "effects": [ "RECOVER_80" ] + }, + { + "type": "AMMO", + "id": "arrow_exploding", + "price": 5000, + "name": "explosive arrow", + "symbol": "=", + "color": "green", + "description": "This arrow has a small IED strapped to its tip. Horribly inaccurate, heavy, and bulky, not only does this contraption require expert hands to pull off a shot, it requires one to loose this with a small measure of confidence that the shooter won't be caught in the blast radius.", + "material": [ "steel", "powder" ], + "volume": 2, + "weight": 633, + "bashing": 2, + "ammo_type": "arrow", + "damage": 15, + "pierce": 9, + "range": 5, + "dispersion": 285, + "loudness": 0, + "count": 5, + "effects": [ "EXPLOSIVE_SMALL" ] + }, + { + "type": "GENERIC", + "id": "exploding_arrow_warhead", + "category": "spare_parts", + "symbol": "=", + "color": "green", + "name": "explosive arrowhead", + "description": "This simple IED is designed to be attached to an arrow and detonate on impact.", + "price": 2000, + "material": "steel", + "weight": 562, + "volume": 1, + "bashing": 10, + "to_hit": -1, + "count": 5, + "effects": [ "EXPLOSIVE_SMALL" ] + }, + { + "type": "AMMO", + "id": "arrow_flamming", + "price": 1200, + "name": "flaming arrow", + "symbol": "=", + "color": "green", + "description": "This arrow has a flaming rag wrapped around the shaft near the head. You should shoot it soon before it burns your bow.", + "material": "steel", + "volume": 2, + "weight": 150, + "bashing": 2, + "ammo_type": "arrow", + "damage": 15, + "pierce": 9, + "range": 5, + "dispersion": 285, + "loudness": 0, + "count": 5, + "effects": [ "IGNITE" ] + }, + { + "id": "selfbow", + "type": "GUN", + "symbol": "(", + "color": "yellow", + "name": "self bow", + "description": "A primitive bow fashioned from a single piece of wood, made specifically for the person using it. Weak and wildly inaccurate, it doesn't work that well, unfortunately...", + "price": 10000, + "//": "Not exactly something that would have high resale value, I'm afraid.", + "material": "wood", + "flags": [ "FIRE_TWOHAND", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED" ], + "reload_noise_volume": 3, + "loudness": 8, + "skill": "archery", + "ammo": "arrow", + "weight": 1360, + "volume": 10, + "bashing": 6, + "armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 }, + "ranged_damage": 5, + "range": 5, + "dispersion": 250, + "durability": 6, + "clip_size": 1, + "reload": 50 + }, + { + "id": "shortbow", + "type": "GUN", + "symbol": "(", + "color": "yellow", + "name": "short bow", + "description": "Though not as powerful as the longbow, this bow is quicker and easier to draw, and can be used effectively by those of average strength. Good for small game or the survivor on the go.", + "price": 16000, + "material": "wood", + "flags": [ "FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED" ], + "skill": "archery", + "min_strength": 4, + "ammo": "arrow", + "weight": 340, + "volume": 6, + "bashing": 6, + "armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 }, + "reload_noise_volume": 3, + "loudness": 6, + "ranged_damage": 4, + "range": 4, + "dispersion": 210, + "durability": 6, + "clip_size": 1, + "reload": 30, + "valid_mod_locations": [ [ "dampening", 1 ] ] + }, + { + "id": "compbow", + "type": "GUN", + "symbol": "(", + "color": "yellow", + "name": "compound bow", + "description": "A high-power bow with shaped cams and extra cables for high velocity shots that can be used effectively by fairly strong archers. Currently set to a medium weight.", + "price": 55000, + "material": [ "steel", "plastic" ], + "flags": [ "FIRE_TWOHAND", "RELOAD_AND_SHOOT" ], + "skill": "archery", + "min_strength": 6, + "ammo": "arrow", + "weight": 907, + "volume": 6, + "bashing": 8, + "to_hit": 1, + "reload_noise_volume": 3, + "loudness": 10, + "ranged_damage": 18, + "range": 18, + "dispersion": 100, + "durability": 6, + "clip_size": 1, + "reload": 110, + "valid_mod_locations": [ [ "underbarrel", 1 ], [ "sights", 1 ], [ "accessories", 2 ], [ "stabilizer", 1 ], [ "dampening", 1 ] ], + "use_action": { + "menu_text": "Tighten Limbs", + "type": "transform", + "target": "compbow_high", + "msg": "You tighten the limbs, increasing the strength of the bow." } + }, + { + "id": "compbow_high", + "copy-from": "compbow", + "override": true, + "type": "GUN", + "name": "compound bow (high)", + "name_plural": "compound bows (high)", + "description": "A high-power bow with shaped cams and extra cables for high velocity shots that can be used effectively by very strong archers. Currently set to a high weight, and ready to cause some real damage - if you can draw it.", + "min_strength": 8, + "dispersion": 85, + "reload": 120, + "ranged_damage": 22, + "range": 22, + "use_action": { + "menu_text": "Loosen Limbs", + "type": "transform", + "target": "compbow_low", + "msg": "You loosen the limbs, decreasing the strength of the bow." + } + }, + { + "id": "compbow_low", + "copy-from": "compbow", + "override": true, + "type": "GUN", + "name": "compound bow (low)", + "name_plural": "compound bows (low)", + "description": "A high-power bow with shaped cams and extra cables for high velocity shots that can be used effectively by average archers. Currently set to a low weight, making it much easier to draw.", + "min_strength": 4, + "dispersion": 115, + "reload": 85, + "ranged_damage": 14, + "range": 14, + "use_action": { + "menu_text": "Tighten Limbs", + "type": "transform", + "target": "compbow", + "msg": "You tighten the limbs, increasing the strength of the bow." + } + }, + { + "id": "compositebow", + "type": "GUN", + "symbol": "(", + "color": "yellow", + "name": "composite bow", + "description": "A bow made from multiple materials for increased energy efficiency. Complicated to make, but stronger than an all-wood short bow.", + "price": 32000, + "material": [ "wood", "bone" ], + "flags": [ "FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED" ], + "skill": "archery", + "min_strength": 5, + "ammo": "arrow", + "weight": 400, + "volume": 7, + "bashing": 8, + "armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 }, + "reload_noise_volume": 3, + "loudness": 6, + "ranged_damage": 5, + "range": 5, + "dispersion": 150, + "durability": 6, + "clip_size": 1, + "reload": 35, + "valid_mod_locations": [ [ "dampening", 1 ] ] + }, + { + "id": "recurbow", + "type": "GUN", + "symbol": "(", + "color": "yellow", + "name": "recurve bow", + "description": "A modern bow that curves away from the archer at the tips for increased power, which can be used effectively by those of somewhat above-average strength. Good and easy to use, but nothing special.", + "price": 38000, + "material": [ "steel", "plastic" ], + "flags": [ "FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED" ], + "skill": "archery", + "min_strength": 5, + "ammo": "arrow", + "weight": 540, + "volume": 10, + "bashing": 12, + "armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 }, + "reload_noise_volume": 3, + "loudness": 8, + "ranged_damage": 14, + "range": 14, + "dispersion": 120, + "durability": 6, + "clip_size": 1, + "reload": 90, + "valid_mod_locations": [ [ "underbarrel", 1 ], [ "sights", 1 ], [ "accessories", 2 ], [ "stabilizer", 1 ], [ "dampening", 1 ] ] + }, + { + "id": "reflexbow", + "type": "GUN", + "symbol": "(", + "color": "yellow", + "name": "reflex bow", + "description": "A bow with limbs that curve away from the archer near the riser for power. Smaller than some bows, but decently powerful and quick.", + "price": 42000, + "material": [ "wood", "bone" ], + "flags": [ "FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED" ], + "skill": "archery", + "ammo": "arrow", + "min_strength": 5, + "weight": 400, + "volume": 6, + "bashing": 12, + "armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 }, + "reload_noise_volume": 3, + "loudness": 6, + "ranged_damage": 6, + "range": 6, + "dispersion": 120, + "durability": 6, + "clip_size": 1, + "reload": 40, + "valid_mod_locations": [ [ "dampening", 1 ] ] + }, + { + "id": "hybridbow", + "type": "GUN", + "symbol": "(", + "color": "yellow", + "name": "hybrid longbow", + "description": "A modernized, six-foot longbow that curves away from the archer at the tips for increased power. It can be used effectively by those of somewhat above-average strength. Designed for archers that appreciate the smoothness of a traditional longbow, but desire the superior power of a modern recurve.", + "price": 38000, + "material": [ "steel", "plastic", "wood" ], + "flags": [ "FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED" ], + "skill": "archery", + "min_strength": 5, + "ammo": "arrow", + "weight": 600, + "volume": 14, + "bashing": 12, + "armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 }, + "reload_noise_volume": 3, + "loudness": 8, + "ranged_damage": 12, + "range": 10, + "dispersion": 140, + "durability": 6, + "clip_size": 1, + "reload": 80, + "valid_mod_locations": [ [ "underbarrel", 1 ], [ "sights", 1 ], [ "accessories", 2 ], [ "stabilizer", 1 ], [ "dampening", 1 ] ] + }, + { + "id": "longbow", + "type": "GUN", + "symbol": "(", + "color": "yellow", + "name": "longbow", + "description": "A six-foot wooden bow that takes a fair amount of strength to draw. It can be used effectively by those of somewhat above-average strength. Used mainly in medieval England in wartime, but pierces zombie hide just as well as chainmail.", + "price": 50000, + "material": "wood", + "flags": [ "FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED" ], + "skill": "archery", + "min_strength": 5, + "ammo": "arrow", + "weight": 680, + "volume": 14, + "bashing": 10, + "armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 }, + "reload_noise_volume": 3, + "loudness": 8, + "ranged_damage": 10, + "range": 10, + "dispersion": 210, + "durability": 6, + "clip_size": 1, + "reload": 70, + "valid_mod_locations": [ [ "dampening", 1 ] ] + }, + { + "id": "woodgreatbow", + "copy-from": "longbow", + "override": true, + "type": "GUN", + "name": "wooden greatbow", + "name_plural": "wooden greatbows", + "description": "An extremely large and stiff longbow, made with enormous limbs and a thick string to take an immense amount of energy. Takes incredible strength to draw.", + "price": 150000, + "min_strength": 18, + "weight": 3200, + "volume": 25, + "armor_data": { "covers": [ "TORSO" ], "coverage": 7, "material_thickness": 2, "encumbrance": 25 }, + "dispersion": 200, + "durability": 8, + "reload": 100, + "loudness": 16, + "ranged_damage": 20, + "range": 12 + }, + { + "id": "compgreatbow", + "type": "GUN", + "symbol": "(", + "color": "yellow", + "name": "compound greatbow", + "name_plural": "compound greatbows", + "description": "An extremely large and powerful compound bow, made with enormous limbs and a thick string to take an immense amount of energy. Takes incredible strength to draw.", + "price": 160000, + "material": [ "steel", "plastic" ], + "flags": [ "FIRE_TWOHAND", "RELOAD_AND_SHOOT" ], + "skill": "archery", + "min_strength": 18, + "ammo": "arrow", + "weight": 2000, + "volume": 16, + "bashing": 14, + "reload_noise_volume": 4, + "loudness": 20, + "durability": 8, + "reload": 150, + "ranged_damage": 40, + "range": 22, + "dispersion": 100, + "clip_size": 1, + "valid_mod_locations": [ [ "underbarrel", 1 ], [ "sights", 1 ], [ "accessories", 2 ], [ "stabilizer", 1 ], [ "dampening", 1 ] ] + }, + { + "id": "reflexrecurvebow", + "type": "GUN", + "symbol": "(", + "color": "yellow", + "name": "reflex recurve bow", + "description": "A modernized bow that combines the traits from both the reflex and the recurve bows, with both limbs and tips curving away from the archer, and reinforced with composite materials. This dramatically increases the power and requires significant strength to draw the bow effectively, but can still be fired quickly.", + "price": 72000, + "material": [ "wood" ], + "flags": [ "FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED" ], + "skill": "archery", + "min_strength": 6, + "ammo": "arrow", + "weight": 450, + "volume": 8, + "bashing": 12, + "armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 }, + "reload_noise_volume": 3, + "loudness": 8, + "ranged_damage": 8, + "range": 8, + "dispersion": 120, + "durability": 6, + "clip_size": 1, + "reload": 40, + "valid_mod_locations": [ [ "underbarrel", 1 ], [ "sights", 1 ], [ "accessories", 2 ], [ "stabilizer", 1 ], [ "dampening", 1 ] ] + }, + { + "type": "AMMO", + "id": "throwing_knife", + "category": "weapons", + "price": 5200, + "name": "throwing knife", + "name_plural": "throwing knives", + "symbol": ";", + "color": "light_gray", + "description": "A thin and flat knife made for throwing. Its ineffective cutting edge and odd shape makes it unsuitable for use as a tool.", + "material": "steel", + "volume": 1, + "weight": 268, + "bashing": 1, + "cutting": 10, + "thrown_damage": [ { "damage_type": "cut", "amount": 14 } ], + "ammo_type": "thrown", + "count": 5 + }, + { + "type": "AMMO", + "id": "throwing_axe", + "category": "weapons", + "price": 12400, + "name": "throwing axe", + "symbol": ";", + "color": "light_gray", + "description": "A lightweight hatchet made for throwing. Its ineffective cutting edge and light weight makes it unsuitable for use as a tool.", + "material": [ "steel", "wood" ], + "volume": 3, + "weight": 792, + "bashing": 6, + "cutting": 16, + "thrown_damage": [ { "damage_type": "bash", "amount": 6 }, { "damage_type": "cut", "amount": 16 } ], + "ammo_type": "thrown", + "count": 3 + }, + { + "type": "AMMO", + "id": "lawn_dart", + "category": "weapons", + "price": 1000, + "name": "lawn dart", + "symbol": ";", + "color": "yellow", + "description": "A large plastic dart made for outdoor games.", + "material": [ "plastic", "iron" ], + "volume": 2, + "weight": 175, + "to_hit": -1, + "cutting": 8, + "thrown_damage": [ { "damage_type": "stab", "amount": 16 } ], + "ammo_type": "thrown", + "count": 2 + }, + { + "type": "AMMO", + "id": "fishspear", + "price": 4000, + "name": "wooden fishing spear", + "symbol": "=", + "color": "brown", + "description": "An underwater fishing spear made from wood tipped with steel. It's very light, but doesn't have much range. Stands a below average chance of remaining intact once fired.", + "material": "wood", + "volume": 1, + "weight": 18, + "bashing": 1, + "ammo_type": "fishspear", + "damage": 12, + "pierce": 4, + "range": 6, + "dispersion": 150, + "loudness": 0, + "count": 4, + "effects": [ "RECOVER_5" ] + }, + { + "type": "AMMO", + "id": "m_fishspear", + "price": 16000, + "name": "metal fishing spear", + "symbol": "=", + "color": "light_gray", + "description": "An underwater fishing spear made from metal. It's light, but doesn't have much range. Stands a very good chance of remaining intact once fired.", + "material": "iron", + "volume": 1, + "weight": 28, + "bashing": 1, + "ammo_type": "fishspear", + "damage": 14, + "pierce": 8, + "range": 6, + "dispersion": 120, + "loudness": 0, + "count": 4, + "effects": [ "RECOVER_15" ] + }, + { + "type": "AMMO", + "id": "c_fishspear", + "price": 32000, + "name": "carbon fiber fishing spear", + "symbol": "=", + "color": "dark_gray", + "description": "An underwater fishing spear made from carbon fiber. It's very light, but doesn't have much range. Stands a bad chance of remaining intact once fired.", + "material": "kevlar", + "volume": 1, + "weight": 12, + "bashing": 1, + "ammo_type": "fishspear", + "damage": 14, + "pierce": 12, + "range": 10, + "dispersion": 90, + "loudness": 0, + "count": 4, + "effects": [ "RECOVER_3" ] + }, + { + "id": "arrow_plastic", + "type": "AMMO", + "symbol": "=", + "color": "green", + "name": "plastic arrow", + "description": "This plastic arrow has a plastic arrowhead and fletching. Stands a good chance of remaining intact once fired.", + "price": 2000, + "material": "plastic", + "volume": 1, + "weight": 8, + "bashing": 2, + "cutting": 1, + "ammo_type": "arrow", + "damage": 8, + "pierce": 1, + "range": 12, + "dispersion": 125, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_10" ] + } ] diff --git a/data/json/items/armor.json b/data/json/items/armor.json index c21bc7ee278f5..61f12d86c3af2 100644 --- a/data/json/items/armor.json +++ b/data/json/items/armor.json @@ -104,26 +104,6 @@ "environmental_protection": 1, "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ] }, - { - "id": "anbc_suit", - "type": "ARMOR", - "category": "armor", - "name": "ANBC suit", - "description": "An armored, impermeable full-body suit that functions as body armor, as well as protecting from nuclear, biological, and chemical hazards.", - "weight": 8700, - "volume": 80, - "price": 400000, - "material": [ "kevlar", "plastic" ], - "symbol": "[", - "color": "light_red", - "covers": [ "HEAD", "MOUTH", "EYES", "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ], - "coverage": 100, - "encumbrance": 45, - "warmth": 50, - "material_thickness": 3, - "environmental_protection": 20, - "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY", "RAD_PROOF", "ELECTRIC_IMMUNE", "GAS_PROOF", "OUTER" ] - }, { "id": "apron_leather", "type": "ARMOR", @@ -1136,7 +1116,7 @@ "description": "A tight mask made of black leather. The eyes and mouth can be closed using zippers.", "weight": 210, "volume": 4, - "price": 21000, + "price": 4000, "to_hit": -3, "material": [ "leather" ], "symbol": "[", @@ -1147,7 +1127,28 @@ "warmth": 30, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "use_action": { + "menu_text": "Zip up", + "type": "transform", + "target": "bondage_mask_zipped", + "msg": "You zip the eyes and mouth of the bondage mask closed." + } + }, + { + "id": "bondage_mask_zipped", + "copy-from": "bondage_mask", + "type": "ARMOR", + "name": "bondage mask (zipped)", + "name_plural": "bondage masks (zipped)", + "description": "A tight mask made of black leather. The eyes and mouth have been zipped closed.", + "flags": [ "VARSIZE", "BLIND" ], + "use_action": { + "menu_text": "Unzip", + "type": "transform", + "target": "bondage_mask", + "msg": "You unzip the eyes and mouth of the bondage mask." + } }, { "id": "bondage_suit", @@ -4211,25 +4212,6 @@ "environmental_protection": 4, "flags": [ "FANCY", "OUTER", "SUN_GLASSES" ] }, - { - "id": "hazmat_suit", - "type": "ARMOR", - "name": "hazmat suit", - "description": "An impermeable whole-body garment worn as protection against hazardous materials. Though very restrictive and fragile, wearing it will provide complete protection against ambient radiation.", - "weight": 5000, - "volume": 68, - "price": 117500, - "material": [ "plastic" ], - "symbol": "[", - "color": "yellow", - "covers": [ "HEAD", "MOUTH", "EYES", "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ], - "coverage": 100, - "encumbrance": 37, - "warmth": 40, - "material_thickness": 2, - "environmental_protection": 20, - "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "RAD_PROOF", "ELECTRIC_IMMUNE", "GAS_PROOF", "OUTER" ] - }, { "id": "headgear", "type": "ARMOR", diff --git a/data/json/items/chemicals_and_resources.json b/data/json/items/chemicals_and_resources.json index 84a183315ba89..add8d10d8e8a5 100644 --- a/data/json/items/chemicals_and_resources.json +++ b/data/json/items/chemicals_and_resources.json @@ -257,9 +257,9 @@ "price" : 1100, "price_postapoc": 5000, "material" : "powder", - "volume" : 1, + "volume" : "125ml", "charges" : 400, "//" : "Previously 10 doses to a gram, so about 400 to the pound.", - "stack_size" : 400, + "stack_size" : 200, "fun" : -15 }, { diff --git a/data/json/items/comestibles.json b/data/json/items/comestibles.json index 7b8606e63c273..3b3670cf3c236 100644 --- a/data/json/items/comestibles.json +++ b/data/json/items/comestibles.json @@ -1845,26 +1845,6 @@ "stack_size": 2, "fun": 2 }, - { - "type": "COMESTIBLE", - "id": "fish_vac", - "name": "salted fish slices", - "name_plural": "salted fish slices", - "weight": 84, - "color": "white", - "spoils_in": "2 days", - "container": "bag_plastic", - "comestible_type": "FOOD", - "symbol": "%", - "quench": -5, - "calories": 191, - "description": "Fish fillets cured in brine and vacuum-packed. Salty but tasty in a pinch.", - "price": 1000, - "material": "flesh", - "volume": 1, - "charges": 2, - "fun": 3 - }, { "type": "COMESTIBLE", "id": "fish_fried", @@ -7255,180 +7235,6 @@ "description": "A meat pizza, for all the cannibals out there. Chock full of minced human flesh and heavily seasoned.", "material": [ "wheat", "hflesh" ] }, - { - "id": "mre_beef_box", - "type": "GENERIC", - "symbol": ")", - "color": "brown", - "name": "MRE - Beef", - "name_plural": "MREs - beef", - "category": "food", - "description": "A 'Meal Ready to Eat' with an irradiated beef main course and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "price": 1500, - "weight": 900, - "volume": 3, - "material": [ "plastic" ], - "use_action": "DISASSEMBLE" - }, - { - "id": "mre_veggy_box", - "type": "GENERIC", - "symbol": ")", - "color": "brown", - "name": "MRE - Vegetarian", - "name_plural": "MREs - vegetarian", - "category": "food", - "description": "A 'Meal Ready to Eat' with an irradiated vegetarian-friendly course and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "price": 1500, - "weight": 900, - "volume": 3, - "material": [ "plastic" ], - "use_action": "DISASSEMBLE" - }, - { - "id": "mre_chicken_box", - "type": "GENERIC", - "symbol": ")", - "color": "brown", - "name": "MRE - Chicken", - "name_plural": "MREs - chicken", - "category": "food", - "description": "A 'Meal Ready to Eat' with an irradiated chicken course and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "price": 1500, - "weight": 900, - "volume": 3, - "material": [ "plastic" ], - "use_action": "DISASSEMBLE" - }, - { - "id": "mre_hotdog_box", - "type": "GENERIC", - "symbol": ")", - "color": "brown", - "name": "MRE - Hotdogs", - "name_plural": "MREs - hotdogs", - "category": "food", - "description": "A 'Meal Rejected by the Enemy' with a hotdog main course and everything a desperate survivor needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "price": 1200, - "weight": 900, - "volume": 3, - "material": [ "plastic" ], - "use_action": "DISASSEMBLE" - }, - { - "id": "mre_ravioli_box", - "type": "GENERIC", - "symbol": ")", - "color": "brown", - "name": "MRE - Ravioli", - "name_plural": "MREs - ravioli", - "category": "food", - "description": "A 'Meal Ready to Eat' with a ravioli course and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "price": 1700, - "weight": 900, - "volume": 3, - "material": [ "plastic" ], - "use_action": "DISASSEMBLE" - }, - { - "type": "COMESTIBLE", - "id": "mre_beef", - "name": "irradiated beef course", - "weight": 125, - "color": "brown", - "spoils_in": "3 days 8 hours", - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "calories": 347, - "description": "The irradiated beef main course from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", - "price": 1250, - "material": "flesh", - "volume": 1, - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": -1, - "rot_spawn": "GROUP_CARRION" - }, - { - "type": "COMESTIBLE", - "id": "mre_veggy", - "name": "irradiated vegetarian course", - "weight": 125, - "color": "green", - "spoils_in": "3 days 8 hours", - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "calories": 286, - "description": "The irradiated vegetarian main course from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", - "price": 1250, - "material": "veggy", - "volume": 1, - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": -1, - "rot_spawn": "GROUP_ROTTING_PLANT" - }, - { - "type": "COMESTIBLE", - "id": "mre_chicken", - "name": "irradiated chicken course", - "weight": 125, - "color": "green", - "spoils_in": "3 days 8 hours", - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "calories": 304, - "description": "The irradiated chicken main course from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", - "price": 1250, - "material": "flesh", - "volume": 1, - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": -1, - "rot_spawn": "GROUP_CARRION" - }, - { - "type": "COMESTIBLE", - "id": "mre_hotdogs", - "name": "irradiated hot dog course", - "weight": 125, - "color": "red", - "spoils_in": "3 days 8 hours", - "comestible_type": "FOOD", - "symbol": "%", - "calories": 347, - "description": "Nicknamed the 'Four Fingers of Death' by troops, this is probably the most disgusting thing you've ever eaten. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", - "price": 500, - "material": [ "flesh", "junk" ], - "volume": 1, - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": -6, - "rot_spawn": "GROUP_CARRION" - }, - { - "type": "COMESTIBLE", - "id": "mre_ravioli", - "name": "irradiated ravioli course", - "weight": 125, - "color": "red", - "spoils_in": "3 days 8 hours", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 10, - "calories": 269, - "description": "The main course from a ravioli MRE, the sauce really helps with the taste. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", - "price": 1300, - "material": [ "flesh", "wheat" ], - "volume": 1, - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 1, - "rot_spawn": "GROUP_CARRION" - }, { "type": "COMESTIBLE", "id": "tea_raw", @@ -7627,17 +7433,17 @@ }, { "type": "COMESTIBLE", - "id": "meat_vac", + "id": "meat_salted", "name": "salted meat slice", "weight": 120, "color": "red", "spoils_in": "2 days", - "container": "bag_plastic", + "container": "plastic_bag_vac", "comestible_type": "FOOD", "symbol": "%", "quench": -5, "calories": 182, - "description": "Meat slices cured in brine and vacuum-packed. Salty but tasty in a pinch.", + "description": "Meat slices cured in brine. Salty but tasty in a pinch.", "price": 500, "material": "flesh", "volume": 1, @@ -7647,20 +7453,20 @@ }, { "type": "COMESTIBLE", - "id": "hflesh_vac", - "copy-from": "meat_vac", + "id": "hflesh_salted", + "copy-from": "meat_salted", "name": "salted simpleton slices", "description": "Human flesh slices cured in brine and vacuum-packed. Salty but tasty in a pinch.", "material": "hflesh" }, { "type": "COMESTIBLE", - "id": "veggy_vac", + "id": "veggy_salted", "name": "salted veggy chunk", "weight": 121, "color": "green", "spoils_in": "3 days", - "container": "bag_plastic", + "container": "plastic_bag_vac", "comestible_type": "FOOD", "symbol": "%", "quench": -5, @@ -7675,12 +7481,12 @@ }, { "type": "COMESTIBLE", - "id": "apple_vac", + "id": "apple_sugar", "name": "fruit slice", "weight": 53, "color": "red", "spoils_in": "7 days 12 hours", - "container": "bag_plastic", + "container": "plastic_bag_vac", "comestible_type": "FOOD", "symbol": "%", "quench": 3, diff --git a/data/json/items/comestibles/carnivore.json b/data/json/items/comestibles/carnivore.json index 651703eb2704c..e9819ea8a84dd 100644 --- a/data/json/items/comestibles/carnivore.json +++ b/data/json/items/comestibles/carnivore.json @@ -209,7 +209,7 @@ "name_plural": "salted fish", "//": "Two fillets of fish needed here.", "description": "Salty dried fish that lasts for a long time, but will make you thirsty.", - "weight": 44, + "weight": 84, "container": "bag_plastic", "color": "light_gray", "spoils_in": "24 days", diff --git a/data/json/items/comestibles/med.json b/data/json/items/comestibles/med.json index 6dd9661700091..c1d0241a72b55 100644 --- a/data/json/items/comestibles/med.json +++ b/data/json/items/comestibles/med.json @@ -1208,7 +1208,7 @@ "healthy" : -2, "stack_size" : 42, "symbol" : "!", - "color" : "orange", + "color" : "yellow", "looks_like" : "calcium_tablet", "use_action" : { "type" : "consume_drug", diff --git a/data/json/items/comestibles/mre.json b/data/json/items/comestibles/mre.json new file mode 100644 index 0000000000000..d02c2c2fa1028 --- /dev/null +++ b/data/json/items/comestibles/mre.json @@ -0,0 +1,477 @@ +[ + { + "abstract": "mre_box", + "type": "GENERIC", + "symbol": ")", + "color": "brown", + "name": "MRE", + "category": "food", + "description": "A generic MRE box, you shouldn't see this.", + "price": 1500, + "weight": 900, + "volume": 3, + "material": [ "plastic" ], + "looks_like": "mre_beef_box", + "use_action": "DISASSEMBLE" + }, + { + "abstract": "mre_smallbox", + "type": "GENERIC", + "symbol": ")", + "color": "brown", + "name": "MRE small box", + "category": "food", + "description": "A generic small MRE box, you shouldn't see this", + "price": 500, + "weight": 300, + "volume": 1, + "material": [ "plastic" ], + "looks_like": "mre_beef_box", + "use_action": "DISASSEMBLE" + }, + { + "abstract": "mre_entree", + "type": "COMESTIBLE", + "name": "MRE entree", + "weight": 125, + "color": "brown", + "spoils_in": "3 days 8 hours", + "comestible_type": "FOOD", + "symbol": "%", + "healthy": 1, + "calories": 320, + "description": "A generic MRE entree, you shouldn't see this.", + "price": 1250, + "volume": 1, + "charges": 4, + "flags": [ "EATEN_HOT" ], + "looks_like": "mre_beef", + "fun": -1, + "rot_spawn": "GROUP_CARRION" + }, + { + "id": "mre_accessory", + "type": "GENERIC", + "copy-from": "mre_smallbox", + "name": "MRE - Accessory Pack", + "name_plural": "MREs - Accessory Packs", + "description": "An MRE accessory pack containing a variety of utensils and drinks. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_dessert", + "type": "GENERIC", + "copy-from": "mre_smallbox", + "name": "MRE - Dessert Pack", + "name_plural": "MREs - Dessert Packs", + "description": "A sealed plastic bag containing an array of desserts. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_chilibeans_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Chili & Beans", + "name_plural": "MREs - Chili & Beans", + "description": "A 'Meal Ready to Eat' with a chili & beans entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_bbqbeef_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - BBQ Beef", + "name_plural": "MREs - BBQ Beef", + "description": "A 'Meal Ready to Eat' with a BBQ beef entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_chickennoodle_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Chicken & Noodles", + "name_plural": "MREs - Chicken & Noodles", + "description": "A 'Meal Ready to Eat' with a chicken & noodles entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_spaghetti_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Spaghetti", + "name_plural": "MREs - Spaghetti", + "description": "A 'Meal Ready to Eat' with a spaghetti entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_chicken_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Chicken Chunks", + "name_plural": "MREs - Chicken Chunks", + "description": "A 'Meal Ready to Eat' with a chicken chunk entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_beeftaco_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Beef Taco", + "name_plural": "MREs - Beef Taco", + "description": "A 'Meal Ready to Eat' with a beef taco entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_beef_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Beef Brisket", + "name_plural": "MREs - Beef Brisket", + "description": "A 'Meal Ready to Eat' with a beef brisket entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_meatball_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Meatballs & Marinara", + "name_plural": "MREs - Meatballs & Marinara", + "description": "A 'Meal Ready to Eat' with a meatball entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_beefstew_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Beef Stew", + "name_plural": "MREs - Beef Stew", + "description": "A 'Meal Ready to Eat' with a beef stew entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_chilimac_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Chili & Macaroni", + "name_plural": "MREs - Chili & Macaroni", + "description": "A 'Meal Ready to Eat' with a chili & macaroni entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_veggy_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Vegetarian Taco", + "name_plural": "MREs - Vegetarian Taco", + "description": "A 'Meal Ready to Eat' with a vegetarian taco entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_macaronimarinara_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Macaroni Marinara", + "name_plural": "MREs - Macaroni Marinara", + "description": "A 'Meal Ready to Eat' with a macaroni marinara entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_cheesetort_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Cheese Tortellini", + "name_plural": "MREs - Cheese Tortellini", + "description": "A 'Meal Ready to Eat' with a cheese tortellini entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_mushroomfettuccine_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Mushroom Fettuccine", + "name_plural": "MREs - Mushroom Fettuccine", + "description": "A 'Meal Ready to Eat' with a mushroom fettuccine entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_mexicanchickenstew_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Mexican Chicken Stew", + "name_plural": "MREs - Mexican Chicken Stew", + "description": "A 'Meal Ready to Eat' with a Mexican chicken stew entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_beef_box" + }, + { + "id": "mre_chickenburritobowl_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Chicken Burrito Bowl", + "name_plural": "MREs - Chicken Burrito Bowl", + "description": "A 'Meal Ready to Eat' with a chicken burrito bowl entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_maplesausage_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Maple Sausage", + "name_plural": "MREs - Maple Sausage", + "description": "A 'Meal Ready to Eat' with a maple sausage entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_ravioli_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Ravioli", + "name_plural": "MREs - Ravioli", + "description": "A 'Meal Ready to Eat' with a ravioli entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_pepperjackbeef_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Pepper Jack Beef", + "name_plural": "MREs - Pepper Jack Beef", + "description": "A 'Meal Ready to Eat' with a pepper jack beef entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_hashbrownbacon_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Hash Browns & Bacon", + "name_plural": "MREs - Hash Browns & Bacon", + "description": "A 'Meal Ready to Eat' with a hash browns & bacon entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_lemontuna_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Lemon Pepper Tuna", + "name_plural": "MREs - Lemon Pepper Tuna", + "description": "A 'Meal Ready to Eat' with a lemon pepper tuna entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_asianbeef_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Asian Beef & Vegetables", + "name_plural": "MREs - Asian Beef & Vegetables", + "description": "A 'Meal Ready to Eat' with an asian beef & vegetables entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_chickenpesto_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Chicken Pesto & Pasta", + "name_plural": "MREs - Chicken Pesto & Pasta", + "description": "A 'Meal Ready to Eat' with a chicken pesto entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_southwestbeef_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Southwest Beef & Beans", + "name_plural": "MREs - Southwest Beef & Beans", + "description": "A 'Meal Ready to Eat' with a southwest beef & beans entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_hotdog_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": "MRE - Frankfurters & Beans", + "name_plural": "MREs - Frankfurters & Beans", + "description": "A vintage MRE, still perfectly preserved and edible. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "price": 1000 + }, + { + "type": "COMESTIBLE", + "id": "mre_chilibeans", + "copy-from": "mre_entree", + "name": "chili & beans entree", + "description": "The chili & beans entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "veggy", "bean" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_bbqbeef", + "copy-from": "mre_entree", + "name": "BBQ beef entree", + "description": "The BBQ beef entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": "flesh" + }, + { + "type": "COMESTIBLE", + "id": "mre_chickennoodle", + "copy-from": "mre_entree", + "name": "chicken noodle entree", + "description": "The chicken noodle entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "veggy", "wheat" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_spaghetti", + "copy-from": "mre_entree", + "name": "spaghetti entree", + "description": "The spaghetti entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "wheat" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_chicken", + "copy-from": "mre_entree", + "name": "chicken chunks entree", + "description": "The chicken chunks entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": "flesh" + }, + { + "type": "COMESTIBLE", + "id": "mre_beeftaco", + "copy-from": "mre_entree", + "name": "beef taco entree", + "description": "The beef taco entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "veggy" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_beef", + "copy-from": "mre_entree", + "name": "beef brisket entree", + "description": "The beef brisket entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": "flesh" + }, + { + "type": "COMESTIBLE", + "id": "mre_meatball", + "copy-from": "mre_entree", + "name": "meatballs & marinara entree", + "description": "The meatballs & marinara entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "tomato" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_beefstew", + "copy-from": "mre_entree", + "name": "beef stew entree", + "description": "The beef stew entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "veggy" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_chilimac", + "copy-from": "mre_entree", + "name": "chili & macaroni entree", + "description": "The chili & macaroni entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "wheat", "veggy" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_veggy", + "copy-from": "mre_entree", + "name": "vegetarian taco entree", + "description": "The vegetarian taco entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "veggy", "tomato" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_macaronimarinara", + "copy-from": "mre_entree", + "name": "macaroni & marinara entree", + "description": "The macaroni & marinara entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "tomato", "veggy" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_cheesetort", + "copy-from": "mre_entree", + "name": "cheese tortellini entree", + "description": "The cheese tortellini entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "tomato", "veggy", "milk" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_mushroomfettuccine", + "copy-from": "mre_entree", + "name": "mushroom fettuccine entree", + "description": "The mushroom fettuccine entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "mushroom", "veggy", "wheat" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_mexicanchickenstew", + "copy-from": "mre_entree", + "name": "Mexican chicken stew entree", + "description": "The Mexican chicken stew entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "tomato", "veggy", "flesh", "bean" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_chickenburritobowl", + "copy-from": "mre_entree", + "name": "chicken burrito bowl entree", + "description": "The chicken burrito bowl entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "veggy", "bean" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_maplesausage", + "copy-from": "mre_entree", + "name": "maple sausage entree", + "description": "The maple sausage entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "junk" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_ravioli", + "copy-from": "mre_entree", + "name": "ravioli entree", + "description": "The ravioli entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "wheat" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_pepperjackbeef", + "copy-from": "mre_entree", + "name": "pepper jack beef entree", + "description": "The pepper jack beef entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "milk" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_hashbrownbacon", + "copy-from": "mre_entree", + "name": "hash browns & bacon entree", + "description": "The hash browns & bacon entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "veggy" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_lemontuna", + "copy-from": "mre_entree", + "name": "lemon pepper tuna entree", + "description": "The lemon pepper tuna entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": "flesh" + }, + { + "type": "COMESTIBLE", + "id": "mre_asianbeef", + "copy-from": "mre_entree", + "name": "asian beef & vegetables entree", + "description": "The asian beef & vegetables entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "veggy" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_chickenpesto", + "copy-from": "mre_entree", + "name": "chicken pesto & pasta entree", + "description": "The chicken pesto & pasta entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "wheat", "veggy" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_southwestbeef", + "copy-from": "mre_entree", + "name": "southwest beef & beans entree", + "description": "The southwest beef & beans entree entree from an MRE. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "material": [ "flesh", "bean" ] + }, + { + "type": "COMESTIBLE", + "id": "mre_hotdog", + "copy-from": "mre_entree", + "name": "frankfurters & beans entree", + "description": "The dreaded four fingers of death. It seems to be several decades old. Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere, it has started to go bad.", + "price": 850, + "material": [ "flesh", "junk", "bean" ], + "fun": -6 + } +] diff --git a/data/json/items/containers.json b/data/json/items/containers.json index ba78db021dc98..ccb879a0e2dbc 100644 --- a/data/json/items/containers.json +++ b/data/json/items/containers.json @@ -360,6 +360,24 @@ "unseals_into": "null", "qualities": [ [ "CONTAIN", 1 ], [ "BOIL", 2 ] ] }, + { + "id": "plastic_bag_vac", + "type": "CONTAINER", + "category": "other", + "name": "vacuum-packed bag", + "description": "This is a bag of vacuum-packed food.", + "weight": 2, + "volume": 0, + "contains": 2, + "price": 0, + "material": "plastic", + "symbol": "%", + "color": "red", + "watertight": false, + "preserves": true, + "rigid": false, + "unseals_into": "bag_plastic" + }, { "id": "can_food", "type": "CONTAINER", diff --git a/data/json/items/crossbows.json b/data/json/items/crossbows.json index 7c85b0e2cc529..2b0fd49531f0f 100644 --- a/data/json/items/crossbows.json +++ b/data/json/items/crossbows.json @@ -1,281 +1,328 @@ [ - { - "type" : "AMMO", - "id" : "bolt_wood", - "price" : 500, - "name" : "wooden crossbow bolt", - "symbol" : "=", - "color" : "green", - "description" : "A sharpened bolt carved from wood. It's very light, but doesn't do much damage and isn't particularly accurate. Stands a below average chance of remaining intact once fired.", - "material" : "wood", - "volume" : 1, - "weight" : 31, - "bashing" : 1, - "ammo_type" : "bolt", - "damage" : 10, - "pierce" : 1, - "dispersion" : 150, - "loudness": 0, - "count" : 15, - "effects" : ["RECOVER_5"] - }, - { - "type" : "AMMO", - "id" : "bolt_metal", - "price" : 1000, - "name" : "metal crossbow bolt", - "symbol" : "=", - "color" : "green", - "description" : "A sharpened bolt made from metal of some kind. It's heavy and unwieldy, providing moderate damage and accuracy. Stands a very good chance of remaining intact once fired.", - "material" : "iron", - "volume" : 1, - "weight" : 250, - "bashing" : 1, - "ammo_type" : "bolt", - "damage" : 15, - "pierce" : 5, - "range" : 3, - "dispersion" : 135, - "loudness": 0, - "count" : 10, - "effects" : ["RECOVER_15"] - }, - { - "type" : "AMMO", - "id" : "bolt_steel", - "price" : 5000, "//" : "That's the going rate for aluminum, but unless you want carbon fiber, that's as metal as Cabela's seems to stock.", - "name" : "steel broadhead bolt", - "symbol" : "=", - "color" : "green", - "description" : "A sharp bolt made from steel. Deadly in skilled hands. Stands an excellent chance of remaining intact once fired.", - "material" : "steel", - "volume" : 1, - "weight" : 108, - "bashing" : 5, - "ammo_type" : "bolt", - "damage" : 12, - "pierce" : 10, - "range" : 16, - "dispersion" : 90, - "loudness": 0, - "count" : 10, - "effects" : ["RECOVER_50"] - }, - { - "type": "AMMO", - "id": "bolt_steel_bodkin", - "price": 4000, - "name": "steel bodkin bolt", - "symbol": "=", - "color": "green", - "description": "A sharp bolt made from steel with an armor piercing bodkin tip. Deadly in skilled hands. Stands an excellent chance of remaining intact once fired.", - "material": "steel", - "volume": 1, - "weight": 95, - "bashing": 3, - "cutting": 2, - "ammo_type": "bolt", - "damage": 8, - "pierce": 11, - "range": 18, - "dispersion": 85, - "loudness": 0, - "count": 10, - "effects": ["RECOVER_50"] - }, - { - "type": "AMMO", - "id": "bolt_steel_target", - "price": 4000, - "name": "steel target bolt", - "symbol": "=", - "color": "green", - "description": "A sharp bolt made from steel with extra long fletching and a round, balanced tip for extra accuracy, at the cost of some damage. Deadly in skilled hands. Stands an excellent chance of remaining intact once fired.", - "material": "steel", - "volume": 1, - "weight": 122, - "bashing": 3, - "cutting": 2, - "ammo_type": "bolt", - "damage": 10, - "pierce": 7, - "range": 20, - "dispersion": 60, - "loudness": 0, - "count": 10, - "effects": ["RECOVER_60"] - }, - { - "type" : "AMMO", - "id" : "bolt_explosive", - "price" : 30000, "//" : "Resin and carbon-fiber bolts get to $10 per shot IRL, so explosives can only go higher.", - "name" : "explosive crossbow bolt", - "symbol" : "=", - "color" : "green", - "description" : "A lightweight, sharpened bolt made from some kind of metal. It is fairly unwieldy and only provides moderate accuracy, due to being filled with explosives and fitted with an impact trigger.", - "material" : ["steel", "powder"], - "volume" : 1, - "weight" : 620, - "bashing" : 1, - "ammo_type" : "bolt", - "damage" : 12, - "pierce" : 2, - "range" : 8, - "dispersion" : 135, - "loudness": 0, - "stack_size" : 10, - "effects" : ["COOKOFF", "EXPLOSIVE_SMALL"] - }, - { - "id" : "hand_crossbow", - "type" : "GUN", - "reload_noise_volume": 10, - "symbol" : "(", - "color" : "green", - "name" : "pistol crossbow", - "description" : "A small concealable pistol-like crossbow. It's weak due to its small size and draw, so it is best suited for hunting small game. Bolts fired from this weapon have a good chance of remaining intact for re-use.", - "price" : 55000, - "material" : ["steel", "wood"], - "flags" : "PRIMITIVE_RANGED_WEAPON", - "skill" : "pistol", - "ammo" : "bolt", - "weight" : 900, - "volume" : 2, - "bashing" : 4, - "ranged_damage" : 7, - "range" : 6, - "dispersion" : 180, - "durability" : 6, - "clip_size" : 1, - "valid_mod_locations": [[ "accessories", 2 ],[ "grip", 1 ],[ "mechanism", 4 ],[ "rail", 1 ],[ "sights", 1 ],[ "stock", 1 ],[ "underbarrel", 1 ],[ "dampening", 1]] - }, - { - "id" : "crossbow", - "type" : "GUN", - "reload_noise_volume": 5, - "symbol" : "(", - "color" : "green", - "name" : "crossbow", - "description" : "A slow-loading hand weapon that launches bolts. Stronger people can reload it much faster. Bolts fired from this weapon have a good chance of remaining intact for re-use.", - "price" : 69000, - "material" : ["steel", "wood"], - "flags" : ["STR_RELOAD", "PRIMITIVE_RANGED_WEAPON"], - "skill" : "rifle", - "ammo" : "bolt", - "weight" : 2728, - "volume" : 6, - "bashing" : 11, - "to_hit" : 1, - "loudness" : 10, - "ranged_damage" : 17, - "range" : 9, - "dispersion" : 150, - "durability" : 6, - "clip_size" : 1, - "reload" : 500, - "valid_mod_locations": [[ "accessories", 4 ],[ "grip", 1 ],[ "mechanism", 4 ],[ "stock", 1 ],[ "dampening", 1]] - }, - { - "id": "compositecrossbow", - "type": "GUN", - "symbol": "(", - "color": "green", - "name": "composite crossbow", - "reload_noise_volume": 4, - "description": "A slightly larger, more powerful crossbow utilising composite material limbs and somewhat more modern design practices.", - "price": 89000, - "material": [ "steel", "wood", "bone" ], - "flags": [ "STR_RELOAD", "PRIMITIVE_RANGED_WEAPON" ], - "skill": "rifle", - "ammo": "bolt", - "weight": 3500, - "volume": 7, - "bashing": 11, - "to_hit": 1, - "ranged_damage": 20, - "range": 16, - "loudness": 8, - "dispersion": 220, - "durability": 6, - "clip_size": 1, - "reload": 600, - "valid_mod_locations": [[ "accessories", 4 ],[ "grip", 1 ],[ "mechanism", 4 ],[ "rail", 1 ],[ "sights", 1 ],[ "stock", 1 ],[ "underbarrel", 1 ],[ "dampening", 1 ]] - }, - { - "id": "compcrossbow", - "type": "GUN", - "symbol": "(", - "color": "green", - "name": "compound crossbow", - "reload_noise_volume": 4, - "description": "A high-power crossbow with shaped cams and extra cables for high-power shots. Takes less time to reload due to a modern string-pulling system.", - "price": 200000, - "material": [ "steel", "plastic" ], - "flags": [ "STR_RELOAD", "PRIMITIVE_RANGED_WEAPON" ], - "skill": "rifle", - "ammo": "bolt", - "weight": 3000, - "volume": 7, - "bashing": 11, - "to_hit": 1, - "ranged_damage": 28, - "range": 22, - "loudness": 12, - "dispersion": 200, - "durability": 6, - "clip_size": 1, - "reload": 300, - "valid_mod_locations": [[ "accessories", 4 ],[ "grip", 1 ],[ "mechanism", 4 ],[ "rail", 1 ],[ "sights", 1 ],[ "stock", 1 ],[ "underbarrel", 1 ],[ "dampening", 1 ]] - }, - { - "id" : "huge_crossbow", - "type" : "GUN", - "reload_noise_volume": 10, - "symbol" : "(", - "color" : "green", - "name" : "heavy crossbow", - "description" : "A HUGE medieval crossbow from Germany with a very slow, difficult reloading process not suited for unskilled users. Its tension is so powerful that you feel it shake after firing. Bolts fired from this weapon have a good chance of remaining intact for re-use.", - "price" : 324000, "//" : "Modern crossbows can come in anywhere from $300 to $2K. Large plus Antique = expensive.", - "material" : ["iron", "wood"], - "flags" : ["FIRE_TWOHAND", "STR_RELOAD", "PRIMITIVE_RANGED_WEAPON", "TRADER_AVOID"], - "skill" : "rifle", - "ammo" : "bolt", - "weight" : 6803, - "volume" : 20, - "bashing" : 20, - "to_hit" : -1, - "ranged_damage" : 50, - "range" : 30, - "dispersion" : 330, - "recoil" : 30, - "durability" : 6, - "clip_size" : 1, - "reload" : 6000, - "valid_mod_locations": [[ "accessories", 4 ],[ "grip", 1 ],[ "mechanism", 4 ],[ "rail", 1 ],[ "sights", 1 ],[ "stock", 1 ],[ "underbarrel", 1 ],[ "dampening", 1]] - }, - { - "id" : "rep_crossbow", - "type" : "GUN", - "reload_noise_volume": 10, - "symbol" : "(", - "color" : "green", - "name" : "repeating crossbow", - "description" : "A custom-made crossbow with a clever mechanism that loads and fires bolts in a single motion, it has a wooden magazine that holds 10 bolts. Bolts fired from this weapon have a good chance of remaining intact for re-use.", - "price" : 324000, - "material" : ["steel", "wood"], - "flags" : ["FIRE_TWOHAND", "PRIMITIVE_RANGED_WEAPON", "TRADER_AVOID"], - "skill" : "smg", - "ammo" : "bolt", - "weight" : 3628, - "volume" : 10, - "bashing" : 13, - "to_hit" : -1, - "range" : 8, - "dispersion" : 500, - "recoil" : 30, - "durability" : 6, - "clip_size" : 10, - "reload" : 50, - "valid_mod_locations": [[ "accessories", 4 ],[ "grip", 1 ],[ "mechanism", 4 ],[ "rail", 1 ],[ "stock", 1 ],[ "underbarrel", 1 ],["dampening", 1]] - } + { + "type": "AMMO", + "id": "bolt_wood", + "price": 500, + "name": "wooden crossbow bolt", + "symbol": "=", + "color": "green", + "description": "A sharpened bolt carved from wood. It's very light, but doesn't do much damage and isn't particularly accurate. Stands a below average chance of remaining intact once fired.", + "material": "wood", + "volume": 1, + "weight": 31, + "bashing": 1, + "ammo_type": "bolt", + "damage": 10, + "pierce": 1, + "dispersion": 150, + "loudness": 0, + "count": 15, + "effects": [ "RECOVER_5" ] + }, + { + "type": "AMMO", + "id": "bolt_metal", + "price": 1000, + "name": "metal crossbow bolt", + "symbol": "=", + "color": "green", + "description": "A sharpened bolt made from metal of some kind. It's heavy and unwieldy, providing moderate damage and accuracy. Stands a very good chance of remaining intact once fired.", + "material": "iron", + "volume": 1, + "weight": 250, + "bashing": 1, + "ammo_type": "bolt", + "damage": 15, + "pierce": 5, + "range": 3, + "dispersion": 135, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_15" ] + }, + { + "type": "AMMO", + "id": "bolt_steel", + "price": 5000, + "//": "That's the going rate for aluminum, but unless you want carbon fiber, that's as metal as Cabela's seems to stock.", + "name": "steel broadhead bolt", + "symbol": "=", + "color": "green", + "description": "A sharp bolt made from steel. Deadly in skilled hands. Stands an excellent chance of remaining intact once fired.", + "material": "steel", + "volume": 1, + "weight": 108, + "bashing": 5, + "ammo_type": "bolt", + "damage": 12, + "pierce": 10, + "range": 16, + "dispersion": 90, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_50" ] + }, + { + "type": "AMMO", + "id": "bolt_steel_bodkin", + "price": 4000, + "name": "steel bodkin bolt", + "symbol": "=", + "color": "green", + "description": "A sharp bolt made from steel with an armor piercing bodkin tip. Deadly in skilled hands. Stands an excellent chance of remaining intact once fired.", + "material": "steel", + "volume": 1, + "weight": 95, + "bashing": 3, + "cutting": 2, + "ammo_type": "bolt", + "damage": 8, + "pierce": 11, + "range": 18, + "dispersion": 85, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_50" ] + }, + { + "type": "AMMO", + "id": "bolt_steel_target", + "price": 4000, + "name": "steel target bolt", + "symbol": "=", + "color": "green", + "description": "A sharp bolt made from steel with extra long fletching and a round, balanced tip for extra accuracy, at the cost of some damage. Deadly in skilled hands. Stands an excellent chance of remaining intact once fired.", + "material": "steel", + "volume": 1, + "weight": 122, + "bashing": 3, + "cutting": 2, + "ammo_type": "bolt", + "damage": 10, + "pierce": 7, + "range": 20, + "dispersion": 60, + "loudness": 0, + "count": 10, + "effects": [ "RECOVER_60" ] + }, + { + "type": "AMMO", + "id": "bolt_explosive", + "price": 30000, + "//": "Resin and carbon-fiber bolts get to $10 per shot IRL, so explosives can only go higher.", + "name": "explosive crossbow bolt", + "symbol": "=", + "color": "green", + "description": "A lightweight, sharpened bolt made from some kind of metal. It is fairly unwieldy and only provides moderate accuracy, due to being filled with explosives and fitted with an impact trigger.", + "material": [ "steel", "powder" ], + "volume": 1, + "weight": 620, + "bashing": 1, + "ammo_type": "bolt", + "damage": 12, + "pierce": 2, + "range": 8, + "dispersion": 135, + "loudness": 0, + "stack_size": 10, + "effects": [ "COOKOFF", "EXPLOSIVE_SMALL" ] + }, + { + "id": "hand_crossbow", + "type": "GUN", + "reload_noise_volume": 10, + "symbol": "(", + "color": "green", + "name": "pistol crossbow", + "description": "A small concealable pistol-like crossbow. It's weak due to its small size and draw, so it is best suited for hunting small game. Bolts fired from this weapon have a good chance of remaining intact for re-use.", + "price": 55000, + "material": [ "steel", "wood" ], + "flags": "PRIMITIVE_RANGED_WEAPON", + "skill": "pistol", + "ammo": "bolt", + "weight": 900, + "volume": 2, + "bashing": 4, + "ranged_damage": 7, + "range": 6, + "dispersion": 180, + "durability": 6, + "clip_size": 1, + "valid_mod_locations": [ + [ "accessories", 2 ], + [ "grip", 1 ], + [ "mechanism", 4 ], + [ "rail", 1 ], + [ "sights", 1 ], + [ "stock", 1 ], + [ "underbarrel", 1 ], + [ "dampening", 1 ] + ] + }, + { + "id": "crossbow", + "type": "GUN", + "reload_noise_volume": 5, + "symbol": "(", + "color": "green", + "name": "crossbow", + "description": "A slow-loading hand weapon that launches bolts. Stronger people can reload it much faster. Bolts fired from this weapon have a good chance of remaining intact for re-use.", + "price": 69000, + "material": [ "steel", "wood" ], + "flags": [ "STR_RELOAD", "PRIMITIVE_RANGED_WEAPON" ], + "skill": "rifle", + "ammo": "bolt", + "weight": 2728, + "volume": 6, + "bashing": 11, + "to_hit": 1, + "loudness": 10, + "ranged_damage": 17, + "range": 9, + "dispersion": 150, + "durability": 6, + "clip_size": 1, + "reload": 500, + "valid_mod_locations": [ [ "accessories", 4 ], [ "grip", 1 ], [ "mechanism", 4 ], [ "stock", 1 ], [ "dampening", 1 ] ] + }, + { + "id": "compositecrossbow", + "type": "GUN", + "symbol": "(", + "color": "green", + "name": "composite crossbow", + "reload_noise_volume": 4, + "description": "A slightly larger, more powerful crossbow utilising composite material limbs and somewhat more modern design practices.", + "price": 89000, + "material": [ "steel", "wood", "bone" ], + "flags": [ "STR_RELOAD", "PRIMITIVE_RANGED_WEAPON" ], + "skill": "rifle", + "ammo": "bolt", + "weight": 3500, + "volume": 7, + "bashing": 11, + "to_hit": 1, + "ranged_damage": 20, + "range": 16, + "loudness": 8, + "dispersion": 220, + "durability": 6, + "clip_size": 1, + "reload": 600, + "valid_mod_locations": [ + [ "accessories", 4 ], + [ "grip", 1 ], + [ "mechanism", 4 ], + [ "rail", 1 ], + [ "sights", 1 ], + [ "stock", 1 ], + [ "underbarrel", 1 ], + [ "dampening", 1 ] + ] + }, + { + "id": "compcrossbow", + "type": "GUN", + "symbol": "(", + "color": "green", + "name": "compound crossbow", + "reload_noise_volume": 4, + "description": "A high-power crossbow with shaped cams and extra cables for high-power shots. Takes less time to reload due to a modern string-pulling system.", + "price": 200000, + "material": [ "steel", "plastic" ], + "flags": [ "STR_RELOAD", "PRIMITIVE_RANGED_WEAPON" ], + "skill": "rifle", + "ammo": "bolt", + "weight": 3000, + "volume": 7, + "bashing": 11, + "to_hit": 1, + "ranged_damage": 28, + "range": 22, + "loudness": 12, + "dispersion": 200, + "durability": 6, + "clip_size": 1, + "reload": 300, + "valid_mod_locations": [ + [ "accessories", 4 ], + [ "grip", 1 ], + [ "mechanism", 4 ], + [ "rail", 1 ], + [ "sights", 1 ], + [ "stock", 1 ], + [ "underbarrel", 1 ], + [ "dampening", 1 ] + ] + }, + { + "id": "huge_crossbow", + "type": "GUN", + "reload_noise_volume": 10, + "symbol": "(", + "color": "green", + "name": "heavy crossbow", + "description": "A HUGE medieval crossbow from Germany with a very slow, difficult reloading process not suited for unskilled users. Its tension is so powerful that you feel it shake after firing. Bolts fired from this weapon have a good chance of remaining intact for re-use.", + "price": 324000, + "//": "Modern crossbows can come in anywhere from $300 to $2K. Large plus Antique = expensive.", + "material": [ "iron", "wood" ], + "flags": [ "FIRE_TWOHAND", "STR_RELOAD", "PRIMITIVE_RANGED_WEAPON", "TRADER_AVOID" ], + "skill": "rifle", + "ammo": "bolt", + "weight": 6803, + "volume": 20, + "bashing": 20, + "to_hit": -1, + "ranged_damage": 50, + "range": 30, + "dispersion": 330, + "recoil": 30, + "durability": 6, + "clip_size": 1, + "reload": 6000, + "valid_mod_locations": [ + [ "accessories", 4 ], + [ "grip", 1 ], + [ "mechanism", 4 ], + [ "rail", 1 ], + [ "sights", 1 ], + [ "stock", 1 ], + [ "underbarrel", 1 ], + [ "dampening", 1 ] + ] + }, + { + "id": "rep_crossbow", + "type": "GUN", + "reload_noise_volume": 10, + "symbol": "(", + "color": "green", + "name": "repeating crossbow", + "description": "A custom-made crossbow with a clever mechanism that loads and fires bolts in a single motion, it has a wooden magazine that holds 10 bolts. Bolts fired from this weapon have a good chance of remaining intact for re-use.", + "price": 324000, + "material": [ "steel", "wood" ], + "flags": [ "FIRE_TWOHAND", "PRIMITIVE_RANGED_WEAPON", "TRADER_AVOID" ], + "skill": "smg", + "ammo": "bolt", + "weight": 3628, + "volume": 10, + "bashing": 13, + "to_hit": -1, + "range": 8, + "dispersion": 500, + "recoil": 30, + "durability": 6, + "clip_size": 10, + "reload": 50, + "valid_mod_locations": [ + [ "accessories", 4 ], + [ "grip", 1 ], + [ "mechanism", 4 ], + [ "rail", 1 ], + [ "stock", 1 ], + [ "underbarrel", 1 ], + [ "dampening", 1 ] + ] + } ] diff --git a/data/json/items/fuel.json b/data/json/items/fuel.json index 88cc5b524a7ed..2954303920710 100644 --- a/data/json/items/fuel.json +++ b/data/json/items/fuel.json @@ -6,11 +6,11 @@ "name_plural": "ethanol", "description": "Extremely pure alcohol suitable for use as a component in chemical reactions. You could also water it down and drink it, or use it as fuel in alcohol-burning stoves.", "weight": 1, - "volume": 1, + "volume": "200ml", "price": 200, "price_postapoc": 500, "count": 250, - "stack_size": 250, + "stack_size": 200, "category": "chems", "phase": "liquid", "container": "bottle_glass", @@ -36,11 +36,11 @@ "description": "Petroleum-based fuel made from a byproduct of the gasoline making process.", "category": "fuel", "weight": 1, - "volume": 1, + "volume": "200ml", "price": 50, "price_postapoc": 500, "count": 250, - "stack_size": 250, + "stack_size": 200, "phase": "liquid", "container": "jerrycan", "material": "hydrocarbons", @@ -65,11 +65,11 @@ "description": "Gasoline is a highly flammable liquid. When under pressure, it has the potential for violent explosion.", "category": "fuel", "weight": 1, - "volume": 1, + "volume": "200ml", "price": 40, "price_postapoc": 800, "count": 250, - "stack_size": 250, + "stack_size": 200, "phase": "liquid", "container": "jerrycan", "material": "hydrocarbons", @@ -94,11 +94,11 @@ "description": "A thin and clean-burning oil made for use in oil lamps.", "category": "fuel", "weight": 1, - "volume": 1, + "volume": "200ml", "price": 20, "price_postapoc": 200, "count": 250, - "stack_size": 250, + "stack_size": 200, "phase": "liquid", "container": "bottle_plastic", "symbol": "=", @@ -118,10 +118,10 @@ "description": "This is gasoline mixed with some other components to make it stick to the surface and increase burning temperature, meant to be used with a flamethrower.", "category": "fuel", "weight": 1, - "volume": 1, + "volume": "200ml", "price": 8000, "count": 250, - "stack_size": 250, + "stack_size": 200, "phase": "liquid", "container": "jerrycan", "material": "hydrocarbons", diff --git a/data/json/items/gun/20x66mm.json b/data/json/items/gun/20x66mm.json index a2219b8adb95d..0643d6ef74fe4 100644 --- a/data/json/items/gun/20x66mm.json +++ b/data/json/items/gun/20x66mm.json @@ -18,7 +18,7 @@ "skill": "shotgun", "range": 6, "ranged_damage": 4, - "dispersion": 345, + "dispersion": 285, "durability": 9, "clip_size": 5, "barrel_length": 3, @@ -50,7 +50,7 @@ "color": "dark_gray", "ammo": "20x66mm", "skill": "shotgun", - "dispersion": 390, + "dispersion": 335, "durability": 9, "burst": 4, "valid_mod_locations": [ @@ -83,7 +83,7 @@ "color": "dark_gray", "ammo": "20x66mm", "skill": "pistol", - "dispersion": 450, + "dispersion": 400, "durability": 9, "default_mods": [ "pistol_stock" ], "valid_mod_locations": [ [ "accessories", 3 ], [ "grip", 1 ], [ "mechanism", 4 ], [ "rail", 1 ], [ "sights", 1 ], [ "stock", 1 ] ], diff --git a/data/json/items/gun/22.json b/data/json/items/gun/22.json index f3e600ad68c5c..755c5198da08a 100644 --- a/data/json/items/gun/22.json +++ b/data/json/items/gun/22.json @@ -117,7 +117,7 @@ "ammo": "22", "skill": "smg", "ranged_damage": 3, - "dispersion": 280, + "dispersion": 220, "durability": 9, "burst": 20, "reload": 500, diff --git a/data/json/items/gun/40mm.json b/data/json/items/gun/40mm.json index 22bb51032ac8e..93798965fce92 100644 --- a/data/json/items/gun/40mm.json +++ b/data/json/items/gun/40mm.json @@ -113,7 +113,7 @@ "bashing": 8, "material": [ "superalloy", "ceramic" ], "ammo": "40mm", - "dispersion": 150, + "dispersion": 140, "durability": 9, "clip_size": 4, "valid_mod_locations": [ [ "accessories", 4 ], [ "grip", 1 ], [ "mechanism", 4 ], [ "rail", 1 ], [ "sights", 1 ], [ "stock", 1 ], [ "underbarrel", 1 ] ], diff --git a/data/json/items/gun/5x50.json b/data/json/items/gun/5x50.json index 259ca325d05fc..1949d697d15b0 100644 --- a/data/json/items/gun/5x50.json +++ b/data/json/items/gun/5x50.json @@ -17,7 +17,7 @@ "skill": "smg", "range": 10, "ranged_damage": 10, - "dispersion": 260, + "dispersion": 220, "durability": 9, "barrel_length": 1, "modes": [ @@ -46,7 +46,7 @@ "color": "dark_gray", "ammo": "5x50", "skill": "pistol", - "dispersion": 440, + "dispersion": 280, "durability": 9, "modes": [ [ "DEFAULT", "semi-auto", 1 ], diff --git a/data/json/items/gun/8x40mm.json b/data/json/items/gun/8x40mm.json index 7f6aa52639aa4..bb3df3aa42428 100644 --- a/data/json/items/gun/8x40mm.json +++ b/data/json/items/gun/8x40mm.json @@ -16,7 +16,7 @@ "color": "dark_gray", "ammo": "8x40mm", "skill": "pistol", - "dispersion": 200, + "dispersion": 175, "durability": 9, "valid_mod_locations": [ [ "accessories", 2 ], @@ -120,7 +120,7 @@ "skill": "rifle", "range": -6, "ranged_damage": 10, - "dispersion": 180, + "dispersion": 90, "durability": 9, "burst": 30, "reload": 400, @@ -147,7 +147,7 @@ "ammo": "8x40mm", "skill": "rifle", "ranged_damage": 5, - "dispersion": 90, + "dispersion": 50, "durability": 9, "burst": 5, "valid_mod_locations": [ @@ -181,7 +181,7 @@ "ammo": "8x40mm", "skill": "rifle", "ranged_damage": 5, - "dispersion": 140, + "dispersion": 70, "durability": 9, "reload": 200, "barrel_length": 2, @@ -217,7 +217,7 @@ "ammo": "8x40mm", "skill": "rifle", "ranged_damage": 10, - "dispersion": 50, + "dispersion": 30, "durability": 9, "burst": 10, "barrel_length": 2, diff --git a/data/json/items/gunmod/barrel.json b/data/json/items/gunmod/barrel.json index 0cd5a5f0bea3f..a8d4706c0dd71 100644 --- a/data/json/items/gunmod/barrel.json +++ b/data/json/items/gunmod/barrel.json @@ -38,7 +38,7 @@ "id": "lead_barrel_big", "type": "GUNMOD", "name": "LW barrel extension", - "description": "A Leadworks built in longer barrel increases the muzzle velocity of a firearm, contributing to both accuracy and damage, but slows aiming.", + "description": "A Leadworks built in longer barrel increases the muzzle velocity of a firearm, contributing to both accuracy and damage.", "to_hit": 2, "bashing": 5, "material": [ "steel" ], @@ -69,7 +69,7 @@ "copy-from": "lead_barrel_big", "type": "GUNMOD", "name": "LW heavy duty barrel", - "description": "A Leadworks built in heavy duty barrel especially designed for prolonged shooting. Reduced accuracy but increase damage output and weapon range.", + "description": "A Leadworks built in heavy duty barrel especially designed for prolonged shooting. Increases damage output and weapon range.", "dispersion_modifier": 0, "flags": [ "IRREMOVABLE" ] } diff --git a/data/json/items/gunmod/underbarrel.json b/data/json/items/gunmod/underbarrel.json index 63292c549cb54..9d20c8d957158 100644 --- a/data/json/items/gunmod/underbarrel.json +++ b/data/json/items/gunmod/underbarrel.json @@ -111,7 +111,7 @@ "location": "underbarrel", "mod_targets": [ "shotgun", "rifle" ], "dispersion_modifier": 10, - "mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE" ] ] ], + "mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE", "REACH_ATTACK" ] ] ], "qualities": [ [ "CUT", 1 ], [ "COOK", 1 ], [ "BUTCHER", -18 ] ], "flags": [ "SLOW_WIELD", "IRREMOVABLE", "STAB" ] }, @@ -230,7 +230,7 @@ "location": "underbarrel", "mod_targets": [ "shotgun", "rifle", "smg", "crossbow" ], "dispersion_modifier": 10, - "mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE" ] ] ], + "mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE", "REACH_ATTACK" ] ] ], "min_skills": [ [ "weapon", 2 ], [ "melee", 1 ] ] }, "qualities": [ [ "COOK", 1 ] ] @@ -303,7 +303,7 @@ "color": "dark_gray", "location": "underbarrel", "mod_targets": [ "rifle", "crossbow" ], - "gun_data": { "ammo": "20x66mm", "skill": "shotgun", "dispersion": 400, "durability": 9, "reload": 125 }, + "gun_data": { "ammo": "20x66mm", "skill": "shotgun", "dispersion": 320, "durability": 9, "reload": 125 }, "dispersion_modifier": 30, "min_skills": [ [ "weapon", 2 ], [ "shotgun", 2 ] ], "magazine_well": 1, diff --git a/data/json/items/melee.json b/data/json/items/melee.json index 5fc7b267dab67..cf626ab05e287 100644 --- a/data/json/items/melee.json +++ b/data/json/items/melee.json @@ -2098,8 +2098,8 @@ "weight": 2000, "volume": 14, "price": 4000, - "to_hit": 2, - "bashing": 10, + "to_hit": -2, + "bashing": 6, "cutting": 15, "material": [ "aluminum", "wood" ], "symbol": "/", @@ -2115,11 +2115,11 @@ "category": "weapons", "name": "awl pike", "description": "This is a medieval weapon consisting of a wood shaft tipped with an iron spike. The spike seems to be pretty dull, and the whole thing feels poorly made.", - "weight": 6000, + "weight": 2500, "volume": 14, "price": 40000, - "to_hit": 2, - "bashing": 12, + "to_hit": -2, + "bashing": 8, "cutting": 25, "material": [ "budget_steel", "wood" ], "symbol": "/", diff --git a/data/json/items/migration.json b/data/json/items/migration.json index 693fcf88ad862..87c24c597e41e 100644 --- a/data/json/items/migration.json +++ b/data/json/items/migration.json @@ -470,5 +470,55 @@ "id": "lasagne_cooked", "type": "MIGRATION", "replace": "spaghetti_cooked" + }, + { + "id": "fish_vac", + "type": "MIGRATION", + "replace": "salted_fish" + }, + { + "id": "apple_vac", + "type": "MIGRATION", + "replace": "apple_sugar" + }, + { + "id": "hflesh_vac", + "type": "MIGRATION", + "replace": "hflesh_salted" + }, + { + "id": "meat_vac", + "type": "MIGRATION", + "replace": "meat_salted" + }, + { + "id": "veggy_vac", + "type": "MIGRATION", + "replace": "veggy_salted" + }, + { + "id": "bag_fish_vac", + "type": "MIGRATION", + "replace": "salted_fish" + }, + { + "id": "bag_apple_vac", + "type": "MIGRATION", + "replace": "apple_sugar" + }, + { + "id": "bag_hflesh_vac", + "type": "MIGRATION", + "replace": "hflesh_salted" + }, + { + "id": "bag_meat_vac", + "type": "MIGRATION", + "replace": "meat_salted" + }, + { + "id": "bag_veggy_vac", + "type": "MIGRATION", + "replace": "veggy_salted" } ] diff --git a/data/json/items/resources/metals.json b/data/json/items/resources/metals.json index e771588a0b680..ebdae16965a57 100644 --- a/data/json/items/resources/metals.json +++ b/data/json/items/resources/metals.json @@ -22,10 +22,10 @@ "name_plural": "bismuth", "description": "A dense but brittle metal often used as an alternative to lead.", "weight": 2, "//": "Density 9.78g/cm³ ~ 2.4kg/250ml @ stack 1000 = 2g/unit", - "volume": 1, + "volume": "50ml", "price": 6500, "count": 100, - "stack_size": 1000, + "stack_size": 200, "material": [ "lead" ], "symbol": "=", "color": "dark_gray", @@ -39,11 +39,11 @@ "name_plural": "gold", "description": "A soft shiny metal. Before the apocalypse this would've been worth a small fortune but now its value is greatly diminished.", "weight": 5, "//": "Density 19.32g/cm³ ~ 4.8kg/250ml @ stack 1000 = 5g/unit", - "volume": 1, + "volume": "50ml", "price": 100000, "price_postapoc": 100, "count": 100, - "stack_size": 1000, + "stack_size": 200, "material": [ "gold" ], "symbol": "/", "color": "yellow", @@ -57,10 +57,10 @@ "name_plural": "lead", "description": "A soft dull metal known since ancient times. Due to its malleability it has a wide variety of uses including the manufacture of ammunition.", "weight": 3, "//": "Density 11.34g/cm³ ~ 2.8kg/250ml @ stack 1000 = 3g/unit", - "volume": 1, + "volume": "50ml", "price": 5000, "count": 100, - "stack_size": 1000, + "stack_size": 200, "material": [ "lead" ], "symbol": "=", "color": "dark_gray", @@ -108,11 +108,11 @@ "name_plural": "silver", "description": "A soft shiny metal. Before the cataclysm it was worth quite a bit but its value is now greatly diminished.", "weight": 3, "//": "Density 10.40g/cm³ ~ 2.6kg/250ml @ stack 1000 = 3g/unit", - "volume": 1, + "volume": "50ml", "price": 100000, "price_postapoc": 100, "count": 100, - "stack_size": 1000, + "stack_size": 200, "material": [ "silver" ], "symbol": "/", "color": "light_gray", diff --git a/data/json/items/tool/lighting.json b/data/json/items/tool/lighting.json index a713457ae3082..5db2fc21dc073 100644 --- a/data/json/items/tool/lighting.json +++ b/data/json/items/tool/lighting.json @@ -13,8 +13,8 @@ "material": ["plastic"], "symbol": ";", "color": "green", - "max_charges": 400, - "initial_charges": 400, + "max_charges": 576, + "initial_charges": 576, "charges_per_use": 1, "ammo": "battery", "use_action": { @@ -33,7 +33,7 @@ "type": "TOOL", "name": "electric lantern (on)", "name_plural": "electric lanterns (on)", - "turns_per_charge": 45, + "turns_per_charge": 42, "revert_to": "electric_lantern", "use_action": { "menu_text": "Turn off", @@ -74,7 +74,7 @@ "type": "TOOL", "name": "flashlight (on)", "name_plural": "flashlights (on)", - "turns_per_charge": 20, + "turns_per_charge": 24, "revert_to": "flashlight", "use_action": { "menu_text": "Turn off", @@ -132,8 +132,8 @@ "material": [ "aluminum" ], "symbol": ";", "color": "blue", - "max_charges": 200, - "initial_charges": 200, + "max_charges": 205, + "initial_charges": 205, "charges_per_use": 1, "ammo": "battery", "use_action": { @@ -151,7 +151,7 @@ "type": "TOOL", "name": "heavy duty flashlight (on)", "name_plural": "heavy duty flashlights (on)", - "turns_per_charge": 12, + "turns_per_charge": 9, "revert_to": "heavy_flashlight", "use_action": { "menu_text": "Turn off", diff --git a/data/json/items/tools.json b/data/json/items/tools.json index 581b06350519f..8f7a2fd406d3c 100644 --- a/data/json/items/tools.json +++ b/data/json/items/tools.json @@ -315,107 +315,6 @@ "techniques": [ "WBLOCK_1", "BRUTAL", "SWEEP" ], "flags": [ "NONCONDUCTIVE" ] }, - { - "id": "bag_apple_vac", - "type": "GENERIC", - "category": "food", - "name": "vacuum-packed fruit slice", - "description": "This is a bag of vacuum packed fruit slices in plastic packaging. Use to open and eat to enjoy.", - "weight": 152, - "volume": 1, - "price": 500, - "bashing": 8, - "material": [ "plastic", "veggy" ], - "symbol": "%", - "color": "red", - "use_action": { - "target": "apple_vac", - "msg": "You open the vacuum pack, exposing it to the atmosphere.", - "container": "bag_plastic", - "menu_text": "Open bag", - "type": "transform" - } - }, - { - "id": "bag_fish_vac", - "type": "GENERIC", - "category": "food", - "name": "vacuum-packed fish slice", - "description": "This is a bag of vacuum packed fish slices in plastic packaging. Use to open and eat to enjoy.", - "weight": 240, - "volume": 1, - "price": 750, - "bashing": 8, - "material": [ "plastic", "flesh" ], - "symbol": "%", - "color": "light_gray", - "use_action": { - "target": "fish_vac", - "msg": "You open the vacuum pack, exposing it to the atmosphere.", - "container": "bag_plastic", - "menu_text": "Open bag", - "type": "transform" - } - }, - { - "id": "bag_hflesh_vac", - "copy-from": "bag_meat_vac", - "type": "GENERIC", - "name": "vacuum-packed salted simpleton slice", - "description": "This is a bag of vacuum packed human flesh slices in plastic packaging. Use to open and eat to enjoy.", - "material": [ "plastic", "hflesh" ], - "use_action": { - "target": "hflesh_vac", - "msg": "You open the vacuum pack, exposing it to the atmosphere.", - "container": "bag_plastic", - "menu_text": "Open bag", - "type": "transform" - } - }, - { - "id": "bag_meat_vac", - "type": "GENERIC", - "category": "food", - "name": "vacuum-packed meat slice", - "name_plural": "vacuum-packed meat slices", - "description": "This is a bag of vacuum packed meat slices in plastic packaging. Use to open and eat to enjoy.", - "weight": 240, - "volume": 1, - "price": 750, - "bashing": 8, - "material": [ "plastic", "flesh" ], - "symbol": "%", - "color": "red", - "use_action": { - "target": "meat_vac", - "msg": "You open the vacuum pack, exposing it to the atmosphere.", - "container": "bag_plastic", - "menu_text": "Open bag", - "type": "transform" - } - }, - { - "id": "bag_veggy_vac", - "type": "GENERIC", - "category": "food", - "name": "vacuum-packed veggy chunk", - "description": "This is a bag of vacuum packed vegetable slices in plastic packaging. Use to open and eat to enjoy.", - "weight": 242, - "volume": 1, - "price": 650, - "bashing": 8, - "cutting": 1, - "material": [ "plastic", "veggy" ], - "symbol": "%", - "color": "green", - "use_action": { - "target": "veggy_vac", - "msg": "You open the vacuum pack, exposing it to the atmosphere.", - "container": "bag_plastic", - "menu_text": "Open bag", - "type": "transform" - } - }, { "id": "banjo", "type": "TOOL", @@ -4115,7 +4014,7 @@ "location": "underbarrel", "mod_targets": [ "shotgun", "rifle", "smg", "crossbow" ], "dispersion_modifier": 10, - "mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE" ] ] ], + "mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE", "REACH_ATTACK" ] ] ], "min_skills": [ [ "weapon", 2 ], [ "melee", 1 ] ] }, "techniques": "RAPID", @@ -4180,7 +4079,7 @@ "location": "underbarrel", "mod_targets": [ "shotgun", "rifle" ], "dispersion_modifier": 10, - "mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE" ] ] ], + "mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE", "REACH_ATTACK" ] ] ], "min_skills": [ [ "weapon", 2 ], [ "melee", 1 ] ] }, "techniques": [ "RAPID", "WBLOCK_1" ], @@ -4581,6 +4480,7 @@ "color": "dark_gray", "qualities": [ [ "PRY", 1 ], [ "HAMMER", 1 ] ], "use_action": "CROWBAR", + "techniques": [ "WBLOCK_1" ], "flags": [ "BELT_CLIP" ] }, { @@ -5509,13 +5409,13 @@ "type": "GENERIC", "category": "weapons", "name": "awl pike", - "description": "This is a medieval weapon consisting of a wood shaft tipped with an iron spike. Though large and heavy compared to other spears, its accuracy and damage are unparalleled.", - "weight": 6000, + "description": "This is a medieval weapon consisting of a wood shaft tipped with an iron spike.", + "weight": 2500, "volume": 14, "price": 40000, - "to_hit": 2, - "bashing": 15, - "cutting": 45, + "to_hit": -2, + "bashing": 8, + "cutting": 25, "material": [ "iron", "wood" ], "symbol": "/", "color": "brown", @@ -7048,7 +6948,7 @@ "location": "underbarrel", "mod_targets": [ "shotgun", "rifle", "crossbow", "launcher" ], "dispersion_modifier": 20, - "mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE" ] ] ], + "mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE", "REACH_ATTACK" ] ] ], "min_skills": [ [ "weapon", 2 ], [ "melee", 2 ] ] }, "techniques": [ "WBLOCK_1", "RAPID" ], diff --git a/data/json/items/vehicle_parts.json b/data/json/items/vehicle_parts.json index 2060489137f22..fa3834759eb64 100644 --- a/data/json/items/vehicle_parts.json +++ b/data/json/items/vehicle_parts.json @@ -1221,7 +1221,7 @@ "looks_like": "cargo_rack", "material": "steel", "category": "veh_parts", - "weight": 80000, + "weight": 22000, "volume": 220, "capacity": 2000, "reliability": 10, diff --git a/data/json/mapgen/bar.json b/data/json/mapgen/bar.json index 38b5a2da9efbb..cf4ec08d286c5 100644 --- a/data/json/mapgen/bar.json +++ b/data/json/mapgen/bar.json @@ -213,5 +213,98 @@ { "item": "bar_bathroom", "x": [ 2, 4 ], "y": [ 21, 22 ], "chance": 30, "repeat": [ 1, 2 ] } ] } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "bar" ], + "weight": 250, + "object": { + "fill_ter": "t_floor", + "rows": [ + " ,___,___,___, ~~~ ", + " ,___,___,___,~~~~~~ ", + " ,___,___,___, ~~~ ", + " ,___,___,___,|-'-+-'-| ", + " ,___,___,___,|.......| ", + " |-'---'---'--|Q...xx.| ", + " |BBB|BBB|BBBB|Q...xx.| ", + " |##B|B##|B##B|Q...xx.| ", + " |.................xx.| ", + " |X...q.q.q...........| ", + " |X...uuuuu....|.q.q.q| ", + "||...-------+--|lccccc| ", + "|o.............|llllll| ", + "|o.BB......BBBB|$$$lll| ", + "|o.##C..o|C...B|----D-| ", + "|o.BB.C.o|.....+iis|l{| ", + "|o...B#Bo|-!O!-|+|+|l{| ", + "|o...B#Bo|_!!!_|t|t|ll| ", + "|o....C.o|dd___|---|ll| ", + "|--BBBB--|dd___Dlllll{| ", + " |-''-|__dd___|&&&ll{| ", + " F_______|------| ", + " f_______| ", + " FFFFFFFFF " + ], + "terrain": { + "_": "t_pavement", + "~": "t_sidewalk", + " ": [ "t_grass", "t_grass", "t_dirt", "t_shrub", "t_grass", "t_dirt" ], + "&": "t_linoleum_gray", + "'": "t_window_domestic", + "+": "t_door_c", + ",": "t_pavement_y", + "-": "t_wall", + ".": "t_floor", + "u": "t_floor", + "@": "t_console_broken", + "D": "t_door_locked", + "c": "t_linoleum_gray", + "d": "t_pavement", + "O": "t_rock_floor", + "F": "t_chainfence", + "f": "t_chaingate_c", + "l": "t_linoleum_gray", + "i": "t_linoleum_gray", + "s": "t_linoleum_gray", + "t": "t_linoleum_gray", + "{": "t_linoleum_gray", + "q": "t_floor", + "|": "t_wall", + "!": "t_brick_wall" + }, + "furniture": { + "#": "f_table", + "$": "f_glass_fridge", + "&": "f_fridge", + "B": "f_sofa", + "C": "f_armchair", + "T": "f_trashcan", + "c": "f_counter", + "u": "f_counter", + "d": "f_dumpster", + "s": "f_sink", + "Q": "f_arcade_machine", + "X": "f_pinball_machine", + "x": "f_pool_table", + "o": "f_bookcase", + "O": "f_fireplace", + "q": "f_stool", + "{": "f_rack" + }, + "toilets": { "t": { } }, + "items": { + "o": { "item": "novels", "chance": 20 }, + "d": { "item": "bar_trash", "chance": 35 }, + "#": { "item": "bar_table", "chance": 35, "repeat": [ 2, 3 ] }, + "c": { "item": "bar_alcohol", "chance": 50, "repeat": [ 2, 3 ] }, + "u": { "item": "bar_alcohol", "chance": 50, "repeat": [ 2, 3 ] }, + "i": { "item": "bar_bathroom", "chance": 35, "repeat": [ 1, 2 ] }, + "$": { "item": "bar_fridge", "chance": 50, "repeat": [ 1, 2 ] }, + "&": { "item": "fridgesnacks", "chance": 40, "repeat": [ 1, 2 ] }, + "{": { "item": "bar_alcohol", "chance": 65, "repeat": [ 2, 3 ] } + } + } } ] diff --git a/data/json/mapgen/butcher.json b/data/json/mapgen/butcher.json index cf1bb65891a39..aaf6497d11d1e 100644 --- a/data/json/mapgen/butcher.json +++ b/data/json/mapgen/butcher.json @@ -108,7 +108,7 @@ [ "hotdogs_frozen", 6 ], [ "sausage", 4 ], [ "sweet_sausage", 2 ], - [ "bag_meat_vac", 2 ], + [ "meat_salted", 2 ], [ "meat_canned", 2 ], [ "offal_canned", 2 ], [ "meat_smoked", 2 ], diff --git a/data/json/mapgen/dojo.json b/data/json/mapgen/dojo.json index 969d851f90070..6d94301ed934e 100644 --- a/data/json/mapgen/dojo.json +++ b/data/json/mapgen/dojo.json @@ -108,7 +108,7 @@ " qqqqqqqqqqqqqqqqqqqq " ], "terrain": { - " ": "t_grass", + " ": ["t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt"], "#": "t_floor", "'": "t_door_c", "+": "t_door_glass_c", @@ -147,5 +147,116 @@ } ], "flags": [ "SIDEWALK" ] + }, + { + "id": "dojo", + "type": "overmap_terrain", + "name": "dojo", + "sym": 94, + "color": "i_light_cyan", + "see_cost": 5, + "mondensity": 2, + "extras": "build", + "mapgen": [ + { + "method": "json", + "weight": 1000, + "object": { + "fill_ter": "t_grass", + "rows": [ + " sss ", + " |||||||||!s!||||||||| ", + " |LBB|S,S|sss|S,S|BBL| ", + " |L,B|S,S|sss|S,S|B,L| ", + " |L,B||'||sss||'||B,L| ", + " |L,,,,,,|sss|,,,,,,L| ", + " ||||'||||sss||||'|||| ", + " !sssssssssssssssssss! ", + " !sssssssssssssssssss! ", + " !3z z2s#######s4z 1 ! ", + " ! 1 4 s#######s2 3z2! ", + " !z z s#######sz z! ", + " !1 z3 s#######s 2z3 ! ", + " !2 4z s#######s41 z! ", + " ! z 1s#######s 3z 1! ", + " !z 1z4s#######s 4 z ! ", + " ||OO||sssssssss||OO|| ", + " |..h.|||||'||||||.@@| ", + " |.DDD.|....|hth.'..d| ", + " |.h.h.'....'....||'|| ", + " |.....'....',,,,',,T| ", + " |bbXbb|....|eEcc|ULS| ", + " ||||||||||||||||||||| ", + " " + ], + "terrain": { + " ": ["t_grass", "t_grass", "t_grass", "t_dirt"], + "z": ["t_tree", "t_tree_young", "t_shrub", "t_grass" ], + "#": "t_dirt", + "'": "t_door_c", + ".": "t_floor", + ",": "t_linoleum_white", + "B": "t_linoleum_white", + "h": "t_floor", + "t": "t_floor", + "@": "t_floor", + "C": "t_floor", + "D": "t_floor", + "d": "t_floor", + "c": "t_linoleum_white", + "E": "t_linoleum_white", + "e": "t_linoleum_white", + "U": "t_linoleum_white", + "L": "t_linoleum_white", + "S": "t_linoleum_white", + "T": "t_linoleum_white", + "O": "t_window_domestic", + "X": "t_floor", + "g": "t_wall_glass", + "|": "t_wall", + "!": "t_wall_log", + "s": "t_sidewalk", + "1": "t_grass", + "2": "t_grass", + "3": "t_grass", + "4": "t_grass" + }, + "furniture": { + "#": "f_tatami", + "b": "f_bookcase", + "d": "f_dresser", + "e": "f_fridge", + "E": "f_woodstove", + "c": "f_cupboard", + "t": "f_table", + "h": "f_chair", + "@": "f_bed", + "B": "f_bench", + "C": "f_chair", + "D": "f_desk", + "L": "f_locker", + "U": "f_sink", + "S": "f_shower", + "X": "f_rack", + "1": "f_dandelion", + "2": "f_dahlia", + "3": "f_bluebell", + "4": "f_lily" + }, + "toilets": { "T": {} }, + "items": { + "b": { "item": "dojo_manuals", "chance": 45, "repeat": [ 1, 2 ] }, + "X": { "item": "judo_belts", "chance": 100 }, + "L": { "item": "gi", "chance": 80, "repeat": [ 5, 8 ] }, + "d": { "item": "dresser", "chance": 40, "repeat": [ 1, 3 ] }, + "e": { "item": "fridge", "chance": 70, "repeat": [ 1, 3 ] }, + "E": { "item": "oven", "chance": 75, "repeat": [ 1, 2 ] }, + "@": { "item": "bed", "chance": 20, "repeat": [ 1, 2 ] }, + "c": { "item": "cannedfood", "chance": 40, "repeat": [ 1, 2 ] } + } + } + } + ], + "flags": [ "SIDEWALK" ] } ] diff --git a/data/json/mapgen/evac_center.json b/data/json/mapgen/evac_center.json index 96e0698e1833e..754e63ad34f78 100644 --- a/data/json/mapgen/evac_center.json +++ b/data/json/mapgen/evac_center.json @@ -694,7 +694,25 @@ { "item": "homebooks", "x": [ 14, 16 ], "y": 19, "chance": 80, "repeat": [ 1, 2 ] }, { "item": "textbooks", "x": [ 14, 16 ], "y": 19, "chance": 20 } ], - "place_npcs": [ { "class": "scavenger_merc", "x": 8, "y": 5 }, { "class": "old_guard_rep", "x": 19, "y": 7 } ] + "place_npcs": [ + { + "class": "scavenger_merc", + "x": 8, + "y": 5 + }, + + { + "class": "old_guard_rep", + "x": 19, + "y": 7 + }, + { + "class": "arsonist", + "x": 11, + "y": 7 + + } + ] } }, { @@ -732,7 +750,6 @@ ], "palettes": [ "evac_center" ], "place_npcs": [ - { "class": "arsonist", "x": 5, "y": 0 }, { "class": "evac_merchant", "x": 23, "y": 0 }, { "class": "science_rep", "x": 0, "y": 0 } ] diff --git a/data/json/mapgen/farm_dairy.json b/data/json/mapgen/farm_dairy.json index 0369277636c09..7d685c021a530 100644 --- a/data/json/mapgen/farm_dairy.json +++ b/data/json/mapgen/farm_dairy.json @@ -6,7 +6,7 @@ "is_safe": true, "monsters": [ { "monster": "mon_cow", "freq": 100, "cost_multiplier": 10, "ends": 168 }, - { "monster": "mon_cow", "freq": 50, "cost_multiplier": 5, "starts": 336 } + { "monster": "mon_cow", "freq": 50, "cost_multiplier": 5, "starts": 168 } ] }, { diff --git a/data/json/mapgen/gym.json b/data/json/mapgen/gym.json index 21385e0468ece..54eaaf6c62d6e 100644 --- a/data/json/mapgen/gym.json +++ b/data/json/mapgen/gym.json @@ -79,7 +79,7 @@ "+": "t_door_c", ",": "t_sidewalk", "-": "t_wall", - ".": "t_grass", + ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_shrub", "t_dirt" ], "5": "t_wall_glass", "8": "t_wall_glass", "=": "t_door_glass_c", @@ -104,5 +104,91 @@ } ], "flags": [ "SIDEWALK" ] + }, + { + "id": "gym_fitness", + "type": "overmap_terrain", + "name": "fitness gym", + "sym": 94, + "color": "i_light_cyan", + "see_cost": 5, + "mondensity": 2, + "extras": "build", + "mapgen": [ + { + "method": "json", + "weight": 500, + "object": { + "rows": [ + "..............|55===55|.", + "..............|c c|.", + "..5555555555|||c ### c|.", + "..5 |c # c|.", + "..5 @ @ @ c ||+|||+||.", + "..5 c 5 |:::|.", + "..5 @ @ @ c = |:::|.", + "..| 5 |:::|.", + "..| ccccc ||||||+||.", + "..| H|OC:::CO|.", + "..| ! ! ! c H|OC:::CO|.", + "..| c |OC:::CO|.", + "..| ! ! ! c ||||||+||||.", + "..| |:+:::::+t|.", + ".|| ||||:|*|*|*|T|.", + ".|{ V V |::::|||||||||.", + ".|{ |:~~::::::::|..", + ".|{ V V 5:~~~~~~~~~:|..", + ".|{ =:~~~~~~~~~:|..", + ".|{ V V 5:~~~~~~~~~:5..", + ".|||||||||:~~~~~~~~~:5..", + ".........|:~~~~~~~~~:|..", + ".........|:::::::::::|..", + ".........|||5555555|||.." + ], + "terrain": { + " ": "t_floor", + "~": "t_water_pool", + "{": "t_floor", + "!": "t_floor", + "#": "t_floor", + "H": "t_floor", + ":": "t_linoleum_white", + "*": "t_linoleum_white", + "+": "t_door_c", + ",": "t_sidewalk", + ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_shrub", "t_dirt" ], + "5": "t_wall_glass", + "=": "t_door_glass_c", + "@": "t_floor", + "O": "t_linoleum_white", + "V": "t_floor", + "c": "t_floor", + "C": "t_linoleum_white", + "|": "t_wall", + "T": "t_linoleum_white", + "t": "t_linoleum_white" + }, + "furniture": { + "!": "f_ergometer", + "{": "f_bigmirror", + "#": "f_counter", + "H": "f_vending_c", + "&": "f_counter", + "*": "f_shower", + "@": "f_treadmill", + "O": "f_locker", + "V": "f_exercise", + "C": "f_bench", + "c": "f_bench", + "T": "f_toilet", + "t": "f_sink" + }, + "place_monsters": [ { "monster": "GROUP_MAPGEN_POOL", "x": [ 12, 19 ], "y": [ 18, 21 ] } ], + "toilets": { "T": { } }, + "items": { "O": { "item": "gym", "chance": 80 }, "H": { "item": "vending_drink", "chance": 75, "repeat": [ 4, 8 ] } } + } + } + ], + "flags": [ "SIDEWALK" ] } ] diff --git a/data/json/mapgen/laundromat.json b/data/json/mapgen/laundromat.json index e39eb9d4fb096..66e64e1c71d1b 100644 --- a/data/json/mapgen/laundromat.json +++ b/data/json/mapgen/laundromat.json @@ -29,57 +29,57 @@ "weight": 400, "object": { "rows": [ - "ssssssssssssssssssssssss", - "ssssssssssssssssssssssss", - "ssssssssssssssssssssssss", - "ssssssssssssssssssssssss", - "_|===========-[[-===|___", - "_|^..........^..^...|___", - "_|t..#.............&|___", - "_|C.Bt.............D|___", - "_|ttt#....rrrr.....D|___", - "_|WWWWWWWWWWWt.....D|___", - "_|.................D|%__", - "_|WWWWWWWWWWWt.....D|%__", - "_|.................D|___", - "_|WWWWWWWWWWWt.....D|___", - "_|t................D|___", - "_|c...DDD####t.....D|___", - "_|c...-------......|--|_", - "_|c...WWWWWWWt.....|lS|_", - "_|6................+lT|_", - "_|6...rrrrrrrr.....|--|_", - "_|V...rrrrrrrr.....|lS|_", - "_|V................+lT|_", - "_|------------++------|_", - "________________________" + "s______________________s", + "s______________________s", + "s______________________s", + "s______________________s", + "s|===========-[[-===|sss", + "s|^..........^..^...|sss", + "s|t..#.............&|sss", + "s|C.Bt.............D|sss", + "s|ttt#....rrrr.....D|sss", + "s|WWWWWWWWWWWt.....D|sss", + "s|.................D|%ss", + "s|WWWWWWWWWWWt.....D|%ss", + "s|.................D|sss", + "s|WWWWWWWWWWWt.....D|sss", + "s|t................D|sss", + "s|c...DDD####t.....D|sss", + "s|c...-------......|--|s", + "s|c...WWWWWWWt.....|lS|s", + "s|6................+lT|s", + "s|6...rrrrrrrr.....|--|s", + "s|V...rrrrrrrr.....|lS|s", + "s|V................+lT|s", + "s|------------++------|s", + "ssssssssssssssssssssssss" ], "terrain": { - "#": "t_floor", - "%": "t_pavement", - "&": "t_floor", + "#": "t_linoleum_white", + "%": "t_sidewalk", + "&": "t_linoleum_white", "+": "t_door_c", "-": "t_wall", ".": "t_linoleum_white", - "6": "t_floor", + "6": "t_linoleum_white", "=": "t_wall_glass", "A": "t_atm", "B": "t_linoleum_white", "C": "t_console_broken", - "D": "t_floor", + "D": "t_linoleum_white", "S": "t_linoleum_white", "T": "t_linoleum_white", - "V": "t_floor", - "W": "t_floor", + "V": "t_linoleum_white", + "W": "t_linoleum_white", "[": "t_door_glass_c", - "]": "t_floor", + "]": "t_linoleum_white", "^": "t_linoleum_white", "_": "t_pavement", - "c": "t_floor", + "c": "t_linoleum_white", "l": "t_linoleum_gray", - "r": "t_floor", + "r": "t_linoleum_white", "s": "t_sidewalk", - "t": "t_floor", + "t": "t_linoleum_white", "w": "t_linoleum_white", "y": "t_linoleum_white", "|": "t_wall", @@ -128,5 +128,129 @@ } ], "flags": [ "SIDEWALK" ] + }, + { + "id": "s_laundromat", + "type": "overmap_terrain", + "name": "laundromat", + "sym": 94, + "color": "white_white", + "see_cost": 5, + "mondensity": 2, + "extras": "build", + "mapgen": [ + { + "method": "json", + "weight": 400, + "object": { + "rows": [ + "________________ssssssss", + "________________sssddsss", + "________________ss ss", + "________________sd ds", + "-----______-----sd ds", + "________________ss ss", + "________________sssddsss", + "________________ssssssss", + "________________s|=[[=|s", + "s||===========||||....|s", + "s|W.^^.WW.^^.Wr.r|....|s", + "s|W.bb.WW.bb.Wr.r|...6|s", + "s|W.bb.WW.bb.Wr.r|V..6|s", + "s|W.bb.WW.bb.Wr.r|...6|s", + "s|W.bb.WW.bb.W........|s", + "s|W.^^.WW.^^.W......B.|s", + "s|..............#####C|s", + "s|..............#..B..|s", + "s|D.D||+|||+||........|s", + "s|D.D|S..|..S|.||||||||s", + "s|D.D|+|+|+|+|.|,,,,,}|s", + "s|DDD|T|T|T|T|.+,p,P,}|s", + "s|||||||||||||+|,p,Pp}|s", + "sssssssssssssss||||||||s" + + ], + "terrain": { + " ": ["t_grass", "t_grass", "t_dirt", "t_grass", "t_shrub", "t_tree_young"], + "#": "t_linoleum_white", + "P": "t_floor", + "p": "t_floor", + ",": "t_floor", + "}": "t_floor", + "%": "t_pavement", + "&": "t_linoleum_white", + "+": "t_door_c", + ".": "t_linoleum_white", + "6": "t_linoleum_white", + "=": "t_wall_glass", + "A": "t_atm", + "B": "t_linoleum_white", + "b": "t_linoleum_white", + "C": "t_console_broken", + "D": "t_linoleum_white", + "S": "t_linoleum_white", + "T": "t_linoleum_white", + "V": "t_linoleum_white", + "W": "t_linoleum_white", + "[": "t_door_glass_c", + "]": "t_linoleum_white", + "^": "t_linoleum_white", + "_": "t_pavement", + "-": "t_pavement_y", + "c": "t_linoleum_white", + "l": "t_linoleum_gray", + "r": "t_linoleum_white", + "d": "t_sidewalk", + "s": "t_sidewalk", + "t": "t_linoleum_white", + "w": "t_linoleum_white", + "y": "t_linoleum_white", + "|": "t_wall", + "~": "t_linoleum_white" + }, + "furniture": { + "#": "f_counter", + "}": "f_bookcase", + "P": "f_desk", + "p": "f_armchair", + "%": "f_trashcan", + "6": "f_arcade_machine", + "d": "f_bench", + "b": "f_bench", + "B": "f_stool", + "D": "f_dryer", + "S": "f_sink", + "T": "f_toilet", + "V": "f_vending_c", + "W": "f_washer", + "^": "f_indoor_plant", + "c": "f_chair", + "r": "f_rack", + "t": "f_table" + }, + "toilets": { "T": {} }, + "items": { + "W": { "item": "laundry", "chance": 40, "repeat": [ 2, 3 ] }, + "D": { "item": "laundry", "chance": 25, "repeat": [ 1, 2 ] }, + "r": { "item": "laundromat_bleach", "chance": 30, "repeat": [ 4, 8 ] }, + "b": { "item": "magazines", "chance": 30, "repeat": [ 1, 2 ] }, + "}": { "item": "novels", "chance": 30, "repeat": [ 1, 2 ] }, + "V": { "item": "vending_drink", "chance": 75, "repeat": [ 4, 8 ] }, + "%": { "item": "trash", "chance": 80 }, + "#": { "item": "behindcounter", "chance": 20 } + }, + "place_vehicles": [ + { "vehicle": "shopping_cart", "x": 14, "y": 9, "chance": 10 }, + { "vehicle": "shopping_cart", "x": 14, "y": 13, "chance": 10 }, + { "vehicle": "shopping_cart", "x": 15, "y": 12, "chance": 10 }, + { "vehicle": "shopping_cart", "x": 17, "y": 18, "chance": 10 }, + { "vehicle": "shopping_cart", "x": 17, "y": 21, "chance": 10 }, + { "vehicle": "car", "x": [3, 10], "y": [2, 3], "chance": 20 } + ] + } + } + + ], + "flags": [ "SIDEWALK" ] } ] diff --git a/data/json/mapgen/pizza_parlor.json b/data/json/mapgen/pizza_parlor.json index 55a56176c3717..2231fe7d56339 100644 --- a/data/json/mapgen/pizza_parlor.json +++ b/data/json/mapgen/pizza_parlor.json @@ -241,5 +241,98 @@ { "item": "pizza_trash", "x": 1, "y": [ 15, 16 ], "chance": 50, "repeat": [ 7, 9 ] } ] } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "s_pizza_parlor" ], + "weight": 1000, + "object": { + "//": "Default terrain is floor but some things are outside (tables)", + "fill_ter": "t_floor", + "rows": [ + " ************* SS ", + " *SSSSSSSSSSS* SS ", + " SSSSSSbTbSSSbTbSSSSSSS", + " S *SbTbSSSbTbS|gGGg|", + " SMM *SSSSSSSSSSS|P..P|", + " SMM|||ggggggg||||....|", + " SMM|PHTH.C.HTHP.....C|", + " S g............R.HTB|", + "mmSSSG.RRRRRRRR...R.HTB|", + "mmSSSGC...........R.HTB|", + " SbbgTH.TTTT.....R.HTB|", + " STT|TH.BBBB.........P|", + " Sbb|||||||||...|||||||", + " S |Fl{|$l@...QXQXQX|", + " S |FlO|$l#........Q|", + " S |FlO|$l#........X|", + " S |Fl{|ll#..CRRRRRR|", + " S |llllll@...H.H.H.|", + " S |#s#llll...TTTTTB|", + "|...| |||||+||P..BBBBBB|", + "|...| |LLlL|||||||||||", + "|...DSSSDlllL| ", + "|...| |||||| ", + "|...| " + ], + "terrain": { + " ": ["t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_grass", "t_grass", "t_dirt", "t_grass", "t_grass", "t_shrub" ], + "S": "t_sidewalk", + "*": "t_shrub", + "#": "t_linoleum_white", + "D": "t_door_locked", + "+": "t_door_c", + ".": "t_floor", + "b": "t_sidewalk", + "@": "t_console_broken", + "F": "t_linoleum_white", + "G": "t_door_glass_c", + "L": "t_linoleum_white", + "O": "t_linoleum_white", + "R": "t_railing_v", + "c": "t_concrete", + "f": "t_fencegate_c", + "m": "t_sandbox", + "M": "t_monkey_bars", + "g": "t_wall_glass", + "l": "t_linoleum_gray", + "s": "t_linoleum_gray", + "t": "t_linoleum_gray", + "w": "t_linoleum_white", + "{": "t_linoleum_white", + "|": "t_wall" + }, + "furniture": { + "#": "f_counter", + "b": "f_bench", + "B": "f_sofa", + "C": "f_trashcan", + "Q": "f_arcade_machine", + "X": "f_pinball_machine", + "$": "f_glass_fridge", + "F": "f_fridge", + "H": "f_chair", + "L": "f_locker", + "O": "f_oven", + "P": "f_indoor_plant", + "T": "f_table", + "U": "f_chair", + "s": "f_sink", + "{": "f_rack" + }, + "items": { + "C": { "item": "pizza_trash", "chance": 50, "repeat": [ 7, 9 ] }, + "F": { "item": "pizza_fridge", "chance": 40, "repeat": [ 9, 10 ] }, + "{": { "item": "pizza_kitchen", "chance": 42, "repeat": [ 7, 9 ] }, + "L": { "item": "pizza_locker", "chance": 55, "repeat": [ 5, 6 ] }, + "$": { "item": "pizza_display", "chance": 45, "repeat": [ 3, 4 ] }, + "T": { "item": "pizza_table", "chance": 25 }, + "c": { "item": "pizza_soda", "chance": 25 } + }, + "place_vehicles": [ + { "vehicle": "bicycle", "x": [ 1, 3 ], "y": [ 20, 23 ], "chance": 35, "status": 0, "rotation": 270 } + ] + } } ] diff --git a/data/json/mapgen/railroad/railroad_level_station.json b/data/json/mapgen/railroad/railroad_level_station.json new file mode 100644 index 0000000000000..904c3f9235553 --- /dev/null +++ b/data/json/mapgen/railroad/railroad_level_station.json @@ -0,0 +1,208 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "railroad_station_0_1", "railroad_station_1_1", "railroad_station_2_1" ], + [ "railroad_station_0_2", "railroad_station_1_2", "railroad_station_2_2" ], + [ "railroad_station_0_3", "railroad_station_1_3", "railroad_station_2_3" ], + [ "railroad_station_0_4", "railroad_station_1_4", "railroad_station_2_4" ] + ], + "object": { + "fill_ter": "t_dirt", + "rows": [ + " ^X^^^X^rrrrrrrr^X^^^X^rrrrrrrrrr###########$$$$$$$$................$$ ", + " -x---x-r[bbbb[r-x---x-r[bbbb[___#sss#T#T#T#]].............::.......]$ ", + " ^X^^^X^r[[[[[[r^X^^^X^r[[[[[[__8#[[[#+#+#+#]].............::.......]$ ", + " ^X^^^X^rI[[[[Ir^X^^^X^rI[[[[I__9#![[[[[[[[#]].............::.......]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[__&##+########]]......................]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_____________r]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_____________r]].............::.......]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[___rrrrrrrrrrr]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[___]]]]]]]]]]]]]::::::................]$ ", + " ^X^^^X^_[[>>[[_^X^^^X^_[[>>[[___]]]]]]]]]]]]].............::.......]$ ", + " -x---x-_[[>>[[_-x---x-_[[>>[[___]]]]]]]]]]]]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[___]]]]]]]]]]]]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[___rrrrrrrrrrr]]......................]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[_____________r]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_____________r]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_____________r]].............::.......]$ ", + " -x---x-_I[[[[I_-x---x-_I[[[[I_____________r]]::::::................]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_######O#O#O##]].............::.......]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_#d[l#[C[C[C[#]].............::.......]$ ", + " -x---x-_[b[[b[_-x---x-_[b[[b[_Odc[#[c[c[c[#]].............::.......]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_#d[[+[[[[[[[+]]......................]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_#####+#####+#]].............::.......]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[_+[[[[[#[T#s[#]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_+[[[[[#[s#T[#]].............::.......]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_#![[[[#+#####]]::::::................]$ ", + " -x---x-_[b[[b[_-x---x-_[b[[b[_O[[[[[[[[[[[O]].............::.......]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_#bbbb[[[bbbb#]].............::.......]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_O[[[[[[[[[[[O]].............::.......]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[_#bbbb[[[bbbb#]]......................]$ ", + " ^X^^^X^_I[[[[I_^X^^^X^_I[[[[I_O[[[[[[[[[[[O]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_#bbbb[[[bbbb#]].............::.......]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[_O[[[[[[[[[[[O]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_#bbbb[[[bbbb#]]::::::................]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_O[[[[[[[[[[[O]].............::.......]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[_#![[[[[[[[[!#]].............::.......]$ ", + " ^X^^^X^_[[>>[[_^X^^^X^_[[>>[[_+[[[[[[[[[[[+]].............::.......]$ ", + " ^X^^^X^_[[>>[[_^X^^^X^_[[>>[[_+[[[[[[[[[[[+]]......................]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[_#[[[[[[[[[[[#]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_O[[[[[[[[[[[O]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_#6[[[[[[[[[7#]].............::.......]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[_#7[[[[[[[[[6#]]::::::................]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_O[[[[[[[[[[[O]].............::.......]$ ", + " ^X^^^X^_I[[[[I_^X^^^X^_I[[[[I_#[[[[[[[[[[[#]].............::.......]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[_##O#O#O#O#O##]].............::.......]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_#[C[C[C[C[C[#]]......................]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_#[c[c[c[c[c[#]].............::.......]$ ", + " -x---x-_[b[[b[_-x---x-_[b[[b[_#[[[[[[[[[[[+]].............::.......]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_######+######]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_#Ts#bb[lllll#]]::::::................]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[_#[[+[[[[[[[[+]].............::.......]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_######+######]].............::.......]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_#[[[[[[[[[[[+]].............::.......]$ ", + " -x---x-_[b[[b[_-x---x-_[b[[b[_#[c[c[c[c[c[#]]......................]$ ", + " ^X^^^X^_[b[[b[_^X^^^X^_[b[[b[_#[C[C[C[C[C[#]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_##O#O#O#O#O##]].............::.......]$ ", + " -x---x-_I[[[[I_-x---x-_I[[[[I_____________r]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_____________r]]::::::................]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_____________r]].............::.......]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[_____________r]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[___rrrrrrrrrrr]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[___]]]]]]]]]]]]]......................]$ ", + " -x---x-_[[>>[[_-x---x-_[[>>[[___]]]]]]]]]]]]].............::.......]$ ", + " ^X^^^X^_[[>>[[_^X^^^X^_[[>>[[___]]]]]]]]]]]]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[___]]]]]]]]]]]]].............::.......]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[___rrrrrrrrrrr]]::::::................]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_____________r]].............::.......]$ ", + " ^X^^^X^_[[[[[[_^X^^^X^_[[[[[[_____________r]].............::.......]$ ", + " -x---x-_[[[[[[_-x---x-_[[[[[[__&##+########]].............::.......]$ ", + " ^X^^^X^rI[[[[Ir^X^^^X^rI[[[[I__9#![[[[[[[[#]]......................]$ ", + " ^X^^^X^r[[[[[[r^X^^^X^r[[[[[[__8#[[[#+#+#+#]].............::.......]$ ", + " -x---x-r[bbbb[r-x---x-r[bbbb[___#sss#T#T#T#]].............::.......]$ ", + " ^X^^^X^rrrrrrrr^X^^^X^rrrrrrrrrr###########]].............::.......]$ ", + " ^X^^^X^ ^X^^^X^ $]]::::::................]$ ", + " -x---x- -x---x- $]].............::.......]$ ", + " ^X^^^X^ ^X^^^X^ $]].............::.......]$ ", + " ^X^^^X^ ^X^^^X^ $]].............::.......]$ ", + " -x---x- -x---x- $]]......................]$ ", + " ^X^^^X^ ^X^^^X^ $]].............::.......]$ ", + " ^X^^^X^ ^X^^^X^ $]].............::.......]$ ", + " -x---x- -x---x- $]].............::.......]$ ", + " ^X^^^X^ ^X^^^X^ $]]::::::................]$ ", + " ^X^^^X^ ^X^^^X^ $]].............::.......]$ ", + " -x---x- -x---x- $]].............::.......]$ ", + " ^X^^^X^ ^X^^^X^ $]].............::.......]$ ", + " ^X^^^X^ ^X^^^X^ $]]......................]$ ", + " -x---x- -x---x- $]].............::.......]$ ", + " ^X^^^X^ ^X^^^X^ $]].............::.......]$ ", + " ^X^^^X^ ^X^^^X^ $]].............::.......]$ ", + " -x---x- -x---x- $]]]]]]]]................]$ ", + " ^X^^^X^ ^X^^^X^ ##+####]].......::.......]$ ", + " ^X^^^X^ ^X^^^X^ #l[[ff#]].......::.......]$ ", + " -x---x- -x---x- #l[[[[O]].......::.......]$ ", + " ^X^^^X^ ^X^^^X^ ##+#[d#]]................]$ ", + " ^X^^^X^ ^X^^^X^ #s[#cdO]].......::.......]$ ", + " -x---x- -x---x- #T[#[d#]].......::.......]$ ", + " ^X^^^X^ ^X^^^X^ #######$$.......::.......$$ " + ], + "palettes": [ "railroad", "railroad_station" ], + "vendingmachines": { + "6": { "item_group": "vending_drink" }, + "7": { "item_group": "vending_food" }, + "8": { "item_group": "vending_drink" }, + "9": { "item_group": "vending_food" } + } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "railroad_station_under_0_1", "railroad_station_under_1_1" ], + [ "railroad_station_under_0_2", "railroad_station_under_1_2" ], + [ "railroad_station_under_0_3", "railroad_station_under_1_3" ] + ], + "weight": 100, + "object": { + "fill_ter": "t_rock", + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ##################### ", + " #___________________# ", + " #_<<_____________<<_# ", + " #_<<_____________<<_# ", + " #___________________# ", + " ########__I__######## ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #__I__# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #__I__# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " ########__I__######## ", + " #___________________# ", + " #_<<_____________<<_# ", + " #_<<_____________<<_# ", + " #___________________# ", + " ########__I__######## ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #__I__# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #__I__# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " #_____# ", + " ########__I__######## ", + " #___________________# ", + " #_<<_____________<<_# ", + " #_<<_____________<<_# ", + " #___________________# ", + " ##################### ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "railroad_station_under" ] + } + } +] diff --git a/data/json/mapgen/ranch_camp.json b/data/json/mapgen/ranch_camp.json index 9df9027d87fae..91871cd834fd8 100644 --- a/data/json/mapgen/ranch_camp.json +++ b/data/json/mapgen/ranch_camp.json @@ -32,70 +32,7 @@ "..%.....................", "..%....................." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -131,70 +68,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -230,70 +104,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -329,70 +140,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -428,70 +176,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -527,70 +212,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -626,70 +248,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -725,70 +284,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -824,70 +320,7 @@ ".....................%..", ".....................%.." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -923,70 +356,7 @@ "..%.....................", "..%....................." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -1022,70 +392,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -1121,70 +428,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -1220,70 +464,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -1319,70 +500,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -1418,70 +536,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -1517,70 +572,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -1616,70 +608,7 @@ "....////~~//............", "....../////............." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -1715,70 +644,7 @@ ".....................%..", ".....................%.." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -1814,70 +680,7 @@ "..%.....................", "..%....................." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -1913,70 +716,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -2012,70 +752,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -2111,70 +788,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -2210,70 +824,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -2309,70 +860,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -2408,70 +896,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -2507,70 +932,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -2606,70 +968,7 @@ ".....................%..", ".....................%.." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -2705,70 +1004,7 @@ "..%.....................", "..%....................." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -2804,70 +1040,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -2903,70 +1076,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -3002,70 +1112,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -3101,70 +1148,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -3200,70 +1184,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -3299,70 +1220,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -3398,70 +1256,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -3497,70 +1292,7 @@ ".....................%..", ".....................%.." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -3596,70 +1328,7 @@ "..%.....................", "..%....................." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -3695,70 +1364,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -3794,70 +1400,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -3893,70 +1436,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -3992,70 +1472,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -4091,70 +1508,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -4190,70 +1544,7 @@ "..x.........x...........", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -4289,70 +1580,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -4388,70 +1616,7 @@ ".....................%..", ".....................%.." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -4487,70 +1652,7 @@ "..%.....................", "..%....................." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -4586,70 +1688,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -4685,70 +1724,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -4784,70 +1760,7 @@ "........x.....x.........", "........xxxxxxx........." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -4883,70 +1796,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -4982,70 +1832,7 @@ "..............xxxxxx....", "x.............x........." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -5081,70 +1868,7 @@ "..x...x.x...x...........", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -5180,70 +1904,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -5279,70 +1940,7 @@ ".....................%..", ".....................%.." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -5378,70 +1976,7 @@ "..%.....................", "..%....................." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -5477,70 +2012,7 @@ "............./..////////", ".................///////" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -5558,7 +2030,7 @@ "...|--|..WWWWwWWWwWWW...", ".|-|;;|-|W;;;;rrr;;;W...", "||;;;;;;||H;;;;;;;;rW...", - "|;;;;;;;;G;;;;;;;;;rW...", + "|;;;;;;;;A;;;;;;;;;rW...", "||;;;;;;||H;;;;;;;;rW...", ".|-|;;|-|W;;;;;;;;;;w...", "...|--|..W;;;;;;;5;;W...", @@ -5576,74 +2048,8 @@ "////////////////////////", "//////////////////////%%" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall_metal", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "G": "t_bars", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall_metal", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - }, - "items": { - "r": { "item": "farming_tools", "chance": 30 } - } + "palettes": [ "ranch_camp" ], + "items": { "r": { "item": "farming_tools", "chance": 30 } } } }, { @@ -5679,70 +2085,7 @@ "........................", "%%%%%%%%%%%%%%%%%%%%%%%%" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -5778,70 +2121,7 @@ ".........../............", "%%%%%%%%%%%%%%%%%%%%%%%%" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -5877,70 +2157,7 @@ "........................", "%%%....................." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -5976,70 +2193,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -6075,70 +2229,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -6174,70 +2265,7 @@ ".....................%..", ".....................%.." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -6273,70 +2301,7 @@ "..%.....................", "..%....................." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -6372,79 +2337,14 @@ ".............//.W;;;;V;;", ".............../W;;;;W;;" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, + "palettes": [ "ranch_camp" ], "place_item": [ { "item": "cattlefodder", "x": [ 17, 20 ], "y": [ 1, 5 ], "amount": [ 0, 2 ] }, { "item": "cattlefodder", "x": [ 17, 20 ], "y": [ 7, 11 ], "amount": [ 0, 2 ] }, { "item": "cattlefodder", "x": [ 17, 20 ], "y": [ 13, 17 ], "amount": [ 0, 2 ] }, { "item": "cattlefodder", "x": [ 17, 20 ], "y": [ 19, 23 ], "amount": [ 0, 2 ] } ], - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - }, - "items": { - ";": { "item": "farming_tools", "chance": 1 } - } + "items": { ";": { "item": "farming_tools", "chance": 1 } } } }, { @@ -6480,51 +2380,7 @@ ";;V;;;;W;;;;V;;;;V;;;;W.", ";;W;;;;W;;;;W;;;;W;;;;W." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, + "palettes": [ "ranch_camp" ], "place_item": [ { "item": "cattlefodder", "x": [ 3, 6 ], "y": [ 1, 5 ], "amount": [ 0, 2 ] }, { "item": "cattlefodder", "x": [ 8, 11 ], "y": [ 1, 5 ], "amount": [ 0, 2 ] }, @@ -6537,28 +2393,7 @@ { "item": "cattlefodder", "x": [ 3, 6 ], "y": [ 11, 13 ], "amount": [ 0, 1 ] }, { "item": "cattlefodder", "x": [ 8, 11 ], "y": [ 11, 13 ], "amount": [ 0, 1 ] } ], - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - }, - "items": { - ";": { "item": "farming_tools", "chance": 1 } - } + "items": { ";": { "item": "farming_tools", "chance": 1 } } } }, { @@ -6594,76 +2429,9 @@ "..///.WWW=========WWW...", "....//////////////5....." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - }, - "items": { - "r": { "item": "hardware", "chance": 50 } - }, - "place_vehicles": [ - { "vehicle": "farm_vehicles", "x": 13, "y": 17, "chance": 100, "rotation": 180 } - ] + "palettes": [ "ranch_camp" ], + "items": { "r": { "item": "hardware", "chance": 50 } }, + "place_vehicles": [ { "vehicle": "farm_vehicles", "x": 13, "y": 17, "chance": 100, "rotation": 180 } ] } }, { @@ -6699,75 +2467,8 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "E": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "E": "f_bookcase", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - }, - "toilets": { - "t": {} - }, + "palettes": [ "ranch_camp" ], + "toilets": { "t": { } }, "items": { "@": { "item": "bed", "chance": 60 }, "E": { "item": "homebooks", "chance": 50 }, @@ -6813,70 +2514,7 @@ "..%.....................", "..%....................." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -6912,70 +2550,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -7011,70 +2586,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -7110,70 +2622,7 @@ ".....................%..", ".....................%.." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -7209,70 +2658,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -7308,70 +2694,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -7385,13 +2708,13 @@ ";;WWWWWWWWWWW;;;;WWWWWW.", "..//.....////..//./...%.", "/.../...//...///.././.%/", - "//./.././.../.....///.y5", - "..../.../../../....//.=.", - "./././././.././/../...=.", - ".///.../.....././////.=.", - "/.//...../..../...///.=.", - "...././..../....././..=.", - "......./../.././......=.", + "//./.././.../.....///.y6", + "..../.../../../....//.G.", + "./././././.././/../...G.", + ".///.../.....././////.G.", + "/.//...../..../...///.G.", + "...././..../....././..G.", + "......./../.././......G.", "........./............y.", "......................%.", "......................%.", @@ -7407,71 +2730,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_palisade_pulley", - ";": "t_dirtfloor", - "=": "t_palisade_gate", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "y": "t_palisade", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -7507,70 +2766,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -7606,70 +2802,7 @@ "...________,,________...", "...__________________..." ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -7683,13 +2816,13 @@ "..%.....................", "..%.....................", "..%.....................", - ".5y.....................", - "./=.....................", - "..=.....................", - "/.=.....................", - "/.=.....................", - "./=.....................", - "..=.....................", + ".6y.....................", + "./G.....................", + "..G.....................", + "/.G.....................", + "/.G.....................", + "./G.....................", + "..G.....................", "..y.....................", "..%.....................", "..%.....................", @@ -7705,71 +2838,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_palisade_pulley", - ";": "t_dirtfloor", - "=": "t_palisade_gate", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "y": "t_palisade", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -7805,70 +2874,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -7904,70 +2910,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } }, { @@ -8003,70 +2946,7 @@ "........................", "........................" ], - "terrain": { - " ": "t_floor", - "#": "t_dirtmound", - "%": "t_fence_barbed", - "+": "t_door_c", - ",": "t_pavement_y", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_underbrush" ], - "/": "t_dirt", - "5": "t_barndoor", - ";": "t_dirtfloor", - "=": "t_door_metal_locked", - "B": "t_floor", - "C": "t_grass", - "D": "t_floor", - "H": "t_fence_h", - "L": "t_floor", - "O": "t_floor", - "S": "t_floor", - "T": "t_tree", - "V": "t_fence_v", - "W": "t_wall_wood", - "X": "t_grass", - "Y": "t_floor", - "Z": "t_floor", - "_": "t_pavement", - "`": "t_water_dp", - "b": "t_dirt", - "c": "t_floor", - "d": "t_floor", - "f": "t_floor", - "h": "t_floor", - "k": "t_floor", - "n": "t_floor", - "o": "t_column", - "r": "t_floor", - "s": "t_sidewalk", - "t": "t_floor", - "v": "t_window_domestic", - "w": "t_window_boarded", - "x": "t_grass", - "z": "t_floor", - "|": "t_wall", - "~": "t_water_sh" - }, - "furniture": { - "@": "f_bed", - "B": "f_bathtub", - "D": "f_trashcan", - "L": "f_locker", - "O": "f_oven", - "S": "f_sink", - "Y": "f_sofa", - "Z": "f_crate_o", - "c": "f_counter", - "d": "f_dresser", - "f": "f_fridge", - "h": "f_chair", - "k": "f_desk", - "n": "f_table", - "r": "f_rack", - "t": "f_toilet", - "z": "f_crate_c" - } + "palettes": [ "ranch_camp" ] } } ] diff --git a/data/json/mapgen/restaurant_fast.json b/data/json/mapgen/restaurant_fast.json index 00c9acdd94fb7..6a29aa21162f0 100644 --- a/data/json/mapgen/restaurant_fast.json +++ b/data/json/mapgen/restaurant_fast.json @@ -193,5 +193,96 @@ { "monster": "GROUP_ROACH", "x": [ 7, 19 ], "y": 19, "chance": 20 } ] } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "s_restaurant_fast" ], + "weight": 250, + "object": { + "fill_ter": "t_floor", + "rows": [ + "____,,,,,#ssssssssssssss", + "_________#ss|555++++555|", + "_________#ss5.HH.HH..hh|", + "_________#ss5.TT.TT..Th|", + "____,,,,,#ss5.HH.HH..Th|", + "_________#ss5........hh|", + "_________#ss|||||++|||||", + "_________#ss|.......hhh|", + "____,,,,,#ss|HH.HH...Th|", + "_________#ss5TT.TT...Th|", + "_________#ss5HH.HH..||||", + "_________#ss5.......hhh|", + "____,,,,,#ss|||||....Th|", + "ssssssssssss|hhh.....Th|", + "ssssssssssss|hTT....hhh|", + "||||||||xo|||hTT..||||||", + "|ewwwwwwwwwT......|S=tP|", + "|ewrrwcScwwx......t==|||", + "|ewrrw|||wwT..|FFF|S=tP|", + "|ewrrw|l|w||||||||||||||", + "|ewwww|ltwDsssdd! ", + "|||||||||||sssdd! ", + " sssdd! ", + " !!!!!! " + ], + "terrain": { + " ": ["t_grass", "t_grass", "t_dirt", "t_shrub" ], + "#": "t_shrub", + "%": "t_wall_glass", + "+": "t_door_glass_c", + ",": "t_pavement_y", + "!": "t_wall_wood", + "-": "t_wall", + ".": "t_floor", + "5": "t_wall_glass", + "=": "t_linoleum_gray", + "F": "t_floor", + "O": "t_linoleum_white", + "P": "t_linoleum_gray", + "S": "t_linoleum_white", + "_": "t_pavement", + "c": "t_linoleum_white", + "e": "t_linoleum_white", + "l": "t_linoleum_white", + "o": "t_window_open", + "r": "t_linoleum_gray", + "d": "t_sidewalk", + "s": "t_sidewalk", + "D": "t_door_locked", + "t": "t_door_c", + "w": "t_linoleum_white", + "x": "t_console_broken", + "|": "t_wall" + }, + "furniture": { + "H": "f_chair", + "F": "f_arcade_machine", + "S": "f_sink", + "h": "f_sofa", + "T": "f_table", + "c": "f_counter", + "d": "f_dumpster", + "e": "f_fridge", + "g": "f_trashcan", + "l": "f_locker", + "r": "f_oven" + }, + "toilets": { "P": {} }, + "items": { + "T": { "item": "fast_table", "chance": 20, "repeat": [ 1, 2 ] }, + "d": { "item": "fast_trash", "chance": 60, "repeat": [ 1, 3 ] }, + "c": { "item": "fast_kitchen", "chance": 15, "repeat": [ 1, 3 ] }, + "l": { "item": "fast_locker", "chance": 70, "repeat": [ 1, 2 ] }, + "e": { "item": "fast_fridge", "chance": 70, "repeat": [ 2, 3 ] }, + ".": { "item": "fast_trash", "chance": 5, "repeat": [ 1, 3 ] }, + "=": { "item": "fast_bath", "chance": 25, "repeat": [ 1, 2 ] } + }, + "place_monsters": [ + { "monster": "GROUP_ZOMBIE", "x": 15, "y": 15, "chance": 10 }, + { "monster": "GROUP_ROACH", "x": [ 7, 19 ], "y": 19, "chance": 30 } + ] + } } ] diff --git a/data/json/mapgen/teashop.json b/data/json/mapgen/teashop.json index 7a32488b08ec4..0af4086fd5dd2 100644 --- a/data/json/mapgen/teashop.json +++ b/data/json/mapgen/teashop.json @@ -141,7 +141,7 @@ "+": "t_door_c", ",": "t_floor", "-": "t_wall", - ".": "t_grass", + ".": ["t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt"], "1": "t_grass", "2": "t_grass", "3": "t_grass", @@ -163,7 +163,7 @@ }, "furniture": { "#": "f_counter", - "&": "f_trashcan", + "&": "f_dumpster", "1": "f_dandelion", "2": "f_dahlia", "3": "f_bluebell", @@ -202,5 +202,103 @@ { "item": "teashop_fridge", "x": 4, "y": 14, "chance": 80, "repeat": [ 1, 4 ] } ] } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "s_teashop" ], + "weight": 250, + "object": { + "fill_ter": "t_floor", + "rows": [ + ".....SSS.......T.....T..", + ".qqqqSSSqqqqqq|||OOO|||.", + ".q...TSS.T..Tz|c,$$$&C|.", + ".q.T..SSS@...zOtC,,,,t|T", + ".q...TSSS.3T.zOtC,,,,C|.", + "TqT...1SS4124z|c,,,,,Y|.", + ".q..T23SSSS1T||Y,C,C,,|.", + ".qT..321SSSSS+,,cttt,,|.", + ".q...4TSSSSSS+,,,tttc,|.", + ".q.T..SSSS134||Y,C,C,&|.", + ".q..@.SS.341.z|c,,,,,Y|.", + ".q...SSS1.2.TzOtC,,,,{|.", + ".q..TSS....T.zOtC,,,,{|T", + ".q.T.SS.T....z|c,,,,,{|.", + ".q..SSS..T..|||||6##;||.", + ".wwW,,Www...|};;;;;;;|..", + ".wc,,,c,w..T|};F|;;;;|..", + ".Wt,,ctcW...|};F|K###|.T", + ".Wc,,,c,W.T.||D|||||||..", + "TWc,,,c,W......q.T......", + ".Wt,,ctcW..T...q.....T..", + ".wc,,,c,w......QT......T", + ".wwWWWWwwqqqqqqq...T....", + ".......T........T.....T." + ], + "terrain": { + "#": "t_linoleum_gray", + "&": "t_floor", + "D": "t_door_locked", + "+": "t_door_c", + ";": "t_linoleum_gray", + ",": "t_floor", + ".": ["t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt"], + "T": ["t_tree", "t_tree_young", "t_shrub", "t_grass", "t_grass", "t_dirt" ], + "z": "t_shrub", + "@": "t_grass", + "1": "t_grass", + "2": "t_grass", + "3": "t_grass", + "4": "t_grass", + "6": "t_console_broken", + "C": "t_floor", + "F": "t_linoleum_gray", + "K": "t_linoleum_gray", + "O": "t_window_domestic", + "S": "t_sidewalk", + "$": "t_floor", + "_": "t_pavement", + "c": "t_floor", + "o": "t_window", + "Y": "t_floor", + "t": "t_floor", + "{": "t_floor", + "|": "t_wall", + "w": "t_wall_log", + "W": "t_railing_v", + "Q": "t_fencegate_c", + "q": "t_fence_v" + }, + "furniture": { + "#": "f_counter", + "Y": "f_rack_coat", + "&": "f_trashcan", + "1": "f_dandelion", + "2": "f_dahlia", + "3": "f_bluebell", + "4": "f_lily", + "@": "f_statue", + "F": "f_fridge", + "K": "f_sink", + "}": "f_rack", + "c": "f_chair", + "C": "f_armchair", + "$": "f_sofa", + "t": "f_table", + "{": "f_bookcase" + }, + "items": { + "{": { "item": "corner_reader", "chance": 45, "repeat": [ 1, 2 ] }, + "Y": { "item": "jackets", "chance": 30, "repeat": [ 2, 4 ] }, + "#": { "item": "teashop_kitchen_counter", "chance": 80, "repeat": [ 1, 3 ] }, + "F": { "item": "teashop_fridge", "chance": 80, "repeat": [ 1, 4 ] }, + "}": { "item": "displays", "chance": 30, "repeat": [ 1, 3 ] }, + "C": { "item": "chair_extra", "chance": 20, "repeat": [ 1, 2 ] }, + "c": { "item": "chair_torso", "chance": 10, "repeat": [ 1, 3 ] } + + }, + "place_signs": [ { "signage": "The Green Leaf Tea Shop", "x": 4, "y": 0 } ] + } } ] diff --git a/data/json/mapgen/trailhead.json b/data/json/mapgen/trailhead.json new file mode 100644 index 0000000000000..21fefe78912f0 --- /dev/null +++ b/data/json/mapgen/trailhead.json @@ -0,0 +1,210 @@ +[ + { + "type": "palette", + "id": "trailhead", + "terrain": { + " ": "t_dirt", + ",": [ "t_grass", "t_grass", "t_dirt" ], + ";": [ "t_grass", "t_dirt" ], + ".": [ "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass" ], + "b": "t_dirt", + "t": "t_trunk", + "s": "t_dirt", + "=": "t_dirt", + "-": "t_wall_wood", + "|": "t_wall_wood", + "#": "t_floor", + "B": "t_floor", + "w": "t_floor", + "+": "t_door_c", + ":": "t_window_bars", + "c": "t_woodchips", + "W": "t_water_pump", + "T": "t_floor" + }, + "furniture": { "b": "f_boulder_small", "s": "f_sign", "B": "f_bench", "=": "f_bench", "w": "f_woodstove" }, + "toilets": { "T": { } } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "trailhead" ], + "weight": 5, + "object": { + "rows": [ + ",,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,......,,,,,,,,,", + ",,,,,,,,,......,,,,,,,,,", + ",,,,,,,,,......,,,,,,,,,", + ",,,,,,,;;......,,,,,,;,,", + ";,,;,,;;;......,,;;,;;;;", + ";;;;;;;;;......;;;;;;;;;", + ";;;;;;;;.......;;;;;;;;;", + ";;;;;;;;........;;;;;;;;", + ";;;;;............;;;;;;;", + ";;;..................;;;", + ";;....................;;", + ";;;...................;;", + "bt tb", + ";t t;", + ";t t;", + "bt tb", + ";;... ..;;;", + ";;... .;;;;", + ";;;.. ;;;;;", + ";;;;. ;;;;;", + ";;;;; ;;;;;", + ";;;;;tttt tttt;;;;;", + ";;;;;b..b ss b..b;;;;;" + ], + "palettes": [ "trailhead" ], + "place_vehicles": [ + { "chance": 20, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "campground_vehicles", "x": 7, "y": 19 }, + { "chance": 20, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "campground_vehicles", "x": 17, "y": 19 } + ], + "place_signs": [ { "signage": " Trail", "x": 11, "y": 23 }, { "snippet": "trailhead", "x": 12, "y": 23 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "trailhead" ], + "weight": 1, + "object": { + "rows": [ + ",,,,,,,;;......,,,,,,;,,", + ";,,;,,;;;......,,;;,;;;;", + ";;;;;;;;;......;;;;;;;;;", + ";;;;;;;;.......;;;;;;;;;", + ";;;;;;;;........;;;;;;;;", + ";;;;;............;;;;;;;", + ";;;..................;;;", + ";;..... ..;;", + ";;;.... tb;", + ";;;.... t;;", + ";;;.... t;;", + ";;;... tb;", + ";;;... .;;", + ";;;... ..;;", + ";;;... ...;;", + ";;;... ...;;", + ";;;... ...;;", + ";;... |-|;;", + ";;... . . . +T|;;", + ";;;.. . |-|;;", + ";;;;. . . . +T|;;", + ";;;;; ;|-|;;", + ";;;;;==== sss;;;;;;", + ";;;;;;;;; ;;;;;;;;;" + ], + "palettes": [ "trailhead" ], + "place_vehicles": [ { "chance": 100, "fuel": 0, "rotation": 0, "status": 1, "vehicle": "campground_vehicles", "x": 17, "y": 9 } ], + "place_signs": [ + { "snippet": "trailhead", "x": 15, "y": 22 }, + { "signage": " Trail", "x": 16, "y": 22 }, + { "snippet": "trailhead", "x": 17, "y": 22 } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "trailhead" ], + "weight": 5, + "object": { + "rows": [ + ",,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,......,,,,,,,,,", + ",,,,,,,,,......,,,,,,,,,", + ",,,,,,,,,......,,,,,,,,,", + ",,,,,,,;;......,,,,,,;,,", + ";,,;,,;;;......,,;;,;;;;", + ";;;;;;;;;......;;;;;;;;;", + ";;;;;;;;.......;;;;;;;;;", + ";;;;;;;;........;;;;;;;;", + ";;;;;............;;;;;;;", + ";;;..................;;;", + ";;....................;;", + ";;;...................;;", + ";;;...................;;", + ";;;...................;;", + ";;;...................;;", + ";;;...................;;", + ";;... ..;;;", + ";;... . . . .;;;;", + ";;;.. . ;;;;;", + ";;;;. . . . ;;;;;", + ";;;;; ;;;;;", + ";;;;;tttt tttt;;;;;", + ";;;;;b..b s s b..b;;;;;" + ], + "palettes": [ "trailhead" ], + "place_vehicles": [ + { "chance": 20, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "campground_vehicles", "x": 7, "y": 19 }, + { "chance": 20, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "campground_vehicles", "x": 17, "y": 19 } + ], + "place_signs": [ { "signage": " Trail", "x": 10, "y": 23 }, { "snippet": "trailhead", "x": 13, "y": 23 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "trailhead" ], + "weight": 1, + "object": { + "rows": [ + ",,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,......,,,,,,,,,", + ",,,,,,,,,......,,,,,,,,,", + ",,,,,,,,,......,,,,,,,,,", + ",,,,,,,;;......,,,,,,;,,", + ";,,;,,;;;......,,;;,;;;;", + ";;;;;;;;;......;;;;;;;;;", + ";;;;;;;;.......;;;;;;;;;", + ";;;;;;;;........;;;;;;;;", + ";;;;;............;;;;;;;", + ";;;;;;,.........;;;;;;;;", + ";;;;;;,....... ;;;;;;;;;", + ";;;;;;,...... ;;;;;;;;", + ";;;;;;; ...;;;;;", + ";;;;;;; ....;;;;;", + ";;;;;;; ...bsb;;;", + ";;;ccccccc ...;W;;;;", + ";;;c|--:-| ..;;b;b;;;", + ";;;c|BB##|s ..;;;;;;;;", + ";;;c|B###+ ..;;;;;;;b", + ";;;c|BB#w|s ..;;;;;;;;", + ";;;c|--:-| ;;;;;;;;;", + ";;;ccccccc ;;;;;;b;;", + ";;;b;b;b; ;;b;;;;;;" + ], + "palettes": [ "trailhead" ], + "place_items": [ { "item": "camping", "x": [ 5, 5 ], "y": [ 18, 20 ], "chance": 70 } ], + "place_signs": [ + { "snippet": "trailhead", "x": 10, "y": 18 }, + { "signage": " Trail", "x": 10, "y": 20 }, + { "signage": "PLEASE No fish cleaning or dishwashing.", "x": 19, "y": 15 } + ] + } + }, + { + "type": "snippet", + "category": "trailhead", + "text": [ + "Leave No Trace.", + "Plan Ahead and Prepare.", + "Travel and Camp on Durable Surfaces.", + "Dispose of Waste Properly.", + "Leave What You Find.", + "Minimize Campfire Impacts.", + "Respect Wildlife.", + "Be Considerate of Other Visitors.", + "WARNING! BEAR COUNTRY.", + "For hiking, skiing, and enjoying nature.", + "Please stay on trail.", + "No motorized vehicles.", + "DANGER. HIGH FIRE HAZARD AREA. NO OPEN FIRE. NO SMOKING.", + "No Overnight Camping." + ] + } +] diff --git a/data/json/mapgen_palettes/railroad.json b/data/json/mapgen_palettes/railroad.json new file mode 100644 index 0000000000000..a45cd68835d8c --- /dev/null +++ b/data/json/mapgen_palettes/railroad.json @@ -0,0 +1,78 @@ +[ + { + "type": "palette", + "id": "railroad", + "terrain": { + " ": [ "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_shrub" ], + ".": "t_pavement", + ":": "t_pavement_y", + "]": "t_sidewalk", + "_": "t_concrete", + "^": "t_railroad_rubble", + "t": "t_railroad_tie", + "-": "t_railroad_tie_h", + "|": "t_railroad_tie_v", + "/": "t_railroad_tie_d", + "X": "t_railroad_track", + "H": "t_railroad_track_h", + "V": "t_railroad_track_v", + "D": "t_railroad_track_d", + "E": "t_railroad_track_d1", + "F": "t_railroad_track_d2", + "x": "t_railroad_track_on_tie", + "h": "t_railroad_track_h_on_tie", + "v": "t_railroad_track_v_on_tie", + "d": "t_railroad_track_d_on_tie", + "1": "t_railroad_crossing_signal", + "2": [ "t_crossbuck_wood", "t_crossbuck_metal" ], + "S": "t_buffer_stop", + "r": "t_railing" + } + }, + { + "type": "palette", + "id": "railroad_station", + "terrain": { + ">": "t_stairs_down", + "<": "t_stairs_up", + "#": "t_concrete_wall", + "$": "t_chainfence", + "+": "t_door_c", + "[": "t_floor", + "C": "t_floor", + "I": "t_column", + "6": "t_floor", + "7": "t_floor", + "8": "t_concrete", + "9": "t_concrete", + "O": "t_window", + "b": "t_floor", + "c": "t_floor", + "d": "t_floor", + "f": "t_floor", + "l": "t_floor", + "s": "t_floor", + "T": "t_floor", + "!": "t_floor", + "&": "t_concrete" + }, + "furniture": { + "C": "f_counter", + "b": "f_bench", + "c": "f_chair", + "d": "f_desk", + "f": "f_sofa", + "l": "f_locker", + "s": "f_sink", + "T": "f_toilet", + "!": "f_trashcan", + "&": "f_trashcan" + }, + "toilets": { "T": { } } + }, + { + "type": "palette", + "id": "railroad_station_under", + "terrain": { " ": "t_rock", ">": "t_stairs_down", "<": "t_stairs_up", "#": "t_concrete_wall", "_": "t_concrete", "I": "t_column" } + } +] diff --git a/data/json/mapgen_palettes/ranch_camp.json b/data/json/mapgen_palettes/ranch_camp.json new file mode 100644 index 0000000000000..14c40468b93d1 --- /dev/null +++ b/data/json/mapgen_palettes/ranch_camp.json @@ -0,0 +1,131 @@ +[ + { + "type": "palette", + "id": "ranch_camp", + "terrain": { + " ": "t_floor", + "#": "t_dirtmound", + "%": "t_fence_barbed", + "+": "t_door_c", + ",": "t_pavement_y", + "-": "t_wall", + ".": [ + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_grass", + "t_grass", + "t_grass", + "t_grass", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_dirt", + "t_underbrush" + ], + "/": "t_dirt", + "5": "t_barndoor", + "6": "t_palisade_pulley", + ";": "t_dirtfloor", + "=": "t_door_metal_locked", + "A": "t_bars", + "B": "t_floor", + "C": "t_grass", + "D": "t_floor", + "G": "t_palisade_gate", + "H": "t_fence_h", + "L": "t_floor", + "O": "t_floor", + "S": "t_floor", + "T": "t_tree", + "V": "t_fence_v", + "W": "t_wall_wood", + "X": "t_grass", + "Y": "t_floor", + "Z": "t_floor", + "_": "t_pavement", + "`": "t_water_dp", + "b": "t_dirt", + "c": "t_floor", + "d": "t_floor", + "f": "t_floor", + "h": "t_floor", + "k": "t_floor", + "n": "t_floor", + "o": "t_column", + "r": "t_floor", + "s": "t_sidewalk", + "t": "t_floor", + "v": "t_window_domestic", + "w": "t_window_boarded", + "x": "t_grass", + "y": "t_palisade", + "z": "t_floor", + "|": "t_wall", + "~": "t_water_sh" + }, + "furniture": { + "@": "f_bed", + "B": "f_bathtub", + "D": "f_trashcan", + "L": "f_locker", + "O": "f_oven", + "S": "f_sink", + "Y": "f_sofa", + "Z": "f_crate_o", + "c": "f_counter", + "d": "f_dresser", + "f": "f_fridge", + "h": "f_chair", + "k": "f_desk", + "n": "f_table", + "r": "f_rack", + "t": "f_toilet", + "z": "f_crate_c" + } + } +] diff --git a/data/json/martialarts.json b/data/json/martialarts.json index d2bd6ab3d736b..3dfed7592a2b1 100644 --- a/data/json/martialarts.json +++ b/data/json/martialarts.json @@ -491,7 +491,6 @@ "id" : "fencing_move_buff", "name" : "Fencing Footwork", "description" : "+2 stab and +1 acc per stack", - "unarmed_allowed" : true, "min_melee" : 2, "buff_duration" : 2, "max_stacks" : 2, diff --git a/data/json/monstergroups.json b/data/json/monstergroups.json index ca284dc3ac4c7..121113fab8278 100644 --- a/data/json/monstergroups.json +++ b/data/json/monstergroups.json @@ -382,8 +382,7 @@ { "monster" : "mon_worm", "freq" : 1, "cost_multiplier" : 0, "starts" : 336, "conditions" : ["SPRING", "SUMMER", "AUTUMN"] }, { "monster" : "mon_worm", "freq" : 1, "cost_multiplier" : 0, "starts" : 504, "conditions" : ["SPRING", "SUMMER", "AUTUMN"] }, { "monster" : "mon_worm", "freq" : 1, "cost_multiplier" : 0, "starts" : 672, "conditions" : ["SPRING", "SUMMER", "AUTUMN"] }, - { "monster" : "mon_nakedmolerat_giant", "freq" : 1, "cost_multiplier" : 3, "conditions" : ["DUSK", "NIGHT"] }, - { "monster" : "mon_bear_smoky", "freq" : 1, "cost_multiplier" : 0, "starts" : 672, "conditions" : ["SPRING", "SUMMER", "AUTUMN"] } + { "monster" : "mon_nakedmolerat_giant", "freq" : 1, "cost_multiplier" : 3, "conditions" : ["DUSK", "NIGHT"] } ] },{ "type":"monstergroup", @@ -472,8 +471,7 @@ { "monster" : "mon_fish_whitefish", "freq" : 55, "cost_multiplier" : 2, "conditions" : ["DAWN", "DUSK"], "pack_size" : [4,6] }, { "monster" : "mon_fish_pickerel", "freq" : 15, "cost_multiplier" : 10, "pack_size" : [1,3] }, { "monster" : "mon_fish_pickerel", "freq" : 20, "cost_multiplier" : 10, "conditions" : ["DAWN", "DUSK"], "pack_size" : [1,3] }, - { "monster" : "mon_fish_blinky", "freq": 5, "cost_multiplier": 3, "pack_size": [1, 3] }, - { "monster" : "mon_bear_smoky", "freq" : 1, "cost_multiplier" : 0, "starts" : 672, "conditions" : ["SPRING", "SUMMER", "AUTUMN"] } + { "monster" : "mon_fish_blinky", "freq": 5, "cost_multiplier": 3, "pack_size": [1, 3] } ] },{ "type":"monstergroup", @@ -483,8 +481,7 @@ { "monster" : "mon_bat", "freq" : 600, "cost_multiplier" : 5, "pack_size" : [6,32] }, { "monster" : "mon_bear", "freq" : 100, "cost_multiplier" : 10, "pack_size" : [1,3] }, { "monster" : "mon_cougar", "freq" : 100, "cost_multiplier" : 20, "pack_size" : [1,2] }, - { "monster" : "mon_nakedmolerat_giant", "freq" : 100, "cost_multiplier" : 3 }, - { "monster" : "mon_bear_smoky", "freq" : 100, "cost_multiplier" : 0, "starts" : 672 } + { "monster" : "mon_nakedmolerat_giant", "freq" : 100, "cost_multiplier" : 3 } ] },{ "type":"monstergroup", @@ -934,8 +931,7 @@ { "monster" : "mon_giant_crayfish", "freq" : 1, "cost_multiplier" : 0, "starts" : 720, "conditions" : ["SPRING", "SUMMER", "AUTUMN"] }, { "monster" : "mon_giant_crayfish", "freq" : 4, "cost_multiplier" : 0, "starts" : 720, "conditions" : ["DUSK", "NIGHT", "DAWN", "SPRING", "SUMMER", "AUTUMN"] }, { "monster" : "mon_giant_crayfish", "freq" : 1, "cost_multiplier" : 0, "starts" : 792, "conditions" : ["SPRING", "SUMMER", "AUTUMN"] }, - { "monster" : "mon_giant_crayfish", "freq" : 4, "cost_multiplier" : 0, "starts" : 792, "conditions" : ["DUSK", "NIGHT", "DAWN", "SPRING", "SUMMER", "AUTUMN"] }, - { "monster" : "mon_bear_smoky", "freq" : 1, "cost_multiplier" : 0, "starts" : 672, "conditions" : ["SPRING", "SUMMER", "AUTUMN"] } + { "monster" : "mon_giant_crayfish", "freq" : 4, "cost_multiplier" : 0, "starts" : 792, "conditions" : ["DUSK", "NIGHT", "DAWN", "SPRING", "SUMMER", "AUTUMN"] } ] },{ "type":"monstergroup", diff --git a/data/json/monsters.json b/data/json/monsters.json index 2a083245c2c3c..4c441383aaeee 100644 --- a/data/json/monsters.json +++ b/data/json/monsters.json @@ -155,56 +155,6 @@ "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "GOODHEARING", "WARM", "FLIES", "ANIMAL", "PATH_AVOID_DANGER_1", "BONES", "LEATHER" ] }, - { - "id": "mon_bear_smoky", - "type": "MONSTER", - "name": "Smoky bear", - "description": "A smoking husk is all that remains of this once proud bear. Its black eyes gaze at you with malice... and hunger.", - "default_faction": "bear", - "species": [ "ZOMBIE" ], - "diff": 10, - "volume": "92500 ml", - "weight": 120000, - "hp": 100, - "speed": 90, - "material": [ "flesh" ], - "symbol": "B", - "color": "light_gray", - "aggression": 100, - "morale": 100, - "melee_skill": 6, - "melee_dice": 4, - "melee_dice_sides": 6, - "melee_cut": 4, - "dodge": 3, - "armor_bash": 4, - "armor_cut": 4, - "vision_day": 30, - "vision_night": 10, - "emit_fields": [ "emit_smoke_stream" ], - "special_attacks": [ { "type": "bite", "cooldown": 5 } ], - "anger_triggers": [ "HURT", "PLAYER_CLOSE" ], - "placate_triggers": [ "MEAT" ], - "death_function": [ "SMOKEBURST" ], - "flags": [ - "SEES", - "HEARS", - "SMELLS", - "ANIMAL", - "PATH_AVOID_DANGER_1", - "WARM", - "FUR", - "BLEED", - "BASHES", - "ATTACKMON", - "BONES", - "FAT", - "FIREPROOF", - "NO_BREATHE", - "POISON", - "FILTHY" - ] - }, { "id": "mon_beekeeper", "type": "MONSTER", diff --git a/data/json/monsters/mammal.json b/data/json/monsters/mammal.json index c2f1ceba20e79..b76ad74703e07 100644 --- a/data/json/monsters/mammal.json +++ b/data/json/monsters/mammal.json @@ -6,7 +6,7 @@ "name": "bear cub", "description": "A juvenile American black bear. A large omnivorous scavenger, it has powerful claws and jaws, and is an effective ambush hunter. It can pose a considerable threat, although most individuals are shy around humans.", "diff": 5, - "volume": "30000 ml", + "volume": "40750 ml", "weight": 40750, "hp": 20, "speed": 90, @@ -28,8 +28,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 10, - "volume": "92500 ml", - "weight": 120000, + "volume": "154250 ml", + "weight": 154250, "hp": 100, "speed": 140, "material": [ "flesh" ], @@ -64,8 +64,8 @@ "default_faction": "small_animal", "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], - "volume": "30000 ml", - "weight": 40750, + "volume": "20250 ml", + "weight": 20250, "hp": 16, "speed": 90, "material": [ "flesh" ], @@ -91,8 +91,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 3, - "volume": "750 ml", - "weight": 1000, + "volume": "200 ml", + "weight": 200, "hp": 6, "speed": 100, "material": [ "flesh" ], @@ -122,8 +122,8 @@ "default_faction": "cat", "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], - "volume": "30000 ml", - "weight": 40750, + "volume": "8600 ml", + "weight": 8600, "hp": 16, "speed": 150, "material": [ "flesh" ], @@ -162,8 +162,8 @@ "default_faction": "cat", "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], - "volume": "750 ml", - "weight": 1000, + "volume": "4000 ml", + "weight": 4000, "hp": 12, "speed": 150, "material": [ "flesh" ], @@ -205,8 +205,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 3, - "volume": "750 ml", - "weight": 1000, + "volume": "96 ml", + "weight": 96, "hp": 4, "speed": 110, "material": [ "flesh" ], @@ -232,8 +232,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 12, - "volume": "62500 ml", - "weight": 81500, + "volume": "63000 ml", + "weight": 63000, "hp": 60, "speed": 180, "material": [ "flesh" ], @@ -315,7 +315,7 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 10, - "volume": "92500 ml", + "volume": "120000 ml", "weight": 120000, "hp": 100, "speed": 130, @@ -366,8 +366,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 10, - "volume": "62500 ml", - "weight": 81500, + "volume": "13250 ml", + "weight": 13250, "hp": 22, "speed": 155, "material": [ "flesh" ], @@ -408,8 +408,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 8, - "volume": "62500 ml", - "weight": 81500, + "volume": "13250 ml", + "weight": 13250, "hp": 20, "speed": 155, "material": [ "flesh" ], @@ -438,7 +438,7 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 1, - "volume": "30000 ml", + "volume": "40750 ml", "weight": 40750, "hp": 20, "speed": 200, @@ -469,8 +469,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 1, - "volume": "62500 ml", - "weight": 81500, + "volume": "87000 ml", + "weight": 87000, "hp": 60, "speed": 300, "material": [ "flesh" ], @@ -503,7 +503,7 @@ "species": [ "MAMMAL" ], "diff": 10, "volume": "30000 ml", - "weight": 40750, + "weight": 30000, "hp": 30, "speed": 150, "material": [ "flesh" ], @@ -571,8 +571,8 @@ "type": "MONSTER", "name": "bulldog", "description": "The American bulldog is a hardy, well built dog, that seems suited for surviving the apocalypse.", - "volume": "62500 ml", - "weight": 81500, + "volume": "25000 ml", + "weight": 25000, "hp": 47, "speed": 135, "aggression": 4, @@ -633,6 +633,7 @@ "name": "pit bull mix", "description": "The oft-misunderstood pit bull is not actually a single breed but a label for several such as the American pit bull terrier and American Staffordshire terrier. Average abilities and well-known for their 'lock jaw' which isn't real but their incredible determination is.", "hp": 27, + "weight": 25000, "speed": 135, "aggression": 3, "morale": 11, @@ -696,6 +697,7 @@ "name": "beagle", "description": "An adorable beagle that has managed to survive the apocalypse. Being agile and small, they are difficult to shoot at. Generally attacks in packs.", "diff": 5, + "weight": 10000, "hp": 13, "speed": 135, "melee_skill": 2, @@ -774,6 +776,7 @@ "name": "border collie", "description": "An athletic and hyperactive dog that loves to herd animals and jump, the border collie is an agile attacker. Although they can be easy to train, they don't work well in packs.", "hp": 19, + "weight": 16000, "speed": 200, "aggression": 3, "morale": 10, @@ -837,6 +840,7 @@ "name": "boxer mastiff", "description": "An ordinary breed full of affection, the boxer mastiff doesn't otherwise stand out amongst other dogs with its capabilities.", "hp": 29, + "weight": 27500, "aggression": 3, "melee_skill": 4, "melee_dice_sides": 2, @@ -899,7 +903,7 @@ "description": "It's a tiny Chihuahua. How it has managed to survive is a miracle; although its small size and aggressive nature may been useful.", "diff": 5, "volume": "750 ml", - "weight": 1000, + "weight": 2200, "hp": 6, "speed": 135, "aggression": 4, @@ -935,8 +939,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 3, - "volume": "750 ml", - "weight": 1000, + "volume": "500 ml", + "weight": 500, "hp": 2, "speed": 88, "material": [ "flesh" ], @@ -978,6 +982,7 @@ "description": "A weiner dog! This awkward looking dog can be a useful watch dog, plus it looks adorable as it bumbles around, also making it hard to shoot.", "diff": 5, "hp": 10, + "weight": 10000, "speed": 135, "aggression": 3, "morale": 10, @@ -1054,8 +1059,8 @@ "type": "MONSTER", "name": "German shepherd", "description": "The original K-9 breed. An easy to train and great attack dog that will also defend its owner to the death, however they don't work well in packs.", - "volume": "62500 ml", - "weight": 81500, + "volume": "35000 ml", + "weight": 35000, "hp": 36, "aggression": 3, "morale": 10, @@ -1105,8 +1110,8 @@ "name": "Great Pyrenees", "//": "Rare, location specific only", "description": "A large and powerful breed, the Great Pyrenees has a beautiful, thick white coat. Originally bred to deter wolves and other predators, now faced with protecting livestock from shambling hordes of undead.", - "volume": "62500 ml", - "weight": 81500, + "volume": "52500 ml", + "weight": 52500, "hp": 40, "speed": 100, "aggression": 3, @@ -1172,8 +1177,8 @@ "name": "rottweiler", "//": "Rare, location specific only", "description": "Terrifying breed to face feral, as the rottweiler breed is descended from Roman legion mastiffs. Robust and vicious, quite capable of mauling a human to death.", - "volume": "62500 ml", - "weight": 81500, + "volume": "50000 ml", + "weight": 50000, "hp": 42, "speed": 135, "aggression": 4, @@ -1239,6 +1244,7 @@ "name": "cattle dog", "description": "An agile and sturdy breed that is welcome on any farm, the Australian cattle dog is adept at leaping fences and herding livestock.", "hp": 20, + "weight": 18000, "speed": 200, "aggression": 3, "morale": 10, @@ -1308,8 +1314,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 4, - "volume": "30000 ml", - "weight": 40750, + "volume": "4750 ml", + "weight": 4750, "hp": 20, "speed": 130, "material": [ "flesh" ], @@ -1351,8 +1357,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 5, - "volume": "30000 ml", - "weight": 40750, + "volume": "4132 ml", + "weight": 4132, "hp": 30, "speed": 145, "material": [ "flesh" ], @@ -1393,8 +1399,8 @@ "default_faction": "small_animal", "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], - "volume": "750 ml", - "weight": 1000, + "volume": "3628 ml", + "weight": 3628, "hp": 12, "speed": 140, "material": [ "flesh" ], @@ -1418,8 +1424,8 @@ "default_faction": "small_animal", "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], - "volume": "750 ml", - "weight": 1000, + "volume": "4175 ml", + "weight": 4175, "hp": 10, "speed": 170, "material": [ "flesh" ], @@ -1442,8 +1448,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 10, - "volume": "92500 ml", - "weight": 120000, + "volume": "550000 ml", + "weight": 550000, "hp": 90, "speed": 210, "material": [ "flesh" ], @@ -1486,8 +1492,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 2, - "volume": "750 ml", - "weight": 1000, + "volume": "30 ml", + "weight": 30, "hp": 4, "speed": 90, "material": [ "flesh" ], @@ -1511,8 +1517,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 4, - "volume": "30000 ml", - "weight": 40750, + "volume": "800 ml", + "weight": 800, "hp": 30, "speed": 130, "material": [ "flesh" ], @@ -1553,8 +1559,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 1, - "volume": "92500 ml", - "weight": 120000, + "volume": "386000 ml", + "weight": 386000, "hp": 120, "speed": 200, "material": [ "flesh" ], @@ -1589,8 +1595,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 3, - "volume": "30000 ml", - "weight": 40750, + "volume": "1362 ml", + "weight": 1362, "hp": 10, "speed": 100, "material": [ "flesh" ], @@ -1616,7 +1622,7 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 15, - "volume": "875000 ml", + "volume": "200000 ml", "weight": 200000, "hp": 120, "speed": 80, @@ -1665,8 +1671,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 10, - "volume": "750 ml", - "weight": 1000, + "volume": "3000 ml", + "weight": 3000, "hp": 12, "speed": 110, "material": [ "flesh" ], @@ -1692,8 +1698,8 @@ "default_faction": "otter", "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], - "volume": "30000 ml", - "weight": 40750, + "volume": "9000 ml", + "weight": 9000, "hp": 12, "speed": 110, "material": [ "flesh" ], @@ -1718,8 +1724,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 2, - "volume": "750 ml", - "weight": 1000, + "volume": "10000 ml", + "weight": 10000, "hp": 5, "speed": 80, "material": [ "flesh" ], @@ -1751,8 +1757,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 8, - "volume": "62500 ml", - "weight": 81500, + "volume": "200000 ml", + "weight": 200000, "hp": 50, "speed": 100, "material": [ "flesh" ], @@ -1784,8 +1790,8 @@ "default_faction": "small_animal", "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], - "volume": "750 ml", - "weight": 1000, + "volume": "1600 ml", + "weight": 1600, "hp": 8, "speed": 160, "material": [ "flesh" ], @@ -1808,8 +1814,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 10, - "volume": "750 ml", - "weight": 1000, + "volume": "6000 ml", + "weight": 6000, "hp": 14, "speed": 100, "material": [ "flesh" ], @@ -1835,7 +1841,7 @@ "default_faction": "rat", "species": [ "MAMMAL" ], "diff": 18, - "volume": "62500 ml", + "volume": "81500 ml", "weight": 81500, "hp": 220, "speed": 40, @@ -1891,7 +1897,7 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 3, - "volume": "30000 ml", + "volume": "40750 ml", "weight": 40750, "hp": 20, "speed": 90, @@ -1922,7 +1928,7 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 10, - "volume": "62500 ml", + "volume": "81500 ml", "weight": 81500, "hp": 90, "speed": 90, @@ -1966,8 +1972,8 @@ "default_faction": "small_animal", "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], - "volume": "750 ml", - "weight": 1000, + "volume": "624 ml", + "weight": 624, "hp": 6, "speed": 140, "material": [ "flesh" ], @@ -1991,8 +1997,8 @@ "default_faction": "small_animal", "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], - "volume": "750 ml", - "weight": 1000, + "volume": "663 ml", + "weight": 663, "hp": 6, "speed": 130, "material": [ "flesh" ], @@ -2016,8 +2022,8 @@ "default_faction": "small_animal", "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], - "volume": "750 ml", - "weight": 1000, + "volume": "150 ml", + "weight": 151, "hp": 20, "speed": 110, "material": [ "flesh" ], @@ -2043,8 +2049,8 @@ "categories": [ "WILDLIFE" ], "species": [ "MAMMAL" ], "diff": 12, - "volume": "62500 ml", - "weight": 81500, + "volume": "26625 ml", + "weight": 26625, "hp": 40, "speed": 165, "material": [ "flesh" ], diff --git a/data/json/music.json b/data/json/music.json new file mode 100644 index 0000000000000..d84a10f384bf1 --- /dev/null +++ b/data/json/music.json @@ -0,0 +1,162 @@ +[ + { + "type": "snippet", + "category": "musicgenre_a", + "text": [ + "popular ", + "top-forty ", + "coorporate ", + "commercial ", + "alternative ", + "college ", + "arthouse ", + "underground ", + "experimental ", + "forgotten ", + "traditional ", + "historical ", + "classic ", + "modern ", + "adult ", + "contemporary ", + "Christian ", + "Pagan ", + "British ", + "Continental ", + "tropical ", + "island ", + "New York ", + "Hollywood ", + "Trans-Pacific ", + "Latin ", + "instrumental ", + "fusion ", + "visual ", + "liquid ", + "digital ", + "procedurally generated ", + "melodic ", + "harmonious ", + "discordant ", + "contextual ", + "conceptual ", + "collaborative ", + "rhythmic " + ] + }, + { + "type": "snippet", + "category": "musicgenre_b", + "text": [ + "neo", + "retro", + "post", + "anti", + "hard ", + "soft ", + "speed ", + "slow ", + "hi-fi ", + "lo-fi ", + "mid-fi ", + "ambient ", + "dance ", + "chill ", + "psycho", + "turbo", + "prog ", + "glam ", + "outsider ", + "indie ", + "dark ", + "death ", + "electro", + "acid ", + "space ", + "ghetto ", + "street ", + "urban ", + "world ", + "Euro", + "Afro", + "grunge ", + "brass ", + "splatter ", + "swamp ", + "ghost ", + "shadow ", + "neuro ", + "hyper", + "carnival", + "meta", + "techno", + "synth", + "robo", + "skate ", + "freak ", + "surf ", + "mutant ", + "Jurassic ", + "free ", + "garage ", + "garbage ", + "break ", + "laser ", + "porno ", + "hypno", + "lunar ", + "thunder ", + "clown ", + "murder ", + "narco ", + "gangster " + ] + }, + { + "type": "snippet", + "category": "musicgenre_c", + "text": [ + "-tune", + "-core", + "-wave", + "-beat", + "-step", + "-pop", + "-hop", + "-drums", + "-style", + "-chant", + "folk", + "country", + "jazz", + "blues", + "soul", + "R&B", + "hip-hop", + "swing", + "rock", + "funk", + "disco", + "polka", + "tango", + "salsa", + "mambo", + "electronic", + "house", + "metal", + "reaggae", + "ska", + "punk", + "thrash", + "goth", + "industrial", + "psychedelic", + "noise", + "sound", + "revival", + "gospel", + "opera", + "shanties" + ] + } +] diff --git a/data/json/mutations.json b/data/json/mutations.json index 18de1622ffb44..45321f18a1550 100644 --- a/data/json/mutations.json +++ b/data/json/mutations.json @@ -3713,7 +3713,8 @@ "purifiable" : false, "prereqs" : ["SMALL_OK"], "threshreq" : ["THRESH_MOUSE"], - "category" : ["MOUSE"] + "category" : ["MOUSE"], + "stealth_modifier" : 40 },{ "type" : "mutation", "id" : "MUT_JUNKIE", diff --git a/data/json/npcs/NC_SOLDIER.json b/data/json/npcs/NC_SOLDIER.json index 351a3c890c741..c28c8d3d0e903 100644 --- a/data/json/npcs/NC_SOLDIER.json +++ b/data/json/npcs/NC_SOLDIER.json @@ -143,11 +143,29 @@ ["e_tool", 15], ["chocolate", 30], ["can_beans", 20], + ["mre_chilibeans_box", 45], + ["mre_bbqbeef_box", 45], + ["mre_chickennoodle_box", 45], + ["mre_spaghetti_box", 45], + ["mre_chicken_box", 45], + ["mre_beeftaco_box", 45], ["mre_beef_box", 45], + ["mre_meatball_box", 45], + ["mre_beefstew_box", 45], + ["mre_chilimac_box", 45], ["mre_veggy_box", 45], - ["mre_chicken_box", 45], - ["mre_hotdog_box", 45], + ["mre_macaronimarinara_box", 45], + ["mre_cheesetort_box", 45], + ["mre_mushroomfettuccine_box", 45], + ["mre_mexicanchickenstew_box", 45], + ["mre_maplesausage_box", 45], ["mre_ravioli_box", 45], + ["mre_hashbrownbacon_box", 45], + ["mre_lemontuna_box", 45], + ["mre_asianbeef_box", 45], + ["mre_chickenpesto_box", 45], + ["mre_southwestbeef_box", 45], + ["mre_hotdog_box", 45], ["1st_aid", 35], ["saline", 10], ["con_milk", 10], diff --git a/data/json/npcs/TALK_ARSONIST.json b/data/json/npcs/TALK_ARSONIST.json index a65f308067748..db68f06cd8b07 100644 --- a/data/json/npcs/TALK_ARSONIST.json +++ b/data/json/npcs/TALK_ARSONIST.json @@ -20,7 +20,7 @@ { "type": "talk_topic", "id": "TALK_ARSONIST_NEW", - "dynamic_line": "Guess that makes two of us. Well, kind of. I don't think we're open, though. Full up as hell; it's almost a crowd downstairs. See the trader over there? There's the one to ask.", + "dynamic_line": "Guess that makes two of us. Well, kind of. I don't think we're open, though. Full up as hell; it's almost a crowd downstairs. Did you see the trader at the enterance? There's the one to ask.", "responses": [ { "text": "Sucks...", "topic": "TALK_ARSONIST" } ] }, { diff --git a/data/json/npcs/TALK_TEST.json b/data/json/npcs/TALK_TEST.json index ef797cc21975d..e0685c0b71bcd 100644 --- a/data/json/npcs/TALK_TEST.json +++ b/data/json/npcs/TALK_TEST.json @@ -60,10 +60,25 @@ "topic": "TALK_DONE", "condition": { "u_has_any_trait": [ "CANINE_EARS", "LUPINE_EARS", "FELINE_EARS", "URSINE_EARS", "ELFA_EARS" ] } }, + { + "text": "This is a short trait test response.", + "topic": "TALK_DONE", + "condition": { "u_has_trait": "ELFA_EARS" } + }, { "text": "This is a wearing test response.", "topic": "TALK_DONE", "condition": { "u_is_wearing": "badge_marshal" } + }, + { + "text": "This is a npc trait test response.", + "topic": "TALK_DONE", + "condition": { "npc_has_any_trait": [ "CANINE_EARS", "LUPINE_EARS", "FELINE_EARS", "URSINE_EARS", "ELFA_EARS" ] } + }, + { + "text": "This is a npc short trait test response.", + "topic": "TALK_DONE", + "condition": { "npc_has_trait": "ELFA_EARS" } } ] }, @@ -127,6 +142,19 @@ } ] }, + { + "type": "talk_topic", + "id": "TALK_TEST_NPC_CLASS", + "dynamic_line": "This is a test conversation that shouldn't appear in the game.", + "responses": [ + { "text": "This is a basic test response.", "topic": "TALK_DONE" }, + { + "text": "This is a class test response.", + "topic": "TALK_DONE", + "condition": { "npc_has_class": "NC_TEST_CLASS" } + } + ] + }, { "type": "talk_topic", "id": "TALK_TEST_NPC_ALLIES", diff --git a/data/json/npcs/items_generic.json b/data/json/npcs/items_generic.json index b7db1cf3dee0c..e8179c7807828 100644 --- a/data/json/npcs/items_generic.json +++ b/data/json/npcs/items_generic.json @@ -589,11 +589,29 @@ [ "money_bundle", 10 ], [ "moonshine", 5 ], [ "mp3", 10 ], - [ "mre_beef_box", 6 ], + [ "mre_chilibeans_box", 6 ], + [ "mre_bbqbeef_box", 6 ], + [ "mre_chickennoodle_box", 6 ], + [ "mre_spaghetti_box", 6 ], [ "mre_chicken_box", 6 ], - [ "mre_hotdog_box", 6 ], - [ "mre_ravioli_box", 6 ], + [ "mre_beeftaco_box", 6 ], + [ "mre_beef_box", 6 ], + [ "mre_meatball_box", 6 ], + [ "mre_beefstew_box", 6 ], + [ "mre_chilimac_box", 6 ], [ "mre_veggy_box", 6 ], + [ "mre_macaronimarinara_box", 6 ], + [ "mre_cheesetort_box", 6 ], + [ "mre_mushroomfettuccine_box", 6 ], + [ "mre_mexicanchickenstew_box", 6 ], + [ "mre_maplesausage_box", 6 ], + [ "mre_ravioli_box", 6 ], + [ "mre_hashbrownbacon_box", 6 ], + [ "mre_lemontuna_box", 6 ], + [ "mre_asianbeef_box", 6 ], + [ "mre_chickenpesto_box", 6 ], + [ "mre_southwestbeef_box", 6 ], + [ "mre_hotdog_box", 6 ], [ "mushroom", 5 ], [ "mushroom_magic", 3 ], [ "mushroom_poison", 3 ], diff --git a/data/json/npcs/talk_tags.json b/data/json/npcs/talk_tags.json index c79d9792c0dc7..f9074254a8f61 100644 --- a/data/json/npcs/talk_tags.json +++ b/data/json/npcs/talk_tags.json @@ -89,7 +89,8 @@ "motherfucker", " ", " ", - "son of an ass" + "son of an ass", + "Oh sugar!" ] },{ "type" : "snippet", @@ -185,7 +186,8 @@ "I'm doomed", "I'm done for", "I won't last much longer", - "my days are numbered" + "my days are numbered", + ", I'm sorry" ] },{ "type" : "snippet", diff --git a/data/json/overmap/special_locations.json b/data/json/overmap/special_locations.json index d50dffb00a161..aeefb4acf2d08 100644 --- a/data/json/overmap/special_locations.json +++ b/data/json/overmap/special_locations.json @@ -6,9 +6,14 @@ }, { "type": "overmap_location", - "id": "forest", + "id": "forest_without_trail", "terrains": [ "forest", "forest_thick" ] }, + { + "type": "overmap_location", + "id": "forest", + "terrains": [ "forest", "forest_thick", "forest_trail" ] + }, { "type": "overmap_location", "id": "swamp", @@ -17,7 +22,7 @@ { "type": "overmap_location", "id": "land", - "terrains": [ "forest", "forest_thick", "forest_water", "field" ] + "terrains": [ "forest", "forest_thick", "forest_water", "field", "forest_trail" ] }, { "type": "overmap_location", @@ -38,7 +43,7 @@ { "type": "overmap_location", "id": "wilderness", - "terrains": [ "forest", "forest_thick", "field" ] + "terrains": [ "forest", "forest_thick", "field", "forest_trail" ] }, { "type": "overmap_location", @@ -84,5 +89,20 @@ "type": "overmap_location", "id": "need_food", "terrains": [ "s_grocery" ] + }, + { + "type": "overmap_location", + "id": "forest_trail", + "terrains": [ "forest_trail" ] + }, + { + "type": "overmap_location", + "id": "forest_edge", + "terrains": [ "forest" ] + }, + { + "type": "overmap_location", + "id": "forest_center", + "terrains": [ "forest_thick" ] } ] diff --git a/data/json/overmap/specials.json b/data/json/overmap/specials.json index 5a68406271de4..e42ecca2ba18c 100644 --- a/data/json/overmap/specials.json +++ b/data/json/overmap/specials.json @@ -2514,5 +2514,40 @@ "city_sizes" : [ 0, 20 ], "occurrences" : [ 0, 10 ], "flags" : [ "CLASSIC" ] + }, + { + "id": "Railroad Station", + "type": "overmap_special", + "overmaps": [ + { "point": [ 0, 1, 0 ], "overmap": "railroad_station_0_1_north"}, + { "point": [ 0, 2, 0 ], "overmap": "railroad_station_0_2_north"}, + { "point": [ 0, 3, 0 ], "overmap": "railroad_station_0_3_north"}, + { "point": [ 0, 4, 0 ], "overmap": "railroad_station_0_4_north"}, + { "point": [ 1, 1, 0 ], "overmap": "railroad_station_1_1_north" }, + { "point": [ 1, 2, 0 ], "overmap": "railroad_station_1_2_north" }, + { "point": [ 1, 3, 0 ], "overmap": "railroad_station_1_3_north" }, + { "point": [ 1, 4, 0 ], "overmap": "railroad_station_1_4_north" }, + { "point": [ 2, 0, 0 ], "overmap": "road_end_north" }, + { "point": [ 2, 1, 0 ], "overmap": "railroad_station_2_1_north" }, + { "point": [ 2, 2, 0 ], "overmap": "railroad_station_2_2_north" }, + { "point": [ 2, 3, 0 ], "overmap": "railroad_station_2_3_north" }, + { "point": [ 2, 4, 0 ], "overmap": "railroad_station_2_4_north" }, + { "point": [ 2, 5, 0 ], "overmap": "road_end_south" }, + { "point": [ 0, 1, -1 ], "overmap": "railroad_station_under_0_1_north"}, + { "point": [ 0, 2, -1 ], "overmap": "railroad_station_under_0_2_north"}, + { "point": [ 0, 3, -1 ], "overmap": "railroad_station_under_0_3_north"}, + { "point": [ 1, 1, -1 ], "overmap": "railroad_station_under_1_1_north" }, + { "point": [ 1, 2, -1 ], "overmap": "railroad_station_under_1_2_north" }, + { "point": [ 1, 3, -1 ], "overmap": "railroad_station_under_1_3_north" } + ], + "connections": [ + { "point": [ 2, 0, 0 ], "terrain": "road" }, + { "point": [ 2, 5, 0 ], "terrain": "road" } + ], + "locations": [ "land", "forest" ], + "city_distance": [ -1, 20 ], + "city_sizes": [ 0, 12 ], + "occurrences": [ 0, 5 ], + "flags": [ "CLASSIC" ] } ] diff --git a/data/json/overmap_connections.json b/data/json/overmap_connections.json index 6eb7e29a2ba90..c12d47039c844 100644 --- a/data/json/overmap_connections.json +++ b/data/json/overmap_connections.json @@ -8,8 +8,12 @@ "locations": [ "field", "road" ] },{ "terrain": "road", - "locations": [ "forest" ], + "locations": [ "forest_without_trail" ], "basic_cost": 20 + },{ + "terrain": "road", + "locations": [ "forest_trail" ], + "basic_cost": 25 },{ "terrain": "road", "locations": [ "swamp" ], @@ -43,5 +47,30 @@ "flags": [ "ORTHOGONAL" ] } ] + }, { + "type": "overmap_connection", + "id": "forest_trail", + "subtypes": [ + { + "terrain": "forest_trail", + "locations": [ "forest_trail" ], + "basic_cost": 0 + }, + { + "terrain": "forest_trail", + "locations": [ "forest_edge" ], + "basic_cost": 100 + }, + { + "terrain": "forest_trail", + "locations": [ "forest_center" ], + "basic_cost": 0 + }, + { + "terrain": "forest_trail", + "locations": [ "swamp" ], + "basic_cost": 40 + } + ] } ] diff --git a/data/json/overmap_terrain.json b/data/json/overmap_terrain.json index f56abb5d44766..ea24394fa6f0e 100644 --- a/data/json/overmap_terrain.json +++ b/data/json/overmap_terrain.json @@ -323,10 +323,10 @@ "type": "overmap_terrain", "id": "duplex", "name": "duplex", - "copy-from" : "generic_city_building", + "copy-from": "generic_city_building", "color": "light_green", "see_cost": 2, - "flags" : [ "SIDEWALK" ] + "flags": [ "SIDEWALK" ] }, { "type": "overmap_terrain", @@ -1669,24 +1669,24 @@ "flags": [ "NO_ROTATE" ] }, { - "type" : "overmap_terrain", - "id" : "ants_lab", - "name" : "science lab", - "sym" : 76, - "color" : "light_blue", - "spawns" : { "group": "GROUP_LAB", "population": [0, 5], "chance": 20 }, - "see_cost" : 5, - "flags" : [ "NO_ROTATE" ] + "type": "overmap_terrain", + "id": "ants_lab", + "name": "science lab", + "sym": 76, + "color": "light_blue", + "spawns": { "group": "GROUP_LAB", "population": [ 0, 5 ], "chance": 20 }, + "see_cost": 5, + "flags": [ "NO_ROTATE" ] }, { - "type" : "overmap_terrain", - "id" : "ants_lab_stairs", - "name" : "science lab", - "sym" : 76, - "color" : "blue", - "see_cost" : 5, - "spawns" : { "group": "GROUP_LAB", "population": [0, 5], "chance": 20 }, - "flags" : [ "KNOWN_DOWN", "NO_ROTATE" ] + "type": "overmap_terrain", + "id": "ants_lab_stairs", + "name": "science lab", + "sym": 76, + "color": "blue", + "see_cost": 5, + "spawns": { "group": "GROUP_LAB", "population": [ 0, 5 ], "chance": 20 }, + "flags": [ "KNOWN_DOWN", "NO_ROTATE" ] }, { "type": "overmap_terrain", @@ -9099,204 +9099,232 @@ "color": "green" }, { - "type" : "overmap_terrain", - "id" : "s_vfw", - "copy-from": "generic_city_building", - "name" : "veterans of foreign wars", - "color" : "i_green" - },{ - "type" : "overmap_terrain", - "id" : "s_thrift", - "copy-from": "generic_city_building", - "name" : "thrift store", - "color" : "light_gray" - },{ - "type" : "overmap_terrain", - "id" : "s_daycare", - "copy-from": "generic_city_building", - "name" : "daycare center", - "color" : "blue" - },{ - "type" : "overmap_terrain", - "id" : "s_petstore", - "copy-from": "generic_city_building", - "name" : "pet supply store", - "color" : "yellow" - },{ - "type" : "overmap_terrain", - "id" : "large_storage_units_3", - "copy-from": "generic_city_building", - "name" : "storage units", - "sym" : 77, - "color" : "white" - },{ - "type" : "overmap_terrain", - "id" : "large_storage_units_2", - "copy-from": "generic_city_building", - "name" : "storage units", - "sym" : 77, - "color" : "white" - },{ - "type" : "overmap_terrain", - "id" : "large_storage_units_1", - "copy-from": "generic_city_building", - "name" : "storage units", - "sym" : 77, - "color" : "white" - },{ - "type" : "overmap_terrain", - "id" : "medium_storage_units_1", - "copy-from": "generic_city_building", - "name" : "storage units", - "sym" : 77, - "color" : "white" - },{ - "type" : "overmap_terrain", - "id" : "medium_storage_units_2", - "copy-from": "generic_city_building", - "name" : "storage units", - "sym" : 77, - "color" : "white" - },{ - "type" : "overmap_terrain", - "id" : "s_baseballfield_a1", - "copy-from": "generic_city_building", - "name" : "baseball field", - "sym" : 35, - "color" : "white" - },{ - "type" : "overmap_terrain", - "id" : "s_baseballfield_a2", - "copy-from": "generic_city_building", - "name" : "baseball field", - "sym" : 35, - "color" : "white" - },{ - "type" : "overmap_terrain", - "id" : "s_baseballfield_b1", - "copy-from": "generic_city_building", - "name" : "baseball field", - "sym" : 35, - "color" : "white" - },{ - "type" : "overmap_terrain", - "id" : "s_baseballfield_b2", - "copy-from": "generic_city_building", - "name" : "baseball field", - "sym" : 35, - "color" : "white" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_a1", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 43, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_a2", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 43, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_a3", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 43, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_a4", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 43, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_a5", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 43, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_a6", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 77, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_b1", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 77, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_b2", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 77, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_b3", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 77, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_b4", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 77, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_b5", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 77, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_shoppingplaza_b6", - "copy-from": "generic_city_building", - "name" : "abandoned shopping plaza", - "sym" : 77, - "color" : "red" - },{ - "type" : "overmap_terrain", - "id" : "s_reststop_1", - "copy-from": "generic_city_building", - "name" : "rest area", - "sym" : 35, - "color" : "blue" - },{ - "type" : "overmap_terrain", - "id" : "s_reststop_2", - "copy-from": "generic_city_building", - "name" : "rest area", - "sym" : 35, - "color" : "blue" - },{ - "type" : "overmap_terrain", - "id" : "s_restparking_1", - "copy-from": "generic_city_building", - "name" : "rest area parking", - "sym" : 43, - "color" : "dark_gray" - },{ - "type" : "overmap_terrain", - "id" : "s_restparking_2", - "copy-from": "generic_city_building", - "name" : "rest area parking", - "sym" : 43, - "color" : "dark_gray" + "type": "overmap_terrain", + "id": "s_vfw", + "copy-from": "generic_city_building", + "name": "veterans of foreign wars", + "color": "i_green" + }, + { + "type": "overmap_terrain", + "id": "s_thrift", + "copy-from": "generic_city_building", + "name": "thrift store", + "color": "light_gray" + }, + { + "type": "overmap_terrain", + "id": "s_daycare", + "copy-from": "generic_city_building", + "name": "daycare center", + "color": "blue" + }, + { + "type": "overmap_terrain", + "id": "s_petstore", + "copy-from": "generic_city_building", + "name": "pet supply store", + "color": "yellow" + }, + { + "type": "overmap_terrain", + "id": "large_storage_units_3", + "copy-from": "generic_city_building", + "name": "storage units", + "sym": 77, + "color": "white" + }, + { + "type": "overmap_terrain", + "id": "large_storage_units_2", + "copy-from": "generic_city_building", + "name": "storage units", + "sym": 77, + "color": "white" + }, + { + "type": "overmap_terrain", + "id": "large_storage_units_1", + "copy-from": "generic_city_building", + "name": "storage units", + "sym": 77, + "color": "white" + }, + { + "type": "overmap_terrain", + "id": "medium_storage_units_1", + "copy-from": "generic_city_building", + "name": "storage units", + "sym": 77, + "color": "white" + }, + { + "type": "overmap_terrain", + "id": "medium_storage_units_2", + "copy-from": "generic_city_building", + "name": "storage units", + "sym": 77, + "color": "white" + }, + { + "type": "overmap_terrain", + "id": "s_baseballfield_a1", + "copy-from": "generic_city_building", + "name": "baseball field", + "sym": 35, + "color": "white" + }, + { + "type": "overmap_terrain", + "id": "s_baseballfield_a2", + "copy-from": "generic_city_building", + "name": "baseball field", + "sym": 35, + "color": "white" + }, + { + "type": "overmap_terrain", + "id": "s_baseballfield_b1", + "copy-from": "generic_city_building", + "name": "baseball field", + "sym": 35, + "color": "white" + }, + { + "type": "overmap_terrain", + "id": "s_baseballfield_b2", + "copy-from": "generic_city_building", + "name": "baseball field", + "sym": 35, + "color": "white" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_a1", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 43, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_a2", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 43, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_a3", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 43, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_a4", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 43, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_a5", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 43, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_a6", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 77, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_b1", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 77, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_b2", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 77, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_b3", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 77, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_b4", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 77, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_b5", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 77, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_shoppingplaza_b6", + "copy-from": "generic_city_building", + "name": "abandoned shopping plaza", + "sym": 77, + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_reststop_1", + "copy-from": "generic_city_building", + "name": "rest area", + "sym": 35, + "color": "blue" + }, + { + "type": "overmap_terrain", + "id": "s_reststop_2", + "copy-from": "generic_city_building", + "name": "rest area", + "sym": 35, + "color": "blue" + }, + { + "type": "overmap_terrain", + "id": "s_restparking_1", + "copy-from": "generic_city_building", + "name": "rest area parking", + "sym": 43, + "color": "dark_gray" + }, + { + "type": "overmap_terrain", + "id": "s_restparking_2", + "copy-from": "generic_city_building", + "name": "rest area parking", + "sym": 43, + "color": "dark_gray" }, { "type": "overmap_terrain", @@ -9699,10 +9727,146 @@ "color": "white" }, { - "type": "overmap_terrain", - "id": "mass_grave", - "name": "mass grave", - "sym": 88, - "color": "yellow" + "type": "overmap_terrain", + "id": "mass_grave", + "name": "mass grave", + "sym": 88, + "color": "yellow" + }, + { + "abstract": "generic_railroad_station", + "type": "overmap_terrain", + "name": "railroad station", + "copy-from": "generic_city_building_no_sidewalk", + "sym": 82, + "color": "light_green" + }, + { + "abstract": "generic_railroad_station_under", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station", + "color": "dark_gray" + }, + { + "abstract": "generic_railroad_station_parking_lot", + "type": "overmap_terrain", + "name": "railroad station parking lot", + "copy-from": "generic_railroad_station", + "sym": 79, + "color": "dark_gray" + }, + { + "id": "railroad_station_0_1", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station", + "sym": 4194424 + }, + { + "id": "railroad_station_0_2", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station", + "sym": 4194424 + }, + { + "id": "railroad_station_0_3", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station", + "sym": 4194424 + }, + { + "id": "railroad_station_0_4", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station", + "sym": 4194424 + }, + { + "id": "railroad_station_1_1", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station" + }, + { + "id": "railroad_station_1_2", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station" + }, + { + "id": "railroad_station_1_3", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station" + }, + { + "id": "railroad_station_1_4", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station" + }, + { + "id": "railroad_station_2_1", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station_parking_lot" + }, + { + "id": "railroad_station_2_2", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station_parking_lot" + }, + { + "id": "railroad_station_2_3", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station_parking_lot" + }, + { + "id": "railroad_station_2_4", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station_parking_lot" + }, + { + "id": "railroad_station_under_0_1", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station_under" + }, + { + "id": "railroad_station_under_0_2", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station_under" + }, + { + "id": "railroad_station_under_0_3", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station_under" + }, + { + "id": "railroad_station_under_1_1", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station_under" + }, + { + "id": "railroad_station_under_1_2", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station_under" + }, + { + "id": "railroad_station_under_1_3", + "type": "overmap_terrain", + "copy-from": "generic_railroad_station_under" + }, + { + "type": "overmap_terrain", + "id": "forest_trail", + "name": "forest trail", + "sym": 84, + "color": "green", + "mapgen_straight": [ { "method": "builtin", "name": "forest_trail_straight" } ], + "mapgen_curved": [ { "method": "builtin", "name": "forest_trail_curved" } ], + "mapgen_end": [ { "method": "builtin", "name": "forest_trail_straight" } ], + "mapgen_tee": [ { "method": "builtin", "name": "forest_trail_tee" } ], + "mapgen_four_way": [ { "method": "builtin", "name": "forest_trail_four_way" } ], + "flags": [ "LINEAR" ] + }, + { + "type": "overmap_terrain", + "id": "trailhead", + "name": "trailhead", + "sym": 84, + "color": "brown" } ] diff --git a/data/json/professions.json b/data/json/professions.json index ba58dc96f6f10..9802d418f9719 100644 --- a/data/json/professions.json +++ b/data/json/professions.json @@ -1,4 +1,61 @@ [ + { + "type": "item_group", + "subtype": "collection", + "id": "army_mags_m4", + "entries": [ { "item": "stanag30", "ammo-item": "556", "charges": 30 }, { "item": "stanag30", "ammo-item": "556", "charges": 30 } ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "army_mags_mp5", + "entries": [ { "item": "mp5mag", "ammo-item": "9mm", "charges": 30 }, { "item": "mp5mag", "ammo-item": "9mm", "charges": 30 } ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "army_mags_rm51", + "entries": [ + { "item": "8x40_50_mag", "ammo-item": "8mm_fmj", "charges": 50 }, + { "item": "8x40_50_mag", "ammo-item": "8mm_fmj", "charges": 50 } + ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "army_mags_rm11b", + "entries": [ + { "item": "8x40_10_mag", "ammo-item": "8mm_fmj", "charges": 10 }, + { "item": "8x40_10_mag", "ammo-item": "8mm_fmj", "charges": 10 } + ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "army_mags_usp45", + "entries": [ + { "item": "usp45mag", "ammo-item": "45_acp", "charges": 12 }, + { "item": "usp45mag", "ammo-item": "45_acp", "charges": 12 } + ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "army_mags_usp9", + "entries": [ + { "item": "usp9mag", "ammo-item": "9mmfmj", "charges": 15 }, + { "item": "usp9mag", "ammo-item": "9mmfmj", "charges": 15 } + ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "army_mags_lw21", + "entries": [ + { "item": "lw21mag", "ammo-item": "9mmfmj", "charges": 21 }, + { "item": "lw21mag", "ammo-item": "9mmfmj", "charges": 21 } + ] + }, { "type": "profession_item_substitutions", "substitutions": [ @@ -13,7 +70,8 @@ [ "boots_winter", "boots_fur" ], [ "cloak_wool", "cloak_leather" ], [ "gloves_wool", "gloves_leather" ], - [ "kilt", "kilt_leather" ] + [ "kilt", "kilt_leather" ], + [ "mask_ski", "balclava" ] ] }, { @@ -391,21 +449,22 @@ "items": { "both": { "items": [ - "winter_pants_army", - "army_top", - "winter_jacket_army", - "helmet_liner", + "pants_army", + "undershirt", + "jacket_army", "helmet_army", - "balclava", - "winter_gloves_army", + "mask_ski", + "gloves_liner", + "gloves_tactical", "socks", "boots_combat", - "binoculars" + "molle_pack" ], "entries": [ + { "item": "modularvest", "contents-group": "army_mags_m4" }, { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, { "item": "knife_combat", "container-item": "sheath" }, - { "item": "m4a1", "ammo-item": "223", "charges": 30, "contents-item": "shoulder_strap" } + { "item": "m4a1", "ammo-item": "556", "charges": 30, "contents-item": [ "shoulder_strap", "holo_sight" ] } ] }, "male": [ "boxer_shorts" ], @@ -431,28 +490,28 @@ "items": { "both": { "items": [ - "undershirt", - "arm_warmers", - "leg_warmers", + "wetsuit", "pants_army", - "jacket_army", - "balclava", - "beret", - "gloves_liner", + "wetsuit_hood", + "tac_helmet", + "glasses_bal", + "wetsuit_gloves", "gloves_tactical", "socks", - "boots_combat" + "boots_combat", + "dive_bag", + "diving_watch" ], "entries": [ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, { "item": "kukri", "container-item": "sheath" }, + { "item": "chestrig", "contents-group": "army_mags_mp5" }, { - "item": "rm2000_smg", - "ammo-item": "8mm_fmj", - "charges": 25, - "contents-item": [ "shoulder_strap", "suppressor" ] - }, - { "item": "8mm_fmj", "charges": 55 } + "item": "hk_mp5", + "ammo-item": "9mm", + "charges": 30, + "contents-item": [ "shoulder_strap", "suppressor", "holo_sight" ] + } ] }, "male": [ "boxer_shorts" ], @@ -640,7 +699,7 @@ "entries": [ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, { "item": "usp_45", "ammo-item": "45_acp", "charges": 12, "container-item": "holster" }, - { "item": "45_acp", "charges": 18 } + { "item": "legpouch_large", "contents-group": "army_mags_usp45" } ] }, "male": [ "boxer_shorts" ], @@ -673,8 +732,8 @@ "ref_lighter" ], "entries": [ - { "item": "l_sp_45", "ammo-item": "45_acp", "charges": 12, "container-item": "sholster" }, - { "item": "45_acp", "charges": 18 } + { "item": "l_enforcer_45", "ammo-item": "45_acp", "charges": 6, "container-item": "sholster" }, + { "item": "45_acp", "charges": 24 } ] }, "male": [ "briefs" ], @@ -693,12 +752,18 @@ "traits": [ "PROF_SWAT" ], "items": { "both": { - "items": [ "socks", "swat_armor", "tac_fullhelmet", "boots_combat", "gloves_tactical", "badge_swat", "9mmfmj", "flashbang" ], + "items": [ "socks", "swat_armor", "tac_helmet", "boots_combat", "gloves_tactical", "badge_swat" ], "entries": [ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, + { "item": "chestrig", "contents-group": [ "army_mags_mp5", "army_mags_usp9" ] }, + { "item": "grenadebandolier", "contents-item": [ "flashbang", "flashbang" ] }, { "item": "usp_9mm", "ammo-item": "9mm", "charges": 15, "container-item": "sholster" }, - { "item": "hk_mp5", "ammo-item": "9mm", "charges": 30, "contents-item": "shoulder_strap" }, - { "item": "9mm", "charges": 55 } + { + "item": "hk_mp5", + "ammo-item": "9mm", + "charges": 30, + "contents-item": [ "shoulder_strap", "rail_laser_sight" ] + } ] }, "male": [ "boxer_shorts" ], @@ -721,13 +786,14 @@ "traits": [ "PROF_SWAT" ], "items": { "both": { - "items": [ "socks", "swat_armor", "tac_fullhelmet", "boots_combat", "gloves_tactical", "badge_swat", "shot_beanbag", "baton" ], + "items": [ "socks", "swat_armor", "tac_fullhelmet", "boots_combat", "gloves_tactical", "badge_swat", "baton" ], "entries": [ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, + { "item": "shot_00", "charges": 12, "container-item": "bandolier_shotgun" }, + { "item": "shot_slug", "charges": 12, "container-item": "bandolier_shotgun" }, + { "item": "legpouch_large", "contents-group": "army_mags_usp9" }, { "item": "usp_9mm", "ammo-item": "9mmfmj", "charges": 15, "container-item": "sholster" }, - { "item": "9mmfmj", "charges": 35 }, - { "item": "ksg", "ammo-item": "shot_00", "charges": 7, "contents-item": "shoulder_strap" }, - { "item": "shot_00", "charges": 13 } + { "item": "ksg", "ammo-item": "shot_00", "charges": 7, "contents-item": "shoulder_strap" } ] }, "male": [ "boxer_shorts" ], @@ -744,28 +810,25 @@ "traits": [ "PROF_POLICE" ], "items": { "both": { + "ammo": 100, "items": [ "socks", "pants_army", - "hoodie", + "sheriffshirt", + "sweatshirt", "sneakers", "gloves_tactical", "glasses_bal", - "hat_boonie", + "hat_ball", "badge_deputy", - "wristwatch" + "wristwatch", + "powered_earmuffs" ], "entries": [ - { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, { "item": "usp_45", "ammo-item": "45_acp", "charges": 12, "container-item": "holster" }, - { "item": "45_acp", "charges": 18 }, - { - "item": "remington_700", - "ammo-item": "3006", - "charges": 4, - "contents-item": [ "shoulder_strap", "rifle_scope" ] - }, - { "item": "3006", "charges": 16 } + { "item": "legpouch_large", "contents-group": "army_mags_usp45" }, + { "item": "m14mag", "ammo-item": "762_51", "charges": 20, "container-item": "chestrig" }, + { "item": "M24", "ammo-item": "762_51", "charges": 20, "container-item": "back_holster" } ] }, "male": [ "boxer_shorts" ], @@ -795,16 +858,16 @@ "gloves_tactical", "modularvestkevlar", "mask_gas", - "tac_helmet", + "helmet_riot", "armguard_hard", - "knee_pads", + "legguard_hard", "badge_deputy", "tonfa", "gasbomb" ], "entries": [ { "item": "usp_45", "ammo-item": "45_acp", "charges": 12, "container-item": "holster" }, - { "item": "45_acp", "charges": 18 }, + { "item": "legpouch_large", "contents-group": "army_mags_usp45" }, { "item": "tazer", "charges": 100 } ] }, @@ -1197,8 +1260,11 @@ "items": { "both": { "ammo": 100, - "items": [ "tac_fullhelmet", "chestrig", "pants_cargo", "under_armor", "socks", "boots", "badge_cybercop" ], - "entries": [ { "item": "l_mp_9mm", "ammo-item": "9mmP", "container-item": "holster" }, { "item": "9mmP", "charges": 29 } ] + "items": [ "tac_fullhelmet", "pants_cargo", "under_armor", "socks", "boots", "badge_cybercop" ], + "entries": [ + { "item": "l_mp_9mm", "ammo-item": "9mmP", "container-item": "holster" }, + { "item": "chestrig", "container-group": "army_mags_lw21" } + ] }, "male": [ "boxer_shorts" ], "female": [ "sports_bra", "boxer_shorts" ] @@ -1267,11 +1333,16 @@ "items": { "both": { "ammo": 100, - "items": [ "winter_pants_army", "winter_jacket_army", "winter_gloves_army", "balclava", "beret", "socks", "boots_combat" ], + "items": [ "winter_pants_army", "winter_jacket_army", "winter_gloves_army", "mask_ski", "tac_helmet", "socks", "boots_combat" ], "entries": [ + { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, { "item": "sheath", "contents-item": "knife_combat" }, - { "item": "rm51_assault_rifle", "ammo-item": "8mm_fmj", "contents-item": "shoulder_strap" }, - { "item": "8mm_fmj", "charges": 30 } + { + "item": "rm51_assault_rifle", + "ammo-item": "8mm_fmj", + "contents-item": [ "shoulder_strap", "acog_scope" ] + }, + { "item": "modularvestceramic", "contents-group": "army_mags_rm51" } ] }, "male": [ "boxer_shorts" ], @@ -1305,13 +1376,13 @@ "both": { "ammo": 100, "items": [ - "pants_army", + "winter_pants_army", "army_top", - "jacket_army", + "winter_jacket_army", "gloves_tactical", "rucksack", - "balclava", - "hat_boonie", + "cloak", + "mask_ski", "socks", "boots_combat", "canteen", @@ -1322,14 +1393,11 @@ "binoculars" ], "entries": [ - { "item": "m9", "ammo-item": "9mm", "charges": 15, "container-item": "holster" }, - { "item": "9mm", "charges": 35 }, - { - "item": "m2010", - "ammo-item": "300_winmag", - "contents-item": [ "shoulder_strap", "suppressor", "rifle_scope" ] - }, - { "item": "300_winmag", "charges": 15 } + { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, + { "item": "hat_boonie", "custom-flags": [ "no_auto_equip" ] }, + { "item": "rm11b_sniper_rifle", "ammo-item": "8mm_fmj", "contents-item": [ "shoulder_strap" ] }, + { "item": "usp_45", "ammo-item": "45_acp", "charges": 12, "container-item": "holster" }, + { "item": "chestrig", "contents-group": [ "army_mags_rm51", "army_mags_usp45" ] } ] }, "male": [ "boxer_shorts" ], diff --git a/data/json/recipes/armor/other.json b/data/json/recipes/armor/other.json index bc14bf263a670..d1d914321d164 100644 --- a/data/json/recipes/armor/other.json +++ b/data/json/recipes/armor/other.json @@ -34,19 +34,64 @@ }, { "result": "gold_bracelet", - "copy-from": "ring", "type": "recipe", + "category": "CC_ARMOR", + "subcategory": "CSC_ARMOR_OTHER", + "skill_used": "fabrication", + "difficulty": 6, + "time": 120000, + "book_learn": [ [ "jewelry_book", 6 ] ], + "qualities": [ + { "id": "ANVIL", "level": 3 }, + { "id": "HAMMER", "level": 3 }, + { "id": "CHISEL", "level": 3 } + ], + "tools": [ + [ [ "tongs", -1 ] ], + [ [ "swage", -1 ] ], + [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] + ], "components": [ [ [ "gold_small", 12 ] ] ] }, { "result": "copper_bracelet", - "copy-from": "ring", + "category": "CC_ARMOR", + "subcategory": "CSC_ARMOR_OTHER", + "skill_used": "fabrication", + "difficulty": 6, + "time": 120000, + "book_learn": [ [ "jewelry_book", 6 ] ], + "qualities": [ + { "id": "ANVIL", "level": 3 }, + { "id": "HAMMER", "level": 3 }, + { "id": "CHISEL", "level": 3 } + ], + "tools": [ + [ [ "tongs", -1 ] ], + [ [ "swage", -1 ] ], + [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] + ], "type": "recipe", "components": [ [ [ "copper", 60 ] ] ] }, { "result": "silver_bracelet", - "copy-from": "ring", + "category": "CC_ARMOR", + "subcategory": "CSC_ARMOR_OTHER", + "skill_used": "fabrication", + "difficulty": 6, + "time": 120000, + "book_learn": [ [ "jewelry_book", 6 ] ], + "qualities": [ + { "id": "ANVIL", "level": 3 }, + { "id": "HAMMER", "level": 3 }, + { "id": "CHISEL", "level": 3 } + ], + "tools": [ + [ [ "tongs", -1 ] ], + [ [ "swage", -1 ] ], + [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] + ], "type": "recipe", "components": [ [ [ "silver_small", 15 ] ] ] }, diff --git a/data/json/recipes/engines.json b/data/json/recipes/engines.json index 9825dd6886028..3be2a39313560 100644 --- a/data/json/recipes/engines.json +++ b/data/json/recipes/engines.json @@ -8,7 +8,8 @@ { "type": "uncraft", "result": "1cyl_combustion", - "copy-from": "engine_disassembly", + "skill_used": "mechanics", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "WRENCH_FINE", "level": 1 } ], "difficulty": 4, "time": 40000, "components": [ @@ -26,7 +27,8 @@ { "type": "uncraft", "result": "1cyl_combustion_small", - "copy-from": "engine_disassembly", + "skill_used": "mechanics", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "WRENCH_FINE", "level": 1 } ], "difficulty": 4, "time": 40000, "components": [ @@ -44,7 +46,8 @@ { "type": "uncraft", "result": "i4_combustion", - "copy-from": "engine_disassembly", + "skill_used": "mechanics", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "WRENCH_FINE", "level": 1 } ], "difficulty": 4, "time": 40000, "components": [ @@ -62,7 +65,8 @@ { "type": "uncraft", "result": "i6_diesel", - "copy-from": "engine_disassembly", + "skill_used": "mechanics", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "WRENCH_FINE", "level": 1 } ], "difficulty": 4, "time": 50000, "components": [ @@ -82,7 +86,8 @@ { "type": "uncraft", "result": "v2_combustion", - "copy-from": "engine_disassembly", + "skill_used": "mechanics", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "WRENCH_FINE", "level": 1 } ], "difficulty": 4, "time": 40000, "components": [ @@ -100,7 +105,8 @@ { "type": "uncraft", "result": "v6_combustion", - "copy-from": "engine_disassembly", + "skill_used": "mechanics", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "WRENCH_FINE", "level": 1 } ], "difficulty": 4, "time": 40000, "components": [ @@ -118,7 +124,8 @@ { "type": "uncraft", "result": "v6_diesel", - "copy-from": "engine_disassembly", + "skill_used": "mechanics", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "WRENCH_FINE", "level": 1 } ], "difficulty": 4, "time": 50000, "components": [ @@ -138,7 +145,8 @@ { "type": "uncraft", "result": "v8_combustion", - "copy-from": "engine_disassembly", + "skill_used": "mechanics", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "WRENCH_FINE", "level": 1 } ], "difficulty": 4, "time": 40000, "components": [ @@ -156,7 +164,8 @@ { "type": "uncraft", "result": "v8_diesel", - "copy-from": "engine_disassembly", + "skill_used": "mechanics", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "WRENCH_FINE", "level": 1 } ], "difficulty": 4, "time": 50000, "components": [ @@ -176,7 +185,8 @@ { "type": "uncraft", "result": "v12_combustion", - "copy-from": "engine_disassembly", + "skill_used": "mechanics", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "WRENCH_FINE", "level": 1 } ], "difficulty": 4, "time": 40000, "components": [ @@ -194,7 +204,8 @@ { "type": "uncraft", "result": "v12_diesel", - "copy-from": "engine_disassembly", + "skill_used": "mechanics", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "WRENCH_FINE", "level": 1 } ], "difficulty": 4, "time": 50000, "components": [ diff --git a/data/json/recipes/other/vehicle.json b/data/json/recipes/other/vehicle.json index af6a6a3b47084..58ee78d04de14 100644 --- a/data/json/recipes/other/vehicle.json +++ b/data/json/recipes/other/vehicle.json @@ -178,9 +178,14 @@ { "type": "recipe", "result": "animal_locker", - "copy-from": "animal_locker", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_VEHICLE", + "skill_used": "fabrication", + "skills_required": [ "mechanics", 1 ], + "difficulty": 4, "id_suffix": "repurpose_wire_basket", "time": 25000, + "autolearn": true, "using": [ [ "welding_standard", 2 ] ], "qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "SAW_M", "level": 1 }, { "id": "WRENCH", "level": 1 } ], "components": [ [ [ "pipe", 6 ] ], [ [ "basket", 1 ] ] ] diff --git a/data/json/recipes/recipe_deconstruction.json b/data/json/recipes/recipe_deconstruction.json index 6dca30b215d81..a06817d31844b 100644 --- a/data/json/recipes/recipe_deconstruction.json +++ b/data/json/recipes/recipe_deconstruction.json @@ -486,23 +486,30 @@ { "result": "badge_deputy", "type": "uncraft", - "copy-from": "badge_cybercop" + "time": 500, + "qualities": [ { "id": "HAMMER", "level": 1 } ], + "components": [ [ [ "silver_small", 20 ] ] ] }, { "result": "badge_detective", "type": "uncraft", - "copy-from": "badge_cybercop", + "time": 500, + "qualities": [ { "id": "HAMMER", "level": 1 } ], "components": [ [ [ "gold_small", 20 ] ] ] }, { "result": "badge_marshal", "type": "uncraft", - "copy-from": "badge_cybercop" + "time": 500, + "qualities": [ { "id": "HAMMER", "level": 1 } ], + "components": [ [ [ "silver_small", 20 ] ] ] }, { "result": "badge_swat", "type": "uncraft", - "copy-from": "badge_cybercop" + "time": 500, + "qualities": [ { "id": "HAMMER", "level": 1 } ], + "components": [ [ [ "silver_small", 20 ] ] ] }, { "result": "baseball", @@ -1343,136 +1350,6 @@ [ [ "steel_chunk", 7 ] ] ] }, - { - "result": "mre_beef_box", - "type": "uncraft", - "time": 500, - "components": [ - [ [ "mre_beef", 4 ] ], - [ [ "pur_tablets", 6 ] ], - [ [ "gummy_vitamins", 1 ] ], - [ [ "crackers", 2 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "dry_fruit", 1 ] ], - [ [ "chocolate", 1 ] ], - [ [ "candy2", 2 ] ], - [ [ "cookies", 1 ] ], - [ [ "coffee_raw", 1 ] ], - [ [ "lemonade_powder", 2 ] ], - [ [ "matches", 1 ] ], - [ [ "protein_powder", 1 ] ], - [ [ "gum", 2 ] ], - [ [ "paper", 8 ] ], - [ [ "spork", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_chicken_box", - "type": "uncraft", - "time": 500, - "components": [ - [ [ "mre_chicken", 4 ] ], - [ [ "pur_tablets", 6 ] ], - [ [ "gummy_vitamins", 1 ] ], - [ [ "crackers", 2 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "dry_fruit", 1 ] ], - [ [ "chocolate", 1 ] ], - [ [ "candy2", 2 ] ], - [ [ "cookies", 1 ] ], - [ [ "coffee_raw", 1 ] ], - [ [ "lemonade_powder", 2 ] ], - [ [ "matches", 1 ] ], - [ [ "protein_powder", 1 ] ], - [ [ "gum", 2 ] ], - [ [ "paper", 8 ] ], - [ [ "spork", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_hotdog_box", - "type": "uncraft", - "time": 500, - "components": [ - [ [ "mre_hotdogs", 4 ] ], - [ [ "pur_tablets", 6 ] ], - [ [ "gummy_vitamins", 1 ] ], - [ [ "crackers", 2 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "dry_fruit", 1 ] ], - [ [ "chocolate", 1 ] ], - [ [ "candy2", 2 ] ], - [ [ "cookies", 1 ] ], - [ [ "coffee_raw", 1 ] ], - [ [ "lemonade_powder", 2 ] ], - [ [ "matches", 1 ] ], - [ [ "protein_powder", 1 ] ], - [ [ "gum", 2 ] ], - [ [ "paper", 8 ] ], - [ [ "spork", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_ravioli_box", - "type": "uncraft", - "time": 500, - "components": [ - [ [ "mre_ravioli", 4 ] ], - [ [ "pur_tablets", 6 ] ], - [ [ "gummy_vitamins", 1 ] ], - [ [ "crackers", 2 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "dry_fruit", 1 ] ], - [ [ "chocolate", 1 ] ], - [ [ "candy2", 2 ] ], - [ [ "cookies", 1 ] ], - [ [ "coffee_raw", 1 ] ], - [ [ "lemonade_powder", 2 ] ], - [ [ "matches", 1 ] ], - [ [ "protein_powder", 1 ] ], - [ [ "gum", 2 ] ], - [ [ "paper", 8 ] ], - [ [ "spork", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_veggy_box", - "type": "uncraft", - "time": 500, - "components": [ - [ [ "mre_veggy", 4 ] ], - [ [ "pur_tablets", 6 ] ], - [ [ "gummy_vitamins", 1 ] ], - [ [ "crackers", 2 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "dry_fruit", 1 ] ], - [ [ "chocolate", 1 ] ], - [ [ "candy2", 2 ] ], - [ [ "cookies", 1 ] ], - [ [ "coffee_raw", 1 ] ], - [ [ "lemonade_powder", 2 ] ], - [ [ "matches", 1 ] ], - [ [ "protein_powder", 1 ] ], - [ [ "gum", 2 ] ], - [ [ "paper", 8 ] ], - [ [ "spork", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, { "result": "multi_cooker", "type": "uncraft", diff --git a/data/json/recipes/recipe_deconstruction_package.json b/data/json/recipes/recipe_deconstruction_package.json new file mode 100644 index 0000000000000..46b42d91a557b --- /dev/null +++ b/data/json/recipes/recipe_deconstruction_package.json @@ -0,0 +1,402 @@ +[ + { + "result": "mre_accessory", + "type": "uncraft", + "time": 60, + "components": [ + [ [ "pur_tablets", 6 ] ], + [ [ "gummy_vitamins", 1 ] ], + [ [ "coffee_raw", 1 ] ], + [ [ "lemonade_powder", 2 ] ], + [ [ "matches", 1 ] ], + [ [ "protein_powder", 1 ] ], + [ [ "gum", 2 ] ], + [ [ "paper", 8 ] ], + [ [ "spork", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_dessert", + "type": "uncraft", + "time": 60, + "components": [ [ [ "dry_fruit", 1 ] ], [ [ "chocolate", 1 ] ], [ [ "candy2", 2 ] ], [ [ "cookies", 1 ] ], [ [ "bag_plastic", 1 ] ] ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_chilibeans_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_chilibeans", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_bbqbeef_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_bbqbeef", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_chickennoodle_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_chickennoodle", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_spaghetti_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_spaghetti", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_chicken_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_chicken", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_beeftaco_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_beeftaco", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_beef_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_beef", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_meatball_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_meatball", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_beefstew_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_beefstew", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_chilimac_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_chilimac", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_veggy_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_veggy", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_macaronimarinara_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_macaronimarinara", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_cheesetort_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_cheesetort", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_mushroomfettuccine_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_mushroomfettuccine", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_mexicanchickenstew_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_mexicanchickenstew", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_chickenburritobowl_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_chickenburritobowl", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_maplesausage_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_maplesausage", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_ravioli_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_ravioli", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_pepperjackbeef_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_pepperjackbeef", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_hashbrownbacon_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_hashbrownbacon", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_lemontuna_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_lemontuna", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_asianbeef_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_asianbeef", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_chickenpesto_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_chickenpesto", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_southwestbeef_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_southwestbeef", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + }, + { + "result": "mre_hotdog_box", + "type": "uncraft", + "time": 500, + "components": [ + [ [ "mre_hotdog", 4 ] ], + [ [ "crackers", 2 ] ], + [ [ "can_cheese", 1 ] ], + [ [ "heatpack", 1 ] ], + [ [ "mre_dessert", 1 ] ], + [ [ "mre_accessory", 1 ] ], + [ [ "bag_plastic", 1 ] ] + ], + "flags": [ "BLIND_EASY" ] + } +] diff --git a/data/json/recipes/recipe_food.json b/data/json/recipes/recipe_food.json index d5f6250beded4..aa62e25701f78 100644 --- a/data/json/recipes/recipe_food.json +++ b/data/json/recipes/recipe_food.json @@ -2099,7 +2099,7 @@ [ "salted_fish", 3 ], [ "fish_smoked", 2 ], [ "fish_pickled", 1 ], - [ "fish_vac", 2 ], + [ "salted_fish", 2 ], [ "fish_canned", 1 ], [ "can_salmon", 1 ], [ "can_tuna", 1 ] @@ -3234,12 +3234,12 @@ [ "jerky", 3 ], [ "salted_fish", 2 ], [ "meat_pickled", 1 ], - [ "meat_vac", 1 ], + [ "meat_salted", 1 ], [ "meat_canned", 1 ], [ "can_chicken", 1 ], [ "can_spam", 1 ], [ "fish_pickled", 1 ], - [ "fish_vac", 1 ], + [ "salted_fish", 1 ], [ "fish_canned", 1 ], [ "cracklins", 4 ], [ "can_sardine", 1 ], @@ -3273,12 +3273,12 @@ [ "jerky", 3 ], [ "salted_fish", 2 ], [ "meat_pickled", 1 ], - [ "meat_vac", 1 ], + [ "meat_salted", 1 ], [ "meat_canned", 1 ], [ "can_chicken", 1 ], [ "can_spam", 1 ], [ "fish_pickled", 1 ], - [ "fish_vac", 1 ], + [ "salted_fish", 1 ], [ "fish_canned", 1 ], [ "cracklins", 4 ], [ "can_sardine", 1 ], @@ -3705,7 +3705,7 @@ [ [ "veggy", 2 ], [ "veggy_wild", 2 ], - [ "veggy_vac", 2 ], + [ "veggy_salted", 2 ], [ "rehydrated_veggy", 2 ], [ "dry_veggy", 2 ], [ "mushroom", 2 ], @@ -3736,7 +3736,7 @@ [ [ "veggy", 2 ], [ "veggy_wild", 2 ], - [ "veggy_vac", 2 ], + [ "veggy_salted", 2 ], [ "rehydrated_veggy", 2 ], [ "dry_veggy", 2 ], [ "mushroom", 2 ], @@ -3766,7 +3766,7 @@ [ [ "veggy", 2 ], [ "veggy_wild", 2 ], - [ "veggy_vac", 2 ], + [ "veggy_salted", 2 ], [ "rehydrated_veggy", 2 ], [ "mushroom", 2 ], [ "dry_mushroom", 2 ], @@ -3795,7 +3795,7 @@ [ [ "veggy", 2 ], [ "veggy_wild", 2 ], - [ "veggy_vac", 2 ], + [ "veggy_salted", 2 ], [ "rehydrated_veggy", 2 ], [ "mushroom", 2 ], [ "dry_mushroom", 2 ], @@ -3825,7 +3825,7 @@ [ [ "veggy", 2 ], [ "veggy_wild", 2 ], - [ "veggy_vac", 2 ], + [ "veggy_salted", 2 ], [ "celery", 2 ], [ "irradiated_celery", 2 ], [ "cabbage", 2 ], @@ -3916,13 +3916,13 @@ [ "meat", 2 ], [ "meat_canned", 2 ], [ "can_chicken", 2 ], - [ "meat_vac", 2 ], + [ "meat_salted", 2 ], [ "rehydrated_meat", 2 ], [ "dry_meat", 2 ], [ "fish", 3 ], [ "fish_canned", 3 ], [ "can_tuna", 3 ], - [ "fish_vac", 3 ], + [ "salted_fish", 3 ], [ "rehydrated_fish", 3 ], [ "dry_fish", 3 ] ], @@ -3946,7 +3946,7 @@ [ [ "human_flesh", 2 ], [ "human_canned", 1 ], - [ "hflesh_vac", 2 ], + [ "hflesh_salted", 2 ], [ "rehydrated_hflesh", 2 ], [ "dry_hflesh", 2 ] ], @@ -4416,7 +4416,7 @@ [ "salted_fish", 3 ], [ "fish_smoked", 4 ], [ "fish_pickled", 2 ], - [ "fish_vac", 4 ], + [ "salted_fish", 4 ], [ "fish_canned", 2 ], [ "can_salmon", 2 ], [ "can_tuna", 2 ] @@ -4560,9 +4560,30 @@ "tools": [ [ [ "surface_heat", 100, "LIST" ] ], [ [ "pot_canning", -1 ] ] ], "components": [ [ [ "jar_glass", 1 ] ], [ [ "bone_human", 20 ] ], [ [ "water", 12 ], [ "water_clean", 12 ] ] ] }, + { + "type": "recipe", + "result": "meat_salted", + "id_suffix": "vacuum_packed", + "container": "plastic_bag_vac", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_MEAT", + "skill_used": "cooking", + "difficulty": 4, + "time": 20000, + "autolearn": true, + "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], + "tools": [ [ [ "vac_sealer", 10 ], [ "makeshift_sealer", 20 ] ] ], + "components": [ + [ [ "water", 1 ], [ "water_clean", 1 ] ], + [ [ "bag_plastic", 1 ] ], + [ [ "meat", 2 ] ], + [ [ "salt_water", 1 ], [ "saline", 5 ], [ "salt", 10 ], [ "chem_saltpetre", 5 ] ] + ] + }, { "type": "recipe", "result": "bag_meat_vac", + "obsolete": true, "category": "CC_FOOD", "subcategory": "CSC_FOOD_MEAT", "skill_used": "cooking", @@ -4578,9 +4599,30 @@ [ [ "salt_water", 1 ], [ "saline", 5 ], [ "salt", 10 ], [ "chem_saltpetre", 5 ] ] ] }, + { + "type": "recipe", + "result": "salted_fish", + "id_suffix": "vacuum_packed", + "container": "plastic_bag_vac", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_MEAT", + "skill_used": "cooking", + "difficulty": 4, + "time": 20000, + "autolearn": true, + "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], + "tools": [ [ [ "vac_sealer", 10 ], [ "makeshift_sealer", 20 ] ] ], + "components": [ + [ [ "water", 1 ], [ "water_clean", 1 ] ], + [ [ "bag_plastic", 1 ] ], + [ [ "fish", 2 ] ], + [ [ "salt_water", 1 ], [ "saline", 5 ], [ "salt", 5 ], [ "chem_saltpetre", 2 ] ] + ] + }, { "type": "recipe", "result": "bag_fish_vac", + "obsolete": true, "category": "CC_FOOD", "subcategory": "CSC_FOOD_MEAT", "skill_used": "cooking", @@ -4593,12 +4635,33 @@ [ [ "water", 1 ], [ "water_clean", 1 ] ], [ [ "bag_plastic", 1 ] ], [ [ "fish", 2 ] ], + [ [ "salt_water", 1 ], [ "saline", 5 ], [ "salt", 5 ], [ "chem_saltpetre", 2 ] ] + ] + }, + { + "type": "recipe", + "result": "hflesh_salted", + "id_suffix": "vacuum_packed", + "container": "plastic_bag_vac", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_MEAT", + "skill_used": "cooking", + "difficulty": 4, + "time": 20000, + "book_learn": [ [ "cookbook_human", 4 ] ], + "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], + "tools": [ [ [ "vac_sealer", 10 ], [ "makeshift_sealer", 20 ] ] ], + "components": [ + [ [ "water", 1 ], [ "water_clean", 1 ] ], + [ [ "bag_plastic", 1 ] ], + [ [ "human_flesh", 2 ] ], [ [ "salt_water", 1 ], [ "saline", 5 ], [ "salt", 10 ], [ "chem_saltpetre", 5 ] ] ] }, { "type": "recipe", "result": "bag_hflesh_vac", + "obsolete": true, "category": "CC_FOOD", "subcategory": "CSC_FOOD_MEAT", "skill_used": "cooking", @@ -4614,9 +4677,30 @@ [ [ "salt_water", 1 ], [ "saline", 5 ], [ "salt", 10 ], [ "chem_saltpetre", 5 ] ] ] }, + { + "type": "recipe", + "result": "veggy_salted", + "id_suffix": "vacuum_packed", + "container": "plastic_bag_vac", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_VEGGI", + "skill_used": "cooking", + "difficulty": 4, + "time": 20000, + "autolearn": true, + "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], + "tools": [ [ [ "vac_sealer", 10 ], [ "makeshift_sealer", 20 ] ] ], + "components": [ + [ [ "water", 1 ], [ "water_clean", 1 ] ], + [ [ "bag_plastic", 1 ] ], + [ [ "mushroom", 2 ], [ "veggy", 2 ], [ "veggy_wild", 2 ] ], + [ [ "salt_water", 1 ], [ "saline", 5 ], [ "salt", 10 ], [ "chem_saltpetre", 5 ] ] + ] + }, { "type": "recipe", "result": "bag_veggy_vac", + "obsolete": true, "category": "CC_FOOD", "subcategory": "CSC_FOOD_VEGGI", "skill_used": "cooking", @@ -4632,9 +4716,30 @@ [ [ "salt_water", 1 ], [ "saline", 5 ], [ "salt", 10 ], [ "chem_saltpetre", 5 ] ] ] }, + { + "type": "recipe", + "result": "apple_sugar", + "id_suffix": "vacuum_packed", + "container": "plastic_bag_vac", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_VEGGI", + "skill_used": "cooking", + "difficulty": 4, + "time": 20000, + "autolearn": true, + "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], + "tools": [ [ [ "vac_sealer", 5 ], [ "makeshift_sealer", 10 ] ] ], + "components": [ + [ [ "water", 1 ], [ "water_clean", 1 ] ], + [ [ "bag_plastic", 1 ] ], + [ [ "sweet_fruit", 1, "LIST" ] ], + [ [ "sugar", 5 ] ] + ] + }, { "type": "recipe", "result": "bag_apple_vac", + "obsolete": true, "category": "CC_FOOD", "subcategory": "CSC_FOOD_VEGGI", "skill_used": "cooking", @@ -4662,6 +4767,7 @@ "skills_required": [ "mechanics", 1 ], "difficulty": 3, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 80, 4 ], "qualities": [ { "id": "COOK", "level": 3 } ], @@ -4953,7 +5059,7 @@ "qualities": [ { "id": "CUT", "level": 1 } ], "components": [ [ - [ "hflesh_vac", 1 ], + [ "hflesh_salted", 1 ], [ "human_canned", 1 ], [ "hflesh_aspic", 1 ], [ "human_smoked", 1 ], @@ -4968,7 +5074,7 @@ [ [ "veggy_cooked", 1 ], [ "veggy_wild_cooked", 1 ], - [ "veggy_vac", 1 ], + [ "veggy_salted", 1 ], [ "celery", 1 ], [ "irradiated_celery", 1 ], [ "cabbage", 1 ], @@ -5037,7 +5143,7 @@ [ "bologna", 5 ], [ "fish_cooked", 1 ], [ "bacon", 2 ], - [ "meat_vac", 2 ], + [ "meat_salted", 2 ], [ "fried_spam", 2 ], [ "rehydrated_meat", 2 ], [ "fish_smoked", 1 ], @@ -5061,7 +5167,7 @@ [ [ "veggy_cooked", 1 ], [ "veggy_wild_cooked", 1 ], - [ "veggy_vac", 1 ], + [ "veggy_salted", 1 ], [ "celery", 1 ], [ "irradiated_celery", 1 ], [ "cabbage", 1 ], @@ -6476,7 +6582,7 @@ [ "salted_fish", 3 ], [ "fish_smoked", 2 ], [ "fish_pickled", 1 ], - [ "fish_vac", 2 ], + [ "salted_fish", 2 ], [ "fish_canned", 1 ], [ "can_salmon", 1 ], [ "can_tuna", 1 ] @@ -6539,7 +6645,7 @@ [ [ "veggy_cooked", 1 ], [ "veggy_wild_cooked", 1 ], - [ "veggy_vac", 1 ], + [ "veggy_salted", 1 ], [ "celery", 1 ], [ "irradiated_celery", 1 ], [ "cabbage", 1 ], @@ -6912,7 +7018,7 @@ [ "dry_hflesh", 1 ], [ "human_canned", 1 ], [ "jerky_human", 1 ], - [ "hflesh_vac", 1 ], + [ "hflesh_salted", 1 ], [ "human_smoked", 1 ] ], [ [ "fat", 1 ], [ "tallow", 1 ], [ "lard", 1 ] ] @@ -7422,7 +7528,11 @@ { "type": "recipe", "result": "hflesh_pemmican", - "copy-from": "pemmican", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_MEAT", + "skill_used": "cooking", + "difficulty": 5, + "time": 45000, "autolearn": false, "book_learn": [ [ "cookbook_human", 5 ] ], "qualities": [ { "id": "CUT", "level": 1 } ], @@ -7502,6 +7612,7 @@ "skill_used": "cooking", "difficulty": 4, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 83, 5 ], "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], @@ -7519,6 +7630,7 @@ "skill_used": "cooking", "difficulty": 4, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 83, 5 ], "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], @@ -7540,6 +7652,7 @@ "skill_used": "cooking", "difficulty": 4, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 83, 5 ], "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], @@ -7557,6 +7670,7 @@ "skill_used": "cooking", "difficulty": 4, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 83, 5 ], "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], @@ -7573,6 +7687,7 @@ "skill_used": "cooking", "difficulty": 4, "time": 40000, + "result_mult": 12, "batch_time_factors": [ 83, 5 ], "autolearn": true, "container": "jar_3l_glass_sealed", @@ -7593,7 +7708,7 @@ "time": 40000, "autolearn": true, "batch_time_factors": [ 83, 5 ], - "result_mult": 6, + "result_mult": 12, "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], "tools": [ [ [ "surface_heat", 200, "LIST" ] ], [ [ "pot_canning", -1 ] ] ], "components": [ @@ -7612,6 +7727,7 @@ "skill_used": "cooking", "difficulty": 6, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 83, 5 ], "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], @@ -7634,6 +7750,7 @@ "skill_used": "cooking", "difficulty": 6, "time": 40000, + "result_mult": 12, "book_learn": [ [ "cookbook_human", 6 ] ], "batch_time_factors": [ 83, 5 ], "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], @@ -7655,6 +7772,7 @@ "skill_used": "cooking", "difficulty": 6, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 83, 5 ], "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], @@ -7676,6 +7794,7 @@ "skill_used": "cooking", "difficulty": 5, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 83, 5 ], "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], @@ -7721,6 +7840,7 @@ "skills_required": [ "mechanics", 1 ], "difficulty": 4, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 80, 4 ], "qualities": [ { "id": "COOK", "level": 3 } ], @@ -7771,7 +7891,7 @@ { "type": "recipe", "result": "soup_meat", - "id_suffix": "jarred", + "id_suffix": "jarred_3l", "byproducts": [ [ "water", 10 ] ], "container": "jar_3l_glass_sealed", "category": "CC_FOOD", @@ -7780,6 +7900,7 @@ "skills_required": [ "mechanics", 1 ], "difficulty": 4, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 80, 4 ], "qualities": [ { "id": "COOK", "level": 3 } ], @@ -7825,6 +7946,7 @@ "skills_required": [ "mechanics", 1 ], "difficulty": 4, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 80, 4 ], "qualities": [ { "id": "COOK", "level": 3 } ], @@ -7894,6 +8016,7 @@ "skills_required": [ "mechanics", 1 ], "difficulty": 4, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 80, 4 ], "qualities": [ { "id": "COOK", "level": 3 } ], @@ -7958,7 +8081,6 @@ [ "salted_fish", 18 ], [ "fish_smoked", 24 ], [ "fish_pickled", 12 ], - [ "fish_vac", 24 ], [ "fish_canned", 12 ], [ "can_salmon", 12 ], [ "can_tuna", 12 ] @@ -7977,6 +8099,7 @@ "skills_required": [ "mechanics", 1 ], "difficulty": 4, "time": 40000, + "result_mult": 12, "book_learn": [ [ "cookbook_human", 4 ] ], "batch_time_factors": [ 80, 4 ], "qualities": [ { "id": "COOK", "level": 3 } ], @@ -8021,6 +8144,7 @@ "skills_required": [ "mechanics", 1 ], "difficulty": 4, "time": 40000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 80, 4 ], "qualities": [ { "id": "COOK", "level": 3 } ], @@ -8075,6 +8199,7 @@ "skills_required": [ "mechanics", 1 ], "difficulty": 4, "time": 70000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 80, 4 ], "qualities": [ { "id": "COOK", "level": 3 } ], @@ -8093,6 +8218,7 @@ "skills_required": [ "mechanics", 1 ], "difficulty": 4, "time": 70000, + "result_mult": 12, "book_learn": [ [ "cookbook_human", 4 ] ], "batch_time_factors": [ 80, 4 ], "qualities": [ { "id": "COOK", "level": 3 } ], @@ -8110,6 +8236,7 @@ "skill_used": "cooking", "difficulty": 4, "time": 120000, + "result_mult": 12, "autolearn": true, "batch_time_factors": [ 80, 4 ], "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], diff --git a/data/json/recipes/recipe_medsandchemicals.json b/data/json/recipes/recipe_medsandchemicals.json index 39dd153f04fa1..a751daaa66a94 100644 --- a/data/json/recipes/recipe_medsandchemicals.json +++ b/data/json/recipes/recipe_medsandchemicals.json @@ -444,7 +444,9 @@ [ "saline", 5 ] ], [ - [ "oxycodone", 40 ] + [ "codeine", 25 ], + [ "morphine", 3 ], + [ "oxycodone", 2 ] ] ] },{ diff --git a/data/json/recipes/recipe_others.json b/data/json/recipes/recipe_others.json index 261c52843832f..cf75e9c51ec9f 100644 --- a/data/json/recipes/recipe_others.json +++ b/data/json/recipes/recipe_others.json @@ -1112,7 +1112,7 @@ }, { "type": "recipe", - "result": "screwdriver", + "result": "screwdriver_set", "id_suffix": "forged", "category": "CC_OTHER", "subcategory": "CSC_OTHER_TOOLS", diff --git a/data/json/recipes/recipe_vehicle.json b/data/json/recipes/recipe_vehicle.json index 73769c3b46bdf..f6ba0e01bf411 100644 --- a/data/json/recipes/recipe_vehicle.json +++ b/data/json/recipes/recipe_vehicle.json @@ -26,6 +26,19 @@ [ [ "water", 150 ] ] ] }, + { + "type": "recipe", + "result": "fuel_bunker", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_VEHICLE", + "skill_used": "fabrication", + "difficulty": 1, + "time": 10000, + "autolearn": true, + "using": [ [ "welding_standard", 10 ] ], + "qualities": [ { "id": "HAMMER", "level": 2 } ], + "components": [ [ [ "sheet_metal", 3 ] ] ] + }, { "result": "bike_rack", "type": "recipe", diff --git a/data/json/recipes/recipe_weapon.json b/data/json/recipes/recipe_weapon.json index 45f6c270a7162..e76ab894555c8 100644 --- a/data/json/recipes/recipe_weapon.json +++ b/data/json/recipes/recipe_weapon.json @@ -289,7 +289,7 @@ "autolearn": true, "book_learn": [ [ "manual_archery", 2 ], [ "recipe_bows", 1 ], [ "book_archery", 3 ] ], "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "stick", 1 ], [ "2x4", 1 ] ], [ [ "cordage", 2, "LIST" ], [ "filament", 200, "LIST" ] ] ] + "components": [ [ [ "stick_long", 1 ], [ "2x4", 1 ] ], [ [ "cordage", 2, "LIST" ], [ "filament", 200, "LIST" ] ] ] }, { "type": "recipe", @@ -298,14 +298,13 @@ "subcategory": "CSC_WEAPON_RANGED", "skill_used": "fabrication", "skills_required": [ "archery", 3 ], - "difficulty": 4, + "difficulty": 8, "time": 40000, "reversible": true, "decomp_learn": 1, - "autolearn": true, - "book_learn": [ [ "manual_archery", 3 ], [ "recipe_bows", 2 ], [ "book_archery", 4 ] ], + "book_learn": [ [ "manual_archery", 6 ], [ "recipe_bows", 5 ], [ "book_archery", 7 ] ], "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "stick", 4 ], [ "2x4", 4 ] ], [ [ "cordage", 6, "LIST" ], [ "filament", 600, "LIST" ] ] ] + "components": [ [ [ "stick_long", 4 ], [ "2x4", 4 ] ], [ [ "cordage", 6, "LIST" ], [ "filament", 600, "LIST" ] ] ] }, { "type": "recipe", @@ -427,7 +426,7 @@ "skill_used": "fabrication", "skills_required": [ [ "mechanics", 5 ] ], "using": [ [ "forging_standard", 10 ] ], - "difficulty": 8, + "difficulty": 10, "time": 240000, "book_learn": [ [ "recipe_bows", 9 ], [ "welding_book", 8 ], [ "textbook_mechanics", 8 ] ], "qualities": [ diff --git a/data/json/recipes/recipes.json b/data/json/recipes/recipes.json index 80e4fed43fa34..4b6f53e846826 100644 --- a/data/json/recipes/recipes.json +++ b/data/json/recipes/recipes.json @@ -1,4 +1,13 @@ [ + { + "type": "recipe_category", + "id": "CC_*", + "//": "This is just a dummy category. No recipes should be added in here.", + "recipe_subcategories": [ + "CSC_*_FAVORITE", + "CSC_*_RECENT" + ] + }, { "type": "recipe_category", "id": "CC_WEAPON", diff --git a/data/json/regional_map_settings.json b/data/json/regional_map_settings.json index d937f8c3909e3..88f675a3d7ece 100644 --- a/data/json/regional_map_settings.json +++ b/data/json/regional_map_settings.json @@ -418,6 +418,22 @@ } } }, + "forest_trail_settings": { + "chance": 2, "//": "one_in(n) chance a contiguous forest will have a trail system", + "border_point_chance": 2, "//": "one_in(n) chance that the northern/southern/eastern/western-most point of the forest will be part of the trail system", + "minimum_forest_size": 100, "//": "minimum number of required forest tiles in the contiguous forest before a trail system can be spawned", + "random_point_min": 4, "//": "minimum number of random points within the contiguous forest used to form the basis of the trail system", + "random_point_max": 50, "//": "maximum number of random points within the contiguous forest used to form the basis of the trail system", + "random_point_size_scalar": 100, "//": "forest size is divided by this and added to the minimum number of random points (capped by the max)", + "trailhead_chance": 1, "//": "one_in(n) chance of a trailhead being spawned at an _end_north/south/east/west of a trail that borders a field", + "trail_center_variance": 3, "//": "center of the trail in mapgen is offset in X and Y by a random amount between +/- variance", + "trail_width_offset_min": 1, "//": "trail width is offset by rng(trail_width_offset_min, trail_width_offset_max)", + "trail_width_offset_max": 3, "//": "trail width is offset by rng(trail_width_offset_min, trail_width_offset_max)", + "clear_trail_terrain": false, "//": "if set to true, clear all previously defined 'clear_trail_terrain'. only relevant for 'region_overlay' that override these settings", + "trail_terrain": { "//": "weighted list of terrain types used when placing a trail", + "t_dirt": 1 + } + }, "map_extras": { "//": "mapping for weighted lists of extras", "forest": { "chance": 20, "//": "one in # chance of spawning an extra", diff --git a/data/json/requirements/cooking_components.json b/data/json/requirements/cooking_components.json index 03d0275407f51..ec0e752b671a7 100644 --- a/data/json/requirements/cooking_components.json +++ b/data/json/requirements/cooking_components.json @@ -150,7 +150,7 @@ [ "lemon", 1 ], [ "irradiated_lemon", 1 ], [ "apple_canned", 1 ], - [ "apple_vac", 1 ], + [ "apple_sugar", 1 ], [ "dry_fruit", 1 ], [ "can_peach", 1 ], [ "juice_pulp", 2 ], diff --git a/data/json/scenarios/scenarios.json b/data/json/scenarios/scenarios.json index 89d75da044f50..28ab7603361a6 100644 --- a/data/json/scenarios/scenarios.json +++ b/data/json/scenarios/scenarios.json @@ -92,10 +92,10 @@ "ident": "lab_chal", "name": "Challenge-Lab", "points": -8, - "description": "You were locked in a lab cell until some kind of monster broke the glass. The lab is in lockdown! Find a way to escape.", + "description": "You've been locked in a lab with no (obvious) way out! Find a way to escape or starve to death.", "start_name": "Locked Lab", "professions": [ "unemployed", "mutant_patient", "mutant_volunteer", "labtech", "broken_cyborg" ], - "allowed_locs": [ "lab_escape_cells" ], + "allowed_locs": [ "lab_escape_cells", "lab_random", "lab_finale", "ice_lab_stairs", "ice_lab_finale" ], "traits": [ "ELFAEYES", "URSINE_EYE", diff --git a/data/json/start_locations.json b/data/json/start_locations.json index ce510c4b27aaa..3f58f30db9e1b 100644 --- a/data/json/start_locations.json +++ b/data/json/start_locations.json @@ -161,9 +161,33 @@ { "type": "start_location", "ident": "lab_escape_cells", - "name": "Science lab", + "name": "Experiment Cell", "target": "lab_escape_cells" }, + { + "type": "start_location", + "ident": "lab_random", + "name": "Science lab", + "target": "lab_stairs" + }, + { + "type": "start_location", + "ident": "lab_finale", + "name": "Bottom of a science lab", + "target": "lab_finale" + }, + { + "type": "start_location", + "ident": "ice_lab_stairs", + "name": "Frozen science lab", + "target": "ice_lab_stairs" + }, + { + "type": "start_location", + "ident": "ice_lab_finale", + "name": "Deep-frozen science lab", + "target": "ice_lab_finale" + }, { "type": "start_location", "ident": "mall_a_12", diff --git a/data/json/terrain.json b/data/json/terrain.json index 02063ff786804..bd2079c8752e9 100644 --- a/data/json/terrain.json +++ b/data/json/terrain.json @@ -560,11 +560,11 @@ "id": "t_grass_tall", "name": "tall grass", "description": "Tall grass about head high.", - "looks_like": "t_grass", + "looks_like": "t_shrub", "symbol": ",", - "color": "green", + "color": "brown_green", "move_cost": 5, - "flags": [ "DIGGABLE", "FLAT" ], + "flags": [ "TRANSPARENT", "DIGGABLE", "FLAT" ], "bash": { "sound": "thump", "ter_set": "t_null", "str_min": 40, "str_max": 100, "str_min_supported": 100, "bash_below": true } }, { @@ -923,7 +923,7 @@ "move_cost": 0, "flags": [ "FLAMMABLE", "NOITEM", "SUPPORTS_ROOF", "REDUCE_SCENT", "CONNECT_TO_WALL", "WALL" ], "bash": { - "str_min": 10, + "str_min": 35, "str_max": 150, "sound": "crunch!", "sound_fail": "whump!", @@ -941,7 +941,7 @@ "move_cost": 0, "flags": [ "FLAMMABLE", "NOITEM", "DOOR", "CONNECT_TO_WALL", "WALL" ], "bash": { - "str_min": 6, + "str_min": 24, "str_max": 150, "sound": "crunch!", "sound_fail": "whump!", diff --git a/data/json/test_regions.json b/data/json/test_regions.json index 02e0bd8147b6b..122752517bcb5 100644 --- a/data/json/test_regions.json +++ b/data/json/test_regions.json @@ -145,6 +145,22 @@ } } }, + "forest_trail_settings": { + "chance": 0, + "border_point_chance": 2, + "minimum_forest_size": 100, + "random_point_min": 4, + "random_point_max": 50, + "random_point_size_scalar": 100, + "trailhead_chance": 1, + "trail_center_variance": 3, + "trail_width_offset_min": 1, + "trail_width_offset_max": 3, + "clear_trail_terrain": false, + "trail_terrain": { + "t_dirt": 1 + } + }, "num_forests": 2, "//": "# of forest chunks", "forest_size_min": 1, "//": "size range of forest chunk", "forest_size_max": 100, "//": "note: 32400 tiles in omap, 250*minmax = 3750-10000 default_oters become forests", diff --git a/data/json/vehicleparts/alternator.json b/data/json/vehicleparts/alternator.json index ceffd6e3515fc..6d47671612c6d 100644 --- a/data/json/vehicleparts/alternator.json +++ b/data/json/vehicleparts/alternator.json @@ -17,7 +17,7 @@ "item": "alternator_motorbike", "difficulty": 2, "durability": 250, - "power": -2, + "power": -746, "epower": 360, "damage_modifier": 80, "folded_volume": 5, @@ -37,7 +37,7 @@ "item": "alternator_car", "difficulty": 2, "durability": 275, - "power": -4, + "power": -1492, "epower": 780, "damage_modifier": 80, "breaks_into": [ @@ -56,7 +56,7 @@ "item": "alternator_truck", "difficulty": 2, "durability": 325, - "power": -6, + "power": -2238, "epower": 1320, "damage_modifier": 80, "breaks_into": [ @@ -75,7 +75,7 @@ "item": "generator_7500w", "difficulty": 3, "durability": 400, - "power": -28, + "power": -10444, "epower": 7500, "damage_modifier": 80, "breaks_into": [ diff --git a/data/json/vehicleparts/battery.json b/data/json/vehicleparts/battery.json index 3e855eed0c80c..6849539ff010a 100644 --- a/data/json/vehicleparts/battery.json +++ b/data/json/vehicleparts/battery.json @@ -16,7 +16,10 @@ { "item": "steel_chunk", "count": [ 6, 9 ] }, { "item": "scrap", "count": [ 6, 9 ] } ], - "requirements": { "install": { "time": 5000, "qualities": [ { "id": "WRENCH", "level": 1 } ] } }, + "requirements": { + "install": { "time": 5000, "qualities": [ { "id": "WRENCH", "level": 1 } ] }, + "repair": { "skills": [ [ "mechanics", 3 ] ], "time": 60000, "using": [ [ "welding_standard", 5 ] ] } + }, "flags": [ "FOLDABLE", "REVERSIBLE" ] }, { diff --git a/data/json/vehicleparts/combustion.json b/data/json/vehicleparts/combustion.json index 6951a2f527e48..15c30acddf5ed 100644 --- a/data/json/vehicleparts/combustion.json +++ b/data/json/vehicleparts/combustion.json @@ -41,7 +41,7 @@ "difficulty": 4, "durability": 400, "epower": -350, - "power": 600, + "power": 223800, "energy_consumption": 600000, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 40 ] }, @@ -57,7 +57,7 @@ "difficulty": 4, "durability": 400, "epower": -250, - "power": 400, + "power": 149200, "energy_consumption": 400000, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 40 ] }, @@ -73,7 +73,7 @@ "difficulty": 4, "durability": 400, "epower": -350, - "power": 650, + "power": 242450, "energy_consumption": 650000, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 40 ] }, @@ -89,7 +89,7 @@ "difficulty": 2, "durability": 150, "epower": 0, - "power": 60, + "power": 22380, "energy_consumption": 60000, "folded_volume": 6, "breaks_into": [ @@ -108,7 +108,7 @@ "difficulty": 2, "durability": 120, "epower": 0, - "power": 30, + "power": 11190, "energy_consumption": 30000, "folded_volume": 3, "breaks_into": [ @@ -126,7 +126,7 @@ "difficulty": 2, "durability": 300, "epower": -150, - "power": 250, + "power": 93250, "energy_consumption": 250000, "breaks_into": [ { "item": "steel_lump", "count": [ 20, 30 ] }, @@ -142,7 +142,7 @@ "difficulty": 6, "durability": 600, "epower": -350, - "power": 1200, + "power": 447600, "energy_consumption": 1200000, "breaks_into": [ { "item": "steel_lump", "count": [ 45, 58 ] }, @@ -158,7 +158,7 @@ "difficulty": 7, "durability": 600, "epower": -400, - "power": 1200, + "power": 447600, "energy_consumption": 1200000, "breaks_into": [ { "item": "steel_lump", "count": [ 45, 58 ] }, @@ -174,7 +174,7 @@ "difficulty": 3, "durability": 400, "epower": -200, - "power": 400, + "power": 149200, "energy_consumption": 400000, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 40 ] }, @@ -190,7 +190,7 @@ "difficulty": 3, "durability": 400, "epower": -250, - "power": 650, + "power": 242450, "energy_consumption": 650000, "breaks_into": [ { "item": "steel_lump", "count": [ 40, 50 ] }, @@ -206,7 +206,7 @@ "difficulty": 2, "durability": 200, "epower": -50, - "power": 100, + "power": 37300, "energy_consumption": 100000, "folded_volume": 8, "breaks_into": [ @@ -237,7 +237,7 @@ "difficulty": 4, "durability": 200, "epower": 0, - "power": 150, + "power": 55950, "energy_consumption": 150000, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 60 ] }, @@ -254,7 +254,7 @@ "difficulty": 4, "durability": 200, "epower": 0, - "power": 250, + "power": 93250, "energy_consumption": 250000, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 60 ] }, @@ -271,7 +271,7 @@ "difficulty": 4, "durability": 200, "epower": -20, - "power": 400, + "power": 149200, "energy_consumption": 400000, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 60 ] }, diff --git a/data/json/vehicleparts/engineering.json b/data/json/vehicleparts/engineering.json index 31fe03d82626a..eae970fc070f4 100644 --- a/data/json/vehicleparts/engineering.json +++ b/data/json/vehicleparts/engineering.json @@ -122,7 +122,7 @@ "id": "air_jack", "name": "air jack system", "item": "v_airjack_item", - "location": "structure", + "location": "under", "symbol": "[", "broken_symbol": "/", "color": "light_gray", diff --git a/data/json/vehicleparts/manual.json b/data/json/vehicleparts/manual.json index 61a88244b608d..9f4752d2cb63b 100644 --- a/data/json/vehicleparts/manual.json +++ b/data/json/vehicleparts/manual.json @@ -23,8 +23,8 @@ "item": "foot_crank", "durability": 50, "description": "A set of bicycle style foot pedals. If mounted on the same tile as seat, they allow you to move the vehicle at the cost of your stamina.", - "power": 64, - "muscle_power_factor": 5, + "power": 23872, + "muscle_power_factor": 1865, "folded_volume": 2, "breaks_into": [ { "item": "steel_chunk", "count": [ 1, 2 ] }, { "item": "scrap", "count": [ 0, 2 ] } ], "extend": { "flags": [ "FOLDABLE", "MUSCLE_LEGS", "CONTROLS", "TOOL_WRENCH" ] } @@ -37,8 +37,8 @@ "item": "hand_rims", "durability": 50, "description": "A set of wheelchair style wheels. If mounted on the same tile as seat, they allow you to move the vehicle at the cost of your stamina.", - "power": 32, - "muscle_power_factor": 2, + "power": 11936, + "muscle_power_factor": 746, "damage_modifier": 50, "folded_volume": 2, "breaks_into": [ { "item": "steel_chunk", "count": [ 1, 2 ] }, { "item": "scrap", "count": [ 0, 2 ] } ], diff --git a/data/json/vehicleparts/motor.json b/data/json/vehicleparts/motor.json index 3646bcb52a944..28b62031e07ee 100644 --- a/data/json/vehicleparts/motor.json +++ b/data/json/vehicleparts/motor.json @@ -23,7 +23,7 @@ "looks_like": "motor_small", "difficulty": 1, "durability": 80, - "power": 4, + "power": 1492, "energy_consumption": 670, "damage_modifier": 80, "folded_volume": 1, @@ -43,7 +43,7 @@ "item": "motor_small", "difficulty": 1, "durability": 120, - "power": 20, + "power": 7460, "energy_consumption": 2681, "damage_modifier": 80, "folded_volume": 1, @@ -64,7 +64,7 @@ "item": "motor", "difficulty": 2, "durability": 200, - "power": 100, + "power": 37300, "energy_consumption": 13405, "damage_modifier": 80, "folded_volume": 6, @@ -83,7 +83,7 @@ "item": "motor_large", "difficulty": 3, "durability": 400, - "power": 400, + "power": 149200, "energy_consumption": 107239, "damage_modifier": 80, "breaks_into": [ @@ -101,7 +101,7 @@ "item": "motor_enhanced", "difficulty": 4, "durability": 200, - "power": 500, + "power": 186500, "energy_consumption": 160858, "damage_modifier": 80, "breaks_into": [ diff --git a/data/json/vehicles/test.json b/data/json/vehicles/test.json index 1894799405e1d..11355768a58df 100644 --- a/data/json/vehicles/test.json +++ b/data/json/vehicles/test.json @@ -134,5 +134,37 @@ { "x": -1, "y": 0, "parts": [ "frame_vertical", "engine_v6" ] }, { "x": -2, "y": 0, "parts": [ "frame_vertical", "engine_v6" ] } ] + }, + { + "id": "reactor_test", + "type": "vehicle", + "name": "Reactor test", + "parts": [ + { "x": 0, "y": 0, "part": "frame_vertical" }, + { "x": 0, "y": 0, "parts": [ "minireactor" ] }, + { "x": 0, "y": -1, "parts": [ "frame_vertical", "seat", "dashboard", "storage_battery" ] } + ] + }, + { + "id": "solar_panel_test", + "type": "vehicle", + "name": "Solar test", + "parts": [ + { "x": 0, "y": 0, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 1, "y": 0, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 2, "y": 0, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 3, "y": 0, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 0, "y": 1, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 1, "y": 1, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 2, "y": 1, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 3, "y": 1, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 0, "y": 2, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 1, "y": 2, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 2, "y": 2, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 3, "y": 2, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 0, "y": 3, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 1, "y": 3, "parts": [ "frame_vertical", "solar_panel" ] }, + { "x": 0, "y": -1, "parts": [ "frame_vertical", "seat", "battery_car" ] } + ] } ] diff --git a/data/mods/Boats/b_inflatable_boat_parts.json b/data/mods/Boats/b_inflatable_boat_parts.json index 2f3e52fd5fffe..726786e4576f5 100644 --- a/data/mods/Boats/b_inflatable_boat_parts.json +++ b/data/mods/Boats/b_inflatable_boat_parts.json @@ -41,9 +41,9 @@ "broken_color" : "red", "damage_modifier" : 50, "durability" : 50, - "power" : 50, + "power" : 18650, "fuel_type" : "muscle", - "muscle_power_factor": 2, + "muscle_power_factor": 746, "noise_factor": 8, "m2c": 45, "exclusions": [ "manual" ], diff --git a/data/mods/CrazyCataclysm/crazy_items.json b/data/mods/CrazyCataclysm/crazy_items.json index c58cfec7de66b..18df3d152b551 100644 --- a/data/mods/CrazyCataclysm/crazy_items.json +++ b/data/mods/CrazyCataclysm/crazy_items.json @@ -35,23 +35,25 @@ "use_action": "GRANADE_ACT", "flags": [ "TRADER_AVOID" ] }, - { - "id": "jack_small", - "copy-from": "jack_small", - "type": "TOOL", - "name": "scissor jack", - "description": "A compact scissor jack used for lifting vehicles. It's outfitted with patented Aperture Science(tm) technology that lets it lift engines by teleporting itself beneath them.", - "qualities": [ [ "LIFT", 1 ] ] - }, { "id": "bio_chest_gun", "copy-from": "bionic_general", "type": "BIONIC_ITEM", "name": "Ionic Overload Generator CBM", - "description": "A powerful ion energy generator is implanted on your chest. Fires a powerful, ever-expanding energy blast. The resulting blast ignites oxygen creating fires as it moves and an explosion on impact. Close range use is highly discouraged.", + "description": "A powerful ion energy generator is implanted on your chest. Fires a powerful, ever-expanding energy blast. The resulting blast ignites oxygen creating fires as it moves and an explosion on impact. Close range use is highly discouraged.", "price": 220000, "difficulty": 8 }, + { + "type": "bionic", + "id": "bio_chest_gun", + "name": "Ionic Overload Generator", + "description": "A powerful ion energy generator is implanted on your chest. Fires a powerful, ever-expanding energy blast. The resulting blast ignites oxygen creating fires as it moves and an explosion on impact. Close range use is highly discouraged.", + "occupied_bodyparts": [ [ "TORSO", 20 ] ], + "act_cost": 500, + "fake_item": "bio_ion_gun", + "flags": [ "BIONIC_GUN" ] + }, { "id": "bio_ion_gun", "type": "GUN", diff --git a/data/mods/CrazyCataclysm/crazy_monstergroups.json b/data/mods/CrazyCataclysm/crazy_monstergroups.json new file mode 100644 index 0000000000000..991d6a8b278ac --- /dev/null +++ b/data/mods/CrazyCataclysm/crazy_monstergroups.json @@ -0,0 +1,83 @@ +[ + { + "type": "monstergroup", + "name": "GROUP_ZOMBIE", + "monsters": [ + { "monster": "mon_zombie_skeltal", "freq": 1, "cost_multiplier": 60 }, + { "monster": "mon_zombie_skeltal", "freq": 1, "cost_multiplier": 30, "conditions": [ "AUTUMN" ] } + ], + "//": "Autumn is halloween" + }, + { + "type": "monstergroup", + "name": "GROUP_HOSPITAL", + "monsters": [ + { "monster": "mon_zombie_skeltal", "freq": 1, "cost_multiplier": 60 }, + { "monster": "mon_zombie_skeltal", "freq": 1, "cost_multiplier": 30, "conditions": [ "AUTUMN" ] } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_GROCERY", + "monsters": [ + { "monster": "mon_zombie_skeltal", "freq": 1, "cost_multiplier": 60 }, + { "monster": "mon_zombie_skeltal", "freq": 1, "cost_multiplier": 30, "conditions": [ "AUTUMN" ] } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_HOUSE", + "monsters": [ + { "monster": "mon_zombie_skeltal", "freq": 1, "cost_multiplier": 60 }, + { "monster": "mon_zombie_skeltal", "freq": 1, "cost_multiplier": 30, "conditions": [ "AUTUMN" ] } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_FOREST", + "monsters": [ + { + "monster": "mon_bear_smoky", + "freq": 1, + "cost_multiplier": 0, + "starts": 672, + "conditions": [ "SPRING", "SUMMER", "AUTUMN" ] + } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_SWAMP", + "monsters": [ + { + "monster": "mon_bear_smoky", + "freq": 1, + "cost_multiplier": 0, + "starts": 672, + "conditions": [ "SPRING", "SUMMER", "AUTUMN" ] + } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_RIVER", + "monsters": [ + { + "monster": "mon_bear_smoky", + "freq": 1, + "cost_multiplier": 0, + "starts": 672, + "conditions": [ "SPRING", "SUMMER", "AUTUMN" ] + } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_CAVE", + "monsters": [ + { "monster": "mon_bear_smoky", "freq": 10, "cost_multiplier": 0, "starts": 672 }, + { "monster": "mon_bear_smoky", "freq": 100, "cost_multiplier": 0, "conditions": [ "WINTER" ] } + ], + "//": "Additional bears during winter, when they hibernate." + } +] diff --git a/data/mods/CrazyCataclysm/crazy_monsters.json b/data/mods/CrazyCataclysm/crazy_monsters.json index 7118474fedf93..8e0c64807ac30 100644 --- a/data/mods/CrazyCataclysm/crazy_monsters.json +++ b/data/mods/CrazyCataclysm/crazy_monsters.json @@ -72,5 +72,54 @@ "vision_night": 3, "death_function": [ "MELT" ], "flags": [ "SEES", "HEARS", "HARDTOSHOOT", "REVIVES", "NO_BREATHE", "POISON", "BONES", "FILTHY" ] + }, + { + "id": "mon_bear_smoky", + "type": "MONSTER", + "name": "Smoky bear", + "description": "A smoking husk is all that remains of this once proud bear. Its black eyes gaze at you with malice... and hunger.", + "default_faction": "bear", + "species": [ "ZOMBIE" ], + "diff": 10, + "size": "LARGE", + "hp": 100, + "speed": 90, + "material": [ "flesh" ], + "symbol": "B", + "color": "light_gray", + "aggression": 100, + "morale": 100, + "melee_skill": 6, + "melee_dice": 4, + "melee_dice_sides": 6, + "melee_cut": 4, + "dodge": 3, + "armor_bash": 4, + "armor_cut": 4, + "vision_day": 30, + "vision_night": 10, + "emit_fields": [ "emit_smoke_stream" ], + "special_attacks": [ { "type": "bite", "cooldown": 5 } ], + "anger_triggers": [ "HURT", "PLAYER_CLOSE" ], + "placate_triggers": [ "MEAT" ], + "death_function": [ "SMOKEBURST" ], + "flags": [ + "SEES", + "HEARS", + "SMELLS", + "ANIMAL", + "PATH_AVOID_DANGER_1", + "WARM", + "FUR", + "BLEED", + "BASHES", + "ATTACKMON", + "BONES", + "FAT", + "FIREPROOF", + "NO_BREATHE", + "POISON", + "FILTHY" + ] } ] diff --git a/data/mods/CrazyCataclysm/modinfo.json b/data/mods/CrazyCataclysm/modinfo.json index 7661398935135..7ff777af85fdb 100644 --- a/data/mods/CrazyCataclysm/modinfo.json +++ b/data/mods/CrazyCataclysm/modinfo.json @@ -10,6 +10,13 @@ }, { "type": "MONSTER_WHITELIST", - "monsters": [ "mon_zombie_dancer", "mon_zombie_jackson", "mon_shia", "mon_bear_smoky", "mon_zombie_skeltal" ] + "monsters": [ + "mon_zombie_dancer", + "mon_zombie_jackson", + "mon_shia", + "mon_bear_smoky", + "mon_zombie_skeltal", + "mon_zombie_skeltal_minion" + ] } ] diff --git a/data/mods/DeadPeople_Chesthole/Chest_Items.png b/data/mods/DeadPeople_Chesthole/Chest_Items.png new file mode 100644 index 0000000000000..f683204e26ac2 Binary files /dev/null and b/data/mods/DeadPeople_Chesthole/Chest_Items.png differ diff --git a/data/mods/DeadPeople_Chesthole/mod_tileset.json b/data/mods/DeadPeople_Chesthole/mod_tileset.json new file mode 100644 index 0000000000000..ce2a05015a4cf --- /dev/null +++ b/data/mods/DeadPeople_Chesthole/mod_tileset.json @@ -0,0 +1,17 @@ +[ + { + "type": "mod_tileset", + "compatibility": [ "MSX++DEAD_PEOPLE" ], + "tiles-new": [ + { + "file": "Chest_Items.png", + "tiles": [ + { "id": "highlight_item", "fg": 0 }, + { "id": "footstep", "fg": 1 }, + { "id": "cursor", "fg": 2 }, + { "id": "animation_hit", "fg": 3 } + ] + } + ] + } +] diff --git a/data/mods/DeadPeople_Chesthole/modinfo.json b/data/mods/DeadPeople_Chesthole/modinfo.json new file mode 100644 index 0000000000000..a7f3f3508cdb1 --- /dev/null +++ b/data/mods/DeadPeople_Chesthole/modinfo.json @@ -0,0 +1,9 @@ +[ + { + "type": "MOD_INFO", + "ident": "DP_AMAZING_CHEST_INDICATORS", + "name": "(DP_RP) Chesthole Indicators", + "authors": [ "MyMom" ], + "description": "Changes interface indicators to Chesthole version." + } +] diff --git a/data/mods/DeadPeople_Hybrid/Hybrid_Items.png b/data/mods/DeadPeople_Hybrid/Hybrid_Items.png new file mode 100644 index 0000000000000..20bf50522519b Binary files /dev/null and b/data/mods/DeadPeople_Hybrid/Hybrid_Items.png differ diff --git a/data/mods/DeadPeople_Hybrid/mod_tileset.json b/data/mods/DeadPeople_Hybrid/mod_tileset.json new file mode 100644 index 0000000000000..9d4fe5616c732 --- /dev/null +++ b/data/mods/DeadPeople_Hybrid/mod_tileset.json @@ -0,0 +1,17 @@ +[ + { + "type": "mod_tileset", + "compatibility": [ "MSX++DEAD_PEOPLE" ], + "tiles-new": [ + { + "file": "Hybrid_Items.png", + "tiles": [ + { "id": "highlight_item", "fg": 0 }, + { "id": "footstep", "fg": 1 }, + { "id": "cursor", "fg": 2 }, + { "id": "animation_hit", "fg": 3 } + ] + } + ] + } +] diff --git a/data/mods/DeadPeople_Hybrid/modinfo.json b/data/mods/DeadPeople_Hybrid/modinfo.json new file mode 100644 index 0000000000000..f9d3e62b92732 --- /dev/null +++ b/data/mods/DeadPeople_Hybrid/modinfo.json @@ -0,0 +1,9 @@ +[ + { + "type": "MOD_INFO", + "ident": "DP_REMIX_INDICATORS", + "name": "(DP_RP) REMIX Indicators", + "authors": [ "OurMom" ], + "description": "Changes interface indicators to remix of Xotto, Chesthole and DeadPeople." + } +] diff --git a/data/mods/DeadPeople_Xotto/Xotto_Items.png b/data/mods/DeadPeople_Xotto/Xotto_Items.png new file mode 100644 index 0000000000000..f7044f61632b2 Binary files /dev/null and b/data/mods/DeadPeople_Xotto/Xotto_Items.png differ diff --git a/data/mods/DeadPeople_Xotto/mod_tileset.json b/data/mods/DeadPeople_Xotto/mod_tileset.json new file mode 100644 index 0000000000000..b2105e2b12f58 --- /dev/null +++ b/data/mods/DeadPeople_Xotto/mod_tileset.json @@ -0,0 +1,17 @@ +[ + { + "type": "mod_tileset", + "compatibility": [ "MSX++DEAD_PEOPLE" ], + "tiles-new": [ + { + "file": "Xotto_Items.png", + "tiles": [ + { "id": "highlight_item", "fg": 0 }, + { "id": "footstep", "fg": 1 }, + { "id": "cursor", "fg": 2 }, + { "id": "animation_hit", "fg": 3 } + ] + } + ] + } +] diff --git a/data/mods/DeadPeople_Xotto/modinfo.json b/data/mods/DeadPeople_Xotto/modinfo.json new file mode 100644 index 0000000000000..52b77df050798 --- /dev/null +++ b/data/mods/DeadPeople_Xotto/modinfo.json @@ -0,0 +1,9 @@ +[ + { + "type": "MOD_INFO", + "ident": "DP_XOTTO_INDICATORS", + "name": "(DP_RP) Xotto Indicators", + "authors": [ "YourMom" ], + "description": "Changes interface indicators to Xotto version." + } +] diff --git a/data/mods/Fuji_Structures/modinfo.json b/data/mods/Fuji_Structures/modinfo.json index 96fa80c0441bd..11a8baded532b 100644 --- a/data/mods/Fuji_Structures/modinfo.json +++ b/data/mods/Fuji_Structures/modinfo.json @@ -1,13 +1,11 @@ -{ - "type": "MOD_INFO", - "mod-type": "SUPPLEMENTAL", - "ident": "FujiStruct", - "name": "Fuji's More Buildings", - "description": "Adds more buildings and more variations to existing buildings. (Requires More Locations)", - "category": "buildings", - "author": "Fuji", - "dependencies": [ - "dda", - "more_locations" - ] -} +[ + { + "type": "MOD_INFO", + "ident": "FujiStruct", + "name": "Fuji's More Buildings", + "description": "Adds more buildings and more variations to existing buildings. (Requires More Locations)", + "category": "buildings", + "authors": "Fuji", + "dependencies": [ "dda", "more_locations" ] + } +] diff --git a/data/mods/More_Survival_Tools/items.json b/data/mods/More_Survival_Tools/items.json index a9b5d9447c2d9..ee4b99c2cc9cc 100644 --- a/data/mods/More_Survival_Tools/items.json +++ b/data/mods/More_Survival_Tools/items.json @@ -320,7 +320,7 @@ "color": "light_gray", "techniques": [ "WBLOCK_1" ], "qualities": [ [ "COOK", 1 ] ], - "flags": [ "SPEAR", "REACH_ATTACK" ] + "flags": [ "SPEAR", "REACH_ATTACK", "SHEATH_SPEAR" ] }, { "id": "milk_curdling", diff --git a/data/mods/No_Zombie_Animals/modinfo.json b/data/mods/No_Zombie_Animals/modinfo.json index 16dfbf3634fc8..a4fba3ebf63ce 100644 --- a/data/mods/No_Zombie_Animals/modinfo.json +++ b/data/mods/No_Zombie_Animals/modinfo.json @@ -11,7 +11,6 @@ { "type": "MONSTER_BLACKLIST", "monsters": [ - "mon_bear_smoky", "mon_dog_zombie_rot", "mon_dog_zombie_cop", "mon_dog_skeleton", diff --git a/data/mods/Tolerate_This/recipe_food.json b/data/mods/Tolerate_This/recipe_food.json index 227aa81c1b510..1d244842a3319 100644 --- a/data/mods/Tolerate_This/recipe_food.json +++ b/data/mods/Tolerate_This/recipe_food.json @@ -79,7 +79,7 @@ [ [ "veggy_cooked", 1 ], [ "veggy_wild_cooked", 1 ], - [ "veggy_vac", 1 ], + [ "veggy_salted", 1 ], [ "celery", 1 ], [ "irradiated_celery", 1 ], [ "cabbage", 1 ], @@ -136,7 +136,7 @@ [ [ "veggy_cooked", 1 ], [ "veggy_wild_cooked", 1 ], - [ "veggy_vac", 1 ], + [ "veggy_salted", 1 ], [ "celery", 1 ], [ "irradiated_celery", 1 ], [ "cabbage", 1 ], @@ -780,7 +780,7 @@ [ [ "veggy", 2 ], [ "veggy_wild", 2 ], - [ "veggy_vac", 2 ], + [ "veggy_salted", 2 ], [ "celery", 2 ], [ "irradiated_celery", 2 ], [ "cabbage", 2 ], @@ -841,13 +841,13 @@ [ "meat", 2 ], [ "meat_canned", 2 ], [ "can_chicken", 2 ], - [ "meat_vac", 2 ], + [ "meat_salted", 2 ], [ "rehydrated_meat", 2 ], [ "dry_meat", 2 ], [ "fish", 3 ], [ "fish_canned", 3 ], [ "can_tuna", 3 ], - [ "fish_vac", 3 ], + [ "salted_fish", 3 ], [ "rehydrated_fish", 3 ], [ "dry_fish", 3 ] ], @@ -1117,7 +1117,7 @@ [ "bologna", 5 ], [ "fish_cooked", 1 ], [ "bacon", 2 ], - [ "meat_vac", 2 ], + [ "meat_salted", 2 ], [ "fried_spam", 2 ], [ "rehydrated_meat", 2 ], [ "fish_smoked", 1 ], @@ -1141,7 +1141,7 @@ [ [ "veggy_cooked", 1 ], [ "veggy_wild_cooked", 1 ], - [ "veggy_vac", 1 ], + [ "veggy_salted", 1 ], [ "celery", 1 ], [ "irradiated_celery", 1 ], [ "cabbage", 1 ], @@ -1209,7 +1209,7 @@ [ "bologna", 5 ], [ "fish_cooked", 1 ], [ "bacon", 2 ], - [ "meat_vac", 2 ], + [ "meat_salted", 2 ], [ "fried_spam", 2 ], [ "rehydrated_meat", 2 ], [ "fish_smoked", 1 ], @@ -1233,7 +1233,7 @@ [ [ "veggy_cooked", 1 ], [ "veggy_wild_cooked", 1 ], - [ "veggy_vac", 1 ], + [ "veggy_salted", 1 ], [ "celery", 1 ], [ "irradiated_celery", 1 ], [ "cabbage", 1 ], diff --git a/data/mods/bio_mod/b_cbm.json b/data/mods/bio_mod/b_cbm.json index 59e846756cb66..c0aaf44fb0288 100644 --- a/data/mods/bio_mod/b_cbm.json +++ b/data/mods/bio_mod/b_cbm.json @@ -16,14 +16,5 @@ "description": "A powerful ion energy generator is implanted on the user's chest. Fires a powerful, ever-expanding energy blast. The resulting blast ignites oxygen creating fires as it moves and an explosion on impact. Close range use is highly discouraged.", "price": 220000, "difficulty": 8 - }, - { - "id": "bio_surgical_razor", - "copy-from": "bionic_general", - "type": "BIONIC_ITEM", - "name": "Autonomous Surgical Razors CBM", - "description": "Implanted on the user's fingers is a system of surgical grade razors. While activated, they will continously drain power to make automated precise cuts but you will be unable to wield anything.", - "price": 220000, - "difficulty": 4 } ] diff --git a/data/mods/blazemod/blaze_blob.json b/data/mods/blazemod/blaze_blob.json index caba8fd775dcc..a070393e76774 100644 --- a/data/mods/blazemod/blaze_blob.json +++ b/data/mods/blazemod/blaze_blob.json @@ -58,7 +58,7 @@ "name_plural": "bfeedfuel", "description": "Liquified blob feed, useful for fueling certain blob based vehicle parts", "weight": 1, - "volume": 1, + "volume": "200ml", "price": 40, "price_postapoc": 800, "phase": "liquid", @@ -68,7 +68,7 @@ "symbol": "=", "color": "red", "count": 250, - "stack_size": 250, + "stack_size": 200, "ammo_type": [ "bfeed" ], "range": 4, "damage": 5, diff --git a/data/mods/blazemod/blaze_blob_parts.json b/data/mods/blazemod/blaze_blob_parts.json index 7c6123fe59ab2..0318c8eda44c9 100644 --- a/data/mods/blazemod/blaze_blob_parts.json +++ b/data/mods/blazemod/blaze_blob_parts.json @@ -1619,7 +1619,7 @@ "broken_color": "red", "difficulty": 1, "durability": 1000, - "power": 600, + "power": 223800, "m2c": 65, "noise_factor": 5, "epower": -1, diff --git a/data/mods/blazemod/blaze_other_parts.json b/data/mods/blazemod/blaze_other_parts.json index c31563d037d95..e47574216e71b 100644 --- a/data/mods/blazemod/blaze_other_parts.json +++ b/data/mods/blazemod/blaze_other_parts.json @@ -7,7 +7,7 @@ "difficulty": 4, "durability": 200, "epower": 0, - "power": 650, + "power": 242450, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 60 ] }, { "item": "steel_chunk", "count": [ 30, 60 ] }, @@ -23,7 +23,7 @@ "difficulty": 4, "durability": 200, "epower": 0, - "power": 1200, + "power": 447600, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 60 ] }, { "item": "steel_chunk", "count": [ 30, 60 ] }, @@ -49,7 +49,7 @@ "difficulty": 5, "durability": 200, "epower": 0, - "power": 250, + "power": 93250, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 60 ] }, { "item": "steel_chunk", "count": [ 30, 60 ] }, @@ -65,7 +65,7 @@ "difficulty": 5, "durability": 200, "epower": 0, - "power": 400, + "power": 149200, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 60 ] }, { "item": "steel_chunk", "count": [ 30, 60 ] }, @@ -81,7 +81,7 @@ "difficulty": 5, "durability": 200, "epower": 0, - "power": 650, + "power": 242450, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 60 ] }, { "item": "steel_chunk", "count": [ 30, 60 ] }, @@ -97,7 +97,7 @@ "difficulty": 5, "durability": 200, "epower": 0, - "power": 1200, + "power": 447600, "breaks_into": [ { "item": "steel_lump", "count": [ 30, 60 ] }, { "item": "steel_chunk", "count": [ 30, 60 ] }, diff --git a/data/mods/blazemod/blaze_test.json b/data/mods/blazemod/blaze_test.json index 94850a231c7c1..f984f4efdb949 100644 --- a/data/mods/blazemod/blaze_test.json +++ b/data/mods/blazemod/blaze_test.json @@ -723,7 +723,7 @@ "broken_color": "magenta", "difficulty": 8, "durability": 400, - "size": 1000000, + "size": 40000, "breaks_into": [], "flags": [ "CARGO", "COVERED", "UNMOUNT_ON_DAMAGE" ] }, @@ -807,8 +807,8 @@ "broken_color": "magenta", "difficulty": 6, "durability": 400, - "power": 100, - "epower": 5, + "power": 37300, + "epower": 1865, "noise_factor": 25, "m2c": 90, "size": 100, diff --git a/data/motd/en.motd b/data/motd/en.motd index 311d07be45778..e8e17ec42a5c4 100644 --- a/data/motd/en.motd +++ b/data/motd/en.motd @@ -14,7 +14,6 @@ Join the discussion on forums and chats: * Discourse: https://discourse.cataclysmdda.org/ * IRC: #CataclysmDDA at freenode.net * Reddit (unofficial): https://www.reddit.com/r/cataclysmdda/ -* Discord (unofficial): https://discord.gg/VDKWmwd Other useful links are also available at our Homepage. diff --git a/data/raw/keybindings.json b/data/raw/keybindings.json index 6798ffbcd457b..0a5eaa60cd0e5 100644 --- a/data/raw/keybindings.json +++ b/data/raw/keybindings.json @@ -2,42 +2,42 @@ { "type": "keybinding", "id": "SCROLL_UP", - "category": "UIMENU", + "category": "UILIST", "name": "Scroll up", "bindings": [ { "input_method": "mouse", "key": "SCROLL_UP" } ] }, { "type": "keybinding", "id": "SCROLL_DOWN", - "category": "UIMENU", + "category": "UILIST", "name": "Scroll down", "bindings": [ { "input_method": "mouse", "key": "SCROLL_DOWN" } ] }, { "type": "keybinding", "id": "UP", - "category": "UIMENU", + "category": "UILIST", "name": "Pan up", "bindings": [ { "input_method": "keyboard", "key": "UP" } ] }, { "type": "keybinding", "id": "DOWN", - "category": "UIMENU", + "category": "UILIST", "name": "Pan down", "bindings": [ { "input_method": "keyboard", "key": "DOWN" } ] }, { "type": "keybinding", "id": "FILTER", - "category": "UIMENU", + "category": "UILIST", "name": "Filter", "bindings": [ { "input_method": "keyboard", "key": "/" } ] }, { "type": "keybinding", "id": "QUIT", - "category": "UIMENU", + "category": "UILIST", "name": "Cancel menu", "bindings": [ { "input_method": "keyboard", "key": "ESC" } ] }, @@ -525,6 +525,13 @@ "name": "Related recipes", "bindings": [ { "input_method": "keyboard", "key": "L" } ] }, + { + "type": "keybinding", + "id": "TOGGLE_FAVORITE", + "category": "CRAFTING", + "name": "Toggle recipes to be shown in favorite tab", + "bindings": [ { "input_method": "keyboard", "key": "*" } ] + }, { "type": "keybinding", "id": "CENTER", @@ -1984,6 +1991,34 @@ "name": "Change sort order", "bindings": [ { "input_method": "keyboard", "key": "s" }, { "input_method": "keyboard", "key": "S" } ] }, + { + "type": "keybinding", + "id": "SAFEMODE_BLACKLIST_ADD", + "category": "LIST_MONSTERS", + "name": "Add to safemode blacklist", + "bindings": [ { "input_method": "keyboard", "key": "a" } ] + }, + { + "type": "keybinding", + "id": "SAFEMODE_BLACKLIST_REMOVE", + "category": "LIST_MONSTERS", + "name": "Remove from safemode blacklist", + "bindings": [ { "input_method": "keyboard", "key": "r" } ] + }, + { + "type": "keybinding", + "id": "look", + "category": "LIST_MONSTERS", + "name": "look around", + "bindings": [ { "input_method": "keyboard", "key": "x" } ] + }, + { + "type": "keybinding", + "id": "fire", + "category": "LIST_MONSTERS", + "name": "fire", + "bindings": [ { "input_method": "keyboard", "key": "f" } ] + }, { "type": "keybinding", "id": "LIST_ITEMS", diff --git a/doc/CHANGELOG_GUIDELINES.md b/doc/CHANGELOG_GUIDELINES.md index b6f6ed92ff571..99ff5a4410487 100644 --- a/doc/CHANGELOG_GUIDELINES.md +++ b/doc/CHANGELOG_GUIDELINES.md @@ -2,10 +2,10 @@ These are the categories used by Pull Request Summary lines as outlined in the [ In the end, it's up to the author to decide where *they* want their change to be listed, these are only guidelines, not rules. #### Features -If it adds something new that the player can do, or that can happen to the player, it's a feature. +If it adds something new that the player can do, or that can happen to the player, it's a feature. These will generally be edits to the C++ code in the game, though new json entities may be involved as well. #### Content -If it adds new monsters, new map areas, new items, new vehicles, new doohickeys, it's content. +If it adds new monsters, new map areas, new items, new vehicles, new doohickeys, it's content. These will generally be dominated by json edits, though there may be some new C++ code to support the new entities. #### Interface If it adjusts how the player interacts with the game, adding/adjusting menus, changing shortcuts, streamlining workflows, it's interface. @@ -22,12 +22,12 @@ This applies equally C++ and JSON changes. When there's no change at all except for less waiting, it's performance. These will almost always happen in C++. #### Infrastructure -These are changes for programmers, by programmers. +These are changes for programmers, by programmers. Most players will never even know these happened, but they'll appreciate the improved stability and features that this kind of things enables. All manner of refactor and overhaul oriented at making the game easier to work on fit in this category. These will frequently be C++ changes, but json reorganization also fits, as does development of tools that run outside the game. #### Build -If you can't build the game, you can't play the game. +If you can't build the game, you can't play the game. These are the changes that make building the game better, faster, stronger. #### I18N We want everyone to play, so we do translations, and we have code to support translations. diff --git a/doc/COMPILER_SUPPORT.md b/doc/COMPILER_SUPPORT.md index 97e9347287158..695bf957112ed 100644 --- a/doc/COMPILER_SUPPORT.md +++ b/doc/COMPILER_SUPPORT.md @@ -1,7 +1,7 @@ # Compilers Supported We are compiling with -std=c++11 as you can see from the Makefile. -This regretably restricts which compilers will compile the project, while at the same time allowing the use of a plethora of features introduced by C++11. +This regrettably restricts which compilers will compile the project, while at the same time allowing the use of a plethora of features introduced by C++11. ## GCC diff --git a/doc/EFFECTS_JSON.md b/doc/EFFECTS_JSON.md index baf0d4eadbc81..85f3dd37b32f9 100644 --- a/doc/EFFECTS_JSON.md +++ b/doc/EFFECTS_JSON.md @@ -101,6 +101,14 @@ the intensity in brackets if the current intensity > 1, i.e. "ABC", "ABC [2]", " entry of "name" is the empty string ("") or "name" is missing then the effect will not display to the player in the status screen. +Each entry in "name" can also have an optional context: +```JSON + "name": [ { "ctxt": "ECIG", "str": "Smoke" } ] +``` +In this case, the game will translate the name with the given context "ECIG", +which makes it possible to distinguish the verb "Smoke" from the noun "Smoke" +in other languages. + ```C++ "speed_name" : "XYZ" - Defaults to the first name value ``` diff --git a/doc/ITEM_SPAWN.md b/doc/ITEM_SPAWN.md index 928a76f49bbf7..ecce110ccaaad 100644 --- a/doc/ITEM_SPAWN.md +++ b/doc/ITEM_SPAWN.md @@ -107,7 +107,7 @@ The container is checked and the item is put inside the container, and the charg Here are some ways to make items spawn with/without ammo/magazines (note that `ammo-item` can be specified for guns and magazines in the entries array to use a non-default ammo type): -* Secify an ammo/magazine chance (introduced in Section 2) for the entire item group. +* Specify an ammo/magazine chance (introduced in Section 2) for the entire item group. `ammo` specifies the percent chance that the entries will spawn fully loaded (if it needs a magazine, it will be added for you). `magazine` specifies the percent chance that the entries will spawn with a magazine. Both of these default to 0 if unspecified. diff --git a/doc/JSON_FLAGS.md b/doc/JSON_FLAGS.md index f838945c7b2b8..6cf2d71bd475d 100644 --- a/doc/JSON_FLAGS.md +++ b/doc/JSON_FLAGS.md @@ -252,7 +252,7 @@ Flags used to describe monsters and define their properties and abilities. - ```GROUP_BASH``` Gets help from monsters around it when bashing. - ```GROUP_MORALE``` More courageous when near friends. - ```GUILT``` You feel guilty for killing it. -- ```HARDTOSHOOT``` It's one size smaller for ranged attacks, no less then MS_TINY +- ```HARDTOSHOOT``` It's one size smaller for ranged attacks, no less then MS_TINY - ```HEARS``` It can hear you. - ```HIT_AND_RUN``` Flee for several turns after a melee attack. - ```HUMAN``` It's a live human, as long as it's alive. diff --git a/doc/JSON_INFO.md b/doc/JSON_INFO.md index d5c0b11549772..023bc369c0979 100644 --- a/doc/JSON_INFO.md +++ b/doc/JSON_INFO.md @@ -150,6 +150,14 @@ Examples: "//" : "comment", // Preferred method of leaving comments inside json files. ``` +Some json strings are extracted for translation, for example item names, descriptions, etc. The exact extraction is handled in `lang/extract_json_strings.py`. Apart from the obvious way of writing a string without translation context, the string can also have an optional translation context, by writing it like: + +```JSON +"name": { "ctxt": "foo", "str": "bar" } +``` + +Currently, only effect names, item action names, and item category names support this syntax. If you want other json strings to support this format, look at `translations.h|cpp` and migrate the corresponding code to it. Changes to `extract_json_strings.py` might also be needed, as with the new syntax "name" would be a `dict`, which may break unmigrated script. + ### Bionics | Identifier | Description @@ -571,7 +579,7 @@ Mods can modify this via `add:traits` and `remove:traits`. "bodytemp_modifiers" : [100, 150], // Range of additional bodytemp units (these units are described in 'weather.h'. First value is used if the person is already overheated, second one if it's not. "bodytemp_sleep" : 50, // Additional units of bodytemp which are applied when sleeping "initial_ma_styles": [ "style_crane" ], // (optional) A list of ids of martial art styles of which the player can choose one when starting a game. -"mixed_effect": false, // Wheather the trait has both positive and negative effects. This is purely declarative and is only used for the user interface. (default: false) +"mixed_effect": false, // Whether the trait has both positive and negative effects. This is purely declarative and is only used for the user interface. (default: false) "description": "Nothing gets you down!" // In-game description "starting_trait": true, // Can be selected at character creation (default: false) "valid": false, // Can be mutated ingame (default: true) @@ -613,6 +621,7 @@ Mods can modify this via `add:traits` and `remove:traits`. { "bash" : 1 } // ...and gives them those resistances instead ] ], +"stealth_modifier" : 0, // Percentage to be subtracted from player's visibility range, capped to 60. Negative values work, but are not very effective due to the way vision ranges are capped "active" : true, //When set the mutation is an active mutation that the player needs to activate (default: false) "starts_active" : true, //When true, this 'active' mutation starts active (default: false, requires 'active') "cost" : 8, // Cost to activate this mutation. Needs one of the hunger, thirst, or fatigue values set to true. (default: 0) @@ -653,7 +662,7 @@ Vehicle components when installed on a vehicle. * SPECIAL: A part may have at most ONE of the following fields: * wheel_width = base wheel width in inches * size = trunk/box storage volume capacity - * power = base engine power (in half-horsepower) + * power = base engine power in watts * bonus = bonus granted; muffler = noise reduction%, seatbelt = bonus to not being thrown from vehicle * par1 = generic value used for unique bonuses, like the headlight's light intensity */ "fuel_type": "NULL", // (Optional, default = "NULL") Type of fuel/ammo the part consumes, as an item id @@ -760,7 +769,7 @@ See also VEHICLE_JSON.md "description" : "Socks. Put 'em on your feet.", // Description of the item "phase" : "solid", // (Optional, default = "solid") What phase it is "weight" : 350, // Weight of the item in grams. For stackable items (ammo, comestibles) this is the weight per charge. -"volume" : 1, // Volume, measured in 1/4 liters. For stackable items (ammo, comestibles) this is the volume of stack_size charges. +"volume" : 1, // Volume, measured in 1/4 liters. For stackable items (ammo, comestibles) this is the volume of stack_size charges. Volume in ml and L can be used - "50ml" or "2L" "integral_volume" : 0, // Volume added to base item when item is integrated into another (eg. a gunmod integrated to a gun) "rigid": false, // For non-rigid items volume (and for worn items encumbrance) increases proportional to contents "insulation": 1, // (Optional, default = 1) If container or vehicle part, how much insulation should it provide to the contents @@ -836,7 +845,7 @@ Armor can be defined like this: "environmental_protection" : 0, // (Optional, default = 0) How much environmental protection it affords "encumbrance" : 0, // Base encumbrance (unfitted value) "coverage" : 80, // What percentage of body part -"material_thickness" : 1, // Thickness of material, in millimetre units (approximately). Generally ranges between 1 - 5, more unusual armor types go up to 10 or more +"material_thickness" : 1, // Thickness of material, in millimeter units (approximately). Generally ranges between 1 - 5, more unusual armor types go up to 10 or more "power_armor" : false, // If this is a power armor item (those are special). ``` Alternately, every item (book, tool, gun, even food) can be used as armor if it has armor_data: @@ -911,7 +920,7 @@ CBMs can be defined like this: "type" : "BIONIC_ITEM", // Defines this as a CBM ... // same entries as above for the generic item. // additional some CBM specific entries: -"bionic_id" : "bio_advreactor", // ID of the installed bionic if not equaivalent to "id" +"bionic_id" : "bio_advreactor", // ID of the installed bionic if not equivalent to "id" "difficulty" : 11, // Difficulty of installing CBM "is_upgrade" : true // Whether the CBM is an upgrade of another bionic. ``` @@ -2090,7 +2099,7 @@ The ordering value of the mutation overlay. Values range from 0 - 9999, 9999 bei # MOD tileset -MOD tileset defines additional sprite sheets. It is specified as JSON object with `type` member set to `mod_tileset`. +MOD tileset defines additional sprite sheets. It is specified as JSON object with `type` member set to `mod_tileset`. Example: ```JSON diff --git a/doc/JSON_STYLE.md b/doc/JSON_STYLE.md index cba4594d065df..91f3b123f2ba5 100644 --- a/doc/JSON_STYLE.md +++ b/doc/JSON_STYLE.md @@ -1,6 +1,6 @@ # JSON Style Guide -Like in `doc/CODE_STYLE.md`, the JSON styling policy is to update JSON as it is added or edited, and in relatively small chunks otherwise in order to prevent undue distruption to development. +Like in `doc/CODE_STYLE.md`, the JSON styling policy is to update JSON as it is added or edited, and in relatively small chunks otherwise in order to prevent undue disruption to development. We haven't been able to find a decent JSON styling tool, so we wrote our own. It lives in tools/format/format.cpp and it leverages src/json.cpp to parse and emit JSON. @@ -38,8 +38,8 @@ This example outlines most of the styling features: Indention is two spaces. All JSON delimiters except comma and colon are surrounded by whitespace (either a space or a newline). Comma and colon are followed by whitespace. -Object entries are always newline-seperated. -Array entries are newline-seperated if the resulting array would exceed 120 characters otherwise (inluding indention). +Object entries are always newline-separated. +Array entries are newline-separated if the resulting array would exceed 120 characters otherwise (including indention). Line breaks occur after open brackets, close brackets, or entries. ## Formatting tool diff --git a/doc/NPCs.md b/doc/NPCs.md index 9ff3d1217ee8e..c76fedb054cab 100644 --- a/doc/NPCs.md +++ b/doc/NPCs.md @@ -135,8 +135,63 @@ The dynamic line is chosen based on whether the player character has any of an a } ``` +### Based on mutation (trait) possessed by the NPC +The dynamic line is chosen based on whether the NPC has any of an array of traits. Both entries are optional, but you should make sure the NPC says something all the time. Both entries are parsed as `dynamic_line`. The `npc_has_any_trait` string should be one or more valid mutation IDs. The line from `yes` will be shown if the character has one of the traits, otherwise the line from `no`. + +```JSON +{ + "npc_has_any_trait": [ "CANINE_EARS", "LUPINE_EARS", "FELINE_EARS", "URSINE_EARS", "ELFA_EARS" ], + "yes": "I was subjected to strange experiments in a lab.", + "no": "I was a college student." +} +``` + +### Based on mutation (trait) possessed by the player character +The dynamic line is chosen based on whether the player character has a specific trait. Both entries are optional, but you should make sure the NPC says something all the time. Both entries are parsed as `dynamic_line`. `u` is the player character. The `u_has_trait` string should be a valid mutation ID. The line from `yes` will be shown if the character has the trait, otherwise the line from `no`. + +```JSON +{ + "u_has_trait": "ELFA_EARS", + "yes": "A forest protector! You must help us.", + "no": "Hello." +} +``` + +### Based on mutation (trait) possessed by the NPC +The dynamic line is chosen based on whether the NPC has a specific trait. Both entries are optional, but you should make sure the NPC says something all the time. Both entries are parsed as `dynamic_line`. The `npc_has_trait` string should be a valid mutation ID. The line from `yes` will be shown if the character has the trait, otherwise the line from `no`. + +```JSON +{ + "npc_has_trait": "ELFA_EARS", + "yes": "I am a forest protector, and do not speak to outsiders.", + "no": "Hello." +} +``` + +### Based on the NPC's class +The dynamic line is chosen based on whether the NPC is part of a specific clss. Both entries are optional, but you should make sure the NPC says something all the time. Both entries are parsed as `dynamic_line`. The `npc_has_class` string should be a valid NPC class ID. The line from `yes` will be shown if the NPC is part of the clss, otherwise the line from `no`. + +```JSON +{ + "npc_has_class": "NC_ARSONIST", + "yes": "I like setting fires.", + "no": "Hello." +} +``` + +### Based on effect possessed by the player character +The dynamic line is chosen based on whether the player character is currently is under the effect. Both the yes and no entries are mandatory. The line from `yes` will be shown if the player character has the effect, otherwise the line from `no`. + +```JSON +{ + "u_has_effect": "infected", + "yes": "You look sick. You should get some antibiotics.", + "no": "What's going on?" +} +``` + ### Based on effect possessed by the NPC -The dynamic line is chosen based on whether the NPC is currently is under the efffect. Both the yes and no entries are mandatory. The line from `yes` will be shown in the NPC has the effect, otherwise the line from `no`. +The dynamic line is chosen based on whether the NPC is currently is under the effect. Both the yes and no entries are mandatory. The line from `yes` will be shown if the NPC has the effect, otherwise the line from `no`. ```JSON { @@ -350,7 +405,7 @@ Places 10 logs in the ranch garage, and makes the NPC unavailable for 1 day. Places 100 logs in the ranch garage, and makes the NPC unavailable for 7 days. ### bionic_install -The NPC installs a bionic from your character's inventory onto your character, using very high skill, and charging you according to the operation's difficulty. +The NPC installs a bionic from your character's inventory onto your character, using very high skill, and charging you according to the operation's difficulty. ### bionic_remove The NPC removes a bionic from your character, using very high skill , and charging you according to the operation's difficulty. @@ -417,7 +472,7 @@ Remove cost_num from your character's cash. Change the NPC's faction membership to faction_string. ### u_faction_rep: rep_num -Increase's your repuation with the NPC's current faction, or decreases it if rep_num is negative. +Increase's your reputation with the NPC's current faction, or decreases it if rep_num is negative. ### Sample effects { "topic": "TALK_EVAC_GUARD3_HOSTILE", "effect": [ { "u_faction_rep": -15 }, { "npc_change_faction": "hells_raiders" } ] } @@ -455,6 +510,18 @@ The following keys and simple strings are available: ### "u_has_any_trait" (array) `true` if the player character has any trait or mutation in the array. Used to check multiple traits. +### "npc_has_any_trait" (array) +`true` if the NPC has any trait or mutation in the array. Used to check multiple traits. + +### "u_any_trait" (array) +`true` if the player character has a specific trait. A simpler version of u_has_any_trait. + +### "npc_has_trait" (array) +`true` if the NPC has a specific trait. A simpler version of npc_has_any_trait. + +### "npc_has_class" (array) +`true` if the NPC is a member of an NPC class. + ### "u_has_strength" (int) `true` if the player character's strength is at least the value of u_has_strength. @@ -517,7 +584,7 @@ npc_service cash available. Useful to check if the player character can hire an `true` if the NPC is following the player character. ### "at_safe_space" (simple string) -`true` if the NPC's currrent overmap location passes the is_safe() test. +`true` if the NPC's current overmap location passes the is_safe() test. ### "u_can_stow_weapon" (simple string) `true` if the player character is wielding a weapon and has enough space to put it away. @@ -545,7 +612,7 @@ npc_service cash available. Useful to check if the player character can hire an "topic": "TALK_EVAC_MERCHANT_NO", "condition": { "and": [ { "not": { "u_has_intelligence": 7 } }, { "u_has_strength": 11 } ] } }, -{ "text": "[$2000, 1d] 10 logs", "topic": "TALK_DONE", "effect": "buy_10_logs", "condition": +{ "text": "[$2000, 1d] 10 logs", "topic": "TALK_DONE", "effect": "buy_10_logs", "condition": { "npc_service": 2000 } }, { "text": "Maybe later.", "topic": "TALK_RANCH_WOODCUTTER", "condition": "npc_available" }, { diff --git a/doc/REGION_SETTINGS.md b/doc/REGION_SETTINGS.md index 7319e3e76a27c..3e605f311d3b8 100644 --- a/doc/REGION_SETTINGS.md +++ b/doc/REGION_SETTINGS.md @@ -97,7 +97,7 @@ furniture. At the top level, the `forest_mapgen_settings` is a collection of named configurations where each entry has the name of the overmap terrain that it applies to, e.g. `forest`, `forest_thick`, -`forest_water`. It is possible to define settings for overmap terrrains that are not rendered by +`forest_water`. It is possible to define settings for overmap terrains that are not rendered by the forest mapgen, but will be used when blending forest terrains with other terrain types. ```json @@ -218,8 +218,8 @@ for the components are only relevant for the purposes of overriding them in regi The terrain furniture are a collection of terrain ids with a chance of having furniture picked from a weighted list for that given terrain and placed on it during mapgen after the normal mapgen has completed. This is used, for example, to place cattails on fresh -water in swamps. Cattails could be simply placed in the `components` section and placed -during the normal forest mapgen, but that would not guarantee their placement on fresh +water in swamps. Cattails could be simply placed in the `components` section and placed +during the normal forest mapgen, but that would not guarantee their placement on fresh water only, while this does. ### Fields @@ -244,6 +244,52 @@ water only, while this does. } ``` +## Forest Trail Settings + +The **forest_trail_settings** section defines the attributes used in generating trails in the +forests, including their likelihood of spawning, their connectivity, their chance for spawning +trailheads, and some general tuning of the actual trail width/position in mapgen. + +### Fields + +| Identifier | Description | +| -------------------------- | ------------------------------------------------------------------------------------------- | +| `chance` | One in X chance a contiguous forest will have a trail system. | +| `border_point_chance` | One in X chance that the N/S/E/W-most point of the forest will be part of the trail system. | +| `minimum_forest_size` | Minimum contiguous forest size before a trail system can be spawned. | +| `random_point_min` | Minimum # of random points from contiguous forest used to form trail system. | +| `random_point_max` | Maximum # of random points from contiguous forest used to form trail system. | +| `random_point_size_scalar` | Forest size is divided by this and added to the minimum number of random points. | +| `trailhead_chance` | One in X chance a trailhead will spawn at end of trail near field. | +| `trail_center_variance` | Center of the trail in mapgen is offset in X and Y by a random amount between +/- variance | +| `trail_width_offset_min` | Trail width in mapgen is offset by `rng(trail_width_offset_min, trail_width_offset_max)`. | +| `trail_width_offset_max` | Trail width is mapgen offset by `rng(trail_width_offset_min, trail_width_offset_max)`. | +| `clear_trail_terrain` | Clear all previously defined `trail_terrain`. | +| `trail_terrain` | Weighted list of terrain that will used for the trail. | + +### Example + +```json +{ + "forest_trail_settings": { + "chance": 2, + "border_point_chance": 2, + "minimum_forest_size": 100, + "random_point_min": 4, + "random_point_max": 50, + "random_point_size_scalar": 100, + "trailhead_chance": 1, + "trail_center_variance": 3, + "trail_width_offset_min": 1, + "trail_width_offset_max": 3, + "clear_trail_terrain": false, + "trail_terrain": { + "t_dirt": 1 + } + } +} +``` + ## City The **city** section defines the possible overmap terrains and specials that may be used as diff --git a/doc/TRANSLATING.md b/doc/TRANSLATING.md index 34028b53a9799..8a7d09e4d19f0 100644 --- a/doc/TRANSLATING.md +++ b/doc/TRANSLATING.md @@ -116,7 +116,7 @@ string. ### Translation Functions In order to mark a string for translation and to obtain its translation at -runtime, you should use one of the following three functions. +runtime, you should use one of the following functions and classes. String *literals* that are used in any of these functions are automatically extracted. Non-literal strings are still translated at run time, but they won't @@ -137,7 +137,9 @@ add_msg( _( "You drop the %s." ), the_item_name ); ``` Strings from the JSON files are extracted by the `lang/extract_json_strings.py` -script, and can be translated at run time using `_()`. +script, and can be translated at run time using `_()`. If translation context +is desired for a JSON string, `class translation` can be used instead, which is +documented below. #### `pgettext()` @@ -166,6 +168,40 @@ should be used at run time: const char *translated = ngettext("one zombie", "many zombies", num_of_zombies) ``` +### `translation` + +There are times when you want to store a string for translation, maybe with +translation context; Sometimes you may also want to store a string that needs no +translation. `class translation` in `translations.h|cpp` offers the above +functionality in a single wrapper. + +```c++ +const translation text = translation( "Context", "Text" ); +``` + +```c++ +const translation text = translation( "Text without context" ); +``` + +```c++ +const translation text = no_translation( "This string will not be translated" ); +``` + +The string can then be translated/retrieved with + +```c++ +const std::string translated = text.translated(); +``` + +`class translation` can also be read from JSON. The method `translation::deserialize()` +handles deserialization from a `JsonIn` object, so it can be read from JSON +using the appropriate JSON functions. The corresponding JSON syntax for strings +with context is as follows: + +```JSON +"name": { "ctxt": "foo", "str": "bar" } +``` + ### Recommendations In Cataclysm: DDA, some classes, like `itype` and `mtype`, provide a wrapper @@ -193,7 +229,7 @@ There are scripts available for these, so usually the process will be as follows 1. Download the translations in `.po` format. 2. Put them in `lang/incoming/`, ensuring they are named consistently with the files in `lang/po/`. 3. Run `lang/update_pot.sh` to update `lang/po/cataclysm-dda.pot`. -4. Run `lang/merge_po.sh` to update `lang/po/*.po`. +4. Run `lang/merge_po.sh` to update `lang/po/*.po`. (This is only used to test translations locally as the project now uses Transifex for translation) This will also merge the translations from `lang/incoming/`. diff --git a/doc/VEHICLES_JSON.md b/doc/VEHICLES_JSON.md index d85e1a66c6bef..1fca0cd404b1c 100644 --- a/doc/VEHICLES_JSON.md +++ b/doc/VEHICLES_JSON.md @@ -20,7 +20,7 @@ Vehicle prototypes do not currently accept copy-from { "x": 0, "y": 0, "part": "seat" }, // positive y is to the right { "x": 0, "y": 0, "part": "controls"}, // See vehicle_parts.json for part ids { "x": 0, "y": 1, "parts: [ "frame", "seat" ] }, // Arrays of parts on the same space - { "x": 0, "y": 1, "parts: [ { "part": "tank", "fuel": "gasoline" }, "battery_car" }, + { "x": 0, "y": 1, "parts: [ { "part": "tank", "fuel": "gasoline" }, "battery_car" }, { "x": 0, "y": 1, "part": "stereo" }, // parts arrays and part may be mixed on the same space { "x": 1, "y": 0, "parts: [ "frame, "wheel" ] }, { "x": 1, "y": 1, "parts: [ "frame, "wheel" ] }, @@ -35,7 +35,7 @@ Vehicle prototypes do not currently accept copy-from ] ``` -.* Important! *. Vehicle parts must be defined in the same order you would install them in the game (ie, frames and mount points first). You also cannot break the normal rules of installation (you can't stack non-stackable part flags). +.* Important! *. Vehicle parts must be defined in the same order you would install them in the game (ie, frames and mount points first). You also cannot break the normal rules of installation (you can't stack non-stackable part flags). ### Parts list The part list contains an arbitary number of lines. Each line is of the form: diff --git a/gfx/BlockheadTileset/tile_config.json b/gfx/BlockheadTileset/tile_config.json index 289ded9ea40cc..9ef7ca1c67584 100644 --- a/gfx/BlockheadTileset/tile_config.json +++ b/gfx/BlockheadTileset/tile_config.json @@ -9271,19 +9271,19 @@ "rotates": false }, { - "id" : "meat_vac", + "id" : "meat_salted", "fg" : 1089, "bg" : -1, "rotates": false }, { - "id" : "veggy_vac", + "id" : "veggy_salted", "fg" : 1090, "bg" : -1, "rotates": false }, { - "id" : "apple_vac", + "id" : "apple_sugar", "fg" : 1091, "bg" : -1, "rotates": false @@ -12893,21 +12893,7 @@ "multitile" : false }, { - "id" : "bag_meat_vac", - "fg" : 1651, - "bg" : -1, - "rotates" : false, - "multitile" : false - }, - { - "id" : "bag_veggy_vac", - "fg" : 1652, - "bg" : -1, - "rotates" : false, - "multitile" : false - }, - { - "id" : "bag_apple_vac", + "id" : "plastic_bag_vac", "fg" : 1653, "bg" : -1, "rotates" : false, diff --git a/gfx/ChestHole16Tileset/tile_config.json b/gfx/ChestHole16Tileset/tile_config.json index dd02749ed9a68..b7122d5560d33 100644 --- a/gfx/ChestHole16Tileset/tile_config.json +++ b/gfx/ChestHole16Tileset/tile_config.json @@ -26874,7 +26874,7 @@ "rotates": false }, { - "id": "apple_vac", + "id": "apple_sugar", "fg": 736, "bg": 632, "rotates": false @@ -26984,41 +26984,17 @@ "rotates": false }, { - "id": "bag_apple_vac", + "id": "plastic_bag_vac", "fg": 1168, "bg": 632, "rotates": false }, - { - "id": "bag_fish_vac", - "fg": 1169, - "bg": 632, - "rotates": false - }, - { - "id": "bag_hflesh_vac", - "fg": 1170, - "bg": 632, - "rotates": false - }, - { - "id": "bag_meat_vac", - "fg": 1171, - "bg": 632, - "rotates": false - }, { "id": "bag_plastic", "fg": 2792, "bg": 632, "rotates": false }, - { - "id": "bag_veggy_vac", - "fg": 1172, - "bg": 632, - "rotates": false - }, { "id": "banana", "fg": 743, @@ -29771,7 +29747,7 @@ "rotates": false }, { - "id": "fish_vac", + "id": "salted_fish", "fg": 833, "bg": 632, "rotates": false @@ -30302,7 +30278,7 @@ "rotates": false }, { - "id": "hflesh_vac", + "id": "hflesh_salted", "fg": 848, "bg": 632, "rotates": false @@ -31414,7 +31390,7 @@ "rotates": false }, { - "id": "meat_vac", + "id": "meat_salted", "fg": 896, "bg": 632, "rotates": false @@ -34055,7 +34031,7 @@ "rotates": false }, { - "id": "veggy_vac", + "id": "veggy_salted", "fg": 988, "bg": 632, "rotates": false diff --git a/gfx/ChestHole32Tileset/tile_config.json b/gfx/ChestHole32Tileset/tile_config.json index e5d2192f7d753..b830f52121590 100644 --- a/gfx/ChestHole32Tileset/tile_config.json +++ b/gfx/ChestHole32Tileset/tile_config.json @@ -26880,7 +26880,7 @@ "rotates": false }, { - "id": "apple_vac", + "id": "apple_sugar", "fg": 736, "bg": 632, "rotates": false @@ -26990,41 +26990,17 @@ "rotates": false }, { - "id": "bag_apple_vac", + "id": "plastic_bag_vac", "fg": 1168, "bg": 632, "rotates": false }, - { - "id": "bag_fish_vac", - "fg": 1169, - "bg": 632, - "rotates": false - }, - { - "id": "bag_hflesh_vac", - "fg": 1170, - "bg": 632, - "rotates": false - }, - { - "id": "bag_meat_vac", - "fg": 1171, - "bg": 632, - "rotates": false - }, { "id": "bag_plastic", "fg": 2792, "bg": 632, "rotates": false }, - { - "id": "bag_veggy_vac", - "fg": 1172, - "bg": 632, - "rotates": false - }, { "id": "banana", "fg": 743, @@ -29728,12 +29704,6 @@ "bg": 632, "rotates": false }, - { - "id": "salted_fish", - "fg": 833, - "bg": 632, - "rotates": false - }, { "id": "fish_cooked", "fg": 833, @@ -29777,7 +29747,7 @@ "rotates": false }, { - "id": "fish_vac", + "id": "salted_fish", "fg": 833, "bg": 632, "rotates": false @@ -30308,7 +30278,7 @@ "rotates": false }, { - "id": "hflesh_vac", + "id": "hflesh_salted", "fg": 848, "bg": 632, "rotates": false @@ -31420,7 +31390,7 @@ "rotates": false }, { - "id": "meat_vac", + "id": "meat_salted", "fg": 896, "bg": 632, "rotates": false @@ -34061,7 +34031,7 @@ "rotates": false }, { - "id": "veggy_vac", + "id": "veggy_salted", "fg": 988, "bg": 632, "rotates": false diff --git a/gfx/ChestHole32Tileset_iso/tile_config.json b/gfx/ChestHole32Tileset_iso/tile_config.json index 03742550ab853..541664cb83721 100644 --- a/gfx/ChestHole32Tileset_iso/tile_config.json +++ b/gfx/ChestHole32Tileset_iso/tile_config.json @@ -4607,7 +4607,7 @@ { "bg": 632, "fg": 736, - "id": ["apple_canned", "apple_vac"], + "id": ["apple_canned", "apple_sugar"], "rotates": false }, { @@ -5160,7 +5160,7 @@ { "bg": 632, "fg": 833, - "id": [ "fish_pickled", "fish_pickled_jarred", "fish_canned", "salted_fish", "fish_cooked", "fish_fried", "fish_dry", "rehydrated_fish", "fish_smoked", "dry_fish", "fish_vac" ], + "id": [ "fish_pickled", "fish_pickled_jarred", "fish_canned", "salted_fish", "fish_cooked", "fish_fried", "fish_dry", "rehydrated_fish", "fish_smoked", "dry_fish", "salted_fish" ], "rotates": false }, { @@ -5248,7 +5248,7 @@ { "bg": 632, "fg": 848, - "id": ["hflesh_vac", "dry_hflesh", "human_canned", "human_pickled"], + "id": ["hflesh_salted", "dry_hflesh", "human_canned", "human_pickled"], "rotates": false }, { @@ -5520,7 +5520,7 @@ { "bg": 632, "fg": 896, - "id": ["meat_canned", "meat_pickled", "meat_vac"], + "id": ["meat_canned", "meat_pickled"], "rotates": false }, { @@ -6049,7 +6049,7 @@ { "bg": 632, "fg": 988, - "id": ["veggy_canned", "veggy_pickled", "veggy_vac"], + "id": ["veggy_canned", "veggy_pickled", "veggy_salted"], "rotates": false }, { @@ -6694,34 +6694,10 @@ "id": ["atomic_coffeepot", "coffeemaker"], "rotates": false }, - { - "bg": 632, - "fg": 1168, - "id": "bag_apple_vac", - "rotates": false - }, - { - "bg": 632, - "fg": 1169, - "id": "bag_fish_vac", - "rotates": false - }, { "bg": 632, "fg": 1170, - "id": "bag_hflesh_vac", - "rotates": false - }, - { - "bg": 632, - "fg": 1171, - "id": "bag_meat_vac", - "rotates": false - }, - { - "bg": 632, - "fg": 1172, - "id": "bag_veggy_vac", + "id": "plastic_bag_vac", "rotates": false }, { @@ -7223,7 +7199,7 @@ { "bg": 632, "fg": 1261, - "id": ["jar_human_canned", "jar_human_pickled", "jar_meat_canned", "jar_meat_pickled"], + "id": ["jar_human_canned", "jar_human_pickled", "jar_meat_canned", "jar_meat_pickled", "meat_salted"], "rotates": false }, { diff --git a/gfx/ChestHoleTileset/tile_config.json b/gfx/ChestHoleTileset/tile_config.json index 66a0a8d2392fb..9bceea42ad165 100644 --- a/gfx/ChestHoleTileset/tile_config.json +++ b/gfx/ChestHoleTileset/tile_config.json @@ -26886,7 +26886,7 @@ "rotates": false }, { - "id": "apple_vac", + "id": "apple_sugar", "fg": 736, "bg": 632, "rotates": false @@ -26996,41 +26996,17 @@ "rotates": false }, { - "id": "bag_apple_vac", + "id": "plastic_bag_vac", "fg": 1168, "bg": 632, "rotates": false }, - { - "id": "bag_fish_vac", - "fg": 1169, - "bg": 632, - "rotates": false - }, - { - "id": "bag_hflesh_vac", - "fg": 1170, - "bg": 632, - "rotates": false - }, - { - "id": "bag_meat_vac", - "fg": 1171, - "bg": 632, - "rotates": false - }, { "id": "bag_plastic", "fg": 2792, "bg": 632, "rotates": false }, - { - "id": "bag_veggy_vac", - "fg": 1172, - "bg": 632, - "rotates": false - }, { "id": "banana", "fg": 743, @@ -29734,12 +29710,6 @@ "bg": 632, "rotates": false }, - { - "id": "salted_fish", - "fg": 833, - "bg": 632, - "rotates": false - }, { "id": "fish_cooked", "fg": 833, @@ -29783,7 +29753,7 @@ "rotates": false }, { - "id": "fish_vac", + "id": "salted_fish", "fg": 833, "bg": 632, "rotates": false @@ -30314,7 +30284,7 @@ "rotates": false }, { - "id": "hflesh_vac", + "id": "hflesh_salted", "fg": 848, "bg": 632, "rotates": false @@ -31426,7 +31396,7 @@ "rotates": false }, { - "id": "meat_vac", + "id": "meat_salted", "fg": 896, "bg": 632, "rotates": false @@ -34067,7 +34037,7 @@ "rotates": false }, { - "id": "veggy_vac", + "id": "veggy_salted", "fg": 988, "bg": 632, "rotates": false diff --git a/gfx/DeonTileset/tile_config.json b/gfx/DeonTileset/tile_config.json index 60c164804b088..2fec5c6e712af 100644 --- a/gfx/DeonTileset/tile_config.json +++ b/gfx/DeonTileset/tile_config.json @@ -6316,21 +6316,21 @@ "multitile" : false }, { - "id" : "meat_vac", + "id" : "meat_salted", "fg" : 1089, "bg" : -1, "rotates" : false, "multitile" : false }, { - "id" : "veggy_vac", + "id" : "veggy_salted", "fg" : 1090, "bg" : -1, "rotates" : false, "multitile" : false }, { - "id" : "apple_vac", + "id" : "apple_sugar", "fg" : 1091, "bg" : -1, "rotates" : false, @@ -9911,21 +9911,7 @@ "multitile" : false }, { - "id" : "bag_meat_vac", - "fg" : 1651, - "bg" : -1, - "rotates" : false, - "multitile" : false - }, - { - "id" : "bag_veggy_vac", - "fg" : 1652, - "bg" : -1, - "rotates" : false, - "multitile" : false - }, - { - "id" : "bag_apple_vac", + "id" : "plastic_bag_vac", "fg" : 1653, "bg" : -1, "rotates" : false, diff --git a/gfx/HitButton_iso/tile_config.json b/gfx/HitButton_iso/tile_config.json index 66ad88fd056e3..48b875a7b45a2 100644 --- a/gfx/HitButton_iso/tile_config.json +++ b/gfx/HitButton_iso/tile_config.json @@ -6343,7 +6343,7 @@ "fg": 1908 }, { - "id": ["fish_bait_veggy", "veggy", "veggy_wild", "dandelion_cooked", "veggy_tainted", "veggy_cooked", "veggy_wild_cooked", "veggy_aspic", "broccoli", "irradiated_broccoli", "seasoning_italian", "wild_herbs", "mre_veggy", "mre_chicken", "tea_raw", "veggy_canned", "veggy_vac", "spaghetti_pesto", "weed", "seed_weed", "sauerkraut", "chaw", "dry_veggy", "veggy_salad", "dried_salad", "insta_salad", "dry_veggy_tainted", "seed_thyme", "seed_canola", "seed_dogbane", "seed_bee_balm", "seed_mugwort", "seed_buckwheat", "seed_wild_herbs", "seed_veggy_wild", "seed_raw_dandelion", "seed_rhubarb", "seed_mushroom", "seed_mushroom_morel", "seed_mushroom_magic", "seed_mushroom_poison", "seed_pumpkin" ], + "id": ["fish_bait_veggy", "veggy", "veggy_wild", "dandelion_cooked", "veggy_tainted", "veggy_cooked", "veggy_wild_cooked", "veggy_aspic", "broccoli", "irradiated_broccoli", "seasoning_italian", "wild_herbs", "mre_veggy", "mre_chicken", "tea_raw", "veggy_canned", "veggy_salted", "spaghetti_pesto", "weed", "seed_weed", "sauerkraut", "chaw", "dry_veggy", "veggy_salad", "dried_salad", "insta_salad", "dry_veggy_tainted", "seed_thyme", "seed_canola", "seed_dogbane", "seed_bee_balm", "seed_mugwort", "seed_buckwheat", "seed_wild_herbs", "seed_veggy_wild", "seed_raw_dandelion", "seed_rhubarb", "seed_mushroom", "seed_mushroom_morel", "seed_mushroom_magic", "seed_mushroom_poison", "seed_pumpkin" ], "//": "powder green", "fg": 1909 }, @@ -6373,7 +6373,7 @@ "fg": 1914 }, { - "id": ["fish_bait_meat", "fish_bait_fish", "powder_candy", "mre_ravioli", "bologna", "hfleshbologna", "human_flesh", "meat_aspic", "hflesh_aspic", "candy2", "chilly-p", "curry_powder", "macaroni_helper", "hobo_helper", "chili", "chili_human", "apple_canned", "apple_vac", "spaghetti_bolognese", "spaghetti_human", "lasagne", "luigilasagne", "fried_spam", "rhubarb", "irradiated_rhubarb" ], + "id": ["fish_bait_meat", "fish_bait_fish", "powder_candy", "mre_ravioli", "bologna", "hfleshbologna", "human_flesh", "meat_aspic", "hflesh_aspic", "candy2", "chilly-p", "curry_powder", "macaroni_helper", "hobo_helper", "chili", "chili_human", "apple_canned", "apple_sugar", "spaghetti_bolognese", "spaghetti_human", "lasagne", "luigilasagne", "fried_spam", "rhubarb", "irradiated_rhubarb" ], "//": "powder red", "fg": 1915 }, @@ -6511,11 +6511,11 @@ "fg": 1957 }, { - "id": ["royal_beef", "stomach", "hstomach", "stomach_large", "hstomach_large", "meat", "fchicken", "lunchmeat", "meat_cooked", "stomach_boiled", "hstomach_boiled", "small_stomach_boiled", "small_hstomach_boiled", "human_cooked", "meat_canned", "human_canned", "meat_vac", "hflesh_vac", "dry_meat", "dry_hflesh" ], + "id": ["royal_beef", "stomach", "hstomach", "stomach_large", "hstomach_large", "meat", "fchicken", "lunchmeat", "meat_cooked", "stomach_boiled", "hstomach_boiled", "small_stomach_boiled", "small_hstomach_boiled", "human_cooked", "meat_canned", "human_canned", "meat_salted", "hflesh_salted", "dry_meat", "dry_hflesh" ], "fg": 1958 }, { - "id": ["fish_cooked", "rehydrated_fish", "fish_pickled", "fish_vac", "can_herring" ], + "id": ["fish_cooked", "rehydrated_fish", "fish_pickled", "can_herring" ], "fg": 1959 }, { @@ -7279,11 +7279,7 @@ "fg": 2149 }, { - "id": ["bag_meat_vac", "bag_hflesh_vac" ], - "fg": 2150 - }, - { - "id": ["bag_fish_vac" ], + "id": ["plastic_bag_vac" ], "fg": 2151 }, { @@ -7358,10 +7354,6 @@ "id": ["e_handcuffs" ], "fg": 2169 }, - { - "id": ["bag_veggy_vac", "bag_apple_vac" ], - "fg": 2170 - }, { "id": ["steel_chunk" ], "fg": 2171 diff --git a/gfx/HoderTileset/tile_config.json b/gfx/HoderTileset/tile_config.json index 38f65c3043bd1..5245d7d4e18fd 100644 --- a/gfx/HoderTileset/tile_config.json +++ b/gfx/HoderTileset/tile_config.json @@ -8172,21 +8172,21 @@ "multitile" : false }, { - "id" : "meat_vac", + "id" : "meat_salted", "fg" : 1089, "bg" : 193, "rotates" : false, "multitile" : false }, { - "id" : "veggy_vac", + "id" : "veggy_salted", "fg" : 1090, "bg" : 193, "rotates" : false, "multitile" : false }, { - "id" : "apple_vac", + "id" : "apple_sugar", "fg" : 1091, "bg" : 193, "rotates" : false, @@ -11819,21 +11819,7 @@ "multitile" : false }, { - "id" : "bag_meat_vac", - "fg" : 1651, - "bg" : 193, - "rotates" : false, - "multitile" : false - }, - { - "id" : "bag_veggy_vac", - "fg" : 1652, - "bg" : 193, - "rotates" : false, - "multitile" : false - }, - { - "id" : "bag_apple_vac", + "id" : "plastic_bag_vac", "fg" : 1653, "bg" : 193, "rotates" : false, diff --git a/gfx/MSX++DeadPeopleEdition/10_xfiles_32x32_22052-22195.png b/gfx/MSX++DeadPeopleEdition/10_xfiles_32x32_22052-22195.png new file mode 100644 index 0000000000000..5d4ad666a3ab8 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/10_xfiles_32x32_22052-22195.png differ diff --git a/gfx/MSX++DeadPeopleEdition/11_tiles_kawaiimaidmod_32x32_22196-22291.png b/gfx/MSX++DeadPeopleEdition/11_tiles_kawaiimaidmod_32x32_22196-22291.png new file mode 100644 index 0000000000000..d80d86c53a539 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/11_tiles_kawaiimaidmod_32x32_22196-22291.png differ diff --git a/gfx/MSX++DeadPeopleEdition/12_tiles_kawaiimaidmod_offset_32x32_22292-22339.png b/gfx/MSX++DeadPeopleEdition/12_tiles_kawaiimaidmod_offset_32x32_22292-22339.png new file mode 100644 index 0000000000000..1c5b63197beff Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/12_tiles_kawaiimaidmod_offset_32x32_22292-22339.png differ diff --git a/gfx/MSX++DeadPeopleEdition/13_tiles_kawaiimaidmod_64x48-22340-22364.png b/gfx/MSX++DeadPeopleEdition/13_tiles_kawaiimaidmod_64x48-22340-22364.png new file mode 100644 index 0000000000000..d48409584aa86 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/13_tiles_kawaiimaidmod_64x48-22340-22364.png differ diff --git a/gfx/MSX++DeadPeopleEdition/14_tiles2_32x32_22365-27564.png b/gfx/MSX++DeadPeopleEdition/14_tiles2_32x32_22365-27564.png new file mode 100644 index 0000000000000..d98a39acfcf5f Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/14_tiles2_32x32_22365-27564.png differ diff --git a/gfx/MSX++DeadPeopleEdition/15_tiles-connected_variants_32x32_27565-32764.png b/gfx/MSX++DeadPeopleEdition/15_tiles-connected_variants_32x32_27565-32764.png new file mode 100644 index 0000000000000..a74ff14505750 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/15_tiles-connected_variants_32x32_27565-32764.png differ diff --git a/gfx/MSX++DeadPeopleEdition/16_tiles_trees_64x80_32765-33165.png b/gfx/MSX++DeadPeopleEdition/16_tiles_trees_64x80_32765-33165.png new file mode 100644 index 0000000000000..f06a1930df0fd Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/16_tiles_trees_64x80_32765-33165.png differ diff --git a/gfx/MSX++DeadPeopleEdition/17_top_hats_32x32.png b/gfx/MSX++DeadPeopleEdition/17_top_hats_32x32.png new file mode 100644 index 0000000000000..27ad7e70144c3 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/17_top_hats_32x32.png differ diff --git a/gfx/MSX++DeadPeopleEdition/1_tiles_32x32_0-5199.png b/gfx/MSX++DeadPeopleEdition/1_tiles_32x32_0-5199.png new file mode 100644 index 0000000000000..640e4c9e3417b Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/1_tiles_32x32_0-5199.png differ diff --git a/gfx/MSX++DeadPeopleEdition/2_expan_32x32_5200-5391.png b/gfx/MSX++DeadPeopleEdition/2_expan_32x32_5200-5391.png new file mode 100644 index 0000000000000..227c8c9eeba06 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/2_expan_32x32_5200-5391.png differ diff --git a/gfx/MSX++DeadPeopleEdition/3_tree_64x80_5392-5471.png b/gfx/MSX++DeadPeopleEdition/3_tree_64x80_5392-5471.png new file mode 100644 index 0000000000000..a552bfd798bc4 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/3_tree_64x80_5392-5471.png differ diff --git a/gfx/MSX++DeadPeopleEdition/4_fallback_5472-9567.png b/gfx/MSX++DeadPeopleEdition/4_fallback_5472-9567.png new file mode 100644 index 0000000000000..6b25415d4a64c Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/4_fallback_5472-9567.png differ diff --git a/gfx/MSX++DeadPeopleEdition/5_tiles_character_customization_32x32_9568-11567.png b/gfx/MSX++DeadPeopleEdition/5_tiles_character_customization_32x32_9568-11567.png new file mode 100644 index 0000000000000..688efe34f8498 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/5_tiles_character_customization_32x32_9568-11567.png differ diff --git a/gfx/MSX++DeadPeopleEdition/6_tiles_wide_monsters_160x128_11568-11603.png b/gfx/MSX++DeadPeopleEdition/6_tiles_wide_monsters_160x128_11568-11603.png new file mode 100644 index 0000000000000..f9ad5772f94a5 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/6_tiles_wide_monsters_160x128_11568-11603.png differ diff --git a/gfx/MSX++DeadPeopleEdition/7_expan2_32x32_11604-11651.png b/gfx/MSX++DeadPeopleEdition/7_expan2_32x32_11604-11651.png new file mode 100644 index 0000000000000..2b5c78433e359 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/7_expan2_32x32_11604-11651.png differ diff --git a/gfx/MSX++DeadPeopleEdition/8_tiles-monster-variants_32x32_11652-16851.png b/gfx/MSX++DeadPeopleEdition/8_tiles-monster-variants_32x32_11652-16851.png new file mode 100644 index 0000000000000..5cdee7d285057 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/8_tiles-monster-variants_32x32_11652-16851.png differ diff --git a/gfx/MSX++DeadPeopleEdition/9_tiles-connected_32x32_16852-22051.png b/gfx/MSX++DeadPeopleEdition/9_tiles-connected_32x32_16852-22051.png new file mode 100644 index 0000000000000..45ad10b55f405 Binary files /dev/null and b/gfx/MSX++DeadPeopleEdition/9_tiles-connected_32x32_16852-22051.png differ diff --git a/gfx/MSX++DeadPeopleEdition/tile_config.json b/gfx/MSX++DeadPeopleEdition/tile_config.json new file mode 100644 index 0000000000000..7f4c56ba83e95 --- /dev/null +++ b/gfx/MSX++DeadPeopleEdition/tile_config.json @@ -0,0 +1,56986 @@ +{ + "tile_info": [ + { + "height": 32, + "width": 32 + } + ], + "tiles-new": [ + { + "file": "1_tiles_32x32_0-5199.png", + "tiles": [ + { + "id": "10mm", + "fg": 1, + "bg": 957, + "rotates": false + }, + { + "id": "105mm_heat", + "fg": 2, + "rotates": false + }, + { + "id": "120mm_HEAT", + "fg": 2, + "bg": 957 + }, + { + "id": "120mm_usable_heat", + "fg": 2, + "bg": 957 + }, + { + "id": "155mm_heat", + "fg": 2, + "bg": 957 + }, + { + "id": "155mm_frag", + "fg": 2, + "bg": 957 + }, + { + "id": "155mm_shot", + "fg": 2, + "bg": 957 + }, + { + "id": "155mm_slug", + "fg": 2, + "bg": 957 + }, + { + "id": "120mm_usable_ap", + "fg": 3, + "bg": 957 + }, + { + "id": "120mm_usable_shot", + "fg": 3, + "bg": 957 + }, + { + "id": "120mm_usable_slug", + "fg": 3, + "bg": 957 + }, + { + "id": "12mm", + "fg": 4, + "bg": 957, + "rotates": false + }, + { + "id": "20x66_beanbag", + "fg": 5, + "bg": 957, + "rotates": false + }, + { + "id": "20x66_bootleg_flechette", + "fg": 6, + "bg": 957, + "rotates": false + }, + { + "id": "20x66_bootleg_shot", + "fg": 7, + "bg": 957, + "rotates": false + }, + { + "id": "20x66_bootleg_slug", + "fg": 8, + "bg": 957, + "rotates": false + }, + { + "id": "20x66_exp", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "20x66_flare", + "fg": 10, + "bg": 957, + "rotates": false + }, + { + "id": "20x66_flechette", + "fg": 11, + "bg": 957, + "rotates": false + }, + { + "id": "20x66_frag", + "fg": 12, + "bg": 957, + "rotates": false + }, + { + "id": "20x66_inc", + "fg": 13, + "bg": 957, + "rotates": false + }, + { + "id": "20x66_shot", + "fg": 14, + "bg": 957, + "rotates": false + }, + { + "id": "20x66_slug", + "fg": 15, + "bg": 957, + "rotates": false + }, + { + "id": "20_dread", + "fg": 16, + "rotates": false + }, + { + "id": "bearing_lead", + "fg": 16, + "rotates": false + }, + { + "id": "223", + "fg": 17, + "bg": 957 + }, + { + "id": "22_cb", + "fg": 18, + "bg": 957, + "rotates": false + }, + { + "id": ["357", "357_mag", "357_magn"], + "fg": 18, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_357", + "fg": 18, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_357_P", + "fg": 18, + "bg": 957, + "rotates": false + }, + { + "id": "357sig_fmj", + "fg": 18, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_357sig_fmj", + "fg": 18, + "bg": 957, + "rotates": false + }, + { + "id": "357_P", + "fg": 18, + "bg": 957, + "rotates": false + }, + { + "id": "357sig_jhp", + "fg": 21, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_357sig_jhp", + "fg": 21, + "bg": 957, + "rotates": false + }, + { + "id": "22_fmj", + "fg": 19, + "bg": 957, + "rotates": false + }, + { + "id": "22_lr", + "fg": 20, + "bg": 957, + "rotates": false + }, + { + "id": "22_ratshot", + "fg": 21, + "bg": 957, + "rotates": false + }, + { + "id": "270", + "fg": 22, + "bg": 957, + "rotates": false + }, + { + "id": "3006", + "fg": 23, + "bg": 957, + "rotates": false + }, + { + "id": "3006fmj", + "fg": 24, + "bg": 957, + "rotates": false + }, + { + "id": "3006_incendiary", + "fg": 25, + "bg": 957, + "rotates": false + }, + { + "id": "300_winmag", + "fg": 26, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_300_winmag", + "fg": 26 + }, + { + "id": "308", + "fg": 27, + "bg": 957, + "rotates": false + }, + { + "id": "30mm_hedp", + "fg": 28, + "bg": 957 + }, + { + "id": "30mm_hei", + "fg": 29, + "bg": 957 + }, + { + "id": "30mm_slug", + "fg": 30, + "bg": 957 + }, + { + "id": "32_acp", + "fg": 31, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_32_acp", + "fg": 31 + }, + { + "id": "36navy", + "fg": 32, + "bg": 957 + }, + { + "id": "38_fmj", + "fg": 33, + "bg": 957, + "rotates": false + }, + { + "id": "38_special", + "fg": 34, + "bg": 957, + "rotates": false + }, + { + "id": "38_super", + "fg": 35, + "bg": 957, + "rotates": false + }, + { + "id": "40fmj", + "fg": 36, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_beanbag", + "fg": 37, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_concussive", + "fg": 38, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_flare", + "fg": 39, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_flashbang", + "fg": 40, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_flechette", + "fg": 41, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_frag", + "fg": 42, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_incendiary", + "fg": 43, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_shot", + "fg": 44, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_smoke", + "fg": 45, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_teargas", + "fg": 46, + "bg": 957, + "rotates": false + }, + { + "id": "40sw", + "fg": 47, + "bg": 957, + "rotates": false + }, + { + "id": "44fmj", + "fg": 48, + "bg": 957, + "rotates": false + }, + { + "id": "44magnum", + "fg": 49, + "bg": 957, + "rotates": false + }, + { + "id": "454_Casull", + "fg": 50, + "bg": 957, + "rotates": false + }, + { + "id": "45_long_colt", + "fg": 49, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_45_long_colt", + "fg": 49, + "bg": 957, + "rotates": false + }, + { + "id": "45_acp", + "fg": 51, + "bg": 957, + "rotates": false + }, + { + "id": "45_jhp", + "fg": 52, + "bg": 957, + "rotates": false + }, + { + "id": "45_super", + "fg": 53, + "bg": 957, + "rotates": false + }, + { + "id": "46mm", + "fg": 54, + "bg": 957, + "rotates": false + }, + { + "id": "500_Magnum", + "fg": 55, + "bg": 957, + "rotates": false + }, + { + "id": ["50bmg", "50bmg_HEIAP"], + "fg": 56, + "bg": 957, + "rotates": false + }, + { + "id": "50ss", + "fg": 57, + "bg": 957, + "rotates": false + }, + { + "id": "50_incendiary", + "fg": 58, + "bg": 957, + "rotates": false + }, + { + "id": "545", + "fg": 59, + "rotates": false + }, + { + "id": "545_ap", + "fg": 60, + "rotates": false + }, + { + "id": "556", + "fg": 61, + "bg": 957, + "rotates": false + }, + { + "id": "556_incendiary", + "fg": 62, + "bg": 957, + "rotates": false + }, + { + "id": "57mm", + "fg": 63, + "bg": 957, + "rotates": false + }, + { + "id": "5x50dart", + "fg": 64, + "bg": 957, + "rotates": false + }, + { + "id": "5x50heavy", + "fg": 64, + "bg": 957, + "rotates": false + }, + { + "id": "654", + "fg": 65, + "bg": 957 + }, + { + "id": "reloaded_654", + "fg": 65, + "bg": 957 + }, + { + "id": "654t", + "fg": 66, + "bg": 957 + }, + { + "id": "66mm_HEAT", + "fg": 67, + "bg": 957, + "rotates": false + }, + { + "id": "700nx", + "fg": 68, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_700nx", + "fg": 68 + }, + { + "id": ["762_25", "762_38R", "763_25g"], + "fg": 69, + "bg": 957, + "rotates": false + }, + { + "id": "762_25hot", + "fg": 69 + }, + { + "id": "762_25typeP", + "fg": 69 + }, + { + "id": "reloaded_762_25", + "fg": 69 + }, + { + "id": "762_51", + "fg": 70, + "bg": 957, + "rotates": false + }, + { + "id": "762_51_incendiary", + "fg": 71, + "bg": 957, + "rotates": false + }, + { + "id": "762_54R", + "fg": 72, + "bg": 957, + "rotates": false + }, + { + "id": "762_m43", + "fg": 73, + "bg": 957, + "rotates": false + }, + { + "id": "762_m87", + "fg": 74, + "bg": 957, + "rotates": false + }, + { + "id": "84x246mm_he", + "fg": 75, + "bg": 957, + "rotates": false + }, + { + "id": "84x246mm_hedp", + "fg": 76, + "bg": 957, + "rotates": false + }, + { + "id": "84x246mm_smoke", + "fg": 77, + "bg": 957, + "rotates": false + }, + { + "id": "8mm_bootleg", + "fg": 78, + "bg": 957, + "rotates": false + }, + { + "id": "8mm_caseless", + "fg": 79, + "bg": 957, + "rotates": false + }, + { + "id": ["8mm_civilian", "3030_win"], + "fg": 80, + "bg": 957, + "rotates": false + }, + { + "id": "8mm_fmj", + "fg": 81, + "bg": 957, + "rotates": false + }, + { + "id": "8mm_hvp", + "fg": 82, + "bg": 957, + "rotates": false + }, + { + "id": "8mm_inc", + "fg": 83, + "bg": 957, + "rotates": false + }, + { + "id": "8mm_jhp", + "fg": 84, + "bg": 957, + "rotates": false + }, + { + "id": "9mm", + "fg": 85, + "bg": 957, + "rotates": false + }, + { + "id": "9x18mm", + "fg": 85, + "bg": 957, + "rotates": false + }, + { + "id": "9mmfmj", + "fg": 86, + "bg": 957, + "rotates": false + }, + { + "id": "9x18mmfmj", + "fg": 86, + "bg": 957, + "rotates": false + }, + { + "id": "9mmP", + "fg": 87, + "bg": 957, + "rotates": false + }, + { + "id": "9mmP2", + "fg": 88, + "bg": 957, + "rotates": false + }, + { + "id": "9x18mmP2", + "fg": 88, + "bg": 957, + "rotates": false + }, + { + "id": "aluminum_foil", + "fg": 89, + "bg": 957 + }, + { + "id": "ampoule", + "fg": 90 + }, + { + "id": "stimpack_ammo", + "fg": 90 + }, + { + "id": "arrowhead", + "fg": 91, + "bg": 957 + }, + { + "id": "blun_slug", + "fg": 91 + }, + { + "id": "arrowhead_plastic", + "fg": 92, + "bg": 957 + }, + { + "id": "rubber_slug", + "fg": 92 + }, + { + "id": "arrow_cf", + "fg": 93, + "bg": 957, + "rotates": false + }, + { + "id": "arrow_exploding", + "fg": 94, + "bg": 957, + "rotates": false + }, + { + "id": "arrow_field_point", + "fg": 95, + "bg": 957, + "rotates": false + }, + { + "id": "arrow_field_point_fletched", + "fg": 96, + "bg": 957, + "rotates": false + }, + { + "id": "arrow_fire_hardened", + "fg": 97, + "bg": 957, + "rotates": false + }, + { + "id": "survival_marker", + "fg": 97 + }, + { + "id": "arrow_fire_hardened_fletched", + "fg": 98, + "bg": 957, + "rotates": false + }, + { + "id": "arrow_metal_sharpened_fletched", + "fg": 98 + }, + { + "id": "arrow_flamming", + "fg": 99, + "bg": 957, + "rotates": false + }, + { + "id": "flamable_arrow", + "fg": 99 + }, + { + "id": "arrow_heavy_field_point", + "fg": 100, + "bg": 957 + }, + { + "id": ["arrow_heavy_field_point_fletched", "pneu_sniper"], + "fg": 101, + "bg": 957, + "rotates": false + }, + { + "id": "arrow_heavy_fire_hardened", + "fg": 102, + "bg": 957 + }, + { + "id": "arrow_heavy_fire_hardened_fletched", + "fg": 103, + "bg": 957, + "rotates": false + }, + { + "id": ["arrow_metal", "arrow_metal_bodkin"], + "fg": 104, + "bg": 957, + "rotates": false + }, + { + "id": "arrow_metal_sharpened", + "fg": 105, + "bg": 957, + "rotates": false + }, + { + "id": "steel_rail", + "fg": 105 + }, + { + "id": "arrow_plastic", + "fg": 106, + "bg": 957, + "rotates": false + }, + { + "id": "arrow_small_game", + "fg": 107, + "bg": 957, + "rotates": false + }, + { + "id": "arrow_small_game_fletched", + "fg": 107 + }, + { + "id": "arrow_wood_heavy", + "fg": 108, + "bg": 957, + "rotates": false + }, + { + "id": "arrow_wood", + "fg": 108, + "bg": 957, + "rotates": false + }, + { + "id": "atgm_heat", + "fg": 109, + "bg": 957 + }, + { + "id": "battery", + "fg": 110, + "rotates": false + }, + { + "id": "bb", + "fg": 111, + "rotates": false + }, + { + "id": "bearing", + "fg": 112, + "rotates": false + }, + { + "id": "bfeed", + "fg": 113, + "rotates": true + }, + { + "id": "bismuth", + "fg": 114, + "bg": 957 + }, + { + "id": "blun_flechette", + "fg": 115 + }, + { + "id": "shrapnel", + "fg": 115 + }, + { + "id": "dshards", + "fg": 115 + }, + { + "id": "shards", + "fg": 115 + }, + { + "id": "bolt_bone", + "fg": 116, + "bg": 957 + }, + { + "id": "bolt_explosive", + "fg": 117, + "rotates": false + }, + { + "id": "bolt_metal", + "fg": 118, + "bg": 957, + "rotates": false + }, + { + "id": "garandclip", + "fg": 118 + }, + { + "id": ["bolt_steel", "bolt_steel_bodkin"], + "fg": 119, + "bg": 957, + "rotates": false + }, + { + "id": "bolt_wood", + "fg": 120, + "bg": 957, + "rotates": false + }, + { + "id": "b_paint", + "fg": 121, + "bg": 957, + "rotates": false + }, + { + "id": "cable", + "fg": 122, + "rotates": false + }, + { + "id": "chem_aluminium_powder", + "fg": 123, + "bg": 957 + }, + { + "id": "chem_zinc_powder", + "fg": 123 + }, + { + "id": "chem_aluminium_sulphate", + "fg": 124, + "bg": 957 + }, + { + "id": "chem_ammonium_nitrate", + "fg": 124, + "bg": 957 + }, + { + "id": "chem_anfo", + "fg": 124 + }, + { + "id": "chem_hmtd", + "fg": 124 + }, + { + "id": "chem_rdx", + "fg": 124 + }, + { + "id": "chem_saltpetre", + "fg": 124 + }, + { + "id": "material_quicklime", + "fg": 124 + }, + { + "id": "chem_hexamine", + "fg": 125, + "bg": 957 + }, + { + "id": "wool_staple", + "fg": 125 + }, + { + "id": "coal_lump", + "fg": 126, + "bg": 957, + "rotates": false + }, + { + "id": "charcoal", + "fg": 126, + "bg": 957, + "rotates": false + }, + { + "id": "coal", + "fg": 126, + "bg": 957, + "rotates": false + }, + { + "id": "concrete", + "fg": 127 + }, + { + "id": "mortar_build", + "fg": 127 + }, + { + "id": "copper", + "fg": 128, + "bg": 957 + }, + { + "id": "diesel", + "fg": 129, + "rotates": false + }, + { + "id": "down_feather", + "fg": 130, + "rotates": false + }, + { + "id": "duct_tape", + "fg": 131, + "rotates": false + }, + { + "id": "essence", + "fg": 132, + "rotates": false + }, + { + "id": "essence_blood", + "fg": 133, + "rotates": false + }, + { + "id": "essence_dull", + "fg": 134, + "rotates": false + }, + { + "id": "dart", + "fg": 135, + "bg": 957, + "rotates": false + }, + { + "id": "explosive_hm_rocket", + "fg": 135 + }, + { + "id": "incendiary_hm_rocket", + "fg": 135 + }, + { + "id": "spiked_rocket", + "fg": 135 + }, + { + "id": "feather", + "fg": 136, + "rotates": false + }, + { + "id": "fungal_seeds", + "fg": 137, + "bg": 957, + "rotates": false + }, + { + "id": "gasoline", + "fg": 138, + "rotates": false + }, + { + "id": "generic_no_ammo", + "fg": 139, + "rotates": false + }, + { + "id": ["it_battery_mount", "vp_storage_battery_mount"], + "fg": 139 + }, + { + "id": "gold_small", + "fg": 140, + "bg": 957 + }, + { + "id": "gunpowder", + "fg": 141, + "rotates": false + }, + { + "id": "chem_black_powder", + "fg": 141 + }, + { + "id": "g_carpet", + "fg": 142, + "bg": 957, + "rotates": false + }, + { + "id": "g_paint", + "fg": 143, + "bg": 957, + "rotates": false + }, + { + "id": "incendiary", + "fg": 144, + "bg": 957, + "rotates": false + }, + { + "id": "magnesium", + "fg": 144 + }, + { + "id": "material_cement", + "fg": 144 + }, + { + "id": "javelin_copper", + "fg": 145, + "bg": 957 + }, + { + "id": "javelin_stone", + "fg": 146, + "bg": 957 + }, + { + "id": "lance_charge", + "fg": 147, + "bg": 957 + }, + { + "id": "lance_charge_shot", + "fg": 148, + "bg": 957 + }, + { + "id": "laser_pack", + "fg": 149, + "bg": 957, + "rotates": false + }, + { + "id": "lawn_dart", + "fg": 150, + "bg": 957 + }, + { + "id": "lead", + "fg": 151, + "bg": 957 + }, + { + "id": "lgpistol_primer", + "fg": 152, + "rotates": false + }, + { + "id": "44army", + "fg": 152, + "bg": 958 + }, + { + "id": "flintlock_ammo", + "fg": 152, + "bg": 958 + }, + { + "id": "flintlock_shot", + "fg": 152, + "bg": 958 + }, + { + "id": "lgrifle_primer", + "fg": 153, + "rotates": false + }, + { + "id": "lye_powder", + "fg": 154, + "bg": 957, + "rotates": false + }, + { + "id": "m235tpa", + "fg": 155, + "bg": 957, + "rotates": false + }, + { + "id": "marble", + "fg": 156, + "rotates": false + }, + { + "id": "material_limestone", + "fg": 1800, + "bg": 957 + }, + { + "id": "fish_bait", + "fg": 157 + }, + { + "id": "material_sand", + "fg": 158 + }, + { + "id": "medical_tape", + "fg": 159, + "rotates": false + }, + { + "id": "mininuke_mod", + "fg": 160 + }, + { + "id": "h_projectile", + "fg": 160 + }, + { + "id": "nail", + "fg": 161, + "rotates": false + }, + { + "id": "combatnail", + "fg": 161 + }, + { + "id": "oxy_powder", + "fg": 162, + "bg": 957 + }, + { + "id": "pebble", + "fg": 163, + "bg": 957 + }, + { + "id": "pebble_clay", + "fg": 163, + "bg": 957 + }, + { + "id": "blun_shot", + "fg": 163 + }, + { + "id": "plant_fibre", + "fg": 164, + "rotates": false + }, + { + "id": "plasma", + "fg": 165, + "bg": 957, + "rotates": false + }, + { + "id": "plut_cell", + "fg": 166, + "rotates": false + }, + { + "id": "p_carpet", + "fg": 167, + "bg": 957, + "rotates": false + }, + { + "id": "p_paint", + "fg": 168, + "bg": 957, + "rotates": false + }, + { + "id": "rebar_rail", + "fg": 169 + }, + { + "id": "reloaded_10mm", + "fg": 170, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_223", + "fg": 171, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_22_fmj", + "fg": 172, + "bg": 957 + }, + { + "id": "reloaded_22_lr", + "fg": 173, + "bg": 957 + }, + { + "id": "reloaded_270", + "fg": 174, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_3006", + "fg": 175, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_3006fmj", + "fg": 175, + "bg": 957 + }, + { + "id": "reloaded_3006_incendiary", + "fg": 176, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_308", + "fg": 177, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_38_fmj", + "fg": 178, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_38_special", + "fg": 179, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_38_super", + "fg": 180, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_40fmj", + "fg": 181, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_40sw", + "fg": 182, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_44fmj", + "fg": 183, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_44magnum", + "fg": 184, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_454_Casull", + "fg": 185, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_45_acp", + "fg": 186, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_45_jhp", + "fg": 187, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_45_super", + "fg": 188, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_46mm", + "fg": 189, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_500_Magnum", + "fg": 190, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_50bmg", + "fg": 191, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_50ss", + "fg": 192, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_50_incendiary", + "fg": 193, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_545", + "fg": 194, + "bg": 957 + }, + { + "id": "reloaded_545_ap", + "fg": 195, + "bg": 957 + }, + { + "id": "reloaded_556", + "fg": 196, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_556_incendiary", + "fg": 197, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_57mm", + "fg": 198, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_5x50dart", + "fg": 199, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_762_51", + "fg": 200, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_762_54R", + "fg": 200, + "bg": 957 + }, + { + "id": "reloaded_762_51_incendiary", + "fg": 201, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_762_m43", + "fg": 202, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_762_m87", + "fg": 203, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_9mm", + "fg": 204, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_9x18mm", + "fg": 204, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_9mmfmj", + "fg": 205, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_9x18mmfmj", + "fg": 205, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_9mmP", + "fg": 206, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_9mmP2", + "fg": 207, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_9x18mmP2", + "fg": 207, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_laser_pack", + "fg": 208, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_shot_00", + "fg": 209, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_shot_bird", + "fg": 210, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_shot_flechette", + "fg": 211, + "bg": 957 + }, + { + "id": "reloaded_shot_slug", + "fg": 212, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_410_slug", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "shot_410_flechette", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "shot_410_flechette_reloaded", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "shot_410_slug_reloaded", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "shot_410_slug", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "410_scrap", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "shot_410", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "shot_410_reloaded", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_410_shot", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_410_birdshot", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "410_shot", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "410_birdshot", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "410_slug", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "shot_410_hull", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "410_hull", + "fg": 9, + "bg": 957, + "rotates": false + }, + { + "id": "shot_410_inc", + "fg": 10, + "bg": 957, + "rotates": false + }, + { + "id": "shot_410_inc_reloaded", + "fg": 10, + "bg": 957, + "rotates": false + }, + { + "id": "RPG-7_ammo", + "fg": 213, + "rotates": false + }, + { + "id": "r_carpet", + "fg": 214, + "bg": 957, + "rotates": false + }, + { + "id": "r_paint", + "fg": 215, + "bg": 957, + "rotates": false + }, + { + "id": "scrap", + "fg": 216, + "rotates": false + }, + { + "id": "scrap_bronze", + "fg": 217, + "bg": 957 + }, + { + "id": ["shaft_metal", "auto_case"], + "fg": 218, + "rotates": false + }, + { + "id": "shaft_plastic", + "fg": 219, + "rotates": false + }, + { + "id": "shaft_wood", + "fg": 220, + "rotates": false + }, + { + "id": "heavy_snare_kit", + "fg": 3568, + "bg": 220 + }, + { + "id": "rope_makeshift_6", + "fg": 3568 + }, + { + "id": "light_snare_kit", + "fg": 3568, + "bg": 220 + }, + { + "id": "shaft_wood_heavy", + "fg": 221, + "rotates": false + }, + { + "id": "shotgun_primer", + "fg": 222, + "rotates": false + }, + { + "id": "electric_primer", + "fg": 222, + "bg": 957 + }, + { + "id": "electric_primer_large", + "fg": 222, + "bg": 957 + }, + { + "id": "shot_00", + "fg": 223, + "bg": 957, + "rotates": false + }, + { + "id": "shot_beanbag", + "fg": 224, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_shot_beanbag", + "fg": 224, + "bg": 957, + "rotates": false + }, + { + "id": "shot_bird", + "fg": 225, + "bg": 957, + "rotates": false + }, + { + "id": "shot_flechette", + "fg": 226, + "bg": 957, + "rotates": false + }, + { + "id": "shot_he", + "fg": 226, + "bg": 957, + "rotates": false + }, + { + "id": "shot_slug", + "fg": 227, + "bg": 957 + }, + { + "id": "shot_scrapslug", + "fg": 227, + "bg": 957 + }, + { + "id": "shot_scrap", + "fg": 227, + "bg": 957 + }, + { + "id": "signal_flare", + "fg": 228, + "bg": 957, + "rotates": false + }, + { + "id": "silver_small", + "fg": 229, + "bg": 957 + }, + { + "id": "sinew", + "fg": 230, + "rotates": false + }, + { + "id": "smpistol_primer", + "fg": 231, + "rotates": false + }, + { + "id": "smrifle_primer", + "fg": 232, + "rotates": false + }, + { + "id": "soap", + "fg": 233, + "rotates": false + }, + { + "id": "solder_wire", + "fg": 234, + "rotates": false + }, + { + "id": "steel_chunk", + "fg": 235, + "rotates": false + }, + { + "id": "lead_plate", + "fg": 235 + }, + { + "id": "tripwire", + "fg": 3800, + "bg": 235 + }, + { + "id": "steel_lump", + "fg": 236, + "rotates": false + }, + { + "id": "thread", + "fg": 237, + "rotates": false + }, + { + "id": "throwing_axe", + "fg": 238, + "bg": 957 + }, + { + "id": "overlay_wielded_throwing_axe", + "fg": 4378, + "bg": 0 + }, + { + "id": "throwing_knife", + "fg": 239 + }, + { + "id": "throwing_stick", + "fg": 240, + "bg": 957 + }, + { + "id": "tin", + "fg": 241, + "bg": 957 + }, + { + "id": "tinder", + "fg": 242, + "bg": 957 + }, + { + "id": "unfinished_charcoal", + "fg": 243, + "rotates": false + }, + { + "id": "w_paint", + "fg": 244, + "bg": 957, + "rotates": false + }, + { + "id": "bucket", + "fg": 244 + }, + { + "id": "yarn", + "fg": 245, + "rotates": false + }, + { + "id": "y_carpet", + "fg": 246, + "bg": 957, + "rotates": false + }, + { + "id": "y_paint", + "fg": 247, + "bg": 957, + "rotates": false + }, + { + "id": "10gal_hat", + "fg": 248, + "rotates": false + }, + { + "id": "2byarm_guard", + "fg": 249, + "rotates": false + }, + { + "id": "2byshin_guard", + "fg": 250, + "rotates": false + }, + { + "id": "american_flag", + "fg": 251, + "bg": 957, + "rotates": false + }, + { + "id": "apron_leather", + "fg": 252, + "bg": 957, + "rotates": false + }, + { + "id": "armguard_bone", + "fg": 253, + "bg": 957 + }, + { + "id": "gauntlets_bone", + "fg": 253 + }, + { + "id": "armguard_hard", + "fg": 254, + "rotates": false + }, + { + "id": "megaarmor_armguards_1", + "fg": 254, + "rotates": false + }, + { + "id": "armguard_larmor", + "fg": 255, + "bg": 957 + }, + { + "id": "armguard_larmor_mod", + "fg": 255, + "bg": 957 + }, + { + "id": "armguard_chitin", + "fg": 255 + }, + { + "id": ["armguard_metal", "cddaxp_bracer"], + "fg": 256, + "bg": 957, + "rotates": false + }, + { + "id": "armguard_soft", + "fg": 257, + "rotates": false + }, + { + "id": "armor_blarmor", + "fg": 258, + "rotates": false + }, + { + "id": "armor_bone", + "fg": 259, + "rotates": false + }, + { + "id": "armor_chitin", + "fg": 260, + "rotates": false + }, + { + "id": "armor_cuirass", + "fg": 261, + "bg": 957 + }, + { + "id": "kevlar_harness", + "fg": 261 + }, + { + "id": "armor_farmor", + "fg": 262, + "rotates": false + }, + { + "id": "armor_lamellar", + "fg": 263, + "bg": 957, + "rotates": false + }, + { + "id": "armor_larmor", + "fg": 264, + "rotates": false + }, + { + "id": "armor_lorica", + "fg": 265, + "bg": 957 + }, + { + "id": "bookplate", + "fg": 265 + }, + { + "id": "lsurvivor_armor", + "fg": 265 + }, + { + "id": "armor_nomad", + "fg": 266 + }, + { + "id": "overlay_worn_armor_nomad", + "fg": 266, + "rotates": false + }, + { + "id": "armor_plate", + "fg": 267, + "rotates": false + }, + { + "id": "armor_lightplate", + "fg": 267, + "rotates": false + }, + { + "id": "armor_samurai", + "fg": 268, + "bg": 957, + "rotates": false + }, + { + "id": "hood_wsurvivor", + "fg": 268 + }, + { + "id": "armor_scavenger", + "fg": 269 + }, + { + "id": "overlay_worn_armor_scavenger", + "fg": 269, + "rotates": false + }, + { + "id": "army_top", + "fg": 270, + "rotates": false + }, + { + "id": ["arm_splint", "arm_xlsplint"], + "fg": 271, + "bg": 957, + "rotates": false + }, + { + "id": "arm_warmers", + "fg": 272, + "bg": 957, + "rotates": false + }, + { + "id": "backpack", + "fg": 273, + "rotates": false + }, + { + "id": "backpack_leather", + "fg": 274, + "rotates": false + }, + { + "id": "badge_deputy", + "fg": 275, + "bg": 957, + "rotates": false + }, + { + "id": "badge_detective", + "fg": 276, + "bg": 957 + }, + { + "id": "badge_marshal", + "fg": 277, + "bg": 957 + }, + { + "id": "balclava", + "fg": 278, + "bg": 957, + "rotates": false + }, + { + "id": "bandana", + "fg": 279, + "rotates": false + }, + { + "id": "barrette", + "fg": 280, + "bg": 957, + "rotates": false + }, + { + "id": "beekeeping_hood", + "fg": 281 + }, + { + "id": "overlay_worn_beekeeping_hood", + "fg": 281, + "rotates": false + }, + { + "id": "overlay_worn_hat_hooded", + "fg": 281, + "rotates": false + }, + { + "id": "beret", + "fg": 282, + "rotates": false + }, + { + "id": "beret_wool", + "fg": 283, + "rotates": false + }, + { + "id": "bindle", + "fg": 284, + "rotates": false + }, + { + "id": "blanket", + "fg": 285, + "rotates": false + }, + { + "id": "blazer", + "fg": 286, + "rotates": false + }, + { + "id": "boots", + "fg": 287, + "rotates": false + }, + { + "id": "boots_bunker", + "fg": 288, + "rotates": false + }, + { + "id": "boots_fsurvivor", + "fg": 288 + }, + { + "id": "boots_combat", + "fg": 289, + "rotates": false + }, + { + "id": "boots_stealth", + "fg": 289, + "rotates": false + }, + { + "id": "boots_fur", + "fg": 290, + "rotates": false + }, + { + "id": "boots_hiking", + "fg": 291, + "rotates": false + }, + { + "id": "boots_hsurvivor", + "fg": 292, + "rotates": false + }, + { + "id": "megaarmor_boots_1", + "fg": 292, + "rotates": false + }, + { + "id": "boots_xlsurvivor", + "fg": 292 + }, + { + "id": "boots_lsurvivor", + "fg": 293, + "rotates": false + }, + { + "id": "boots_bone", + "fg": 293 + }, + { + "id": "boots_wsurvivor", + "fg": 293 + }, + { + "id": "boots_rubber", + "fg": 294, + "rotates": false + }, + { + "id": "boots_steel", + "fg": 295, + "rotates": false + }, + { + "id": "boots_survivor", + "fg": 296, + "rotates": false + }, + { + "id": "boots_h20survivor", + "fg": 296 + }, + { + "id": "motorbike_boots", + "fg": 296 + }, + { + "id": "boots_western", + "fg": 297, + "rotates": false + }, + { + "id": "boots_chitin", + "fg": 297 + }, + { + "id": "boots_winter", + "fg": 298, + "rotates": false + }, + { + "id": "bowhat", + "fg": 299, + "rotates": false + }, + { + "id": "boxer_briefs", + "fg": 300, + "rotates": false + }, + { + "id": "boxer_shorts", + "fg": 301, + "rotates": false + }, + { + "id": "under_armor_shorts", + "fg": 301, + "rotates": false + }, + { + "id": "boxing_gloves", + "fg": 302, + "bg": 957, + "rotates": false + }, + { + "id": "boy_shorts", + "fg": 303, + "rotates": false + }, + { + "id": "bikini_top", + "fg": 304 + }, + { + "id": "bikini_top_fur", + "fg": 304 + }, + { + "id": "bikini_top_leather", + "fg": 304 + }, + { + "id": "fancy_bra", + "fg": 304 + }, + { + "id": "briefcase", + "fg": 305, + "rotates": false + }, + { + "id": "electrolaser_conversion", + "fg": 305, + "rotates": false + }, + { + "id": "weather_reader", + "fg": 305 + }, + { + "id": "briefs", + "fg": 306, + "rotates": false + }, + { + "id": "bunker_coat", + "fg": 307, + "bg": 957, + "rotates": false + }, + { + "id": "bunker_pants", + "fg": 308, + "bg": 957, + "rotates": false + }, + { + "id": "camisole", + "fg": 309, + "rotates": false + }, + { + "id": "chainmail_arms", + "fg": 310, + "bg": 957 + }, + { + "id": "beekeeping_gloves", + "fg": 310 + }, + { + "id": "chainmail_hauberk", + "fg": 311, + "rotates": false + }, + { + "id": "chainmail_suit", + "fg": 311 + }, + { + "id": "chainmail_hood", + "fg": 312, + "bg": 957 + }, + { + "id": "hood_xlsurvivor", + "fg": 312 + }, + { + "id": "chainmail_legs", + "fg": 313, + "bg": 957 + }, + { + "id": "chainmail_vest", + "fg": 314, + "bg": 957 + }, + { + "id": "chaps_leather", + "fg": 315, + "rotates": false + }, + { + "id": "chestrig", + "fg": 316, + "bg": 957, + "rotates": false + }, + { + "id": "chestwrap", + "fg": 317, + "bg": 957 + }, + { + "id": "chestwrap_fur", + "fg": 318, + "bg": 957 + }, + { + "id": "chestwrap_leather", + "fg": 319, + "bg": 957 + }, + { + "id": "chestwrap_wool", + "fg": 320, + "bg": 957 + }, + { + "id": "cleansuit", + "fg": 321, + "rotates": false + }, + { + "id": "cleats", + "fg": 322, + "bg": 957, + "rotates": false + }, + { + "id": "cloak", + "fg": 323, + "bg": 957 + }, + { + "id": "cloak_fur", + "fg": 325, + "bg": 957 + }, + { + "id": "cloak_leather", + "fg": 324, + "bg": 957 + }, + { + "id": "cloak_wool", + "fg": 326, + "bg": 957 + }, + { + "id": "clownshoes", + "fg": 327, + "bg": 957, + "rotates": false + }, + { + "id": "clown_suit", + "fg": 328, + "bg": 957, + "rotates": false + }, + { + "id": "coat_fur", + "fg": 329, + "bg": 957, + "rotates": false + }, + { + "id": "coat_lab", + "fg": 330, + "rotates": false + }, + { + "id": "coat_rain", + "fg": 331, + "rotates": false + }, + { + "id": "coat_winter", + "fg": 332, + "bg": 957, + "rotates": false + }, + { + "id": "copper_bracelet", + "fg": 333, + "bg": 957 + }, + { + "id": "copper_ear", + "fg": 333 + }, + { + "id": "corset", + "fg": 334, + "bg": 957, + "rotates": false + }, + { + "id": "cowboy_hat", + "fg": 335, + "bg": 957, + "rotates": false + }, + { + "id": "dance_shoes", + "fg": 336, + "rotates": false + }, + { + "id": "depowered_armor", + "fg": 337, + "bg": 957, + "rotates": false + }, + { + "id": "depowered_helmet", + "fg": 338, + "bg": 957, + "rotates": false + }, + { + "id": "diamond_ring", + "fg": 339, + "bg": 957 + }, + { + "id": "dinosuit", + "fg": 340, + "bg": 957, + "rotates": false + }, + { + "id": "down_blanket", + "fg": 341 + }, + { + "id": "dragonskin", + "fg": 342 + }, + { + "id": "overlay_worn_dragonskin", + "fg": 342, + "rotates": false + }, + { + "id": ["overlay_worn_kevlar", "overlay_worn_kevlar_tee"], + "fg": 342, + "rotates": false + }, + { + "id": "overlay_worn_makeshift_kevlar", + "fg": 342, + "rotates": false + }, + { + "id": "dress", + "fg": 343, + "bg": 957, + "rotates": false + }, + { + "id": "dress_shirt", + "fg": 344, + "rotates": false + }, + { + "id": "dress_shoes", + "fg": 345, + "rotates": false + }, + { + "id": "dress_wedding", + "fg": 346, + "bg": 957, + "rotates": false + }, + { + "id": ["duffelbag", "javelin_bag"], + "fg": 347, + "rotates": false + }, + { + "id": "dump_pouch", + "fg": 348, + "bg": 957 + }, + { + "id": "ammo_satchel", + "fg": 348 + }, + { + "id": "bandolier_pistol", + "fg": 348 + }, + { + "id": "bandolier_rifle", + "fg": 348 + }, + { + "id": "bandolier_bomblet", + "fg": 348 + }, + { + "id": "bandolier_shotgun", + "fg": 348 + }, + { + "id": "magbandolier", + "fg": 348 + }, + { + "id": "bandolier_wrist", + "fg": 348 + }, + { + "id": "chestpouch", + "fg": 348 + }, + { + "id": "grenade_pouch", + "fg": 348 + }, + { + "id": "ear_plugs", + "fg": 349, + "rotates": false + }, + { + "id": "elbow_pads", + "fg": 350, + "bg": 957, + "rotates": false + }, + { + "id": "knee_pads", + "fg": 350, + "bg": 957, + "rotates": false + }, + { + "id": "entry_suit", + "fg": 351 + }, + { + "id": "fancy_sunglasses", + "fg": 352, + "bg": 957, + "rotates": false + }, + { + "id": "fanny", + "fg": 353, + "bg": 957, + "rotates": false + }, + { + "id": "runner_bag", + "fg": 353, + "bg": 957, + "rotates": false + }, + { + "id": "survivor_runner_pack", + "fg": 353, + "bg": 957, + "rotates": false + }, + { + "id": "blindfold", + "fg": 353 + }, + { + "id": "survivor_belt", + "fg": 353 + }, + { + "id": "survivor_belt_notools", + "fg": 353 + }, + { + "id": "fencing_jacket", + "fg": 354 + }, + { + "id": "overlay_worn_fencing_jacket", + "fg": 354, + "rotates": false + }, + { + "id": "fencing_mask", + "fg": 355 + }, + { + "id": "overlay_worn_fencing_mask", + "fg": 355, + "rotates": false + }, + { + "id": "firehelmet", + "fg": 356, + "bg": 957 + }, + { + "id": "fire_gauntlets", + "fg": 357, + "rotates": false + }, + { + "id": "fishing_waders", + "fg": 358, + "bg": 957, + "rotates": false + }, + { + "id": "flag_shirt", + "fg": 359, + "bg": 957, + "rotates": false + }, + + { + "id": "leathersandals", + "fg": 360, + "bg": 957, + "rotates": false + }, + { + "id": "bastsandals", + "fg": 360 + }, + { + "id": "clogs", + "fg": 360 + }, + { + "id": "flotation_vest", + "fg": 361, + "bg": 957, + "rotates": false + }, + { + "id": "football_armor", + "fg": 362, + "rotates": false + }, + { + "id": "sockmitts", + "fg": 363 + }, + { + "id": "footrags_fur", + "fg": 364, + "bg": 957 + }, + { + "id": "footrags_leather", + "fg": 365, + "rotates": false + }, + { + "id": "nomex_socks", + "fg": 365 + }, + { + "id": "footrags_wool", + "fg": 366, + "bg": 957 + }, + { + "id": "fur_blanket", + "fg": 367, + "rotates": false + }, + { + "id": "fur_cat_ears", + "fg": 368, + "bg": 957, + "rotates": false + }, + { + "id": "fur_cat_tail", + "fg": 369, + "bg": 957, + "rotates": false + }, + { + "id": "fur_collar", + "fg": 370, + "bg": 957, + "rotates": false + }, + { + "id": "gambeson", + "fg": 371, + "bg": 957 + }, + { + "id": "gauntlets_chitin", + "fg": 372, + "bg": 957, + "rotates": false + }, + { + "id": "gauntlets_larmor", + "fg": 372 + }, + { + "id": "glasses_bal", + "fg": 373, + "bg": 957, + "rotates": false + }, + { + "id": "glasses_monocle", + "fg": 374, + "bg": 957, + "rotates": false + }, + { + "id": "glasses_reading", + "fg": 375, + "rotates": false + }, + { + "id": "glasses_bifocal", + "fg": 375 + }, + { + "id": "glasses_eye", + "fg": 375 + }, + { + "id": "glasses_safety", + "fg": 376, + "bg": 957, + "rotates": false + }, + { + "id": "survivor_goggles", + "fg": 376 + }, + { + "id": "gloves_fingerless", + "fg": 377, + "rotates": false + }, + { + "id": "gloves_fingerless_mod", + "fg": 377, + "bg": 957, + "rotates": false + }, + { + "id": "gloves_fur", + "fg": 378, + "rotates": false + }, + { + "id": "gloves_leather", + "fg": 379, + "rotates": false + }, + { + "id": "gloves_light", + "fg": 380, + "rotates": false + }, + { + "id": "gloves_liner", + "fg": 381, + "rotates": false + }, + { + "id": "thermal_gloves", + "fg": 381, + "bg": 957, + "rotates": false + }, + { + "id": "thermal_gloves_on", + "fg": 381, + "bg": 957, + "rotates": false + }, + { + "id": "gloves_medical", + "fg": 382, + "rotates": false + }, + { + "id": "gloves_plate", + "fg": 383 + }, + { + "id": ["overlay_worn_armguard_metal", "overlay_worn_cddaxp_bracer"], + "fg": 383, + "rotates": false + }, + { + "id": "gloves_rubber", + "fg": 384, + "rotates": false + }, + { + "id": "gloves_tactical", + "fg": 385, + "rotates": false + }, + { + "id": "gloves_lsurvivor", + "fg": 385 + }, + { + "id": "gloves_winter", + "fg": 386, + "rotates": false + }, + { + "id": "winter_gloves_army", + "fg": 386, + "bg": 957, + "rotates": false + }, + { + "id": "gloves_h20survivor", + "fg": 386 + }, + { + "id": "megaarmor_gloves_1", + "fg": 386 + }, + { + "id": "gloves_wsurvivor", + "fg": 386 + }, + { + "id": "gloves_wool", + "fg": 387, + "rotates": false + }, + { + "id": "gloves_work", + "fg": 388, + "bg": 957 + }, + { + "id": "gloves_hsurvivor", + "fg": 388 + }, + { + "id": "gloves_survivor", + "fg": 388 + }, + { + "id": "gloves_wraps", + "fg": 389, + "bg": 957 + }, + { + "id": "gloves_wraps_fur", + "fg": 390, + "bg": 957 + }, + { + "id": "gloves_bag", + "fg": 390 + }, + { + "id": "gloves_wraps_leather", + "fg": 391, + "bg": 957 + }, + { + "id": "gloves_wraps_wool", + "fg": 392, + "bg": 957 + }, + { + "id": "gloves_xlsurvivor", + "fg": 392 + }, + { + "id": "gobag", + "fg": 393, + "bg": 957 + }, + { + "id": "goggles_ski", + "fg": 394, + "bg": 957, + "rotates": false + }, + { + "id": "goggles_swim", + "fg": 395, + "bg": 957, + "rotates": false + }, + { + "id": "goggles_welding", + "fg": 396, + "bg": 957, + "rotates": false + }, + { + "id": "gold_bracelet", + "fg": 397, + "bg": 957 + }, + { + "id": "gold_ear", + "fg": 397 + }, + { + "id": "gold_watch", + "fg": 398, + "rotates": false + }, + { + "id": "sf_watch", + "fg": 398, + "rotates": false + }, + { + "id": "gown", + "fg": 399, + "bg": 957 + }, + { + "id": "greatcoat", + "fg": 400, + "bg": 957 + }, + { + "id": "halter_top", + "fg": 401, + "rotates": false + }, + { + "id": "hat_ball", + "fg": 402, + "bg": 957, + "rotates": false + }, + { + "id": "hat_boonie", + "fg": 403, + "bg": 957, + "rotates": false + }, + { + "id": "hat_chef", + "fg": 404, + "bg": 957, + "rotates": false + }, + { + "id": "hat_cotton", + "fg": 405, + "bg": 957, + "rotates": false + }, + { + "id": "hat_fur", + "fg": 406, + "bg": 957, + "rotates": false + }, + { + "id": "hat_hard", + "fg": 407, + "rotates": false + }, + { + "id": "hat_hard_hooded", + "fg": 408, + "bg": 957 + }, + { + "id": "hat_hooded", + "fg": 409, + "bg": 957 + }, + { + "id": "hat_hunting", + "fg": 410, + "bg": 957, + "rotates": false + }, + { + "id": "hat_knit", + "fg": 411, + "rotates": false + }, + { + "id": "hat_newsboy", + "fg": 412, + "bg": 957 + }, + { + "id": "hat_sombrero", + "fg": 413, + "bg": 957 + }, + { + "id": "straw_fedora", + "fg": 4226, + "bg": 957 + }, + { + "id": "hazmat_suit", + "fg": 414, + "bg": 957, + "rotates": false + }, + { + "id": "headgear", + "fg": 415, + "bg": 957, + "rotates": false + }, + { + "id": "heels", + "fg": 416, + "rotates": false + }, + { + "id": "helmet_army", + "fg": 417, + "rotates": false + }, + { + "id": "helmet_ball", + "fg": 418, + "rotates": false + }, + { + "id": "helmet_barbute", + "fg": 419, + "bg": 957 + }, + { + "id": "helmet_bike", + "fg": 420, + "bg": 957, + "rotates": false + }, + { + "id": "helmet_bone", + "fg": 421, + "rotates": false + }, + { + "id": "helmet_chitin", + "fg": 422, + "rotates": false + }, + { + "id": "helmet_conical", + "fg": 423, + "rotates": false + }, + { + "id": "hood_fsurvivor", + "fg": 423 + }, + { + "id": "helmet_corinthian", + "fg": 424, + "rotates": false + }, + { + "id": "helmet_football", + "fg": 425, + "rotates": false + }, + { + "id": "helmet_galea", + "fg": 426, + "rotates": false + }, + { + "id": "helmet_lobster", + "fg": 426 + }, + { + "id": "helmet_survivor", + "fg": 426 + }, + { + "id": "helmet_xlsurvivor", + "fg": 426 + }, + { + "id": "helmet_kabuto", + "fg": 427, + "bg": 957 + }, + { + "id": "helmet_larmor", + "fg": 427 + }, + { + "id": "helmet_liner", + "fg": 428, + "rotates": false + }, + { + "id": "helmet_netting", + "fg": 428 + }, + { + "id": "helmet_motor", + "fg": 429, + "rotates": false + }, + { + "id": "helmet_nasal", + "fg": 430, + "rotates": false + }, + { + "id": "helmet_plate", + "fg": 431, + "bg": 957, + "rotates": false + }, + { + "id": "helmet_riot", + "fg": 432, + "rotates": false + }, + { + "id": "helmet_skid", + "fg": 433, + "bg": 957, + "rotates": false + }, + { + "id": "helmet_hsurvivor", + "fg": 433 + }, + { + "id": "holster", + "fg": 434, + "bg": 957, + "rotates": false + }, + { + "id": "sholster", + "fg": 434, + "bg": 957, + "rotates": false + }, + { + "id": ["bootstrap", "spearsling"], + "fg": 434 + }, + { + "id": "legrig", + "fg": 434 + }, + { + "id": "holy_symbol", + "fg": 435, + "bg": 957 + }, + { + "id": "holy_symbol_wood", + "fg": 435 + }, + { + "id": "hoodie", + "fg": 436, + "rotates": false + }, + { + "id": "wool_hoodie", + "fg": 436 + }, + { + "id": "hood_rain", + "fg": 437, + "rotates": false + }, + { + "id": "cowl_wool", + "fg": 437 + }, + { + "id": "hot_pants", + "fg": 438, + "bg": 957, + "rotates": false + }, + { + "id": "hot_pants_fur", + "fg": 438 + }, + { + "id": "hot_pants_leather", + "fg": 438 + }, + { + "id": "house_coat", + "fg": 439, + "rotates": false + }, + { + "id": "iggaak", + "fg": 440, + "bg": 957 + }, + { + "id": "jacket_army", + "fg": 441, + "rotates": false + }, + { + "id": "jacket_evac", + "fg": 442, + "bg": 957 + }, + { + "id": "jacket_flannel", + "fg": 443, + "rotates": false + }, + { + "id": "jacket_jean", + "fg": 444, + "rotates": false + }, + { + "id": "technician_shirt_ltblue", + "fg": 444 + }, + { + "id": "jacket_leather", + "fg": 445, + "rotates": false + }, + { + "id": "jacket_leather_mod", + "fg": 445 + }, + { + "id": "jacket_light", + "fg": 446, + "rotates": false + }, + { + "id": "jacket_windbreaker", + "fg": 446 + }, + { + "id": "jeans", + "fg": 447, + "rotates": false + }, + { + "id": "jerrypack", + "fg": 448, + "bg": 957 + }, + { + "id": "jersey", + "fg": 449, + "rotates": false + }, + { + "id": "judo_belt_blue", + "fg": 450, + "bg": 957 + }, + { + "id": "judo_belt_brown", + "fg": 451, + "rotates": false + }, + { + "id": "judo_belt_green", + "fg": 452, + "rotates": false + }, + { + "id": "judo_belt_orange", + "fg": 453, + "rotates": false + }, + { + "id": "judo_belt_white", + "fg": 454, + "rotates": false + }, + { + "id": "judo_belt_yellow", + "fg": 455, + "bg": 957 + }, + { + "id": "jumpsuit", + "fg": 456, + "bg": 957, + "rotates": false + }, + { + "id": "jumpsuit_xl", + "fg": 456, + "bg": 957 + }, + { + "id": "karate_gi", + "fg": 457, + "bg": 957 + }, + { + "id": "judo_gi", + "fg": 457, + "bg": 957 + }, + { + "id": "keikogi", + "fg": 458, + "bg": 957 + }, + { + "id": "technician_shirt_gray", + "fg": 458 + }, + { + "id": "kevlar", + "fg": 459, + "bg": 957, + "rotates": false + }, + { + "id": "knee_high_boots", + "fg": 460, + "bg": 957 + }, + { + "id": "leather_belt", + "fg": 461, + "bg": 957, + "rotates": false + }, + { + "id": "drivebelt", + "fg": 461 + }, + { + "id": "leather_cat_ears", + "fg": 462, + "bg": 957, + "rotates": false + }, + { + "id": "leather_cat_tail", + "fg": 463, + "bg": 957, + "rotates": false + }, + { + "id": "leather_collar", + "fg": 464, + "bg": 957, + "rotates": false + }, + { + "id": "legguard_bronze", + "fg": 465, + "rotates": false + }, + { + "id": "legguard_hard", + "fg": 466, + "bg": 957, + "rotates": false + }, + { + "id": "legguard_metal", + "fg": 467, + "bg": 957, + "rotates": false + }, + { + "id": "legguard_lightplate", + "fg": 467, + "bg": 957, + "rotates": false + }, + { + "id": ["leg_splint", "leg_xlsplint"], + "fg": 468, + "bg": 957 + }, + { + "id": "legguard_paper", + "fg": 468 + }, + { + "id": "leg_warmers", + "fg": 469, + "bg": 957, + "rotates": false + }, + { + "id": "leg_warmers_xl", + "fg": 469, + "bg": 957 + }, + { + "id": "leg_warmers_f", + "fg": 470, + "bg": 957 + }, + { + "id": "leg_warmers_xlf", + "fg": 470, + "rotates": false + }, + { + "id": "locket", + "fg": 471, + "bg": 957, + "rotates": false + }, + { + "id": "loincloth", + "fg": 472, + "rotates": false + }, + { + "id": "legpouch", + "fg": 472 + }, + { + "id": "loincloth_fur", + "fg": 473, + "rotates": false + }, + { + "id": "loincloth_leather", + "fg": 474, + "rotates": false + }, + { + "id": "legpouch_large", + "fg": 474 + }, + { + "id": "loincloth_wool", + "fg": 475, + "rotates": false + }, + { + "id": "longshirt", + "fg": 476, + "rotates": false + }, + { + "id": "long_underpants", + "fg": 477, + "bg": 957, + "rotates": false + }, + { + "id": "long_undertop", + "fg": 478, + "bg": 957, + "rotates": false + }, + { + "id": "lowtops", + "fg": 479, + "rotates": false + }, + { + "id": "sneakers", + "fg": 479, + "rotates": false + }, + { + "id": "shoes_bowling", + "fg": 479 + }, + { + "id": "maid_dress", + "fg": 480, + "rotates": false + }, + { + "id": "makeshift_knapsack", + "fg": 481, + "bg": 957 + }, + { + "id": "leather_pouch", + "fg": 481 + }, + { + "id": "flintlock_pouch", + "fg": 481 + }, + { + "id": "mask_bal", + "fg": 482, + "bg": 957, + "rotates": false + }, + { + "id": "mask_dust", + "fg": 483, + "rotates": false + }, + { + "id": "mask_filter", + "fg": 484, + "rotates": false + }, + { + "id": "mask_gas", + "fg": 485, + "rotates": false + }, + { + "id": "mask_gas_xl", + "fg": 485, + "bg": 957 + }, + { + "id": "mask_guy_fawkes", + "fg": 486, + "bg": 957 + }, + { + "id": "mask_hockey", + "fg": 487, + "bg": 957, + "rotates": false + }, + { + "id": "mask_survivor", + "fg": 488, + "bg": 957, + "rotates": false + }, + { + "id": "mask_survivorxl", + "fg": 488, + "bg": 957, + "rotates": false + }, + { + "id": "mbag", + "fg": 489, + "rotates": false + }, + { + "id": "mittens", + "fg": 490, + "bg": 957, + "rotates": false + }, + { + "id": "mocassins", + "fg": 491, + "rotates": false + }, + { + "id": "shoes_birchbark", + "fg": 491, + "bg": 957, + "rotates": false + }, + { + "id": "straw_sandals", + "fg": 491 + }, + { + "id": "modularvest", + "fg": 492, + "bg": 957, + "rotates": false + }, + { + "id": "megaarmor_torso_1", + "fg": 492, + "bg": 957, + "rotates": false + }, + { + "id": "modularvestceramic", + "fg": 492, + "bg": 957, + "rotates": false + }, + { + "id": "modularvesthard", + "fg": 492, + "bg": 957, + "rotates": false + }, + { + "id": "modularvestkevlar", + "fg": 492, + "bg": 957, + "rotates": false + }, + { + "id": "modularveststeel", + "fg": 492, + "bg": 957, + "rotates": false + }, + { + "id": "modularvestsuper", + "fg": 492, + "bg": 957, + "rotates": false + }, + { + "id": "molle_pack", + "fg": 493, + "bg": 957, + "rotates": false + }, + { + "id": "mouthpiece", + "fg": 494, + "bg": 957 + }, + { + "id": "nanoskirt", + "fg": 495, + "rotates": false + }, + { + "id": "dress_skirt", + "fg": 495 + }, + { + "id": "microskirt", + "fg": 495 + }, + { + "id": "necklace", + "fg": 496, + "bg": 957, + "rotates": false + }, + { + "id": "obi_gi", + "fg": 497, + "bg": 957, + "rotates": false + }, + { + "id": "judo_belt_black", + "fg": 497, + "bg": 957, + "rotates": false + }, + { + "id": "optical_cloak", + "fg": 498 + }, + { + "id": "overlay_female_worn_dress_shirt", + "fg": 499, + "rotates": false + }, + { + "id": "overlay_female_worn_postman_shirt", + "fg": 499, + "rotates": false + }, + { + "id": "overlay_female_worn_jumpsuit", + "fg": 500, + "rotates": false + }, + { + "id": "overlay_female_worn_jumpsuit_xl", + "fg": 500, + "rotates": false + }, + { + "id": "overlay_female_worn_long_underpants", + "fg": 501, + "rotates": false + }, + { + "id": "overlay_female_worn_long_undertop", + "fg": 502, + "rotates": false + }, + { + "id": "overlay_female_worn_sheriffshirt", + "fg": 503, + "rotates": false + }, + { + "id": "overlay_female_worn_longshirt", + "fg": 503, + "rotates": false + }, + { + "id": "overlay_female_worn_tshirt", + "fg": 504, + "rotates": false + }, + { + "id": "overlay_female_worn_linuxtshirt", + "fg": 504, + "rotates": false + }, + { + "id": "overlay_female_worn_polo_shirt", + "fg": 504, + "rotates": false + }, + { + "id": "overlay_female_worn_tshirt_text", + "fg": 504, + "rotates": false + }, + { + "id": "overlay_female_worn_under_armor", + "fg": 505, + "rotates": false + }, + { + "id": "overlay_female_worn_union_suit", + "fg": 506, + "rotates": false + }, + { + "id": "overlay_male_worn_dress_shirt", + "fg": 507, + "rotates": false + }, + { + "id": "overlay_male_worn_postman_shirt", + "fg": 507, + "rotates": false + }, + { + "id": "overlay_male_worn_jumpsuit", + "fg": 508, + "rotates": false + }, + { + "id": "overlay_male_worn_jumpsuit_xl", + "fg": 508, + "rotates": false + }, + { + "id": "overlay_male_worn_long_underpants", + "fg": 509, + "rotates": false + }, + { + "id": "overlay_male_worn_long_undertop", + "fg": 510, + "rotates": false + }, + { + "id": "overlay_male_worn_sheriffshirt", + "fg": 511, + "rotates": false + }, + { + "id": "overlay_male_worn_longshirt", + "fg": 511, + "rotates": false + }, + { + "id": "overlay_male_worn_tshirt", + "fg": 512, + "rotates": false + }, + { + "id": "overlay_male_worn_linuxtshirt", + "fg": 512, + "rotates": false + }, + { + "id": "overlay_male_worn_polo_shirt", + "fg": 512, + "rotates": false + }, + { + "id": "overlay_male_worn_tshirt_text", + "fg": 512, + "rotates": false + }, + { + "id": "overlay_male_worn_under_armor", + "fg": 513, + "rotates": false + }, + { + "id": "overlay_male_worn_union_suit", + "fg": 514, + "rotates": false + }, + { + "id": "overlay_worn_aep_suit", + "fg": 515, + "rotates": false + }, + { + "id": "aep_suit", + "fg": 515 + }, + { + "id": "overlay_worn_american_flag", + "fg": 516, + "rotates": false + }, + { + "id": "overlay_worn_hazmat_suit", + "fg": 517, + "rotates": false + }, + { + "id": "overlay_worn_armguard_chitin", + "fg": 518, + "rotates": false + }, + { + "id": "overlay_worn_armguard_larmor", + "fg": 518, + "rotates": false + }, + { + "id": "overlay_worn_armguard_larmor_mod", + "fg": 518, + "rotates": false + }, + { + "id": "overlay_worn_armguard_hard", + "fg": 519, + "rotates": false + }, + { + "id": "overlay_worn_2byarm_guard", + "fg": 519, + "rotates": false + }, + { + "id": "overlay_worn_armguard_soft", + "fg": 519, + "rotates": false + }, + { + "id": "overlay_worn_armguard_paper", + "fg": 520, + "rotates": false + }, + { + "id": "armguard_paper", + "fg": 520 + }, + { + "id": "overlay_worn_armor_bone", + "fg": 521, + "rotates": false + }, + { + "id": "overlay_worn_armor_chitin", + "fg": 522, + "rotates": false + }, + { + "id": "overlay_worn_armor_larmor", + "fg": 523, + "rotates": false + }, + { + "id": "overlay_worn_armor_blarmor", + "fg": 523, + "rotates": false + }, + { + "id": "overlay_worn_armor_farmor", + "fg": 523, + "rotates": false + }, + { + "id": "overlay_worn_armor_lamellar", + "fg": 523, + "rotates": false + }, + { + "id": "overlay_worn_armor_plarmor", + "fg": 524, + "rotates": false + }, + { + "id": "armor_plarmor", + "fg": 524 + }, + { + "id": "overlay_worn_armor_plate", + "fg": 525, + "rotates": false + }, + { + "id": "overlay_worn_armor_lightplate", + "fg": 525, + "rotates": false + }, + { + "id": "overlay_worn_armor_samurai", + "fg": 526, + "rotates": false + }, + { + "id": "overlay_worn_armor_scrapsuit", + "fg": 527, + "rotates": false + }, + { + "id": "armor_scrapsuit", + "fg": 527 + }, + { + "id": "overlay_worn_army_top", + "fg": 528, + "rotates": false + }, + { + "id": "overlay_worn_arm_splint", + "fg": 529, + "rotates": false + }, + { + "id": "overlay_worn_arm_warmers", + "fg": 530, + "rotates": false + }, + { + "id": "overlay_worn_backpack", + "fg": 531, + "rotates": false + }, + { + "id": "overlay_worn_back_holster", + "fg": 532, + "rotates": false + }, + { + "id": "overlay_worn_balclava", + "fg": 533, + "rotates": false + }, + { + "id": "overlay_worn_bandana", + "fg": 534, + "rotates": false + }, + { + "id": "overlay_worn_bastsandals", + "fg": 535, + "rotates": false + }, + { + "id": "overlay_worn_beekeeping_suit", + "fg": 536, + "rotates": false + }, + { + "id": "beekeeping_suit", + "fg": 536 + }, + { + "id": "overlay_worn_beret", + "fg": 537, + "rotates": false + }, + { + "id": "overlay_worn_beret_wool", + "fg": 537, + "rotates": false + }, + { + "id": "overlay_worn_bikini_bottom", + "fg": 538, + "rotates": false + }, + { + "id": "overlay_worn_bikini_top", + "fg": 539, + "rotates": false + }, + { + "id": "overlay_worn_bindle", + "fg": 540, + "rotates": false + }, + { + "id": "overlay_worn_blanket", + "fg": 541, + "rotates": false + }, + { + "id": "overlay_worn_down_blanket", + "fg": 541, + "rotates": false + }, + { + "id": "overlay_worn_fur_blanket", + "fg": 541, + "rotates": false + }, + { + "id": "overlay_worn_sheet", + "fg": 541, + "rotates": false + }, + { + "id": "overlay_worn_emer_blanket_on", + "fg": 541, + "rotates": false + }, + { + "id": "overlay_worn_tarp", + "fg": 541, + "rotates": false + }, + { + "id": "overlay_worn_emer_blanket", + "fg": 541, + "rotates": false + }, + { + "id": "overlay_worn_blazer", + "fg": 542, + "rotates": false + }, + { + "id": "overlay_worn_blindfold", + "fg": 543, + "rotates": false + }, + { + "id": "overlay_worn_bondage_suit", + "fg": 545, + "rotates": false + }, + { + "id": "overlay_worn_boots", + "fg": 546, + "rotates": false + }, + { + "id": "overlay_worn_boots_hiking", + "fg": 546, + "rotates": false + }, + { + "id": "overlay_worn_bootsheath", + "fg": 547, + "rotates": false + }, + { + "id": "overlay_worn_bootstrap", + "fg": 548, + "rotates": false + }, + { + "id": "overlay_worn_boots_bone", + "fg": 549, + "rotates": false + }, + { + "id": "overlay_worn_boots_chitin", + "fg": 550, + "rotates": false + }, + { + "id": "overlay_worn_boots_combat", + "fg": 551, + "rotates": false + }, + { + "id": "overlay_worn_boots_stealth", + "fg": 551, + "rotates": false + }, + { + "id": "overlay_worn_boots_hsurvivor", + "fg": 552, + "rotates": false + }, + { + "id": "overlay_worn_boots_survivor", + "fg": 553, + "rotates": false + }, + { + "id": "overlay_worn_boots_lsurvivor", + "fg": 553, + "rotates": false + }, + { + "id": "overlay_worn_boots_fur", + "fg": 553, + "rotates": false + }, + { + "id": "overlay_worn_motorbike_boots", + "fg": 553, + "rotates": false + }, + { + "id": "overlay_worn_boots_rubber", + "fg": 554, + "rotates": false + }, + { + "id": "overlay_worn_boots_fsurvivor", + "fg": 554, + "rotates": false + }, + { + "id": "overlay_worn_boots_bunker", + "fg": 554, + "rotates": false + }, + { + "id": "overlay_worn_boots_steel", + "fg": 555, + "rotates": false + }, + { + "id": "overlay_worn_boots_western", + "fg": 556, + "rotates": false + }, + { + "id": "overlay_worn_boots_winter", + "fg": 557, + "rotates": false + }, + { + "id": "overlay_worn_boots_wsurvivor", + "fg": 557, + "rotates": false + }, + { + "id": "overlay_worn_boots_xlsurvivor", + "fg": 557, + "rotates": false + }, + { + "id": "overlay_worn_bowhat", + "fg": 558, + "rotates": false + }, + { + "id": "overlay_worn_porkpie", + "fg": 558, + "rotates": false + }, + { + "id": "overlay_worn_tophat", + "fg": 558, + "rotates": false + }, + { + "id": "overlay_worn_boxer_briefs", + "fg": 559, + "rotates": false + }, + { + "id": "overlay_worn_boxer_shorts", + "fg": 559, + "rotates": false + }, + { + "id": "overlay_worn_boxing_gloves", + "fg": 560, + "rotates": false + }, + { + "id": "overlay_worn_boy_shorts", + "fg": 561, + "rotates": false + }, + { + "id": "overlay_worn_fancy_bra", + "fg": 562, + "rotates": false + }, + { + "id": "overlay_worn_briefcase", + "fg": 563, + "rotates": false + }, + { + "id": "overlay_worn_briefs", + "fg": 564, + "rotates": false + }, + { + "id": "overlay_worn_bscabbard", + "fg": 565, + "rotates": false + }, + { + "id": "overlay_worn_bunker_coat", + "fg": 566, + "rotates": false + }, + { + "id": "overlay_worn_bunker_pants", + "fg": 567, + "rotates": false + }, + { + "id": "overlay_worn_b_shorts", + "fg": 568, + "rotates": false + }, + { + "id": "overlay_worn_camisole", + "fg": 569, + "rotates": false + }, + { + "id": "overlay_worn_cassock", + "fg": 570, + "rotates": false + }, + { + "id": "overlay_worn_chainmail_arms", + "fg": 571, + "rotates": false + }, + { + "id": "overlay_worn_armguard_bone", + "fg": 571, + "rotates": false + }, + { + "id": "overlay_worn_chainmail_hood", + "fg": 572, + "rotates": false + }, + { + "id": "overlay_worn_helmet_galea", + "fg": 572, + "rotates": false + }, + { + "id": "overlay_worn_helmet_nasal", + "fg": 572, + "rotates": false + }, + { + "id": "overlay_worn_chainmail_legs", + "fg": 573, + "rotates": false + }, + { + "id": "overlay_worn_chainmail_suit", + "fg": 574, + "rotates": false + }, + { + "id": "overlay_worn_chainmail_vest", + "fg": 575, + "rotates": false + }, + { + "id": "overlay_worn_armor_cuirass", + "fg": 575, + "rotates": false + }, + { + "id": "overlay_worn_armor_lorica", + "fg": 575, + "rotates": false + }, + { + "id": "overlay_worn_chainmail_hauberk", + "fg": 575, + "rotates": false + }, + { + "id": "overlay_worn_chaps_leather", + "fg": 576, + "rotates": false + }, + { + "id": "overlay_worn_chestwrap", + "fg": 577, + "rotates": false + }, + { + "id": "overlay_worn_chestwrap_fur", + "fg": 577, + "rotates": false + }, + { + "id": "overlay_worn_chestwrap_leather", + "fg": 577, + "rotates": false + }, + { + "id": "overlay_worn_chestwrap_wool", + "fg": 577, + "rotates": false + }, + { + "id": "overlay_worn_bikini_top_fur", + "fg": 577, + "rotates": false + }, + { + "id": "overlay_worn_bikini_top_leather", + "fg": 577, + "rotates": false + }, + { + "id": "overlay_worn_cleansuit", + "fg": 578, + "rotates": false + }, + { + "id": "overlay_worn_cloak", + "fg": 579, + "rotates": false + }, + { + "id": "overlay_worn_clogs", + "fg": 580, + "rotates": false + }, + { + "id": "overlay_worn_mocassins", + "fg": 580, + "rotates": false + }, + { + "id": "overlay_worn_clownshoes", + "fg": 581, + "rotates": false + }, + { + "id": "overlay_worn_clown_suit", + "fg": 582, + "rotates": false + }, + { + "id": "overlay_worn_coat_fur", + "fg": 583, + "rotates": false + }, + { + "id": "coat_fur_sf", + "fg": 583 + }, + { + "id": "overlay_worn_coat_fur_sf", + "fg": 583, + "rotates": false + }, + { + "id": "overlay_worn_coat_lab", + "fg": 584, + "rotates": false + }, + { + "id": "overlay_worn_cloak_bless", + "fg": 584, + "rotates": false + }, + { + "id": "overlay_worn_coat_rain", + "fg": 585, + "rotates": false + }, + { + "id": "overlay_worn_coat_winter", + "fg": 586, + "rotates": false + }, + { + "id": "overlay_worn_corset", + "fg": 587, + "rotates": false + }, + { + "id": "overlay_worn_cowboy_hat", + "fg": 588, + "rotates": false + }, + { + "id": "overlay_worn_depowered_helmet", + "fg": 589, + "rotates": false + }, + { + "id": "overlay_worn_dinosuit", + "fg": 590, + "rotates": false + }, + { + "id": "overlay_worn_dive_bag", + "fg": 591, + "rotates": false + }, + { + "id": "overlay_worn_dress", + "fg": 592, + "rotates": false + }, + { + "id": "overlay_worn_gown", + "fg": 592, + "rotates": false + }, + { + "id": "overlay_worn_dress_wedding", + "fg": 593, + "rotates": false + }, + { + "id": "overlay_worn_dress_bless", + "fg": 593, + "rotates": false + }, + { + "id": "overlay_worn_duster", + "fg": 594, + "rotates": false + }, + { + "id": "overlay_worn_duster_fur", + "fg": 594, + "rotates": false + }, + { + "id": "overlay_worn_duster_leather", + "fg": 594, + "rotates": false + }, + { + "id": "overlay_worn_duster_survivor", + "fg": 595, + "rotates": false + }, + { + "id": "overlay_worn_elbow_pads", + "fg": 596, + "rotates": false + }, + { + "id": "overlay_worn_fencing_pants", + "fg": 597, + "rotates": false + }, + { + "id": "fencing_pants", + "fg": 597 + }, + { + "id": "overlay_worn_firehelmet", + "fg": 598, + "rotates": false + }, + { + "id": "overlay_worn_fishing_waders", + "fg": 599, + "rotates": false + }, + { + "id": "overlay_worn_flag_shirt", + "fg": 600, + "rotates": false + }, + { + "id": "overlay_worn_leathersandals", + "fg": 601, + "rotates": false + }, + { + "id": "overlay_worn_straw_sandals", + "fg": 601, + "rotates": false + }, + { + "id": "overlay_worn_football_armor", + "fg": 602, + "rotates": false + }, + { + "id": "overlay_worn_tabi_gi", + "fg": 603, + "rotates": false + }, + { + "id": "overlay_worn_thermal_socks", + "fg": 603, + "rotates": false + }, + { + "id": "overlay_worn_thermal_socks_on", + "fg": 603, + "rotates": false + }, + { + "id": "overlay_worn_fur_cat_tail", + "fg": 604, + "rotates": false + }, + { + "id": "overlay_worn_leather_cat_tail", + "fg": 604, + "rotates": false + }, + { + "id": "overlay_worn_fur_collar", + "fg": 605, + "rotates": false + }, + { + "id": "overlay_worn_leather_collar", + "fg": 605, + "rotates": false + }, + { + "id": "overlay_worn_glasses_eye", + "fg": 606, + "rotates": false + }, + { + "id": "overlay_worn_glasses_bifocal", + "fg": 606, + "rotates": false + }, + { + "id": "overlay_worn_glasses_reading", + "fg": 606, + "rotates": false + }, + { + "id": "overlay_worn_glasses_monocle", + "fg": 607, + "rotates": false + }, + { + "id": "overlay_worn_glasses_safety", + "fg": 608, + "rotates": false + }, + { + "id": "overlay_worn_gloves_bag", + "fg": 609, + "rotates": false + }, + { + "id": "overlay_worn_gloves_fingerless", + "fg": 610, + "rotates": false + }, + { + "id": "overlay_worn_gloves_fingerless_mod", + "fg": 610, + "rotates": false + }, + { + "id": "overlay_worn_vambrace_larmor", + "fg": 610, + "rotates": false + }, + { + "id": "overlay_worn_gloves_rubber", + "fg": 611, + "rotates": false + }, + { + "id": "overlay_worn_fire_gauntlets", + "fg": 611, + "rotates": false + }, + { + "id": "overlay_worn_mittens", + "fg": 611, + "rotates": false + }, + { + "id": "overlay_worn_gloves_fur", + "fg": 612, + "rotates": false + }, + { + "id": "overlay_worn_gloves_leather", + "fg": 612, + "rotates": false + }, + { + "id": "overlay_worn_gloves_wraps_fur", + "fg": 612, + "rotates": false + }, + { + "id": "overlay_worn_gloves_wraps_leather", + "fg": 612, + "rotates": false + }, + { + "id": "overlay_worn_gauntlets_chitin", + "fg": 612, + "rotates": false + }, + { + "id": "overlay_worn_gauntlets_larmor", + "fg": 612, + "rotates": false + }, + { + "id": "overlay_worn_winter_gloves_army", + "fg": 612, + "rotates": false + }, + { + "id": "overlay_worn_gloves_h20survivor", + "fg": 613, + "rotates": false + }, + { + "id": "overlay_worn_gloves_hsurvivor", + "fg": 613, + "rotates": false + }, + { + "id": "overlay_worn_gloves_lsurvivor", + "fg": 613, + "rotates": false + }, + { + "id": "overlay_worn_gloves_survivor", + "fg": 613, + "rotates": false + }, + { + "id": "overlay_worn_gloves_tactical", + "fg": 613, + "rotates": false + }, + { + "id": "overlay_worn_gloves_winter", + "fg": 613, + "rotates": false + }, + { + "id": "overlay_worn_gloves_wsurvivor", + "fg": 613, + "rotates": false + }, + { + "id": "overlay_worn_gloves_xlsurvivor", + "fg": 613, + "rotates": false + }, + { + "id": "overlay_worn_gloves_light", + "fg": 614, + "rotates": false + }, + { + "id": "overlay_worn_gloves_liner", + "fg": 614, + "rotates": false + }, + { + "id": "overlay_worn_gloves_plate", + "fg": 614, + "rotates": false + }, + { + "id": "overlay_worn_gloves_wraps", + "fg": 614, + "rotates": false + }, + { + "id": "overlay_worn_gloves_wraps_wool", + "fg": 614, + "rotates": false + }, + { + "id": "overlay_worn_beekeeping_gloves", + "fg": 614, + "rotates": false + }, + { + "id": "overlay_worn_gloves_golf", + "fg": 614, + "rotates": false + }, + { + "id": "overlay_worn_thermal_gloves", + "fg": 614, + "rotates": false + }, + { + "id": "overlay_worn_thermal_gloves_on", + "fg": 614, + "rotates": false + }, + { + "id": "overlay_worn_gloves_work", + "fg": 615, + "rotates": false + }, + { + "id": "overlay_worn_wetsuit_gloves", + "fg": 615, + "rotates": false + }, + { + "id": "overlay_worn_goggles_ski", + "fg": 616, + "rotates": false + }, + { + "id": "overlay_worn_survivor_goggles", + "fg": 616, + "rotates": false + }, + { + "id": "overlay_worn_glasses_bal", + "fg": 616, + "rotates": false + }, + { + "id": "overlay_worn_goggles_swim", + "fg": 616, + "rotates": false + }, + { + "id": "overlay_worn_goggles_welding", + "fg": 617, + "rotates": false + }, + { + "id": "overlay_worn_eclipse_glasses", + "fg": 617, + "rotates": false + }, + { + "id": "overlay_worn_greatcoat", + "fg": 618, + "rotates": false + }, + { + "id": "overlay_worn_hakama_gi", + "fg": 619, + "rotates": false + }, + { + "id": "overlay_worn_halter_top", + "fg": 620, + "rotates": false + }, + { + "id": "overlay_worn_hat_ball", + "fg": 621, + "rotates": false + }, + { + "id": "overlay_worn_hat_boonie", + "fg": 622, + "rotates": false + }, + { + "id": "overlay_worn_hat_chef", + "fg": 623, + "rotates": false + }, + { + "id": "overlay_worn_hat_fur", + "fg": 624, + "rotates": false + }, + { + "id": "overlay_worn_hat_hard", + "fg": 625, + "rotates": false + }, + { + "id": "overlay_worn_hat_hard_hooded", + "fg": 625, + "rotates": false + }, + { + "id": "overlay_worn_hat_hunting", + "fg": 626, + "rotates": false + }, + { + "id": "overlay_worn_hat_knit", + "fg": 627, + "rotates": false + }, + { + "id": "overlay_worn_hat_cotton", + "fg": 627, + "rotates": false + }, + { + "id": "overlay_worn_hat_newsboy", + "fg": 628, + "rotates": false + }, + { + "id": "overlay_worn_hat_noise_cancelling", + "fg": 629, + "rotates": false + }, + { + "id": "overlay_worn_hat_sombrero", + "fg": 630, + "rotates": false + }, + { + "id": "overlay_worn_headgear", + "fg": 631, + "rotates": false + }, + { + "id": "overlay_worn_heels", + "fg": 632, + "rotates": false + }, + { + "id": "overlay_worn_dress_shoes_air", + "fg": 632, + "rotates": false + }, + { + "id": "overlay_worn_helmet_army", + "fg": 633, + "rotates": false + }, + { + "id": "overlay_worn_helmet_ball", + "fg": 634, + "rotates": false + }, + { + "id": "overlay_worn_helmet_barbute", + "fg": 635, + "rotates": false + }, + { + "id": "overlay_worn_helmet_conical", + "fg": 635, + "rotates": false + }, + { + "id": "overlay_worn_helmet_corinthian", + "fg": 635, + "rotates": false + }, + { + "id": "overlay_worn_helmet_bike", + "fg": 636, + "rotates": false + }, + { + "id": "overlay_worn_helmet_bone", + "fg": 637, + "rotates": false + }, + { + "id": "overlay_worn_helmet_bone_megabear", + "fg": 638, + "rotates": false + }, + { + "id": "overlay_worn_helmet_chitin", + "fg": 639, + "rotates": false + }, + { + "id": "overlay_worn_helmet_football", + "fg": 640, + "rotates": false + }, + { + "id": "overlay_worn_helmet_hsurvivor", + "fg": 641, + "rotates": false + }, + { + "id": "overlay_worn_helmet_kabuto", + "fg": 642, + "rotates": false + }, + { + "id": "overlay_worn_helmet_larmor", + "fg": 643, + "rotates": false + }, + { + "id": "overlay_worn_helmet_lobster", + "fg": 644, + "rotates": false + }, + { + "id": "overlay_worn_helmet_motor", + "fg": 645, + "rotates": false + }, + { + "id": "overlay_worn_helmet_nomad", + "fg": 646, + "rotates": false + }, + { + "id": "helmet_nomad", + "fg": 646 + }, + { + "id": "overlay_worn_helmet_plate", + "fg": 647, + "rotates": false + }, + { + "id": "overlay_worn_helmet_riot", + "fg": 648, + "rotates": false + }, + { + "id": "overlay_worn_helmet_scavenger", + "fg": 649, + "rotates": false + }, + { + "id": "helmet_scavenger", + "fg": 649 + }, + { + "id": "overlay_worn_helmet_skid", + "fg": 650, + "rotates": false + }, + { + "id": "overlay_worn_tac_helmet", + "fg": 650, + "rotates": false + }, + { + "id": "overlay_worn_helmet_survivor", + "fg": 651, + "rotates": false + }, + { + "id": "overlay_worn_helmet_xlsurvivor", + "fg": 652, + "rotates": false + }, + { + "id": "overlay_worn_hmil_armor", + "fg": 653, + "rotates": false + }, + { + "id": "overlay_worn_holster", + "fg": 654, + "rotates": false + }, + { + "id": "overlay_worn_sholster", + "fg": 654, + "rotates": false + }, + { + "id": "overlay_worn_ammo_satchel", + "fg": 654, + "rotates": false + }, + { + "id": "overlay_worn_hoodie", + "fg": 655, + "rotates": false + }, + { + "id": "overlay_worn_hood_fsurvivor", + "fg": 656, + "rotates": false + }, + { + "id": "overlay_worn_hood_rain", + "fg": 657, + "rotates": false + }, + { + "id": "overlay_worn_helmet_liner", + "fg": 657, + "rotates": false + }, + { + "id": "overlay_worn_hood_h20survivor", + "fg": 657, + "rotates": false + }, + { + "id": "overlay_worn_nomex_hood", + "fg": 657, + "rotates": false + }, + { + "id": "overlay_worn_hood_survivor", + "fg": 658, + "rotates": false + }, + { + "id": "overlay_worn_hood_lsurvivor", + "fg": 658, + "rotates": false + }, + { + "id": "overlay_worn_hood_xlsurvivor", + "fg": 658, + "rotates": false + }, + { + "id": "overlay_worn_hood_wsurvivor", + "fg": 659, + "rotates": false + }, + { + "id": "overlay_worn_cowl_wool", + "fg": 659, + "rotates": false + }, + { + "id": "overlay_worn_hot_pants", + "fg": 660, + "rotates": false + }, + { + "id": "overlay_worn_hot_pants_fur", + "fg": 660, + "rotates": false + }, + { + "id": "overlay_worn_hot_pants_leather", + "fg": 661, + "rotates": false + }, + { + "id": "overlay_worn_house_coat", + "fg": 662, + "rotates": false + }, + { + "id": "overlay_worn_hsurvivor_suit", + "fg": 663, + "rotates": false + }, + { + "id": "overlay_worn_h20survivor_suit", + "fg": 663, + "rotates": false + }, + { + "id": "overlay_worn_stillsuit", + "fg": 663, + "rotates": false + }, + { + "id": "overlay_worn_jacket_army", + "fg": 664, + "rotates": false + }, + { + "id": "overlay_worn_jacket_chef", + "fg": 665, + "rotates": false + }, + { + "id": "jacket_chef", + "fg": 665 + }, + { + "id": "overlay_worn_jacket_evac", + "fg": 666, + "rotates": false + }, + { + "id": "overlay_worn_jacket_flannel", + "fg": 667, + "rotates": false + }, + { + "id": "overlay_worn_jacket_jean", + "fg": 668, + "rotates": false + }, + { + "id": "overlay_worn_jacket_leather_mod", + "fg": 669, + "rotates": false + }, + { + "id": "overlay_worn_jacket_leather", + "fg": 669, + "rotates": false + }, + { + "id": "overlay_worn_jacket_leather_red", + "fg": 670, + "rotates": false + }, + { + "id": "jacket_leather_red", + "fg": 670 + }, + { + "id": "overlay_worn_flotation_vest", + "fg": 670, + "rotates": false + }, + { + "id": "overlay_worn_jacket_light", + "fg": 671, + "rotates": false + }, + { + "id": "overlay_worn_jacket_windbreaker", + "fg": 672, + "rotates": false + }, + { + "id": "overlay_worn_wool_hoodie", + "fg": 672, + "rotates": false + }, + { + "id": "overlay_worn_jeans", + "fg": 673, + "rotates": false + }, + { + "id": "overlay_worn_jeans_red", + "fg": 674, + "rotates": false + }, + { + "id": "jeans_red", + "fg": 674 + }, + { + "id": "overlay_worn_jedi_cloak", + "fg": 675, + "rotates": false + }, + { + "id": "overlay_worn_jerrypack", + "fg": 676, + "rotates": false + }, + { + "id": "overlay_worn_jersey", + "fg": 677, + "rotates": false + }, + { + "id": "overlay_worn_judo_gi", + "fg": 678, + "rotates": false + }, + { + "id": "overlay_worn_karate_gi", + "fg": 678, + "rotates": false + }, + { + "id": "overlay_worn_kariginu", + "fg": 679, + "rotates": false + }, + { + "id": "overlay_worn_keikogi", + "fg": 680, + "rotates": false + }, + { + "id": "overlay_worn_kimono", + "fg": 681, + "rotates": false + }, + { + "id": "overlay_worn_kippah", + "fg": 682, + "rotates": false + }, + { + "id": "overlay_worn_kittel", + "fg": 683, + "rotates": false + }, + { + "id": "overlay_worn_knee_high_boots", + "fg": 684, + "rotates": false + }, + { + "id": "overlay_worn_knee_pads", + "fg": 685, + "rotates": false + }, + { + "id": "overlay_worn_kufi", + "fg": 686, + "rotates": false + }, + { + "id": "overlay_worn_leather_belt", + "fg": 687, + "rotates": false + }, + { + "id": "overlay_worn_obi_gi", + "fg": 687, + "rotates": false + }, + { + "id": "overlay_worn_legguard_hard", + "fg": 688, + "rotates": false + }, + { + "id": "overlay_worn_2byshin_guard", + "fg": 688, + "rotates": false + }, + { + "id": "overlay_worn_legguard_metal", + "fg": 689, + "rotates": false + }, + { + "id": "overlay_worn_legguard_lightplate", + "fg": 689, + "rotates": false + }, + { + "id": "overlay_worn_legguard_bronze", + "fg": 689, + "rotates": false + }, + { + "id": "overlay_worn_legguard_paper", + "fg": 690, + "rotates": false + }, + { + "id": "overlay_worn_leg_splint", + "fg": 691, + "rotates": false + }, + { + "id": "overlay_worn_leg_warmers", + "fg": 692, + "rotates": false + }, + { + "id": "overlay_worn_leg_warmers_xl", + "fg": 692, + "rotates": false + }, + { + "id": "overlay_worn_leg_warmers_xlf", + "fg": 692, + "rotates": false + }, + { + "id": "overlay_worn_leg_warmers_f", + "fg": 692, + "rotates": false + }, + { + "id": "overlay_worn_lmil_armor", + "fg": 693, + "rotates": false + }, + { + "id": "overlay_worn_loincloth_fur", + "fg": 694, + "rotates": false + }, + { + "id": "overlay_worn_loincloth", + "fg": 694, + "rotates": false + }, + { + "id": "overlay_worn_loincloth_leather", + "fg": 694, + "rotates": false + }, + { + "id": "overlay_worn_loincloth_wool", + "fg": 694, + "rotates": false + }, + { + "id": "overlay_worn_long_glove_white", + "fg": 695, + "rotates": false + }, + { + "id": "overlay_worn_gauntlets_bone", + "fg": 695, + "rotates": false + }, + { + "id": "overlay_worn_sockmitts", + "fg": 695, + "rotates": false + }, + { + "id": "overlay_worn_lowtops", + "fg": 696, + "rotates": false + }, + { + "id": "overlay_worn_lsurvivor_armor", + "fg": 697, + "rotates": false + }, + { + "id": "overlay_worn_bookplate", + "fg": 697, + "rotates": false + }, + { + "id": "overlay_worn_maid_dress", + "fg": 698, + "rotates": false + }, + { + "id": "overlay_worn_maid_hat", + "fg": 699, + "rotates": false + }, + { + "id": "maid_hat", + "fg": 4283, + "rotates": false + }, + { + "id": "overlay_worn_makeshift_knapsack", + "fg": 700, + "rotates": false + }, + { + "id": "overlay_worn_makeshift_sling", + "fg": 701, + "rotates": false + }, + { + "id": "overlay_worn_mask_bal", + "fg": 702, + "rotates": false + }, + { + "id": "overlay_worn_mask_dust", + "fg": 703, + "rotates": false + }, + { + "id": "overlay_worn_mask_filter", + "fg": 704, + "rotates": false + }, + { + "id": "overlay_worn_mask_fsurvivor", + "fg": 705, + "rotates": false + }, + { + "id": "overlay_worn_mask_fsurvivorxl", + "fg": 705, + "rotates": false + }, + { + "id": "overlay_worn_mask_gas", + "fg": 706, + "rotates": false + }, + { + "id": "overlay_worn_mask_gas_xl", + "fg": 706, + "rotates": false + }, + { + "id": "overlay_worn_mask_guy_fawkes", + "fg": 707, + "rotates": false + }, + { + "id": "overlay_worn_mask_hockey", + "fg": 708, + "rotates": false + }, + { + "id": "overlay_worn_mask_hsurvivor", + "fg": 709, + "rotates": false + }, + { + "id": "overlay_worn_mask_lsurvivor", + "fg": 710, + "rotates": false + }, + { + "id": "overlay_worn_mask_survivor", + "fg": 710, + "rotates": false + }, + { + "id": "overlay_worn_mask_survivorxl", + "fg": 710, + "rotates": false + }, + { + "id": "overlay_worn_mask_wsurvivor", + "fg": 712, + "rotates": false + }, + { + "id": "overlay_worn_mask_wsurvivorxl", + "fg": 712, + "rotates": false + }, + { + "id": "overlay_worn_mbag", + "fg": 713, + "rotates": false + }, + { + "id": "overlay_worn_megaarmor_armguards_1", + "fg": 714, + "rotates": false + }, + { + "id": "overlay_worn_megaarmor_boots_1", + "fg": 715, + "rotates": false + }, + { + "id": "overlay_worn_megaarmor_gloves_1", + "fg": 716, + "rotates": false + }, + { + "id": "overlay_worn_megaarmor_head_1", + "fg": 717, + "rotates": false + }, + { + "id": "overlay_worn_megaarmor_leggings_1", + "fg": 718, + "rotates": false + }, + { + "id": "overlay_worn_megaarmor_torso_1", + "fg": 719, + "rotates": false + }, + { + "id": "overlay_worn_megaarmor_torso_2", + "fg": 720, + "rotates": false + }, + { + "id": "overlay_worn_mil_armor", + "fg": 721, + "rotates": false + }, + { + "id": "overlay_worn_molle_pack", + "fg": 722, + "rotates": false + }, + { + "id": "overlay_worn_motorbike_armor", + "fg": 723, + "rotates": false + }, + { + "id": "motorbike_armor", + "fg": 723 + }, + { + "id": "overlay_worn_nanoskirt", + "fg": 724, + "rotates": false + }, + { + "id": "overlay_worn_microskirt", + "fg": 724, + "rotates": false + }, + { + "id": "overlay_worn_nomex_socks", + "fg": 725, + "rotates": false + }, + { + "id": "overlay_worn_footrags_leather", + "fg": 725, + "rotates": false + }, + { + "id": "overlay_worn_nomex_suit", + "fg": 726, + "rotates": false + }, + { + "id": "nomex_suit", + "fg": 726 + }, + { + "id": "overlay_worn_fsurvivor_suit", + "fg": 726, + "rotates": false + }, + { + "id": "fsurvivor_suit", + "fg": 726 + }, + { + "id": "overlay_worn_optical_cloak", + "fg": 727, + "rotates": false + }, + { + "id": "overlay_worn_optical_cloak_on", + "fg": 7276, + "rotates": false + }, + { + "id": "overlay_worn_thong", + "fg": 728, + "rotates": false + }, + { + "id": "overlay_worn_pants", + "fg": 729, + "rotates": false + }, + { + "id": "overlay_worn_pants_army", + "fg": 730, + "rotates": false + }, + { + "id": "overlay_worn_pants_cargo", + "fg": 731, + "rotates": false + }, + { + "id": "overlay_worn_pants_checkered", + "fg": 732, + "rotates": false + }, + { + "id": "overlay_worn_pants_fur", + "fg": 733, + "rotates": false + }, + { + "id": "overlay_worn_pants_ski", + "fg": 734, + "rotates": false + }, + { + "id": "overlay_worn_zubon_gi", + "fg": 734, + "rotates": false + }, + { + "id": "overlay_worn_pants_survivor", + "fg": 735, + "rotates": false + }, + { + "id": "pants_survivor", + "fg": 735 + }, + { + "id": "overlay_worn_lsurvivor_pants", + "fg": 735, + "rotates": false + }, + { + "id": "overlay_worn_peacoat", + "fg": 736, + "rotates": false + }, + { + "id": "overlay_worn_pickelhaube", + "fg": 737, + "rotates": false + }, + { + "id": "overlay_worn_plastic_shopping_bag", + "fg": 738, + "rotates": false + }, + { + "id": "overlay_worn_poncho", + "fg": 739, + "rotates": false + }, + { + "id": "overlay_worn_postman_hat", + "fg": 740, + "rotates": false + }, + { + "id": "overlay_worn_postman_shorts", + "fg": 741, + "rotates": false + }, + { + "id": "overlay_worn_trunks", + "fg": 741, + "rotates": false + }, + { + "id": "overlay_worn_shorts_denim", + "fg": 741, + "rotates": false + }, + { + "id": "overlay_worn_pot_helmet", + "fg": 742, + "rotates": false + }, + { + "id": "overlay_worn_power_armor_basic", + "fg": 743, + "rotates": false + }, + { + "id": "overlay_worn_depowered_armor", + "fg": 743, + "rotates": false + }, + { + "id": "overlay_worn_power_armor_heavy", + "fg": 744, + "rotates": false + }, + { + "id": "overlay_worn_power_armor_helmet_basic", + "fg": 745, + "rotates": false + }, + { + "id": "overlay_worn_power_armor_helmet_heavy", + "fg": 746, + "rotates": false + }, + { + "id": "overlay_worn_power_armor_helmet_light", + "fg": 747, + "rotates": false + }, + { + "id": "overlay_worn_power_armor_light", + "fg": 748, + "rotates": false + }, + { + "id": "overlay_worn_purse", + "fg": 749, + "rotates": false + }, + { + "id": "overlay_worn_quiver", + "fg": 750, + "rotates": false + }, + { + "id": "overlay_worn_quiver_birchbark", + "fg": 750, + "rotates": false + }, + { + "id": "overlay_worn_quiver_large", + "fg": 751, + "rotates": false + }, + { + "id": "overlay_worn_quiver_large_birchbark", + "fg": 751, + "rotates": false + }, + { + "id": "overlay_worn_cloak_leather", + "fg": 752, + "rotates": false + }, + { + "id": "overlay_worn_rollerskates", + "fg": 753, + "rotates": false + }, + { + "id": "overlay_worn_roller_blades", + "fg": 753, + "rotates": false + }, + { + "id": "overlay_worn_rucksack", + "fg": 754, + "rotates": false + }, + { + "id": "overlay_worn_runner_bag", + "fg": 755, + "rotates": false + }, + { + "id": "overlay_worn_slingpack", + "fg": 755, + "rotates": false + }, + { + "id": "overlay_worn_survivor_runner_pack", + "fg": 755, + "rotates": false + }, + { + "id": "overlay_worn_scabbard", + "fg": 756, + "rotates": false + }, + { + "id": "overlay_worn_baldric", + "fg": 756, + "rotates": false + }, + { + "id": "overlay_worn_XL_holster", + "fg": 756, + "rotates": false + }, + { + "id": "overlay_worn_shark_suit_faraday", + "fg": 757, + "rotates": false + }, + { + "id": "overlay_worn_shark_suit", + "fg": 757, + "rotates": false + }, + { + "id": "overlay_worn_sheath", + "fg": 758, + "rotates": false + }, + { + "id": "overlay_worn_shield_buckler", + "fg": 759, + "rotates": false + }, + { + "id": "overlay_worn_shield_heater", + "fg": 760, + "rotates": false + }, + { + "id": "overlay_worn_shield_hoplon", + "fg": 761, + "rotates": false + }, + { + "id": "overlay_worn_shield_kite", + "fg": 762, + "rotates": false + }, + { + "id": "overlay_worn_shield_round", + "fg": 763, + "rotates": false + }, + { + "id": "overlay_worn_shield_wooden", + "fg": 764, + "rotates": false + }, + { + "id": "overlay_worn_shield_wooden_large", + "fg": 765, + "rotates": false + }, + { + "id": "overlay_worn_shoes_birchbark", + "fg": 766, + "rotates": false + }, + { + "id": "overlay_worn_shoes_bowling", + "fg": 767, + "rotates": false + }, + { + "id": "overlay_worn_shorts", + "fg": 768, + "rotates": false + }, + { + "id": "overlay_worn_shorts_cargo", + "fg": 769, + "rotates": false + }, + { + "id": "overlay_worn_skinny_tie", + "fg": 770, + "rotates": false + }, + { + "id": "overlay_worn_skirt", + "fg": 771, + "rotates": false + }, + { + "id": "overlay_worn_kilt", + "fg": 771, + "rotates": false + }, + { + "id": "overlay_worn_skirt_leather", + "fg": 772, + "rotates": false + }, + { + "id": "overlay_worn_dress_skirt", + "fg": 772, + "rotates": false + }, + { + "id": "overlay_worn_sleeping_bag", + "fg": 773, + "rotates": false + }, + { + "id": "overlay_worn_sleeping_bag_fur", + "fg": 773, + "rotates": false + }, + { + "id": "overlay_worn_sleeveless_duster", + "fg": 774, + "rotates": false + }, + { + "id": "overlay_worn_sleeveless_duster_fur", + "fg": 774, + "rotates": false + }, + { + "id": "overlay_worn_sleeveless_duster_leather", + "fg": 774, + "rotates": false + }, + { + "id": "overlay_worn_sleeveless_duster_survivor", + "fg": 775, + "rotates": false + }, + { + "id": "overlay_worn_sleeveless_trenchcoat", + "fg": 776, + "rotates": false + }, + { + "id": "overlay_worn_sleeveless_trenchcoat_fur", + "fg": 776, + "rotates": false + }, + { + "id": "overlay_worn_sleeveless_trenchcoat_leather", + "fg": 776, + "rotates": false + }, + { + "id": "overlay_worn_sleeveless_trenchcoat_survivor", + "fg": 777, + "rotates": false + }, + { + "id": "overlay_worn_geta", + "fg": 778, + "rotates": false + }, + { + "id": ["overlay_worn_sneakers", "overlay_worn_golf_shoes"], + "fg": 779, + "rotates": false + }, + { + "id": "overlay_worn_cleats", + "fg": 779, + "rotates": false + }, + { + "id": "overlay_worn_socks", + "fg": 780, + "rotates": false + }, + { + "id": "overlay_worn_socks_bag", + "fg": 780, + "rotates": false + }, + { + "id": "overlay_worn_socks_bowling", + "fg": 780, + "rotates": false + }, + { + "id": "overlay_worn_footrags_fur", + "fg": 780, + "rotates": false + }, + { + "id": "overlay_worn_footrags_wool", + "fg": 780, + "rotates": false + }, + { + "id": "overlay_worn_socks_wool", + "fg": 780, + "rotates": false + }, + { + "id": "overlay_worn_tabi_dress", + "fg": 780, + "rotates": false + }, + { + "id": "overlay_worn_sports_bra", + "fg": 781, + "rotates": false + }, + { + "id": "overlay_worn_stockings", + "fg": 782, + "rotates": false + }, + { + "id": "overlay_worn_stockings_oath", + "fg": 782, + "rotates": false + }, + { + "id": "overlay_worn_maid_stockings", + "fg": 782, + "rotates": false + }, + { + "id": "overlay_worn_stockings_tent_arms", + "fg": 783, + "rotates": false + }, + { + "id": "overlay_worn_stockings_tent_legs", + "fg": 784, + "rotates": false + }, + { + "id": "overlay_worn_straw_basket", + "fg": 785, + "rotates": false + }, + { + "id": "overlay_worn_straw_hat", + "fg": 786, + "rotates": false + }, + { + "id": "overlay_worn_10gal_hat", + "fg": 786, + "rotates": false + }, + { + "id": "overlay_worn_straw_fedora", + "fg": 4227, + "rotates": false + }, + { + "id": "overlay_worn_striped_shirt", + "fg": 787, + "rotates": false + }, + { + "id": "overlay_worn_suit", + "fg": 788, + "rotates": false + }, + { + "id": "overlay_worn_suitcase_l", + "fg": 789, + "rotates": false + }, + { + "id": ["overlay_wielded_tourist_table", "overlay_wielded_metal_butcher_rack"], + "fg": 789, + "rotates": false + }, + { + "id": "overlay_worn_suitcase_m", + "fg": 789, + "rotates": false + }, + { + "id": "overlay_worn_sundress", + "fg": 790, + "rotates": false + }, + { + "id": "overlay_worn_sunglasses", + "fg": 791, + "rotates": false + }, + { + "id": "overlay_worn_fancy_sunglasses", + "fg": 791, + "rotates": false + }, + { + "id": "overlay_worn_fitover_sunglasses", + "fg": 791, + "rotates": false + }, + { + "id": "overlay_worn_survbowpack", + "fg": 792, + "rotates": false + }, + { + "id": "overlay_worn_survivor_belt", + "fg": 793, + "rotates": false + }, + { + "id": "overlay_worn_survivor_belt_notools", + "fg": 793, + "rotates": false + }, + { + "id": "overlay_worn_tool_belt", + "fg": 793, + "rotates": false + }, + { + "id": "overlay_worn_fireman_belt", + "fg": 793, + "rotates": false + }, + { + "id": "overlay_worn_legrig", + "fg": 793, + "rotates": false + }, + { + "id": "overlay_worn_survivor_duffel_bag", + "fg": 794, + "rotates": false + }, + { + "id": ["overlay_worn_duffelbag", "overlay_worn_javelin_bag"], + "fg": 794, + "rotates": false + }, + { + "id": "overlay_worn_gobag", + "fg": 794, + "rotates": false + }, + { + "id": "overlay_worn_survivor_rucksack", + "fg": 795, + "rotates": false + }, + { + "id": "overlay_worn_survivor_suit", + "fg": 796, + "rotates": false + }, + { + "id": "survivor_suit", + "fg": 796 + }, + { + "id": "overlay_worn_lsurvivor_suit", + "fg": 796, + "rotates": false + }, + { + "id": "overlay_worn_touring_suit", + "fg": 796, + "rotates": false + }, + { + "id": "overlay_worn_xlsurvivor_suit", + "fg": 796, + "rotates": false + }, + { + "id": "lsurvivor_suit", + "fg": 796 + }, + { + "id": "xlsurvivor_suit", + "fg": 796 + }, + { + "id": "overlay_worn_survivor_vest", + "fg": 797, + "rotates": false + }, + { + "id": "!overlay_worn_surv_armor_suit", + "fg": 798, + "rotates": false + }, + { + "id": "!overlay_worn_surv_suit", + "fg": 799, + "rotates": false + }, + { + "id": "overlay_worn_swag_bag", + "fg": 800, + "rotates": false + }, + { + "id": "overlay_wielded_bag_canvas", + "fg": 800, + "rotates": false + }, + { + "id": "overlay_wielded_bag_canvas_small", + "fg": 800, + "rotates": false + }, + { + "id": "overlay_worn_swat_armor", + "fg": 801, + "rotates": false + }, + { + "id": "swat_armor", + "fg": 801 + }, + { + "id": "overlay_worn_swat_shield", + "fg": 802, + "rotates": false + }, + { + "id": "overlay_worn_swat_shield_act", + "fg": 803, + "rotates": false + }, + { + "id": ["swat_shield", "swat_shield_act"], + "fg": 803, + "rotates": false + }, + { + "id": "overlay_worn_sweater", + "fg": 804, + "rotates": false + }, + { + "id": "overlay_worn_sweatshirt", + "fg": 805, + "rotates": false + }, + { + "id": "overlay_worn_swim_fins", + "fg": 806, + "rotates": false + }, + { + "id": "overlay_worn_tac_fullhelmet", + "fg": 807, + "rotates": false + }, + { + "id": "overlay_worn_tank_top", + "fg": 808, + "rotates": false + }, + { + "id": "overlay_worn_technician_pants_gray", + "fg": 809, + "rotates": false + }, + { + "id": "technician_pants_gray", + "fg": 809 + }, + { + "id": "overlay_worn_motorbike_pants", + "fg": 809, + "rotates": false + }, + { + "id": "overlay_worn_technician_shirt_blue", + "fg": 810, + "rotates": false + }, + { + "id": "overlay_worn_technician_shirt_gray", + "fg": 811, + "rotates": false + }, + { + "id": "overlay_worn_technician_shirt_ltblue", + "fg": 812, + "rotates": false + }, + { + "id": "overlay_worn_thawb", + "fg": 813, + "rotates": false + }, + { + "id": "overlay_worn_thigh_high_boots", + "fg": 814, + "rotates": false + }, + { + "id": "overlay_worn_tights", + "fg": 815, + "rotates": false + }, + { + "id": "overlay_worn_leggings", + "fg": 815, + "rotates": false + }, + { + "id": "overlay_worn_tinfoil_hat", + "fg": 816, + "rotates": false + }, + { + "id": "overlay_worn_trenchcoat", + "fg": 817, + "rotates": false + }, + { + "id": "overlay_worn_trenchcoat_fur", + "fg": 817, + "rotates": false + }, + { + "id": "overlay_worn_trenchcoat_survivor", + "fg": 818, + "rotates": false + }, + { + "id": "overlay_worn_tricorne", + "fg": 819, + "rotates": false + }, + { + "id": "overlay_worn_tunic_rag", + "fg": 820, + "rotates": false + }, + { + "id": "overlay_worn_apron_leather", + "fg": 820, + "rotates": false + }, + { + "id": "overlay_worn_sleeveless_tunic", + "fg": 820, + "rotates": false + }, + { + "id": "overlay_worn_gambeson", + "fg": 4242, + "rotates": false + }, + { + "id": "overlay_worn_tunic", + "fg": 820, + "rotates": false + }, + { + "id": "overlay_worn_turban", + "fg": 821, + "rotates": false + }, + { + "id": "turban", + "fg": 821 + }, + { + "id": "overlay_worn_undershirt", + "fg": 822, + "rotates": false + }, + { + "id": "overlay_worn_under_armor_shorts", + "fg": 823, + "rotates": false + }, + { + "id": "overlay_worn_veil_wedding", + "fg": 824, + "rotates": false + }, + { + "id": "veil_wedding", + "fg": 824 + }, + { + "id": "overlay_worn_vest", + "fg": 825, + "rotates": false + }, + { + "id": "overlay_worn_modularvest", + "fg": 825, + "rotates": false + }, + { + "id": "overlay_worn_modularvestceramic", + "fg": 825, + "rotates": false + }, + { + "id": "overlay_worn_modularvesthard", + "fg": 825, + "rotates": false + }, + { + "id": "overlay_worn_modularvestkevlar", + "fg": 825, + "rotates": false + }, + { + "id": "overlay_worn_modularveststeel", + "fg": 825, + "rotates": false + }, + { + "id": "overlay_worn_modularvestsuper", + "fg": 825, + "rotates": false + }, + { + "id": "overlay_worn_chestrig", + "fg": 825, + "rotates": false + }, + { + "id": "overlay_worn_vest_leather", + "fg": 826, + "rotates": false + }, + { + "id": "overlay_worn_vest_leather_mod", + "fg": 826, + "rotates": false + }, + { + "id": "overlay_worn_waistcoat", + "fg": 827, + "rotates": false + }, + { + "id": "overlay_worn_wetsuit", + "fg": 828, + "rotates": false + }, + { + "id": "overlay_worn_wetsuit_booties", + "fg": 829, + "rotates": false + }, + { + "id": "overlay_worn_boots_h20survivor", + "fg": 829, + "rotates": false + }, + { + "id": "overlay_worn_wetsuit_hood", + "fg": 830, + "rotates": false + }, + { + "id": "overlay_worn_wetsuit_spring", + "fg": 831, + "rotates": false + }, + { + "id": "overlay_worn_winter_jacket_army", + "fg": 832, + "rotates": false + }, + { + "id": "overlay_worn_winter_pants_army", + "fg": 833, + "rotates": false + }, + { + "id": "overlay_worn_wolfsuit", + "fg": 834, + "rotates": false + }, + { + "id": "overlay_worn_wsurvivor_suit", + "fg": 835, + "rotates": false + }, + { + "id": "wsurvivor_suit", + "fg": 835 + }, + { + "id": "bikini_bottom", + "fg": 836, + "rotates": false + }, + { + "id": "thong", + "fg": 836 + }, + { + "id": "pants", + "fg": 837, + "rotates": false + }, + { + "id": "hakama_gi", + "fg": 837 + }, + { + "id": "pants_army", + "fg": 838, + "rotates": false + }, + { + "id": "pants_cargo", + "fg": 839, + "rotates": false + }, + { + "id": "lsurvivor_pants", + "fg": 839 + }, + { + "id": "pants_checkered", + "fg": 840, + "bg": 957 + }, + { + "id": "pants_fur", + "fg": 841, + "bg": 957, + "rotates": false + }, + { + "id": "pants_leather", + "fg": 842, + "rotates": false + }, + { + "id": "pants_ski", + "fg": 843, + "bg": 957, + "rotates": false + }, + { + "id": "peacoat", + "fg": 844, + "rotates": false + }, + { + "id": "waistcoat", + "fg": 844 + }, + { + "id": "pickelhaube", + "fg": 845, + "bg": 957, + "rotates": false + }, + { + "id": "plastic_shopping_bag", + "fg": 846, + "bg": 957 + }, + { + "id": "polo_shirt", + "fg": 847, + "rotates": false + }, + { + "id": "poncho", + "fg": 848, + "rotates": false + }, + { + "id": "postman_hat", + "fg": 849, + "rotates": false + }, + { + "id": "postman_shirt", + "fg": 850, + "rotates": false + }, + { + "id": "postman_shorts", + "fg": 851, + "rotates": false + }, + { + "id": "pot_helmet", + "fg": 852, + "bg": 957, + "rotates": false + }, + { + "id": "power_armor_basic", + "fg": 853, + "bg": 957, + "rotates": false + }, + { + "id": "power_armor_frame", + "fg": 854, + "bg": 957, + "rotates": false + }, + { + "id": "power_armor_heavy", + "fg": 855, + "bg": 957, + "rotates": false + }, + { + "id": "power_armor_helmet_basic", + "fg": 856, + "bg": 957, + "rotates": false + }, + { + "id": "power_armor_helmet_heavy", + "fg": 857, + "bg": 957, + "rotates": false + }, + { + "id": "power_armor_helmet_light", + "fg": 858, + "bg": 957, + "rotates": false + }, + { + "id": "megaarmor_head_1", + "fg": 858, + "bg": 957, + "rotates": false + }, + { + "id": "power_armor_light", + "fg": 859, + "bg": 957, + "rotates": false + }, + { + "id": "purse", + "fg": 860, + "rotates": false + }, + { + "id": "quiver", + "fg": 861, + "bg": 957, + "rotates": false + }, + { + "id": "quiver_birchbark", + "fg": 861, + "bg": 957, + "rotates": false + }, + { + "id": "quiver_large", + "fg": 862, + "bg": 957, + "rotates": false + }, + { + "id": "quiver_large_birchbark", + "fg": 862, + "bg": 957, + "rotates": false + }, + { + "id": "rad_badge", + "fg": 863, + "bg": 957, + "rotates": false + }, + { + "id": "ring", + "fg": 864, + "bg": 957 + }, + { + "id": "robe", + "fg": 865, + "bg": 957 + }, + { + "id": "kimono", + "fg": 865 + }, + { + "id": "rollerskates", + "fg": 866, + "rotates": false + }, + { + "id": "roller_blades", + "fg": 867, + "rotates": false + }, + { + "id": "rucksack", + "fg": 868, + "rotates": false + }, + { + "id": "scabbard", + "fg": 869, + "bg": 957 + }, + { + "id": "baldric", + "fg": 869, + "bg": 957 + }, + { + "id": "bscabbard", + "fg": 869, + "bg": 957 + }, + { + "id": "XL_holster", + "fg": 869 + }, + { + "id": "shark_suit", + "fg": 870, + "bg": 957 + }, + { + "id": "shark_suit_faraday", + "fg": 870, + "bg": 957 + }, + { + "id": "sheath", + "fg": 871, + "rotates": false + }, + { + "id": "bootsheath", + "fg": 871 + }, + { + "id": "fireman_belt", + "fg": 871 + }, + { + "id": "sheet", + "fg": 872, + "rotates": false + }, + { + "id": "v_curtain_item", + "fg": 872 + }, + { + "id": "sheriffshirt", + "fg": 873, + "bg": 957, + "rotates": false + }, + { + "id": "shield_buckler", + "fg": 874, + "rotates": false + }, + { + "id": "shield_heater", + "fg": 875, + "rotates": false + }, + { + "id": "shield_hoplon", + "fg": 876, + "rotates": false + }, + { + "id": "shield_kite", + "fg": 877, + "rotates": false + }, + { + "id": "shield_round", + "fg": 878, + "rotates": false + }, + { + "id": "distaff_spindle", + "fg": 878, + "bg": 970 + }, + { + "id": "shield_scutum", + "fg": 879, + "rotates": false + }, + { + "id": "shield_wooden", + "fg": 880, + "rotates": false + }, + { + "id": "shield_wooden_large", + "fg": 881, + "bg": 957 + }, + { + "id": "shorts", + "fg": 882, + "rotates": false + }, + { + "id": "b_shorts", + "fg": 882, + "bg": 957, + "rotates": false + }, + { + "id": "shorts_cargo", + "fg": 883, + "rotates": false + }, + { + "id": "shorts_denim", + "fg": 884, + "rotates": false + }, + { + "id": "silver_bracelet", + "fg": 885, + "bg": 957 + }, + { + "id": "silver_ear", + "fg": 885 + }, + { + "id": "skinny_tie", + "fg": 886, + "bg": 957 + }, + { + "id": "skirt", + "fg": 887, + "rotates": false + }, + { + "id": "kilt", + "fg": 887 + }, + { + "id": "skirt_leather", + "fg": 888 + }, + { + "id": "sleeping_bag", + "fg": 889, + "bg": 957, + "rotates": false + }, + { + "id": "sleeping_bag_fur", + "fg": 890, + "bg": 957, + "rotates": false + }, + { + "id": "sleeveless_trenchcoat", + "fg": 891, + "bg": 957 + }, + { + "id": "sleeveless_duster", + "fg": 891, + "bg": 957 + }, + { + "id": "sleeveless_trenchcoat_fur", + "fg": 892, + "bg": 957 + }, + { + "id": "sleeveless_duster_fur", + "fg": 892, + "bg": 957 + }, + { + "id": "sleeveless_trenchcoat_survivor", + "fg": 893, + "bg": 957 + }, + { + "id": "sleeveless_duster_survivor", + "fg": 893, + "bg": 957 + }, + { + "id": "slingpack", + "fg": 894, + "bg": 957 + }, + { + "id": "makeshift_sling", + "fg": 894 + }, + { + "id": "survivor_rucksack", + "fg": 894 + }, + { + "id": "small_relic", + "fg": 895, + "bg": 957 + }, + { + "id": "pearl_collar", + "fg": 895 + }, + { + "id": "snuggie", + "fg": 896 + }, + { + "id": "overlay_worn_snuggie", + "fg": 896, + "rotates": false + }, + { + "id": "socks", + "fg": 897, + "rotates": false + }, + { + "id": "thermal_socks", + "fg": 897, + "bg": 957, + "rotates": false + }, + { + "id": "thermal_socks_on", + "fg": 897, + "bg": 957, + "rotates": false + }, + { + "id": "socks_bag", + "fg": 897 + }, + { + "id": "socks_bowling", + "fg": 898, + "rotates": false + }, + { + "id": "socks_wool", + "fg": 899, + "rotates": false + }, + { + "id": "sports_bra", + "fg": 900, + "bg": 957 + }, + { + "id": "stillsuit", + "fg": 901, + "bg": 957 + }, + { + "id": "stockings", + "fg": 902, + "rotates": false + }, + { + "id": "stockings_tent_arms", + "fg": 902 + }, + { + "id": "stockings_tent_legs", + "fg": 902 + }, + { + "id": "straw_hat", + "fg": 903, + "bg": 957 + }, + { + "id": "striped_pants", + "fg": 904 + }, + { + "id": "striped_shirt", + "fg": 905, + "bg": 957 + }, + { + "id": "suit", + "fg": 906, + "bg": 957, + "rotates": false + }, + { + "id": ["suitcase_l", "tourist_table", "metal_butcher_rack"], + "fg": 907, + "bg": 957 + }, + { + "id": "suitcase_m", + "fg": 907, + "bg": 957 + }, + { + "id": "sundress", + "fg": 908, + "bg": 957, + "rotates": false + }, + { + "id": "sunglasses", + "fg": 909, + "rotates": false + }, + { + "id": "fitover_sunglasses", + "fg": 909, + "bg": 957 + }, + { + "id": "survivor_duffel_bag", + "fg": 910, + "bg": 957 + }, + { + "id": "survivor_pack", + "fg": 911, + "bg": 957 + }, + { + "id": "dive_bag", + "fg": 911 + }, + { + "id": "survivor_vest", + "fg": 912, + "bg": 957 + }, + { + "id": "makeshift_kevlar", + "fg": 912 + }, + { + "id": "swag_bag", + "fg": 913, + "bg": 957 + }, + { + "id": "bag_canvas", + "fg": 913 + }, + { + "id": "sweater", + "fg": 914, + "bg": 957, + "rotates": false + }, + { + "id": "sweatshirt", + "fg": 915, + "bg": 957, + "rotates": false + }, + { + "id": "swim_fins", + "fg": 916, + "bg": 957 + }, + { + "id": "tabi_dress", + "fg": 917, + "bg": 957 + }, + { + "id": "tabi_gi", + "fg": 918, + "bg": 957 + }, + { + "id": "tac_fullhelmet", + "fg": 919, + "bg": 957, + "rotates": false + }, + { + "id": "tac_helmet", + "fg": 920, + "bg": 957, + "rotates": false + }, + { + "id": "tank_top", + "fg": 921, + "rotates": false + }, + { + "id": "tarp", + "fg": 922, + "bg": 957 + }, + { + "id": "technician_pants_blue", + "fg": 923 + }, + { + "id": "overlay_worn_technician_pants_blue", + "fg": 923, + "rotates": false + }, + { + "id": "technician_pants_ltblue", + "fg": 924 + }, + { + "id": "overlay_worn_technician_pants_ltblue", + "fg": 924, + "rotates": false + }, + { + "id": "thigh_high_boots", + "fg": 925, + "bg": 957 + }, + { + "id": "tieclip", + "fg": 926, + "bg": 957 + }, + { + "id": "collarpin", + "fg": 926 + }, + { + "id": "ear_spool", + "fg": 926 + }, + { + "id": "tights", + "fg": 927, + "bg": 957, + "rotates": false + }, + { + "id": "megaarmor_leggings_1", + "fg": 927, + "bg": 957, + "rotates": false + }, + { + "id": "motorbike_pants", + "fg": 927 + }, + { + "id": "leggings", + "fg": 927 + }, + { + "id": "tinfoil_hat", + "fg": 928, + "bg": 957 + }, + { + "id": "tool_belt", + "fg": 929, + "bg": 957, + "rotates": false + }, + { + "id": "tophat", + "fg": 930, + "rotates": false + }, + { + "id": "touring_suit", + "fg": 931, + "rotates": false + }, + { + "id": "bondage_suit", + "fg": 931 + }, + { + "id": "hsurvivor_suit", + "fg": 931 + }, + { + "id": "trenchcoat", + "fg": 932, + "rotates": false + }, + { + "id": "duster", + "fg": 932, + "bg": 957, + "rotates": false + }, + { + "id": "trenchcoat_fur", + "fg": 933, + "bg": 957, + "rotates": false + }, + { + "id": "duster_fur", + "fg": 933, + "bg": 957, + "rotates": false + }, + { + "id": "trenchcoat_leather", + "fg": 934, + "bg": 957, + "rotates": false + }, + { + "id": "duster_leather", + "fg": 934, + "bg": 957, + "rotates": false + }, + { + "id": "sleeveless_trenchcoat_leather", + "fg": 934, + "bg": 957, + "rotates": false + }, + { + "id": "sleeveless_duster_leather", + "fg": 934, + "bg": 957, + "rotates": false + }, + { + "id": "trenchcoat_survivor", + "fg": 935, + "bg": 957 + }, + { + "id": "duster_survivor", + "fg": 935, + "bg": 957 + }, + { + "id": "tricorne", + "fg": 936 + }, + { + "id": "trunks", + "fg": 937, + "rotates": false + }, + { + "id": "tshirt", + "fg": 938, + "rotates": false + }, + { + "id": "tshirt_text", + "fg": 938 + }, + { + "id": "linuxtshirt", + "fg": 938 + }, + { + "id": "tunic", + "fg": 939, + "bg": 957 + }, + { + "id": "tunic_rag", + "fg": 940, + "bg": 957 + }, + { + "id": "sleeveless_tunic", + "fg": 940, + "rotates": false + }, + { + "id": "tux", + "fg": 941, + "bg": 957, + "rotates": false + }, + { + "id": "undershirt", + "fg": 942, + "rotates": false + }, + { + "id": "under_armor", + "fg": 943, + "rotates": false + }, + { + "id": "union_suit", + "fg": 944, + "rotates": false + }, + { + "id": "thermal_suit", + "fg": 944, + "bg": 957, + "rotates": false + }, + { + "id": "thermal_suit_on", + "fg": 944, + "bg": 957, + "rotates": false + }, + { + "id": "vambrace_larmor", + "fg": 945, + "bg": 957 + }, + { + "id": "vest", + "fg": 946, + "bg": 957, + "rotates": false + }, + { + "id": "vest_leather", + "fg": 947, + "bg": 957, + "rotates": false + }, + { + "id": "vest_leather_mod", + "fg": 947, + "bg": 957, + "rotates": false + }, + { + "id": "wetsuit", + "fg": 948, + "bg": 957, + "rotates": false + }, + { + "id": "megaarmor_torso_2", + "fg": 948, + "bg": 957, + "rotates": false + }, + { + "id": "h20survivor_suit", + "fg": 948 + }, + { + "id": "wetsuit_booties", + "fg": 949, + "rotates": false + }, + { + "id": "wetsuit_gloves", + "fg": 950, + "bg": 957, + "rotates": false + }, + { + "id": "wetsuit_hood", + "fg": 951, + "bg": 957, + "rotates": false + }, + { + "id": "nomex_hood", + "fg": 951, + "bg": 957, + "rotates": false + }, + { + "id": "hood_h20survivor", + "fg": 951 + }, + { + "id": "hood_lsurvivor", + "fg": 951 + }, + { + "id": "hood_survivor", + "fg": 951 + }, + { + "id": "wetsuit_spring", + "fg": 952, + "bg": 957, + "rotates": false + }, + { + "id": "winter_jacket_army", + "fg": 953, + "rotates": false + }, + { + "id": "winter_pants_army", + "fg": 954, + "rotates": false + }, + { + "id": ["wristwatch", "vp_vehicle_clock"], + "fg": 955, + "rotates": false + }, + { + "id": "diving_watch", + "fg": 955 + }, + { + "id": "zubon_gi", + "fg": 956, + "bg": 957, + "rotates": false + }, + { + "id": "rolling_paper", + "fg": 958, + "bg": 957, + "rotates": false + }, + { + "id": ["38_casing", "3030_casing"], + "fg": 1612, + "bg": 957, + "rotates": false + }, + { + "id": "45lc_casing", + "fg": 1612, + "bg": 957, + "rotates": false + }, + { + "id": ["357sig_casing", "357_casing"], + "fg": 1612, + "bg": 957, + "rotates": false + }, + { + "id": "357_mag_casing", + "fg": 1612, + "bg": 957, + "rotates": false + }, + { + "id": "8mm_bootleg_jsp", + "fg": 3937, + "bg": 957, + "rotates": false + }, + { + "id": "fletching", + "fg": 3939, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_22_cb", + "fg": 3949, + "bg": 957 + }, + { + "id": "reloaded_22_ratshot", + "fg": 3950, + "bg": 957 + }, + { + "id": "small_charcoal", + "bg": 957 + }, + { + "id": "small_coal", + "bg": 957 + }, + { + "id": "fc_hairpin", + "fg": 3828, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_acidbomb", + "fg": 3936, + "bg": 957, + "rotates": false + }, + { + "id": "40mm_toxicgas", + "fg": 3936, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_40mm_flechette", + "fg": 3951, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_40mm_shot", + "fg": 3952, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_shot_he", + "fg": 3953, + "bg": 957, + "rotates": false + }, + { + "id": "reloaded_signal_flare", + "fg": 3954, + "bg": 957, + "rotates": false + }, + { + "id": "charge_shot", + "bg": 957, + "rotates": false + }, + { + "id": ["seed_barley", "seed_tobacco"], + "fg": 1329, + "bg": 957, + "rotates": false + }, + { + "id": "seed_sunflower", + "fg": 1329, + "bg": 957, + "rotates": false + }, + { + "id": "seed_chili_pepper", + "fg": 1329, + "bg": 957, + "rotates": false + }, + { + "id": "seed_blueberries", + "fg": 1330, + "bg": 957, + "rotates": false + }, + { + "id": "seed_cotton_boll", + "fg": 1331, + "bg": 957, + "rotates": false + }, + { + "id": "seed_pumpkin", + "fg": 1331, + "bg": 957, + "rotates": false + }, + { + "id": "fried_seeds", + "fg": 1331, + "bg": 957, + "rotates": false + }, + { + "id": "seed_hops", + "fg": 1332, + "bg": 957, + "rotates": false + }, + { + "id": "seed_strawberries", + "fg": 1333, + "bg": 957, + "rotates": false + }, + { + "id": "seed_sugar_beet", + "fg": 1334, + "bg": 957, + "rotates": false + }, + { + "id": "seed_tomato", + "fg": 1335, + "bg": 957, + "rotates": false + }, + { + "id": "seed_wheat", + "fg": 1337, + "bg": 957, + "rotates": false + }, + { + "id": "1st_aid", + "fg": 1067, + "bg": 957, + "rotates": false + }, + { + "id": "medikit", + "fg": 1067, + "bg": 957, + "rotates": false + }, + { + "id": "acidbomb", + "fg": 3433, + "bg": 957, + "rotates": false + }, + { + "id": "acidbomb_act", + "fg": 3434, + "bg": 957, + "rotates": false + }, + { + "id": "adderall", + "fg": 1070, + "bg": 957, + "rotates": false + }, + { + "id": "adv_UPS_on", + "bg": 957, + "rotates": false + }, + { + "id": "alternator_car", + "fg": 1626, + "bg": 957, + "rotates": false + }, + { + "id": "vp_alternator_car", + "fg": 1626, + "bg": 957, + "rotates": true + }, + { + "id": "alternator_motorbike", + "fg": 1627, + "bg": 957, + "rotates": false + }, + { + "id": "vp_alternator_motorbike", + "fg": 1627, + "bg": 957, + "rotates": false + }, + { + "id": "alternator_truck", + "fg": 1628, + "bg": 957, + "rotates": false + }, + { + "id": "vp_alternator_truck", + "fg": 1628, + "bg": 957, + "rotates": false + }, + { + "id": ["generator_7500w", "vp_generator_7500w", "vp_generator_electric", "vp_generator_electric_enhanced", "vp_generator_electric_large", "vp_generator_electric_small"], + "fg": 1628, + "bg": 957, + "rotates": false + }, + { + "id": "ant_egg", + "fg": 1076, + "bg": 957, + "rotates": false + }, + { + "id": "antenna", + "fg": 1631, + "bg": 957, + "rotates": false + }, + { + "id": ["antibiotics", "weak_antibiotic"], + "fg": 1073, + "bg": 957, + "rotates": false + }, + { + "id": "anvil", + "fg": 3438, + "bg": 957, + "rotates": false + }, + { + "id": "apple", + "fg": 1077, + "bg": 957, + "rotates": false + }, + { + "id": "arm", + "fg": 1081, + "bg": 957, + "rotates": false + }, + { + "id": "aspirin", + "fg": 1082, + "bg": 957, + "rotates": false + }, + { + "id": "prussian_blue", + "fg": 1082, + "bg": 957, + "rotates": false + }, + { + "id": "ax", + "fg": 3440, + "bg": 957, + "rotates": false + }, + { + "id": ["barrel_big", "lead_barrel_big", "lead_barrel_heavy_duty"], + "fg": 2233, + "bg": 957, + "rotates": false + }, + { + "id": "barrel_ported", + "fg": 2234, + "bg": 957, + "rotates": false + }, + { + "id": "barrel_rifled", + "fg": 2235, + "bg": 957, + "rotates": false + }, + { + "id": ["barrel_small", "lead_barrel_small"], + "fg": 2236, + "bg": 957, + "rotates": false + }, + { + "id": "baton", + "fg": 1648, + "bg": 957, + "rotates": false + }, + { + "id": "baton-extended", + "fg": 1647, + "bg": 957, + "rotates": false + }, + { + "id": "battery_compartment", + "fg": 3820, + "bg": 957, + "rotates": false + }, + { + "id": "battletorch", + "fg": 3444, + "bg": 957, + "rotates": false + }, + { + "id": "battletorch_done", + "fg": 1650, + "bg": 957, + "rotates": false + }, + { + "id": "battletorch_lit", + "fg": 3445, + "bg": 957, + "rotates": false + }, + { + "id": "bayonet", + "fg": 3776, + "bg": 957, + "rotates": false + }, + { + "id": "inter_bayonet", + "fg": 3776, + "bg": 957, + "rotates": false + }, + { + "id": "bio_dis_acid", + "fg": 1016, + "bg": 957, + "rotates": false + }, + { + "id": ["bio_dis_shock", "bio_syringe", "bio_weight"], + "fg": 1016, + "bg": 957, + "rotates": false + }, + { + "id": "bio_drain", + "fg": 1016, + "bg": 957, + "rotates": false + }, + { + "id": "bio_chest_gun", + "fg": 1016, + "bg": 957, + "rotates": false + }, + { + "id": "bio_eye_enhancer", + "fg": 1017, + "bg": 957 + }, + { + "id": "bio_fusion_ammo", + "fg": 3821, + "bg": 957, + "rotates": false + }, + { + "id": "bio_lightning_ammo", + "bg": 957, + "rotates": false + }, + { + "id": "bio_noise", + "fg": 1016, + "bg": 957, + "rotates": false + }, + { + "id": "bio_null", + "fg": 1016, + "bg": 957, + "rotates": false + }, + { + "id": "bio_power_weakness", + "fg": 1016, + "bg": 957, + "rotates": false + }, + { + "id": "bio_stiff", + "fg": 1016, + "bg": 957, + "rotates": false + }, + { + "id": ["bipod", "lead_bipod"], + "fg": 2237, + "bg": 957, + "rotates": false + }, + { + "id": "black_box", + "fg": 3449, + "bg": 957, + "rotates": false + }, + { + "id": "black_box_transcript", + "fg": 1021, + "bg": 957, + "rotates": false + }, + { + "id": "blade", + "fg": 1655, + "bg": 957, + "rotates": false + }, + { + "id": "blade_trap", + "fg": 3450, + "bg": 957, + "rotates": false + }, + { + "id": "blowback", + "fg": 2238, + "bg": 957, + "rotates": false + }, + { + "id": "blowgun", + "bg": 957, + "rotates": false + }, + { + "id": "board_trap", + "fg": 3454, + "bg": 957, + "rotates": false + }, + { + "id": "boltcutters", + "fg": 3455, + "bg": 957, + "rotates": false + }, + { + "id": "brass_catcher", + "fg": 2239, + "bg": 957, + "rotates": false + }, + { + "id": "broadfire_off", + "fg": 3458, + "bg": 957, + "rotates": false + }, + { + "id": "broadfire_on", + "fg": 3459, + "bg": 957, + "rotates": false + }, + { + "id": "broadsword", + "fg": 3460, + "bg": 957, + "rotates": false + }, + { + "id": "broadsword_fake", + "fg": 3460, + "bg": 957, + "rotates": false + }, + { + "id": "broadsword_inferior", + "fg": 3460, + "bg": 957, + "rotates": false + }, + { + "id": "broken_manhack", + "fg": 1686, + "bg": 957 + }, + { + "id": "burnt_out_bionic", + "fg": 1695, + "bg": 957, + "rotates": false + }, + { + "id": "caffeine", + "fg": 1110, + "bg": 957, + "rotates": false + }, + { + "id": "can_beans", + "fg": 1115, + "bg": 957, + "rotates": false + }, + { + "id": "can_catfood", + "fg": 1286, + "bg": 957, + "rotates": false + }, + { + "id": "can_cheese", + "fg": 1116, + "bg": 957, + "rotates": false + }, + { + "id": "can_chicken", + "fg": 1117, + "bg": 957, + "rotates": false + }, + { + "id": "can_chowder", + "fg": 1118, + "bg": 957, + "rotates": false + }, + { + "id": "can_clams", + "fg": 1119, + "bg": 957, + "rotates": false + }, + { + "id": "can_corn", + "fg": 1121, + "bg": 957, + "rotates": false + }, + { + "id": "can_herring", + "fg": 1122, + "bg": 957, + "rotates": false + }, + { + "id": "can_pineapple", + "fg": 1123, + "bg": 957, + "rotates": false + }, + { + "id": "can_salmon", + "fg": 1124, + "bg": 957, + "rotates": false + }, + { + "id": "can_sardine", + "fg": 1125, + "bg": 957, + "rotates": false + }, + { + "id": "can_spam", + "fg": 1126, + "bg": 957, + "rotates": false + }, + { + "id": "can_tuna", + "fg": 1128, + "bg": 957, + "rotates": false + }, + { + "id": "candlestick", + "fg": 1696, + "bg": 957, + "rotates": false + }, + { + "id": "cane", + "fg": 1697, + "bg": 957, + "rotates": false + }, + { + "id": "canister_empty", + "fg": 1698, + "bg": 957, + "rotates": false + }, + { + "id": "ceramic_armor", + "fg": 1701, + "bg": 957, + "rotates": false + }, + { + "id": "ceramic_plate", + "fg": 1702, + "bg": 957, + "rotates": false + }, + { + "id": "cestus", + "fg": 1704, + "bg": 957, + "rotates": false + }, + { + "id": "chain", + "fg": 1705, + "bg": 957, + "rotates": false + }, + { + "id": ["char_kiln", "kiln", "kilnrig", "vp_veh_kiln"], + "fg": 1706, + "bg": 957, + "rotates": false + }, + { + "id": "kiln_full", + "fg": 1706, + "bg": 957, + "rotates": false + }, + { + "id": "kiln_done", + "fg": 1706, + "bg": 957, + "rotates": false + }, + { + "id": "chaw", + "fg": 1133, + "bg": 957, + "rotates": false + }, + { + "id": "cheese", + "fg": 1134, + "bg": 957, + "rotates": false + }, + { + "id": "chitin_piece", + "fg": 1708, + "bg": 957, + "rotates": false + }, + { + "id": "choco_coffee_beans", + "fg": 1142, + "bg": 957, + "rotates": false + }, + { + "id": "cigar", + "fg": 1145, + "bg": 957, + "rotates": false + }, + { + "id": "circsaw_blade", + "fg": 1711, + "bg": 957, + "rotates": false + }, + { + "id": "ripdisk", + "fg": 1711, + "bg": 957, + "rotates": false + }, + { + "id": "circuit", + "fg": 1712, + "bg": 957, + "rotates": false + }, + { + "id": "clip", + "fg": 2245, + "bg": 957, + "rotates": false + }, + { + "id": "clip2", + "fg": 3938, + "bg": 957, + "rotates": false + }, + { + "id": "clockworks", + "fg": 1715, + "bg": 957, + "rotates": false + }, + { + "id": "coconut", + "fg": 1146, + "bg": 957, + "rotates": false + }, + { + "id": "coilgun", + "fg": 1995, + "bg": 957, + "rotates": false + }, + { + "id": "contacts", + "fg": 1152, + "bg": 957, + "rotates": false + }, + { + "id": "cookies", + "fg": 1155, + "bg": 957, + "rotates": false + }, + { + "id": "cornmeal", + "fg": 1161, + "bg": 957, + "rotates": false + }, + { + "id": "crack", + "fg": 1162, + "bg": 957, + "rotates": false + }, + { + "id": "crackers", + "fg": 1163, + "bg": 957, + "rotates": false + }, + { + "id": "craftrig", + "fg": 1717, + "bg": 957, + "rotates": false + }, + { + "id": "cudgel", + "fg": 1718, + "bg": 957, + "rotates": false + }, + { + "id": "deluxe_eggs", + "fg": 1174, + "bg": 957, + "rotates": false + }, + { + "id": "digging_stick", + "fg": 1724, + "bg": 957, + "rotates": false + }, + { + "id": "DRUM", + "bg": 957, + "rotates": false + }, + { + "id": "dry_fruit", + "fg": 1177, + "bg": 957, + "rotates": false + }, + { + "id": "dry_meat", + "fg": 1178, + "bg": 957, + "rotates": false + }, + { + "id": "dry_veggy", + "fg": 1180, + "bg": 957, + "rotates": false + }, + { + "id": "e_scrap", + "fg": 1729, + "bg": 957, + "rotates": false + }, + { + "id": "element", + "fg": 1726, + "bg": 957, + "rotates": false + }, + { + "id": "fetus", + "fg": 1188, + "bg": 957, + "rotates": false + }, + { + "id": "fighter_sting", + "fg": 1734, + "bg": 957, + "rotates": false + }, + { + "id": "firecracker_pack", + "fg": 3516, + "bg": 957, + "rotates": false + }, + { + "id": "firecracker_pack_act", + "fg": 3517, + "bg": 957, + "rotates": false + }, + { + "id": "firemachete_off", + "fg": 3520, + "bg": 957, + "rotates": false + }, + { + "id": "firemachete_on", + "fg": 3521, + "bg": 957, + "rotates": false + }, + { + "id": "flamethrower", + "fg": 2010, + "bg": 957, + "rotates": false + }, + { + "id": "flamethrower_crude", + "fg": 2011, + "bg": 957, + "rotates": false + }, + { + "id": "flamethrower_simple", + "fg": 2012, + "bg": 957, + "rotates": false + }, + { + "id": "flashbang", + "fg": 3526, + "bg": 957, + "rotates": false + }, + { + "id": "flashbang_act", + "fg": 3527, + "bg": 957, + "rotates": false + }, + { + "id": "flask_hip", + "fg": 1409, + "bg": 957, + "rotates": false + }, + { + "id": ["flour", "rice_flour"], + "fg": 1193, + "bg": 957, + "rotates": false + }, + { + "id": "foon", + "fg": 1740, + "bg": 957, + "rotates": false + }, + { + "id": "foot_crank", + "fg": 1742, + "bg": 957, + "rotates": false + }, + { + "id": "forge", + "fg": 3534, + "bg": 957, + "rotates": false + }, + { + "id": "fruit_leather", + "fg": 1196, + "bg": 957, + "rotates": false + }, + { + "id": ["fruit_pancakes", "gffruit_pancakes", "gflffruit_pancakes", "lffruit_pancakes"], + "fg": 1197, + "bg": 957, + "rotates": false + }, + { + "id": "ftk93", + "fg": 2018, + "bg": 957, + "rotates": false + }, + { + "id": "arccan", + "fg": 2018, + "bg": 957, + "rotates": false + }, + { + "id": "fungicide", + "fg": 1198, + "bg": 957, + "rotates": false + }, + { + "id": "fur_rollmat", + "fg": 3536, + "bg": 957, + "rotates": false + }, + { + "id": "g_shovel", + "fg": 3555, + "bg": 957, + "rotates": false + }, + { + "id": "e_tool_chinese", + "fg": 3614, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_e_tool_chinese", + "fg": 3682, + "rotates": false + }, + { + "id": "gasbomb", + "fg": 1747, + "bg": 957, + "rotates": false + }, + { + "id": "gasbomb_act", + "fg": 1748, + "bg": 957, + "rotates": false + }, + { + "id": "gasoline_lantern", + "fg": 3542, + "bg": 957, + "rotates": false + }, + { + "id": "gasoline_lantern_on", + "fg": 3543, + "bg": 957, + "rotates": false + }, + { + "id": "geiger_off", + "fg": 3544, + "bg": 957, + "rotates": false + }, + { + "id": "geiger_on", + "fg": 3545, + "bg": 957, + "rotates": false + }, + { + "id": "glass_plate", + "fg": 1750, + "bg": 957, + "rotates": false + }, + { + "id": "glass_sheet", + "fg": 1752, + "bg": 957, + "rotates": false + }, + { + "id": "granade", + "fg": 3549, + "bg": 957, + "rotates": false + }, + { + "id": "granade_act", + "fg": 3550, + "bg": 957, + "rotates": false + }, + { + "id": ["grip", "lead_grip"], + "fg": 2241, + "bg": 957, + "rotates": false + }, + { + "id": "GUITAR", + "bg": 957, + "rotates": false + }, + { + "id": "halligan", + "fg": 3557, + "bg": 957, + "rotates": false + }, + { + "id": "hammer_sledge", + "fg": 1757, + "bg": 957, + "rotates": false + }, + { + "id": "hardtack", + "fg": 1207, + "bg": 957, + "rotates": false + }, + { + "id": "hatchet", + "fg": 1762, + "bg": 957, + "rotates": false + }, + { + "id": "helsing", + "fg": 2027, + "bg": 957, + "rotates": false + }, + { + "id": "heroin", + "fg": 1208, + "bg": 957, + "rotates": false + }, + { + "id": "hk_g80", + "fg": 2030, + "bg": 957, + "rotates": false + }, + { + "id": "hockey_stick", + "fg": 1766, + "bg": 957, + "rotates": false + }, + { + "id": "hoe", + "fg": 3570, + "bg": 957, + "rotates": false + }, + { + "id": ["holo_sight", "lead_holo_sight"], + "fg": 2242, + "bg": 957, + "rotates": false + }, + { + "id": "homewrecker", + "fg": 1767, + "bg": 957, + "rotates": false + }, + { + "id": "honeycomb", + "fg": 1212, + "bg": 957, + "rotates": false + }, + { + "id": "hose", + "fg": 3572, + "bg": 957, + "rotates": false + }, + { + "id": "hotplate", + "fg": 3573, + "bg": 957, + "rotates": false + }, + { + "id": "human_cooked", + "fg": 1221, + "bg": 957, + "rotates": false + }, + { + "id": "human_flesh", + "fg": 1222, + "bg": 957, + "rotates": false + }, + { + "id": "human_smoked", + "fg": 1223, + "bg": 957, + "rotates": false + }, + { + "id": "i4_combustion", + "fg": 1437, + "bg": 957, + "rotates": false + }, + { + "id": "vp_foot_pedals", + "fg": 1742, + "bg": 957, + "rotates": true + }, + { + "id": "vp_engine_vtwin", + "fg": 1438, + "bg": 957, + "rotates": true + }, + { + "id": "vp_engine_inline4", + "fg": 1437, + "bg": 957, + "rotates": true + }, + { + "id": "i_staff", + "fg": 1770, + "bg": 957, + "rotates": false + }, + { + "id": "improve_sights", + "fg": 2243, + "bg": 957, + "rotates": false + }, + { + "id": "inhaler", + "fg": 3577, + "bg": 957, + "rotates": false + }, + { + "id": "iodine", + "fg": 1225, + "bg": 957, + "rotates": false + }, + { + "id": "irradiated_mango", + "fg": 1228, + "bg": 957, + "rotates": false + }, + { + "id": "irradiated_pomegranate", + "fg": 1237, + "bg": 957, + "rotates": false + }, + { + "id": "irradiated_rhubarb", + "fg": 1238, + "bg": 957, + "rotates": false + }, + { + "id": "jacqueshammer", + "fg": 1658, + "bg": 957, + "rotates": false + }, + { + "id": "javelin", + "fg": 1772, + "bg": 957, + "rotates": false + }, + { + "id": ["johnnycake", "gfjohnnycake"], + "fg": 1243, + "bg": 957, + "rotates": false + }, + { + "id": "kevlar_plate", + "fg": 3584, + "bg": 957, + "rotates": false + }, + { + "id": "knife_butcher", + "fg": 3586, + "bg": 957, + "rotates": false + }, + { + "id": "knife_combat", + "fg": 3587, + "bg": 957, + "rotates": false + }, + { + "id": "knife_trench", + "fg": 3593, + "bg": 957, + "rotates": false + }, + { + "id": "knuckle_brass", + "fg": 1780, + "bg": 957, + "rotates": false + }, + { + "id": "knuckle_katar", + "fg": 1781, + "bg": 957, + "rotates": false + }, + { + "id": "knuckle_nail", + "fg": 1782, + "bg": 957, + "rotates": false + }, + { + "id": "knuckle_steel", + "fg": 1783, + "bg": 957, + "rotates": false + }, + { + "id": "large_repairkit", + "fg": 3599, + "bg": 957, + "rotates": false + }, + { + "id": ["laser_rifle", "arc_laser_rifle", "laser_sniper"], + "fg": 2039, + "bg": 957, + "rotates": false + }, + { + "id": "bolt_rifle_elec", + "fg": 2039, + "bg": 957, + "rotates": false + }, + { + "id": ["laser_sight", "lead_laser_sight"], + "fg": 2244, + "bg": 957, + "rotates": false + }, + { + "id": "launcher_simple", + "fg": 2040, + "bg": 957, + "rotates": false + }, + { + "id": "LAW_Packed", + "fg": 3601, + "bg": 957, + "rotates": false + }, + { + "id": "lawnmower", + "fg": 1787, + "bg": 957, + "rotates": false + }, + { + "id": "leg", + "fg": 1248, + "bg": 957, + "rotates": false + }, + { + "id": "lens", + "fg": 1789, + "bg": 957, + "rotates": false + }, + { + "id": "cabbage", + "fg": 1109, + "bg": 957, + "rotates": false + }, + { + "id": "light_emergency_blue", + "fg": 1790, + "bg": 957, + "rotates": false + }, + { + "id": "light_emergency_red", + "fg": 1791, + "bg": 957, + "rotates": false + }, + { + "id": "lightstrip_dead", + "fg": 3604, + "bg": 957 + }, + { + "id": "lsd", + "fg": 1249, + "bg": 957, + "rotates": false + }, + { + "id": "lutefisk", + "fg": 1251, + "bg": 957, + "rotates": false + }, + { + "id": "m202_flash", + "fg": 2054, + "bg": 957, + "rotates": false + }, + { + "id": "m320", + "fg": 2058, + "bg": 957, + "rotates": false + }, + { + "id": "m79", + "fg": 2061, + "bg": 957, + "rotates": false + }, + { + "id": ["mace", "mace_fake", "mace_inferior"], + "fg": 1795, + "bg": 957, + "rotates": false + }, + { + "id": "machete", + "fg": 3607, + "bg": 957, + "rotates": false + }, + { + "id": "makeshift_crowbar", + "fg": 3610, + "bg": 957, + "rotates": false + }, + { + "id": "makeshift_funnel", + "fg": 3611, + "bg": 957, + "rotates": false + }, + { + "id": "makeshift_halberd", + "fg": 1796, + "bg": 957, + "rotates": false + }, + { + "id": "halberd", + "fg": 1796, + "bg": 957, + "rotates": false + }, + { + "id": "halberd_fake", + "fg": 1796, + "bg": 957, + "rotates": false + }, + { + "id": "knife", + "fg": 3942, + "bg": 957, + "rotates": false + }, + { + "id": "makeshift_machete", + "fg": 3613, + "bg": 957, + "rotates": false + }, + { + "id": "maltballs", + "fg": 1252, + "bg": 957, + "rotates": false + }, + { + "id": "mango", + "fg": 1228, + "bg": 957, + "rotates": false + }, + { + "id": "mannwurst", + "fg": 1253, + "bg": 957, + "rotates": false + }, + { + "id": "marloss_berry", + "fg": 1254, + "bg": 957, + "rotates": false + }, + { + "id": "matchbomb", + "fg": 3615, + "bg": 957, + "rotates": false + }, + { + "id": "matchbomb_act", + "fg": 3616, + "bg": 957, + "rotates": false + }, + { + "id": "meal_bone", + "fg": 1256, + "bg": 957, + "rotates": false + }, + { + "id": "meal_chitin_piece", + "fg": 1257, + "bg": 957, + "rotates": false + }, + { + "id": "meat", + "fg": 1258, + "bg": 957, + "rotates": false + }, + { + "id": "meat_cooked", + "fg": 1260, + "bg": 957, + "rotates": false + }, + { + "id": "meat_smoked", + "fg": 1261, + "bg": 957, + "rotates": false + }, + { + "id": "meat_tainted", + "fg": 1262, + "bg": 957, + "rotates": false + }, + { + "id": "medical_gauze", + "fg": 1263, + "bg": 957, + "rotates": false + }, + { + "id": ["metal_tank", "vp_harpoonrack", "vp_sballistarack", "vp_stonerack", "vp_tank", "vp_wballistarack"], + "fg": 1420, + "bg": 957, + "rotates": false + }, + { + "id": "mgl", + "fg": 2065, + "bg": 957, + "rotates": false + }, + { + "id": "militarymap", + "fg": 1803, + "bg": 957, + "rotates": false + }, + { + "id": "miner_hat", + "fg": 3845, + "bg": 957, + "rotates": false + }, + { + "id": "miner_hat_on", + "fg": 3846, + "bg": 957, + "rotates": false + }, + { + "id": ["minifridge", "minifreezer"], + "fg": 1805, + "bg": 957, + "rotates": false + }, + { + "id": "mininuke", + "fg": 3621, + "bg": 957, + "rotates": false + }, + { + "id": "mininuke_act", + "fg": 3622, + "bg": 957, + "rotates": false + }, + { + "id": "mininuke_launcher", + "fg": 2066, + "bg": 957, + "rotates": false + }, + { + "id": ["minireactor", "vp_minireactor"], + "fg": 3623, + "bg": 957, + "rotates": false + }, + { + "id": "t_nuclear_reactor", + "fg": 3623, + "bg": 3121, + "rotates": false + }, + { + "id": "mintpatties", + "fg": 1265, + "bg": 957, + "rotates": false + }, + { + "id": "molotov", + "fg": 3625, + "bg": 957, + "rotates": false + }, + { + "id": "molotov_lit", + "fg": 3626, + "bg": 957, + "rotates": false + }, + { + "id": ["morningstar", "morningstar_fake", "morningstar_inferior"], + "fg": 1811, + "bg": 957, + "rotates": false + }, + { + "id": "motor", + "fg": 1812, + "bg": 957, + "rotates": false + }, + { + "id": "motor_large", + "fg": 1812, + "bg": 957, + "rotates": false + }, + { + "id": ["muffler", "vp_muffler"], + "fg": 1819, + "bg": 957, + "rotates": false + }, + { + "id": "nailboard", + "fg": 1822, + "bg": 957, + "rotates": false + }, + { + "id": "nailgun", + "fg": 2071, + "bg": 957, + "rotates": false + }, + { + "id": "nailrifle", + "fg": 2072, + "bg": 957, + "rotates": false + }, + { + "id": "neccowafers", + "fg": 1278, + "bg": 957, + "rotates": false + }, + { + "id": "needle_bone", + "fg": 3632, + "bg": 957, + "rotates": false + }, + { + "id": "needle_wood", + "fg": 3633, + "bg": 957, + "rotates": false + }, + { + "id": "needlegun", + "fg": 2073, + "bg": 957, + "rotates": false + }, + { + "id": "nodachi", + "fg": 3634, + "bg": 957, + "rotates": false + }, + { + "id": "nodachi_fake", + "fg": 3634, + "bg": 957, + "rotates": false + }, + { + "id": "nodachi_inferior", + "fg": 3634, + "bg": 957, + "rotates": false + }, + { + "id": "noodles_fast", + "fg": 1280, + "bg": 957, + "rotates": false + }, + { + "id": "nx17", + "bg": 957, + "rotates": false + }, + { + "id": "oatmeal", + "fg": 1283, + "bg": 957, + "rotates": false + }, + { + "id": "oatmeal_cooked", + "fg": 1284, + "bg": 957, + "rotates": false + }, + { + "id": "oatmeal_deluxe", + "fg": 1285, + "bg": 957, + "rotates": false + }, + { + "id": "oxycodone", + "fg": 1287, + "bg": 957, + "rotates": false + }, + { + "id": "pancakes", + "fg": 1288, + "bg": 957, + "rotates": false + }, + { + "id": "pepper", + "fg": 1292, + "bg": 957, + "rotates": false + }, + { + "id": "permanent_marker", + "fg": 3700, + "bg": 957, + "rotates": false + }, + { + "id": "pickaxe", + "fg": 3702, + "bg": 957, + "rotates": false + }, + { + "id": "picklocks", + "fg": 3703, + "bg": 957, + "rotates": false + }, + { + "id": ["pike", "pike_fake", "pike_inferior"], + "fg": 1877, + "bg": 957, + "rotates": false + }, + { + "id": "pills_sleep", + "fg": 1294, + "bg": 957, + "rotates": false + }, + { + "id": "pilot_light", + "fg": 1879, + "bg": 957, + "rotates": false + }, + { + "id": "pipe_glass", + "fg": 3706, + "bg": 957, + "rotates": false + }, + { + "id": "pipe_launcher40mm", + "fg": 2247, + "bg": 957, + "rotates": false + }, + { + "id": "pipebomb", + "fg": 3704, + "bg": 957, + "rotates": false + }, + { + "id": "pipebomb_act", + "fg": 3705, + "bg": 957, + "rotates": false + }, + { + "id": "pistol_bayonet", + "fg": 3776, + "bg": 957, + "rotates": false + }, + { + "id": "pistol_grip", + "fg": 2248, + "bg": 957, + "rotates": false + }, + { + "id": "pistol_stock", + "fg": 2249, + "bg": 957, + "rotates": false + }, + { + "id": "plasma_engine", + "fg": 3948, + "bg": 957, + "rotates": false + }, + { + "id": "plastic_chunk", + "fg": 3708, + "bg": 957, + "rotates": false + }, + { + "id": "pointy_stick", + "fg": 1885, + "bg": 957, + "rotates": false + }, + { + "id": "pomegranate", + "fg": 1237, + "bg": 957, + "rotates": false + }, + { + "id": "pool_cue", + "fg": 1887, + "bg": 957, + "rotates": false + }, + { + "id": "poppy_pain", + "fg": 1300, + "bg": 957, + "rotates": false + }, + { + "id": "poppy_sleep", + "fg": 1301, + "bg": 957, + "rotates": false + }, + { + "id": "portable_game", + "fg": 3712, + "bg": 957, + "rotates": false + }, + { + "id": "potato_baked", + "fg": 1302, + "bg": 957, + "rotates": false + }, + { + "id": "potato_raw", + "fg": 1303, + "bg": 957, + "rotates": false + }, + { + "id": "powder_eggs", + "fg": 1304, + "bg": 957, + "rotates": false + }, + { + "id": ["power_supply", "electronics_controls"], + "fg": 1893, + "bg": 957, + "rotates": false + }, + { + "id": "ppsh", + "fg": 2164, + "bg": 957, + "rotates": false + }, + { + "id": "press", + "fg": 3713, + "bg": 957, + "rotates": false + }, + { + "id": "primitive_shovel", + "fg": 3718, + "bg": 957, + "rotates": false + }, + { + "id": ["processor", "vp_vehicle_alarm"], + "fg": 1894, + "bg": 957, + "rotates": false + }, + { + "id": "protein_powder", + "fg": 1305, + "bg": 957, + "rotates": false + }, + { + "id": "prozac", + "fg": 1306, + "bg": 957, + "rotates": false + }, + { + "id": "puller", + "fg": 3719, + "bg": 957, + "rotates": false + }, + { + "id": "punch_dagger", + "fg": 1896, + "bg": 957, + "rotates": false + }, + { + "id": "pur_tablets", + "fg": 1309, + "bg": 957, + "rotates": false + }, + { + "id": "q_staff", + "fg": 1898, + "bg": 957, + "rotates": false + }, + { + "id": "quikclot", + "fg": 1310, + "bg": 957, + "rotates": false + }, + { + "id": "radio", + "fg": 3720, + "bg": 957, + "rotates": false + }, + { + "id": "radio_on", + "fg": 3724, + "bg": 957, + "rotates": false + }, + { + "id": "rag", + "fg": 3725, + "bg": 957, + "rotates": false + }, + { + "id": "chloroform_rag", + "fg": 3725, + "bg": 957, + "rotates": false + }, + { + "id": "raging_bull", + "fg": 2166, + "bg": 957, + "rotates": false + }, + { + "id": "raging_judge", + "fg": 2166, + "bg": 957, + "rotates": false + }, + { + "id": "RAM", + "fg": 1900, + "bg": 957, + "rotates": false + }, + { + "id": "rapier", + "fg": 3726, + "bg": 957, + "rotates": false + }, + { + "id": "rapier_fake", + "fg": 3726, + "bg": 957, + "rotates": false + }, + { + "id": "razor_blade", + "fg": 1901, + "bg": 957, + "rotates": false + }, + { + "id": "rebar_rifle", + "fg": 2167, + "bg": 957, + "rotates": false + }, + { + "id": "receiver", + "fg": 1903, + "bg": 957, + "rotates": false + }, + { + "id": "fr_762", + "fg": 2250, + "bg": 957, + "rotates": false + }, + { + "id": "fr_9mm", + "fg": 2250, + "bg": 957, + "rotates": false + }, + { + "id": "fr_45", + "fg": 2250, + "bg": 957, + "rotates": false + }, + { + "id": "fr_223", + "fg": 2250, + "bg": 957, + "rotates": false + }, + { + "id": "fr_12", + "fg": 2250, + "bg": 957, + "rotates": false + }, + { + "id": "fr_308", + "fg": 2250, + "bg": 957, + "rotates": false + }, + { + "id": "fr_22", + "fg": 2250, + "bg": 957, + "rotates": false + }, + { + "id": "ref_lighter", + "fg": 3727, + "bg": 957, + "rotates": false + }, + { + "id": "ref_lighter_dare", + "fg": 3727, + "bg": 957, + "rotates": false + }, + { + "id": "rehydrated_fruit", + "fg": 1314, + "bg": 957, + "rotates": false + }, + { + "id": "rehydrated_meat", + "fg": 1315, + "bg": 957, + "rotates": false + }, + { + "id": "rehydrated_veggy", + "fg": 1316, + "bg": 957, + "rotates": false + }, + { + "id": "reinforced_glass_sheet", + "fg": 1904, + "bg": 957, + "rotates": false + }, + { + "id": "reinforced_solar_panel", + "fg": 1905, + "bg": 957, + "rotates": false + }, + { + "id": ["retool_22", "retool_545"], + "fg": 2251, + "bg": 957, + "rotates": false + }, + { + "id": "retool_223", + "fg": 2252, + "bg": 957 + }, + { + "id": ["retool_308", "retool_654"], + "fg": 2253, + "bg": 957 + }, + { + "id": ["retool_45", "retool_46", "retool_57", "retool_9mm", "460_conversion", "retool_357", "retool_38", "retool_40", "retool_460"], + "fg": 2254, + "bg": 957, + "rotates": false + }, + { + "id": "retool_flaregun", + "fg": 2255, + "bg": 957, + "rotates": false + }, + { + "id": "revolver_shotgun", + "fg": 2174, + "bg": 957, + "rotates": false + }, + { + "id": "rhubarb", + "fg": 1238, + "bg": 957, + "rotates": false + }, + { + "id": ["rifle_scope", "lead_rifle_scope"], + "fg": 2256, + "bg": 957, + "rotates": false + }, + { + "id": ["lead_acog_scope", "acog_scope", "bow_scope"], + "fg": 2256, + "bg": 957, + "rotates": false + }, + { + "id": "riv_scope", + "fg": 2256, + "bg": 957, + "rotates": false + }, + { + "id": "rm103a_pistol", + "fg": 2176, + "bg": 957, + "rotates": false + }, + { + "id": "rm2000_smg", + "fg": 2177, + "bg": 957, + "rotates": false + }, + { + "id": "rm228", + "fg": 2178, + "bg": 957, + "rotates": false + }, + { + "id": "rm88_battle_rifle", + "fg": 2183, + "bg": 957, + "rotates": false + }, + { + "id": "surv_full_308", + "fg": 2183, + "bg": 957, + "rotates": false + }, + { + "id": "rm99_pistol", + "fg": 2184, + "bg": 957, + "rotates": false + }, + { + "id": "roadmap", + "fg": 1803, + "bg": 957, + "rotates": false + }, + { + "id": "rock_pot", + "fg": 1907, + "bg": 957, + "rotates": false + }, + { + "id": "rock_quern", + "fg": 3729, + "bg": 957, + "rotates": false + }, + { + "id": "clay_quern", + "fg": 3729, + "bg": 957, + "rotates": false + }, + { + "id": "rock_sock", + "fg": 1908, + "bg": 957, + "rotates": false + }, + { + "id": "rollmat", + "fg": 3730, + "bg": 957, + "rotates": false + }, + { + "id": ["rope_30", "rope_makeshift_30"], + "fg": 1909, + "bg": 957, + "rotates": false + }, + { + "id": "rope_6", + "fg": 3568, + "bg": 957, + "rotates": false + }, + { + "id": "saddle", + "fg": 1910, + "bg": 957, + "rotates": false + }, + { + "id": ["saiga_12", "saiga_410"], + "fg": 2190, + "bg": 957, + "rotates": false + }, + { + "id": "saiga_sawn", + "bg": 957, + "rotates": false + }, + { + "id": "salt", + "fg": 1320, + "bg": 957, + "rotates": false + }, + { + "id": "sausage", + "fg": 1325, + "bg": 957, + "rotates": false + }, + { + "id": "saw", + "fg": 3732, + "bg": 957, + "rotates": false + }, + { + "id": "scalpel", + "fg": 3733, + "bg": 957, + "rotates": false + }, + { + "id": "scar_l", + "fg": 2192, + "bg": 957, + "rotates": false + }, + { + "id": "scrambled_eggs", + "fg": 1326, + "bg": 957, + "rotates": false + }, + { + "id": "scrambler", + "fg": 3736, + "bg": 957, + "rotates": false + }, + { + "id": "scrambler_act", + "fg": 3737, + "bg": 957, + "rotates": false + }, + { + "id": "scythe", + "fg": 3742, + "bg": 957, + "rotates": false + }, + { + "id": ["scythe_war", "scythe_war_upgraded", "scythe_war_perfected"], + "fg": 3743, + "bg": 957, + "rotates": false + }, + { + "id": "seasoning_italian", + "fg": 1327, + "bg": 957, + "rotates": false + }, + { + "id": "seasoning_salt", + "fg": 1328, + "bg": 957, + "rotates": false + }, + { + "id": "seed_weed", + "fg": 1336, + "bg": 957, + "rotates": false + }, + { + "id": "sharp_toothbrush", + "fg": 1915, + "bg": 957, + "rotates": false + }, + { + "id": ["sheet_metal", "sheet_metal_small"], + "fg": 1916, + "bg": 957, + "rotates": false + }, + { + "id": "shishkebab_off", + "fg": 3747, + "bg": 957, + "rotates": false + }, + { + "id": "shishkebab_on", + "fg": 3748, + "bg": 957, + "rotates": false + }, + { + "id": "shock_staff", + "fg": 3751, + "bg": 957, + "rotates": false + }, + { + "id": "shocktonfa_off", + "fg": 3749, + "bg": 957, + "rotates": false + }, + { + "id": "shocktonfa_on", + "fg": 3750, + "bg": 957, + "rotates": false + }, + { + "id": "shovel", + "fg": 3753, + "bg": 957, + "rotates": false + }, + { + "id": "sickle", + "fg": 3754, + "bg": 957 + }, + { + "id": "skewer", + "fg": 3956, + "bg": 957, + "rotates": false + }, + { + "id": "sks", + "fg": 2200, + "bg": 957, + "rotates": false + }, + { + "id": "slime_scrap", + "fg": 1338, + "bg": 957, + "rotates": false + }, + { + "id": "small_lcd_screen", + "fg": 1920, + "bg": 957, + "rotates": false + }, + { + "id": "small_repairkit", + "fg": 3755, + "bg": 957, + "rotates": false + }, + { + "id": ["small_storage_battery", "vp_small_storage_battery"], + "fg": 2276, + "bg": 957, + "rotates": false + }, + { + "id": "smokebomb", + "fg": 1921, + "bg": 957, + "rotates": false + }, + { + "id": "smokebomb_act", + "fg": 1922, + "bg": 957, + "rotates": false + }, + { + "id": "snare_trigger", + "fg": 3758, + "bg": 957, + "rotates": false + }, + { + "id": "solar_cell", + "fg": 1923, + "bg": 957, + "rotates": false + }, + { + "id": "solar_panel", + "fg": 1924, + "bg": 957, + "rotates": false + }, + { + "id": "spare_mag", + "bg": 957, + "rotates": false + }, + { + "id": "spear_knife", + "fg": 3760, + "bg": 957, + "rotates": false + }, + { + "id": "glaive", + "fg": 3760, + "bg": 957, + "rotates": false + }, + { + "id": "spear_rebar", + "fg": 1930, + "bg": 957, + "rotates": false + }, + { + "id": "spear_steel", + "fg": 1931, + "bg": 957, + "rotates": false + }, + { + "id": ["spear_wood", "harpoon"], + "fg": 1933, + "bg": 957, + "rotates": false + }, + { + "id": "spike", + "fg": 1934, + "bg": 957, + "rotates": false + }, + { + "id": "spork", + "fg": 1939, + "bg": 957, + "rotates": false + }, + { + "id": "spring", + "fg": 1940, + "bg": 957, + "rotates": false + }, + { + "id": "steyr_aug", + "fg": 2206, + "bg": 957, + "rotates": false + }, + { + "id": "still", + "fg": 3765, + "bg": 957, + "rotates": false + }, + { + "id": ["storage_battery", "vp_storage_battery", "vp_storage_battery_removable"], + "fg": 2276, + "bg": 957, + "rotates": false + }, + { + "id": ["storage_battery", "hd_battery"], + "fg": 2276, + "bg": 957, + "rotates": false + }, + { + "id": "sugar", + "fg": 1352, + "bg": 957, + "rotates": false + }, + { + "id": ["suppressor", "riv_suppressor"], + "fg": 2257, + "bg": 957, + "rotates": false + }, + { + "id": "survivormap", + "fg": 1803, + "bg": 957, + "rotates": false + }, + { + "id": "arcanemap", + "fg": 1803, + "bg": 957, + "rotates": false + }, + { + "id": "sw_22", + "fg": 2209, + "bg": 957, + "rotates": false + }, + { + "id": "sw_500", + "fg": 2210, + "bg": 957, + "rotates": false + }, + { + "id": "50pistol", + "fg": 2210, + "bg": 957, + "rotates": false + }, + { + "id": "sw_610", + "fg": 2211, + "bg": 957, + "rotates": false + }, + { + "id": "sw_619", + "fg": 2212, + "bg": 957, + "rotates": false + }, + { + "id": "swage", + "fg": 3774, + "bg": 957, + "rotates": false + }, + { + "id": "switchblade", + "fg": 3775, + "bg": 957, + "rotates": false + }, + { + "id": "sword_bayonet", + "fg": 3776, + "bg": 957, + "rotates": false + }, + { + "id": "sword_crude", + "fg": 1948, + "bg": 957, + "rotates": false + }, + { + "id": "sword_forged", + "fg": 1949, + "bg": 957, + "rotates": false + }, + { + "id": "sword_nail", + "fg": 1950, + "bg": 957, + "rotates": false + }, + { + "id": "sword_wood", + "fg": 1951, + "bg": 957, + "rotates": false + }, + { + "id": ["tanto", "tanto_fake", "tanto_inferior"], + "fg": 3783, + "bg": 957, + "rotates": false + }, + { + "id": "taurus_38", + "fg": 2213, + "bg": 957, + "rotates": false + }, + { + "id": "tazer", + "fg": 3784, + "bg": 957, + "rotates": false + }, + { + "id": "TDI", + "fg": 2214, + "bg": 957, + "rotates": false + }, + { + "id": "tec9", + "fg": 2215, + "bg": 957, + "rotates": false + }, + { + "id": "textbook_computers", + "bg": 957, + "rotates": false + }, + { + "id": "thorazine", + "fg": 1360, + "bg": 957, + "rotates": false + }, + { + "id": "tihar", + "fg": 2217, + "bg": 957, + "rotates": false + }, + { + "id": "tin_plate", + "fg": 1958, + "bg": 957, + "rotates": false + }, + { + "id": "toaster", + "fg": 1959, + "bg": 957, + "rotates": false + }, + { + "id": "tokarev", + "fg": 2218, + "bg": 957, + "rotates": false + }, + { + "id": "tonfa", + "fg": 1960, + "bg": 957, + "rotates": false + }, + { + "id": "tonfa_wood", + "fg": 1961, + "bg": 957, + "rotates": false + }, + { + "id": "tongs", + "fg": 3791, + "bg": 957, + "rotates": false + }, + { + "id": "torch", + "fg": 3796, + "bg": 957, + "rotates": false + }, + { + "id": "solar_torch", + "fg": 3796, + "bg": 957, + "rotates": false + }, + { + "id": "solar_torch_done", + "fg": 1962, + "bg": 957, + "rotates": false + }, + { + "id": "torch_done", + "fg": 1962, + "bg": 957, + "rotates": false + }, + { + "id": "torch_lit", + "fg": 3797, + "bg": 957, + "rotates": false + }, + { + "id": "solar_torch_lit", + "fg": 3797, + "bg": 957, + "rotates": false + }, + { + "id": "touristmap", + "fg": 1803, + "bg": 957, + "rotates": false + }, + { + "id": "tr_portal", + "fg": 3930, + "bg": 957, + "rotates": false + }, + { + "id": "tr_telepad", + "fg": 3935, + "bg": 957, + "rotates": false + }, + { + "id": "tramadol", + "fg": 1363, + "bg": 957, + "rotates": false + }, + { + "id": "transponder", + "fg": 1963, + "bg": 957, + "rotates": false + }, + { + "id": "unbio_blaster_gun", + "fg": 2220, + "bg": 957, + "rotates": false + }, + { + "id": "unknown", + "fg": 4225, + "bg": 957, + "rotates": true + }, + { + "id": "vp_washing_machine", + "fg": 1600, + "bg": 1005, + "rotates": false + }, + { + "id": "UPS_on", + "bg": 957, + "rotates": false + }, + { + "id": ["usb_drive", "software","software_useless", "software_hacking", "software_medical", "software_math", "software_blood_data", "software_lab_data", "software_train_data", "Software_BioCo_Civilian_Designs", "Software_BioCo_Experimental_Designs", "Software_BioCo_Medical_Designs", "Software_BioCo_Military_Designs"], + "fg": 1965, + "bg": 957, + "rotates": false + }, + { + "id": "uzi", + "fg": 2223, + "bg": 957, + "rotates": false + }, + { + "id": "v29", + "fg": 2224, + "bg": 957, + "rotates": false + }, + { + "id": "v29_cheap", + "fg": 2225, + "bg": 957, + "rotates": false + }, + { + "id": "v2_combustion", + "fg": 1438, + "bg": 957, + "rotates": false + }, + { + "id": "v6_combustion", + "fg": 1439, + "bg": 957, + "rotates": false + }, + { + "id": "v8_combustion", + "fg": 1440, + "bg": 957, + "rotates": false + }, + { + "id": "vacutainer", + "fg": 1430, + "bg": 957, + "rotates": false + }, + { + "id": "veggy_wild_cooked", + "fg": 1368, + "bg": 957, + "rotates": false + }, + { + "id": ["vehicle_controls", "vp_controls", "vp_drive_by_wire_controls"], + "fg": 1966, + "bg": 957, + "rotates": false + }, + { + "id": "drive_by_wire_controls", + "fg": 1966, + "bg": 957, + "rotates": false + }, + { + "id": "robot_controls", + "fg": 1966, + "bg": 957, + "rotates": false + }, + { + "id": "vitamins", + "fg": 1369, + "bg": 957, + "rotates": false + }, + { + "id": "water_purifier", + "fg": 3810, + "bg": 957 + }, + { + "id": "waterskin", + "fg": 1431, + "bg": 957, + "rotates": false + }, + { + "id": "sac_purse", + "fg": 1431, + "bg": 957, + "rotates": false + }, + { + "id": "wax", + "fg": 1374, + "bg": 957, + "rotates": false + }, + { + "id": "welder", + "fg": 3811, + "bg": 957, + "rotates": false + }, + { + "id": "welder_crude", + "fg": 3812, + "bg": 957, + "rotates": false + }, + { + "id": "wheat", + "fg": 1376, + "bg": 957, + "rotates": false + }, + { + "id": "wheel", + "fg": 4183, + "bg": 957, + "rotates": false + }, + { + "id": "wheel_armor", + "fg": 4184, + "bg": 957, + "rotates": false + }, + { + "id": "wheel_bicycle", + "fg": 4185, + "bg": 957, + "rotates": false + }, + { + "id": "wheel_caster", + "fg": 4186, + "bg": 957, + "rotates": false + }, + { + "id": "wheel_motorbike", + "fg": 4187, + "bg": 957, + "rotates": false + }, + { + "id": "wheel_small", + "fg": 4188, + "bg": 957, + "rotates": false + }, + { + "id": "wheel_wide", + "fg": 4189, + "bg": 957, + "rotates": false + }, + { + "id": "withered", + "fg": 1976, + "bg": 957, + "rotates": false + }, + { + "id": "wrapped_rad_badge", + "fg": 3814, + "bg": 957, + "rotates": false + }, + { + "id": "xacto", + "fg": 3816, + "bg": 957, + "rotates": false + }, + { + "id": "xanax", + "fg": 1380, + "bg": 957, + "rotates": false + }, + { + "id": "zucchini", + "fg": 1383, + "bg": 957, + "rotates": false + }, + { + "id": "zweifire_off", + "fg": 3817, + "bg": 957, + "rotates": false + }, + { + "id": "zweifire_on", + "fg": 3818, + "bg": 957, + "rotates": false + }, + { + "id": "cw-24", + "fg": 2002, + "bg": 957, + "rotates": false + }, + { + "id": "svs-24", + "fg": 2207, + "bg": 957, + "rotates": false + }, + { + "id": "svs-24c", + "fg": 2208, + "bg": 957, + "rotates": false + }, + { + "id": "cw-24m", + "fg": 2002, + "bg": 957, + "rotates": false + }, + { + "id": "cw-24k", + "fg": 2002, + "bg": 957, + "rotates": false + }, + { + "id": "cw-24hack", + "fg": 2002, + "bg": 957, + "rotates": false + }, + { + "id": "cw-24m_hack", + "fg": 2002, + "bg": 957, + "rotates": false + }, + { + "id": "cwd-63", + "fg": 2003, + "bg": 957, + "rotates": false + }, + { + "id": ["stereo", "vp_stereo"], + "fg": 1942, + "bg": 957, + "rotates": false + }, + { + "id": "broken_eyebot", + "fg": 1685, + "bg": 957, + "rotates": false + }, + { + "id": "broken_copbot", + "fg": 1684, + "bg": 957, + "rotates": false + }, + { + "id": "hops", + "fg": 1215, + "bg": 957, + "rotates": false + }, + { + "id": "sarcophagus_access_code", + "fg": 1021, + "bg": 957, + "rotates": false + }, + { + "id": "note_grove", + "fg": 1021, + "bg": 957, + "rotates": false + }, + { + "id": ["note_sanguine", "note_sanguine_tenet"], + "fg": 1021, + "bg": 957, + "rotates": false + }, + { + "id": ["note_chalice", "note_chalice_tenet"], + "fg": 1021, + "bg": 957, + "rotates": false + }, + { + "id": ["note_flame", "note_flame_tenet"], + "fg": 1021, + "bg": 957, + "rotates": false + }, + { + "id": "spider_egg", + "fg": 1349, + "bg": 957, + "rotates": false + }, + { + "id": "mask_bunker", + "fg": 3843, + "bg": 957, + "rotates": false + }, + { + "id": "mask_bunker_on", + "fg": 3844, + "bg": 957, + "rotates": false + }, + { + "id": "pipe_double_shotgun", + "fg": 2161, + "bg": 957, + "rotates": false + }, + { + "id": "vibrator", + "fg": 3805, + "bg": 957, + "rotates": false + }, + { + "id": "antifungal", + "fg": 1074, + "bg": 957, + "rotates": false + }, + { + "id": "antiparasitic", + "fg": 1075, + "bg": 957, + "rotates": false + }, + { + "id": "honey_glassed", + "fg": 1214, + "bg": 957, + "rotates": false + }, + { + "id": "yeast", + "fg": 1381, + "bg": 957, + "rotates": false + }, + { + "id": "zweihander", + "fg": 3819, + "bg": 957, + "rotates": false + }, + { + "id": "zweihander_fake", + "fg": 3819, + "bg": 957, + "rotates": false + }, + { + "id": "zweihander_inferior", + "fg": 3819, + "bg": 957, + "rotates": false + }, + { + "id": "marshmallow", + "fg": 1255, + "bg": 957, + "rotates": false + }, + { + "id": "puck", + "fg": 1895, + "bg": 957, + "rotates": false + }, + { + "id": "bowling_ball", + "fg": 1659, + "bg": 957, + "rotates": false + }, + { + "id": "nachos", + "fg": 1274, + "bg": 957, + "rotates": false + }, + { + "id": "chilly-p", + "fg": 1141, + "bg": 957, + "rotates": false + }, + { + "id": "nachosc", + "fg": 1275, + "bg": 957, + "rotates": false + }, + { + "id": "nachosm", + "fg": 1276, + "bg": 957, + "rotates": false + }, + { + "id": "nachosmc", + "fg": 1277, + "bg": 957, + "rotates": false + }, + { + "id": "datura_seed", + "fg": 1172, + "bg": 957, + "rotates": false + }, + { + "id": "ceramic_shard", + "fg": 1703, + "bg": 957, + "rotates": false + }, + { + "id": "bullwhip", + "fg": 1694, + "bg": 957, + "rotates": false + }, + { + "id": "pipe_combination_gun", + "fg": 2160, + "bg": 957, + "rotates": false + }, + { + "id": "walther_ppk", + "fg": 2226, + "bg": 957, + "rotates": false + }, + { + "id": "tommygun", + "fg": 2219, + "bg": 957, + "rotates": false + }, + { + "id": "sten", + "fg": 2205, + "bg": 957, + "rotates": false + }, + { + "id": "skorpion_61", + "fg": 2199, + "bg": 957, + "rotates": false + }, + { + "id": "rm451_flamethrower", + "fg": 2180, + "bg": 957, + "rotates": false + }, + { + "id": "rm298", + "fg": 2179, + "bg": 957, + "rotates": false + }, + { + "id": "m2browning", + "fg": 2179, + "bg": 957, + "rotates": false + }, + { + "id": "m249", + "fg": 2056, + "bg": 957, + "rotates": false + }, + { + "id": ["m240", "ameli"], + "fg": 2055, + "bg": 957 + }, + { + "id": "m1918", + "fg": 2051, + "bg": 957, + "rotates": false + }, + { + "id": "lemat_revolver", + "fg": 2042, + "bg": 957, + "rotates": false + }, + { + "id": "LAW", + "fg": 2041, + "bg": 957, + "rotates": false + }, + { + "id": "ksg", + "fg": 2038, + "bg": 957, + "rotates": false + }, + { + "id": "ithaca_doom", + "fg": 2038, + "bg": 957, + "rotates": false + }, + { + "id": "combination_gun", + "fg": 2160, + "bg": 957, + "rotates": false + }, + { + "id": "chemical_thrower", + "fg": 1994, + "bg": 957, + "rotates": false + }, + { + "id": "briefcase_smg", + "fg": 1990, + "bg": 957, + "rotates": false + }, + { + "id": "ficrico", + "fg": 2008, + "bg": 957, + "rotates": false + }, + { + "id": "gunknife", + "fg": 2022, + "bg": 957, + "rotates": false + }, + { + "id": "gunsword", + "fg": 2023, + "bg": 957, + "rotates": false + }, + { + "id": "hk_mp5eod", + "fg": 2032, + "bg": 957, + "rotates": false + }, + { + "id": "ltcarb", + "fg": 2044, + "bg": 957, + "rotates": false + }, + { + "id": "wrist_dread", + "fg": 2229, + "bg": 957, + "rotates": false + }, + { + "id": "emas", + "fg": 2240, + "bg": 957, + "rotates": false + }, + { + "id": "fire_lance", + "fg": 2009, + "bg": 957, + "rotates": false + }, + { + "id": "dao", + "fg": 3497, + "bg": 957, + "rotates": false + }, + { + "id": "dusksword", + "fg": 3500, + "bg": 957, + "rotates": false + }, + { + "id": "khopesh", + "fg": 3585, + "bg": 957, + "rotates": false + }, + { + "id": "sword_xiphos", + "fg": 3777, + "bg": 957, + "rotates": false + }, + { + "id": "ji", + "fg": 1773, + "bg": 957, + "rotates": false + }, + { + "id": "spear_dory", + "fg": 1928, + "bg": 957, + "rotates": false + }, + { + "id": "gungnir_replica", + "fg": 1756, + "bg": 957, + "rotates": false + }, + { + "id": "mjolnir_replica", + "fg": 1808, + "bg": 957, + "rotates": false + }, + { + "id": "laevateinn_replica", + "fg": 3597, + "bg": 957, + "rotates": false + }, + { + "id": "atgm_launcher", + "fg": 1985, + "bg": 957, + "rotates": false + }, + { + "id": "inflatable_boat", + "fg": 3576, + "bg": 957, + "rotates": false + }, + { + "id": "1cyl_combustion", + "fg": 1435, + "bg": 957, + "rotates": false + }, + { + "id": "1cyl_combustion_small", + "fg": 1436, + "bg": 957, + "rotates": false + }, + { + "id": "f_blade_upright", + "fg": 1462, + "bg": 957, + "rotates": false + }, + { + "id": "scroll_blank", + "fg": 1913, + "bg": 957, + "rotates": false + }, + { + "id": "silver_glyph", + "fg": 1918, + "bg": 957, + "rotates": false + }, + { + "id": "bloodscourge", + "fg": 1989, + "bg": 957, + "rotates": false + }, + { + "id": "hand_of_armok", + "fg": 2026, + "bg": 957, + "rotates": false + }, + { + "id": "scourge_staff", + "fg": 2193, + "bg": 957, + "rotates": false + }, + { + "id": "thunder_sigil", + "fg": 2216, + "bg": 957, + "rotates": false + }, + { + "id": "armor_wyrm", + "fg": 3823, + "bg": 957, + "rotates": false + }, + { + "id": "cleric_ring", + "fg": 3826, + "bg": 957, + "rotates": false + }, + { + "id": "gauntlets_necro", + "fg": 3832, + "bg": 957, + "rotates": false + }, + { + "id": "gilded_aegis", + "fg": 3833, + "bg": 957, + "rotates": false + }, + { + "id": "robe_shadow", + "fg": 3898, + "bg": 957, + "rotates": false + }, + { + "id": "robe_shadow_on", + "fg": 3899, + "bg": 957, + "rotates": false + }, + { + "id": "sun_sword_on", + "fg": 3770, + "bg": 957, + "rotates": false + }, + { + "id": "blood_athame", + "fg": 3453, + "bg": 957, + "rotates": false + }, + { + "id": ["deagle_44", "e1776"], + "fg": 2005, + "bg": 957, + "rotates": false + }, + { + "id": "flaregun", + "fg": 2013, + "bg": 957, + "rotates": false + }, + { + "id": ["m1911", "amthard"], + "fg": 2050, + "bg": 957, + "rotates": false + }, + { + "id": "m1991a1_38super", + "fg": 2050, + "bg": 957, + "rotates": false + }, + { + "id": "bagh_nakha", + "fg": 1638, + "bg": 957, + "rotates": false + }, + { + "id": "basketball", + "fg": 1645, + "bg": 957, + "rotates": false + }, + { + "id": "arming_sword_fake", + "fg": 1632, + "bg": 957, + "rotates": false + }, + { + "id": "battery_car", + "fg": 2276, + "bg": 957, + "rotates": false + }, + { + "id": "battery_motorbike", + "fg": 2276, + "bg": 957, + "rotates": false + }, + { + "id": "vp_battery_motorbike", + "fg": 2276, + "bg": 957, + "rotates": false + }, + { + "id": "battery_truck", + "fg": 2276, + "bg": 957, + "rotates": false + }, + { + "id": "battleaxe_fake", + "fg": 1649, + "bg": 957, + "rotates": false + }, + { + "id": "birchbark", + "fg": 1654, + "bg": 957, + "rotates": false + }, + { + "id": "brick", + "fg": 1661, + "bg": 957, + "rotates": false + }, + { + "id": "clay_lump", + "fg": 1713, + "bg": 957, + "rotates": false + }, + { + "id": "crude_brick", + "fg": 1661, + "bg": 957, + "rotates": false + }, + { + "id": "cured_hide", + "fg": 1719, + "bg": 957, + "rotates": false + }, + { + "id": "cutlass_fake", + "fg": 1721, + "bg": 957, + "rotates": false + }, + { + "id": "diamond", + "fg": 1723, + "bg": 957, + "rotates": false + }, + { + "id": "down_pillow", + "fg": 1725, + "bg": 957, + "rotates": false + }, + { + "id": "estoc", + "fg": 1727, + "bg": 957, + "rotates": false + }, + { + "id": "estoc_fake", + "fg": 1727, + "bg": 957, + "rotates": false + }, + { + "id": "felt_patch", + "fg": 1731, + "bg": 957, + "rotates": false + }, + { + "id": "fencing_epee", + "fg": 1732, + "bg": 957, + "rotates": false + }, + { + "id": "fencing_foil", + "fg": 1732, + "bg": 957, + "rotates": false + }, + { + "id": "fencing_sabre", + "fg": 1733, + "bg": 957, + "rotates": false + }, + { + "id": "fishing_hook_basic", + "fg": 1736, + "bg": 957, + "rotates": false + }, + { + "id": "fishing_hook_bone", + "fg": 1736, + "bg": 957, + "rotates": false + }, + { + "id": "frame_wood_light", + "fg": 1745, + "bg": 957 + }, + { + "id": "hickory_nut", + "fg": 1764, + "bg": 957, + "rotates": false + }, + { + "id": "hickory_root", + "fg": 1765, + "bg": 957, + "rotates": false + }, + { + "id": "jian_fake", + "fg": 1774, + "bg": 957, + "rotates": false + }, + { + "id": "kiln_lit", + "fg": 1777, + "bg": 957, + "rotates": false + }, + { + "id": "knitting_needles", + "fg": 1779, + "bg": 957, + "rotates": false + }, + { + "id": "material_aluminium_ingot", + "fg": 1799, + "bg": 957 + }, + { + "id": "material_shrd_limestone", + "fg": 1800, + "bg": 957 + }, + { + "id": "mjolnir", + "fg": 1807, + "bg": 957, + "rotates": false + }, + { + "id": "mobile_memory_card", + "fg": 1809, + "bg": 957 + }, + { + "id": "mobile_memory_card_encrypted", + "fg": 1809, + "bg": 957 + }, + { + "id": "mobile_memory_card_science", + "fg": 1809, + "bg": 957 + }, + { + "id": "mobile_memory_card_used", + "fg": 1809, + "bg": 957 + }, + { + "id": ["motor_small", "vp_door_motor", "vp_engine_electric_small"], + "fg": 1813, + "bg": 957 + }, + { + "id": "music_cd", + "fg": 3946, + "bg": 957, + "rotates": false + }, + { + "id": "naginata", + "fg": 1820, + "bg": 957, + "rotates": false + }, + { + "id": ["omnicamera", "vp_omnomnicam"], + "fg": 1824, + "bg": 957, + "rotates": false + }, + { + "id": "pastaextruder", + "fg": 1875, + "bg": 957, + "rotates": false + }, + { + "id": "pillow", + "fg": 1878, + "bg": 957, + "rotates": false + }, + { + "id": "pine_bough", + "fg": 1881, + "bg": 957, + "rotates": false + }, + { + "id": "pinecone", + "fg": 1880, + "bg": 957, + "rotates": false + }, + { + "id": "pitchfork", + "fg": 1883, + "bg": 957, + "rotates": false + }, + { + "id": "pot_copper", + "fg": 1890, + "bg": 957, + "rotates": false + }, + { + "id": "qiang", + "fg": 1897, + "bg": 957, + "rotates": false + }, + { + "id": "rag_bloody", + "fg": 1899, + "bg": 957, + "rotates": false + }, + { + "id": "scimitar_fake", + "fg": 1911, + "bg": 957, + "rotates": false + }, + { + "id": "skewer_bone", + "fg": 1919, + "bg": 957, + "rotates": false + }, + { + "id": "solar_panel_v2", + "fg": 1925, + "bg": 957, + "rotates": false + }, + { + "id": "solar_panel_v3", + "fg": 1926, + "bg": 957, + "rotates": false + }, + { + "id": "spear_copper", + "fg": 1927, + "bg": 957, + "rotates": false + }, + { + "id": "spear_forked", + "fg": 1929, + "bg": 957, + "rotates": false + }, + { + "id": "spear_survivor", + "fg": 1820, + "bg": 957, + "rotates": false + }, + { + "id": "straw_pile", + "fg": 1945, + "bg": 957, + "rotates": false + }, + { + "id": "tanbark", + "fg": 1952, + "bg": 957, + "rotates": false + }, + { + "id": "tanned_hide", + "fg": 1953, + "bg": 957, + "rotates": false + }, + { + "id": "tanned_pelt", + "fg": 1954, + "bg": 957, + "rotates": false + }, + { + "id": "wakizashi_fake", + "fg": 1969, + "bg": 957, + "rotates": false + }, + { + "id": "warhammer", + "fg": 1970, + "bg": 957, + "rotates": false + }, + { + "id": ["water_faucet", "vp_water_faucet"], + "fg": 1972, + "bg": 957, + "rotates": false + }, + { + "id": "willowbark", + "fg": 1973, + "bg": 957, + "rotates": false + }, + { + "id": "wire", + "fg": 1974, + "bg": 957, + "rotates": false + }, + { + "id": "wire_barbed", + "fg": 1975, + "bg": 957, + "rotates": false + }, + { + "id": "screwdriver_set", + "fg": 3739, + "bg": 957, + "rotates": false + }, + { + "id": "scimitar_inferior", + "fg": 3734, + "bg": 957, + "rotates": false + }, + { + "id": "scimitar", + "fg": 1911, + "bg": 957, + "rotates": false + }, + { + "id": "shavingkit", + "fg": 3745, + "bg": 957, + "rotates": false + }, + { + "id": "stepladder", + "fg": 3764, + "bg": 957, + "rotates": false + }, + { + "id": "survivor_hairtrimmer", + "fg": 3771, + "bg": 957, + "rotates": false + }, + { + "id": "survivor_mess_kit", + "fg": 3772, + "bg": 957, + "rotates": false + }, + { + "id": "survivor_scope", + "fg": 3773, + "bg": 957, + "rotates": false + }, + { + "id": "survivor_shavingkit", + "fg": 3745, + "bg": 957, + "rotates": false + }, + { + "id": "polisher", + "fg": 3711, + "bg": 957, + "rotates": false + }, + { + "id": "pliers", + "fg": 3709, + "bg": 957, + "rotates": false + }, + { + "id": "primitive_adze", + "fg": 3714, + "bg": 957, + "rotates": false + }, + { + "id": "primitive_axe", + "fg": 3715, + "bg": 957, + "rotates": false + }, + { + "id": "primitive_hammer", + "fg": 3716, + "bg": 957, + "rotates": false + }, + { + "id": "primitive_knife", + "fg": 3717, + "bg": 957, + "rotates": false + }, + { + "id": "radio_car", + "fg": 3722, + "bg": 957, + "rotates": false + }, + { + "id": "radio_car_on", + "fg": 3723, + "bg": 957, + "rotates": false + }, + { + "id": "radiocontrol", + "fg": 3721, + "bg": 957, + "rotates": false + }, + { + "id": "ref_lighter_on", + "fg": 3728, + "bg": 957, + "rotates": false + }, + { + "id": "remotevehcontrol", + "fg": 3721, + "bg": 957, + "rotates": false + }, + { + "id": "barley", + "fg": 1087, + "bg": 957 + }, + { + "id": "acorns", + "fg": 1069, + "bg": 957 + }, + { + "id": "bfipowder", + "fg": 1091, + "bg": 957 + }, + { + "id": ["boiled_egg", "pickled_egg"], + "fg": 1100, + "bg": 957, + "rotates": false + }, + { + "id": "brioche", + "fg": 1104, + "bg": 957, + "rotates": false + }, + { + "id": "cake2", + "fg": 1112, + "bg": 957, + "rotates": false + }, + { + "id": "cake3", + "fg": 1113, + "bg": 957, + "rotates": false + }, + { + "id": "can_tomato", + "fg": 1127, + "bg": 957, + "rotates": false + }, + { + "id": "cattail_rhizome", + "fg": 1130, + "bg": 957, + "rotates": false + }, + { + "id": "cattail_stalk", + "fg": 1131, + "bg": 957, + "rotates": false + }, + { + "id": "cheese_hard", + "fg": 1134, + "bg": 957, + "rotates": false + }, + { + "id": "coffee_raw", + "fg": 1149, + "bg": 957, + "rotates": false + }, + { + "id": "cooked_cattail_stalk", + "fg": 1154, + "bg": 957, + "rotates": false + }, + { + "id": "corndogs_cooked", + "fg": 1159, + "bg": 957, + "rotates": false + }, + { + "id": "corndogs_frozen", + "fg": 1160, + "bg": 957, + "rotates": false + }, + { + "id": "curry_powder", + "fg": 1169, + "bg": 957, + "rotates": false + }, + { + "id": "diazepam", + "fg": 1175, + "bg": 957, + "rotates": false + }, + { + "id": "dry_fish", + "fg": 1176, + "bg": 957, + "rotates": false + }, + { + "id": "dry_meat_tainted", + "fg": 1179, + "bg": 957, + "rotates": false + }, + { + "id": "dry_veggy_tainted", + "fg": 1181, + "bg": 957, + "rotates": false + }, + { + "id": "egg_bird", + "fg": 1182, + "bg": 957, + "rotates": false + }, + { + "id": "egg_reptile", + "fg": 1183, + "bg": 957, + "rotates": false + }, + { + "id": "fat", + "fg": 1185, + "bg": 957, + "rotates": false + }, + { + "id": "fat_tainted", + "fg": 1186, + "bg": 957, + "rotates": false + }, + { + "id": "fish", + "fg": 1189, + "bg": 957, + "rotates": false + }, + { + "id": "fish_smoked", + "fg": 1191, + "bg": 957, + "rotates": false + }, + { + "id": "flatbread", + "fg": 1192, + "bg": 957, + "rotates": false + }, + { + "id": "garlic", + "fg": 1199, + "bg": 957, + "rotates": false + }, + { + "id": "gummy_vitamins", + "fg": 1203, + "bg": 957, + "rotates": false + }, + { + "id": "haggis", + "fg": 1204, + "bg": 957, + "rotates": false + }, + { + "id": "atomic_lamp_off", + "fg": 1635, + "bg": 957, + "rotates": false + }, + { + "id": ["atomic_lamp", "cddaxp_ialamp"], + "fg": 1634, + "bg": 957, + "rotates": false + }, + { + "id": "vp_atomic_lamp", + "fg": 1634, + "bg": 957, + "rotates": true + }, + { + "id": "atomic_light_off", + "fg": 1637, + "bg": 957, + "rotates": false + }, + { + "id": "atomic_light", + "fg": 1636, + "bg": 957, + "rotates": false + }, + { + "id": "vp_battery_car", + "fg": 2276, + "bg": 957, + "rotates": true + }, + { + "id": "vp_atomic_light", + "fg": 1636, + "bg": 957, + "rotates": true + }, + { + "id": "tanning_hide", + "fg": 3781, + "bg": 957, + "rotates": false + }, + { + "id": "tanning_pelt", + "fg": 3782, + "bg": 957, + "rotates": false + }, + { + "id": "telepad", + "fg": 3785, + "bg": 957, + "rotates": false + }, + { + "id": "teleporter", + "fg": 3786, + "bg": 957, + "rotates": false + }, + { + "id": "thermometer", + "fg": 3788, + "bg": 957, + "rotates": false + }, + { + "id": "wakizashi_inferior", + "fg": 3808, + "bg": 957, + "rotates": false + }, + { + "id": "wakizashi", + "fg": 1969, + "bg": 957, + "rotates": false + }, + { + "id": "violin_golden", + "fg": 3807, + "bg": 957, + "rotates": false + }, + { + "id": "violin", + "fg": 3806, + "bg": 957, + "rotates": false + }, + { + "id": "ukulele", + "fg": 3802, + "bg": 957, + "rotates": false + }, + { + "id": "trumpet", + "fg": 3801, + "bg": 957, + "rotates": false + }, + { + "id": "trimmer_on", + "fg": 3799, + "bg": 957, + "rotates": false + }, + { + "id": "trimmer_off", + "fg": 3798, + "bg": 957, + "rotates": false + }, + { + "id": "toolbox", + "fg": 3792, + "bg": 957, + "rotates": false + }, + { + "id": "tool_black_powder_bomb_act", + "fg": 3795, + "bg": 957, + "rotates": false + }, + { + "id": "tool_black_powder_bomb", + "fg": 3794, + "bg": 957, + "rotates": false + }, + { + "id": "dehydrator", + "fg": 3498, + "bg": 957, + "rotates": false + }, + { + "id": "diamond_broadsword", + "bg": 957, + "rotates": false + }, + { + "id": "cutlass_inferior", + "fg": 3496, + "bg": 957, + "rotates": false + }, + { + "id": "cavalry_sabre_fake", + "fg": 3496, + "bg": 957, + "rotates": false + }, + { + "id": "cutlass", + "fg": 1721, + "bg": 957, + "rotates": false + }, + { + "id": "cavalry_sabre", + "fg": 1721, + "bg": 957, + "rotates": false + }, + { + "id": "crude_picklock", + "fg": 3494, + "bg": 957, + "rotates": false + }, + { + "id": "creepy_doll", + "fg": 3491, + "bg": 957, + "rotates": false + }, + { + "id": "crackpipe", + "fg": 3490, + "bg": 957, + "rotates": false + }, + { + "id": "cow_bell", + "fg": 3489, + "bg": 957, + "rotates": false + }, + { + "id": "cot", + "fg": 3488, + "bg": 957, + "rotates": false + }, + { + "id": "cordless_drill", + "fg": 3487, + "bg": 957, + "rotates": false + }, + { + "id": "copper_knife", + "fg": 3486, + "bg": 957, + "rotates": false + }, + { + "id": "copper_ax", + "fg": 3485, + "bg": 957, + "rotates": false + }, + { + "id": "con_mix", + "fg": 3484, + "bg": 957, + "rotates": false + }, + { + "id": "combatsaw_on", + "fg": 3482, + "bg": 957, + "rotates": false + }, + { + "id": "combatsaw_off", + "fg": 3481, + "bg": 957, + "rotates": false + }, + { + "id": "coffeemaker", + "fg": 1633, + "bg": 957, + "rotates": false + }, + { + "id": "clarinet", + "fg": 3480, + "bg": 957, + "rotates": false + }, + { + "id": "circsaw_on", + "fg": 3479, + "bg": 957 + }, + { + "id": "circsaw_off", + "fg": 3479, + "bg": 957, + "rotates": false + }, + { + "id": "chisel", + "fg": 3478, + "bg": 957, + "rotates": false + }, + { + "id": "char_purifier", + "fg": 3474, + "bg": 957, + "rotates": false + }, + { + "id": "char_forge", + "fg": 3534, + "bg": 957, + "rotates": false + }, + { + "id": "canister_goo", + "fg": 3467, + "bg": 957, + "rotates": false + }, + { + "id": "candle_smoke_lit", + "fg": 3466, + "bg": 957, + "rotates": false + }, + { + "id": "candle", + "fg": 3465, + "bg": 957, + "rotates": false + }, + { + "id": "candle_lit", + "fg": 3466, + "bg": 957, + "rotates": false + }, + { + "id": "candle_smoke", + "fg": 3465, + "bg": 957, + "rotates": false + }, + { + "id": "camera_pro", + "fg": 3464, + "bg": 957, + "rotates": false + }, + { + "id": "camera", + "fg": 3463, + "bg": 957, + "rotates": false + }, + { + "id": "brick_kiln", + "fg": 3457, + "bg": 957, + "rotates": false + }, + { + "id": "brazier", + "fg": 3456, + "bg": 957, + "rotates": false + }, + { + "id": "f_brazier", + "fg": 3456, + "bg": 957, + "rotates": false + }, + { + "id": "battleaxe_inferior", + "fg": 1649, + "bg": 957, + "rotates": false + }, + { + "id": "battleaxe", + "fg": 3443, + "bg": 957, + "rotates": false + }, + { + "id": "barometer", + "fg": 3442, + "bg": 957, + "rotates": false + }, + { + "id": "banjo", + "fg": 3441, + "bg": 957, + "rotates": false + }, + { + "id": "arming_sword_inferior", + "fg": 3439, + "bg": 957, + "rotates": false + }, + { + "id": "arming_sword", + "fg": 1632, + "bg": 957, + "rotates": false + }, + { + "id": "large_stomach_sealed", + "fg": 1419, + "bg": 957, + "rotates": false + }, + { + "id": ["vp_223rack", "vp_22rack", "vp_308rack", "vp_45rack", "vp_50bmgrack", "vp_556rack", "vp_9mmrack", "vp_boltrack", "vp_diskrack", "vp_flintrack", "vp_nailrack", "vp_pebblerack", "vp_sboltrack", "vp_shardrack"], + "fg": 1421, + "rotates": true + }, + { + "id": ["metal_tank_little", "vp_tank_little"], + "fg": 1421, + "bg": 957 + }, + { + "id": "metal_tank_small", + "fg": 3943, + "bg": 957, + "rotates": false + }, + { + "id": "stomach_sealed", + "fg": 1431, + "bg": 957, + "rotates": false + }, + { + "id": "waterskin2", + "fg": 1419, + "bg": 957, + "rotates": false + }, + { + "id": "waterskin3", + "fg": 1432, + "bg": 957, + "rotates": false + }, + { + "id": ["wooden_barrel", "vp_tank_barrel"], + "fg": 1433, + "bg": 957, + "rotates": false + }, + { + "id": "bio_eye_optic", + "fg": 1017, + "bg": 957 + }, + { + "id": "acoustic_guitar", + "fg": 3822, + "bg": 957, + "rotates": false + }, + { + "id": "bagpipes", + "fg": 3824, + "bg": 957, + "rotates": false + }, + { + "id": "binoculars", + "fg": 3825, + "bg": 957, + "rotates": false + }, + { + "id": "fedora", + "fg": 3829, + "bg": 957, + "rotates": false + }, + { + "id": "game_watch", + "fg": 3831, + "bg": 957, + "rotates": false + }, + { + "id": "goggles_nv", + "fg": 3836, + "bg": 957, + "rotates": false + }, + { + "id": "goggles_nv_on", + "fg": 3837, + "bg": 957, + "rotates": false + }, + { + "id": "hairpin", + "fg": 3838, + "bg": 957, + "rotates": false + }, + { + "id": "harmonica_holder", + "fg": 3839, + "bg": 957, + "rotates": false + }, + { + "id": "long_patchwork_scarf", + "fg": 3842, + "bg": 957, + "rotates": false + }, + { + "id": "long_patchwork_scarf_loose", + "fg": 3842, + "bg": 957, + "rotates": false + }, + { + "id": "rad_monitor", + "fg": 3895, + "bg": 957, + "rotates": false + }, + { + "id": "saxophone", + "fg": 3901, + "bg": 957, + "rotates": false + }, + { + "id": "survivor_light", + "fg": 3908, + "bg": 957, + "rotates": false + }, + { + "id": "survivor_light_on", + "fg": 3909, + "bg": 957, + "rotates": false + }, + { + "id": "wearable_light", + "fg": 3913, + "bg": 957, + "rotates": false + }, + { + "id": "wear_solar_flashlight", + "fg": 3913, + "bg": 957, + "rotates": false + }, + { + "id": "wearable_light_on", + "fg": 3914, + "bg": 957, + "rotates": false + }, + { + "id": "wear_solar_flashlight_on", + "fg": 3914, + "bg": 957, + "rotates": false + }, + { + "id": "tuba", + "fg": 3912, + "bg": 957, + "rotates": false + }, + { + "id": "whistle", + "fg": 3915, + "bg": 957, + "rotates": false + }, + { + "id": "cured_pelt", + "fg": 1720, + "bg": 957, + "rotates": false + }, + { + "id": "etched_skull", + "fg": 3510, + "bg": 957, + "rotates": false + }, + { + "id": "EMPbomb_act", + "fg": 3508, + "bg": 957, + "rotates": false + }, + { + "id": "EMPbomb", + "fg": 3507, + "bg": 957, + "rotates": false + }, + { + "id": "electrohack", + "fg": 3504, + "bg": 957, + "rotates": false + }, + + { + "id": "elec_jackhammer", + "fg": 3579, + "bg": 957 + }, + { + "id": "overlay_wielded_elec_jackhammer", + "fg": 4379, + "bg": 0 + }, + { + "id": "jackhammer", + "fg": 4380, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_jackhammer", + "fg": 4381, + "bg": 957, + "rotates": false + }, + { + "id": "elec_hairtrimmer", + "fg": 3505, + "bg": 957, + "rotates": false + }, + { + "id": "dynamite_act", + "fg": 3502, + "bg": 957, + "rotates": false + }, + { + "id": "dynamite", + "fg": 3501, + "bg": 957, + "rotates": false + }, + { + "id": "dogfood", + "fg": 3499, + "bg": 957, + "rotates": false + }, + { + "id": "diamond_zweihander", + "bg": 957, + "rotates": false + }, + { + "id": "crowbar", + "fg": 3492, + "bg": 957, + "rotates": false + }, + { + "id": "fire_drill", + "fg": 3523, + "bg": 957, + "rotates": false + }, + { + "id": "fire_drill_large", + "fg": 3523, + "bg": 957, + "rotates": false + }, + { + "id": "heavy_flashlight", + "fg": 3566, + "bg": 957, + "rotates": false + }, + { + "id": "heavy_flashlight_on", + "fg": 3567, + "bg": 957, + "rotates": false + }, + { + "id": "solar_flashlight", + "fg": 3566, + "bg": 957, + "rotates": false + }, + { + "id": "solar_flashlight_on", + "fg": 3567, + "bg": 957, + "rotates": false + }, + { + "id": "grenade_inc_act", + "fg": 3554, + "bg": 957, + "rotates": false + }, + { + "id": "grenade_inc", + "fg": 3553, + "bg": 957, + "rotates": false + }, + { + "id": "gasbomb_makeshift_act", + "fg": 3538, + "bg": 957, + "rotates": false + }, + { + "id": "gasbomb_makeshift", + "fg": 3537, + "bg": 957, + "rotates": false + }, + { + "id": "flute", + "fg": 3531, + "bg": 957, + "rotates": false + }, + { + "id": "fishing_rod_professional", + "fg": 3525, + "bg": 957, + "rotates": false + }, + { + "id": "fishing_rod_basic", + "fg": 3524, + "bg": 957, + "rotates": false + }, + { + "id": "glass_macuahuitl", + "fg": 1749, + "bg": 957, + "rotates": false + }, + { + "id": "iceaxe", + "fg": 3575, + "bg": 957, + "rotates": false + }, + { + "id": "hygrometer", + "fg": 3574, + "bg": 957, + "rotates": false + }, + { + "id": "jian", + "fg": 1774, + "bg": 957, + "rotates": false + }, + { + "id": "jian_inferior", + "fg": 3581, + "bg": 957, + "rotates": false + }, + { + "id": ["jumper_cable", "vp_jumper_cable", "vp_jumper_cable_debug", "vp_jumper_cable_heavy"], + "fg": 3582, + "bg": 957, + "rotates": false + }, + { + "id": "jumper_cable_debug", + "fg": 3582, + "bg": 957 + }, + { + "id": "jumper_cable_heavy", + "fg": 3582, + "bg": 957 + }, + { + "id": "knife_hunting", + "fg": 3588, + "bg": 957, + "rotates": false + }, + { + "id": "knife_rambo", + "fg": 3589, + "bg": 957, + "rotates": false + }, + { + "id": "makeshift_pistol_bayonet", + "fg": 3591, + "bg": 957, + "rotates": false + }, + { + "id": "makeshift_sword_bayonet", + "fg": 3591, + "bg": 957, + "rotates": false + }, + { + "id": "knife_swissarmy", + "fg": 3592, + "bg": 957, + "rotates": false + }, + { + "id": "kukri", + "fg": 3594, + "bg": 957, + "rotates": false + }, + { + "id": "hickory_nut_unshelled", + "fg": 1211, + "bg": 957, + "rotates": false + }, + { + "id": "hickory_nut_roasted", + "fg": 1210, + "bg": 957, + "rotates": false + }, + { + "id": "hotdogs_cooked", + "fg": 1217, + "bg": 957, + "rotates": false + }, + { + "id": "hotdogs_frozen", + "fg": 1218, + "bg": 957, + "rotates": false + }, + { + "id": "hstomach", + "fg": 1219, + "bg": 957, + "rotates": false + }, + { + "id": "hstomach_boiled", + "fg": 1220, + "bg": 957, + "rotates": false + }, + { + "id": "hstomach_large", + "fg": 1220, + "bg": 957, + "rotates": false + }, + { + "id": "human_haggis", + "fg": 1204, + "bg": 957, + "rotates": false + }, + { + "id": "jihelucake", + "fg": 1113, + "bg": 957, + "rotates": false + }, + { + "id": "jerky_human", + "fg": 1242, + "bg": 957, + "rotates": false + }, + { + "id": "jerky", + "fg": 1242, + "bg": 957, + "rotates": false + }, + { + "id": "l-stick", + "fg": 3595, + "bg": 957, + "rotates": false + }, + { + "id": "l-stick_on", + "fg": 3596, + "bg": 957, + "rotates": false + }, + { + "id": "magnifying_glass", + "fg": 3608, + "bg": 957, + "rotates": false + }, + { + "id": "makeshift_hammer", + "fg": 3612, + "bg": 957, + "rotates": false + }, + { + "id": "mess_kit", + "fg": 3618, + "bg": 957, + "rotates": false + }, + { + "id": "metal_funnel", + "fg": 3619, + "bg": 957, + "rotates": false + }, + { + "id": "mil_mess_kit", + "fg": 3620, + "bg": 957, + "rotates": false + }, + { + "id": "misc_repairkit", + "fg": 3624, + "bg": 957, + "rotates": false + }, + { + "id": "multi_cooker", + "fg": 3631, + "bg": 957, + "rotates": false + }, + { + "id": "jar_sauerkraut_pickled", + "fg": 1771, + "bg": 957, + "rotates": false + }, + { + "id": "milk_powder", + "fg": 1091, + "bg": 957 + }, + { + "id": "morphine", + "fg": 1266, + "bg": 957, + "rotates": false + }, + { + "id": "paper", + "fg": 1289, + "bg": 957 + }, + { + "id": "pine_nuts", + "fg": 1295, + "bg": 957, + "rotates": false + }, + { + "id": "potato_irradiated", + "fg": 1303, + "bg": 957 + }, + { + "id": "pumpkin", + "fg": 1307, + "bg": 957, + "rotates": false + }, + { + "id": "raw_fur", + "fg": 1312, + "bg": 957, + "rotates": false + }, + { + "id": "raw_hleather", + "fg": 1313, + "bg": 957, + "rotates": false + }, + { + "id": "raw_leather", + "fg": 1313, + "bg": 957, + "rotates": false + }, + { + "id": "raw_tainted_fur", + "fg": 1312, + "bg": 957, + "rotates": false + }, + { + "id": "raw_tainted_leather", + "fg": 1313, + "bg": 957, + "rotates": false + }, + { + "id": "sauerkraut", + "fg": 1324, + "bg": 957, + "rotates": false + }, + { + "id": "sauerkraut_onions", + "fg": 1324, + "bg": 957, + "rotates": false + }, + { + "id": "seed_cabbage", + "fg": 1329, + "bg": 957, + "rotates": false + }, + { + "id": "seed_lettuce", + "fg": 1334, + "bg": 957, + "rotates": false + }, + { + "id": "small_hstomach_boiled", + "fg": 1219, + "bg": 957, + "rotates": false + }, + { + "id": "small_stomach_boiled", + "fg": 1219, + "bg": 957, + "rotates": false + }, + { + "id": "spaghetti_raw", + "fg": 1348, + "bg": 957, + "rotates": false + }, + { + "id": "stomach", + "fg": 1219, + "bg": 957, + "rotates": false + }, + { + "id": "stomach_large", + "fg": 1220, + "bg": 957, + "rotates": false + }, + { + "id": "stomach_boiled", + "fg": 1220, + "bg": 957, + "rotates": false + }, + { + "id": ["sugar_beet", "seed_sugar_beet_raw"], + "fg": 1353, + "bg": 957, + "rotates": false + }, + { + "id": "sushi_fishroll", + "fg": 1354, + "bg": 957, + "rotates": false + }, + { + "id": "sushi_meatroll", + "fg": 1354, + "bg": 957, + "rotates": false + }, + { + "id": "sushi_veggyroll", + "fg": 1354, + "bg": 957, + "rotates": false + }, + { + "id": "tea_raw", + "fg": 1359, + "bg": 957, + "rotates": false + }, + { + "id": "noise_emitter", + "fg": 3635, + "bg": 957, + "rotates": false + }, + { + "id": "noise_emitter_on", + "fg": 3636, + "bg": 957, + "rotates": false + }, + { + "id": "oxy_torch", + "fg": 3698, + "bg": 957, + "rotates": false + }, + { + "id": "oxygen_tank", + "fg": 3697, + "bg": 957, + "rotates": false + }, + { + "id": "paint_brush", + "fg": 3699, + "bg": 957, + "rotates": false + }, + { + "id": "pda", + "bg": 957, + "rotates": false + }, + { + "id": "mil_surp_pack_3", + "fg": 3701, + "bg": 957, + "rotates": false + }, + { + "id": "mil_surp_pack_2", + "fg": 3701, + "bg": 957, + "rotates": false + }, + { + "id": "mil_surp_pack_1", + "fg": 3701, + "bg": 957, + "rotates": false + }, + { + "id": "pet_carrier", + "fg": 3701, + "bg": 957, + "rotates": false + }, + { + "id": "pipe_tobacco", + "fg": 3707, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_pipe_tobacco", + "fg": 4243, + "rotates": false + }, + { + "id": "sauerkraut_ferment", + "fg": 1771, + "bg": 957, + "rotates": false + }, + { + "id": "lighter", + "fg": 3602, + "bg": 957, + "rotates": false + }, + { + "id": "wearable_lighter", + "fg": 3602, + "bg": 957, + "rotates": false + }, + { + "id": "seed_corn", + "fg": 1334, + "bg": 957, + "rotates": false + }, + { + "id": "spiral_stone", + "fg": 1936, + "bg": 957, + "rotates": false + }, + { + "id": "shelter_kit", + "fg": 3746, + "bg": 957, + "rotates": false + }, + { + "id": "smoxygen_tank", + "fg": 3756, + "bg": 957, + "rotates": false + }, + { + "id": "oxygen", + "fg": 3756, + "bg": 957, + "rotates": false + }, + { + "id": "tobacco", + "fg": 1362, + "bg": 957, + "rotates": false + }, + { + "id": "vortex_stone", + "fg": 1936, + "bg": 957, + "rotates": false + }, + { + "id": "towel_wet", + "fg": 3911, + "bg": 957, + "rotates": false + }, + { + "id": "ichaival_replica", + "fg": 2037, + "bg": 957, + "rotates": false + }, + { + "id": "esbit_stove", + "fg": 3509, + "bg": 957, + "rotates": false + }, + { + "id": "flint_steel", + "fg": 3530, + "bg": 957, + "rotates": false + }, + { + "id": "hand_axe", + "fg": 3561, + "bg": 957, + "rotates": false + }, + { + "id": ["hobo_stove", "can_forge"], + "fg": 3569, + "bg": 957, + "rotates": false + }, + { + "id": "makeshift_axe", + "fg": 3609, + "bg": 957, + "rotates": false + }, + { + "id": "makeshift_shovel", + "fg": 3614, + "bg": 957, + "rotates": false + }, + { + "id": "milk_curdling", + "fg": 1431, + "bg": 957, + "rotates": false + }, + { + "id": "mortar_pestle", + "fg": 3628, + "bg": 957, + "rotates": false + }, + { + "id": "tinderbox", + "fg": 3789, + "bg": 957, + "rotates": false + }, + { + "id": "whistle_multitool", + "fg": 3813, + "bg": 957, + "rotates": false + }, + { + "id": ["tinderbox_on", "ebook_scanner"], + "fg": 3790, + "bg": 957, + "rotates": false + }, + { + "id": "hotdogs_campfire", + "fg": 1216, + "bg": 957, + "rotates": false + }, + { + "id": "resin_cord", + "fg": 1317, + "bg": 957, + "rotates": false + }, + { + "id": "bottle_folding", + "fg": 1389, + "bg": 957, + "rotates": false + }, + { + "id": "bottle_metal", + "fg": 1391, + "bg": 957, + "rotates": false + }, + { + "id": "canteen_wood", + "fg": 1400, + "bg": 957, + "rotates": false + }, + { + "id": "mess_tin", + "fg": 1801, + "bg": 957, + "rotates": false + }, + { + "id": "pot_makeshift", + "fg": 1891, + "bg": 957, + "rotates": false + }, + { + "id": "pot_makeshift_copper", + "fg": 1892, + "bg": 957, + "rotates": false + }, + { + "id": "spear_stone", + "fg": 1932, + "bg": 957, + "rotates": false + }, + { + "id": "hand_paddles", + "fg": 1759, + "bg": 957, + "rotates": false + }, + { + "id": "hand_pump", + "fg": 3563, + "bg": 957, + "rotates": false + }, + { + "id": "badge_cybercop", + "fg": 1918, + "bg": 957 + }, + { + "id": "fchicken", + "fg": 1187, + "bg": 957 + }, + { + "id": "101_carpentry", + "fg": 1018, + "bg": 959, + "rotates": false + }, + { + "id": "atomic_survival", + "fg": 1020, + "bg": 959, + "rotates": false + }, + { + "id": "book_archery", + "fg": 1022, + "bg": 959, + "rotates": false + }, + { + "id": "encyclopedia_archery", + "fg": 1022, + "bg": 959, + "rotates": false + }, + { + "id": "book_icef", + "fg": 1024, + "bg": 959, + "rotates": false + }, + { + "id": "carpentry_book", + "fg": 1018, + "bg": 959, + "rotates": false + }, + { + "id": "child_book", + "fg": 1028, + "bg": 959, + "rotates": false + }, + { + "id": "computer_science", + "fg": 1029, + "bg": 959, + "rotates": false + }, + { + "id": "cookbook", + "fg": 1030, + "bg": 959, + "rotates": false + }, + { + "id": "encyclopedia_cooking", + "fg": 1030, + "bg": 959, + "rotates": false + }, + { + "id": ["fairy_tales", "manual_dodge_kid"], + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "glassblowing_book", + "fg": 1034, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_bible1", + "fg": 1035, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_bible2", + "fg": 1036, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_granth", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_hadith", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_kallisti", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_kojiki", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_havamal", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_mormon", + "fg": 1038, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_pastafarian", + "fg": 1039, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_quran", + "fg": 1040, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_scientology", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_slack", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_sutras", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_talmud", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_tanakh", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_tripitaka", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_upanishads", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_vedas", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "SICP", + "fg": 1029, + "bg": 959, + "rotates": false + }, + { + "id": "story_book", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "encyclopedia_barter", + "fg": 1033, + "bg": 959, + "rotates": false + }, + { + "id": "textbook_armeast", + "fg": 1057, + "bg": 959, + "rotates": false + }, + { + "id": "textbook_armwest", + "fg": 1057, + "bg": 959, + "rotates": false + }, + { + "id": "textbook_carpentry", + "fg": 1018, + "bg": 959, + "rotates": false + }, + { + "id": "textbook_fireman", + "fg": 1059, + "bg": 959 + }, + { + "id": "textbook_gaswarfare", + "fg": 1060, + "bg": 959, + "rotates": false + }, + { + "id": "textbook_mechanics", + "fg": 1062, + "bg": 959, + "rotates": false + }, + { + "id": "encyclopedia_mechanics", + "fg": 1062, + "bg": 959, + "rotates": false + }, + { + "id": "textbook_weapeast", + "fg": 1065, + "bg": 959, + "rotates": false + }, + { + "id": "textbook_armschina", + "fg": 1065, + "bg": 959, + "rotates": false + }, + { + "id": "encyclopedia_gun", + "fg": 1065, + "bg": 959, + "rotates": false + }, + { + "id": "textbook_weapwest", + "fg": 1065, + "bg": 959, + "rotates": false + }, + { + "id": "book_asgard", + "fg": 1065, + "bg": 959, + "rotates": false + }, + { + "id": "holybook_bible3", + "fg": 1037, + "bg": 959, + "rotates": false + }, + { + "id": "book_syncretism", + "fg": 1037, + "bg": 959, + "rotates": false + }, + { + "id": "brewing_cookbook", + "fg": 1030, + "bg": 959 + }, + { + "id": "decoy_anarch", + "fg": 1031, + "bg": 959 + }, + { + "id": "philosophy_book", + "fg": 1052, + "bg": 959, + "rotates": false + }, + { + "id": "encyclopedia_unarmed", + "fg": 1052, + "bg": 959, + "rotates": false + }, + { + "id": "scots_cookbook", + "fg": 1030, + "bg": 959, + "rotates": false + }, + { + "id": "book_scrollcraft", + "fg": 1026, + "bg": 959, + "rotates": false + }, + { + "id": "abdul_necro", + "fg": 1019, + "bg": 959, + "rotates": true + }, + { + "id": "adv_chemistry", + "fg": 1030, + "bg": 960, + "rotates": false + }, + { + "id": "emergency_book", + "fg": 1032, + "bg": 960, + "rotates": false + }, + { + "id": "radio_book", + "fg": 1055, + "bg": 960, + "rotates": false + }, + { + "id": "survival_book", + "fg": 1020, + "bg": 960, + "rotates": false + }, + { + "id": "tailor_portfolio", + "fg": 1056, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_business", + "fg": 1058, + "bg": 960, + "rotates": false + }, + { + "id": ["textbook_chemistry", "textbook_atomic"], + "fg": 1030, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_biodiesel", + "fg": 1030, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_computer", + "fg": 1029, + "bg": 960, + "rotates": false + }, + { + "id": "encyclopedia_computer", + "fg": 1029, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_electronics", + "fg": 1055, + "bg": 960, + "rotates": false + }, + { + "id": "encyclopedia_electronics", + "fg": 1055, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_fabrication", + "fg": 1032, + "bg": 960, + "rotates": false + }, + { + "id": "encyclopedia_fabrication", + "fg": 1032, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_firstaid", + "fg": 1032, + "bg": 960, + "rotates": false + }, + { + "id": "encyclopedia_firstaid", + "fg": 1032, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_robots", + "fg": 1055, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_speech", + "fg": 1063, + "bg": 960, + "rotates": false + }, + { + "id": "encyclopedia_speech", + "fg": 1063, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_survival", + "fg": 1020, + "bg": 960, + "rotates": false + }, + { + "id": "encyclopedia_survival", + "fg": 1020, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_tailor", + "fg": 1056, + "bg": 960, + "rotates": false + }, + { + "id": "encyclopedia_tailor", + "fg": 1056, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_traps", + "fg": 1064, + "bg": 960, + "rotates": false + }, + { + "id": "encyclopedia_traps", + "fg": 1064, + "bg": 960, + "rotates": false + }, + { + "id": "trappers_companion", + "fg": 1064, + "bg": 960, + "rotates": false + }, + { + "id": "welding_book", + "fg": 1034, + "bg": 960, + "rotates": false + }, + { + "id": "textbook_launcher", + "fg": 1061, + "bg": 960, + "rotates": false + }, + { + "id": "encyclopedia_launcher", + "fg": 1061, + "bg": 960, + "rotates": false + }, + { + "id": "book_potioncraft", + "fg": 1060, + "bg": 961, + "rotates": false + }, + { + "id": "advanced_electronics", + "fg": 1055, + "bg": 961, + "rotates": false + }, + { + "id": "cookbook_italian", + "fg": 1030, + "bg": 961, + "rotates": false + }, + { + "id": "guidebook", + "fg": 1021, + "bg": 961, + "rotates": false + }, + { + "id": "novel_adventure", + "fg": 1033, + "bg": 961, + "rotates": false + }, + { + "id": "novel_buddy", + "fg": 1028, + "bg": 961, + "rotates": false + }, + { + "id": "novel_coa", + "fg": 1033, + "bg": 961, + "rotates": false + }, + { + "id": "novel_coa2", + "fg": 1033, + "bg": 961, + "rotates": false + }, + { + "id": "novel_crime", + "fg": 1051, + "bg": 961, + "rotates": false + }, + { + "id": "novel_crime2", + "fg": 1051, + "bg": 961, + "rotates": false + }, + { + "id": "novel_drama", + "fg": 1033, + "bg": 961, + "rotates": false + }, + { + "id": "novel_erotic", + "fg": 1051, + "bg": 961, + "rotates": false + }, + { + "id": "novel_experimental", + "fg": 1052, + "bg": 961, + "rotates": false + }, + { + "id": "novel_fantasy", + "fg": 1033, + "bg": 961, + "rotates": false + }, + { + "id": "novel_horror", + "fg": 1033, + "bg": 961, + "rotates": false + }, + { + "id": "novel_mystery", + "fg": 1052, + "bg": 961, + "rotates": false + }, + { + "id": "novel_pulp", + "fg": 1052, + "bg": 961, + "rotates": false + }, + { + "id": "novel_road", + "fg": 1028, + "bg": 961, + "rotates": false + }, + { + "id": "novel_romance", + "fg": 1051, + "bg": 961, + "rotates": false + }, + { + "id": "novel_samurai", + "fg": 1033, + "bg": 961, + "rotates": false + }, + { + "id": "novel_satire", + "fg": 1052, + "bg": 961, + "rotates": false + }, + { + "id": "novel_scifi", + "fg": 1052, + "bg": 961, + "rotates": false + }, + { + "id": "novel_sports", + "fg": 1051, + "bg": 961, + "rotates": false + }, + { + "id": "novel_spy", + "fg": 1052, + "bg": 961, + "rotates": false + }, + { + "id": "novel_swash", + "fg": 1028, + "bg": 961, + "rotates": false + }, + { + "id": "novel_thriller", + "fg": 1033, + "bg": 961, + "rotates": false + }, + { + "id": "novel_tragedy", + "fg": 1051, + "bg": 961, + "rotates": false + }, + { + "id": "novel_war", + "fg": 1052, + "bg": 961, + "rotates": false + }, + { + "id": "novel_war2", + "fg": 1052, + "bg": 961, + "rotates": false + }, + { + "id": "novel_western", + "fg": 1051, + "bg": 961, + "rotates": false + }, + { + "id": "priest_diary", + "fg": 1054, + "bg": 961, + "rotates": false + }, + { + "id": "record_accounting", + "fg": 1021, + "bg": 961, + "rotates": false + }, + { + "id": "record_patient", + "fg": 1021, + "bg": 961, + "rotates": false + }, + { + "id": "record_weather", + "fg": 1021, + "bg": 961, + "rotates": false + }, + { + "id": "ZSG", + "fg": 1066, + "bg": 961, + "rotates": false + }, + { + "id": "cookbook_sushi", + "fg": 1030, + "bg": 961 + }, + { + "id": "photo_album", + "fg": 1053, + "bg": 961, + "rotates": false + }, + { + "id": "book_hexenhammer", + "fg": 1023, + "bg": 961, + "rotates": false + }, + { + "id": "book_sacrifice", + "fg": 1025, + "bg": 961, + "rotates": false + }, + { + "id": "book_bloodmagic", + "fg": 1019, + "bg": 961, + "rotates": false + }, + { + "id": "book_summoning", + "fg": 1027, + "bg": 961, + "rotates": false + }, + { + "id": "cookbook_human", + "fg": 1030, + "bg": 962, + "rotates": false + }, + { + "id": "essay_book", + "fg": 1021, + "bg": 962, + "rotates": false + }, + { + "id": "family_cookbook", + "fg": 1030, + "bg": 962, + "rotates": false + }, + { + "id": "howto_computer", + "fg": 1029, + "bg": 962, + "rotates": false + }, + { + "id": "howto_traps", + "fg": 1064, + "bg": 962, + "rotates": false + }, + { + "id": "manual_aikido", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_archery", + "fg": 1022, + "bg": 962, + "rotates": false + }, + { + "id": "manual_bashing", + "fg": 1041, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_bashing", + "fg": 1041, + "bg": 962, + "rotates": false + }, + { + "id": "manual_brawl", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_pankration", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_business", + "fg": 1058, + "bg": 962, + "rotates": false + }, + { + "id": "manual_capoeira", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_carpentry", + "fg": 1018, + "bg": 962, + "rotates": false + }, + { + "id": "manual_centipede", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_computers", + "fg": 1029, + "bg": 962, + "rotates": false + }, + { + "id": "manual_crane", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_cutting", + "fg": 1042, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_cutting", + "fg": 1042, + "bg": 962, + "rotates": false + }, + { + "id": "manual_dodge", + "fg": 1043, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_dodge", + "fg": 1043, + "bg": 962, + "rotates": false + }, + { + "id": "manual_dragon", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_driving", + "fg": 1031, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_driving", + "fg": 1031, + "bg": 962, + "rotates": false + }, + { + "id": "manual_electronics", + "fg": 1055, + "bg": 962, + "rotates": false + }, + { + "id": "manual_fabrication", + "fg": 1034, + "bg": 962, + "rotates": false + }, + { + "id": "manual_first_aid", + "fg": 1032, + "bg": 962, + "rotates": false + }, + { + "id": "manual_gun", + "fg": 1044, + "bg": 962, + "rotates": false + }, + { + "id": "manual_judo", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_karate", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_knives", + "fg": 1059, + "bg": 962, + "rotates": false + }, + { + "id": "manual_krav_maga", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_launcher", + "fg": 1061, + "bg": 962, + "rotates": false + }, + { + "id": "manual_leopard", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_lizard", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_mechanics", + "fg": 1024, + "bg": 962, + "rotates": false + }, + { + "id": "manual_melee", + "fg": 1062, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_melee", + "fg": 1062, + "bg": 962, + "rotates": false + }, + { + "id": "manual_muay_thai", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_ninjutsu", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_pistol", + "fg": 1045, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_pistol", + "fg": 1045, + "bg": 962, + "rotates": false + }, + { + "id": "manual_rifle", + "fg": 1046, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_rifle", + "fg": 1046, + "bg": 962, + "rotates": false + }, + { + "id": "manual_scorpion", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_shotgun", + "fg": 1047, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_shotgun", + "fg": 1047, + "bg": 962, + "rotates": false + }, + { + "id": "manual_smg", + "fg": 1048, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_smg", + "fg": 1048, + "bg": 962, + "rotates": false + }, + { + "id": "manual_snake", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_speech", + "fg": 1063, + "bg": 962, + "rotates": false + }, + { + "id": "manual_stabbing", + "fg": 1059, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_stabbing", + "fg": 1059, + "bg": 962, + "rotates": false + }, + { + "id": "manual_survival", + "fg": 1020, + "bg": 962, + "rotates": false + }, + { + "id": "manual_swimming", + "fg": 1049, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_swimming", + "fg": 1049, + "bg": 962, + "rotates": false + }, + { + "id": "manual_taekwondo", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_tai_chi", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_tailor", + "fg": 1056, + "bg": 962, + "rotates": false + }, + { + "id": "manual_throw", + "fg": 1050, + "bg": 962, + "rotates": false + }, + { + "id": "encyclopedia_throw", + "fg": 1050, + "bg": 962, + "rotates": false + }, + { + "id": "manual_tiger", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_toad", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_traps", + "fg": 1064, + "bg": 962, + "rotates": false + }, + { + "id": "manual_venom_snake", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "manual_zui_quan", + "fg": 1798, + "bg": 962, + "rotates": false + }, + { + "id": "plays_book", + "fg": 1054, + "bg": 962, + "rotates": false + }, + { + "id": "jewelry_book", + "fg": 1054, + "bg": 962, + "rotates": false + }, + { + "id": "pocket_firearms", + "fg": 1045, + "bg": 962, + "rotates": false + }, + { + "id": "pocket_firstaid", + "fg": 1032, + "bg": 962, + "rotates": false + }, + { + "id": "pocket_survival", + "fg": 1020, + "bg": 962, + "rotates": false + }, + { + "id": "poetry_book", + "fg": 1033, + "bg": 962, + "rotates": false + }, + { + "id": "tall_tales", + "fg": 1052, + "bg": 962, + "rotates": false + }, + { + "id": "textbook_anarch", + "fg": 1053, + "bg": 962, + "rotates": false + }, + { + "id": "visions_solitude", + "fg": 1054, + "bg": 962, + "rotates": false + }, + { + "id": "decoy_elfa", + "fg": 1052, + "bg": 962 + }, + { + "id": "manual_boxing", + "fg": 1798, + "bg": 962 + }, + { + "id": "manual_eskrima", + "fg": 1798, + "bg": 962 + }, + { + "id": "manual_fencing", + "fg": 1059, + "bg": 962 + }, + { + "id": "manual_swordsmanship", + "fg": 1059, + "bg": 962 + }, + { + "id": "manual_silat", + "fg": 1798, + "bg": 962 + }, + { + "id": "manual_niten", + "fg": 1065, + "bg": 962 + }, + { + "id": "modern_tanner", + "fg": 1030, + "bg": 962 + }, + { + "id": "mag_fieldrepair", + "fg": 1059, + "bg": 962 + }, + { + "id": "recipe_surv", + "fg": 1021, + "bg": 962 + }, + { + "id": "fun_survival", + "fg": 1020, + "bg": 963, + "rotates": false + }, + { + "id": "mag_archery", + "fg": 1022, + "bg": 963, + "rotates": false + }, + { + "id": "mag_barter", + "fg": 1058, + "bg": 963, + "rotates": false + }, + { + "id": "mag_bashing", + "fg": 1041, + "bg": 963, + "rotates": false + }, + { + "id": "mag_beauty", + "fg": 1063, + "bg": 963, + "rotates": false + }, + { + "id": "mag_carpentry", + "fg": 1018, + "bg": 963, + "rotates": false + }, + { + "id": "mag_cars", + "fg": 1031, + "bg": 963, + "rotates": false + }, + { + "id": "mag_comic", + "fg": 1066, + "bg": 963, + "rotates": false + }, + { + "id": "mag_computer", + "fg": 1029, + "bg": 963, + "rotates": false + }, + { + "id": "mag_cooking", + "fg": 1030, + "bg": 963, + "rotates": false + }, + { + "id": "mag_cutting", + "fg": 1042, + "bg": 963, + "rotates": false + }, + { + "id": "mag_dodge", + "fg": 1043, + "bg": 963, + "rotates": false + }, + { + "id": "mag_dude", + "fg": 1051, + "bg": 963, + "rotates": false + }, + { + "id": "mag_electronics", + "fg": 1055, + "bg": 963, + "rotates": false + }, + { + "id": "mag_fabrication", + "fg": 1034, + "bg": 963, + "rotates": false + }, + { + "id": ["mag_firstaid", "booklet_firstaid"], + "fg": 1032, + "bg": 963, + "rotates": false + }, + { + "id": "booklet_firstaid", + "fg": 1032, + "bg": 0, + "rotates": false + }, + { + "id": "mag_gaming", + "fg": 1029, + "bg": 963, + "rotates": false + }, + { + "id": "mag_glam", + "fg": 1063, + "bg": 963, + "rotates": false + }, + { + "id": "mag_guns", + "fg": 1044, + "bg": 963, + "rotates": false + }, + { + "id": "mag_launcher", + "fg": 1061, + "bg": 963, + "rotates": false + }, + { + "id": "mag_mechanics", + "fg": 1024, + "bg": 963, + "rotates": false + }, + { + "id": "mag_melee", + "fg": 1062, + "bg": 963, + "rotates": false + }, + { + "id": "manual_surv", + "fg": 1062, + "bg": 963, + "rotates": false + }, + { + "id": "mag_news", + "fg": 1057, + "bg": 963, + "rotates": false + }, + { + "id": "mag_pistol", + "fg": 1045, + "bg": 963, + "rotates": false + }, + { + "id": "mag_porn", + "fg": 1051, + "bg": 963, + "rotates": false + }, + { + "id": "mag_rifle", + "fg": 1046, + "bg": 963, + "rotates": false + }, + { + "id": "mag_shotgun", + "fg": 1047, + "bg": 963, + "rotates": false + }, + { + "id": "mag_smg", + "fg": 1048, + "bg": 963, + "rotates": false + }, + { + "id": "mag_stabbing", + "fg": 1059, + "bg": 963, + "rotates": false + }, + { + "id": "mag_survival", + "fg": 1020, + "bg": 963, + "rotates": false + }, + { + "id": "mag_swimming", + "fg": 1049, + "bg": 963, + "rotates": false + }, + { + "id": "mag_tailor", + "fg": 1056, + "bg": 963, + "rotates": false + }, + { + "id": "mag_throwing", + "fg": 1050, + "bg": 963, + "rotates": false + }, + { + "id": "mag_traps", + "fg": 1064, + "bg": 963, + "rotates": false + }, + { + "id": "mag_tv", + "fg": 1063, + "bg": 963, + "rotates": false + }, + { + "id": "mag_unarmed", + "fg": 1798, + "bg": 963, + "rotates": false + }, + { + "id": "news_regional", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_alpha", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_animal", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_fauxfur", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_arrows", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_atomic_battery", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_augs", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_bows", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_bullets", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_caseless", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_chimera", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_creepy", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_elfa", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_lab_cvd", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_lab_elec", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_labchem", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_maiar", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_medicalmut", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_melee", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_mil_augs", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_mininuke_launch", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_raptor", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_serum", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "recipe_igm", + "fg": 1021, + "bg": 963 + }, + { + "id": "book_magicfordummies", + "fg": 1021, + "bg": 963, + "rotates": false + }, + { + "id": "repeater_mod_guide", + "fg": 1021, + "bg": 963 + }, + { + "id": "commune_prospectus", + "fg": 1021, + "bg": 963 + }, + { + "id": "necropolis_freq", + "fg": 1021, + "bg": 963 + }, + { + "id": "note", + "fg": 1021, + "bg": 963 + }, + { + "id": "mag_animecon", + "fg": 1053, + "bg": 963 + }, + { + "id": "phonebook", + "fg": 1054, + "bg": 964, + "rotates": false + }, + { + "id": "gloople_tank", + "fg": 1412, + "bg": 965 + }, + { + "id": "gray_tank", + "fg": 1412, + "bg": 965 + }, + { + "id": ["gray_tank", "vp_gray_tank", "vp_oozle_tank", "vp_gloople_tank"], + "fg": 1412, + "bg": 965 + }, + { + "id": "oozle_tank", + "fg": 1412, + "bg": 965 + }, + { + "id": "gloople", + "fg": 965 + }, + { + "id": "gray", + "fg": 965 + }, + { + "id": "oozle", + "fg": 965 + }, + { + "id": "f_flower_fungal", + "fg": 1514, + "bg": 966, + "rotates": false + }, + { + "id": "f_fungal_clump", + "fg": 1517, + "bg": 966, + "rotates": false + }, + { + "id": "f_fungal_mass", + "fg": 1518, + "bg": 966, + "rotates": false + }, + { + "id": "t_fungus", + "bg": 966, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4534, + "bg": 974 + }, + { + "id": "corner", + "fg": 4535, + "bg": 974 + }, + { + "id": "edge", + "fg": 4536, + "bg": 974 + }, + { + "id": "t_connection", + "fg": 4538, + "bg": 974 + }, + { + "id": "end_piece", + "fg": 4537, + "bg": 974 + }, + { + "id": "unconnected", + "fg": 4539, + "bg": 974 + } + ] + }, + { + "id": "t_fungus_season_winter", + "bg": 966, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4540, + "bg": 974 + }, + { + "id": "corner", + "fg": 4541, + "bg": 974 + }, + { + "id": "edge", + "fg": 4542, + "bg": 974 + }, + { + "id": "t_connection", + "fg": 4544, + "bg": 974 + }, + { + "id": "end_piece", + "fg": 4543, + "bg": 974 + }, + { + "id": "unconnected", + "fg": 4545, + "bg": 974 + } + ] + }, + { + "id": "t_fungus_mound", + "fg": 3059, + "bg": 966, + "rotates": false + }, + { + "id": "t_marloss", + "fg": 3118, + "bg": 966, + "rotates": false + }, + { + "id": "t_shrub_fungal", + "fg": 3244, + "bg": 4539, + "rotates": false + }, + { + "id": "t_shrub_fungal_season_winter", + "fg": 3244, + "bg": 4545, + "rotates": false + }, + { + "id": "!t_tree_fungal", + "fg": 3295, + "bg": 4539, + "rotates": false + }, + { + "id": "!t_tree_fungal_season_winter", + "fg": 3295, + "bg": 4545, + "rotates": false + }, + { + "id": "t_tree_fungal_young", + "fg": 3296, + "bg": 4539, + "rotates": false + }, + { + "id": "t_tree_fungal_young_season_winter", + "fg": 3296, + "bg": 4540, + "rotates": false + }, + { + "id": "t_marloss_tree", + "fg": 3119, + "bg": 966, + "rotates": false + }, + { + "id": "t_marloss_tree_season_winter", + "fg": 3119, + "bg": 4545, + "rotates": false + }, + { + "id": "f_mutcactus_test", + "fg": 1544, + "bg": 967, + "rotates": false + }, + { + "id": "mon_amigara_horror", + "fg": 2286, + "bg": 967, + "rotates": false + }, + { + "id": "mon_ant", + "fg": 2310, + "bg": 967, + "rotates": false + }, + { + "id": "mon_ant_fungus", + "fg": 2311, + "bg": 967, + "rotates": false + }, + { + "id": "mon_ant_larva", + "fg": 2313, + "bg": 967, + "rotates": false + }, + { + "id": "mon_ant_queen", + "fg": 2316, + "bg": 967, + "rotates": false + }, + { + "id": "mon_ant_soldier", + "fg": 2320, + "bg": 967, + "rotates": false + }, + { + "id": "mon_bat", + "fg": 2326, + "bg": 0, + "rotates": false + }, + { + "id": "mon_bear", + "fg": 2328, + "bg": 967, + "rotates": false + }, + { + "id": "mon_bee", + "fg": 2338, + "bg": 967, + "rotates": false + }, + { + "id": "mon_beekeeper", + "fg": 2339, + "bg": 967, + "rotates": false + }, + { + "id": "mon_biollante", + "fg": 2346, + "bg": 967, + "rotates": false + }, + { + "id": "mon_blank", + "fg": 2349, + "bg": 967, + "rotates": false + }, + { + "id": "mon_blob", + "fg": 2350, + "bg": 967, + "rotates": false + }, + { + "id": "mon_blood_sacrifice", + "fg": 2354, + "bg": 967, + "rotates": false + }, + { + "id": "mon_boomer", + "fg": 2356, + "bg": 967, + "rotates": false + }, + { + "id": "mon_boomer_fungus", + "fg": 2357, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_gasbag", + "fg": 2715, + "bg": 967, + "rotates": false + }, + { + "id": "mon_breather_hub", + "fg": 2361, + "bg": 967, + "rotates": false + }, + { + "id": "mon_cat", + "fg": 2355, + "bg": 967, + "rotates": false + }, + { + "id": "mon_centipede_giant", + "fg": 2369, + "bg": 967, + "rotates": false + }, + { + "id": "mon_chicken", + "fg": 2373, + "bg": 967, + "rotates": false + }, + { + "id": "mon_chickenbot", + "fg": 2374, + "bg": 967, + "rotates": false + }, + { + "id": "mon_chud", + "fg": 2376, + "bg": 967, + "rotates": false + }, + { + "id": "mon_copbot", + "fg": 2378, + "bg": 967, + "rotates": false + }, + { + "id": "mon_cougar", + "fg": 2379, + "bg": 967, + "rotates": false + }, + { + "id": "mon_cow", + "fg": 2382, + "bg": 967, + "rotates": false + }, + { + "id": "mon_coyote", + "fg": 2383, + "bg": 967, + "rotates": false + }, + { + "id": "mon_coyote_wolf", + "fg": 2385, + "bg": 967, + "rotates": false + }, + { + "id": "mon_crawler", + "fg": 2387, + "bg": 967, + "rotates": false + }, + { + "id": "mon_creeper_hub", + "fg": 2388, + "bg": 967, + "rotates": false + }, + { + "id": "mon_creeper_vine", + "fg": 2390, + "bg": 967, + "rotates": false + }, + { + "id": "mon_crow", + "fg": 2394, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dark_wyrm", + "fg": 2399, + "bg": 967, + "rotates": false + }, + { + "id": "mon_deer", + "fg": 2400, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dementia", + "fg": 2402, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dermatik", + "fg": 2403, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dog_skeleton", + "fg": 2410, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dog_thing", + "fg": 2412, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dog_zombie_cop", + "fg": 2413, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dragonfly_giant", + "fg": 2426, + "bg": 967, + "rotates": false + }, + { + "id": "mon_duck", + "fg": 2427, + "bg": 967, + "rotates": false + }, + { + "id": "mon_exploder", + "fg": 2428, + "bg": 967, + "rotates": false + }, + { + "id": "mon_eyebot", + "fg": 2429, + "bg": 967, + "rotates": false + }, + { + "id": "mon_flaming_eye", + "fg": 2455, + "bg": 967, + "rotates": false + }, + { + "id": "mon_flesh_angel", + "fg": 2457, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fly", + "fg": 2458, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fox_red", + "fg": 2463, + "bg": 967, + "rotates": false + }, + { + "id": "mon_frog_giant", + "fg": 2465, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fungal_fighter", + "fg": 2473, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fungal_wall", + "fg": 2476, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fungaloid", + "fg": 2466, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fungaloid_dormant", + "fg": 3945, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fungaloid_queen", + "fg": 2468, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fungaloid_young", + "fg": 2471, + "bg": 967, + "rotates": false + }, + { + "id": "mon_gelatin", + "fg": 2489, + "bg": 967, + "rotates": false + }, + { + "id": "mon_generator", + "fg": 2490, + "bg": 967, + "rotates": false + }, + { + "id": "mon_giant_crayfish", + "fg": 2493, + "bg": 967, + "rotates": false + }, + { + "id": "mon_gozu", + "fg": 2496, + "bg": 967, + "rotates": false + }, + { + "id": "mon_graboid", + "fg": 2497, + "bg": 967, + "rotates": false + }, + { + "id": "mon_gracke", + "fg": 2498, + "bg": 967, + "rotates": false + }, + { + "id": "mon_halfworm", + "fg": 2501, + "bg": 967, + "rotates": false + }, + { + "id": "mon_hallu_ant", + "fg": 2310, + "bg": 967, + "rotates": false + }, + { + "id": "mon_hallu_bee", + "fg": 2338, + "bg": 967, + "rotates": false + }, + { + "id": "mon_hallu_mom", + "fg": 2502, + "bg": 967, + "rotates": false + }, + { + "id": "mon_hallu_zom", + "fg": 2666, + "bg": 967, + "rotates": false + }, + { + "id": "mon_hare", + "fg": 2503, + "bg": 967, + "rotates": false + }, + { + "id": "mon_hazmatbot", + "fg": 2505, + "bg": 967, + "rotates": false + }, + { + "id": "mon_headless_dog_thing", + "fg": 2506, + "bg": 967, + "rotates": false + }, + { + "id": "mon_homunculus", + "fg": 2510, + "bg": 967, + "rotates": false + }, + { + "id": "mon_horse", + "fg": 2511, + "bg": 967, + "rotates": false + }, + { + "id": "mon_human_snail", + "fg": 2514, + "bg": 967, + "rotates": false + }, + { + "id": "mon_jabberwock", + "fg": 2523, + "bg": 967, + "rotates": false + }, + { + "id": "mon_kreck", + "fg": 2525, + "bg": 967, + "rotates": false + }, + { + "id": ["mon_laserturret", "mon_advturret_laser"], + "fg": 2526, + "bg": 967, + "rotates": false + }, + { + "id": "mon_manhack", + "fg": 2531, + "bg": 967, + "rotates": false + }, + { + "id": "mon_mi_go", + "fg": 2542, + "bg": 967, + "rotates": false + }, + { + "id": "mon_molebot", + "fg": 2545, + "bg": 967, + "rotates": false + }, + { + "id": "mon_moose", + "fg": 2547, + "bg": 967, + "rotates": false + }, + { + "id": "mon_mosquito_giant", + "fg": 2552, + "bg": 967, + "rotates": false + }, + { + "id": "mon_one_eye", + "fg": 2556, + "bg": 967, + "rotates": false + }, + { + "id": "mon_pig", + "fg": 2561, + "bg": 967, + "rotates": false + }, + { + "id": "mon_rabbit", + "fg": 2569, + "bg": 967, + "rotates": false + }, + { + "id": "mon_raccoon", + "fg": 2570, + "bg": 967, + "rotates": false + }, + { + "id": "mon_rat_king", + "fg": 2573, + "bg": 967, + "rotates": false + }, + { + "id": "mon_rattlesnake", + "fg": 2571, + "bg": 967, + "rotates": false + }, + { + "id": "mon_secubot", + "fg": 2579, + "bg": 967, + "rotates": false + }, + { + "id": "mon_sewer_fish", + "fg": 2580, + "bg": 967, + "rotates": false + }, + { + "id": "mon_sewer_rat", + "fg": 2581, + "bg": 967, + "rotates": false + }, + { + "id": "mon_sewer_snake", + "fg": 2582, + "bg": 967, + "rotates": false + }, + { + "id": "mon_sheep", + "fg": 2585, + "bg": 967, + "rotates": false + }, + { + "id": "mon_shia", + "fg": 4284, + "bg": 967, + "rotates": false + }, + { + "id": "mon_skeleton", + "fg": 2589, + "bg": 967, + "rotates": false + }, + { + "id": "mon_skitterbot", + "fg": 2593, + "bg": 967, + "rotates": false + }, + { + "id": "mon_sludge_crawler", + "fg": 2595, + "bg": 967, + "rotates": false + }, + { + "id": "mon_slug_giant", + "fg": 2598, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_jumping", + "fg": 2602, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_jumping_giant", + "fg": 2603, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_trapdoor", + "fg": 2605, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_trapdoor_giant", + "fg": 2606, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_web", + "fg": 2610, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_web_giant", + "fg": 2610, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_widow", + "fg": 2616, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_widow_giant", + "fg": 2617, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_wolf", + "fg": 2619, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_wolf_giant", + "fg": 2620, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spore", + "fg": 2624, + "bg": 967, + "rotates": false + }, + { + "id": "mon_squirrel", + "fg": 2625, + "bg": 967, + "rotates": false + }, + { + "id": "mon_squirrel_red", + "fg": 2625, + "bg": 967, + "rotates": false + }, + { + "id": "mon_tankbot", + "fg": 2627, + "bg": 967, + "rotates": false + }, + { + "id": "mon_thing", + "fg": 2629, + "bg": 967, + "rotates": false + }, + { + "id": "mon_triffid", + "fg": 2636, + "bg": 967, + "rotates": false + }, + { + "id": "mon_triffid_heart", + "fg": 2637, + "bg": 967, + "rotates": false + }, + { + "id": "mon_triffid_queen", + "fg": 2639, + "bg": 967, + "rotates": false + }, + { + "id": "mon_triffid_young", + "fg": 2640, + "bg": 967, + "rotates": false + }, + { + "id": "mon_tripod", + "fg": 2641, + "bg": 967, + "rotates": false + }, + { + "id": "mon_turkey", + "fg": 2642, + "bg": 967, + "rotates": false + }, + { + "id": ["mon_turret", "mon_turret_9mm"], + "fg": 2643, + "bg": 967, + "rotates": false + }, + { + "id": ["mon_turret_rifle", "mon_milturret_556"], + "fg": 2644, + "bg": 967, + "rotates": false + }, + { + "id": "mon_twisted_body", + "fg": 2647, + "bg": 967, + "rotates": false + }, + { + "id": "mon_vinebeast", + "fg": 2651, + "bg": 967, + "rotates": false + }, + { + "id": "mon_vortex", + "fg": 4274, + "rotates": false + }, + { + "id": "mon_wasp", + "fg": 2654, + "bg": 967, + "rotates": false + }, + { + "id": "mon_wolf", + "fg": 2657, + "bg": 967, + "rotates": false + }, + { + "id": "mon_worm", + "fg": 2658, + "bg": 967, + "rotates": false + }, + { + "id": "mon_yugg", + "fg": 2659, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombear", + "fg": 2665, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie", + "fg": [ + { "weight":3, "sprite":2666}, + { "weight":3, "sprite":2667}, + { "weight":3, "sprite":2668} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_brute", + "fg": 2681, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_child", + "fg": [ + { "weight":3, "sprite":2685}, + { "weight":3, "sprite":2686}, + { "weight":3, "sprite":2687} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_cop", + "fg": 2692, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_crawler", + "fg": 2694, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_dog", + "fg": 2701, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_electric", + "fg": 2703, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_fat", + "fg": [ + { "weight":3, "sprite":2707}, + { "weight":3, "sprite":2708}, + { "weight":3, "sprite":2709} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_fireman", + "fg": 2713, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_fungus", + "fg": 2714, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_grabber", + "fg": 2717, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_hazmat", + "fg": 2721, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_hulk", + "fg": 2724, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_hunter", + "fg": 2726, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_master", + "fg": 2730, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_necro", + "fg": 2732, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_scientist", + "fg": 2586, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_shrieker", + "fg": 2752, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_smoker", + "fg": 2754, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_soldier", + "fg": 2757, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_spitter", + "fg": 2758, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_survivor", + "fg": 2760, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_tough", + "fg": [ + { "weight":3, "sprite":2764}, + { "weight":3, "sprite":2765}, + { "weight":3, "sprite":2766} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zolf", + "fg": 2662, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_bio_op", + "fg": 2675, + "bg": 967, + "rotates": false + }, + { + "id": "npc_female", + "fg": 2964, + "bg": 967 + }, + { + "id": "npc_male", + "fg": 2965, + "bg": 967 + }, + { + "id": "player_female", + "fg": 2964, + "bg": 967 + }, + { + "id": "player_male", + "fg": 2965, + "bg": 967 + }, + { + "id": "mon_zombie_pig", + "fg": 2734, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zoose", + "fg": 2768, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zougar", + "fg": 2769, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_web_s", + "fg": 2615, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_widow_giant_s", + "fg": 2618, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_brute_shocker", + "fg": 2684, + "bg": 967, + "rotates": false + }, + { + "id": "mon_irradiated_wanderer_1", + "fg": [ + { "weight":1, "sprite":2519}, + { "weight":1, "sprite":2520}, + { "weight":1, "sprite":2521}, + { "weight":1, "sprite":2522} + ], + "bg": 967 + }, + { + "id": "mon_irradiated_wanderer_2", + "fg": [ + { "weight":1, "sprite":2519}, + { "weight":1, "sprite":2520}, + { "weight":1, "sprite":2521}, + { "weight":1, "sprite":2522} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_irradiated_wanderer_3", + "fg": [ + { "weight":1, "sprite":2519}, + { "weight":1, "sprite":2520}, + { "weight":1, "sprite":2521}, + { "weight":1, "sprite":2522} + ], + "bg": 967 + }, + { + "id": "mon_irradiated_wanderer_4", + "fg": [ + { "weight":1, "sprite":2519}, + { "weight":1, "sprite":2520}, + { "weight":1, "sprite":2521}, + { "weight":1, "sprite":2522} + ], + "bg": 967 + }, + { + "id": "mon_zombie_technician", + "fg": 2763, + "bg": 967, + "rotates": false + }, + { + "id": "mon_hare_season_winter", + "fg": 2504, + "bg": 967, + "rotates": false + }, + { + "id": "mon_riotbot", + "fg": 2576, + "bg": 967, + "rotates": false + }, + { + "id": "mon_turret_searchlight", + "fg": 2645, + "bg": 967, + "rotates": false + }, + { + "id": "mon_bear_smoky", + "fg": 2334, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_armored", + "fg": 2671, + "bg": 967, + "rotates": false + }, + { + "id": "mon_player_blob", + "fg": 2565, + "bg": 967, + "rotates": false + }, + { + "id": "mon_hallu_multicooker", + "fg": 3631, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_jackson", + "fg": 2727, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_dancer", + "fg": 2700, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_acidic", + "fg": 2669, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_acidic_pk", + "fg": 2669, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_corrosive", + "fg": 2693, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_grenadier", + "fg": 2719, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_grenadier_elite", + "fg": 2720, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_runner", + "fg": 2740, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_predator", + "fg": 2736, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_hollow", + "fg": 2722, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fungaloid_seeder", + "fg": 2469, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fungal_blossom", + "fg": 2472, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fungaloid_tower", + "fg": 2470, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fungal_hedgerow", + "fg": 2474, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fungal_tendril", + "fg": 2475, + "bg": 967, + "rotates": false + }, + { + "id": "mon_blob_brain", + "fg": 2351, + "bg": 967, + "rotates": false + }, + { + "id": "mon_darkman", + "fg": 2398, + "bg": 967, + "rotates": false + }, + { + "id": "mon_emp_hack", + "fg": 3944, + "bg": 967, + "rotates": false + }, + { + "id": "mon_gasbomb_hack", + "fg": 2487, + "bg": 967, + "rotates": false + }, + { + "id": "mon_grenade_hack", + "fg": 2500, + "bg": 967, + "rotates": false + }, + { + "id": "mon_mininuke_hack", + "fg": 2541, + "bg": 967, + "rotates": false + }, + { + "id": "mon_c4_hack", + "fg": 2364, + "bg": 967, + "rotates": false + }, + { + "id": "mon_flashbang_hack", + "fg": 2456, + "bg": 967, + "rotates": false + }, + { + "id": "mon_boomer_huge", + "fg": 2358, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_grappler", + "fg": 2718, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spirit_of_fire", + "fg": 2623, + "bg": 967, + "rotates": false + }, + { + "id": "mon_albino_penguin", + "fg": 2283, + "bg": 967, + "rotates": false + }, + { + "id": "mon_moruboru", + "fg": 2550, + "bg": 967, + "rotates": false + }, + { + "id": "mon_compsognathus", + "fg": 2377, + "bg": 967, + "rotates": false + }, + { + "id": "mon_eoraptor", + "fg": 2377, + "bg": 967, + "rotates": false + }, + { + "id": "mon_gallimimus", + "fg": 2486, + "bg": 967, + "rotates": false + }, + { + "id": "mon_titanis", + "fg": 2630, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spinosaurus", + "fg": 2622, + "bg": 967, + "rotates": false + }, + { + "id": "mon_tyrannosaurus", + "fg": 2648, + "bg": 967, + "rotates": false + }, + { + "id": "mon_triceratops", + "fg": 2635, + "bg": 967, + "rotates": false + }, + { + "id": "mon_velociraptor", + "fg": 2649, + "bg": 967, + "rotates": false + }, + { + "id": "mon_deinonychus", + "fg": 2401, + "bg": 967, + "rotates": false + }, + { + "id": "mon_utahraptor", + "fg": 2401, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dilophosaurus", + "fg": 2401, + "bg": 967, + "rotates": false + }, + { + "id": "mon_parasaurolophus", + "fg": 2559, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dimorphodon", + "fg": 2405, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_biter", + "fg": 2678, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_screecher", + "fg": 2748, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_shady", + "fg": 2749, + "bg": 0, + "rotates": false + }, + { + "id": "mon_zombie_anklebiter", + "fg": 2670, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_sproglodyte", + "fg": 2759, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_shriekling", + "fg": 2753, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_creepy", + "fg": 2698, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_snotgobbler", + "fg": 2756, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_waif", + "fg": 2767, + "bg": 967, + "rotates": false + }, + { + "id": "mon_rattlesnake_giant", + "fg": 2572, + "bg": 967, + "rotates": false + }, + { + "id": "mon_spider_cellar_giant", + "fg": 2600, + "bg": 0, + "rotates": false + }, + { + "id": "mon_spider_cellar_giant_s", + "fg": 2601, + "bg": 967, + "rotates": false + }, + { + "id": "mon_alpha_razorclaw", + "fg": 2285, + "bg": 967 + }, + { + "id": "mon_razorclaw", + "fg": 2574, + "bg": 967 + }, + { + "id": "mon_zombie_brute_ninja", + "fg": 2683, + "bg": 967 + }, + { + "id": "mon_zombie_brute_grappler", + "fg": 2682, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_child_scorched", + "fg": 2690, + "bg": 967 + }, + { + "id": "mon_zombie_fiend", + "fg": 2710, + "bg": 967 + }, + { + "id": "mon_zombie_mancroc", + "fg": 2729, + "bg": 967 + }, + { + "id": "mon_zombie_scorched", + "fg": 2743, + "bg": 967 + }, + { + "id": "", + "fg": 968, + "rotates": true + }, + { + "id": "f_tatami", + "fg": 1591, + "bg": 968, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 1592, + "bg": 968 + }, + { + "id": "edge", + "fg": 1591, + "bg": 968 + }, + { + "id": "t_connection", + "fg": 1593, + "bg": 968 + } + ] + }, + { + "id": "t_fault", + "fg": 3046, + "bg": 968, + "rotates": false + }, + { + "id": "fd_hot_air1", + "fg": 968, + "rotates": false + }, + { + "id": "fd_hot_air2", + "fg": 968, + "rotates": false + }, + { + "id": "fd_hot_air3", + "fg": 968, + "rotates": false + }, + { + "id": "fd_hot_air4", + "fg": 968, + "rotates": false + }, + { + "id": "bone_plate", + "fg": 1657, + "bg": 969 + }, + { + "id": ["alloy_sheet", "vp_sheet_superalloy"], + "fg": 969, + "rotates": false + }, + { + "id": "vp_frame_wood_vertical_2", + "fg": 970, + "rotates": true + }, + { + "id": "vp_frame_wood_light_vertical_2", + "fg": 970, + "rotates": true + }, + { + "id": "vp_folding_wooden_frame", + "fg": 970, + "rotates": true + }, + { + "id": "!fd_blood", + "bg": 971, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 971, + "bg": 972 + }, + { + "id": "corner", + "fg": 2868, + "bg": 972 + }, + { + "id": "edge", + "fg": 2869, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2883, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2870, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2884, + "bg": 972 + } + ] + }, + { + "id": "fd_blood_insect", + "fg": 2871, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2872, + "bg": 972 + }, + { + "id": "corner", + "fg": 2873, + "bg": 972 + }, + { + "id": "edge", + "fg": 2874, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2876, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2875, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2871, + "bg": 972 + } + ] + }, + { + "id": "fd_web", + "bg": 981, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 981, + "bg": 972 + }, + { + "id": "center", + "fg": 2953, + "bg": 972 + }, + { + "id": "corner", + "fg": 2954, + "bg": 972 + }, + { + "id": "edge", + "fg": 2955, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2957, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2956, + "bg": 972 + } + ] + }, + { + "id": "explosion", + "bg": 972, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 23113, + "bg": 972 + }, + { + "id": "center", + "fg": 23113, + "bg": 972 + }, + { + "id": "corner", + "fg": 23113, + "bg": 972 + }, + { + "id": "edge", + "fg": 23113, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 23113, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 23113, + "bg": 972 + } + ] + }, + { + "id": "explosion_medium", + "bg": 972, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 23156, + "bg": 972 + }, + { + "id": "center", + "fg": 23156, + "bg": 972 + }, + { + "id": "corner", + "fg": 23156, + "bg": 972 + }, + { + "id": "edge", + "fg": 23156, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 23156, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 23156, + "bg": 972 + } + ] + }, + { + "id": "explosion_weak", + "bg": 23157, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 23157, + "bg": 972 + }, + { + "id": "center", + "fg": 23157, + "bg": 972 + }, + { + "id": "corner", + "fg": 23157, + "bg": 972 + }, + { + "id": "edge", + "fg": 23157, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 23157, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 23157, + "bg": 972 + } + ] + }, + { + "id": "f_null", + "fg": 972, + "rotates": false + }, + { + "id": ["fd_acid", "chem_nitric_acid"], + "fg": 2856, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2857, + "bg": 972 + }, + { + "id": "corner", + "fg": 2858, + "bg": 972 + }, + { + "id": "edge", + "fg": 2859, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2861, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2860, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2856, + "bg": 972 + } + ] + }, + { + "id": "fd_bile", + "fg": 2862, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2863, + "bg": 972 + }, + { + "id": "corner", + "fg": 2864, + "bg": 972 + }, + { + "id": "edge", + "fg": 2865, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2867, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2866, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2862, + "bg": 972 + } + ] + }, + { + "id": "fd_plasma", + "fg": 2938, + "bg": 972, + "rotates": false + }, + { + "id": ["fd_smoke", "fd_smoke_vent"], + "fg": 2945, + "bg": 972, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2946, + "bg": 972 + }, + { + "id": "corner", + "fg": 2947, + "bg": 972 + }, + { + "id": "edge", + "fg": 2948, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2950, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2949, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2951, + "bg": 972 + } + ] + }, + { + "id": "fungal_haze", + "fg": 2945, + "bg": 972, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2946, + "bg": 972 + }, + { + "id": "corner", + "fg": 2947, + "bg": 972 + }, + { + "id": "edge", + "fg": 2948, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2950, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2949, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2951, + "bg": 972 + } + ] + }, + { + "id": "footstep", + "fg": 2958, + "bg": 972, + "rotates": false + }, + { + "id": ["t_null", "t_sliding_wall_o"], + "fg": 972, + "rotates": false + }, + { + "id": "fd_blood_veggy", + "fg": 2885, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2886, + "bg": 972 + }, + { + "id": "corner", + "fg": 2887, + "bg": 972 + }, + { + "id": "edge", + "fg": 2888, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2890, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2889, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2885, + "bg": 972 + } + ] + }, + { + "id": "fd_blood_invertebrate", + "fg": 2877, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2878, + "bg": 972 + }, + { + "id": "corner", + "fg": 2879, + "bg": 972 + }, + { + "id": "edge", + "fg": 2880, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2882, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2881, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2877, + "bg": 972 + } + ] + }, + { + "id": "fd_gibs_invertebrate", + "fg": 2924, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2925, + "bg": 972 + }, + { + "id": "corner", + "fg": 2926, + "bg": 972 + }, + { + "id": "edge", + "fg": 2927, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2929, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2928, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2924, + "bg": 972 + } + ] + }, + { + "id": "fd_gibs_insect", + "fg": 2918, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2919, + "bg": 972 + }, + { + "id": "corner", + "fg": 2920, + "bg": 972 + }, + { + "id": "edge", + "fg": 2921, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2923, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2922, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2918, + "bg": 972 + } + ] + }, + { + "id": "fd_incendiary", + "fg": 2931, + "bg": 972, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2932, + "bg": 972 + }, + { + "id": "corner", + "fg": 2933, + "bg": 972 + }, + { + "id": "edge", + "fg": 2934, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2936, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2935, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2937, + "bg": 972 + } + ] + }, + { + "id": "fd_cigsmoke", + "fg": 2945, + "bg": 972, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2891, + "bg": 972 + }, + { + "id": "corner", + "fg": 2892, + "bg": 972 + }, + { + "id": "edge", + "fg": 2893, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2895, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2894, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2896, + "bg": 972 + } + ] + }, + { + "id": "fd_weedsmoke", + "fg": 2945, + "bg": 972, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2946, + "bg": 972 + }, + { + "id": "corner", + "fg": 2947, + "bg": 972 + }, + { + "id": "edge", + "fg": 2948, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2950, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2949, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2951, + "bg": 972 + } + ] + }, + { + "id": "fd_cracksmoke", + "fg": 2945, + "bg": 972, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2891, + "bg": 972 + }, + { + "id": "corner", + "fg": 2892, + "bg": 972 + }, + { + "id": "edge", + "fg": 2893, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2895, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2894, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2896, + "bg": 972 + } + ] + }, + { + "id": "fd_methsmoke", + "fg": 2945, + "bg": 972, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2891, + "bg": 972 + }, + { + "id": "corner", + "fg": 2892, + "bg": 972 + }, + { + "id": "edge", + "fg": 2893, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2895, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2894, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2896, + "bg": 972 + } + ] + }, + { + "id": "fd_relax_gas", + "fg": 2945, + "bg": 972, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2939 + }, + { + "id": "corner", + "fg": 2940 + }, + { + "id": "edge", + "fg": 2941 + }, + { + "id": "end_piece", + "fg": 2942 + }, + { + "id": "t_connection", + "fg": 2943 + }, + { + "id": "unconnected", + "fg": 2944 + } + ] + }, + { + "id": "fd_fire", + "bg": 973, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2905, + "bg": 974 + }, + { + "id": "corner", + "fg": 2906, + "bg": 974 + }, + { + "id": "edge", + "fg": 2907, + "bg": 974 + }, + { + "id": "t_connection", + "fg": 2909, + "bg": 974 + }, + { + "id": "end_piece", + "fg": 2908, + "bg": 974 + }, + { + "id": "unconnected", + "fg": 2910, + "bg": 974 + } + ] + }, + { + "id": "fd_fire_vent", + "bg": 973, + "rotates": false + }, + { + "id": "fd_flame_burst", + "bg": 975, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2911, + "bg": 974 + }, + { + "id": "corner", + "fg": 2912, + "bg": 974 + }, + { + "id": "edge", + "fg": 2913, + "bg": 974 + }, + { + "id": "t_connection", + "fg": 2915, + "bg": 974 + }, + { + "id": "end_piece", + "fg": 2914, + "bg": 974 + }, + { + "id": "unconnected", + "fg": 2916, + "bg": 974 + } + ] + }, + { + "id": "fd_fungal_haze", + "bg": 4407, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4528, + "bg": 974 + }, + { + "id": "corner", + "fg": 4529, + "bg": 974 + }, + { + "id": "edge", + "fg": 4530, + "bg": 974 + }, + { + "id": "t_connection", + "fg": 4532, + "bg": 974 + }, + { + "id": "end_piece", + "fg": 4531, + "bg": 974 + }, + { + "id": "unconnected", + "fg": 4533, + "bg": 974 + } + ] + }, + { + "id": "fd_gas_vent", + "bg": 977 + }, + { + "id": "fd_nuke_gas", + "fg": 977, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4407, + "bg": 974 + }, + { + "id": "corner", + "fg": 4408, + "bg": 974 + }, + { + "id": "edge", + "fg": 4409, + "bg": 974 + }, + { + "id": "t_connection", + "fg": 4411, + "bg": 974 + }, + { + "id": "end_piece", + "fg": 4410, + "bg": 974 + }, + { + "id": "unconnected", + "fg": 4412, + "bg": 974 + } + ] + }, + { + "id": "fd_toxic_gas", + "bg": 977, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4401, + "bg": 974 + }, + { + "id": "corner", + "fg": 4402, + "bg": 974 + }, + { + "id": "edge", + "fg": 4403, + "bg": 974 + }, + { + "id": "t_connection", + "fg": 4405, + "bg": 974 + }, + { + "id": "end_piece", + "fg": 4404, + "bg": 974 + }, + { + "id": "unconnected", + "fg": 4406, + "bg": 974 + } + ] + }, + { + "id": ["fd_laser", "hell_laser", "hell_laser_queen"], + "bg": 978 + }, + { + "id": "fd_rubble", + "bg": 979, + "rotates": false + }, + { + "id": "fd_sap", + "bg": 980, + "rotates": false + }, + { + "id": "fd_sludge", + "fg": 2918, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2919, + "bg": 972 + }, + { + "id": "corner", + "fg": 2920, + "bg": 972 + }, + { + "id": "edge", + "fg": 2921, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2923, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2922, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2918, + "bg": 972 + } + ] + }, + { + "id": "t_sludge", + "fg": 4243, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4244, + "bg": 972 + }, + { + "id": "corner", + "fg": 4245, + "bg": 972 + }, + { + "id": "edge", + "fg": 4246, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 4248, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 4247, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 4243, + "bg": 972 + } + ] + }, + { + "id": "t_tar", + "fg": 4249, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4250, + "bg": 972 + }, + { + "id": "corner", + "fg": 4251, + "bg": 972 + }, + { + "id": "edge", + "fg": 4252, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 4254, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 4253, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 4249, + "bg": 972 + } + ] + }, + { + "id": "weather_acid_drop", + "bg": 982, + "rotates": false + }, + { + "id": "weather_rain_drop", + "bg": 983, + "rotates": false + }, + { + "id": "weather_snowflake_season_winter", + "bg": 984, + "rotates": false + }, + { + "id": ["motor_enhanced", "vp_engine_electric_enhanced", "motor_large", "vp_engine_electric_large", "vp_engine_electric"], + "fg": 1812, + "bg": 984 + }, + { + "id": "sheet_metal_lit", + "fg": 0, + "bg": 1916 + }, + { + "id": "t_backboard", + "fg": 2969, + "bg": 985, + "rotates": false + }, + { + "id": "t_gas_pump", + "fg": 3066, + "bg": 985, + "rotates": false + }, + { + "id": "t_gas_pump_smashed", + "fg": 3067, + "bg": 985, + "rotates": false + }, + { + "id": "t_ladder_up", + "fg": 3105, + "bg": 985, + "rotates": false + }, + { + "id": "t_manhole", + "fg": 3116, + "bg": 985, + "rotates": false + }, + { + "id": "t_manhole_cover", + "fg": 3117, + "bg": 985, + "rotates": false + }, + { + "id": "t_pavement", + "fg": 985, + "bg": 985, + "rotates": false, + "multitile": false, + "additional_tiles": [ + { + "id": "corner", + "fg": [4285, 4286, 4287, 4288] + } + ] + }, + { + "id": "t_pavement_y", + "fg": 3147, + "bg": 985, + "rotates": false + }, + { + "id": "t_rock_floor", + "bg": 985, + "rotates": false + }, + { + "id": "t_rope_up", + "fg": 3211, + "bg": 985, + "rotates": false + }, + { + "id": "t_stairs_up", + "fg": 3260, + "bg": 985, + "rotates": false + }, + { + "id": "tr_goo", + "fg": 3927, + "bg": 0, + "rotates": false + }, + { + "id": "t_swater_dp", + "fg": 3266, + "bg": 985, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3266 + }, + { + "id": "corner", + "fg": 3267 + }, + { + "id": "edge", + "fg": 3268 + }, + { + "id": "end_piece", + "fg": 3269 + }, + { + "id": "unconnected", + "fg": 3274 + } + ] + }, + { + "id": "t_swater_dp_season_winter", + "fg": 3266, + "bg": 985, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3266 + }, + { + "id": "corner", + "fg": 3270 + }, + { + "id": "edge", + "fg": 3271 + }, + { + "id": "end_piece", + "fg": 3272 + }, + { + "id": "unconnected", + "fg": 3273 + } + ] + }, + { + "id": "t_little_column", + "fg": 3111, + "bg": 985, + "rotates": false + }, + { + "id": "t_gas_pump_a", + "fg": 3066, + "bg": 985 + }, + { + "id": "t_gas_tank", + "fg": 3068, + "bg": 985 + }, + { + "id": "t_diesel_pump", + "fg": 3018, + "bg": 985 + }, + { + "id": "t_diesel_pump_smashed", + "fg": 3019, + "bg": 985, + "rotates": false + }, + { + "id": "t_pavement_bg_dp", + "bg": 985 + }, + { + "id": "t_pavement_y_bg_dp", + "fg": 3147, + "bg": 985 + }, + { + "id": "t_low_stairs_end", + "fg": 3112, + "bg": 985, + "rotates": false + }, + { + "id": "t_m_frame", + "fg": 3131, + "bg": 985, + "rotates": false + }, + { + "id": "t_reinforced_glass_shutter_open", + "fg": 3189, + "bg": 985, + "rotates": false + }, + { + "id": "t_reinforced_glass_shutter", + "fg": 3188, + "bg": 985, + "rotates": false + }, + { + "id": "t_ind_furnace", + "fg": 3101, + "bg": 985, + "rotates": false + }, + { + "id": "t_missile", + "fg": 3122, + "bg": 985, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3123, + "bg": 985 + }, + { + "id": "center", + "fg": 3122 + }, + { + "id": "t_connection", + "fg": 3127 + } + ] + }, + { + "id": "t_missile_exploded", + "bg": 985, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3125, + "bg": 985 + }, + { + "id": "center", + "fg": 3124, + "bg": 993 + }, + { + "id": "t_connection", + "fg": 3126 + } + ] + }, + { + "id": "t_cvdbody", + "fg": 3013, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3014, + "bg": 985 + }, + { + "id": "t_connection", + "fg": 3016, + "bg": 985 + }, + { + "id": "end_piece", + "fg": 3015, + "bg": 985 + }, + { + "id": "unconnected", + "fg": 3013 + }, + { + "id": "edge", + "fg": 3013 + }, + { + "id": "center", + "fg": 3013 + } + ] + }, + { + "id": "t_cvdmachine", + "fg": 3017, + "bg": 985 + }, + { + "id": "t_reinforced_glass", + "fg": 3184, + "bg": 985, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3185, + "bg": 985 + }, + { + "id": "edge", + "fg": 3186, + "bg": 985 + }, + { + "id": "t_connection", + "fg": 3190, + "bg": 985 + }, + { + "id": "center", + "fg": 3184, + "bg": 985 + }, + { + "id": "unconnected", + "fg": 3191, + "bg": 985 + }, + { + "id": "end_piece", + "fg": 3187, + "bg": 985 + } + ] + }, + { + "id": "t_reinforced_door_glass_o", + "fg": 3183, + "bg": 985 + }, + { + "id": "t_reinforced_door_glass_c", + "fg": 3182, + "bg": 985 + }, + { + "id": "t_scrap_wall", + "fg": 3221, + "bg": 985, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3222, + "bg": 985 + }, + { + "id": "edge", + "fg": 3223, + "bg": 985 + }, + { + "id": "t_connection", + "fg": 3225, + "bg": 985 + }, + { + "id": "center", + "fg": 3221, + "bg": 985 + }, + { + "id": "unconnected", + "fg": 3226, + "bg": 985 + }, + { + "id": "end_piece", + "fg": 3224, + "bg": 985 + } + ] + }, + { + "id": "t_chainfence_h", + "fg": 2987, + "bg": 985, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 2988, + "bg": 985 + }, + { + "id": "edge", + "fg": 2989, + "bg": 985 + }, + { + "id": "t_connection", + "fg": 2991, + "bg": 985 + }, + { + "id": "center", + "fg": 2987, + "bg": 985 + }, + { + "id": "unconnected", + "fg": 2992, + "bg": 985 + }, + { + "id": "end_piece", + "fg": 2990, + "bg": 985 + } + ] + }, + { + "id": "t_chainfence", + "fg": 2987, + "bg": 985, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 2988, + "bg": 985 + }, + { + "id": "edge", + "fg": 2989, + "bg": 985 + }, + { + "id": "t_connection", + "fg": 2991, + "bg": 985 + }, + { + "id": "center", + "fg": 2987, + "bg": 985 + }, + { + "id": "unconnected", + "fg": 2992, + "bg": 985 + }, + { + "id": "end_piece", + "fg": 2990, + "bg": 985 + } + ] + }, + { + "id": "t_chainfence_v", + "fg": 2987, + "bg": 985, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 2988, + "bg": 985 + }, + { + "id": "edge", + "fg": 2989, + "bg": 985 + }, + { + "id": "t_connection", + "fg": 2991, + "bg": 985 + }, + { + "id": "center", + "fg": 2987, + "bg": 985 + }, + { + "id": "unconnected", + "fg": 2992, + "bg": 985 + }, + { + "id": "end_piece", + "fg": 2990, + "bg": 985 + } + ] + }, + { + "id": "t_chaingate_c", + "fg": 2994, + "bg": 985, + "rotates": false + }, + { + "id": "t_chaingate_l", + "fg": 2994, + "bg": 985, + "rotates": false + }, + { + "id": "t_chaingate_o", + "fg": 2995, + "bg": 985, + "rotates": false + }, + { + "id": ["t_brick_wall", "t_secretdoor_brick_wall_c", "t_sliding_brick_wall_c"], + "fg": 2972, + "bg": 986, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 2972 + }, + { + "id": "center", + "fg": 2973 + }, + { + "id": "corner", + "fg": 2974 + }, + { + "id": "edge", + "fg": 2975 + }, + { + "id": "end_piece", + "fg": 2976 + }, + { + "id": "t_connection", + "fg": 2978 + } + ] + }, + { + "id": "t_brick_wall_line", + "fg": 2972, + "bg": 986, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 2972 + }, + { + "id": "center", + "fg": 2973 + }, + { + "id": "corner", + "fg": 2974 + }, + { + "id": "edge", + "fg": 2975 + }, + { + "id": "end_piece", + "fg": 2976 + }, + { + "id": "t_connection", + "fg": 2978 + } + ] + }, + { + "id": "t_brick_wall_halfway", + "fg": 2977, + "bg": 986 + }, + { + "id": "t_dirtfloor", + "fg": 986, + "rotates": false + }, + { + "id": "t_door_frame", + "fg": 3035, + "bg": 987, + "rotates": false + }, + { + "id": "t_door_glass_o", + "fg": 3037, + "bg": 987, + "rotates": false + }, + { + "id": "t_door_o", + "fg": 3044, + "bg": 987, + "rotates": false + }, + { + "id": "t_floor", + "bg": 987, + "rotates": false + }, + { + "id": "t_mdoor_frame", + "fg": 3120, + "bg": 987, + "rotates": false + }, + { + "id": "t_rdoor_b", + "fg": 3175, + "bg": 987, + "rotates": false + }, + { + "id": "t_rdoor_c", + "fg": 3178, + "bg": 987, + "rotates": false + }, + { + "id": "t_rdoor_o", + "fg": 3179, + "bg": 987, + "rotates": false + }, + { + "id": "t_stairs_down", + "fg": 3259, + "bg": 987, + "rotates": false + }, + { + "id": "t_wall_glass_alarm", + "fg": 3335, + "bg": 987, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 3335, + "bg": 987 + }, + { + "id": "center", + "fg": 3335, + "bg": 987 + }, + { + "id": "corner", + "fg": 3336, + "bg": 987 + }, + { + "id": "edge", + "fg": 3337, + "bg": 987 + }, + { + "id": "end_piece", + "fg": 3338, + "bg": 987 + }, + { + "id": "t_connection", + "fg": 3339, + "bg": 987 + } + ] + }, + { + "id": "t_window_empty", + "fg": 3425, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_frame", + "fg": 3131, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_open", + "fg": 3427, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_no_curtains_open", + "fg": 3427, + "bg": 987, + "rotates": false + }, + { + "id": "t_door_o_peep", + "fg": 3044, + "bg": 987 + }, + { + "id": "t_window_boarded_noglass", + "fg": 3424, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_reinforced_noglass", + "fg": 3429, + "bg": 987, + "rotates": false + }, + { + "id": "t_wall_glass", + "fg": 3335, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3335, + "bg": 987 + }, + { + "id": "corner", + "fg": 3336, + "bg": 987 + }, + { + "id": "edge", + "fg": 3337, + "bg": 987 + }, + { + "id": "end_piece", + "fg": 3338, + "bg": 987 + }, + { + "id": "t_connection", + "fg": 3339, + "bg": 987 + }, + { + "id": "unconnected", + "fg": 3340, + "bg": 987 + } + ] + }, + { + "id": "t_window", + "fg": 3419, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_no_curtains", + "fg": 3419, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_alarm", + "fg": 3419, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_domestic", + "fg": 3419, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_alarm_taped", + "fg": 3420, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_domestic_taped", + "fg": 3420, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_taped", + "fg": 3420, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_no_curtains_taped", + "fg": 3420, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_bars_alarm", + "fg": 3422, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_boarded", + "fg": 3423, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_enhanced", + "fg": 3426, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_reinforced", + "fg": 3428, + "bg": 987, + "rotates": false + }, + { + "id": "t_door_makeshift_o", + "fg": 3039, + "bg": 987, + "rotates": false + }, + { + "id": "t_window_bars", + "fg": 3421, + "bg": 987, + "rotates": false + }, + { + "id": "t_ind_assembler", + "fg": 3099, + "bg": 988 + }, + { + "id": "t_portcullis", + "fg": 3164, + "bg": 988 + }, + { + "id": "t_scrap_wall_halfway", + "fg": 3221, + "bg": 988, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "t_connection", + "fg": 3225, + "bg": 988 + }, + { + "id": "edge", + "fg": 3223, + "bg": 988 + }, + { + "id": "corner", + "fg": 3222, + "bg": 988 + }, + { + "id": "center", + "fg": 3221, + "bg": 988 + }, + { + "id": "end_piece", + "fg": 3224, + "bg": 993 + }, + { + "id": "unconnected", + "fg": 3226, + "bg": 993 + } + ] + }, + { + "id": "t_fungus_floor_in", + "bg": 989, + "rotates": false + }, + { + "id": "t_fungus_floor_out", + "bg": 990, + "rotates": false + }, + { + "id": "t_fungus_floor_sup", + "bg": 991, + "rotates": false + }, + { + "id": "t_fungus_wall", + "fg": 3060, + "bg": 991, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3061, + "bg": 991 + }, + { + "id": "corner", + "fg": 3062, + "bg": 991 + }, + { + "id": "edge", + "fg": 3063, + "bg": 991 + }, + { + "id": "t_connection", + "fg": 3065, + "bg": 991 + }, + { + "id": "end_piece", + "fg": 3064, + "bg": 991 + }, + { + "id": "unconnected", + "fg": 3060, + "bg": 991 + } + ] + }, + { + "id": "t_trunk_season_winter", + "fg": 3317, + "bg": 992 + }, + { + "id": "t_tree_apple_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_pear_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_apricot_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_cherry_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_peach_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_plum_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_deadpine_season_winter", + "fg": 3294, + "bg": 992 + }, + { + "id": "t_tree_pine_season_winter", + "fg": 3307, + "bg": 992 + }, + { + "id": "t_water_sh_season_winter", + "fg": 3412, + "bg": 992, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3416 + }, + { + "id": "corner", + "fg": 3413 + }, + { + "id": "edge", + "fg": 3414 + }, + { + "id": "end_piece", + "fg": 3415 + }, + { + "id": "t_connection", + "fg": 3416 + }, + { + "id": "unconnected", + "fg": 3417 + } + ] + }, + { + "id": "t_swater_sh_season_winter", + "fg": 3412, + "bg": 992, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3412 + }, + { + "id": "corner", + "fg": 3413 + }, + { + "id": "edge", + "fg": 3414 + }, + { + "id": "end_piece", + "fg": 3415 + }, + { + "id": "t_connection", + "fg": 3416 + }, + { + "id": "unconnected", + "fg": 3417 + } + ] + }, + { + "id": "t_dirtmound_season_winter", + "fg": 3021, + "bg": 992 + }, + { + "id": "t_pit_season_winter", + "fg": 3156, + "bg": 992 + }, + { + "id": "tr_pit_season_winter", + "fg": 3156, + "bg": 992 + }, + { + "id": "t_pit_corpsed_season_winter", + "fg": 3152, + "bg": 992 + }, + { + "id": "t_pit_spiked_season_winter", + "fg": 3161, + "bg": 992 + }, + { + "id": "tr_spike_pit_season_winter", + "fg": 3161, + "bg": 992 + }, + { + "id": ["t_pit_shallow_season_winter", "t_pit_foxhole_season_winter"], + "fg": 3158, + "bg": 992 + }, + { + "id": "t_pit_spiked_covered_season_winter", + "fg": 3160, + "bg": 992 + }, + { + "id": "t_pit_covered_season_winter", + "fg": 3160, + "bg": 992 + }, + { + "id": "t_dirt_season_winter", + "fg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ] + }, + { + "id": "t_barndoor_season_winter", + "fg": 2970, + "bg": 992 + }, + { + "id": "t_tree_young", + "fg": 4370, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_young_season_autumn", + "fg": 4371, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_young_season_winter", + "fg": 4366, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_season_winter", + "fg": 3309, + "bg": 992, + "rotates": false + }, + { + "id": ["t_shrub_season_winter", "t_shrub_peanut_season_winter", "t_shrub_peanut_harvested_season_winter"], + "fg": 3245, + "bg": 992 + }, + { + "id": "t_palisade_pulley_season_winter", + "fg": 2970, + "bg": 992 + }, + { + "id": "t_palisade_gate_o_season_winter", + "fg": 3139, + "bg": 992 + }, + { + "id": "t_palisade_gate_season_winter", + "fg": 3140, + "bg": 992 + }, + { + "id": "t_palisade_season_winter", + "fg": 3141, + "bg": 992 + }, + { + "id": "t_ladder_down_season_winter", + "fg": 3104, + "bg": 992 + }, + + { + "id": "t_grass_season_autumn", + "fg": 4376, + "bg": 992, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4377 + }, + { + "id": "corner", + "fg": 4378 + }, + { + "id": "edge", + "fg": 4379 + }, + { + "id": "end_piece", + "fg": 4380 + }, + { + "id": "t_connection", + "fg": 4381 + }, + { + "id": "unconnected", + "fg": 4376 + } + ] + }, + { + "id": ["t_grass_season_winter", "t_grass_golf_season_winter", "t_grass_long_season_winter", "t_grass_tall_season_winter", "t_grass_dead_season_winter"], + "fg": 3079, + "bg": 992, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3080 + }, + { + "id": "corner", + "fg": 3081 + }, + { + "id": "edge", + "fg": 3082 + }, + { + "id": "end_piece", + "fg": 3083 + }, + { + "id": "t_connection", + "fg": 3084 + }, + { + "id": "unconnected", + "fg": 3085 + } + ] + }, + { + "id": "t_fencegate_o_season_winter", + "fg": 3048, + "bg": 992 + }, + { + "id": "t_fencegate_c_season_winter", + "fg": 3047, + "bg": 992 + }, + { + "id": ["t_fence_wire_season_winter", "t_improvised_fence_season_winter"], + "fg": 3053, + "bg": 992 + }, + { + "id": "t_fence_rope_season_winter", + "fg": 3051, + "bg": 992 + }, + { + "id": "t_fence_season_winter", + "fg": 3052, + "bg": 992 + }, + { + "id": "t_fence_v_season_winter", + "fg": 3052, + "bg": 992 + }, + { + "id": "t_fence_post_season_winter", + "fg": 3050, + "bg": 992 + }, + { + "id": "t_fence_h_season_winter", + "fg": 3052, + "bg": 992 + }, + { + "id": "t_fence_barbed_season_winter", + "fg": 3049, + "bg": 992 + }, + { + "id": "t_shrub_strawberry_season_winter", + "fg": 3247, + "bg": 992 + }, + { + "id": "t_shrub_blueberry_season_winter", + "fg": 3247, + "bg": 992 + }, + { + "id": "t_pit_glass_covered_season_winter", + "fg": 3160, + "bg": 992 + }, + { + "id": "t_pit_glass_season_winter", + "fg": 3155, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_blueberry_harvested_season_winter", + "fg": 3247, + "bg": 992 + }, + { + "id": "t_shrub_strawberry_harvested_season_winter", + "fg": 3247, + "bg": 992 + }, + { + "id": "t_tree_apple_harvested_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_apricot_harvested_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_cherry_harvested_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_peach_harvested_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_pear_harvested_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_plum_harvested_season_winter", + "fg": 3285, + "bg": 992 + }, + { + "id": "t_tree_blackjack_season_winter", + "fg": 3292, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_birch_season_winter", + "fg": 3290, + "bg": 992, + "rotates": false + }, + { + "id": "t_underbrush", + "fg": 3318, + "bg": 1012, + "rotates": false + }, + { + "id": "t_underbrush_season_winter", + "fg": 3321, + "bg": 992, + "rotates": false + }, + { + "id": "t_underbrush_season_autumn", + "fg": 4372, + "bg": 1012, + "rotates": false + }, + { + "id": "t_underbrush_harvested_spring", + "fg": 3319, + "bg": 1012, + "rotates": false + }, + { + "id": "t_underbrush_harvested_summer", + "fg": 3319, + "bg": 1012, + "rotates": false + }, + { + "id": "t_underbrush_harvested_autumn", + "fg": 4374, + "bg": 1012, + "rotates": false + }, + { + "id": "t_underbrush_harvested_spring_season_winter", + "fg": 3319, + "bg": 992, + "rotates": false + }, + { + "id": "t_underbrush_harvested_summer_season_winter", + "fg": 3319, + "bg": 992, + "rotates": false + }, + { + "id": "t_underbrush_harvested_autumn_season_winter", + "fg": 3319, + "bg": 992, + "rotates": false + }, + { + "id": "t_underbrush_harvested_winter", + "fg": 3319, + "bg": 1012, + "rotates": false + }, + { + "id": "t_underbrush_harvested_winter_season_winter", + "fg": 3319, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_maple_season_winter", + "fg": 3302, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_willow_season_winter", + "fg": 3313, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_hickory_season_winter", + "fg": 3300, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_hickory_harvested_season_winter", + "fg": 3298, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_hickory_dead_season_winter", + "fg": 3294, + "bg": 992 + }, + { + "id": "t_tree_birch_harvested_season_winter", + "fg": 3289, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_willow_harvested_season_winter", + "fg": 3312, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_dead_season_winter", + "fg": 3294, + "bg": 992 + }, + { + "id": "t_bars", + "fg": 2971, + "bg": 993, + "rotates": false + }, + { + "id": "t_card_military", + "fg": 2980, + "bg": 993, + "rotates": false + }, + { + "id": "t_card_reader_broken", + "fg": 2981, + "bg": 993, + "rotates": false + }, + { + "id": "t_card_science", + "fg": 2980, + "bg": 993, + "rotates": false + }, + { + "id": "t_centrifuge", + "fg": 2986, + "bg": 993, + "rotates": false + }, + { + "id": ["t_concrete_wall", "t_secretdoor_concrete_wall_c", "t_sliding_concrete_wall_c"], + "fg": 2999, + "bg": 993, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2999, + "bg": 993 + }, + { + "id": "corner", + "fg": 3000, + "bg": 993 + }, + { + "id": "edge", + "fg": 3001, + "bg": 993 + }, + { + "id": "t_connection", + "fg": 3003, + "bg": 993 + }, + { + "id": "end_piece", + "fg": 3002, + "bg": 993 + }, + { + "id": "unconnected", + "fg": 3004, + "bg": 993 + } + ] + }, + { + "id": "t_door_bar_c", + "fg": 3027, + "bg": 993, + "rotates": false + }, + { + "id": "t_door_bar_locked", + "fg": 3027, + "bg": 993, + "rotates": false + }, + { + "id": "t_door_bar_o", + "fg": 3028, + "bg": 993, + "rotates": false + }, + { + "id": "t_door_metal_o", + "fg": 3042, + "bg": 993, + "rotates": false + }, + { + "id": "t_door_metal_o_peep", + "fg": 3042, + "bg": 993, + "rotates": false + }, + { + "id": ["t_gates_mech_control", "t_outs_bridge_control", "t_ins_bridge_control"], + "fg": 3071, + "bg": 993, + "rotates": false + }, + { + "id": "t_radio_tower", + "fg": 3166, + "bg": 985, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3167, + "bg": 985 + } + ] + }, + { + "id": "t_railing", + "fg": 3168, + "bg": 993, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3168, + "bg": 993 + }, + { + "id": "corner", + "fg": 3169, + "bg": 993 + }, + { + "id": "edge", + "fg": 3170, + "bg": 993 + }, + { + "id": "t_connection", + "fg": 3172, + "bg": 993 + }, + { + "id": "end_piece", + "fg": 3171, + "bg": 993 + }, + { + "id": "unconnected", + "fg": 3173, + "bg": 993 + } + ] + }, + { + "id": "t_railing_h", + "fg": 3168, + "bg": 993, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3168, + "bg": 993 + }, + { + "id": "corner", + "fg": 3169, + "bg": 993 + }, + { + "id": "edge", + "fg": 3170, + "bg": 993 + }, + { + "id": "t_connection", + "fg": 3172, + "bg": 993 + }, + { + "id": "end_piece", + "fg": 3171, + "bg": 993 + }, + { + "id": "unconnected", + "fg": 3173, + "bg": 993 + } + ] + }, + { + "id": "t_railing_v", + "fg": 3168, + "bg": 993, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3168, + "bg": 993 + }, + { + "id": "corner", + "fg": 3169, + "bg": 993 + }, + { + "id": "edge", + "fg": 3170, + "bg": 993 + }, + { + "id": "t_connection", + "fg": 3172, + "bg": 993 + }, + { + "id": "end_piece", + "fg": 3171, + "bg": 993 + }, + { + "id": "unconnected", + "fg": 3173, + "bg": 993 + } + ] + }, + { + "id": ["t_recycler", "f_recycle_bin"], + "fg": 3181, + "bg": 993, + "rotates": false + }, + { + "id": "t_sewage_pipe", + "fg": 3234, + "bg": 993, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3235, + "bg": 993 + }, + { + "id": "corner", + "fg": 3236, + "bg": 993 + }, + { + "id": "edge", + "fg": 3237, + "bg": 993 + }, + { + "id": "t_connection", + "fg": 3239, + "bg": 993 + }, + { + "id": "end_piece", + "fg": 3238, + "bg": 993 + }, + { + "id": "unconnected", + "fg": 3234, + "bg": 993 + } + ] + }, + { + "id": "t_ind_pipe", + "fg": 3234, + "bg": 993, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3235, + "bg": 993 + }, + { + "id": "corner", + "fg": 3236, + "bg": 993 + }, + { + "id": "edge", + "fg": 3237, + "bg": 993 + }, + { + "id": "t_connection", + "fg": 3239, + "bg": 993 + }, + { + "id": "end_piece", + "fg": 3238, + "bg": 993 + }, + { + "id": "unconnected", + "fg": 3234, + "bg": 993 + } + ] + }, + { + "id": "t_sewage_pump", + "bg": 993, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3240, + "bg": 993 + }, + { + "id": "corner", + "fg": 3241, + "bg": 993 + }, + { + "id": "edge", + "fg": 3237, + "bg": 993 + }, + { + "id": "t_connection", + "fg": 3240, + "bg": 993 + }, + { + "id": "end_piece", + "fg": 3238, + "bg": 993 + }, + { + "id": "unconnected", + "fg": 3240, + "bg": 993 + } + ] + }, + { + "id": "t_sidewalk", + "fg": 993, + "rotates": false + }, + { + "id": "t_vat", + "fg": 3323, + "bg": 993, + "rotates": false + }, + { + "id": "t_sai_box", + "fg": 3212, + "bg": 993, + "rotates": false + }, + { + "id": "t_oil_circ_brkr_l", + "fg": 3132, + "bg": 5013, + "rotates": false + }, + { + "id": "t_sai_box_damaged", + "fg": 3213, + "bg": 5013, + "rotates": false + }, + { + "id": "t_switchgear_l", + "fg": 3275, + "bg": 5013, + "rotates": false + }, + { + "id": "t_switchgear_s", + "fg": 3276, + "bg": 5013, + "rotates": false + }, + { + "id": "t_oil_circ_brkr_s", + "fg": 3133, + "bg": 5013, + "rotates": false + }, + { + "id": "t_lgtn_arrest", + "fg": 3108, + "bg": 5013, + "rotates": false + }, + { + "id": "t_station_disc", + "fg": 3261, + "bg": 5013, + "rotates": false + }, + { + "id": "t_current_trans", + "fg": 3011, + "bg": 5013, + "rotates": false + }, + { + "id": "t_potential_trans", + "fg": 3165, + "bg": 5013, + "rotates": false + }, + { + "id": "t_support_s", + "fg": 3265, + "bg": 5013, + "rotates": false + }, + { + "id": "t_support_l", + "fg": 3264, + "bg": 5013, + "rotates": false + }, + { + "id": "t_water_pump", + "fg": 3408, + "bg": 993, + "rotates": false + }, + { + "id": "t_plut_generator", + "fg": 3162, + "bg": 993 + }, + { + "id": "t_covered_well", + "fg": 3010, + "bg": 993, + "rotates": false + }, + { + "id": "t_emergency_light_flicker", + "bg": 993, + "rotates": false + }, + { + "id": "t_emergency_light", + "bg": 993, + "rotates": false + }, + { + "id": "t_utility_light", + "fg": 3322, + "bg": 993 + }, + { + "id": "t_skylight", + "bg": 993, + "rotates": false + }, + { + "id": "t_pedestal_wyrm", + "fg": 3149, + "bg": 993 + }, + { + "id": "t_slot_machine", + "fg": 3258, + "bg": 993 + }, + { + "id": "t_atm", + "fg": 2968, + "bg": 993, + "rotates": false + }, + { + "id": "t_wall_metal", + "fg": 3221, + "bg": 993, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3222, + "bg": 993 + }, + { + "id": "center", + "fg": 3221, + "bg": 993 + }, + { + "id": "end_piece", + "fg": 3224, + "bg": 993 + }, + { + "id": "unconnected", + "fg": 3226, + "bg": 993 + }, + { + "id": "t_connection", + "fg": 3225, + "bg": 993 + }, + { + "id": "edge", + "fg": 3223, + "bg": 993 + } + ] + }, + { + "id": "t_sidewalk_bg_dp", + "fg": 993 + }, + { + "id": "t_guardrail_bg_dp", + "fg": 3168, + "bg": 993, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3169, + "bg": 993 + }, + { + "id": "center", + "fg": 3168, + "bg": 993 + }, + { + "id": "end_piece", + "fg": 3171, + "bg": 993 + }, + { + "id": "t_connection", + "fg": 3172, + "bg": 993 + }, + { + "id": "unconnected", + "fg": 3173, + "bg": 993 + }, + { + "id": "edge", + "fg": 3170, + "bg": 993 + } + ] + }, + { + "id": "t_sconc_wall", + "fg": 3219, + "bg": 993 + }, + { + "id": "t_strconc_wall", + "fg": 2999, + "bg": 993, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3000, + "bg": 993 + }, + { + "id": "edge", + "fg": 3001, + "bg": 993 + }, + { + "id": "center", + "fg": 2999, + "bg": 993 + }, + { + "id": "t_connection", + "fg": 3003, + "bg": 993 + }, + { + "id": "end_piece", + "fg": 3002, + "bg": 993 + }, + { + "id": "unconnected", + "fg": 3004, + "bg": 993 + } + ] + }, + { + "id": "t_sconc_wall_halfway", + "fg": 3220, + "bg": 993 + }, + { + "id": "t_strconc_wall_halfway", + "fg": 3263, + "bg": 993 + }, + { + "id": "t_reb_cage", + "fg": 3180, + "bg": 993 + }, + { + "id": "t_thconc_floor", + "fg": 993, + "rotates": false + }, + { + "id": "t_concrete_floor", + "fg": 993, + "rotates": false + }, + { + "id": "t_strconc_floor", + "fg": 993, + "rotates": false + }, + { + "id": "t_ov_reb_cage", + "fg": 3134, + "bg": 993 + }, + { + "id": ["t_machinery_light", "t_milking_machine"], + "fg": 3114, + "bg": 993, + "rotates": false + }, + { + "id": "t_machinery_electronic", + "fg": 3114, + "bg": 993, + "rotates": false + }, + { + "id": "t_machinery_heavy", + "fg": 3113, + "bg": 993, + "rotates": false + }, + { + "id": "t_conveyor", + "fg": 3007, + "bg": 993, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "edge", + "fg": 3007 + }, + { + "id": "end_piece", + "fg": 3007 + }, + { + "id": "corner", + "fg": 3008 + }, + { + "id": "t_connection", + "fg": 3009 + } + ] + }, + { + "id": "t_machinery_old", + "fg": 3115, + "bg": 993, + "rotates": false + }, + { + "id": "f_home_furnace", + "fg": 1528, + "bg": 993, + "rotates": false + }, + { + "id": "f_air_conditioner", + "fg": 1441, + "bg": 993, + "rotates": false + }, + { + "id": "t_open_air", + "bg": 994, + "rotates": false + }, + { + "id": "t_open_air_rooved", + "bg": 994 + }, + { + "id": "t_paper", + "fg": 3124, + "bg": 995, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3142, + "bg": 995 + }, + { + "id": "corner", + "fg": 3143, + "bg": 995 + }, + { + "id": "edge", + "fg": 3144, + "bg": 995 + }, + { + "id": "end_piece", + "fg": 3145, + "bg": 995 + }, + { + "id": "t_connection", + "fg": 3146, + "bg": 995 + }, + { + "id": "unconnected", + "fg": 3124, + "bg": 995 + } + ] + }, + { + "id": "t_paper_floor", + "fg": 3124, + "bg": 4369, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3142, + "bg": 4369 + }, + { + "id": "corner", + "fg": 3143, + "bg": 4369 + }, + { + "id": "edge", + "fg": 3144, + "bg": 4369 + }, + { + "id": "end_piece", + "fg": 3145, + "bg": 4369 + }, + { + "id": "t_connection", + "fg": 3146, + "bg": 4369 + }, + { + "id": "unconnected", + "fg": 3124, + "bg": 4369 + } + ] + }, + { + "id": "t_wax", + "fg": 3124, + "bg": 995, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3142, + "bg": 995 + }, + { + "id": "corner", + "fg": 3143, + "bg": 995 + }, + { + "id": "edge", + "fg": 3144, + "bg": 995 + }, + { + "id": "end_piece", + "fg": 3145, + "bg": 995 + }, + { + "id": "t_connection", + "fg": 3146, + "bg": 995 + }, + { + "id": "unconnected", + "fg": 3124, + "bg": 995 + } + ] + }, + { + "id": "t_rock_wall", + "fg": 3124, + "bg": 996, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3143, + "bg": 996 + }, + { + "id": "center", + "fg": 3142, + "bg": 996 + }, + { + "id": "t_connection", + "fg": 3146, + "bg": 996 + }, + { + "id": "edge", + "fg": 3144, + "bg": 996 + }, + { + "id": "unconnected", + "fg": 3124, + "bg": 996 + }, + { + "id": "end_piece", + "fg": 3145, + "bg": 996 + } + ] + }, + { + "id": "t_stone_wall_line", + "fg": 3124, + "bg": 996, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3143, + "bg": 996 + }, + { + "id": "center", + "bg": 996 + }, + { + "id": "t_connection", + "fg": 3146, + "bg": 996 + }, + { + "id": "edge", + "fg": 3144, + "bg": 996 + }, + { + "id": "end_piece", + "fg": 3145, + "bg": 996 + }, + { + "id": "unconnected", + "fg": 3124, + "bg": 996 + } + ] + }, + { + "id": "t_root_wall", + "fg": 3142, + "bg": 997, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3143, + "bg": 997 + }, + { + "id": "center", + "fg": 3142, + "bg": 997 + }, + { + "id": "end_piece", + "fg": 3145, + "bg": 997 + }, + { + "id": "unconnected", + "fg": 3124, + "bg": 997 + }, + { + "id": "t_connection", + "fg": 3146, + "bg": 997 + }, + { + "id": "edge", + "fg": 3144, + "bg": 997 + } + ] + }, + { + "id": "tr_beartrap", + "bg": 998, + "rotates": false + }, + { + "id": "tr_beartrap_buried", + "fg": 3916, + "bg": 998, + "rotates": false + }, + { + "id": "tr_beartrap_buried_season_winter", + "fg": 3917, + "bg": 998 + }, + { + "id": "tr_drain", + "bg": 999, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "bg": 1000 + }, + { + "id": "t_connection", + "bg": 1000 + } + ] + }, + { + "id": "tr_heavy_snare", + "bg": 1001, + "rotates": false + }, + { + "id": "tr_snare", + "bg": 1001, + "rotates": false + }, + { + "id": "tr_light_snare", + "bg": 1002, + "rotates": false + }, + { + "id": "tr_nailboard", + "bg": 1003, + "rotates": false + }, + { + "id": "tr_tripwire", + "bg": 1004, + "rotates": false + }, + { + "id": "vp_cargo_space", + "fg": 3986, + "bg": 1005, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3986 + } + ] + }, + { + "id": "vp_chemlab", + "fg": 3988, + "bg": 1005, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3988 + } + ] + }, + { + "id": "vp_kitchen_unit", + "fg": 4098, + "bg": 1005, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4098 + } + ] + }, + { + "id": "vp_recharge_station", + "fg": 4124, + "bg": 1005, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4124 + } + ] + }, + { + "id": "vp_seat", + "fg": 4134, + "bg": 1005, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4134, + "rotates": true + } + ] + }, + { + "id": "vp_seat_nocargo", + "fg": 4134, + "bg": 1005, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4134, + "rotates": true + } + ] + }, + { + "id": "vp_veh_table", + "fg": 4153, + "bg": 1005, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4153 + } + ] + }, + { + "id": "lighting_hidden", + "fg": 1005, + "rotates": false + }, + { + "id": "vp_craft_rig", + "fg": 3101, + "bg": 1005, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3101 + } + ] + }, + { + "id": ["vp_floodlight", "vp_xfloodlight"], + "fg": 4021, + "bg": 1005, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4021 + } + ] + }, + { + "id": "vp_veh_forge", + "fg": 4152, + "bg": 1005, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4152 + } + ] + }, + { + "id": "vp_welding_rig", + "fg": 4156, + "bg": 1005, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4156 + } + ] + }, + { + "id": "vp_veh_table_wood", + "fg": 4154, + "bg": 1005, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4154 + } + ] + }, + { + "id": "vp_reclining_seat", + "fg": 4134, + "bg": 1005, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4134 + } + ] + }, + { + "id": "vp_folding_seat", + "fg": 4134, + "bg": 1005, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4134 + } + ] + }, + { + "id": "vp_seat_wood", + "fg": 4135, + "bg": 1005, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4135 + } + ] + }, + { + "id": "vp_door_wood_opaque", + "fg": 4017, + "bg": 1005, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "open", + "fg": 3044, + "bg": 1005 + }, + { + "id": "broken", + "fg": 4018, + "bg": 1005 + } + ] + }, + { + "id": "t_ind_drill", + "fg": 3100, + "bg": 1005, + "rotates": false + }, + { + "id": "t_ind_mixer", + "fg": 3103, + "bg": 1005, + "rotates": false + }, + { + "id": "vp_bseat", + "bg": 1005, + "rotates": true + }, + { + "id": "vp_queen", + "fg": 4117, + "bg": 1005, + "rotates": true + }, + { + "id": "vp_oozle_seat", + "fg": 4113, + "bg": 1005, + "rotates": true + }, + { + "id": "vp_gray_seat", + "fg": 4113, + "bg": 1005, + "rotates": true + }, + { + "id": "vp_gloople_seat", + "fg": 4113, + "bg": 1005, + "rotates": true + }, + { + "id": "vp_aripper", + "fg": 3963, + "bg": 1005, + "rotates": true + }, + { + "id": "vp_arippernc", + "fg": 3963, + "bg": 1005, + "rotates": true + }, + { + "id": ["vp_crane_medium", "vp_crane_medium_internal"], + "fg": 3991, + "bg": 1006, + "rotates": false + }, + { + "id": "vp_crane_tiny", + "fg": 3991, + "bg": 1006, + "rotates": false + }, + { + "id": "vp_crane_small", + "fg": 3991, + "bg": 1006, + "rotates": false + }, + { + "id": "vp_trunk", + "fg": 1006, + "rotates": true + }, + { + "id": "vp_ripper", + "fg": 3963, + "bg": 1007, + "rotates": true + }, + { + "id": ["vp_watercannon", "vp_awatercannon"], + "fg": 1007, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1007 + } + ] + }, + { + "id": "vp_acangun", + "fg": 1007, + "rotates": true + }, + { + "id": "vp_bolter", + "fg": 1007, + "rotates": true + }, + { + "id": "bolter", + "fg": 1007, + "rotates": true + }, + { + "id": "vp_cangun", + "fg": 1007, + "rotates": true + }, + { + "id": "vp_acangunnc", + "fg": 1007, + "rotates": true + }, + { + "id": "vp_travois", + "fg": 4135, + "bg": 1008, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4135 + } + ] + }, + { + "id": "vp_roof_wood", + "fg": 1008, + "rotates": true + }, + { + "id": "vp_wooden_aisle_vertical", + "fg": 4170, + "bg": 1009, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4170 + } + ] + }, + { + "id": "vp_wood box", + "fg": 1009, + "rotates": true + }, + { + "id": "vp_wooden_aisle_horizontal", + "fg": 4169, + "bg": 1009, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4169 + } + ] + }, + { + "id": "vp_door_wood", + "fg": 4015, + "bg": 1009, + "multitile": true, + "additional_tiles": [ + { + "id": "open", + "fg": 3044, + "bg": 1009 + }, + { + "id": "broken", + "fg": 4016, + "bg": 1009 + } + ] + }, + { + "id": "vp_xlframe_cover", + "fg": 4171, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1010 + } + ] + }, + { + "id": "vp_halfboard_cover", + "fg": 1010, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4062 + } + ] + }, + { + "id": "vp_hdhalfboard_cover", + "fg": 1010, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4062 + } + ] + }, + { + "id": "fd_fungicidal_gas", + "bg": 1011, + "rotates": false + }, + { + "id": "f_firering", + "fg": 3940, + "bg": 0, + "rotates": false + }, + { + "id": "f_canvas_wall", + "fg": 1471, + "bg": 1012, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 1471 + }, + { + "id": "corner", + "fg": 1472 + }, + { + "id": "edge", + "fg": 1473 + }, + { + "id": "end_piece", + "fg": 1474 + }, + { + "id": "t_connection", + "fg": 1475 + }, + { + "id": "unconnected", + "fg": 1476 + } + ] + }, + { + "id": "f_skin_wall", + "fg": 1471, + "bg": 1012, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 1471 + }, + { + "id": "corner", + "fg": 1472 + }, + { + "id": "edge", + "fg": 1473 + }, + { + "id": "end_piece", + "fg": 1474 + }, + { + "id": "t_connection", + "fg": 1475 + }, + { + "id": "unconnected", + "fg": 1476 + } + ] + }, + { + "id": "t_barndoor", + "fg": 2970, + "bg": 1012, + "rotates": false + }, + { + "id": "t_dirt", + "fg": 1012, + "rotates": false + }, + { + "id": "t_dirtmound", + "fg": 3020, + "bg": 1012, + "rotates": false + }, + { + "id": "t_fence_barbed", + "fg": 3049, + "bg": 1012, + "rotates": false + }, + { + "id": "t_fence", + "fg": 3052, + "bg": 1012 + }, + { + "id": "t_fence_v", + "fg": 3052, + "bg": 1012 + }, + { + "id": "t_fence_post", + "fg": 3050, + "bg": 1012, + "rotates": false + }, + { + "id": "t_fence_rope", + "fg": 3051, + "bg": 1012, + "rotates": false + }, + { + "id": "t_fence_h", + "fg": 3052, + "bg": 1012, + "rotates": false + }, + { + "id": ["t_fence_wire", "t_improvised_fence"], + "fg": 3053, + "bg": 1012, + "rotates": false + }, + { + "id": "t_fencegate_c", + "fg": 3047, + "bg": 1012, + "rotates": false + }, + { + "id": "t_fencegate_o", + "fg": 3048, + "bg": 1012, + "rotates": false + }, + { + "id": "t_grass", + "fg": 3074, + "bg": 1012, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3075 + }, + { + "id": "corner", + "fg": 3076 + }, + { + "id": "edge", + "fg": 3077 + }, + { + "id": "end_piece", + "fg": 3078 + }, + { + "id": "t_connection", + "fg": 3086 + }, + { + "id": "unconnected", + "fg": 3087 + } + ] + }, + { + "id": "t_ladder_down", + "fg": 3104, + "bg": 1012, + "rotates": false + }, + { + "id": "t_palisade", + "fg": 3136, + "bg": 1012 + }, + { + "id": "t_palisade_gate", + "fg": 3137, + "bg": 1012 + }, + { + "id": "t_palisade_gate_o", + "fg": 3138, + "bg": 1012 + }, + { + "id": "t_palisade_pulley", + "fg": 2970, + "bg": 1012, + "rotates": false + }, + { + "id": "t_pedestal_temple", + "fg": 3148, + "bg": 1012, + "rotates": false + }, + { + "id": "t_pit", + "fg": 3150, + "bg": 1012, + "rotates": false + }, + { + "id": "t_pit_corpsed", + "fg": 3151, + "bg": 1012, + "rotates": false + }, + { + "id": "t_pit_covered", + "fg": 3153, + "bg": 1012, + "rotates": false + }, + { + "id": ["t_pit_shallow", "t_pit_foxhole"], + "fg": 3157, + "bg": 1012, + "rotates": false + }, + { + "id": "t_pit_spiked", + "fg": 3159, + "bg": 1012, + "rotates": false + }, + { + "id": "t_pit_spiked_covered", + "fg": 3153, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub", + "fg": 3242, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_blueberry", + "fg": 3243, + "bg": 1012 + }, + { + "id": "t_shrub_strawberry", + "fg": 3243, + "bg": 1012 + }, + { + "id": "t_slime", + "fg": 3250, + "bg": 1012, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 3250, + "bg": 4844 + }, + { + "id": "center", + "fg": 3251, + "bg": 4844 + }, + { + "id": "corner", + "fg": 3252, + "bg": 4844 + }, + { + "id": "edge", + "fg": 3253, + "bg": 4844 + }, + { + "id": "end_piece", + "fg": 3254, + "bg": 4844 + }, + { + "id": "t_connection", + "fg": 3255, + "bg": 4844 + } + ] + }, + { + "id": "t_tree", + "fg": 3282, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_apple", + "fg": 3283, + "bg": 1012 + }, + { + "id": "!t_tree_young", + "fg": 3314, + "bg": 1012, + "rotates": false + }, + { + "id": "t_trunk", + "fg": 3316, + "bg": 1012, + "rotates": false + }, + { + "id": ["t_wall", "t_secretdoor_onetime", "t_secretdoor_wall_c", "t_sliding_wall_c"], + "fg": 3324, + "bg": 1012, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3324 + }, + { + "id": "corner", + "fg": 3331 + }, + { + "id": "edge", + "fg": 3332 + }, + { + "id": "end_piece", + "fg": 3333 + }, + { + "id": "t_connection", + "fg": 3383 + }, + { + "id": "unconnected", + "fg": 3384 + } + ] + }, + { + "id": ["!t_railroad_track", "!t_railroad_track_h", "!t_railroad_track_v", "!t_railroad_track_d", "!t_railroad_track_d1", "!t_railroad_track_d2"], + "fg": 4228, + "bg": 1012, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4228 + }, + { + "id": "corner", + "fg": 4228 + }, + { + "id": "edge", + "fg": 4228 + }, + { + "id": "end_piece", + "fg": 4228 + }, + { + "id": "t_connection", + "fg": 4228 + }, + { + "id": "unconnected", + "fg": 4229 + } + ] + }, + { + "id": ["!t_railroad_tie", "!t_railroad_tie_d", "!t_railroad_tie_v", "!t_railroad_tie_h"], + "fg": 4230, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4230 + }, + { + "id": "corner", + "fg": 4230 + }, + { + "id": "edge", + "fg": 4230 + }, + { + "id": "end_piece", + "fg": 4230 + }, + { + "id": "t_connection", + "fg": 4230 + }, + { + "id": "unconnected", + "fg": 4232 + } + ] + }, + { + "id": ["!t_railroad_track_on_tie", "!t_railroad_track_d_on_tie", "!t_railroad_track_v_on_tie", "!t_railroad_track_v_on_tie", "!t_railroad_track_h_on_tie", "!t_railroad_tie_d1", "!t_railroad_tie_d2"], + "fg": 4231, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4231 + }, + { + "id": "corner", + "fg": 4231 + }, + { + "id": "edge", + "fg": 4231 + }, + { + "id": "end_piece", + "fg": 4231 + }, + { + "id": "t_connection", + "fg": 4231 + }, + { + "id": "unconnected", + "fg": 4231 + } + ] + }, + { + "id": "t_wall_wood_line", + "fg": 3393, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3393 + }, + { + "id": "center", + "fg": 3393 + }, + { + "id": "t_connection", + "fg": 3393 + }, + { + "id": "unconnected", + "fg": 3393 + }, + { + "id": "edge", + "fg": 3394 + }, + { + "id": "end_piece", + "fg": 3395 + } + ] + }, + { + "id": "!t_water_sh", + "fg": 3412, + "bg": 1012, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3409 + }, + { + "id": "edge", + "fg": 3410 + }, + { + "id": "end_piece", + "fg": 3411 + }, + { + "id": "center", + "fg": 3412 + }, + { + "id": "t_connection", + "fg": 3412 + }, + { + "id": "unconnected", + "fg": 3418 + } + ] + }, + { + "id": "tr_pit", + "fg": 3150, + "bg": 1012, + "rotates": false + }, + { + "id": "tr_spike_pit", + "fg": 3159, + "bg": 1012, + "rotates": false + }, + { + "id": "t_swater_sh", + "fg": 3412, + "bg": 1012, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3409 + }, + { + "id": "edge", + "fg": 3410 + }, + { + "id": "end_piece", + "fg": 3411 + }, + { + "id": "center", + "fg": 3412 + }, + { + "id": "t_connection", + "fg": 3416 + }, + { + "id": "unconnected", + "fg": 3418 + } + ] + }, + { + "id": "t_tree_pine", + "fg": 3306, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_deadpine", + "fg": 3294, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_peach", + "fg": 3283, + "bg": 1012 + }, + { + "id": "t_tree_pear", + "fg": 3283, + "bg": 1012 + }, + { + "id": "t_tree_apricot", + "fg": 3283, + "bg": 1012 + }, + { + "id": "t_tree_cherry", + "fg": 3283, + "bg": 1012 + }, + { + "id": "!t_tree_plum", + "fg": 3283, + "bg": 1012 + }, + { + "id": "t_tree_apple_season_autumn", + "fg": 3284, + "bg": 1012 + }, + { + "id": "t_tree_pear_season_autumn", + "fg": 3305, + "bg": 1012 + }, + { + "id": "t_tree_cherry_season_summer", + "fg": 3293, + "bg": 1012 + }, + { + "id": "t_tree_peach_season_summer", + "fg": 3304, + "bg": 1012 + }, + { + "id": "t_shrub_strawberry_season_summer", + "fg": 3246, + "bg": 1012 + }, + { + "id": "t_shrub_blueberry_season_summer", + "fg": 3074, + "bg": 1012 + }, + { + "id": "f_large_canvas_wall", + "fg": 1471, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 1471 + }, + { + "id": "corner", + "fg": 1472 + }, + { + "id": "edge", + "fg": 1473 + }, + { + "id": "end_piece", + "fg": 1474 + }, + { + "id": "t_connection", + "fg": 1475 + }, + { + "id": "unconnected", + "fg": 1476 + } + ] + }, + { + "id": "t_pit_glass_covered", + "fg": 3153, + "bg": 1012 + }, + { + "id": "t_pit_glass", + "fg": 3154, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_strawberry_harvested", + "fg": 3243, + "bg": 1012 + }, + { + "id": "t_shrub_blueberry_harvested", + "fg": 3243, + "bg": 1012 + }, + { + "id": "t_tree_apple_harvested", + "fg": 3283, + "bg": 1012 + }, + { + "id": "t_tree_apricot_harvested", + "fg": 3283, + "bg": 1012 + }, + { + "id": "t_tree_cherry_harvested", + "fg": 3283, + "bg": 1012 + }, + { + "id": "t_tree_peach_harvested", + "fg": 3283, + "bg": 1012 + }, + { + "id": "t_tree_pear_harvested", + "fg": 3283, + "bg": 1012 + }, + { + "id": "t_tree_plum_harvested", + "fg": 3283, + "bg": 1012 + }, + { + "id": "t_tree_blackjack", + "fg": 3291, + "bg": 1012, + "rotates": false + }, + { + "id": "t_rock_wall_half", + "fg": 3205, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 3205 + }, + { + "id": "center", + "fg": 3206 + }, + { + "id": "corner", + "fg": 3207 + }, + { + "id": "edge", + "fg": 3208 + }, + { + "id": "end_piece", + "fg": 3209 + }, + { + "id": "t_connection", + "fg": 3210 + } + ] + }, + { + "id": "t_improvised_shelter", + "fg": 3098, + "bg": 1012, + "rotates": false + }, + { + "id": "t_leanto", + "fg": 3107, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tarptent", + "fg": 3281, + "bg": 1012, + "rotates": false + }, + { + "id": "t_wall_wattle_half", + "fg": 3388, + "bg": 1012, + "rotates": false + }, + { + "id": "t_wall_wattle", + "fg": 3386, + "bg": 1012, + "rotates": false + }, + { + "id": "t_wall_wattle_broken", + "fg": 3387, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_birch", + "fg": 3287, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_maple", + "fg": 3301, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_willow", + "fg": 3310, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_hickory", + "fg": 3297, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_hickory_season_autumn", + "fg": 3299, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_hickory_harvested", + "fg": 3297, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_hickory_dead", + "fg": 3294, + "bg": 1012 + }, + { + "id": "t_tree_birch_harvested", + "fg": 3288, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_willow_harvested", + "fg": 3311, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_dead", + "fg": 3294, + "bg": 1012 + }, + { + "id": "t_tree_maple_tapped", + "fg": 3303, + "bg": 1012 + }, + { + "id": "t_tree_apricot_season_summer", + "fg": 3286, + "bg": 1012 + }, + { + "id": "!t_tree_plum_season_autumn", + "fg": 3308, + "bg": 1012 + }, + { + "id": "t_chainfence_posts", + "fg": 2993, + "bg": 1012, + "rotates": false + }, + { + "id": "vp_external_diesel_tank", + "fg": 1013, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1013 + } + ] + }, + { + "id": "vp_external_diesel_tank_small", + "fg": 1013, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1013 + } + ] + }, + { + "id": "vp_external_gas_tank", + "fg": 1014, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1014 + } + ] + }, + { + "id": "vp_external_gas_tank_small", + "fg": 1014, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1014 + } + ] + }, + { + "id": "vp_external_water_dirty_tank", + "fg": 1015, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1015 + } + ] + }, + { + "id": "vp_external_water_dirty_tank_small", + "fg": 1015, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1015 + } + ] + }, + { + "id": "vp_external_water_tank", + "fg": 1015, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1015 + } + ] + }, + { + "id": "vp_external_water_tank_small", + "fg": 1015, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1015 + } + ] + }, + { + "id": "vp_external_tank", + "fg": 1015, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1015 + } + ] + }, + { + "id": "vp_external_tank_small", + "fg": 1015, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1015 + } + ] + }, + { + "id": "bio_surgical_razor", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_scalpel", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_adrenaline", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_laser_armgun", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_ads", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_alarm", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_armor_arms", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_armor_eyes", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_armor_head", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_armor_legs", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_armor_torso", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_batteries", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_blade", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_sword", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_blade_weapon", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_blaster", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_blood_anal", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_blood_filter", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_carbon", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_chain_lightning", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_claws", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_claws_weapon", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_climate", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_cloak", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_dex_enhancer", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_digestion", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_ears", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_emp", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_ethanol", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_evap", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_face_mask", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_faraday", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_fingerhack", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_flashbang", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_flashlight", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_furnace", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_geiger", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_gills", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_ground_sonar", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_heat_absorb", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_heatsink", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_hydraulics", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_infrared", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_int_enhancer", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_laser", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_leukocyte", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_lighter", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_lockpick", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_magnet", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_membrane", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_memory", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_metabolics", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_nanobots", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_night", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_night_vision", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_ods", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_painkiller", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_power_armor_interface", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_power_armor_interface_mkII", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_power_storage", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_power_storage_mkII", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_probability_travel", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_purifier", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_radscrubber", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_railgun", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_razors", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_flamethrower", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_emp_armgun", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_blade", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_recycler", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_resonator", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_scent_mask", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_scent_vision", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_shock", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_shockwave", + "fg": 1016, + "rotates": false + }, + { + "id": ["bio_solar", "bn_bio_solar"], + "fg": 1016, + "rotates": false + }, + { + "id": "bio_speed", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_storage", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_str_enhancer", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_sunglasses", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_targeting", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_teleport", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_time_freeze", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_tools", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_torsionratchet", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_uncanny_dodge", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_watch", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_water_extractor", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_reactor", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_advreactor", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_reactor_upgrade", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_plut_filter", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_remote", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_ups", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_meteorologist", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_cqb", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_blaster_gun", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_laser_gun", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_lightning", + "fg": 1016, + "rotates": false + }, + { + "id": "bio_cable", + "fg": 1016 + }, + { + "id": "necropolis_leaflet", + "fg": 1021 + }, + { + "id": "mccmap", + "fg": 1021, + "bg": 1803 + }, + { + "id": "flyer", + "fg": 1054, + "rotates": false + }, + { + "id": "acid", + "fg": 1068, + "rotates": false + }, + { + "id": "energy_drink_atomic", + "fg": 1068, + "rotates": false + }, + { + "id": "lemonlime", + "fg": 1068, + "rotates": false + }, + { + "id": "sewage", + "fg": 1068, + "rotates": false + }, + { + "id": "water_sewage", + "fg": 1068 + }, + { + "id": "plut_slurry", + "fg": 1068 + }, + { + "id": "plut_slurry_dense", + "fg": 1068, + "bg": 1068 + }, + { + "id": "cotton_boll", + "fg": 1069 + }, + { + "id": "adrenaline_injector", + "fg": 1071, + "rotates": false + }, + { + "id": "ammonia", + "fg": 1072, + "rotates": false + }, + { + "id": "protein_drink", + "fg": 1072, + "rotates": false + }, + { + "id": "wine_chardonnay", + "fg": 1072, + "rotates": false + }, + { + "id": "wine_riesling", + "fg": 1072, + "rotates": false + }, + { + "id": "pine_wine", + "fg": 1072 + }, + { + "id": "brew_pine_wine", + "fg": 1072 + }, + { + "id": "irradiated_apple", + "fg": 1077, + "rotates": false + }, + { + "id": "apple_canned", + "fg": 1078, + "rotates": false + }, + { + "id": "apple_vac", + "fg": 1078, + "rotates": false + }, + { + "id": "apple_cider", + "fg": 1079, + "rotates": false + }, + { + "id": "drink_wild_apple", + "fg": 1079, + "rotates": false + }, + { + "id": "mugwort_oil", + "fg": 1079 + }, + { + "id": "apricot", + "fg": 1080, + "rotates": false + }, + { + "id": "irradiated_apricot", + "fg": 1080, + "rotates": false + }, + { + "id": "atomic_coffee", + "fg": 1083, + "rotates": false + }, + { + "id": "imperial_stout", + "fg": 1083, + "rotates": false + }, + { + "id": "chai_tea", + "fg": 1083 + }, + { + "id": "revival_serum", + "fg": 1083, + "rotates": true + }, + { + "id": "bacon", + "fg": 1084, + "rotates": false + }, + { + "id": "cracklins", + "fg": 1084, + "rotates": false + }, + { + "id": "banana", + "fg": 1085, + "rotates": false + }, + { + "id": "irradiated_banana", + "fg": 1085, + "rotates": false + }, + { + "id": ["bandages", "bandages_survivor", "bandages_makeshift", "bandages_makeshift_bleached", "bandages_makeshift_boiled"], + "fg": 1086, + "rotates": false + }, + { + "id": "beer", + "fg": 1088, + "rotates": false + }, + { + "id": "juice", + "fg": 1088, + "rotates": false + }, + { + "id": "long_island", + "fg": 1088, + "rotates": false + }, + { + "id": "oj", + "fg": 1088, + "rotates": false + }, + { + "id": "orangesoda", + "fg": 1088, + "rotates": false + }, + { + "id": "tequila", + "fg": 1088, + "rotates": false + }, + { + "id": "triple_sec", + "fg": 1088, + "rotates": false + }, + { + "id": "vinegar", + "fg": 1088, + "rotates": false + }, + { + "id": ["pine_tea", "tea_willow"], + "fg": 1088 + }, + { + "id": "hb_beer", + "fg": 1088 + }, + { + "id": "bee_balm", + "fg": 1089 + }, + { + "id": "belgian_ale", + "fg": 1090, + "rotates": false + }, + { + "id": "dandelion_wine", + "fg": 1090 + }, + { + "id": "brew_dandelion_wine", + "fg": 1090 + }, + { + "id": "brew_hb_beer", + "fg": 1090 + }, + { + "id": "nicotine_liquid", + "fg": 1090 + }, + { + "id": "thyme_oil", + "fg": 1090 + }, + { + "id": "starch", + "fg": 1091 + }, + { + "id": ["biscuit", "gfbiscuit"], + "fg": 1092, + "rotates": false + }, + { + "id": "brownie_weed", + "fg": 1092 + }, + { + "id": "blackberries", + "fg": 1093, + "rotates": false + }, + { + "id": "irradiated_blackberries", + "fg": 1093 + }, + { + "id": "bleach", + "fg": 1094, + "rotates": false + }, + { + "id": "lye", + "fg": 1094, + "rotates": false + }, + { + "id": ["disinfectant", "disinfectant_survivor", "disinfectant_makeshift"], + "fg": 1094, + "rotates": false + }, + { + "id": "drink_screwdriver", + "fg": 1094, + "rotates": false + }, + { + "id": "gin", + "fg": 1094, + "rotates": false + }, + { + "id": "rum", + "fg": 1094, + "rotates": false + }, + { + "id": "vodka", + "fg": 1094, + "rotates": false + }, + { + "id": "moonshine", + "fg": 1094 + }, + { + "id": "brew_moonshine", + "fg": 1094 + }, + { + "id": "brew_vodka", + "fg": 1094 + }, + { + "id": "brew_rum", + "fg": 1094 + }, + { + "id": "chem_acetic_acid", + "fg": 1094 + }, + { + "id": "chem_hydrogen_peroxide", + "fg": 1094 + }, + { + "id": "chem_hydrogen_peroxide_conc", + "fg": 1094 + }, + { + "id": "chem_acetone", + "fg": 1094 + }, + { + "id": "chem_ethanol", + "fg": 1094 + }, + { + "id": "chem_sulphuric_acid", + "fg": 1094 + }, + { + "id": "denat_alcohol", + "fg": 1094 + }, + { + "id": "water_smoke", + "fg": 1094 + }, + { + "id": "blood", + "fg": 1095, + "rotates": false + }, + { + "id": ["iv_mutagen_lupine", "iv_mutagen_ursine", "iv_mutagen_feline", "iv_mutagen_beast", "iv_mutagen_chimera"], + "fg": 1095, + "rotates": false + }, + { + "id": ["blt", "gfblt"], + "fg": 1096, + "rotates": false + }, + { + "id": "blueberries", + "fg": 1097, + "rotates": false + }, + { + "id": "irradiated_blueberries", + "fg": 1097 + }, + { + "id": "blueberries_cooked", + "fg": 1098, + "rotates": false + }, + { + "id": "jam_blueberries", + "fg": 1098, + "rotates": false + }, + { + "id": "kompot", + "fg": 1098, + "rotates": false + }, + { + "id": "bobburger", + "fg": 1099, + "rotates": false + }, + { + "id": "bone_human", + "fg": 1101, + "rotates": false + }, + { + "id": "bone_tainted", + "fg": 1102, + "rotates": false + }, + { + "id": "bread", + "fg": 1103, + "rotates": false + }, + { + "id": "broccoli", + "fg": 1105, + "rotates": false + }, + { + "id": "irradiated_broccoli", + "fg": 1105, + "rotates": false + }, + { + "id": "broth", + "fg": 1106, + "rotates": false + }, + { + "id": "single_malt_whiskey", + "fg": 1106, + "rotates": false + }, + { + "id": "drink_beeknees", + "fg": 1106 + }, + { + "id": "drink_wsour", + "fg": 1106 + }, + { + "id": "honey_gold", + "fg": 1106 + }, + { + "id": "mead", + "fg": 1106 + }, + { + "id": "broth_bone", + "fg": 1107, + "rotates": false + }, + { + "id": "creamsoda", + "fg": 1107 + }, + { + "id": "european_pilsner", + "fg": 1107, + "rotates": false + }, + { + "id": "india_pale_ale", + "fg": 1107, + "rotates": false + }, + { + "id": "pale_ale", + "fg": 1107, + "rotates": false + }, + { + "id": "brew_mead", + "fg": 1107 + }, + { + "id": "brew_vinegar", + "fg": 1107 + }, + { + "id": "broth_human", + "fg": 1107 + }, + { + "id": "bum_wine", + "fg": 1108 + }, + { + "id": "brew_bum_wine", + "fg": 1108 + }, + { + "id": "drink_hobo", + "fg": 1108 + }, + { + "id": "irradiated_lettuce", + "fg": 1109, + "rotates": false + }, + { + "id": "lettuce", + "fg": 1109, + "rotates": false + }, + { + "id": "irradiated_cabbage", + "fg": 1109 + }, + { + "id": "caff_gum", + "fg": 1111, + "rotates": false + }, + { + "id": ["choc_pancakes", "gfchoc_pancakes"], + "fg": 1112 + }, + { + "id": "calcium_tablet", + "fg": 1114 + }, + { + "id": "popcorn", + "fg": 1117 + }, + { + "id": "popcorn2", + "fg": 1117 + }, + { + "id": "popcorn3", + "fg": 1117 + }, + { + "id": "pelmeni", + "fg": 1117 + }, + { + "id": ["can_coconut", "coconut_water", "jar_cream_coconut"], + "fg": 1120, + "rotates": false + }, + { + "id": ["brew_milk_curdled", "icecream", "icecream_custard", "icecream_gelato", "icecream_artificial"], + "fg": 1120 + }, + { + "id": "buckwheat_cooked", + "fg": 1121 + }, + { + "id": "cereal", + "fg": 1121 + }, + { + "id": "cereal2", + "fg": 1121 + }, + { + "id": "cereal3", + "fg": 1121 + }, + { + "id": "kernels", + "fg": 1121 + }, + { + "id": "hflesh_aspic", + "fg": 1122 + }, + { + "id": "meat_aspic", + "fg": 1122 + }, + { + "id": "veggy_aspic", + "fg": 1122 + }, + { + "id": "can_peach", + "fg": 1123 + }, + { + "id": "juice_pulp", + "fg": 1123 + }, + { + "id": "fish_cooked", + "fg": 1124 + }, + { + "id": "dandelion_cooked", + "fg": 1125 + }, + { + "id": "dandelion_fried", + "fg": 1125 + }, + { + "id": "fish_fried", + "fg": 1125 + }, + { + "id": "fried_spam", + "fg": 1126 + }, + { + "id": "lunchmeat", + "fg": 1126 + }, + { + "id": "material_rocksalt", + "fg": 1128 + }, + { + "id": ["carrot", "seed_carrot_raw"], + "fg": 1129, + "rotates": false + }, + { + "id": "irradiated_carrot", + "fg": 1129, + "rotates": false + }, + { + "id": "celery", + "fg": 1132, + "rotates": false + }, + { + "id": "irradiated_celery", + "fg": 1132 + }, + { + "id": ["cheeseburger", "gfcheeseburger"], + "fg": 1135, + "rotates": false + }, + { + "id": "cheeseburgerhuman", + "fg": 1136, + "rotates": false + }, + { + "id": "cheese_fries", + "fg": 1137, + "rotates": false + }, + { + "id": "cherries", + "fg": 1138, + "rotates": false + }, + { + "id": "irradiated_cherries", + "fg": 1138 + }, + { + "id": "chili", + "fg": 1139, + "rotates": false + }, + { + "id": "drink_kalimotxo", + "fg": 1139 + }, + { + "id": "chili_human", + "fg": 1140, + "rotates": false + }, + { + "id": "chocpretzels", + "fg": 1142 + }, + { + "id": "coffee_bean", + "fg": 1142 + }, + { + "id": "protein_shake_fortified", + "fg": 1143, + "rotates": false + }, + { + "id": "choc_drink", + "fg": 1143, + "rotates": false + }, + { + "id": "hot_chocolate", + "fg": 1143, + "rotates": false + }, + { + "id": "mex_chocolate", + "fg": 1143, + "rotates": false + }, + { + "id": "coffee_syrup", + "fg": 1143, + "rotates": false + }, + { + "id": "cola_meth", + "fg": 1143, + "rotates": false + }, + { + "id": "fertilizer_liquid", + "fg": 1143, + "rotates": false + }, + { + "id": "stout", + "fg": 1143 + }, + { + "id": "soysauce", + "fg": 1143 + }, + { + "id": "molasses", + "fg": 1143 + }, + { + "id": "beet_syrup", + "fg": 1143 + }, + { + "id": "cig", + "fg": 1144, + "rotates": false + }, + { + "id": "candycigarette", + "fg": 1144 + }, + { + "id": "cinnamon", + "fg": 1145 + }, + { + "id": "cigar_lit", + "fg": 1145 + }, + { + "id": "codeine", + "fg": 1147, + "rotates": false + }, + { + "id": "coffee", + "fg": 1148, + "rotates": false + }, + { + "id": "cola", + "fg": 1148, + "rotates": false + }, + { + "id": "drink_rumcola", + "fg": 1148, + "rotates": false + }, + { + "id": "energy_drink", + "fg": 1148, + "rotates": false + }, + { + "id": "irish_coffee", + "fg": 1148, + "rotates": false + }, + { + "id": "rootbeer", + "fg": 1148, + "rotates": false + }, + { + "id": "syrup", + "fg": 1148, + "rotates": false + }, + { + "id": "pudding", + "fg": 1148 + }, + { + "id": "roasted_coffee_bean", + "fg": 1149 + }, + { + "id": "chem_thermite", + "fg": 1149 + }, + { + "id": "coke", + "fg": 1150, + "rotates": false + }, + { + "id": "colamdew", + "fg": 1151, + "rotates": false + }, + { + "id": "con_milk", + "fg": 1153, + "rotates": false + }, + { + "id": "mayonnaise", + "fg": 1153, + "rotates": false + }, + { + "id": ["milk", "rice_milk", "milkshake", "milkshake_deluxe", "milkshake_fastfood"], + "fg": 1153, + "rotates": false + }, + { + "id": "saline", + "fg": 1153, + "rotates": false + }, + { + "id": "strength_potion", + "fg": 1153, + "rotates": false + }, + { + "id": "milk_curdled", + "fg": 1153, + "rotates": false + }, + { + "id": "eggnog", + "fg": 1153 + }, + { + "id": "eggnog_spiked", + "fg": 1153 + }, + { + "id": "dogbane", + "fg": 1154 + }, + { + "id": ["cooking_oil", "oil_garlic"], + "fg": 1156, + "rotates": false + }, + { + "id": "lemonade", + "fg": 1156, + "rotates": false + }, + { + "id": "corn", + "fg": 1157, + "rotates": false + }, + { + "id": "irradiated_corn", + "fg": 1157, + "rotates": false + }, + { + "id": "cornbread", + "fg": 1158, + "rotates": false + }, + { + "id": "porkstick", + "fg": 1159 + }, + { + "id": "lemonade_powder", + "fg": 1161 + }, + { + "id": "grahmcrackers", + "fg": 1163 + }, + { + "id": "cranberries", + "fg": 1164, + "rotates": false + }, + { + "id": "irradiated_cranberries", + "fg": 1164 + }, + { + "id": "cranberry_juice", + "fg": 1165, + "rotates": false + }, + { + "id": "drink_boozeberry", + "fg": 1165, + "rotates": false + }, + { + "id": "purple_drink", + "fg": 1165, + "rotates": false + }, + { + "id": "crispycran", + "fg": 1166, + "rotates": false + }, + { + "id": "drink_strawberry_surprise", + "fg": 1166, + "rotates": false + }, + { + "id": "V8", + "fg": 1166, + "rotates": false + }, + { + "id": "cucumber", + "fg": 1167, + "rotates": false + }, + { + "id": "irradiated_cucumber", + "fg": 1167 + }, + { + "id": "curry_meat", + "fg": 1168, + "rotates": false + }, + { + "id": "milk_coffee", + "fg": 1168 + }, + { + "id": "milk_tea", + "fg": 1168 + }, + { + "id": "curry_veggy", + "fg": 1170, + "rotates": false + }, + { + "id": "fertilizer_commercial", + "fg": 1170 + }, + { + "id": "mixed_alcohol_weak", + "fg": 1170 + }, + { + "id": "dahlia_baked", + "fg": 1171 + }, + { + "id": "dahlia_root", + "fg": 1171 + }, + { + "id": "seed_bee_balm", + "fg": 1172 + }, + { + "id": "dayquil", + "fg": 1173, + "rotates": false + }, + { + "id": "deluxe_rice", + "fg": 1174 + }, + { + "id": "deluxe_veggy_rice", + "fg": 1174 + }, + { + "id": "dry_hflesh", + "fg": 1179 + }, + { + "id": "eyedrops", + "fg": 1184, + "rotates": false + }, + { + "id": "fish_canned", + "fg": 1190, + "rotates": false + }, + { + "id": "fish_pickled", + "fg": 1190, + "rotates": false + }, + { + "id": "fish_vac", + "fg": 1190, + "rotates": false + }, + { + "id": "salted_fish", + "fg": 1190 + }, + { + "id": "sashimi", + "fg": 1191 + }, + { + "id": ["fish_sandwich", "gffish_sandwich"], + "fg": 1192 + }, + { + "id": ["sandwich_veggy", "gfsandwich_veggy"], + "fg": 4261 + }, + { + "id": ["sandwich_t", "gfsandwich_t"], + "fg": 4262 + }, + { + "id": "sandwich_human", + "fg": 4262 + }, + { + "id": ["sandwich_pb", "gfsandwich_pb"], + "fg": 4263 + }, + { + "id": ["sandwich_pbj", "gfsandwich_pbj"], + "fg": 4264 + }, + { + "id": ["sandwich_pbh", "gfsandwich_pbh"], + "fg": 4265 + }, + { + "id": ["sandwich_pbm", "gfsandwich_pbm"], + "fg": 4266 + }, + { + "id": ["sloppyjoe", "gfsloppyjoe"], + "fg": 4267 + }, + { + "id": ["pie_meat", "gfpie_meat"], + "fg": 4267 + }, + { + "id": ["sandwich_cheese_grilled", "gfsandwich_cheese_grilled"], + "fg": 4268 + }, + { + "id": ["sandwich_deluxe", "gfsandwich_deluxe"], + "fg": 1096 + }, + { + "id": "sandwich_dudeluxe", + "fg": 1096 + }, + { + "id": ["sandwich_cucumber", "gfsandwich_cucumber"], + "fg": 4269 + }, + { + "id": ["sandwich_cheese", "gfsandwich_cheese"], + "fg": 4270 + }, + { + "id": ["sandwich_jam", "gfsandwich_jam"], + "fg": 4271 + }, + { + "id": ["sandwich_honey", "gfsandwich_honey"], + "fg": 4265 + }, + { + "id": ["sandwich_sauce", "gfsandwich_sauce"], + "fg": 4272 + }, + { + "id": "vp_bfg_mounted", + "fg": 4273 + }, + { + "id": ["frenchtoast", "gffrenchtoast", "gflffrenchtoast"], + "fg": 1192 + }, + { + "id": "manwich", + "fg": 1192 + }, + { + "id": "toastem", + "fg": 1192 + }, + { + "id": "toastem2", + "fg": 1192 + }, + { + "id": "toastem3", + "fg": 1192 + }, + { + "id": "toasterpastry", + "fg": 1192 + }, + { + "id": "toasterpastryfrozen", + "fg": 1192 + }, + { + "id": "tortilla_corn", + "fg": 1192 + }, + { + "id": "dry_rice", + "fg": 1193 + }, + { + "id": "fries", + "fg": 1194, + "rotates": false + }, + { + "id": "fresh_fries_big", + "fg": 1194, + "rotates": false + }, + { + "id": "fresh_fries", + "fg": 1194 + }, + { + "id": "fruit_cooked", + "fg": 1195, + "rotates": false + }, + { + "id": "jam_fruit", + "fg": 1195, + "rotates": false + }, + { + "id": "protein_shake", + "fg": 1195, + "rotates": false + }, + { + "id": "spezi", + "fg": 1195 + }, + { + "id": "grapefruit", + "fg": 1200, + "rotates": false + }, + { + "id": "irradiated_grapefruit", + "fg": 1200, + "rotates": false + }, + { + "id": "grapes", + "fg": 1201, + "rotates": false + }, + { + "id": "irradiated_grapes", + "fg": 1201 + }, + { + "id": "gum", + "fg": 1202, + "rotates": false + }, + { + "id": ["hamburger", "gfhamburger"], + "fg": 1205, + "rotates": false + }, + { + "id": "handrolled_cig", + "fg": 1206, + "rotates": false + }, + { + "id": "hflesh_vac", + "fg": 1209, + "rotates": false + }, + { + "id": "human_canned", + "fg": 1209, + "rotates": false + }, + { + "id": "human_pickled", + "fg": 1209, + "rotates": false + }, + { + "id": "maple_candy", + "fg": 1211 + }, + { + "id": "honey_bottled", + "fg": 1213, + "rotates": false + }, + { + "id": ["hickory_nut_ambrosia", "lfhickory_nut_ambrosia"], + "fg": 1213, + "rotates": false + }, + { + "id": "buckwheat", + "fg": 1214 + }, + { + "id": "hflesh_powder", + "fg": 1215 + }, + { + "id": "sweet_sausage", + "fg": 1216 + }, + { + "id": "bologna", + "fg": 1218 + }, + { + "id": "inj_vitb", + "fg": 1224 + }, + { + "id": "irradiated_kiwi", + "fg": 1226, + "rotates": false + }, + { + "id": "kiwi", + "fg": 1226, + "rotates": false + }, + { + "id": "irradiated_lemon", + "fg": 1227, + "rotates": false + }, + { + "id": "lemon", + "fg": 1227, + "rotates": false + }, + { + "id": "irradiated_melon", + "fg": 1229, + "rotates": false + }, + { + "id": "melon", + "fg": 1229, + "rotates": false + }, + { + "id": "irradiated_onion", + "fg": 1230, + "rotates": false + }, + { + "id": ["onion", "seed_onion_raw"], + "fg": 1230, + "rotates": false + }, + { + "id": "irradiated_orange", + "fg": 1231, + "rotates": false + }, + { + "id": "orange", + "fg": 1231, + "rotates": false + }, + { + "id": "irradiated_papaya", + "fg": 1232, + "rotates": false + }, + { + "id": "papaya", + "fg": 1232, + "rotates": false + }, + { + "id": "irradiated_peach", + "fg": 1233, + "rotates": false + }, + { + "id": "peach", + "fg": 1233, + "rotates": false + }, + { + "id": "irradiated_pear", + "fg": 1234, + "rotates": false + }, + { + "id": "pear", + "fg": 1234, + "rotates": false + }, + { + "id": "irradiated_pineapple", + "fg": 1235, + "rotates": false + }, + { + "id": "pineapple", + "fg": 1235, + "rotates": false + }, + { + "id": "irradiated_plums", + "fg": 1236, + "rotates": false + }, + { + "id": "plums", + "fg": 1236, + "rotates": false + }, + { + "id": "irradiated_tomato", + "fg": 1239, + "rotates": false + }, + { + "id": "tomato", + "fg": 1239, + "rotates": false + }, + { + "id": "irradiated_watermelon", + "fg": 1240, + "rotates": false + }, + { + "id": "watermelon", + "fg": 1240, + "rotates": false + }, + { + "id": ["jam_strawberries", "icecream_sorbet"], + "fg": 1241, + "rotates": false + }, + { + "id": "strawberries_cooked", + "fg": 1241, + "rotates": false + }, + { + "id": "joint", + "fg": 1244, + "rotates": false + }, + { + "id": "ketchup", + "fg": 1245, + "rotates": false + }, + { + "id": "lasagne", + "fg": 1246 + }, + { + "id": "lasagne_cooked", + "fg": 1246 + }, + { + "id": "lasagne_raw", + "fg": 1247 + }, + { + "id": "luigilasagne", + "fg": 1250 + }, + { + "id": "jar_fish_canned", + "fg": 1251, + "rotates": false + }, + { + "id": "jar_fish_pickled", + "fg": 1251, + "rotates": false + }, + { + "id": "cooked_burrito", + "fg": 1252 + }, + { + "id": "frozen_burrito", + "fg": 1252 + }, + { + "id": "hfleshbologna", + "fg": 1253 + }, + { + "id": ["mannwurstgravy", "mannwurst_raw"], + "fg": 1253 + }, + { + "id": "mycus_fruit", + "fg": 1254 + }, + { + "id": ["cotton_ball", "disincotton_ball"], + "fg": 1255 + }, + { + "id": "cooked_pumpkin", + "fg": 1256 + }, + { + "id": "meal_bone_tainted", + "fg": 1256 + }, + { + "id": "bone_glue", + "fg": 1256 + }, + { + "id": "wasp_glue", + "fg": 1256 + }, + { + "id": "wasp_glue_super", + "fg": 1256 + }, + { + "id": "chem_rocket_fuel", + "fg": 1256 + }, + { + "id": "chem_sulphur", + "fg": 1256 + }, + { + "id": "meat_canned", + "fg": 1259, + "rotates": false + }, + { + "id": "meat_pickled", + "fg": 1259, + "rotates": false + }, + { + "id": "meat_vac", + "fg": 1259, + "rotates": false + }, + { + "id": "glazed_tenderloin", + "fg": 1260 + }, + { + "id": "royal_beef", + "fg": 1260 + }, + { + "id": "meth", + "fg": 1264, + "rotates": false + }, + { + "id": "offal_cooked", + "fg": 1265 + }, + { + "id": "mre_beef", + "fg": 1267, + "rotates": false + }, + { + "id": "mre_chicken", + "fg": 1267, + "rotates": false + }, + { + "id": "mre_hotdogs", + "fg": 1267, + "rotates": false + }, + { + "id": "mre_ravioli", + "fg": 1267, + "rotates": false + }, + { + "id": "mre_veggy", + "fg": 1267, + "rotates": false + }, + { + "id": "mugwort", + "fg": 1268 + }, + { + "id": "mushroom", + "fg": 1269, + "rotates": false + }, + { + "id": "dry_mushroom", + "fg": 1269 + }, + { + "id": "mushroom_magic", + "fg": 1270, + "rotates": false + }, + { + "id": "dry_mushroom_magic", + "fg": 1270 + }, + { + "id": "mushroom_poison", + "fg": 1271, + "rotates": false + }, + { + "id": "mustard", + "fg": 1272, + "rotates": false + }, + { + "id": ["mutagen", "cddaxp_asteroid", "mutagen_mouse", "iv_mutagen_mouse","iv_mutagen_alpha", "iv_mutagen_spider", "iv_mutagen_cattle", "iv_mutagen_rat", "iv_mutagen", "iv_mutagen_fish", "iv_mutagen_raptor", "mutagen_eye_blue", "mutagen_eye_brown", "mutagen_eye_gray", "mutagen_eye_red", "mutagen_eye_green", "mutagen_eye_yellow", "mutagen_skin_pink", "mutagen_skin_light", "mutagen_skin_tan", "mutagen_skin_dark", "mutagen_skin_medium", "mutagen_skin_pale", "mutagen_hair_blonde", "mutagen_hair_red", "mutagen_hair_brown", "mutagen_hair_black", "mutagen_hair_white", "mutagen_hair_pink", "mutagen_hair_gray", "mutagen_hair_bald", "mutagen_hair_bald", "iv_mutagenM", "iv_mutagen_alphaM", "iv_mutagen_beastM", "iv_mutagen_birdM", "iv_mutagen_cattleM", "iv_mutagen_cephalopodM", "iv_mutagen_chimeraM", "iv_mutagen_elfaM", "iv_mutagen_felineM", "iv_mutagen_fishM", "iv_mutagen_insectM", "iv_mutagen_lizardM", "iv_mutagen_lupineM", "iv_mutagen_medicalM", "iv_mutagen_plantM", "iv_mutagen_raptorM", "iv_mutagen_ratM", "iv_mutagen_slimeM", "iv_mutagen_spiderM", "iv_mutagen_tortoise", "iv_mutagen_troglobiteM", "iv_mutagen_ursineM", "iv_purifierM", "mutagen_tortoise", "mutagenM", "mutagen_alphaM", "mutagen_beastM", "mutagen_birdM", "mutagen_cattleM", "mutagen_cephalopodM", "mutagen_chimeraM", "mutagen_elfaM", "mutagen_felineM", "mutagen_fishM", "mutagen_insectM", "mutagen_lizardM", "mutagen_lupineM", "mutagen_medicalM", "mutagen_plantM", "mutagen_raptorM", "mutagen_ratM", "mutagen_slimeM", "mutagen_spiderM", "mutagen_tortoise", "mutagen_troglobiteM", "mutagen_ursineM"], + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_alpha", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_beast", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_bird", + "fg": 1273, + "rotates": false + }, + { + "id": "iv_mutagen_bird", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_cattle", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_cephalopod", + "fg": 1273, + "rotates": false + }, + { + "id": "iv_mutagen_cephalopod", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_chimera", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_elfa", + "fg": 1273, + "rotates": false + }, + { + "id": "iv_mutagen_elfa", + "fg": 1273, + "rotates": false + }, + { + "id": "fighter_sting_juice", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_feline", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_fish", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_insect", + "fg": 1273, + "rotates": false + }, + { + "id": "iv_mutagen_insect", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_lizard", + "fg": 1273, + "rotates": false + }, + { + "id": "iv_mutagen_lizard", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_lupine", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_medical", + "fg": 1273, + "rotates": false + }, + { + "id": "iv_mutagen_medical", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_plant", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_raptor", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_rat", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_spider", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_troglobite", + "fg": 1273, + "rotates": false + }, + { + "id": "iv_mutagen_troglobite", + "fg": 1273, + "rotates": false + }, + { + "id": "mutagen_ursine", + "fg": 1273, + "rotates": false + }, + { + "id": "hflesh_drink", + "fg": 1273 + }, + { + "id": "hflesh_shake", + "fg": 1273 + }, + { + "id": "hflesh_shake_fortified", + "fg": 1273 + }, + { + "id": "chips", + "fg": 1274 + }, + { + "id": "chips2", + "fg": 1274 + }, + { + "id": "chips3", + "fg": 1274 + }, + { + "id": "frozen_dinner", + "fg": 1276 + }, + { + "id": "nachoshf", + "fg": 1276 + }, + { + "id": "cooked_dinner", + "fg": 1277 + }, + { + "id": "nachoshc", + "fg": 1277 + }, + { + "id": "nic_gum", + "fg": 1279, + "rotates": false + }, + { + "id": "chocolate", + "fg": 1279 + }, + { + "id": "cloutie_dumpling", + "fg": 1280 + }, + { + "id": "hobo_helper", + "fg": 1280 + }, + { + "id": "macaroni_cooked", + "fg": 1280 + }, + { + "id": "macaroni_helper", + "fg": 1280 + }, + { + "id": "numbness_potion", + "fg": 1281, + "rotates": false + }, + { + "id": "tea_bark", + "fg": 1281 + }, + { + "id": "nyquil", + "fg": 1282, + "rotates": false + }, + { + "id": ["granola", "gfgranola"], + "fg": 1283 + }, + { + "id": "macaroni_raw", + "fg": 1283 + }, + { + "id": "oats", + "fg": 1286 + }, + { + "id": "wastebread", + "fg": 1286 + }, + { + "id": "fertilizer", + "fg": 1286 + }, + { + "id": "pheromone", + "fg": 1286 + }, + { + "id": ["peanutbutter", "peanutbutter_imitation"], + "fg": 1290 + }, + { + "id": ["pemmican", "hflesh_pemmican"], + "fg": 1291 + }, + { + "id": "pickle", + "fg": 1293, + "rotates": false + }, + { + "id": "candy", + "fg": 1295 + }, + { + "id": "pizza_human", + "fg": 1296, + "rotates": false + }, + { + "id": ["pizza_cheese", "gfpizza_cheese"], + "fg": 1296 + }, + { + "id": ["pizza_meat", "gfpizza_meat"], + "fg": 1297, + "rotates": false + }, + { + "id": ["pizza_veggy", "gfpizza_veggy"], + "fg": 1298, + "rotates": false + }, + { + "id": "plant_sac", + "fg": 1299 + }, + { + "id": "honey_ant", + "fg": 1304 + }, + { + "id": "irradiated_pumpkin", + "fg": 1307 + }, + { + "id": ["purifier", "purifierM"], + "fg": 1308, + "rotates": false + }, + { + "id": "iv_purifier", + "fg": 1308, + "rotates": false + }, + { + "id": "dr_stem_cell", + "fg": 1308, + "rotates": false + }, + { + "id": "marloss_gel", + "fg": 1308 + }, + { + "id": "wash_moonshine", + "fg": 1308 + }, + { + "id": "raspberries", + "fg": 1311, + "rotates": false + }, + { + "id": "irradiated_raspberries", + "fg": 1311 + }, + { + "id": "rehydrated_fish", + "fg": 1314 + }, + { + "id": "rehydrated_hflesh", + "fg": 1315 + }, + { + "id": "rice_cooked", + "fg": 1318 + }, + { + "id": "sushi_rice", + "fg": 1318 + }, + { + "id": "royal_jelly", + "fg": 1319, + "rotates": false + }, + { + "id": "salt_water", + "fg": 1321, + "rotates": false + }, + { + "id": "sauce_pesto", + "fg": 1322, + "rotates": false + }, + { + "id": "sauce_red", + "fg": 1323, + "rotates": false + }, + { + "id": "healing_potion", + "fg": 1323, + "rotates": false + }, + { + "id": "currywurst", + "fg": 1325 + }, + { + "id": "h_currywurst", + "fg": 1325 + }, + { + "id": ["sausagegravy", "sausage_raw"], + "fg": 1325 + }, + { + "id": "raw_dandelion", + "fg": 1326 + }, + { + "id": "onigiri", + "fg": 1328 + }, + { + "id": "seed_onion", + "fg": 1329, + "rotates": false + }, + { + "id": "seed_dogbane", + "fg": 1329 + }, + { + "id": "seed_garlic", + "fg": 1329 + }, + { + "id": "seed_potato", + "fg": 1329 + }, + { + "id": "seed_thyme", + "fg": 1330 + }, + { + "id": "dry_beans", + "fg": 1331 + }, + { + "id": "seed_oats", + "fg": 1331 + }, + { + "id": "raw_beans", + "fg": 1332 + }, + { + "id": "seed_canola", + "fg": 1332 + }, + { + "id": "seed_celery", + "fg": 1332 + }, + { + "id": "seed_mushroom_magic", + "fg": 1332 + }, + { + "id": "seed_mushroom", + "fg": 1332 + }, + { + "id": "seed_mushroom_morel", + "fg": 1332 + }, + { + "id": "candy3", + "fg": 1333 + }, + { + "id": "seed_carrot", + "fg": 1333 + }, + { + "id": "seed_raspberries", + "fg": 1333 + }, + { + "id": "candy2", + "fg": 1334 + }, + { + "id": "seed_blackberries", + "fg": 1334 + }, + { + "id": "marloss_seed", + "fg": 1335 + }, + { + "id": "seed_cranberries", + "fg": 1335 + }, + { + "id": "seed_mushroom_poison", + "fg": 1335 + }, + { + "id": "seed_broccoli", + "fg": 1336 + }, + { + "id": "seed_cucumber", + "fg": 1336 + }, + { + "id": "seed_mugwort", + "fg": 1336 + }, + { + "id": "seed_rhubarb", + "fg": 1336 + }, + { + "id": "seed_veggy_wild", + "fg": 1336 + }, + { + "id": "seed_wild_herbs", + "fg": 1336 + }, + { + "id": "seed_zucchini", + "fg": 1336 + }, + { + "id": "seed_buckwheat", + "fg": 1337 + }, + { + "id": "seed_raw_dandelion", + "fg": 1337 + }, + { + "id": "smores", + "fg": 1339 + }, + { + "id": "soup_chicken", + "fg": 1340, + "rotates": false + }, + { + "id": "soup_dumplings", + "fg": 1341, + "rotates": false + }, + { + "id": "soup_fish", + "fg": 1342, + "rotates": false + }, + { + "id": "wash_whiskey", + "fg": 1342 + }, + { + "id": "soup_human", + "fg": 1343, + "rotates": false + }, + { + "id": "soup_meat", + "fg": 1343 + }, + { + "id": "soup_mushroom", + "fg": 1344, + "rotates": false + }, + { + "id": "soup_tomato", + "fg": 1345, + "rotates": false + }, + { + "id": "mixed_alcohol_strong", + "fg": 1345 + }, + { + "id": "soup_veggy", + "fg": 1346, + "rotates": false + }, + { + "id": "soup_woods", + "fg": 1347, + "rotates": false + }, + { + "id": "sports_drink", + "fg": 1350, + "rotates": false + }, + { + "id": "wash_rum", + "fg": 1350 + }, + { + "id": "wash_vodka", + "fg": 1350 + }, + { + "id": "strawberries", + "fg": 1351, + "rotates": false + }, + { + "id": "irradiated_strawberries", + "fg": 1351 + }, + { + "id": "taint_tornado", + "fg": 1355, + "rotates": false + }, + { + "id": "tallow", + "fg": 1356, + "rotates": false + }, + { + "id": "lard", + "fg": 1356, + "rotates": false + }, + { + "id": "tallow_tainted", + "fg": 1357, + "rotates": false + }, + { + "id": "tea", + "fg": 1358 + }, + { + "id": "dandelion_tea", + "fg": 1358 + }, + { + "id": "herbal_tea", + "fg": 1358 + }, + { + "id": "bee_balm_tea", + "fg": 1358 + }, + { + "id": "canola", + "fg": 1359 + }, + { + "id": "thyme", + "fg": 1361 + }, + { + "id": "beans_cooked", + "fg": 1362 + }, + { + "id": "beansnrice", + "fg": 1362 + }, + { + "id": "deluxe_beans", + "fg": 1362 + }, + { + "id": "deluxe_beansnrice", + "fg": 1362 + }, + { + "id": "deluxe_veggy_beans", + "fg": 1362 + }, + { + "id": "deluxe_veggy_beansnrice", + "fg": 1362 + }, + { + "id": "vaccine_shot", + "fg": 1364, + "rotates": false + }, + { + "id": "flu_shot", + "fg": 1364 + }, + { + "id": "veggy", + "fg": 1365, + "rotates": false + }, + { + "id": "veggy_cooked", + "fg": 1365, + "rotates": false + }, + { + "id": "vine_30", + "fg": 1909, + "bg": 1365 + }, + { + "id": "veggy_canned", + "fg": 1366, + "rotates": false + }, + { + "id": "veggy_pickled", + "fg": 1366, + "rotates": false + }, + { + "id": "veggy_vac", + "fg": 1366, + "rotates": false + }, + { + "id": "dried_salad", + "fg": 1366 + }, + { + "id": "insta_salad", + "fg": 1366 + }, + { + "id": "veggy_salad", + "fg": 1366 + }, + { + "id": "veggy_tainted", + "fg": 1367, + "rotates": false + }, + { + "id": "veggy_wild", + "fg": 1368, + "rotates": false + }, + { + "id": "water", + "fg": 1370, + "rotates": false + }, + { + "id": "water_acid", + "fg": 1371, + "rotates": false + }, + { + "id": "drink_sewerbrew", + "fg": 1371 + }, + { + "id": "water_acid_weak", + "fg": 1372, + "rotates": false + }, + { + "id": "water_clean", + "fg": 1373, + "rotates": false + }, + { + "id": "lamp_oil", + "fg": 1373 + }, + { + "id": "sweet_water", + "fg": 1373 + }, + { + "id": "water_mineral", + "fg": 1373 + }, + { + "id": "maple_sap", + "fg": 1373 + }, + { + "id": "iv_mutagen_plant", + "fg": 1373 + }, + { + "id": ["choc_waffles", "gfchoc_waffles"], + "fg": 1374 + }, + { + "id": ["fruit_waffles", "gffruit_waffles", "gflffruit_waffles"], + "fg": 1374 + }, + { + "id": ["waffles", "gfwaffles", "gflfwaffles", "lfwaffles"], + "fg": 1374 + }, + { + "id": "weed", + "fg": 1375, + "rotates": false + }, + { + "id": "whiskey", + "fg": 1377 + }, + { + "id": "speed_potion", + "fg": 1377 + }, + { + "id": "brandy", + "fg": 1377 + }, + { + "id": "brew_whiskey", + "fg": 1377 + }, + { + "id": "horseradish", + "fg": 1377 + }, + { + "id": "wild_herbs", + "fg": 1378 + }, + { + "id": "wine_cabernet", + "fg": 1379, + "rotates": false + }, + { + "id": "wine_noir", + "fg": 1379, + "rotates": false + }, + { + "id": "fruit_wine", + "fg": 1379 + }, + { + "id": "brew_fruit_wine", + "fg": 1379 + }, + { + "id": "poppysyrup", + "fg": 1379 + }, + { + "id": ["yoghurt", "icecream_yogurt"], + "fg": 1382, + "rotates": false + }, + { + "id": "pepto", + "fg": 1382, + "rotates": false + }, + { + "id": "flask_yeast", + "fg": 1738, + "bg": 1382 + }, + { + "id": "irradiated_zucchini", + "fg": 1383, + "rotates": false + }, + { + "id": "2lcanteen", + "fg": 1384, + "rotates": false + }, + { + "id": "30gal_drum", + "fg": 1385, + "rotates": false + }, + { + "id": "30gal_barrel", + "fg": 1385 + }, + { + "id": "55gal_drum", + "fg": 1386, + "rotates": false + }, + { + "id": "tool_anfo_charge", + "fg": 3793, + "bg": 1386 + }, + { + "id": "tool_anfo_charge_act", + "fg": 3793, + "bg": 1386 + }, + { + "id": "bag_canvas_small", + "fg": 1387 + }, + { + "id": "bag_bundle_10", + "fg": 1388, + "bg": 1387 + }, + { + "id": "bag_plastic", + "fg": 1388, + "rotates": false + }, + { + "id": "bottle_glass", + "fg": 1390, + "rotates": false + }, + { + "id": "fish_trap", + "fg": 1391, + "bg": 3611 + }, + { + "id": "bottle_plastic", + "fg": 1392, + "rotates": false + }, + { + "id": "bottle_plastic_small", + "fg": 1393 + }, + { + "id": "bowl_pewter", + "fg": 1394, + "rotates": false + }, + { + "id": "bowl_plastic", + "fg": 1395, + "rotates": false + }, + { + "id": "mold_plastic", + "fg": 1395 + }, + { + "id": "box_cigarette", + "fg": 1396, + "rotates": false + }, + { + "id": "box_small", + "fg": 1397, + "rotates": false + }, + { + "id": "camelbak", + "fg": 1398 + }, + { + "id": "canteen", + "fg": 1399, + "rotates": false + }, + { + "id": "can_drink", + "fg": 1401, + "rotates": false + }, + { + "id": "can_drink_unsealed", + "fg": 1401 + }, + { + "id": "can_food", + "fg": 1402, + "rotates": false + }, + { + "id": "can_food_unsealed", + "fg": 1403 + }, + { + "id": "ceramic_bowl", + "fg": 1404, + "rotates": false + }, + { + "id": "bowl_clay", + "fg": 1404 + }, + { + "id": "ceramic_cup", + "fg": 1405, + "rotates": false + }, + { + "id": "clay_hydria", + "fg": 1406 + }, + { + "id": "clay_watercont", + "fg": 1407 + }, + { + "id": "cup_plastic", + "fg": 1408, + "rotates": false + }, + { + "id": "cup_plastic_unsealed", + "fg": 1408 + }, + { + "id": "jug_clay", + "fg": 1409 + }, + { + "id": "glass", + "fg": 1410, + "rotates": false + }, + { + "id": "glass_bowl", + "fg": 1411, + "rotates": false + }, + { + "id": ["offal", "offal_canned", "offal_pickled"], + "fg": 1412 + }, + { + "id": "jar_3l_glass", + "fg": 1413, + "rotates": false + }, + { + "id": "jar_3l_glass_sealed", + "fg": 1413 + }, + { + "id": "jar_glass", + "fg": 1414, + "rotates": false + }, + { + "id": "jar_glass_sealed", + "fg": 1414 + }, + { + "id": ["jerrycan", "vp_tank_small"], + "fg": 1415, + "rotates": false + }, + { + "id": ["jerrycan_big", "vp_tank_medium"], + "fg": 1416, + "rotates": false + }, + { + "id": "jug_plastic", + "fg": 1417, + "rotates": false + }, + { + "id": "keg", + "fg": 1418, + "rotates": false + }, + { + "id": "keg_steel", + "fg": 1418, + "rotates": false + }, + { + "id": "tool_rdx_charge", + "fg": 3793, + "bg": 1418 + }, + { + "id": "tool_rdx_charge_act", + "fg": 3793, + "bg": 1418 + }, + { + "id": "straw_basket", + "fg": 1419 + }, + { + "id": "milk_curdling", + "fg": 1431 + }, + { + "id": "milk_curdling2", + "fg": 1419 + }, + { + "id": "milk_curdling3", + "fg": 1432 + }, + { + "id": "gas_chloramine", + "fg": 1421 + }, + { + "id": "gas_fungicidal", + "fg": 1421 + }, + { + "id": "overlay_wielded_clay_hydria", + "fg": 1422, + "rotates": false + }, + { + "id": "overlay_wielded_clay_watercont", + "fg": 1423, + "rotates": false + }, + { + "id": "overlay_wielded_jerrycan", + "fg": 1424, + "rotates": false + }, + { + "id": "overlay_wielded_jerrycan_big", + "fg": 1424, + "rotates": false + }, + { + "id": "overlay_wielded_keg", + "fg": 1425, + "rotates": false + }, + { + "id": "overlay_wielded_30gal_barrel", + "fg": 1425, + "rotates": false + }, + { + "id": "overlay_wielded_30gal_drum", + "fg": 1425, + "rotates": false + }, + { + "id": "overlay_wielded_55gal_drum", + "fg": 1425, + "rotates": false + }, + { + "id": "overlay_wielded_tool_anfo_charge", + "fg": 1425, + "rotates": false + }, + { + "id": "overlay_wielded_tool_anfo_charge_act", + "fg": 1425, + "rotates": false + }, + { + "id": "overlay_wielded_tool_rdx_charge", + "fg": 1425, + "rotates": false + }, + { + "id": "overlay_wielded_tool_rdx_charge_act", + "fg": 1425, + "rotates": false + }, + { + "id": "overlay_wielded_metal_tank", + "fg": 1426, + "rotates": false + }, + { + "id": "overlay_wielded_metal_tank_little", + "fg": 1427, + "rotates": false + }, + { + "id": "overlay_wielded_metal_tank_small", + "fg": 1427, + "rotates": false + }, + { + "id": "overlay_wielded_wooden_barrel", + "fg": 1428, + "rotates": false + }, + { + "id": "overlay_worn_waterskin", + "fg": 1429, + "rotates": false + }, + { + "id": "overlay_worn_sac_purse", + "fg": 1429, + "rotates": false + }, + { + "id": "overlay_worn_waterskin2", + "fg": 1429, + "rotates": false + }, + { + "id": "overlay_worn_waterskin3", + "fg": 1429, + "rotates": false + }, + { + "id": "overlay_worn_fanny", + "fg": 1429, + "rotates": false + }, + { + "id": "overlay_worn_leather_pouch", + "fg": 1429, + "rotates": false + }, + { + "id": "overlay_worn_flintlock_pouch", + "fg": 1429 + }, + { + "id": "overlay_worn_stomach_sealed", + "fg": 1429, + "rotates": false + }, + { + "id": "f_wood_keg", + "fg": 1433, + "rotates": false + }, + { + "id": "f_fvat_empty", + "fg": 1433, + "rotates": false + }, + { + "id": "f_fvat_full", + "fg": 1433, + "rotates": false + }, + { + "id": "wrapper", + "fg": 1434, + "rotates": false + }, + { + "id": "i6_diesel", + "fg": 1439 + }, + { + "id": ["vp_diesel_engine_i6", "vp_diesel_engine_v6", "vp_engine_v6"], + "fg": 1439, + "rotates": true + }, + { + "id": "v6_diesel", + "fg": 1439 + }, + { + "id": "v8_diesel", + "fg": 1440 + }, + { + "id": ["vp_diesel_engine_v12", "vp_engine_v12", "vp_engine_v8", "vp_diesel_engine_v8", "engine_block_massive", "engine_block_large"], + "fg": 1440, + "rotates": true + }, + { + "id": ["vp_engine_1cyl", "engine_block_medium"], + "fg": 1435, + "bg": 957, + "rotates": true + }, + { + "id": ["vp_engine_1cyl_small", "engine_block_tiny", "engine_block_small"], + "fg": 1436, + "bg": 957, + "rotates": true + }, + { + "id": "v12_combustion", + "fg": 1440 + }, + { + "id": "v12_diesel", + "fg": 1440 + }, + { + "id": "f_arcade_machine", + "fg": 1442, + "rotates": false + }, + { + "id": "f_armchair", + "fg": 1443, + "rotates": false + }, + { + "id": "f_ash", + "fg": 1444, + "rotates": false + }, + { + "id": "f_ball_mach", + "fg": 1445, + "rotates": false + }, + { + "id": "f_barricade_road", + "fg": 1446, + "rotates": false + }, + { + "id": "f_bathtub", + "fg": 1447, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 1447 + }, + { + "id": "center", + "fg": 1448 + }, + { + "id": "corner", + "fg": 1449 + }, + { + "id": "edge", + "fg": 1450 + }, + { + "id": "end_piece", + "fg": 1451 + }, + { + "id": "t_connection", + "fg": 1452 + } + ] + }, + { + "id": "f_bed", + "fg": 1453, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 1453 + }, + { + "id": "corner", + "fg": 1454 + }, + { + "id": "edge", + "fg": 1455 + }, + { + "id": "end_piece", + "fg": 1456 + }, + { + "id": "t_connection", + "fg": 1457 + }, + { + "id": "unconnected", + "fg": 1458 + } + ] + }, + { + "id": "f_bigmirror", + "fg": 1459, + "rotates": false + }, + { + "id": "f_bigmirror_b", + "fg": 1460, + "rotates": false + }, + { + "id": "f_blade", + "fg": 1461, + "rotates": false + }, + { + "id": "f_bluebell", + "fg": 1463, + "rotates": false + }, + { + "id": ["f_bookcase", "t_secretdoor_bookcase_c", "t_sliding_bookcase_c", "t_decoy_bookcase", "t_sliding_bookcase_control", "t_sliding_wall_control"], + "fg": 1464, + "rotates": false + }, + { + "id": "f_boulder_large", + "fg": 1465, + "rotates": false + }, + { + "id": "f_boulder_medium", + "fg": 1466, + "rotates": false + }, + { + "id": "f_boulder_small", + "fg": 1467, + "rotates": false + }, + { + "id": "f_bulletin", + "fg": 1468, + "rotates": false + }, + { + "id": "f_canvas_door", + "fg": 1469, + "rotates": false + }, + { + "id": "f_skin_door", + "fg": 1469, + "rotates": false + }, + { + "id": "f_large_canvas_door", + "fg": 1469 + }, + { + "id": "f_canvas_door_o", + "fg": 1470, + "rotates": false + }, + { + "id": "f_skin_door_o", + "fg": 1470, + "rotates": false + }, + { + "id": "f_large_canvas_door_o", + "fg": 1470 + }, + { + "id": "f_cattails", + "fg": 1477, + "rotates": false + }, + { + "id": "f_chair", + "fg": 1478, + "rotates": false + }, + { + "id": "f_chamomile", + "fg": 1479, + "rotates": false + }, + { + "id": "f_coffin_c", + "fg": 1480 + }, + { + "id": "f_coffin_o", + "fg": 1481 + }, + { + "id": "f_crate_c", + "fg": 1482, + "rotates": false + }, + { + "id": "f_crate_o", + "fg": 1483, + "rotates": false + }, + { + "id": "vp_folding wood box", + "fg": 1483, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1483 + } + ] + }, + { + "id": "f_cupboard", + "fg": 1484, + "rotates": false + }, + { + "id": "f_dahlia", + "fg": 1485, + "rotates": false + }, + { + "id": "f_dandelion", + "fg": 1486, + "rotates": false + }, + { + "id": "f_datura", + "fg": 1487, + "rotates": false + }, + { + "id": "f_desk", + "fg": 1488, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 1488 + }, + { + "id": "corner", + "fg": 1489 + }, + { + "id": "edge", + "fg": 1490 + }, + { + "id": "end_piece", + "fg": 1491 + }, + { + "id": "t_connection", + "fg": 1492 + }, + { + "id": "unconnected", + "fg": 1493 + } + ] + }, + { + "id": "w_table", + "fg": 1493 + }, + { + "id": "f_displaycase", + "fg": 1494, + "rotates": false + }, + { + "id": "f_displaycase_b", + "fg": 1495, + "rotates": false + }, + { + "id": "f_dive_block", + "fg": 1496, + "rotates": false + }, + { + "id": "f_dresser", + "fg": 1497, + "rotates": false + }, + { + "id": "f_dryer", + "fg": 1498, + "rotates": false + }, + { + "id": "f_dumpster", + "fg": 1499, + "rotates": false, + "multitile": false, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 1499 + }, + { + "id": "center", + "fg": 1500 + }, + { + "id": "corner", + "fg": 1501 + }, + { + "id": "edge", + "fg": 1502 + }, + { + "id": "end_piece", + "fg": 1503 + }, + { + "id": "t_connection", + "fg": 1504 + } + ] + }, + { + "id": "f_egg_sackbw", + "fg": 1505, + "rotates": false + }, + { + "id": "f_egg_sackcs", + "fg": 1505, + "rotates": false + }, + { + "id": "f_egg_sacke", + "fg": 1506, + "rotates": false + }, + { + "id": "f_egg_sackws", + "fg": 1507, + "rotates": false + }, + { + "id": "f_ergometer", + "fg": 1508, + "rotates": false + }, + { + "id": "f_exercise", + "fg": 1509, + "rotates": false + }, + { + "id": "f_fema_groundsheet", + "fg": 1510, + "rotates": false + }, + { + "id": "vp_roof_cloth", + "fg": 1510, + "rotates": false + }, + { + "id": "f_groundsheet", + "fg": 1510, + "rotates": false + }, + { + "id": "f_large_groundsheet", + "fg": 1510 + }, + { + "id": "f_canvas_floor", + "fg": 1510 + }, + { + "id": "f_center_groundsheet", + "fg": 1510 + }, + { + "id": "f_skin_groundsheet", + "fg": 1510 + }, + { + "id": "t_raincatcher", + "fg": 3174, + "bg": 1510, + "rotates": false + }, + { + "id": "f_file_cabinet", + "fg": 1511, + "rotates": false + }, + { + "id": "f_locker", + "fg": 1511, + "rotates": false + }, + { + "id": "f_fireplace", + "fg": 1512, + "rotates": false + }, + { + "id": "f_forge_rock", + "fg": 1512 + }, + { + "id": "f_floor_canvas", + "fg": 1513, + "rotates": false + }, + { + "id": "f_flower_marloss", + "fg": 1515, + "rotates": false + }, + { + "id": "f_fridge", + "fg": 1516, + "rotates": false + }, + { + "id": "vp_fridge", + "fg": 1516, + "rotates": false + }, + { + "id": "fridge", + "fg": 1516, + "rotates": false + }, + { + "id": ["dc_fridge", "vp_dc_fridge"], + "fg": 1516, + "rotates": false + }, + { + "id": ["vp_minifridge", "vp_minifreezer"], + "fg": 1516, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1516 + } + ] + }, + { + "id": "f_glass_fridge", + "fg": 1519, + "rotates": false + }, + { + "id": "f_grave_head", + "fg": 1520 + }, + { + "id": "f_grave_monument", + "fg": 1521 + }, + { + "id": "f_grave_stone", + "fg": 1522 + }, + { + "id": "f_grave_stone_old", + "fg": 1523 + }, + { + "id": "f_gunsafe_mj", + "fg": 1524, + "rotates": false + }, + { + "id": "f_gunsafe_ml", + "fg": 1525, + "rotates": false + }, + { + "id": "f_gun_safe_el", + "fg": 1526, + "rotates": false + }, + { + "id": "f_hay", + "fg": 1527, + "rotates": false + }, + { + "id": "f_indoor_plant", + "fg": 1529, + "rotates": false + }, + { + "id": "f_indoor_plant_y", + "fg": 1530, + "rotates": false + }, + { + "id": "f_kiln_full", + "fg": 1531, + "rotates": false + }, + { + "id": "f_kiln_empty", + "fg": 1531 + }, + { + "id": "f_clay_kiln", + "fg": 1531 + }, + { + "id": "f_lane", + "fg": 1532, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 1532 + }, + { + "id": "corner", + "fg": 1533 + }, + { + "id": "edge", + "fg": 1534 + }, + { + "id": "end_piece", + "fg": 1535 + } + ] + }, + { + "id": "f_makeshift_bed", + "fg": 1536, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 1537 + }, + { + "id": "corner", + "fg": 1538 + }, + { + "id": "edge", + "fg": 1539 + }, + { + "id": "end_piece", + "fg": 1540 + }, + { + "id": "t_connection", + "fg": 1541 + }, + { + "id": "unconnected", + "fg": 1542 + } + ] + }, + { + "id": "f_mannequin", + "fg": 1543, + "rotates": false + }, + { + "id": "mon_hallu_mannequin", + "fg": 1543 + }, + { + "id": "f_mutpoppy", + "fg": 1545, + "rotates": false + }, + { + "id": "f_oven", + "fg": 1546, + "rotates": false + }, + { + "id": "f_pinball_machine", + "fg": 1547, + "rotates": false + }, + { + "id": "f_plant_harvest", + "fg": 1548, + "bg": 3020, + "rotates": false + }, + { + "id": "f_plant_mature", + "fg": 1549, + "bg": 3020, + "rotates": false + }, + { + "id": "f_plant_seed", + "fg": 1550, + "bg": 3020, + "rotates": false + }, + { + "id": "f_plant_seedling", + "fg": 1551, + "bg": 3020, + "rotates": false + }, + { + "id": "f_pool_table", + "fg": 1552, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 1552 + }, + { + "id": "end_piece", + "fg": 1553 + }, + { + "id": "t_connection", + "fg": 1554 + } + ] + }, + { + "id": "f_rack", + "fg": 1555, + "rotates": false + }, + { + "id": "blaze_mag_hbolt", + "fg": 3986, + "rotates": false + }, + { + "id": "f_safe_c", + "fg": 1558, + "rotates": false + }, + { + "id": "safe_box", + "fg": 1558 + }, + { + "id": "f_safe_l", + "fg": 1559, + "rotates": false + }, + { + "id": "f_safe_o", + "fg": 1560, + "rotates": false + }, + { + "id": "f_sandbag_half", + "fg": 1561, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 1561 + }, + { + "id": "center", + "fg": 1562 + }, + { + "id": "corner", + "fg": 1563 + }, + { + "id": "edge", + "fg": 1564 + }, + { + "id": "end_piece", + "fg": 1565 + }, + { + "id": "t_connection", + "fg": 1566 + } + ] + }, + { + "id": "f_sandbag_wall", + "fg": 1561, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 1561 + }, + { + "id": "center", + "fg": 1567 + }, + { + "id": "corner", + "fg": 1568 + }, + { + "id": "edge", + "fg": 1569 + }, + { + "id": "end_piece", + "fg": 1570 + }, + { + "id": "t_connection", + "fg": 1571 + } + ] + }, + { + "id": "f_shackle", + "fg": 1572 + }, + { + "id": "f_shower", + "fg": 1573, + "rotates": false + }, + { + "id": "f_sign", + "fg": 1574, + "rotates": false + }, + { + "id": "f_sink", + "fg": 1575, + "rotates": false + }, + { + "id": "f_slab", + "fg": 1576 + }, + { + "id": "f_smoking_rack", + "fg": 1577, + "rotates": false + }, + { + "id": "f_sofa", + "fg": 1578, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 1578 + }, + { + "id": "corner", + "fg": 1579 + }, + { + "id": "edge", + "fg": 1580 + }, + { + "id": "end_piece", + "fg": 1581 + } + ] + }, + { + "id": "f_spike", + "fg": 1582, + "rotates": false + }, + { + "id": ["f_statue", "t_sliding_brick_wall_control"], + "fg": 1583, + "rotates": false + }, + { + "id": "f_straw_bed", + "fg": 1584, + "rotates": false + }, + { + "id": "f_table", + "fg": 1585, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 1585 + }, + { + "id": "corner", + "fg": 1586 + }, + { + "id": "edge", + "fg": 1587 + }, + { + "id": "end_piece", + "fg": 1588 + }, + { + "id": "t_connection", + "fg": 1589 + }, + { + "id": "unconnected", + "fg": 1590 + } + ] + }, + { + "id": "f_counter", + "fg": 1585, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 1585 + }, + { + "id": "corner", + "fg": 1586 + }, + { + "id": "edge", + "fg": 1587 + }, + { + "id": "end_piece", + "fg": 1588 + }, + { + "id": "t_connection", + "fg": 1589 + }, + { + "id": "unconnected", + "fg": 1590 + } + ] + }, + { + "id": "f_toilet", + "fg": 1594, + "rotates": false + }, + { + "id": "f_trashcan", + "fg": 1595, + "rotates": false + }, + { + "id": "f_treadmill", + "fg": 1596, + "rotates": false + }, + { + "id": "f_vending_c", + "fg": 1597, + "rotates": false + }, + { + "id": "f_vending_o", + "fg": 1598, + "rotates": false + }, + { + "id": "f_vending_reinforced", + "fg": 1599, + "rotates": false + }, + { + "id": "f_washer", + "fg": 1600, + "rotates": false + }, + { + "id": "f_woodstove", + "fg": 1601, + "rotates": false + }, + { + "id": "f_wreckage", + "fg": 1602, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 4579 + }, + { + "id": "corner", + "fg": 4580 + }, + { + "id": "edge", + "fg": 4581 + }, + { + "id": "end_piece", + "fg": 4581 + }, + { + "id": "t_connection", + "fg": 4582 + }, + { + "id": "unconnected", + "fg": [{ "weight":1, "sprite":4584}, { "weight":1, "sprite":4585}] + } + ] + }, + { + "id": "120mm_casing", + "fg": 1603, + "rotates": false + }, + { + "id": "155mm_casing", + "fg": 1603, + "rotates": false + }, + { + "id": "223_casing", + "fg": 1604, + "rotates": false + }, + { + "id": "654_casing", + "fg": 1604, + "rotates": false + }, + { + "id": "545_casing", + "fg": 1604, + "rotates": false + }, + { + "id": "22_casing", + "fg": 1605, + "rotates": false + }, + { + "id": "22_casing_new", + "fg": 1605, + "rotates": false + }, + { + "id": "2x4", + "fg": 1606, + "rotates": false + }, + { + "id": "3006_casing", + "fg": 1607, + "rotates": false + }, + { + "id": ["300_casing", ".300_casing", ".303_casing"], + "fg": 1608, + "rotates": false + }, + { + "id": "308_casing", + "fg": 1609, + "rotates": false + }, + { + "id": "30mm_casing", + "fg": 1610, + "rotates": false + }, + { + "id": "32_casing", + "fg": 1611, + "rotates": false + }, + { + "id": "40mm_casing", + "fg": 1613, + "rotates": false + }, + { + "id": "5x50_hull", + "fg": 1613, + "rotates": false + }, + { + "id": "40_casing", + "fg": 1614, + "rotates": false + }, + { + "id": "44_casing", + "fg": 1615, + "rotates": false + }, + { + "id": "454_casing", + "fg": 1616, + "rotates": false + }, + { + "id": "50_casing", + "fg": 1616, + "rotates": false + }, + { + "id": "clay_canister", + "fg": 1616 + }, + { + "id": "45_casing", + "fg": 1617, + "rotates": false + }, + { + "id": "46mm_casing", + "fg": 1618, + "rotates": false + }, + { + "id": "700nx_casing", + "fg": 1618, + "rotates": false + }, + { + "id": "500_casing", + "fg": 1619, + "rotates": false + }, + { + "id": "57mm_casing", + "fg": 1620, + "rotates": false + }, + { + "id": "762R_casing", + "fg": 1621, + "rotates": false + }, + { + "id": ["762_casing", "762_38R_casing", "762_51_casing", "8mm_casing"], + "fg": 1622, + "rotates": false + }, + { + "id": "762_25_casing", + "fg": 1622 + }, + { + "id": ["9mm_casing", ".380_casing"], + "fg": 1623, + "rotates": false + }, + { + "id": "9x18mm_casing", + "fg": 1623, + "rotates": false + }, + { + "id": "alarmclock", + "fg": 1624, + "rotates": false + }, + { + "id": "alloy_plate", + "fg": 1625, + "rotates": false + }, + { + "id": "chitin_plate", + "fg": 1708, + "bg": 1625 + }, + { + "id": "pump_complex", + "fg": 1627 + }, + { + "id": "ammolink223", + "fg": 1629 + }, + { + "id": "ammolink308", + "fg": 1629 + }, + { + "id": "ammolink40mm", + "fg": 1629 + }, + { + "id": "ammolink50", + "fg": 1629 + }, + { + "id": "ammolink30mm", + "fg": 1629 + }, + { + "id": "amplifier", + "fg": 1630, + "rotates": false + }, + { + "id": "bot_antimateriel", + "fg": 1631, + "bg": 2644 + }, + { + "id": "bot_laserturret", + "fg": 1631, + "bg": 2644 + }, + { + "id": "bot_rifleturret", + "fg": 1631, + "bg": 2644 + }, + { + "id": "bot_turret", + "fg": 1631, + "bg": 2644 + }, + { + "id": "directional_antenna", + "fg": 1631 + }, + { + "id": "smart_lamp_on", + "fg": 1636 + }, + { + "id": "smart_lamp", + "fg": 1637 + }, + { + "id": "bag_apple_vac", + "fg": 1639, + "rotates": false + }, + { + "id": "bag_fish_vac", + "fg": 1640, + "rotates": false + }, + { + "id": "bag_hflesh_vac", + "fg": 1641, + "rotates": false + }, + { + "id": "bag_meat_vac", + "fg": 1642, + "rotates": false + }, + { + "id": "bag_veggy_vac", + "fg": 1643, + "rotates": false + }, + { + "id": "baseball", + "fg": 1644, + "rotates": false + }, + { + "id": "bat", + "fg": 1646, + "rotates": false + }, + { + "id": "PR24-extended", + "fg": 1647 + }, + { + "id": "PR24-retracted", + "fg": 1648 + }, + { + "id": "bat_metal", + "fg": 1651, + "rotates": false + }, + { + "id": "bee_sting", + "fg": 1652, + "rotates": false + }, + { + "id": "biollante_bud", + "fg": 1653 + }, + { + "id": "dahlia_bud", + "fg": 1653 + }, + { + "id": "dahlia_flower", + "fg": 1653 + }, + { + "id": "honey_scraper", + "fg": 1655 + }, + { + "id": "bluebell_bud", + "fg": 1656 + }, + { + "id": "bluebell_flower", + "fg": 1656 + }, + { + "id": "bone", + "fg": 1657, + "rotates": false + }, + { + "id": "bowling_axe", + "fg": 1658 + }, + { + "id": "bowling_pin", + "fg": 1660 + }, + { + "id": "broken_animatronic_bat", + "fg": 1662, + "rotates": false + }, + { + "id": "broken_animatronic_bear_new", + "fg": 1663, + "rotates": false + }, + { + "id": "broken_animatronic_bear_old", + "fg": 1664, + "rotates": false + }, + { + "id": "broken_animatronic_beaver", + "fg": 1665, + "rotates": false + }, + { + "id": "broken_animatronic_bunny_new", + "fg": 1666, + "rotates": false + }, + { + "id": "broken_animatronic_bunny_old", + "fg": 1667, + "rotates": false + }, + { + "id": "broken_animatronic_cat", + "fg": 1668, + "rotates": false + }, + { + "id": "broken_animatronic_chicken_new", + "fg": 1669, + "rotates": false + }, + { + "id": "broken_animatronic_chicken_old", + "fg": 1670, + "rotates": false + }, + { + "id": "broken_animatronic_child", + "fg": 1671, + "rotates": false + }, + { + "id": "broken_animatronic_chipmunk", + "fg": 1672, + "rotates": false + }, + { + "id": "broken_animatronic_cow", + "fg": 1673, + "rotates": false + }, + { + "id": "broken_animatronic_coyote", + "fg": 1674, + "rotates": false + }, + { + "id": "broken_animatronic_deer", + "fg": 1675, + "rotates": false + }, + { + "id": "broken_animatronic_fox_new", + "fg": 1676, + "rotates": false + }, + { + "id": "broken_animatronic_fox_old", + "fg": 1677, + "rotates": false + }, + { + "id": "broken_animatronic_fox_wreck", + "fg": 1678, + "rotates": false + }, + { + "id": "broken_animatronic_horse", + "fg": 1679, + "rotates": false + }, + { + "id": "broken_animatronic_pig", + "fg": 1680, + "rotates": false + }, + { + "id": "broken_animatronic_sheep", + "fg": 1681, + "rotates": false + }, + { + "id": "broken_animatronic_squirrel", + "fg": 1682, + "rotates": false + }, + { + "id": "broken_animatronic_wolf", + "fg": 1683, + "rotates": false + }, + { + "id": "broken_c4_hack", + "fg": 1686 + }, + { + "id": "broken_EMP_hack", + "fg": 1686 + }, + { + "id": "broken_flashbang_hack", + "fg": 1686 + }, + { + "id": "broken_gasbomb_hack", + "fg": 1686 + }, + { + "id": "broken_grenade_hack", + "fg": 1686 + }, + { + "id": "broken_mininuke_hack", + "fg": 1686 + }, + { + "id": "broken_manhack_fire", + "fg": 1686 + }, + { + "id": "bot_c4_hack", + "fg": 1686 + }, + { + "id": "bot_EMP_hack", + "fg": 1686 + }, + { + "id": "bot_flashbang_hack", + "fg": 1686 + }, + { + "id": "bot_gasbomb_hack", + "fg": 1686 + }, + { + "id": "bot_grenade_hack", + "fg": 1686 + }, + { + "id": "bot_manhack", + "fg": 1686 + }, + { + "id": "bot_manhack_fire", + "fg": 1686 + }, + { + "id": "bot_mininuke_hack", + "fg": 1686 + }, + { + "id": "broken_marionette", + "fg": 1687, + "rotates": false + }, + { + "id": "broken_molebot", + "fg": 1688, + "rotates": false + }, + { + "id": "broken_riotbot", + "fg": 1689, + "rotates": false + }, + { + "id": "broken_skitterbot", + "fg": 1690, + "rotates": false + }, + { + "id": "broken_tankbot", + "fg": 1691, + "rotates": false + }, + { + "id": "broken_tripod", + "fg": 1692, + "rotates": false + }, + { + "id": "broom", + "fg": 1693, + "rotates": false + }, + { + "id": "cannabis", + "fg": 1699 + }, + { + "id": "can_sealer", + "fg": 1700 + }, + { + "id": "f_kiln_metal_empty", + "fg": 1706, + "rotates": false + }, + { + "id": "f_kiln_metal_full", + "fg": 1706, + "rotates": false + }, + { + "id": "vp_chime", + "fg": 1707, + "rotates": true + }, + { + "id": "chimes", + "fg": 1707 + }, + { + "id": "vp_chimes", + "fg": 1707, + "rotates": true + }, + { + "id": "cig_butt", + "fg": 1709, + "rotates": false + }, + { + "id": "cigar_butt", + "fg": 1709 + }, + { + "id": "cig_lit", + "fg": 1710, + "rotates": false + }, + { + "id": "clock", + "fg": 1714, + "rotates": false + }, + { + "id": "chunk_sulfur", + "fg": 1715 + }, + { + "id": "corpse", + "fg": 1716, + "rotates": false + }, + { + "id": "filter_air", + "fg": 1717 + }, + { + "id": "filter_air_makeshift", + "fg": 1717 + }, + { + "id": "filter_liquid", + "fg": 1717 + }, + { + "id": "filter_liquid_makeshift", + "fg": 1717 + }, + { + "id": "cu_pipe", + "fg": 1722, + "rotates": false + }, + { + "id": "exploding_arrow_warhead", + "fg": 1728, + "rotates": false + }, + { + "id": "fan", + "fg": 1730, + "rotates": false + }, + { + "id": "nomex", + "fg": 1731 + }, + { + "id": "neoprene", + "fg": 1731 + }, + { + "id": "file", + "fg": 1735, + "rotates": false + }, + { + "id": "fish_bowl", + "fg": 1737, + "rotates": false + }, + { + "id": "flask_glass", + "fg": 1738, + "rotates": false + }, + { + "id": "floodlight", + "fg": 1739, + "rotates": false + }, + { + "id": "headlight_reinforced", + "fg": 1739, + "rotates": false + }, + { + "id": ["car_headlight", "vp_headlight", "vp_headlight_reinforced"], + "fg": 1739 + }, + { + "id": "football", + "fg": 1741, + "rotates": false + }, + { + "id": "fork", + "fg": 1743, + "rotates": false + }, + { + "id": "frame", + "fg": 1744, + "rotates": false + }, + { + "id": "vp_frame_cross", + "fg": 1744, + "rotates": true + }, + { + "id": "frame_wood", + "fg": 1745, + "rotates": false + }, + { + "id": "vp_frame_wood_cross", + "fg": 1745, + "rotates": true + }, + { + "id": "vp_frame_wood_light_cross", + "fg": 1745, + "rotates": true + }, + { + "id": "fur", + "fg": 1746, + "rotates": false + }, + { + "id": "glass_shard", + "fg": 1751, + "rotates": false + }, + { + "id": "glass_shiv", + "fg": 1753 + }, + { + "id": "golf_club", + "fg": 1754, + "rotates": false + }, + { + "id": "grapnel", + "fg": 1755 + }, + { + "id": "handflare_dead", + "fg": 1758, + "rotates": false + }, + { + "id": ["hand_rims", "vp_hand_rims"], + "fg": 1760 + }, + { + "id": "vp_wheel_wheelchair", + "fg": 1760, + "rotates": true + }, + { + "id": "wheel_wheelchair", + "fg": 1760 + }, + { + "id": "hard_plate", + "fg": 1761, + "rotates": false + }, + { + "id": "hdframe", + "fg": 1763, + "rotates": false + }, + { + "id": "vp_hdframe_cross", + "fg": 1763, + "rotates": true + }, + { + "id": "id_military", + "fg": 1768, + "rotates": false + }, + { + "id": "id_science", + "fg": 1769, + "rotates": false + }, + { + "id": "javelin_iron", + "fg": 1772 + }, + { + "id": "joint_lit", + "fg": 1775, + "rotates": false + }, + { + "id": "joint_roach", + "fg": 1776, + "rotates": false + }, + { + "id": "knife_butter", + "fg": 1778, + "rotates": false + }, + { + "id": "kris_fake", + "fg": 1784 + }, + { + "id": "kris", + "fg": 1784 + }, + { + "id": "lajatang", + "fg": 1785 + }, + { + "id": "laptop", + "fg": 1786, + "rotates": false + }, + { + "id": "camera_control", + "fg": 1824, + "bg": 1786 + }, + { + "id": "control_laptop", + "fg": 3483, + "bg": 1786 + }, + { + "id": "leather", + "fg": 1788, + "rotates": false + }, + { + "id": "brooch", + "fg": 1789 + }, + { + "id": "peephole", + "fg": 1789 + }, + { + "id": "log", + "fg": 1792, + "rotates": false + }, + { + "id": "l_car_223_kit", + "fg": 1794 + }, + { + "id": "l_dsr_223_kit", + "fg": 1794 + }, + { + "id": "l_HFPack", + "fg": 1794 + }, + { + "id": "l_lmg_223_kit", + "fg": 1794 + }, + { + "id": "l_mbr_223_kit", + "fg": 1794 + }, + { + "id": "mn_classic_kit", + "fg": 1794 + }, + { + "id": "mn_ebr_kit", + "fg": 1794 + }, + { + "id": "radio_car_box", + "fg": 1794 + }, + { + "id": "manhole_cover", + "fg": 1797, + "rotates": false + }, + { + "id": "silver", + "fg": 1799 + }, + { + "id": "mold_metal", + "fg": 1799 + }, + { + "id": "material_niter", + "fg": 1800 + }, + { + "id": "microwave", + "fg": 1802, + "rotates": false + }, + { + "id": "restaurantmap", + "fg": 1803 + }, + { + "id": "ulmap", + "fg": 1803 + }, + { + "id": "shmap", + "fg": 1803 + }, + { + "id": "semap", + "fg": 1803 + }, + { + "id": "biomap", + "fg": 1803 + }, + { + "id": "mil_plate", + "fg": 1804, + "rotates": false + }, + { + "id": ["mirror", "vp_inboard_mirror"], + "fg": 1806, + "rotates": false + }, + { + "id": "money_bundle", + "fg": 1810, + "rotates": false + }, + { + "id": "mre_beef_box", + "fg": 1814, + "rotates": false + }, + { + "id": "mre_chicken_box", + "fg": 1815, + "rotates": false + }, + { + "id": "mre_hotdog_box", + "fg": 1816, + "rotates": false + }, + { + "id": "mre_ravioli_box", + "fg": 1817, + "rotates": false + }, + { + "id": "mre_veggy_box", + "fg": 1818, + "rotates": false + }, + { + "id": "nailbat", + "fg": 1821, + "rotates": false + }, + { + "id": "bwirebat", + "fg": 1821 + }, + { + "id": "newest_newspaper", + "fg": 1823, + "rotates": false + }, + { + "id": "one_year_old_newspaper", + "fg": 1823 + }, + { + "id": "many_years_old_newspaper", + "fg": 1823 + }, + { + "id": "months_old_newspaper", + "fg": 1823 + }, + { + "id": "weeks_old_newspaper", + "fg": 1823 + }, + { + "id": "years_old_newspaper", + "fg": 1823 + }, + { + "id": "survnote", + "fg": 1823 + }, + { + "id": "overlay_wielded_bagh_nakha", + "fg": 1825, + "rotates": false + }, + { + "id": "overlay_wielded_bat", + "fg": 1826, + "rotates": false + }, + { + "id": "overlay_wielded_baton-extended", + "fg": 1827, + "rotates": false + }, + { + "id": "overlay_wielded_PR24-extended", + "fg": 1827, + "rotates": false + }, + { + "id": "overlay_wielded_bat_metal", + "fg": 1828, + "rotates": false + }, + { + "id": "overlay_wielded_bee_sting", + "fg": 1829, + "rotates": false + }, + { + "id": "overlay_wielded_fighter_sting", + "fg": 1829, + "rotates": false + }, + { + "id": "overlay_wielded_screwdriver", + "fg": 1829, + "rotates": false + }, + { + "id": "overlay_wielded_screwdriver_set", + "fg": 1829, + "rotates": false + }, + { + "id": "overlay_wielded_sharp_toothbrush", + "fg": 1829, + "rotates": false + }, + { + "id": "overlay_wielded_spike", + "fg": 1829, + "rotates": false + }, + { + "id": "overlay_wielded_wasp_sting", + "fg": 1829, + "rotates": false + }, + { + "id": "overlay_wielded_PR24-retracted", + "fg": 1829, + "rotates": false + }, + { + "id": "overlay_wielded_baton", + "fg": 1829, + "rotates": false + }, + { + "id": "overlay_wielded_bio_blade_weapon", + "fg": 1830, + "rotates": false + }, + { + "id": "overlay_wielded_bio_sword_weapon", + "fg": 1830, + "rotates": false + }, + { + "id": "overlay_wielded_bio_claws_weapon", + "fg": 1831, + "rotates": false + }, + { + "id": ["overlay_wielded_bokken", "overlay_wielded_bokken_fake", "overlay_wielded_bokken_inferior"], + "fg": 1832, + "rotates": false + }, + { + "id": "overlay_wielded_sword_wood", + "fg": 1832, + "rotates": false + }, + { + "id": "overlay_wielded_bowling_axe", + "fg": 1833, + "rotates": false + }, + { + "id": "overlay_wielded_broom", + "fg": 1834, + "rotates": false + }, + { + "id": "overlay_wielded_bullwhip", + "fg": 1835, + "rotates": false + }, + { + "id": "overlay_wielded_bwirebat", + "fg": 1836, + "rotates": false + }, + { + "id": "overlay_wielded_homewrecker", + "fg": 1836, + "rotates": false + }, + { + "id": "overlay_wielded_nailbat", + "fg": 1836, + "rotates": false + }, + { + "id": "overlay_wielded_sword_nail", + "fg": 1836, + "rotates": false + }, + { + "id": "overlay_wielded_candlestick", + "fg": 1837, + "rotates": false + }, + { + "id": "overlay_wielded_cane", + "fg": 1838, + "rotates": false + }, + { + "id": "overlay_wielded_chain", + "fg": 1839, + "rotates": false + }, + { + "id": "overlay_wielded_corpse", + "fg": 1840, + "rotates": false + }, + { + "id": "overlay_wielded_cudgel", + "fg": 1841, + "rotates": false + }, + { + "id": "overlay_wielded_javelin", + "fg": 1841, + "rotates": false + }, + { + "id": "overlay_wielded_pointy_stick", + "fg": 1841, + "rotates": false + }, + { + "id": "overlay_wielded_pool_cue", + "fg": 1841, + "rotates": false + }, + { + "id": "overlay_wielded_javelin_copper", + "fg": 1841, + "rotates": false + }, + { + "id": "overlay_wielded_cu_pipe", + "fg": 1842, + "rotates": false + }, + { + "id": "overlay_wielded_stick", + "fg": 1842, + "rotates": false + }, + { + "id": "overlay_wielded_digging_stick", + "fg": 1843, + "rotates": false + }, + { + "id": "overlay_wielded_2x4", + "fg": 1843, + "rotates": false + }, + { + "id": "overlay_wielded_fencing_epee", + "fg": 1844, + "rotates": false + }, + { + "id": "overlay_wielded_fencing_foil", + "fg": 1844, + "rotates": false + }, + { + "id": "overlay_wielded_fencing_sabre", + "fg": 1844, + "rotates": false + }, + { + "id": "overlay_wielded_estoc", + "fg": 1844, + "rotates": false + }, + { + "id": "overlay_wielded_estoc_fake", + "fg": 1844, + "rotates": false + }, + { + "id": "overlay_wielded_glass_macuahuitl", + "fg": 1845, + "rotates": false + }, + { + "id": "overlay_wielded_glass_shiv", + "fg": 1846, + "rotates": false + }, + { + "id": "overlay_wielded_knife_swissarmy", + "fg": 1846, + "rotates": false + }, + { + "id": "overlay_wielded_switchblade", + "fg": 1846, + "rotates": false + }, + { + "id": "overlay_wielded_xacto", + "fg": 1846, + "rotates": false + }, + { + "id": "overlay_wielded_golf_club", + "fg": 1847, + "rotates": false + }, + { + "id": "overlay_wielded_hockey_stick", + "fg": 1847, + "rotates": false + }, + { + "id": "overlay_wielded_grapnel", + "fg": 1848, + "rotates": false + }, + { + "id": "overlay_wielded_hammer_sledge", + "fg": 1849, + "rotates": false + }, + { + "id": "overlay_wielded_i_staff", + "fg": 1850, + "rotates": false + }, + { + "id": ["overlay_wielded_q_staff", "overlay_wielded_l_staff", "overlay_wielded_stick_long"], + "fg": 1850, + "rotates": false + }, + { + "id": "overlay_wielded_shock_staff", + "fg": 1850, + "rotates": false + }, + { + "id": "overlay_wielded_javelin_iron", + "fg": 1851, + "rotates": false + }, + { + "id": "overlay_wielded_spear_wood", + "fg": 1851, + "rotates": false + }, + { + "id": "overlay_wielded_javelin_stone", + "fg": 1851, + "rotates": false + }, + { + "id": "overlay_wielded_spear_stone", + "fg": 1866, + "rotates": false + }, + { + "id": "overlay_wielded_knuckle_brass", + "fg": 1852, + "rotates": false + }, + { + "id": "overlay_wielded_knuckle_steel", + "fg": 1852, + "rotates": false + }, + { + "id": "overlay_wielded_knuckle_katar", + "fg": 1853, + "rotates": false + }, + { + "id": "overlay_wielded_knuckle_nail", + "fg": 1853, + "rotates": false + }, + { + "id": "overlay_wielded_lajatang", + "fg": 1854, + "rotates": false + }, + { + "id": ["overlay_wielded_mace", "overlay_wielded_mace_fake", "overlay_wielded_mace_inferior"], + "fg": 1855, + "rotates": false + }, + { + "id": "overlay_wielded_makeshift_halberd", + "fg": 1856, + "rotates": false + }, + { + "id": "overlay_wielded_halberd", + "fg": 1856, + "rotates": false + }, + { + "id": "overlay_wielded_halberd_fake", + "fg": 1856, + "rotates": false + }, + { + "id": "overlay_wielded_mjolnir", + "fg": 1857, + "rotates": false + }, + { + "id": "!overlay_wielded_mjolnir_replica", + "fg": 1857, + "rotates": false + }, + { + "id": ["overlay_wielded_morningstar", "overlay_wielded_morningstar_fake", "overlay_wielded_morningstar_inferior"], + "fg": 1858, + "rotates": false + }, + { + "id": "overlay_wielded_nailboard", + "fg": 1859, + "rotates": false + }, + { + "id": "overlay_wielded_spiked_plate", + "fg": 1859, + "rotates": false + }, + { + "id": "overlay_wielded_pan", + "fg": 1860, + "rotates": false + }, + { + "id": "overlay_wielded_pot", + "fg": 1860, + "rotates": false + }, + { + "id": "overlay_wielded_pot_copper", + "fg": 1860, + "rotates": false + }, + { + "id": "overlay_wielded_pike", + "fg": 1861, + "rotates": false + }, + { + "id": "overlay_wielded_qiang", + "fg": 1861, + "rotates": false + }, + { + "id": "overlay_wielded_pipe", + "fg": 1862, + "rotates": false + }, + { + "id": "overlay_wielded_pitchfork", + "fg": 1863, + "rotates": false + }, + { + "id": "overlay_wielded_spear_forked", + "fg": 1863, + "rotates": false + }, + { + "id": "overlay_wielded_rock_sock", + "fg": 1864, + "rotates": false + }, + { + "id": "overlay_wielded_sharp_rock", + "fg": 1865, + "rotates": false + }, + { + "id": "overlay_wielded_rock", + "fg": 1865, + "rotates": false + }, + { + "id": "overlay_wielded_scrap", + "fg": 1865, + "rotates": false + }, + { + "id": "overlay_wielded_steel_chunk", + "fg": 1865, + "rotates": false + }, + { + "id": "overlay_wielded_steel_lump", + "fg": 1865, + "rotates": false + }, + { + "id": "overlay_wielded_scrap_copper", + "fg": 1865, + "rotates": false + }, + { + "id": "overlay_wielded_spear_copper", + "fg": 1866, + "rotates": false + }, + { + "id": "overlay_wielded_spear_rebar", + "fg": 1866, + "rotates": false + }, + { + "id": "overlay_wielded_spear_steel", + "fg": 1866, + "rotates": false + }, + { + "id": "overlay_wielded_spear_knife", + "fg": 1866, + "rotates": false + }, + { + "id": "overlay_wielded_fire_lance", + "fg": 1866, + "rotates": false + }, + { + "id": "overlay_wielded_spear_dory", + "fg": 1866, + "rotates": false + }, + { + "id": "overlay_wielded_spear_survivor", + "fg": 1867, + "rotates": false + }, + { + "id": "overlay_wielded_naginata_survivor", + "fg": 1867, + "rotates": false + }, + { + "id": "overlay_wielded_glaive", + "fg": 1867, + "rotates": false + }, + { + "id": "overlay_wielded_ji", + "fg": 1867, + "rotates": false + }, + { + "id": "overlay_wielded_naginata", + "fg": 1867, + "rotates": false + }, + { + "id": "overlay_wielded_sword_crude", + "fg": 1868, + "rotates": false + }, + { + "id": "overlay_wielded_sword_forged", + "fg": 1868, + "rotates": false + }, + { + "id": "overlay_wielded_dusksword", + "fg": 1868, + "rotates": false + }, + { + "id": "overlay_wielded_jian", + "fg": 1868, + "rotates": false + }, + { + "id": "overlay_wielded_jian_fake", + "fg": 1868, + "rotates": false + }, + { + "id": "overlay_wielded_jian_inferior", + "fg": 1868, + "rotates": false + }, + { + "id": "overlay_wielded_tonfa_wood", + "fg": 1869, + "rotates": false + }, + { + "id": "overlay_wielded_shocktonfa_off", + "fg": 1869, + "rotates": false + }, + { + "id": "overlay_wielded_shocktonfa_on", + "fg": 1869, + "rotates": false + }, + { + "id": "overlay_wielded_tonfa", + "fg": 1869, + "rotates": false + }, + { + "id": "overlay_wielded_umbrella", + "fg": 1870, + "rotates": false + }, + { + "id": "overlay_wielded_teleumbrella", + "fg": 1870, + "rotates": false + }, + { + "id": "overlay_wielded_unbio_bladed_weapon", + "fg": 1871, + "rotates": false + }, + { + "id": "overlay_wielded_unbio_blade_weapon_vo", + "fg": 1871, + "rotates": false + }, + { + "id": "overlay_wielded_unbio_claws_weapon", + "fg": 1872, + "rotates": false + }, + { + "id": "overlay_wielded_unbio_claws_weapon_vo", + "fg": 1872, + "rotates": false + }, + { + "id": "overlay_wielded_warhammer", + "fg": 1873, + "rotates": false + }, + { + "id": "pan", + "fg": 1874, + "rotates": false + }, + { + "id": "petrified_eye", + "fg": 1876 + }, + { + "id": "light_bulb", + "fg": 1879 + }, + { + "id": "pipe", + "fg": 1882, + "rotates": false + }, + { + "id": "pocketwatch", + "fg": 1884, + "rotates": false + }, + { + "id": "pool_ball", + "fg": 1886, + "rotates": false + }, + { + "id": ["bokken", "bokken_fake", "bokken_inferior"], + "fg": 1887 + }, + { + "id": "poppy_bud", + "fg": 1888 + }, + { + "id": "poppy_flower", + "fg": 1888 + }, + { + "id": "pot", + "fg": 1889, + "rotates": false + }, + { + "id": "molded_pot", + "fg": 1889, + "rotates": false + }, + { + "id": "clay_pot", + "fg": 1890 + }, + { + "id": "radio_repeater_mod", + "fg": 1893 + }, + { + "id": "rebar", + "fg": 1902, + "rotates": false + }, + { + "id": "reinforced_glass_pane", + "fg": 1904 + }, + { + "id": ["reinforced_solar_panel_v2", "solar_array2r"], + "fg": 1905 + }, + { + "id": "rock", + "fg": 1906, + "rotates": false + }, + { + "id": "scrap_copper", + "fg": 1912, + "rotates": false + }, + { + "id": "sharp_rock", + "fg": 1914, + "rotates": false + }, + { + "id": "shot_hull", + "fg": 1917, + "rotates": false + }, + { + "id": "glowplug", + "fg": 1919 + }, + { + "id": "c_fishspear", + "fg": 1931 + }, + { + "id": "m_fishspear", + "fg": 1931 + }, + { + "id": "hbolt_wood", + "fg": 1933 + }, + { + "id": "fishspear", + "fg": 1933 + }, + { + "id": "spiked_plate", + "fg": 1935, + "rotates": false + }, + { + "id": "splinter", + "fg": 1937, + "rotates": false + }, + { + "id": "spoon", + "fg": 1938, + "rotates": false + }, + { + "id": "steel_plate", + "fg": 1941, + "rotates": false + }, + { + "id": "stick", + "fg": 4690, + "rotates": false + }, + { + "id": "straw_doll", + "fg": 1944 + }, + { + "id": ["string_36", "bow_silencer", "bow_sling"], + "fg": 1946, + "rotates": false + }, + { + "id": "fishing_string", + "fg": 1946, + "rotates": false + }, + { + "id": "superglue", + "fg": 1947, + "rotates": false + }, + { + "id": "teapot", + "fg": 1955, + "rotates": false + }, + { + "id": "clay_teapot", + "fg": 1955 + }, + { + "id": "teleumbrella", + "fg": 1956, + "rotates": false + }, + { + "id": "television", + "fg": 1957, + "rotates": false + }, + { + "id": "shoulder_strap", + "fg": 1962 + }, + { + "id": "battery_atomic", + "fg": 1963, + "bg": 3737 + }, + { + "id": "radio_mod", + "fg": 3483, + "bg": 1963 + }, + { + "id": "umbrella", + "fg": 1964, + "rotates": false + }, + { + "id": "beeper", + "fg": 1965 + }, + { + "id": "vp_beeper", + "fg": 1965 + }, + { + "id": "v_scoop_item", + "fg": 1967, + "rotates": false + }, + { + "id": "vp_vehicle_scoop", + "fg": 1967, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 1967 + } + ] + }, + { + "id": "waffleiron", + "fg": 1968, + "rotates": false + }, + { + "id": "wasp_sting", + "fg": 1971, + "rotates": false + }, + { + "id": "needle_curved", + "fg": 1971 + }, + { + "id": ["acr", "acr1"], + "fg": 1977, + "rotates": false + }, + { + "id": ["ak47", "akm"], + "fg": 1978, + "rotates": false + }, + { + "id": "ak74", + "fg": 1979, + "rotates": false + }, + { + "id": "american_180", + "fg": 1980 + }, + { + "id": "an94", + "fg": 1981, + "rotates": false + }, + { + "id": "ar15", + "fg": 1982, + "rotates": false + }, + { + "id": "arx160", + "fg": 1983, + "rotates": false + }, + { + "id": "ashot", + "fg": 1984, + "rotates": false + }, + { + "id": "needlepistol", + "fg": 1984 + }, + { + "id": "surv_battery_pistol", + "fg": 4289 + }, + { + "id": "overlay_wielded_surv_battery_pistol", + "fg": 4290 + }, + { + "id": "sur_pnu_lmg", + "fg": 4291 + }, + { + "id": "overlay_wielded_sur_pnu_lmg", + "fg": 4292 + }, + { + "id": "surv_battery_rifle", + "fg": 4293 + }, + { + "id": "overlay_wielded_surv_battery_rifle", + "fg": 4294 + }, + { + "id": "acidbomb_micro", + "fg": 4295 + }, + { + "id": "acidbomb_small", + "fg": 4296 + }, + { + "id": "acidbomb_medium", + "fg": 4297 + }, + { + "id": "acidbomb_large", + "fg": 4298 + }, + { + "id": "overlay_worn_surv_suit", + "fg": 4300 + }, + { + "id": "surv_suit", + "bg": 4302 + }, + { + "id": "overlay_worn_surv_armor_suit", + "fg": 4299 + }, + { + "id": "surv_armor_suit", + "bg": 4301 + }, + { + "id": "surv_full_22", + "fg": 2203 + }, + { + "id": "surv_full_12", + "fg": 2203 + }, + { + "id": "overlay_wielded_surv_full_22", + "fg": 2123 + }, + { + "id": "overlay_wielded_surv_full_12", + "fg": 2123 + }, + { + "id": "surv_lmg_223", + "fg": 2035 + }, + { + "id": "surv_223_mag", + "fg": 2245 + }, + { + "id": ["308ak74mag25", "308betacmag", "308r5mag", "308steyrmag10", "308steyrmag5", "308x_14mag50"], + "fg": 2245 + }, + { + "id": "surv_12_mag", + "fg": 2245 + }, + { + "id": "surv_45_mag", + "fg": 2245 + }, + { + "id": "surv_22_mag", + "fg": 2245 + }, + { + "id": ["surv_308_mag", "300r4mag"], + "fg": 2245 + }, + { + "id": "surv_223_mag", + "fg": 2245 + }, + { + "id": "hmil_armor", + "bg": 4303 + }, + { + "id": "22aux", + "bg": 4304 + }, + { + "id": ["flaming_ball", "hell_napalm"], + "bg": 4305 + }, + { + "id": "hell_laser", + "bg": 978 + }, + { + "id": ["spell_lightning", "spell_acidarmor", "spell_acidarmor_on", "spell_acidspray", "spell_acidspray_on", "spell_agile", "spell_agile_on", "spell_clairvoyance", "spell_clairvoyance_on", "spell_confusion", "spell_confusion_on", "spell_light", "spell_light_on", "spell_psyshield", "spell_psyshield_on", "spell_drainlife", "spell_drainlife_on", "spell_elecresist", "spell_elecresist_on", "spell_invis", "spell_invis_on"], + "bg": 4306 + }, + { + "id": "spell_lightning_on", + "bg": 4306 + }, + { + "id": "spell_lightningfield", + "bg": 4306 + }, + { + "id": "spell_cloud", + "bg": 4306 + }, + { + "id": "spell_cloud_on", + "bg": 4306 + }, + { + "id": "spell_flamearmor_on", + "bg": 4306 + }, + { + "id": "spell_flamearmor", + "bg": 4306 + }, + { + "id": "spell_pulse", + "bg": 4306 + }, + { + "id": "spell_lockpick", + "bg": 4306 + }, + { + "id": "spell_lockpick_on", + "bg": 4306 + }, + { + "id": "spell_poisonarmor", + "bg": 4306 + }, + { + "id": "spell_poisonarmor_on", + "bg": 4306 + }, + { + "id": "spell_summonskel", + "bg": 4306 + }, + { + "id": "spell_summonskel_on", + "bg": 4306 + }, + { + "id": "spell_lightningfield_on", + "bg": 4306 + }, + { + "id": "spell_pulse_on", + "bg": 4306 + }, + { + "id": "spell_summonvortex", + "bg": 4306 + }, + { + "id": "spell_summonvortex_on", + "bg": 4306 + }, + { + "id": "spell_summonculus", + "bg": 4306 + }, + { + "id": ["spell_heal", "spell_strength_on", "spell_strength", "spell_insight_on", "spell_insight", "spell_free_action_on", "spell_free_action", "spell_cleric_on", "spell_cleric", "spell_clarity_on", "spell_clarity"], + "bg": 4306 + }, + { + "id": "spell_heal_on", + "bg": 4306 + }, + { + "id": "spell_summonculus_on", + "bg": 4306 + }, + { + "id": "spell_summonthing", + "bg": 4306 + }, + { + "id": "spell_teleport", + "bg": 4306 + }, + { + "id": "spell_teleport_on", + "bg": 4306 + }, + { + "id": "spell_summonthing_on", + "bg": 4306 + }, + { + "id": "spell_summondog", + "bg": 4306 + }, + { + "id": "spell_fireball", + "bg": 4306 + }, + { + "id": "spell_fireball_on", + "bg": 4306 + }, + { + "id": "spell_summondog_on", + "bg": 4306 + }, + { + "id": "spell_smoke", + "bg": 4306 + }, + { + "id": "spell_plants", + "bg": 4306 + }, + { + "id": "spell_plants_on", + "bg": 4306 + }, + { + "id": "spell_smoke_on", + "bg": 4306 + }, + { + "id": "spell_pacify", + "bg": 4306 + }, + { + "id": "spell_pacify_on", + "bg": 4306 + }, + { + "id": "spell_daylight", + "bg": 4306 + }, + { + "id": "spell_daylight_on", + "bg": 4306 + }, + { + "id": ["spell_dampening", "spell_dampening_on", "spell_frostarmor", "spell_frostarmor_on", "spell_shadowsnakes", "spell_shadowsnakes_on", "spell_summonfiend", "spell_summonfiend_on", "spell_summonjabberwock", "spell_summonjabberwock_on", "spell_summonwyrm", "spell_summonwyrm_on", "spell_summonyugg", "spell_summonyugg_on"], + "bg": 4306 + }, + { + "id": "M6_shotgun", + "bg": 4307 + }, + { + "id": "m6_asw", + "bg": 4307 + }, + { + "id": ["bot_thing_head","bot_thing_spider"], + "fg": 1716 + }, + { + "id": ["bot_tripod", "bot_ant_acid_ultralisk", "bot_acidic_pk", "bot_grabber", "bot_blind", "bot_hollow", "bot_shady", "bot_fungal_boil", "bot_spider_trapdoor_giant_guardian", "bot_spider_trapdoor_giant", "bot_trapdoor_s", "bot_spider_web_omega", "bot_spider_web_s", "bot_rat"], + "fg": 2653 + }, + { + "id": ["bot_cherub", "bot_cherub_fly", "bot_imp_revive", "bot_pinky_revive", "bot_hell_knight_revive", "bot_cacodemon_revive", "bot_churl_revive", "bot_imp", "bot_imp_black", "bot_pinky", "bot_lostsoul", "bot_revenant", "bot_hell_knight", "bot_hell_baron", "bot_mancubus", "bot_cacodemon", "bot_mechaspider", "bot_cyberdemon"], + "fg": 4308 + }, + { + "id": ["sac_purse_clean_water_ankle", "sac_purse_clean_water", "sac_purse_clean_water_leg", "sac_purse_clean_water_arm"], + "fg": 4309, + "rotates": false + }, + { + "id": ["sac_purse_ankle", "sac_purse_", "sac_purse_leg", "sac_purse_arm"], + "fg": 4310, + "rotates": false + }, + { + "id": "boomlighter", + "fg": 4311, + "rotates": false + }, + { + "id": "overlay_wielded_boomlighter", + "fg": 4312, + "rotates": false + }, + { + "id": "veilblade", + "fg": 4313, + "rotates": false + }, + { + "id": "veilblade", + "fg": 4313, + "rotates": false + }, + { + "id": "veilblade_on", + "fg": 4314, + "rotates": false + }, + { + "id": "overlay_wielded_veilblade", + "fg": 4315, + "rotates": false + }, + { + "id": "overlay_wielded_veilblade_on", + "fg": 4316, + "rotates": false + }, + { + "id": "molded_hammer", + "fg": 4317, + "rotates": false + }, + { + "id": "overlay_wielded_molded_hammer", + "fg": 4318, + "rotates": false + }, + { + "id": "hammer_multitool", + "fg": 4320, + "rotates": false + }, + { + "id": "overlay_wielded_hammer_multitool", + "fg": 4321, + "rotates": false + }, + { + "id": ["vest_leather_zuicide_short", "vest_leather_zuicide_short_active"], + "fg": 4322, + "rotates": false + }, + { + "id": ["overlay_worn_vest_leather_zuicide_short", "overlay_worn_vest_leather_zuicide_short_active"], + "fg": 4323, + "rotates": false + }, + { + "id": "elc_bld", + "fg": 4324, + "rotates": false + }, + { + "id": "elc_blds", + "fg": 4325, + "rotates": false + }, + { + "id": "overlay_wielded_elc_bld", + "fg": 4326, + "rotates": false + }, + { + "id": "overlay_wielded_elc_blds", + "fg": 4327, + "rotates": false + }, + { + "id": "cyber_rocket", + "fg": 4329, + "rotates": false + }, + { + "id": "unbio_laser_gun", + "fg": 4330, + "rotates": false + }, + { + "id": "overlay_wielded_unbio_laser_gun", + "fg": 4331, + "rotates": false + }, + { + "id": "gattler", + "fg": 4332, + "rotates": false + }, + { + "id": "overlay_wielded_gattler", + "fg": 4333, + "rotates": false + }, + { + "id": "ups_rifle_crank", + "fg": 4336, + "rotates": false + }, + { + "id": "smoke_machine", + "fg": 4337, + "rotates": false + }, + { + "id": "smoke_machine_unpreped", + "fg": 4337, + "rotates": false + }, + { + "id": "smoke_machine_act", + "fg": 4337, + "rotates": false + }, + { + "id": "flaming_skull", + "fg": 2916, + "rotates": false + }, + { + "id": "bomblet_vile", + "fg": 2916, + "rotates": false + }, + { + "id": "flesh_blade", + "fg": 4338, + "rotates": false + }, + { + "id": "cangun", + "fg": 4339, + "rotates": false + }, + { + "id": "overlay_wielded_cangun", + "fg": 4340, + "rotates": false + }, + { + "id": "survbow", + "fg": 4341, + "rotates": false + }, + { + "id": "colt_lightning", + "fg": 4342, + "rotates": false + }, + { + "id": "overlay_wielded_colt_lightning", + "fg": 4343, + "rotates": false + }, + { + "id": "moonstone_fang", + "fg": 4344, + "rotates": false + }, + { + "id": "unbio_sword_weapon", + "fg": 4334, + "rotates": false + }, + { + "id": "bio_sword_weapon", + "fg": 4334, + "rotates": false + }, + { + "id": "overlay_wielded_unbio_sword_weapon", + "fg": 4335, + "rotates": false + }, + { + "id": "overlay_wielded_bio_sword_weapon", + "fg": 4335, + "rotates": false + }, + { + "id": "bot_robot_drone", + "fg": 4345, + "rotates": false + }, + { + "id": "parawatch", + "fg": 4346, + "rotates": false + }, + { + "id": "lmil_armor", + "fg": 4348, + "rotates": false + }, + { + "id": "overlay_worn_lmil_armor", + "fg": 4347, + "rotates": false + }, + { + "id": "mil_armor", + "fg": 4349, + "rotates": false + }, + { + "id": "unbio_claws_weapon", + "fg": 4350, + "rotates": false + }, + { + "id": "bio_flamethrower_gun", + "fg": 4351, + "rotates": false + }, + { + "id": "overlay_wielded_bio_flamethrower_gun", + "fg": 4352, + "rotates": false + }, + { + "id": "f_hallowed_altar", + "fg": 4353, + "rotates": false + }, + { + "id": "hallowed_altar", + "fg": 4353, + "rotates": false + }, + { + "id": "badge_bio_weapon", + "fg": 4354, + "rotates": false + }, + { + "id": "badge_bio_weapon_apophis", + "fg": 4354, + "rotates": false + }, + { + "id": "flesh_rifle", + "fg": 4355, + "rotates": false + }, + { + "id": "overlay_wielded_flesh_rifle", + "fg": 4356, + "rotates": false + }, + { + "id": "bond_410", + "fg": 4357, + "rotates": false + }, + { + "id": "overlay_wielded_bond_410", + "fg": 2093, + "rotates": false + }, + { + "id": "equestria_portal", + "fg": 4308, + "rotates": false + }, + { + "id": "null", + "fg": 0, + "rotates": false + }, + { + "id": "molded_shovel", + "fg": 4358, + "rotates": false + }, + { + "id": "sausage_wasteland", + "fg": 4359, + "rotates": false + }, + { + "id": "af2011a1mag", + "fg": 4360, + "rotates": false + }, + { + "id": "queen_egg", + "fg": 4361, + "rotates": false + }, + { + "id": "af2011a1_38super", + "fg": 4362, + "rotates": false + }, + { + "id": ["artifact_0", "artifact_1", "artifact_2", "artifact_3","artifact_4", "artifact_5", "artifact_6", "artifact_7","artifact_8", "artifact_9", "artifact_10", "artifact_11","artifact_12", "artifact_13", "artifact_14", "artifact_15","artifact_16", "artifact_17", "artifact_18", "artifact_19","artifact_20", "artifact_21", "artifact_22", "artifact_23","artifact_24", "artifact_25", "artifact_26", "artifact_27","artifact_28", "artifact_29", "artifact_30", "artifact_31","artifact_32", "artifact_33", "artifact_34", "artifact_35","artifact_36", "artifact_37", "artifact_38", "artifact_39","artifact_40", "artifact_41", "artifact_42", "artifact_43","artifact_44", "artifact_45", "artifact_46", "artifact_47","artifact_48", "artifact_49", "artifact_50", "artifact_51","artifact_52", "artifact_53", "artifact_54", "artifact_55","artifact_56", "artifact_57", "artifact_58", "artifact_59","artifact_60", "artifact_61", "artifact_62", "artifact_63","artifact_64", "artifact_65", "artifact_66", "artifact_67","artifact_68", "artifact_69", "artifact_70", "artifact_71","artifact_72", "artifact_73", "artifact_74", "artifact_75","artifact_76", "artifact_77", "artifact_78", "artifact_79","artifact_80", "artifact_81", "artifact_82", "artifact_83", "artifact_84", "artifact_85", "artifact_86", "artifact_87","artifact_88", "artifact_89", "artifact_90", "artifact_91","artifact_92", "artifact_93", "artifact_94", "artifact_95","artifact_96", "artifact_97", "artifact_98", "artifact_99"], + "fg": 4363, + "rotates": false + }, + { + "id": ["artifact_100", "artifact_101", "artifact_102", "artifact_103","artifact_104", "artifact_105", "artifact_106", "artifact_107","artifact_108", "artifact_109", "artifact_110", "artifact_111","artifact_112", "artifact_113", "artifact_114", "artifact_115","artifact_116", "artifact_117", "artifact_118", "artifact_119","artifact_120", "artifact_121", "artifact_122", "artifact_123","artifact_124", "artifact_125", "artifact_126", "artifact_127","artifact_128", "artifact_129", "artifact_130", "artifact_131","artifact_132", "artifact_133", "artifact_134", "artifact_135","artifact_136", "artifact_137", "artifact_138", "artifact_139","artifact_140", "artifact_141", "artifact_142", "artifact_143","artifact_144", "artifact_145", "artifact_146", "artifact_147","artifact_148", "artifact_149", "artifact_150", "artifact_151","artifact_152", "artifact_153", "artifact_154", "artifact_155","artifact_156", "artifact_157", "artifact_158", "artifact_159","artifact_160", "artifact_161", "artifact_162", "artifact_163","artifact_164", "artifact_165", "artifact_166", "artifact_167","artifact_168", "artifact_169", "artifact_170", "artifact_171","artifact_172", "artifact_173", "artifact_174", "artifact_175","artifact_176", "artifact_177", "artifact_178", "artifact_179","artifact_180", "artifact_181", "artifact_182", "artifact_183", "artifact_184", "artifact_185", "artifact_186", "artifact_187","artifact_188", "artifact_189", "artifact_190", "artifact_191","artifact_192", "artifact_193", "artifact_194", "artifact_195","artifact_196", "artifact_197", "artifact_198", "artifact_199"], + "fg": 4363, + "rotates": false + }, + { + "id": ["artifact_200", "artifact_201", "artifact_202", "artifact_203","artifact_204", "artifact_205", "artifact_206", "artifact_207","artifact_208", "artifact_209", "artifact_210", "artifact_211","artifact_212", "artifact_213", "artifact_214", "artifact_215","artifact_216", "artifact_217", "artifact_218", "artifact_219","artifact_220", "artifact_221", "artifact_222", "artifact_223","artifact_224", "artifact_225", "artifact_226", "artifact_227","artifact_228", "artifact_229", "artifact_230", "artifact_231","artifact_232", "artifact_233", "artifact_234", "artifact_235","artifact_236", "artifact_237", "artifact_238", "artifact_239","artifact_240", "artifact_241", "artifact_242", "artifact_243","artifact_244", "artifact_245", "artifact_246", "artifact_247","artifact_248", "artifact_249", "artifact_250", "artifact_251","artifact_252", "artifact_253", "artifact_254", "artifact_255","artifact_256", "artifact_257", "artifact_258", "artifact_259","artifact_260", "artifact_261", "artifact_262", "artifact_263","artifact_264", "artifact_265", "artifact_266", "artifact_267","artifact_268", "artifact_269", "artifact_270", "artifact_271","artifact_272", "artifact_273", "artifact_274", "artifact_275","artifact_276", "artifact_277", "artifact_278", "artifact_279","artifact_280", "artifact_281", "artifact_282", "artifact_283", "artifact_284", "artifact_285", "artifact_286", "artifact_287","artifact_288", "artifact_289", "artifact_290", "artifact_291","artifact_292", "artifact_293", "artifact_294", "artifact_295","artifact_296", "artifact_297", "artifact_298", "artifact_299"], + "fg": 4363, + "rotates": false + }, + { + "id": ["artifact_300", "artifact_301", "artifact_302", "artifact_303","artifact_304", "artifact_305", "artifact_306", "artifact_307","artifact_308", "artifact_309", "artifact_310", "artifact_311","artifact_312", "artifact_313", "artifact_314", "artifact_315","artifact_316", "artifact_317", "artifact_318", "artifact_319","artifact_320", "artifact_321", "artifact_322", "artifact_323","artifact_324", "artifact_325", "artifact_326", "artifact_327","artifact_328", "artifact_329", "artifact_330", "artifact_331","artifact_332", "artifact_333", "artifact_334", "artifact_335","artifact_336", "artifact_337", "artifact_338", "artifact_339","artifact_340", "artifact_341", "artifact_342", "artifact_343","artifact_344", "artifact_345", "artifact_346", "artifact_347","artifact_348", "artifact_349", "artifact_350", "artifact_351","artifact_352", "artifact_353", "artifact_354", "artifact_355","artifact_356", "artifact_357", "artifact_358", "artifact_359","artifact_360", "artifact_361", "artifact_362", "artifact_363","artifact_364", "artifact_365", "artifact_366", "artifact_367","artifact_368", "artifact_369", "artifact_370", "artifact_371","artifact_372", "artifact_373", "artifact_374", "artifact_375","artifact_376", "artifact_377", "artifact_378", "artifact_379","artifact_380", "artifact_381", "artifact_382", "artifact_383", "artifact_384", "artifact_385", "artifact_386", "artifact_387","artifact_388", "artifact_389", "artifact_390", "artifact_391","artifact_392", "artifact_393", "artifact_394", "artifact_395","artifact_396", "artifact_397", "artifact_398", "artifact_399"], + "fg": 4363, + "rotates": false + }, + { + "id": ["artifact_400", "artifact_401", "artifact_402", "artifact_403","artifact_404", "artifact_405", "artifact_406", "artifact_407","artifact_408", "artifact_409", "artifact_410", "artifact_411","artifact_412", "artifact_413", "artifact_414", "artifact_415","artifact_416", "artifact_417", "artifact_418", "artifact_419","artifact_420", "artifact_421", "artifact_422", "artifact_423","artifact_424", "artifact_425", "artifact_426", "artifact_427","artifact_428", "artifact_429", "artifact_430", "artifact_431","artifact_432", "artifact_433", "artifact_434", "artifact_435","artifact_436", "artifact_437", "artifact_438", "artifact_439","artifact_440", "artifact_441", "artifact_442", "artifact_443","artifact_444", "artifact_445", "artifact_446", "artifact_447","artifact_448", "artifact_449", "artifact_450", "artifact_451","artifact_452", "artifact_453", "artifact_454", "artifact_455","artifact_456", "artifact_457", "artifact_458", "artifact_459","artifact_460", "artifact_461", "artifact_462", "artifact_463","artifact_464", "artifact_465", "artifact_466", "artifact_467","artifact_468", "artifact_469", "artifact_470", "artifact_471","artifact_472", "artifact_473", "artifact_474", "artifact_475","artifact_476", "artifact_477", "artifact_478", "artifact_479","artifact_480", "artifact_481", "artifact_482", "artifact_483", "artifact_484", "artifact_485", "artifact_486", "artifact_487","artifact_488", "artifact_489", "artifact_490", "artifact_491","artifact_492", "artifact_493", "artifact_494", "artifact_495","artifact_496", "artifact_497", "artifact_498", "artifact_499"], + "fg": 4363, + "rotates": false + }, + { + "id": ["artifact_500", "artifact_501", "artifact_502", "artifact_503","artifact_504", "artifact_505", "artifact_506", "artifact_507","artifact_508", "artifact_509", "artifact_510", "artifact_511","artifact_512", "artifact_513", "artifact_514", "artifact_515","artifact_516", "artifact_517", "artifact_518", "artifact_519","artifact_520", "artifact_521", "artifact_522", "artifact_523","artifact_524", "artifact_525", "artifact_526", "artifact_527","artifact_528", "artifact_529", "artifact_530", "artifact_531","artifact_532", "artifact_533", "artifact_534", "artifact_535","artifact_536", "artifact_537", "artifact_538", "artifact_539","artifact_540", "artifact_541", "artifact_542", "artifact_543","artifact_544", "artifact_545", "artifact_546", "artifact_547","artifact_548", "artifact_549", "artifact_550", "artifact_551","artifact_552", "artifact_553", "artifact_554", "artifact_555","artifact_556", "artifact_557", "artifact_558", "artifact_559","artifact_560", "artifact_561", "artifact_562", "artifact_563","artifact_564", "artifact_565", "artifact_566", "artifact_567","artifact_568", "artifact_569", "artifact_570", "artifact_571","artifact_572", "artifact_573", "artifact_574", "artifact_575","artifact_576", "artifact_577", "artifact_578", "artifact_579","artifact_580", "artifact_581", "artifact_582", "artifact_583", "artifact_584", "artifact_585", "artifact_586", "artifact_587","artifact_588", "artifact_589", "artifact_590", "artifact_591","artifact_592", "artifact_593", "artifact_594", "artifact_595","artifact_596", "artifact_597", "artifact_598", "artifact_599"], + "fg": 4363, + "rotates": false + }, + { + "id": ["artifact_600", "artifact_601", "artifact_602", "artifact_603","artifact_604", "artifact_605", "artifact_606", "artifact_607","artifact_608", "artifact_609", "artifact_610", "artifact_611","artifact_612", "artifact_613", "artifact_614", "artifact_615","artifact_616", "artifact_617", "artifact_618", "artifact_619","artifact_620", "artifact_621", "artifact_622", "artifact_623","artifact_624", "artifact_625", "artifact_626", "artifact_627","artifact_628", "artifact_629", "artifact_630", "artifact_631","artifact_632", "artifact_633", "artifact_634", "artifact_635","artifact_636", "artifact_637", "artifact_638", "artifact_639","artifact_640", "artifact_641", "artifact_642", "artifact_643","artifact_644", "artifact_645", "artifact_646", "artifact_647","artifact_648", "artifact_649", "artifact_650", "artifact_651","artifact_652", "artifact_653", "artifact_654", "artifact_655","artifact_656", "artifact_657", "artifact_658", "artifact_659","artifact_660", "artifact_661", "artifact_662", "artifact_663","artifact_664", "artifact_665", "artifact_666", "artifact_667","artifact_668", "artifact_669", "artifact_670", "artifact_671","artifact_672", "artifact_673", "artifact_674", "artifact_675","artifact_676", "artifact_677", "artifact_678", "artifact_679","artifact_680", "artifact_681", "artifact_682", "artifact_683", "artifact_684", "artifact_685", "artifact_686", "artifact_687","artifact_688", "artifact_689", "artifact_690", "artifact_691","artifact_692", "artifact_693", "artifact_694", "artifact_695","artifact_696", "artifact_697", "artifact_698", "artifact_699"], + "fg": 4363, + "rotates": false + }, + { + "id": ["artifact_700", "artifact_701", "artifact_702", "artifact_703","artifact_704", "artifact_705", "artifact_706", "artifact_707","artifact_708", "artifact_709", "artifact_710", "artifact_711","artifact_712", "artifact_713", "artifact_714", "artifact_715","artifact_716", "artifact_717", "artifact_718", "artifact_719","artifact_720", "artifact_721", "artifact_722", "artifact_723","artifact_724", "artifact_725", "artifact_726", "artifact_727","artifact_728", "artifact_729", "artifact_730", "artifact_731","artifact_732", "artifact_733", "artifact_734", "artifact_735","artifact_736", "artifact_737", "artifact_738", "artifact_739","artifact_740", "artifact_741", "artifact_742", "artifact_743","artifact_744", "artifact_745", "artifact_746", "artifact_747","artifact_748", "artifact_749", "artifact_750", "artifact_751","artifact_752", "artifact_753", "artifact_754", "artifact_755","artifact_756", "artifact_757", "artifact_758", "artifact_759","artifact_760", "artifact_761", "artifact_762", "artifact_763","artifact_764", "artifact_765", "artifact_766", "artifact_767","artifact_768", "artifact_769", "artifact_770", "artifact_771","artifact_772", "artifact_773", "artifact_774", "artifact_775","artifact_776", "artifact_777", "artifact_778", "artifact_779","artifact_780", "artifact_781", "artifact_782", "artifact_783", "artifact_784", "artifact_785", "artifact_786", "artifact_787","artifact_788", "artifact_789", "artifact_790", "artifact_791","artifact_792", "artifact_793", "artifact_794", "artifact_795","artifact_796", "artifact_797", "artifact_798", "artifact_799"], + "fg": 4363, + "rotates": false + }, + { + "id": ["artifact_800", "artifact_801", "artifact_802", "artifact_803","artifact_804", "artifact_805", "artifact_806", "artifact_807","artifact_808", "artifact_809", "artifact_810", "artifact_811","artifact_812", "artifact_813", "artifact_814", "artifact_815","artifact_816", "artifact_817", "artifact_818", "artifact_819","artifact_820", "artifact_821", "artifact_822", "artifact_823","artifact_824", "artifact_825", "artifact_826", "artifact_827","artifact_828", "artifact_829", "artifact_830", "artifact_831","artifact_832", "artifact_833", "artifact_834", "artifact_835","artifact_836", "artifact_837", "artifact_838", "artifact_839","artifact_840", "artifact_841", "artifact_842", "artifact_843","artifact_844", "artifact_845", "artifact_846", "artifact_847","artifact_848", "artifact_849", "artifact_850", "artifact_851","artifact_852", "artifact_853", "artifact_854", "artifact_855","artifact_856", "artifact_857", "artifact_858", "artifact_859","artifact_860", "artifact_861", "artifact_862", "artifact_863","artifact_864", "artifact_865", "artifact_866", "artifact_867","artifact_868", "artifact_869", "artifact_870", "artifact_871","artifact_872", "artifact_873", "artifact_874", "artifact_875","artifact_876", "artifact_877", "artifact_878", "artifact_879","artifact_880", "artifact_881", "artifact_882", "artifact_883", "artifact_884", "artifact_885", "artifact_886", "artifact_887","artifact_888", "artifact_889", "artifact_890", "artifact_891","artifact_892", "artifact_893", "artifact_894", "artifact_895","artifact_896", "artifact_897", "artifact_898", "artifact_899"], + "fg": 4363, + "rotates": false + }, + { + "id": ["artifact_900", "artifact_901", "artifact_902", "artifact_903","artifact_904", "artifact_905", "artifact_906", "artifact_907","artifact_908", "artifact_909", "artifact_910", "artifact_911","artifact_912", "artifact_913", "artifact_914", "artifact_915","artifact_916", "artifact_917", "artifact_918", "artifact_919","artifact_920", "artifact_921", "artifact_922", "artifact_923","artifact_924", "artifact_925", "artifact_926", "artifact_927","artifact_928", "artifact_929", "artifact_930", "artifact_931","artifact_932", "artifact_933", "artifact_934", "artifact_935","artifact_936", "artifact_937", "artifact_938", "artifact_939","artifact_940", "artifact_941", "artifact_942", "artifact_943","artifact_944", "artifact_945", "artifact_946", "artifact_947","artifact_948", "artifact_949", "artifact_950", "artifact_951","artifact_952", "artifact_953", "artifact_954", "artifact_955","artifact_956", "artifact_957", "artifact_958", "artifact_959","artifact_960", "artifact_961", "artifact_962", "artifact_963","artifact_964", "artifact_965", "artifact_966", "artifact_967","artifact_968", "artifact_969", "artifact_970", "artifact_971","artifact_972", "artifact_973", "artifact_974", "artifact_975","artifact_976", "artifact_977", "artifact_978", "artifact_979","artifact_980", "artifact_981", "artifact_982", "artifact_983", "artifact_984", "artifact_985", "artifact_986", "artifact_987","artifact_988", "artifact_989", "artifact_990", "artifact_991","artifact_992", "artifact_993", "artifact_994", "artifact_995","artifact_996", "artifact_997", "artifact_998", "artifact_999"], + "fg": 4363, + "rotates": false + }, + { + "id": "cvd_machine", + "fg": 4363, + "rotates": false + }, + { + "id": "megaarmor_head_1", + "fg": 4364, + "rotates": false + }, + { + "id": "megaarmor_torso_1", + "fg": 4365, + "rotates": false + }, + { + "id": "t_secretdoor_wall_o", + "fg": 3324, + "rotates": false + }, + { + "id": "t_secretdoor_concrete_wall_o", + "fg": 3324, + "rotates": false + }, + { + "id": "t_secretdoor_bookcase_o", + "fg": 3324, + "rotates": false + }, + { + "id": "f_wardrobe", + "fg": 4367, + "rotates": false + }, + { + "id": "f_piano", + "fg": 4368, + "rotates": false + }, + { + "id": "blood_m", + "fg": 4382, + "rotates": false + }, + { + "id": "blood_p", + "fg": 4383, + "rotates": false + }, + { + "id": "bfg_shell_act", + "fg": 4384, + "rotates": false + }, + { + "id": "hell_plasma_k", + "fg": 4385, + "rotates": false + }, + { + "id": "hell_plasma_b", + "fg": 4385, + "rotates": false + }, + { + "id": "stim", + "fg": 4386, + "rotates": false + }, + { + "id": "hell_plasma_c", + "fg": 4387, + "rotates": false + }, + { + "id": "megabear_skull_clean", + "fg": 4388, + "rotates": false + }, + { + "id": "megabear_skull_unclean", + "fg": 4389, + "rotates": false + }, + { + "id": "megabear_skull_picked", + "fg": 4389, + "rotates": false + }, + { + "id": "helmet_bone_megabear", + "fg": 4390, + "rotates": false + }, + { + "id": "overlay_worn_helmet_bone_megabear", + "fg": 4391, + "rotates": false + }, + { + "id": "canbomb", + "fg": 4392, + "rotates": false + }, + { + "id": "canbomb2", + "fg": 4392, + "rotates": false + }, + { + "id": "canbombfire", + "fg": 4392, + "rotates": false + }, + { + "id": "canbombfire2", + "fg": 4392, + "rotates": false + }, + { + "id": "canbombfrag", + "fg": 4392, + "rotates": false + }, + { + "id": "hbolt_fire", + "fg": 4393, + "rotates": false + }, + { + "id": "hbolt_boom2", + "fg": 4393, + "rotates": false + }, + { + "id": "hbolt_boom", + "fg": 4393, + "rotates": false + }, + { + "id": "hbolt_fire2", + "fg": 4393, + "rotates": false + }, + { + "id": "hbolt_fire2", + "fg": 4393, + "rotates": false + }, + { + "id": "hbolt_frag", + "fg": 4393, + "rotates": false + }, + { + "id": "lead_ball", + "fg": 4394, + "rotates": false + }, + { + "id": "hbolt_nuke", + "fg": 4395, + "rotates": false + }, + { + "id": "bio_emp_gun", + "fg": 4396, + "rotates": false + }, + { + "id": "overlay_wielded_bio_emp_gun", + "fg": 4397, + "rotates": false + }, + { + "id": "overlay_wielded_gloople_act", + "fg": 4398, + "rotates": false + }, + { + "id": "overlay_wielded_bio_ion_gun", + "fg": 4399, + "rotates": false + }, + { + "id": "bio_ion_gun", + "fg": 4400, + "rotates": false + }, + { + "id": "tank_gun_manual", + "fg": 4413, + "rotates": false + }, + { + "id": "howitzer_gun", + "fg": 4413, + "rotates": false + }, + { + "id": "tank_gun_auto", + "fg": 4413, + "rotates": false + }, + { + "id": "tank_gun_rws", + "fg": 4413, + "rotates": false + }, + { + "id": "bomblet_launcher_chickenbot", + "fg": 4413, + "rotates": false + }, + { + "id": "30mm_autocannon", + "fg": 4413, + "rotates": false + }, + { + "id": "dobelisk", + "fg": 4414, + "rotates": false + }, + { + "id": "dprism", + "fg": 4415, + "rotates": false + }, + { + "id": "railturret", + "fg": 4416, + "rotates": false + }, + { + "id": "overlay_wielded_railturret", + "fg": 4417, + "rotates": false + }, + { + "id": ["spring_plate", "vp_spring_plate"], + "fg": 4418, + "rotates": false + }, + { + "id": "bot_fungal_boil_egg", + "fg": 4419, + "rotates": false + }, + { + "id": "pokeball", + "fg": 4420, + "rotates": false + }, + { + "id": "tearer", + "fg": 4421, + "rotates": false + }, + { + "id": "vp_tearer", + "fg": 4421, + "rotates": false + }, + { + "id": "triffid_sap_grenade", + "fg": 4422, + "rotates": false + }, + { + "id": "triffid_sap_grenade_act", + "fg": 4423, + "rotates": false + }, + { + "id": "rocket_core", + "fg": 4424, + "rotates": false + }, + { + "id": "rocket_core_act", + "fg": 4425, + "rotates": false + }, + { + "id": "BFG", + "fg": 4426, + "rotates": false + }, + { + "id": "overlay_wielded_BFG", + "fg": 4427, + "rotates": false + }, + { + "id": "bfg_shell", + "fg": 4428, + "rotates": false + }, + { + "id": "breeches", + "fg": 4429, + "rotates": false + }, + { + "id": "overlay_worn_breeches", + "fg": 4430, + "rotates": false + }, + { + "id": "diamond_dental_grill", + "fg": 4431, + "rotates": false + }, + { + "id": "overlay_worn_diamond_dental_grill", + "fg": 4432, + "rotates": false + }, + { + "id": "gold_dental_grill", + "fg": 4433, + "rotates": false + }, + { + "id": "overlay_worn_gold_dental_grill", + "fg": 4434, + "rotates": false + }, + { + "id": "egg_wasp", + "fg": 4435, + "rotates": false + }, + { + "id": "357_mag_speedloader", + "fg": 4436, + "rotates": false + }, + { + "id": "38_speedloader", + "fg": 4436, + "rotates": false + }, + { + "id": "razorclaw_roe", + "fg": 4437 + }, + { + "id": "t_dirtmoundfloor", + "fg": 4438 + }, + { + "id": "powered_earmuffs", + "fg": 4439 + }, + { + "id": "powered_earmuffs_on", + "fg": 4439 + }, + { + "id": "overlay_worn_powered_earmuffs", + "fg": 4440 + }, + { + "id": "overlay_worn_powered_earmuffs_on", + "fg": 4440 + }, + { + "id": "mana_gem", + "fg": 4441 + }, + { + "id": "overlay_worn_mana_gem", + "fg": 4442 + }, + { + "id": "moss_relic", + "fg": 4443 + }, + { + "id": "offering_chalice_used", + "fg": 4444, + "rotates": false + }, + { + "id": "eclipse_glasses", + "fg": 4445, + "rotates": false + }, + { + "id": ["rebar_plate", "vp_rebar_plate"], + "fg": 4446, + "rotates": false + }, + { + "id": "blaze_mag_bolt", + "fg": 4447, + "rotates": false + }, + { + "id": "blaze_mag_flintlock", + "fg": 4447, + "rotates": false + }, + { + "id": "blaze_mag_disk", + "fg": 4447, + "rotates": false + }, { + "id": "blaze_mag_nail", + "fg": 4447, + "rotates": false + }, + { + "id": "locket_lucy", + "fg": 4448, + "rotates": false + }, + { + "id": "soulbomb", + "fg": 4449, + "rotates": false + }, + { + "id": "hell_ball", + "fg": 4449, + "rotates": false + }, + { + "id": "soulbomb_on", + "fg": 4449, + "rotates": false + }, + { + "id": "hell_plasma", + "fg": 4449, + "rotates": false + }, + { + "id": "hell_laser_napalm", + "fg": 4449, + "rotates": false + }, + { + "id": "hell_laser_gun_queen", + "fg": 4449, + "rotates": false + }, + { + "id": "toolset", + "fg": 4449, + "rotates": false + }, + { + "id": "TANK", + "fg": 4449, + "rotates": false + }, + { + "id": "muscle", + "fg": 4449, + "rotates": false + }, + { + "id": "fake_goggles", + "fg": 4449, + "rotates": false + }, + { + "id": "reach_bow", + "fg": 4449, + "rotates": false + }, + { + "id": ["boulder_anvil", "boulder_anvil_leveled"], + "fg": 4449, + "rotates": false + }, + { + "id": "acid_spit", + "fg": 4449, + "rotates": false + }, + { + "id": "monster_fire_fake", + "fg": 4449, + "rotates": false + }, + { + "id": "monster_lightning_fake", + "fg": 4449, + "rotates": false + }, + { + "id": "hell_launcher", + "fg": 4449, + "rotates": false + }, + { + "id": "hell_laser_gun", + "fg": 4449, + "rotates": false + }, + { + "id": "testflames", + "fg": 4449, + "rotates": false + }, + { + "id": "money", + "fg": 4449, + "rotates": false + }, + { + "id": ["arc_laser_rifle_monster", "laser_lmg_monster", "laser_sniper_monster", "v29_monster"], + "fg": 4449, + "rotates": false + }, + { + "id": "apparatus", + "fg": 4449, + "rotates": false + }, + { + "id": "upstest", + "fg": 4449, + "rotates": false + }, + { + "id": "fake_razor", + "fg": 4449, + "rotates": false + }, + { + "id": "clairvoyance_plus_rod", + "fg": 4449, + "rotates": false + }, + { + "id": "fire", + "fg": 4449, + "rotates": false + }, + { + "id": "manhack_firebomb_act", + "fg": 4450, + "rotates": false + }, + { + "id": "triffid_sap_thrown", + "fg": 4451, + "rotates": false + }, + { + "id": "ref_lighter_string", + "fg": 4452, + "rotates": false + }, + { + "id": "overlay_worn_ref_lighter_string", + "fg": 4453, + "rotates": false + }, + { + "id": "towel_soiled", + "fg": 4454, + "rotates": false + },{ + "id": "rebreather", + "fg": 4455, + "rotates": false + }, + { + "id": "rebreather_on", + "fg": 4455, + "rotates": false + }, + { + "id": "overlay_worn_rebreather", + "fg": 4456, + "rotates": false + }, + { + "id": "overlay_worn_rebreather_on", + "fg": 4456, + "rotates": false + }, + { + "id": "spider_brain", + "fg": 4457, + "rotates": false + }, + { + "id": "spider_steak", + "fg": 4458, + "rotates": false + }, + { + "id": "spider_steak_cooked", + "fg": 4459, + "rotates": false + }, + { + "id": "spider_steak_fried", + "fg": 4460, + "rotates": false + }, + { + "id": "jar_spider_steak_pickled", + "fg": 4461, + "rotates": false + }, + { + "id": "spider_steak_pickled", + "fg": 4461, + "rotates": false + }, + { + "id": "spider_steak_soup", + "fg": 4462, + "rotates": false + }, + { + "id": "spider_steak_sandwich", + "fg": 4463, + "rotates": false + }, + { + "id": "parabracelets", + "fg": 4464, + "rotates": false + }, + { + "id": "ravioli", + "fg": 4465, + "rotates": false + }, + { + "id": "mask_h20survivorxl", + "fg": 4466, + "rotates": false + }, + { + "id": "mask_h20survivorxl_on", + "fg": 4466, + "rotates": false + }, + { + "id": "mask_h20survivor", + "fg": 4466, + "rotates": false + }, + { + "id": "mask_h20survivor_on", + "fg": 4466, + "rotates": false + }, + { + "id": ["triffid_sap", "resin_pine"], + "fg": 4467, + "rotates": false + }, + { + "id": "shockcannon_ups", + "fg": 4468, + "rotates": false + }, + { + "id": "shockcannon", + "fg": 4468, + "rotates": false + }, + { + "id": "ups_rifle", + "fg": 4469, + "rotates": false + }, + { + "id": "pipe_solid_spear", + "fg": 4470, + "rotates": false + }, + { + "id": "overlay_wielded_pipe_solid_spear", + "fg": 4471, + "rotates": false + }, + { + "id": "brute_shot_mag", + "fg": 4472, + "rotates": false + }, + { + "id": "bone_flute", + "fg": 4473, + "rotates": false + }, + { + "id": "ash", + "fg": 4474, + "rotates": false + }, + { + "id": "homebrew_antiseptic", + "fg": 4475, + "rotates": false + }, + { + "id": "mushroom_cooked", + "fg": 4476, + "rotates": false + }, + { + "id": "soup_cullenskink", + "fg": 4477, + "rotates": false + }, + { + "id": "aux_pressurized_tank", + "fg": 4478, + "rotates": false + }, + { + "id": ["pie_veggy", "gfpie_veggy"], + "fg": 4479, + "rotates": false + }, + { + "id": ["pie", "gfpie"], + "fg": 4479, + "rotates": false + }, + { + "id": "spaghetti_cooked", + "fg": 4480, + "rotates": false + }, + { + "id": "spaghetti_bolognese", + "fg": 4481, + "rotates": false + }, + { + "id": "spaghetti_human", + "fg": 4482, + "rotates": false + }, + { + "id": "spaghetti_pesto", + "fg": 4483, + "rotates": false + }, + { + "id": "manhack_firebomb", + "fg": 4484, + "rotates": false + }, + { + "id": "quesadilla_cheese", + "fg": 4485, + "rotates": false + }, + { + "id": "teslagun", + "fg": 4486, + "rotates": false + }, + { + "id": "overlay_wielded_teslagun", + "fg": 4487, + "rotates": false + }, + { + "id": "pretzels", + "fg": 4488, + "rotates": false + }, + { + "id": "1st_aid_survivor", + "fg": 4489, + "rotates": false + }, + { + "id": "chem_carbide", + "fg": 4490, + "rotates": false + }, + { + "id": "chilidogs", + "fg": 4491, + "rotates": false + }, + { + "id": "chilidogs_human", + "fg": 4491, + "rotates": false + }, + { + "id": "chem_chromium_oxide", + "fg": 4492, + "rotates": false + }, + { + "id": "bomblet_casing", + "fg": 4493, + "rotates": false + }, + { + "id": "bomblet_casing", + "fg": 4493, + "rotates": false + }, + { + "id": "molotov_micro", + "fg": 4494, + "rotates": false + }, + { + "id": "molotov_micro_act", + "fg": 4495, + "rotates": false + }, + { + "id": "testcomest", + "fg": 4496, + "rotates": false + }, + { + "id": "hbolt_metal", + "fg": 4497, + "rotates": false + }, + { + "id": "cattlefodder", + "fg": 4498, + "rotates": false + }, + { + "id": "crown_golden", + "fg": 4499, + "rotates": false + }, + { + "id": "overlay_worn_crown_golden", + "fg": 4500, + "rotates": false + }, { + "id": "crown_golden_survivor", + "fg": 4499, + "rotates": false + }, + { + "id": "overlay_worn_crown_golden_survivor", + "fg": 4500, + "rotates": false + }, + { + "id": "mask_ski", + "fg": 4501, + "rotates": false + }, + { + "id": "mask_ski_loose", + "fg": 4501, + "rotates": false + }, + { + "id": "overlay_worn_mask_ski", + "fg": 4502, + "rotates": false + }, + { + "id": "overlay_worn_mask_ski_loose", + "fg": 4503, + "rotates": false + }, + { + "id": "foil_alum", + "fg": 4504, + "rotates": false + }, + { + "id": "vortexcannon", + "fg": 4505, + "rotates": false + }, + { + "id": "overlay_wielded_vortexcannon", + "fg": 4506, + "rotates": false + }, + { + "id": ["vortexaccelerator", "vortexbolter"], + "fg": 4505, + "rotates": false + }, + { + "id": ["overlay_wielded_vortexaccelerator", "overlay_wielded_vortexbolter"], + "fg": 4506, + "rotates": false + }, + { + "id": "pressurized_tank", + "fg": 4507, + "rotates": false + }, + { + "id": "onion_rings", + "fg": 4508, + "rotates": false + }, + { + "id": ["sweetbread", "gfsweetbread"], + "fg": 4509, + "rotates": false + }, + { + "id": "rebreather_filter", + "fg": 4510, + "rotates": false + }, + { + "id": "gasfilter_l", + "fg": 4510, + "rotates": false + }, + { + "id": "gasfilter_m", + "fg": 4510, + "rotates": false + }, + { + "id": "gasfilter_s", + "fg": 4510, + "rotates": false + }, + { + "id": "chain_link", + "fg": 4511, + "rotates": false + }, + { + "id": "pork_beans", + "fg": 4512, + "rotates": false + }, + { + "id": "bomblet_vile_act", + "bg": 975 + }, + { + "id": "sugar_fried", + "bg": 4513 + }, + { + "id": "case_violin", + "bg": 4514 + }, + { + "id": "overlay_worn_case_violin", + "bg": 4515 + }, + { + "id": "overlay_wielded_case_violin", + "bg": 4515 + }, + { + "id": "pipe_solid", + "fg": 4516, + "rotates": false + }, + { + "id": "overlay_wielded_pipe_solid", + "fg": 4517, + "rotates": false + }, + { + "id": "generic_folded_vehicle", + "fg": 4518 + }, + { + "id": "flintlock_ammo_mine", + "fg": 4519 + }, + { + "id": "laser_lmg", + "fg": 4520 + }, + { + "id": "overlay_wielded_laser_lmg", + "fg": 4521 + }, + { + "id": "m1911ds", + "fg": 4522, + "rotates": false + }, + { + "id": "overlay_wielded_m1911ds", + "fg": 4523, + "rotates": false + }, + { + "id": "survbowstored", + "fg": 4524, + "rotates": false + }, + { + "id": "high_density_capacitor", + "fg": 4525, + "rotates": false + }, + { + "id": "cuirass_lightplate", + "fg": 4526, + "rotates": false + }, + { + "id": "overlay_worn_cuirass_lightplate", + "fg": 4527, + "rotates": false + }, + { + "id": "shockcannon_plut", + "fg": 4546, + "rotates": false + }, + { + "id": "overlay_wielded_shockcannon_plut", + "fg": 4547, + "rotates": false + }, + { + "id": "oozle_pod", + "fg": 4548, + "rotates": false + }, + { + "id": "vp_oozle_pod", + "fg": 4548, + "rotates": false + }, + { + "id": "link_sheet", + "fg": 4549, + "rotates": false + }, + { + "id": "spear_pipe", + "fg": 4550, + "rotates": false + }, + { + "id": "overlay_wielded_spear_pipe", + "fg": 4551, + "rotates": false + }, + { + "id": "washing_machine", + "fg": 4552, + "rotates": false + }, + { + "id": "t_iron_gate_l", + "fg": 4553, + "bg": 988, + "rotates": false + }, + { + "id": "t_iron_gate_c", + "fg": 4554, + "bg": 988, + "rotates": false + }, { + "id": "t_iron_gate_o", + "fg": 4555, + "bg": 988, + "rotates": false + }, + { + "id": "t_iron_fence", + "fg": 4557, + "bg": 988, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "fg": [ 4556, 4557], + "bg": 988, + "id": "edge" + }, + { + "fg": 4558, + "bg": 988, + "id": "center" + }, + { + "fg": [ 4559, 4560, 4561, 4562 ], + "bg": 988, + "id": "corner" + }, + { + "fg": [ 4556, 4557, 4556, 4557], + "bg": 988, + "id": "end_piece" + }, + { + "fg": [ 4563, 4564, 4565, 4566], + "bg": 5225, + "id": "t_connection" + }, + { + "fg": 4557, + "bg": 988, + "id": "unconnected" + } + ] + }, + { + "id": "t_iron_fence_posts", + "fg": 4567, + "bg": 988, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "fg": [ 4567], + "bg": 988, + "id": "edge" + }, + { + "fg": 4567, + "bg": 988, + "id": "center" + }, + { + "fg": [ 4559, 4560, 4561, 4562 ], + "bg": 988, + "id": "corner" + }, + { + "fg": [ 4567, 4567, 4567, 4567], + "bg": 988, + "id": "end_piece" + }, + { + "fg": [ 4567, 4567, 4567, 4567], + "bg": 5225, + "id": "t_connection" + }, + { + "fg": [ 4568, 4567], + "bg": 988, + "id": "unconnected", + "rotates": true + } + ] + }, + { "id": ["overlay_worn_survivor_maid_dress", "maid_dress_french", "overlay_worn_jokyu_fuku"], "fg": 698, "rotates": false }, + { "id": ["vorpal_kitchen_knife", "vorpal_kitchen_knife_on"], "fg": 3591, "rotates": false }, + { "id": ["overlay_wielded_vorpal_kitchen_knife", "overlay_wielded_vorpal_kitchen_knife_on" ], "fg": 3648, "rotates": false }, + { "id": ["slaying_pan", "slaying_pan_on" ], "fg": 1874, "rotates": false }, + { "id": ["overlay_wielded_slaying_pan", "overlay_wielded_slaying_pan_on" ], "fg": 1860, "rotates": false }, + { "id": "brutal_broom", "fg": 1693, "rotates": false }, + { "id": "overlay_wielded_brutal_broom", "fg": 1834, "rotates": false }, + { "id": "spiked_whip", "fg": 1694, "rotates": false }, + { "id": "overlay_wielded_spiked_whip", "fg": 1835, "rotates": false }, + { "id": "shikomi_kasa", "fg": 1964, "rotates": false }, + { "id": "overlay_wielded_shikomi_kasa", "fg": 1870, "rotates": false }, + { "id": "shikomi_kasa_draw", "fg": 3583, "rotates": false }, + { "id": "overlay_wielded_shikomi_kasa_draw", "fg": 3658, "rotates": false }, + { "id": "shikomi_stick", "fg": 1697, "rotates": false }, + { "id": "overlay_wielded_shikomi_stick", "fg": 1838, "rotates": false }, + { "id": ["shikomi_stick_draw", "destruction_otama", "otama_act"], "fg": 3583, "rotates": false }, + { "id": ["overlay_wielded_shikomi_stick_draw", "overlay_wielded_destruction_otama", "overlay_wielded_otama_act"], "fg": 3658, "rotates": false }, + { "id": "maid_claw", "fg": 1016, "rotates": false }, + { "id": "overlay_wielded_maid_claw", "fg": 1831, "rotates": false }, + { "id": "battle_mop", "fg": 3627, "rotates": false }, + { "id": "overlay_wielded_battle_mop", "fg": 3677, "rotates": false }, + { "id": "book_shoggoth", "fg": 1039, "rotates": false }, + { "id": "leather_cat_tail_biv", "fg": 463, "rotates": false }, + { "id": "overlay_worn_leather_cat_tail_biv", "fg": 604, "rotates": false }, + { "id": "fur_cat_tail_biv", "fg": 369, "rotates": false }, + { "id": "overlay_worn_fur_cat_tail_biv", "fg": 604, "rotates": false }, + { "id": "blob_cat_tail_biv", "fg": 463, "rotates": false }, + { "id": "overlay_worn_blob_cat_tail_biv", "fg": 604, "rotates": false }, + { "id": "man_carrier", "fg": 910, "rotates": false }, + { "id": "overlay_worn_man_carrier", "fg": 794, "rotates": false }, + { "id": "meat_shoggoth", "fg": 1258, "rotates": false }, + { "id": ["flask_shoggoth", "shoggoth_maid"], "fg": 1738, "rotates": false }, + { "id": "flask_shoggoth", "fg": 1738, "rotates": false }, + { "id": "maid_master_child", "fg": 2685, "rotates": false }, + { "id": ["master_doll", "maid_bell", "master_doll_vibe_off", "master_doll_vibe_on"], "fg": 2685, "rotates": false }, + { "id": ["summon_little_maid", "recall_ration"], "fg": 3740, "rotates": false }, + { "id": "maid_mess_kit", "fg": 3772, "rotates": false }, + { "id": "summon_alchemic_golem", "fg": 1222, "rotates": false }, + { "id": "blob_gohan", "fg": 157, "rotates": false }, + { "id": ["assassins_throwing_dagger", "makeshift_throwing_knife"], "fg": 239, "rotates": false }, + { + "id": ["mon_shoggoth_maid", "mini_shoggoth", "res_shoggoth"], + "fg": 4577, + "rotates": false + }, + { + "id": ["mon_little_maid", "little_maid_human_smoked", "little_maid_human_smoked_fin", "little_maid_fish_smoked_fin", "little_maid_R18", "little_maid_R18_tane", "little_maid_R18_milk", "little_maid_R18_milk2", "little_maid_meat_smoked", "little_maid_meat_smoked_fin", "little_maid_fish_smoked", "mini_little_maid", "res_little_maid"], + "fg": 4578, + "rotates": false + }, + { + "id": "mon_alchemic_golem", + "fg": 4571, + "rotates": false + }, + { "id": ["survivor_maid_dress", "maid_dress_french"], + "fg": 4572, + "rotates": false }, + { "id": "jokyu_fuku", + "fg": 4573, + "rotates": false }, +{ + "id": "t_grass", + "fg": 4586, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + + { + "fg": 4586, + "bg": 1012, + "id": "center" + }, + { + "fg": 4587, + "bg": 1012, + "id": "corner" + }, + { + "fg": 4588, + "bg": 1012, + "id": "end_piece" + }, + { + "fg": 4590, + "bg": 1012, + "id": "edge" + }, + { + "fg": 4589, + "bg": 1012, + "id": "t_connection" + }, + { + "fg": 4591, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": "t_grass_season_summer", + "fg": 4592, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + + { + "fg": 4592, + "bg": 1012, + "id": "center" + }, + { + "fg": 4593, + "bg": 1012, + "id": "corner" + }, + { + "fg": 4594, + "bg": 1012, + "id": "end_piece" + }, + { + "fg": 4595, + "bg": 1012, + "id": "t_connection" + }, + { + "fg": 4596, + "bg": 1012, + "id": "edge" + }, + { + "fg": 4597, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": "t_grass_season_autumn", + "fg": 4598, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + + { + "fg": 4598, + "bg": 1012, + "id": "center" + }, + { + "fg": 4599, + "bg": 1012, + "id": "corner" + }, + { + "fg": 4600, + "bg": 1012, + "id": "end_piece" + }, + { + "fg": 4601, + "bg": 1012, + "id": "t_connection" + }, + { + "fg": 4602, + "bg": 1012, + "id": "edge" + }, + { + "fg": 4603, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": "mon_bandit_looter", + "fg": 4608, + "rotates": false + }, + { + "id": "mon_bandit_m1911", + "fg": 4609, + "rotates": false + }, + { + "id": "mon_bandit_glock", + "fg": 4610, + "rotates": false + }, + { + "id": "mon_bandit_melee", + "fg": 4611, + "rotates": false + }, + { + "id": "mon_bandit_raider", + "fg": 4612, + "rotates": false + }, + { + "id": "mon_bandit_rifle", + "fg": 4613, + "rotates": false + }, + { + "id": "mon_bandit_scrapper", + "fg": 4614, + "rotates": false + }, + { + "id": "mon_bandit_shotgun", + "fg": 4615, + "rotates": false + }, + { + "id": "mon_bandit_smg", + "fg": 4616, + "rotates": false + }, + { + "id": "mon_bandit_alpha", + "fg": 4617, + "rotates": false + }, + { + "id": "mon_bandit_super_psycho", + "fg": 4618, + "rotates": false + }, + { + "id": "mon_bandit_super_snipe", + "fg": 4619, + "rotates": false + }, + { + "id": "mon_zombie_flamer", + "fg": 4620, + "rotates": false + }, + { + "id": "mon_hologram", + "fg": 4621, + "rotates": false + }, + { + "id": "overlay_worn_holo_cloak", + "fg": 4622, + "rotates": false + }, + { + "id": "holo_cloak", + "fg": 4623, + "rotates": false + }, + { + "id": "anvil_bronze", + "fg": 4624, + "rotates": false + }, + { + "id": "mon_skittering_plague", + "fg": 4625, + "rotates": false + }, + { + "id": "mon_plague_nymph", + "fg": 4626, + "rotates": false + }, + { + "id": "mon_plague_vector", + "fg": 4627, + "rotates": false + }, + { + "id": "mon_triffid_sprig", + "fg": 4628, + "rotates": false + }, + { + "id": "mon_chicken_chick", + "fg": 4629, + "rotates": false + }, + { + "id": "mon_ant_acid_kwama", + "fg": 4630, + "rotates": false + }, + { + "id": "mon_ant_acid_terminal", + "fg": 4631, + "rotates": false + }, + { + "id": ["3006_clip", "762x39_clip", "762R_clip", "763x25G_clip"], + "fg": 4632, + "rotates": false + }, + { + "id": ["rm4504", "rm4502"], + "fg": 4633, + "rotates": false + }, + { + "id": ["mutagen_slime", "iv_mutagen_slime"], + "fg": 4634, + "rotates": false + }, + { + "id": ["cargo_lock", "vp_cargo_lock"], + "fg": 4635, + "rotates": false + }, + { + "id": "acidchitin_plate", + "fg": 4636, + "rotates": false + }, + { + "id": ["vp_dashboard", "vehicle_dashboard", "vp_controls_electronic"], + "fg": 4637, + "rotates": false + }, + { + "id": "pickles_ferment", + "fg": 4638, + "rotates": false + }, + { + "id": "jar_pickles_pickled", + "fg": 4639, + "rotates": false + }, + { + "id": "armguard_lightplate", + "fg": 4640, + "rotates": false + }, + { + "id": "overlay_worn_armguard_lightplate", + "fg": 4641, + "rotates": false + }, + { + "id": "armguard_acidchitin", + "fg": 4642 + }, + { + "id": "overlay_worn_armguard_acidchitin", + "fg": 4643, + "rotates": false + }, + { + "id": "armor_acidchitin", + "fg": 4644 + }, + { + "id": "overlay_worn_armor_acidchitin", + "fg": 4645, + "rotates": false + }, + { + "id": ["pie_maple", "gfpie_maple"], + "fg": 4646, + "rotates": false + }, + { + "id": "pie_human", + "fg": 4647, + "rotates": false + }, + { + "id": "detergent", + "fg": 4648, + "bg": 957, + "rotates": false + }, + { + "id": "boots_acidchitin", + "fg": 4649 + }, + { + "id": "overlay_worn_boots_acidchitin", + "fg": 4650, + "rotates": false + }, + { + "id": "gauntlets_acidchitin", + "fg": 4651 + }, + { + "id": "overlay_worn_gauntlets_acidchitin", + "fg": 4652, + "rotates": false + }, + { + "id": ["taco", "tiotaco"], + "fg": 4653 + }, + { + "id": "kilt_leather", + "fg": 4654 + }, + { + "id": "overlay_worn_kilt_leather", + "fg": 4655, + "rotates": false + }, + { + "id": "flotation_vest_ms", + "fg": 4656 + }, + { + "id": "overlay_worn_flotation_vest_ms", + "fg": 4657, + "rotates": false + }, + { + "id": "helmet_acidchitin", + "fg": 4658 + }, + { + "id": "overlay_worn_helmet_acidchitin", + "fg": 4659, + "rotates": false + }, + { + "id": "mushroom_morel", + "fg": 4660 + }, + { + "id": "morel_cooked", + "fg": 4661 + }, + { + "id": "morel_fried", + "fg": 4662 + }, + { + "id": "napalm", + "fg": 4663 + }, + { + "id": "acidchitin_piece", + "fg": 4664 + }, + { + "id": "minion_dormant", + "fg": 4665 + }, + { + "id": "blob_dormant", + "fg": 4666 + }, + { + "id": "diamondnova", + "fg": 4667 + }, + { + "id": "overlay_wielded_diamondnova", + "fg": 4668 + }, + { + "id": "vortexrifle", + "fg": 4669 + }, + { + "id": "overlay_wielded_vortexrifle", + "fg": 4670 + }, + { + "id": ["bfeedfuel", "gloople_act"], + "fg": 4671 + }, + { + "id": "oozle_act", + "fg": 4672 + }, + { + "id": "gray_act", + "fg": 4673 + }, + { + "id": ["vp_gloopletread", "vp_graytread", "vp_oozletread"], + "fg": 4149, + "rotates": true + }, + { + "id": ["gloopletread", "graytread", "oozletread"], + "fg": 4149 + }, + { + "id": ["antidote_badpoison", "antidote_posion"], + "fg": 4674 + }, + { + "id": "stamina_vial", + "fg": 4675, + "rotates": false + }, + { + "id": "bomblet_chickenbot", + "fg": 4676, + "rotates": false + }, + { + "id": "bomblet_chickenbot_act", + "fg": 4677, + "rotates": false + }, + { + "id": ["turtleneck", "turtleneck_rolled"], + "fg": 4678, + "rotates": false + }, + { + "id": "overlay_worn_turtleneck_rolled", + "fg": 4679, + "rotates": false + }, + { + "id": "overlay_worn_turtleneck", + "fg": 4680, + "rotates": false + }, + { + "id": "sac_empty", + "fg": 4681, + "rotates": false + }, + { + "id": "sac_treated", + "fg": 4682, + "rotates": false + }, + { + "id": "spess_chunk", + "fg": 4683, + "rotates": false + }, + { + "id": "fertilizer_chelated", + "fg": 4684, + "rotates": false + }, + { + "id": "kevlar_tee", + "fg": 4685, + "rotates": false + }, + { + "id": "vpower", + "fg": 4686, + "rotates": false + }, + { + "id": "battleship", + "fg": 4687, + "rotates": false + }, + { + "id": "cards", + "fg": 4688, + "rotates": false + }, + { + "id": "cards_magic", + "fg": 4689, + "rotates": false + }, + { + "id": ["l_staff", "stick_long"], + "fg": 4690, + "rotates": false + }, + { + "id": "stick_long", + "fg": 1943, + "rotates": false + }, + { + "id": "clue", + "fg": 4691, + "rotates": false + }, + { + "id": "control_chip", + "fg": 4692, + "rotates": false + }, + { + "id": "pictionary", + "fg": 4693, + "rotates": false + }, + { + "id": "trident_copper", + "fg": 4694, + "rotates": false + }, + { + "id": "overlay_wielded_trident_copper", + "fg": 4695, + "rotates": false + }, + { + "id": "gelrazor", + "fg": 4696, + "rotates": false + }, + { + "id": "overlay_wielded_gelrazor", + "fg": 4697, + "rotates": false + }, + { + "id": ["cutter", "ripper"], + "fg": 4698, + "rotates": false + }, + { + "id": ["overlay_wielded_cutter", "overlay_wielded_ripper"], + "fg": 4699, + "rotates": false + }, + { + "id": "meteoric_talisman", + "fg": 4700, + "rotates": false + }, + { + "id": "overlay_worn_meteoric_talisman", + "fg": 4701, + "rotates": false + }, + { + "id": "diamondlance", + "fg": 4702, + "rotates": false + }, + { + "id": "overlay_wielded_diamondlance", + "fg": 4703, + "rotates": false + }, + { + "id": "molded_axe", + "fg": 4704, + "rotates": false + }, + { + "id": "overlay_wielded_molded_axe", + "fg": 4705, + "rotates": false + }, + { + "id": ["hair_dye", "hair_dye_bald", "hair_dye_blonde", "hair_dye_brown", "hair_dye_red", "hair_dye_black", "hair_dye_white", "hair_dye_pink", "hair_dye_white", "hair_dye_red", "hair_dye_gray"], + "fg": 4706, + "rotates": false + }, + { + "id": "jade_wreath", + "fg": 4707, + "rotates": false + }, + { + "id": "overlay_worn_jade_wreath", + "fg": 4708, + "rotates": false + }, + { + "id": ["lasgun", "lasgunp"], + "fg": 4709, + "rotates": false + }, + { + "id": ["overlay_wielded_lasgun", "overlay_wielded_lasgunp"], + "fg": 4710, + "rotates": false + }, + { + "id": "e1776", + "fg": 4711, + "rotates": false + }, + { + "id": "scorpion", + "fg": 4712, + "rotates": false + }, + { + "id": "boom_flamer", + "fg": 4713, + "rotates": false + }, + { + "id": "satchel_eternity", + "fg": 4714, + "rotates": false + }, + { + "id": "overlay_worn_satchel_eternity", + "fg": 4715, + "rotates": false + }, + { + "id": "solar_crude_firestarter", + "fg": 4716, + "rotates": false + }, + { + "id": "monopoly", + "fg": 4717, + "rotates": false + }, + { + "id": "bio_laser_minigun", + "fg": 4718, + "rotates": false + }, + { + "id": "overlay_wielded_bio_laser_minigun", + "fg": 4719, + "rotates": false + }, + { + "id": "disinrag", + "fg": 4720, + "rotates": false + }, + { + "id": "lighting_hidden", + "fg": 4721, + "rotates": false + }, + { + "id": "lighting_boomered_dark", + "fg": 2960, + "rotates": false + }, + { + "id": "lighting_boomered_dark", + "fg": 2960, + "rotates": false + }, + { + "id": "lighting_boomered_light", + "fg": 2961, + "rotates": false + }, + { + "id": "!lighting_lowlight_dark", + "fg": 2962, + "rotates": false + }, + { + "id": "lighting_lowlight_light", + "fg": 2963, + "rotates": false + }, + { + "id": "lighting_boomered_light", + "fg": [ + { "weight":9, "sprite":4721}, + { "weight":2, "sprite":4722}, + { "weight":2, "sprite":4723}, + { "weight":3, "sprite":4724}, + { "weight":2, "sprite":4725}, + { "weight":3, "sprite":4726}, + { "weight":2, "sprite":4727}, + { "weight":3, "sprite":4728}, + { "weight":3, "sprite":4729}, + { "weight":3, "sprite":4730}, + { "weight":3, "sprite":4731}, + { "weight":2, "sprite":4732}, + { "weight":1, "sprite":4733}, + { "weight":3, "sprite":4734}, + { "weight":3, "sprite":4735} + ], + "rotates": false + }, + { + "id": "lighting_lowlight_dark", + "fg": [ + { "weight":9, "sprite":4721}, + { "weight":2, "sprite":4722}, + { "weight":2, "sprite":4723}, + { "weight":3, "sprite":4724}, + { "weight":2, "sprite":4725}, + { "weight":3, "sprite":4726}, + { "weight":2, "sprite":4727}, + { "weight":3, "sprite":4728}, + { "weight":3, "sprite":4729}, + { "weight":3, "sprite":4730}, + { "weight":3, "sprite":4731}, + { "weight":2, "sprite":4732}, + { "weight":1, "sprite":4733}, + { "weight":3, "sprite":4734}, + { "weight":3, "sprite":4735} + ], + "rotates": false + }, + { + "id": "lighting_lowlight_light", + "fg": 2963, + "rotates": false + }, + { + "id": "lighting_hidden", + "fg": [ + { "weight":9, "sprite":4721}, + { "weight":2, "sprite":4722}, + { "weight":2, "sprite":4723}, + { "weight":3, "sprite":4724}, + { "weight":2, "sprite":4725}, + { "weight":3, "sprite":4726}, + { "weight":2, "sprite":4727}, + { "weight":3, "sprite":4728}, + { "weight":3, "sprite":4729}, + { "weight":3, "sprite":4730}, + { "weight":3, "sprite":4731}, + { "weight":2, "sprite":4732}, + { "weight":1, "sprite":4733}, + { "weight":3, "sprite":4734}, + { "weight":3, "sprite":4735} + ], + "bg": 0, + "rotates": true, + "multitile": false + }, + { + "id": "f_autodoc_couch", + "fg": 4736, + "rotates": true + }, + { + "id": "f_autodoc", + "fg": 4737, + "rotates": true + }, + { + "id": "beam_scatterer", + "fg": 4738, + "rotates": false + }, + { + "id": ["chime_scrap", "chime_scrap_act"], + "fg": 4739, + "rotates": false + }, + { + "id": "survbowpack", + "fg": 4740, + "rotates": false + }, + { + "id": "pallet_lifter", + "fg": 4741, + "rotates": false + }, + { + "id": "surv_sniper", + "fg": 4742 + }, + { + "id": "overlay_wielded_surv_sniper", + "fg": 4743, + "rotates": false + }, { + "id": "staff_druidic", + "fg": 4744 + }, + { + "id": "overlay_wielded_staff_druidic", + "fg": 4745, + "rotates": false + }, + + { + "id": "orb_veil", + "fg": 4746 + }, + { + "id": "light_carb", + "fg": 4747 + }, + { + "id": "overlay_wielded_light_carb", + "fg": 4748, + "rotates": false + }, + { + "id": "unbio_chain_lightning", + "fg": 4747 + }, + { + "id": "overlay_wielded_unbio_chain_lightning", + "fg": 4748, + "rotates": false + }, + { + "id": "royal_jelly_sap", + "fg": 4749, + "rotates": false + }, + { + "id": "g_warhammer", + "fg": 4750, + "rotates": false + }, + { + "id": "g_warhammer40k", + "fg": 4751, + "rotates": false + }, + { + "id": "dnd", + "fg": 4752, + "rotates": false + }, + { + "id": "catan", + "fg": 4753, + "rotates": false + }, { + "id": "chess", + "fg": 4754, + "rotates": false + }, + { + "id": "checkers", + "fg": 4755, + "rotates": false + }, { + "id": "4pronged_stick", + "fg": 4756, + "rotates": false + }, { + "id": "overlay_wielded_4pronged_stick", + "fg": 4757, + "rotates": false + }, + { + "id": "longmace_stone", + "fg": 4758, + "rotates": false + }, { + "id": "overlay_wielded_longmace_stone", + "fg": 4759, + "rotates": false + }, + { + "id": "c_staff", + "fg": 4760, + "rotates": false + }, + { + "id": "overlay_wielded_c_staff", + "fg": 4761, + "rotates": false + }, + { + "id": "molded_knife", + "fg": 4762, + "rotates": false + }, + { + "id": "overlay_wielded_molded_knife", + "fg": 4763, + "rotates": false + }, + { + "id": "molded_saw", + "fg": 4764, + "rotates": false + }, + { + "id": "overlay_wielded_molded_saw", + "fg": 4765, + "rotates": false + }, + { + "id": "surcan", + "fg": 4766, + "rotates": false + }, + { + "id": "weather_snowflake", + "bg": 4767, + "rotates": false + }, + { + "id": "mon_grouse_chick", + "fg": 4768, + "rotates": false + }, + { + "id": "mon_crow_chick", + "fg": 4769, + "rotates": false + }, + { + "id": "mon_turkey_chick", + "fg": 4770, + "rotates": false + }, + { + "id": "mon_pheasant_chick", + "fg": 4771, + "rotates": false + }, + { + "id": "mon_cockatrice_chick", + "fg": 4772, + "rotates": false + }, + { + "id": "mon_duck_chick", + "fg": 4773, + "rotates": false + }, + { + "id": "mon_goose_canadian_chick", + "fg": 4774, + "rotates": false + }, + { + "id": "mon_bear_cub", + "fg": 4775, + "rotates": false + }, + { + "id": "mon_cockatrice", + "fg": 4776, + "rotates": false + }, + { + "id": "mon_pheasant", + "fg": 4777, + "rotates": false + }, + { + "id": "mon_grouse", + "fg": 4778, + "rotates": false + }, + { + "id": "mon_goose_canadian", + "fg": 4779, + "rotates": false + }, + { + "id": "mon_biollante_sprout", + "fg": 4780, + "rotates": false + }, + { + "id": "mon_biollante_sprig", + "fg": 4781, + "rotates": false + }, + { + "id": "feces_manure", + "fg": 4782, + "rotates": false + }, + { + "id": "feces_roach", + "fg": 4783, + "rotates": false + }, + { + "id": "feces_bird", + "bg": 4784, + "rotates": false + }, + { + "id": "feces_cow", + "fg": 4785, + "rotates": false + }, + { + "id": "egg_chicken", + "fg": [ + { "weight":1, "sprite":1182}, + { "weight":1, "sprite":4786} + ], + "rotates": false + }, + { + "id": "egg_grouse", + "fg": 4787, + "rotates": false + }, + { + "id": "egg_crow", + "fg": 4788, + "rotates": false + }, + { + "id": "egg_duck", + "fg": 4789, + "rotates": false + }, + { + "id": "egg_goose_canadian", + "fg": 4790, + "rotates": false + }, + { + "id": "egg_turkey", + "fg": 4791, + "rotates": false + }, + { + "id": "egg_pheasant", + "fg": 4792, + "rotates": false + }, + { + "id": "egg_cockatrice", + "fg": 4793, + "rotates": false + }, + { + "id": ["egg_roach", "egg_roach_plague"], + "fg": 4794, + "rotates": false + }, + { + "id": "egg_locust", + "fg": 4795, + "rotates": false + }, + { + "id": "mon_locust", + "fg": 4796, + "rotates": false + }, { + "id": "mon_locust_nymph", + "fg": 4797, + "rotates": false + }, + { + "id": ["overlay_wielded_feces_manure", "overlay_wielded_feces_cow"], + "fg": 4798, + "rotates": false + }, + { + "id": "egg_fish", + "fg": 4799, + "rotates": false + }, + { + "id": "glass_tinted", + "fg": 4800, + "rotates": false + }, + { + "id": "fd_bees", + "fg": 4801, + "rotates": false + }, + { + "id": "vp_hdstowboard_horizontal", + "fg": 4802, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4802 + } + ] + }, { + "id": "vp_hdstowboard_vertical", + "fg": 4803, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4803 + } + ] + }, + { + "id": "vp_hdstowboard_ne", + "fg": 4804, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4804 + } + ] + }, + { + "id": "vp_hdstowboard_nw", + "fg": 4805, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4805 + } + ] + }, + { + "id": "vp_hdstowboard_se", + "fg": 4806, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4806 + } + ] + }, + { + "id": "vp_hdstowboard_sw", + "fg": 4807, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4807 + } + ] + }, + { + "id": "vp_stowboard_ne", + "fg": 4808, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4808 + } + ] + }, + { + "id": "vp_stowboard_nw", + "fg": 4809, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4809 + } + ] + }, + { + "id": "vp_stowboard_se", + "fg": 4810, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4810 + } + ] + }, + { + "id": "vp_stowboard_sw", + "fg": 4811, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4811 + } + ] + }, + { + "id": ["vp_seatbelt", "overlay_worn_seatbelt", "overlay_worn_vp_seatbelt", "overlay_wielded_seatbelt", "overlay_wielded_vp_seatbelt", "vp_seatbelt_heavyduty", "vp_gloople_belt", "vp_gray_belt", "vp_oozle_belt"], + "fg": 4812, + "rotates": true + }, + { + "id": "mon_cow_calf", + "fg": 4813, + "rotates": false + }, + { + "id": "mon_pig_piglet", + "fg": 4814, + "rotates": false + }, + { + "id": "mon_sheep_lamb", + "fg": 4815, + "rotates": false + }, + { + "id": "anesthesia", + "fg": 4816, + "rotates": false + }, + { + "id": "a22_bolter", + "fg": 4817, + "rotates": false + }, + { + "id": "overlay_wielded_a22_bolter", + "fg": 4818, + "rotates": false + }, + { + "id": "airbower", + "fg": 4819, + "rotates": false + }, + { + "id": "overlay_wielded_airbower", + "fg": 4820, + "rotates": false + }, + { + "id": "airbower_succ", + "fg": 4819, + "rotates": false + }, + { + "id": "overlay_wielded_airbower_succ", + "fg": 4820, + "rotates": false + }, + { + "id": ["arrow_metal_emp", "arrow_metal_stun"], + "fg": 4821, + "rotates": false + }, + { + "id": "arrow_metal_inc", + "fg": 4822, + "rotates": false + }, + { + "id": "arrow_metal_target", + "fg": 4823, + "rotates": false + }, + { + "id": "bolt_steel_emp", + "fg": 4824, + "rotates": false + }, + { + "id": "bolt_steel_inc", + "fg": 4825, + "rotates": false + }, + { + "id": "bolt_steel_target", + "fg": 4826, + "rotates": false + }, + { + "id": "arrow_metal_stun", + "fg": 4827, + "rotates": false + }, + { + "id": "bolt_steel_stun", + "fg": 4828, + "rotates": false + }, + { + "id": "bow_powercams", + "fg": 4829, + "rotates": false + }, + { + "id": ["bow_powerlimbs", "bow_powerriser", "bow_powerstring", "bow_stabilizer_set"], + "fg": 4830, + "rotates": false + }, + { + "id": "smart_arrow", + "fg": 4831, + "rotates": false + }, + { + "id": ["vp_gloople_roof", "vp_gray_roof", "vp_oozle_roof"], + "fg": 4832, + "rotates": true + }, + { "id": "t_dirt", + "fg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "rotates": true + }, + { + "id": "!f_rubble", + "fg": [ + { "weight":1, "sprite":1556}, + { "weight":10, "sprite":4604}, + { "weight":100, "sprite":4605}, + { "weight":1000, "sprite":4606}, + { "weight":10000, "sprite":4607} + ], + "rotates": false + }, + { + "id": "!f_rubble_rock", + "fg": [ + { "weight":1, "sprite":1557}, + { "weight":10, "sprite":4604}, + { "weight":100, "sprite":4605}, + { "weight":1000, "sprite":4606}, + { "weight":10000, "sprite":4607} + ], + "rotates": true + }, + { + "id": "mon_zombie_rot", + "fg": 2738, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_rot_pk", + "fg": 2739, + "rotates": false + }, + { + "id": "mon_zombie_rot_worms", + "fg": 4848, + "rotates": false + }, + { + "id": "mon_zombie_rot_pk_worms", + "fg": 4849, + "rotates": false + }, + { + "id": "mon_zombie_rot_flu", + "fg": 4850, + "rotates": false + }, + { + "id": "mon_zombie_rot_pk_flu", + "fg": 4851, + "rotates": false + }, + { + "id": "mon_zombie_rot_pain", + "fg": 4852, + "rotates": false + }, + { + "id": "mon_zombie_rot_pk_pain", + "fg": 4853, + "rotates": false + }, + { + "id": "mon_dog_zombie_rot", + "fg": 2415, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dog_zombie_rot_worms", + "fg": 4854, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dog_zombie_rot_fly", + "fg": 4855, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dog_zombie_rot_pain", + "fg": 4856, + "bg": 967, + "rotates": false + }, + { + "id": "overlay_worn_pants_leather", + "fg": 4857, + "bg": 967, + "rotates": false + }, + { + "id": "overlay_wielded_mjolnir_replica", + "fg": 4858, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_punch_dagger", + "fg": 4859, + "rotates": false + }, + { + "id": "t_rock_floor", + "bg": + [ + { "weight":100, "sprite":4844}, + { "weight":10, "sprite":4845}, + { "weight":10, "sprite":4846}, + { "weight":10, "sprite":4847} + ], + "rotates": false + }, + { + "id": "t_pavement", + "bg": + [ + { "weight":1111, "sprite":985}, + { "weight":111, "sprite":27661}, + { "weight":111, "sprite":27662}, + { "weight":111, "sprite":27663}, + { "weight":1, "sprite":4860}, + { "weight":1, "sprite":4861}, + { "weight":1, "sprite":4862}, + { "weight":1, "sprite":4863}, + { "weight":1, "sprite":4864}, + { "weight":1, "sprite":4865}, + { "weight":1, "sprite":4866}, + { "weight":1, "sprite":4867} + ],"rotates": true + }, + { + "id": "t_flat_roof", + "bg": [ + { "weight":1111, "sprite":985} + ], + "rotates": false + }, + + { + "id": "t_pavement_y", + "fg": 3147, + "bg": + [ + { "weight":1111, "sprite":985}, + { "weight":1, "sprite":4860}, + { "weight":1, "sprite":4861}, + { "weight":1, "sprite":4862}, + { "weight":1, "sprite":4863}, + { "weight":1, "sprite":4864}, + { "weight":1, "sprite":4865}, + { "weight":1, "sprite":4866}, + { "weight":1, "sprite":4867} + ], + "rotates": false + }, + + { + "id": "t_column", + "fg": 4868, + "bg": + [ + { "weight":100, "sprite":4844}, + { "weight":10, "sprite":4845}, + { "weight":10, "sprite":4846}, + { "weight":10, "sprite":4847} + ], + "rotates": false + }, + { + "id": "overlay_worn_striped_pants", + "fg": 4869, + "rotates": false + }, + { + "id": "mon_weasel", + "fg": 2375, + "bg": 967, + "rotates": false + }, + { + "id": "mon_chipmunk", + "fg": 4875, + "bg": 967, + "rotates": false + }, + { + "id": "mon_groundhog", + "fg": 4876, + "bg": 967, + "rotates": false + }, + { + "id": "mon_lemming", + "fg": 4877, + "bg": 0, + "rotates": false + }, + { + "id": "mon_mink", + "fg": 4878, + "bg": 967, + "rotates": false + }, + { + "id": "mon_otter", + "fg": 4879, + "bg": 967, + "rotates": false + }, + { + "id": "mon_fox_gray", + "fg": 4880, + "bg": 967, + "rotates": false + }, + { + "id": "mon_bobcat", + "fg": 4881, + "bg": 967, + "rotates": false + }, + { + "id": ["solarpack", "q_solarpack"], + "fg": 4586, + "rotates": false + }, + { + "id": ["solarpack_on", "q_solarpack_on"], + "fg": 4587, + "rotates": false + }, + { + "id": ["overlay_worn_solarpack", "overlay_worn_q_solarpack"], + "fg": 4588, + "rotates": false + }, + { + "id": ["overlay_worn_solarpack_on", "overlay_worn_q_solarpack_on"], + "fg": 4589, + "rotates": false + }, + { + "id": ["knife_folding"], + "fg": 4590, + "rotates": false + }, + { + "id": ["overlay_wielded_knife_folding"], + "fg": 4591, + "rotates": false + }, + { + "id": ["bandages", "bandages_makeshift_bleached"], + "fg": 4592, + "rotates": false + }, + { + "id": ["birdfood"], + "fg": 4593, + "rotates": false + }, + { + "id": ["eggs_ferment"], + "fg": 4594, + "rotates": false + }, + { + "id": ["jar_eggs_pickled"], + "fg": 4595, + "rotates": false + }, + { + "id": ["bundle_rag"], + "fg": 4596, + "rotates": false + }, + { + "id": ["bundle_wool"], + "fg": 4597, + "rotates": false + }, + { + "id": ["bundle_leather"], + "fg": 4598, + "rotates": false + }, + { + "id": ["garlic_clove"], + "fg": 4599, + "rotates": false + }, + { + "id": ["hide_bag"], + "fg": 4600, + "rotates": false + }, + { + "id": ["hide_tainted_bag"], + "fg": 4601, + "rotates": false + }, + { + "id": ["overlay_worn_hide_bag", "overlay_wielded_hide_bag"], + "fg": 4602, + "rotates": false + }, + { + "id": ["overlay_worn_hide_tainted_bag", "overlay_wielded_hide_tainted_bag"], + "fg": 4603, + "rotates": false + }, + { + "id": ["electrolysis_kit"], + "fg": 4604, + "rotates": false + }, + { + "id": ["v_rockwheel_item"], + "fg": 4605, + "rotates": false + }, + { + "id": ["mon_skeleton"], + "fg": 4606, + "rotates": false + }, + { + "id": ["mon_dog_skeleton"], + "fg": 4607, + "rotates": false + }, + { + "id": ["tr_firewood_source"], + "fg": 4882, + "rotates": false + }, + { + "id": ["vp_hddoor", "vp_hddoor_opaque", "vp_hddoor_trunk"], + "fg": 4883, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4883 + }, + { + "id": "open", + "fg": 4884 + } + ] + }, + { + "id": ["vp_rockwheel"], + "fg": 4885, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4885 + } + ] + }, + { + "id": "chicken_cage", + "fg": 4886, + "rotates": false + }, + { + "id": "f_piano", + "fg": 4887, + "rotates": false + }, + { + "id": "f_anvil_stone", + "fg": 4888, + "rotates": false + }, + { + "id": "t_rock_hematite", + "fg": 4889, + "bg": 3192, + "rotates": false + }, + { + "id": "t_rock_galena", + "fg": 4890, + "bg": 3192, + "rotates": false + }, + { + "id": "t_rock_cassiterite", + "fg": 4891, + "bg": 3192, + "rotates": false + }, + { + "id": "t_rock_aluminum", + "fg": 4892, + "bg": 3192, + "rotates": false + }, + { + "id": "t_rock_gold", + "fg": 4893, + "bg": 3192, + "rotates": false + }, + { + "id": "t_rock_silver", + "fg": 4894, + "bg": 3192, + "rotates": false + }, + { + "id": "t_rock_copper", + "fg": 4895, + "bg": 3192, + "rotates": false + }, + { + "id": "t_rock_brimstone", + "fg": 4896, + "bg": 3192, + "rotates": false + }, + { + "id": "t_rock_niter", + "fg": 4897, + "bg": 3192, + "rotates": false + }, + { + "id": "t_rock_halite", + "fg": 4898, + "bg": 3192, + "rotates": false + }, + { + "id": "t_rock_coal", + "fg": 4899, + "bg": 3192, + "rotates": false + }, + { + "id": "chunk_gold", + "fg": 4900, + "rotates": false + }, + { + "id": "chunk_silver", + "fg": 4901, + "rotates": false + }, + { + "id": "chunk_copper", + "fg": 4902, + "rotates": false + }, + { + "id": "chunk_galena", + "fg": 4903, + "rotates": false + }, + { + "id": "chunk_aluminum", + "fg": 4904, + "rotates": false + }, + { + "id": "chunk_cassiterite", + "fg": 4905, + "rotates": false + }, + { + "id": "chunk_hematite", + "fg": 4906, + "rotates": false + }, + { + "id": "pickaxe_bone", + "fg": 4907, + "rotates": false + }, + { + "id": "pickaxe_copper", + "fg": 4908, + "rotates": false + }, + { + "id": "overlay_wielded_pickaxe_bone", + "fg": 4909, + "rotates": false + }, + { + "id": "overlay_wielded_pickaxe_copper", + "fg": 4910, + "rotates": false + }, + { + "id": "spearsling", + "fg": 4911, + "rotates": false + }, + { + "id": "overlay_worn_spearsling", + "fg": 4912, + "rotates": false + }, + { + "id": "f_boulder_anvil", + "fg": 4913, + "rotates": false + }, + { + "id": "f_bog_iron", + "fg": 4914, + "rotates": false + }, + { + "id": "spear_homemade_halfpike", + "fg": 4915, + "rotates": false + }, + { + "id": "overlay_wielded_spear_homemade_halfpike", + "fg": 4916, + "rotates": false + }, + { + "id": "464spx", + "fg": 4917, + "rotates": false + }, + { + "id": "overlay_wielded_464spx", + "fg": 4918, + "rotates": false + }, + { + "id": "apc9", + "fg": 4919, + "rotates": false + }, + { + "id": "ar57", + "fg": 4920, + "rotates": false + }, + { + "id": "hs_semi", + "fg": 4921, + "rotates": false + }, + { + "id": "browning_hp", + "fg": 4922, + "rotates": false + }, + { + "id": "overlay_wielded_browning_hp", + "fg": 2074, + "rotates": false + }, + { + "id": "overlay_wielded_flaregun", + "fg": 4923, + "rotates": false + }, + { + "id": ["livestock_carrier", "vp_livestock_stall"], + "fg": 4924, + "rotates": true + }, + { + "id": "monster_tear", + "fg": 4925, + "rotates": false + }, + { + "id": "shadow_gem", + "fg": 4926, + "rotates": false + }, + { + "id": "stinger_flute", + "fg": 4927, + "rotates": false + }, + { + "id": "triffid_queen_flower", + "fg": 4928, + "rotates": false + }, + { + "id": "triffid_garland", + "fg": 4929, + "rotates": false + }, + { + "id": "overlay_worn_triffid_garland", + "fg": 4930, + "rotates": false + }, + { + "id": "amulet_exotic", + "fg": 4931, + "rotates": false + }, + { + "id": "overlay_worn_amulet_exotic", + "fg": 4932, + "rotates": false + }, + { + "id": "brooch_iridescent", + "fg": 4933, + "rotates": false + }, + { + "id": "bone_twisted", + "fg": 4934, + "rotates": false + }, + { + "id": "charm_bone", + "fg": 4935, + "rotates": false + }, + { + "id": "graboid_fang", + "fg": 4936, + "rotates": false + }, + { + "id": ["totem_strength", "totem_plants", "totem_lightning", "totem_invis", "totem_insight", "totem_heal", "totem_free_action", "totem_flamearmor", "totem_elecresist", "totem_confusion", "totem_cleric", "totem_clarity", "totem_clairvoyance", "totem_agile", "totem_acidspray"], + "fg": 4937, + "rotates": false + }, + { + "id": "blob_gem", + "fg": 4938, + "rotates": false + }, + { + "id": "dermatik_sting", + "fg": 4939, + "rotates": false + }, + { + "id": "engraved_stone", + "fg": 4940, + "rotates": false + }, + { + "id": "gracken_knuckles", + "fg": 4941, + "rotates": false + }, + { + "id": "iridescent_plate", + "fg": 4942, + "rotates": false + }, + { + "id": "monster_fang", + "fg": 4943, + "rotates": false + }, + { + "id": "vortex_shard", + "fg": 4944, + "rotates": false + }, + { + "id": "wyrmskin_piece", + "fg": 4945, + "rotates": false + }, + { + "id": "hazardous_waste_drum", + "fg": 4946, + "rotates": false + }, + { + "id": "nuclear_waste", + "fg": 4947, + "rotates": false + }, + { + "id": "nuclear_fuel", + "fg": 4948, + "rotates": false + }, + { + "id": "laser_rifle_cheap", + "fg": 4949, + "rotates": false + }, + { + "id": "overlay_wielded_laser_rifle_cheap", + "fg": 4950, + "rotates": false + }, + { + "id": ["pebble_hopper", "bb_hopper", "bolt_hopper", "cannister_rack"], + "fg": 4951, + "rotates": false + }, + { + "id": "aperture_potato", + "fg": 4952, + "rotates": false + }, + { + "id": ["mon_turret_bmg", "mon_milturret_50bmg"], + "fg": 4953, + "bg": 967, + "rotates": false + }, + { + "id": "f_target", + "fg": [ + { "weight":1, "sprite":4954}, + { "weight":1, "sprite":4955} + ], + "bg": 967, + "rotates": false + }, + { + "id": "t_rootcellar", + "fg": 4956, + "bg": 1012, + "rotates": false + }, + { + "id": "f_woodchips", + "fg": 4957, + "bg": 0, + "rotates": false + }, + { + "id": "kubotan", + "fg": 4958, + "bg": 0, + "rotates": false + }, + { + "id": "ore_bogiron", + "fg": 4959, + "bg": 0, + "rotates": false + }, + { + "id": "paintball", + "fg": 4960, + "bg": 0, + "rotates": false + }, + { + "id": "paintballgun", + "fg": 4961, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_paintballgun", + "fg": 4962, + "bg": 0, + "rotates": false + }, + { + "id": "pockknife1", + "fg": 4963, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_pockknife1", + "fg": 4964, + "bg": 0, + "rotates": false + }, + { + "id": "t_door_glass_frosted_c", + "fg": 4965, + "bg": 993, + "rotates": false + }, + { + "id": "t_door_glass_frosted_o", + "fg": 4966, + "bg": 993, + "rotates": false + }, + { + "id": "panacea", + "fg": 4967, + "bg": 0, + "rotates": false + }, + { + "id": "t_golf_hole", + "fg": 4969, + "bg": 1012, + "rotates": false + }, + { + "id": "f_stool", + "fg": 4970, + "bg": 0, + "rotates": false + }, + { + "id": "f_rack_coat", + "fg": 4971, + "bg": 0, + "rotates": false + }, + { + "id": "f_mailbox", + "fg": 4972, + "bg": 0, + "rotates": false + }, + { + "id": "basket_laundry", + "fg": 4973, + "bg": 0, + "rotates": false + }, + { + "id": "feces_dog", + "fg": 4974, + "bg": 0, + "rotates": false + }, + { + "id": "M24", + "fg": 4975, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_M24", + "fg": 4976, + "bg": 0, + "rotates": false + }, + { + "id": "cheek_pad", + "fg": 4977, + "bg": 0, + "rotates": false + }, + { + "id": "golf_ball", + "fg": 4978, + "bg": 0, + "rotates": false + }, + { + "id": "golf_tee", + "fg": 4979, + "bg": 0, + "rotates": false + }, + { + "id": "gloves_golf", + "fg": 4980, + "rotates": false + }, + { + "id": "golf_bag", + "fg": 4981, + "rotates": false + }, + { + "id": "golf_shoes", + "fg": 4982, + "rotates": false + }, + { + "id": "hat_golf", + "fg": 4983, + "rotates": false + }, + { + "id": "overlay_worn_golf_bag", + "fg": 4984, + "rotates": false + }, + { + "id": "overlay_worn_hat_golf", + "fg": 4985, + "rotates": false + }, + { + "id": "mon_dog", + "fg": [ + { "weight":3, "sprite":4986}, + { "weight":3, "sprite":2408} + ], + "rotates": false + }, + { + "id": "mon_dog_pup", + "fg": 4987, + "rotates": false + }, + { + "id": "mon_dog_bull", + "fg": 4988, + "rotates": false + }, + { + "id": "mon_dog_bull_pup", + "fg": 4989, + "rotates": false + }, + { + "id": "mon_dog_pitbullmix", + "fg": 4990, + "rotates": false + }, + { + "id": "mon_dog_pitbullmix_pup", + "fg": 4991, + "rotates": false + }, + { + "id": "mon_dog_beagle", + "fg": 4992, + "rotates": false + }, + { + "id": "mon_dog_beagle_pup", + "fg": 4993, + "rotates": false + }, + { + "id": "mon_dog_bcollie", + "fg": 4994, + "rotates": false + }, + { + "id": "mon_dog_bcollie_pup", + "fg": 4995, + "rotates": false + }, + { + "id": "mon_dog_boxer", + "fg": 4996, + "rotates": false + }, + { + "id": "mon_dog_boxer_pup", + "fg": 4997, + "rotates": false + }, + { + "id": "mon_dog_chihuahua", + "fg": 4998, + "rotates": false + }, + { + "id": "mon_dog_chihuahua_pup", + "fg": 4999, + "rotates": false + }, + { + "id": "mon_dog_dachshund", + "fg": 5000, + "rotates": false + }, + { + "id": "mon_dog_dachshund_pup", + "fg": 5001, + "rotates": false + }, + { + "id": "mon_dog_gshepherd", + "fg": 5002, + "rotates": false + }, + { + "id": "mon_dog_gshepherd_pup", + "fg": 5003, + "rotates": false + }, + { + "id": "mon_dog_gpyrenees", + "fg": 5004, + "rotates": false + }, + { + "id": "mon_dog_gpyrenees_pup", + "fg": 5005, + "rotates": false + }, + { + "id": "mon_dog_rottweiler", + "fg": 5006, + "rotates": false + }, + { + "id": "mon_dog_rottweiler_pup", + "fg": 5007, + "rotates": false + }, + { + "id": "mon_dog_auscattle", + "fg": 5008, + "rotates": false + }, + { + "id": "mon_dog_auscattle_pup", + "fg": 5009, + "rotates": false + }, + { + "id": "t_thconc_floor", + "fg": 5010, + "rotates": false + }, + { + "id": "t_thconc_floor_olight", + "fg": 4968, + "bg": 5010, + "rotates": false + }, + { + "id": "t_concrete_floor", + "fg": 5011, + "rotates": false + }, + { + "id": "t_strconc_floor", + "fg": 5012, + "rotates": false + }, + { + "id": "t_concrete", + "fg": 5013, + "rotates": false + }, + { + "id": "dnd_handbook", + "fg": 5014, + "rotates": false + }, + { + "id": ["vp_animal_compartment", "animal_locker"], + "fg": 4924, + "bg": 3962, + "rotates": false + }, + { + "id": "leaf_spring", + "fg": 5015, + "rotates": false + }, + { + "id": "mon_insect_saddler", + "fg": 5016, + "rotates": false + }, + { + "id": "mon_insect_saddler_brood", + "fg": 5017, + "rotates": false + }, + { + "id": "mon_insect_saddler_baby", + "fg": 5018, + "rotates": false + }, + { + "id": ["frostie_hull","frostie_wheel"], + "fg": 5019, + "rotates": false + }, + { + "id": "spouterqueen", + "fg": 5020, + "rotates": false + }, + { + "id": "overlay_wielded_spouterqueen", + "fg": 5021, + "rotates": false + }, + { + "id": "t_dock", + "fg": 5022, + "rotates": false + }, + { + "id": "tobacco_raw", + "fg": 5023, + "rotates": false + }, + { + "id": "t_golf_hole_season_winter", + "fg": 5024, + "bg": 992, + "rotates": false + }, + { + "id": "coffee_pod", + "fg": 5025, + "bg": 0, + "rotates": false + }, + { + "id": "t_elevator_control", + "fg": 5026, + "rotates": false + }, + { + "id": "t_elevator_control_off", + "fg": 5027, + "rotates": false + }, + { + "id": "!fancy_sunglasses", + "fg": 5028, + "rotates": false + }, + { + "id": "overlay_worn_iggaak", + "fg": 5028, + "rotates": false + }, + { + "id": "overlay_worn_fancy_sunglasses", + "fg": 5029, + "rotates": false + }, + { + "id": "fitover_sunglasses", + "fg": 5030, + "rotates": false + }, + { + "id": "overlay_worn_fitover_sunglasses", + "fg": 5031, + "rotates": false + }, + { + "id": "f_tourist_table", + "fg": 5032, + "rotates": false + }, + { + "id": "f_metal_butcher_rack", + "fg": 5033, + "rotates": false + }, + { + "id": "f_butcher_rack", + "fg": 5034, + "rotates": false + }, + { + "id": "t_railroad_crossing_signal", + "fg": 5035, + "bg": 1012, + "rotates": false + }, + { + "id": "t_railroad_crossing_signal_season_winter", + "fg": 5035, + "bg": 992, + "rotates": false + }, + { + "id": "t_buffer_stop", + "fg": 5036, + "rotates": true + }, + { + "id": "f_smoking_rack_active", + "fg": 5037, + "rotates": false + }, + { + "id": "fake_smoke_plume", + "fg": 5038, + "rotates": false + }, + { + "id": "sausage_wasteland_raw", + "fg": 5039, + "rotates": false + }, + { + "id": "t_crossbuck_metal", + "fg": 5040, + "bg": 1012, + "rotates": false + }, + { + "id": "t_crossbuck_wood", + "fg": 5041, + "bg": 1012, + "rotates": false + }, + { + "id": "t_crossbuck_metal_season_winter", + "fg": 5040, + "bg": 992, + "rotates": false + }, + { + "id": "t_crossbuck_wood_season_winter", + "fg": 5041, + "bg": 992, + "rotates": false + }, + { + "id": "f_leather_tarp", + "fg": 5042, + "bg": 0, + "rotates": false + }, + { + "id": "f_fiber_mat", + "fg": 5043, + "bg": 0, + "rotates": false + }, + { + "id": "leather_tarp", + "fg": 5044, + "bg": 0, + "rotates": false + }, + { + "id": "fiber_mat", + "fg": 5045, + "bg": 0, + "rotates": false + }, + { + "id": "mon_zombie_military_pilot", + "fg": 5046, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_nullfield", + "fg": 5047, + "bg": 967, + "rotates": false + }, + { + "id": "jabberwock_heart", + "fg": 5048, + "bg": 0, + "rotates": false + }, + { + "id": "jabberwock_heart_desiccated", + "fg": 5049, + "bg": 0, + "rotates": false + }, + { + "id": "mutagen_jabberblood", + "fg": 5050, + "bg": 0, + "rotates": false + }, + { + "id": "woodgreatbow", + "fg": 5051, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_woodgreatbow", + "fg": 5052, + "bg": 0, + "rotates": false + }, + { + "id": "compgreatbow", + "fg": 5053, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_compgreatbow", + "fg": 5054, + "bg": 0, + "rotates": false + }, + { + "id": ["t_hive_young", "t_hive_recovering", "t_hive_regrowing"], + "fg": 5055, + "bg": 1012, + "rotates": false + }, + { + "id": "t_hive_young_season_winter", + "fg": 5055, + "bg": 992, + "rotates": false + }, + { + "id": "beehive_empty", + "fg": 5055, + "bg": 0, + "rotates": false + }, + { + "id": "armwrap_fur", + "fg": 5056, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_armwrap_fur", + "fg": 5058, + "bg": 0, + "rotates": false + }, + { + "id": "armwrap_leather", + "fg": 5057, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_armwrap_leather", + "fg": 5059, + "bg": 0, + "rotates": false + }, + { + "id": ["t_hive_growing", "t_hive_recovering"], + "fg": 5060, + "bg": 1012, + "rotates": false + }, + { + "id": "t_hive_ready", + "fg": 5061, + "bg": 1012, + "rotates": false + }, + { + "id": "seed_potato_raw", + "fg": 5062, + "bg": 0, + "rotates": false + }, + { + "id": "f_mushroom_seed", + "fg": 5063, + "bg": 0, + "rotates": false + }, + { + "id": "f_mushroom_seedling", + "fg": 5064, + "bg": 0, + "rotates": false + }, + { + "id": "f_mushroom_mature", + "fg": 5065, + "bg": 0, + "rotates": false + }, + { + "id": "f_mushroom_mature_harvest", + "fg": 5066, + "bg": 0, + "rotates": false + }, + { + "id": "f_shrub_blueberry", + "fg": 5067, + "bg": 0, + "rotates": false + }, + { + "id": "f_shrub_blueberry_harvest", + "fg": 5068, + "bg": 0, + "rotates": false + }, + { + "id": ["f_shrub_blackberry", "f_shrub_raspberry"], + "fg": 5069, + "bg": 0, + "rotates": false + }, + { + "id": "f_shrub_blackberry_harvest", + "fg": 5070, + "bg": 0, + "rotates": false + }, + { + "id": "f_shrub_raspberry_harvest", + "fg": 5071, + "bg": 0, + "rotates": false + }, + { + "id": "f_shrub_strawberry_harvest", + "fg": 5072, + "bg": 0, + "rotates": false + }, + { + "id": "f_shrub_strawberry", + "fg": 5073, + "bg": 0, + "rotates": false + }, + { + "id": "f_shrub_cranberry", + "fg": 5074, + "bg": 0, + "rotates": false + }, + { + "id": "f_shrub_cranberry_harvest", + "fg": 5075, + "bg": 0, + "rotates": false + }, + { + "id": "icecream_fruit", + "fg": 5076, + "bg": 0, + "rotates": false + }, + { + "id": "icecream_candy", + "fg": 5077, + "bg": 0, + "rotates": false + }, + { + "id": "plastic_bucket", + "fg": 5078, + "bg": 0, + "rotates": false + }, + { + "id": "styrofoam_cup", + "fg": 5079, + "bg": 0, + "rotates": false + }, + { + "id": "motor_micro", + "fg": 5080, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_shuriken", + "fg": 5081, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_dshuriken", + "fg": 5082, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_cshuriken", + "fg": 5083, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_envmask", + "fg": 5084, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_envmask", + "fg": 5085, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_srtrenchcoat", + "fg": 5086, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_srtrenchcoat", + "fg": 5087, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_rcpants", + "fg": 5088, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_rcpants", + "fg": 5089, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_retshield", + "fg": 5090, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_retshield", + "fg": 5091, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_survsrtrenchcoat", + "fg": 5092, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_survsrtrenchcoat", + "fg": 5093, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_survrcpants", + "fg": 5094, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_survrcpants", + "fg": 5095, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_rillepack", + "fg": 5096, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_rillepack", + "fg": 5097, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_lamessrtrenchcoat", + "fg": 5098, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_lamessrtrenchcoat", + "fg": 5099, + "bg": 0, + "rotates": false + }, { + "id": "cddaxp_lamesrcpants", + "fg": 5100, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_lamesrcpants", + "fg": 5101, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_longshirt", + "fg": 5102, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_longshirt", + "fg": 5103, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_srbshirt", + "fg": 5104, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_srbshirt", + "fg": 5105, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_srshirt", + "fg": 5106, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_srshirt", + "fg": 5107, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_srcshirt", + "fg": 5108, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_srcshirt", + "fg": 5109, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_lamessbtrenchcoat", + "fg": 5110, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_lamessbtrenchcoat", + "fg": 5111, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_lamesbcpants", + "fg": 5112, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_lamesbcpants", + "fg": 5113, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_lamessctrenchcoat", + "fg": 5114, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_lamessctrenchcoat", + "fg": 5115, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_lamesccpants", + "fg": 5116, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_lamesccpants", + "fg": 5117, + "bg": 0, + "rotates": false + }, + { + "id": "t_improvised_shelter_season_autumn", + "fg": 5118, + "bg": 1012, + "rotates": false + }, + { + "id": "t_improvised_shelter_season_winter", + "fg": 5119, + "bg": 992, + "rotates": false + }, + { + "id": "sleeping_bag_roll", + "fg": 5120, + "bg": 0, + "rotates": false + }, + { + "id": "sleeping_bag_fur_roll", + "fg": 5121, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_sleeping_bag_roll", + "fg": 5122, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_sleeping_bag_fur_roll", + "fg": 5123, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_sleeping_bag_fur", + "fg": 5124, + "bg": 0, + "rotates": false + }, + { + "id": "drivebelt", + "fg": 5125 + }, + { + "id": "drivebelt_makeshift", + "fg": 5126 + }, + { + "id": "overlay_worn_robe_shadow_on", + "fg": 5127, + "rotates": false + }, + { + "id": "t_railroad_rubble", + "fg": 5131, + "bg": 5130, + "rotates": false + }, + { + "id": "fuel_bunker", + "fg": 5132, + "bg": 0, + "rotates": false + }, + { + "id": "vp_fuel_bunker", + "fg": 5132, + "bg": 0, + "rotates": false + }, + { + "id": "steam_triple_medium", + "fg": 5133, + "bg": 0, + "rotates": false + }, + { + "id": ["vp_steam_triple_medium", "vp_engine_steam_medium"], + "fg": 5133, + "bg": 0, + "rotates": false + }, + { + "id": "steam_watts_small", + "fg": 5134, + "bg": 0, + "rotates": false + }, + { + "id": "vp_engine_steam_makeshift", + "fg": 5134, + "bg": 0, + "rotates": false + }, + { + "id": "steam_triple_small", + "fg": 5135, + "bg": 0, + "rotates": false + }, + { + "id": "vp_engine_steam_small", + "fg": 5135, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_hlamesstrenchcoat", + "fg": 5136, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_hlamesstrenchcoat", + "fg": 5137, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_hlamescpants", + "fg": 5138, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_hlamescpants", + "fg": 5139, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_fbackholster", + "fg": 5140, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_fbackholster", + "fg": 5141, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_bplamesstrenchcoat", + "fg": 5142, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_bplamesstrenchcoat", + "fg": 5143, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_bplamescpants", + "fg": 5144, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_bplamescpants", + "fg": 5145, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_mrhbar", + "fg": 5146, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_carbonfiber", + "fg": 5147, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_bo", + "fg": 5148, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_bo", + "fg": 5149, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_nunchaku", + "fg": 5150, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_nunchaku", + "fg": 5151, + "bg": 0, + "rotates": false + }, { + "id": "cddaxp_sai", + "fg": 5152, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_sai", + "fg": 5153, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_r135ppgm", + "fg": 5154, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_r135ppgm", + "fg": 5155, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_tech_helmet", + "fg": 5156, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_tech_helmet", + "fg": 5157, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_goggles_artnv", + "fg": 5158, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_goggles_artnv", + "fg": 5160, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_goggles_artnv_on", + "fg": 5159, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_goggles_artnv_on", + "fg": 5161, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_artclocloak", + "fg": 5162, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_artclocloak", + "fg": 5164, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_artclocloak_on", + "fg": 5163, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_artclocloak_on", + "fg": 5165, + "bg": 0, + "rotates": false + }, + { + "id": ["cddaxp_artesosk", "cddaxp_artesosk_on"], + "fg": 5166, + "bg": 0, + "rotates": false + }, + { + "id": ["overlay_worn_cddaxp_artesosk", "overlay_worn_cddaxp_artesosk_on"], + "fg": 5167, + "bg": 0, + "rotates": false + }, + { + "id": ["cddaxp_artesosk", "cddaxp_artesosk_on"], + "fg": 5166, + "bg": 0, + "rotates": false + }, + { + "id": ["overlay_worn_cddaxp_artesosk", "overlay_worn_cddaxp_artesosk_on"], + "fg": 5167, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_artgloves", + "fg": 5168, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_artgloves", + "fg": 5169, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_artgloves_on", + "fg": 5170, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_artgloves_on", + "fg": 5171, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_survrbelt", + "fg": 5172, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_survrbelt", + "fg": 5173, + "bg": 0, + "rotates": false + }, + { + "id": ["cddaxp_mtsuit", "cddaxp_mtsuit_on"], + "fg": 5174, + "bg": 0, + "rotates": false + }, + { + "id": ["overlay_worn_cddaxp_mtsuit", "overlay_worn_cddaxp_mtsuit_on"], + "fg": 5175, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_bfclosed", + "fg": 5176, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_kusarigama", + "fg": 5177, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_kusarigama", + "fg": 5178, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_happo", + "fg": 5179, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_happo_lit", + "fg": 5180, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_argoogles", + "fg": 5181, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cddaxp_argoogles", + "fg": 5182, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_patablet", + "fg": 5183, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_patablet_on", + "fg": 5184, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_tbomb", + "fg": 5185, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_tbomb_act", + "fg": 5186, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_vptmeats", + "fg": 5187, + "bg": 0, + "rotates": false + }, + { + "id": "purifier_smart_shot", + "fg": 5188, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_ckatana", + "fg": 5189, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_ckatana", + "fg": 5190, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_cmachete", + "fg": 5191, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_cmachete", + "fg": 5192, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_cknife", + "fg": 5193, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_cknife", + "fg": 5194, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_ckukri", + "fg": 5195, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_ckukri", + "fg": 5196, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_crapier", + "fg": 5197, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_crapier", + "fg": 5198, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_cbroadsword", + "fg": 5199, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_cbroadsword", + "fg": 4870, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_czweihander", + "fg": 4871, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_czweihander", + "fg": 4872, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_cwakizashi", + "fg": 4873, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_cwakizashi", + "fg": 4874, + "bg": 0, + "rotates": false + }, + { + "id": "petticoat", + "fg": 495, + "rotates": false + }, + { + "id": "overlay_wielded_bio_scalpel", + "fg": 1872, + "rotates": false + }, + { + "id": ["maid_cap","cat_maid_cap"], + "fg": 4283, + "rotates": false + }, + { + "id": "maid_point", + "bg": 978, + "rotates": false + }, + { + "id": "atlatl", + "fg": 1986, + "bg": 967, + "rotates": false + }, + { + "id": ["bio_shock_absorber", "pseuso_bio_picklock", "null", "mon_null", "tr_null", "tr_temple_toggle", "tr_glow", "tr_hum", "tr_shadow", "tr_snake", "fd_null", "mon_null", "fd_null", "tr_null", "null", "vp_null", "tr_temple_toggle", "tr_glow", "tr_hum", "tr_shadow", "tr_snake", "TANK", "acid_spit", "candle_barrier_aftermath", "apparatus", "clairvoyance_plus_rod", "fire", "gloople_act", "gray_act", "money", "muscle", "oozle_act", "oxyacetylene", "pseuso_bio_picklock", "software", "toolset", "upstest", "vp_plating_acidchitin", "vp_plating_bone", "vp_plating_chitin", "vp_plating_diamond", "vp_plating_hard", "vp_plating_military", "vp_plating_spiked", "vp_plating_steel", "vp_plating_superalloy", "vp_plating_wood", "vp_gloople_plate", "vp_gray_plate", "vp_oozle_plate", "bog_iron_spot"], + "fg": 0, + "rotates": false + }, + { + "id": "bomblet_archvile", + "fg": 2916, + "rotates": false + }, + { + "id": "bomblet_archvile_act", + "fg": 2916, + "rotates": false + }, + + { + "id": "back_holster", + "fg": 1986 + }, + { + "id": "bbgun", + "fg": 1987 + }, + { + "id": "bh_m89", + "fg": 1987 + }, + { + "id": "biter", + "fg": 1988 + }, + { + "id": "edgegrow", + "fg": 1988 + }, + { + "id": "clutter", + "fg": 1988 + }, + { + "id": "edge", + "fg": 1988 + }, + { + "id": "horror", + "fg": 1988 + }, + { + "id": "inkie", + "fg": 1988 + }, + { + "id": "meltie", + "fg": 1988 + }, + { + "id": "razorqueen", + "fg": 1988 + }, + { + "id": "sharp", + "fg": 1988 + }, + { + "id": "stickie", + "fg": 1988 + }, + { + "id": "torchie", + "fg": 1988 + }, + { + "id": "gas_slime_scrap", + "fg": 1988 + }, + { + "id": "browning_blr", + "fg": 1991, + "rotates": false + }, + { + "id": "levergun_44", + "fg": 1991 + }, + { + "id": "henry_big_boy", + "fg": 1991 + }, + { + "id": "calico", + "fg": 1993, + "rotates": false + }, + { + "id": "aux_flamer", + "fg": 1994 + }, + { + "id": "aux_flamer_diesel", + "fg": 1994 + }, + { + "id": "colt_army", + "fg": 1996, + "rotates": false + }, + { + "id": "colt_saa", + "fg": 1996, + "rotates": false + }, + { + "id": "colt_navy", + "fg": 1997, + "rotates": false + }, + { + "id": ["compbow", "compbow_high", "compbow_low"], + "fg": 1998, + "rotates": false + }, + { + "id": "compositebow", + "fg": 1999, + "rotates": false + }, + { + "id": "cop_38", + "fg": 2000, + "rotates": false + }, + { + "id": "savage_111f", + "fg": 2003 + }, + { + "id": "cx4", + "fg": 2004, + "rotates": false + }, + { + "id": "emp_gun", + "fg": 2006 + }, + { + "id": "fn57", + "fg": 2014, + "rotates": false + }, + { + "id": ["fn_fal", "fn571"], + "fg": 2015, + "rotates": false + }, + { + "id": "fn_p90", + "fg": 2016, + "rotates": false + }, + { + "id": "freezie", + "fg": 2017 + }, + { + "id": "frostie", + "fg": 2017 + }, + { + "id": "fuzzle", + "fg": 2019 + }, + { + "id": "garand", + "fg": 2020, + "rotates": false + }, + { + "id": "glock_19", + "fg": 2021, + "rotates": false + }, + { + "id": "45aux", + "fg": 2021, + "bg": 957, + "rotates": false + }, + { + "id": "9mmaux", + "fg": 2021, + "bg": 957, + "rotates": false + }, + { + "id": "p226_357sig", + "fg": 2021, + "rotates": false + }, + { + "id": "glock_17", + "fg": 2021, + "rotates": false + }, + { + "id": "glock_22", + "fg": 2021 + }, + { + "id": "h&k416a5", + "fg": 2024, + "rotates": false + }, + + { + "id": "hk_g3", + "fg": 2028, + "rotates": false + }, + { + "id": "hk_g36", + "fg": 2029, + "rotates": false + }, + { + "id": "heavy_rail_rifle", + "fg": 2030 + }, + { + "id": "hk_mp5", + "fg": 2031, + "rotates": false + }, + { + "id": "hk_mp7", + "fg": 2033, + "rotates": false + }, + { + "id": "hk_ucp", + "fg": 2034, + "rotates": false + }, + { + "id": "l_bak_223", + "fg": 2034 + }, + { + "id": "hk_ump45", + "fg": 2035, + "rotates": false + }, + { + "id": "l_lmg_223", + "fg": 2035 + }, + { + "id": ["surv_lmg_308", "kawaii_308AM"], + "fg": 2035 + }, + { + "id": "surv_lmg_762", + "fg": 2035 + }, + { + "id": "l_enforcer_45", + "fg": 2042 + }, + { + "id": ["longbow", "hybridbow"], + "fg": 2043, + "rotates": false + }, + { + "id": "m4a1", + "fg": 2044, + "rotates": false + }, + { + "id": "m1014", + "fg": 2045, + "rotates": false + }, + { + "id": "ksub2000", + "fg": 2045 + }, + { + "id": "weatherby_5", + "fg": 2045 + }, + { + "id": "m107a1", + "fg": 2046, + "rotates": false + }, + { + "id": "m134", + "fg": 2047 + }, + { + "id": "bomblet_launcher_rotary", + "fg": 2054 + }, + { + "id": "scattergun", + "fg": 2054 + }, + { + "id": "bomblet_explosive", + "fg": 43 + }, + { + "id": "bomblet_fire", + "fg": 42 + }, + { + "id": "bomblet_frag", + "fg": 45 + }, + { + "id": ["bomblet_stun", "bomblet_stun_act"], + "fg": 44 + }, + { + "id": "bomblet_acid", + "fg": 41 + }, + { + "id": "m14ebr", + "fg": 2048, + "rotates": false + }, + { + "id": "m1903", + "fg": 2049, + "rotates": false + }, + { + "id": "m14a", + "fg": 2052, + "rotates": false + }, + { + "id": "atgm_turret", + "fg": 2052, + "rotates": false + }, + { + "id": "m1a", + "fg": 2052 + }, + { + "id": "m2010", + "fg": 2053, + "rotates": false + }, + { + "id": "m27iar", + "fg": 2057, + "rotates": false + }, + { + "id": "mark19", + "fg": 2058 + }, + { + "id": ["m320_mod", "lead_glm"], + "fg": 2058 + }, + { + "id": "m3_carlgustav", + "fg": 2059, + "rotates": false + }, + { + "id": "m60", + "fg": 2060, + "rotates": false + }, + { + "id": "m2browning_sawn", + "fg": 2060 + }, + { + "id": "triple_launcher_simple", + "fg": 2061 + }, + { + "id": "m9", + "fg": 2062, + "rotates": false + }, + { + "id": "mac_10", + "fg": 2063, + "rotates": false + }, + { + "id": "marlin_9a", + "fg": 2064, + "rotates": false + }, + { + "id": "pipe_shotgunsawn", + "fg": 2067, + "rotates": false + }, + { + "id": "minispeargun", + "fg": 2067 + }, + { + "id": "mosin91_30", + "fg": 2068, + "rotates": false + }, + { + "id": "mosin44", + "fg": 2068, + "rotates": false + }, + { + "id": "mosin44_ebr", + "fg": 2068 + }, + { + "id": "mosin91_30_ebr", + "fg": 2068 + }, + { + "id": "mossberg_500", + "fg": 2069, + "rotates": false + }, + { + "id": "moss_brownie", + "fg": 2070, + "rotates": false + }, + { + "id": "rm11b_sniper_rifle", + "fg": 2073 + }, + { + "id": ["overlay_wielded_2_shot_special", "overlay_wielded_hs_semi"], + "fg": 2074, + "rotates": false + }, + { + "id": "overlay_wielded_coilgun", + "fg": 2074, + "rotates": false + }, + { + "id": "overlay_wielded_hk_ucp", + "fg": 2074, + "rotates": false + }, + { + "id": "overlay_wielded_l_enforcer_45", + "fg": 2074, + "rotates": false + }, + { + "id": "overlay_wielded_l_lookout_9mm", + "fg": 2074, + "rotates": false + }, + { + "id": "overlay_wielded_lemat_revolver", + "fg": 2074, + "rotates": false + }, + { + "id": ["overlay_wielded_acr", "overlay_wielded_acr1"], + "fg": 2075, + "rotates": false + }, + { + "id": "overlay_wielded_m14a", + "fg": 2075, + "rotates": false + }, + { + "id": "overlay_wielded_atgm_turret", + "fg": 2075, + "rotates": false + }, + { + "id": "overlay_wielded_m14ebr", + "fg": 2075, + "rotates": false + }, + { + "id": "overlay_wielded_ruger_mini", + "fg": 2075, + "rotates": false + }, + { + "id": ["overlay_wielded_ak47", "overlay_wielded_akm"], + "fg": 2076, + "rotates": false + }, + { + "id": "overlay_wielded_ak74", + "fg": 2076, + "rotates": false + }, + { + "id": "overlay_wielded_an94", + "fg": 2076, + "rotates": false + }, + { + "id": "overlay_wielded_sks", + "fg": 2076, + "rotates": false + }, + { + "id": "overlay_wielded_cw-24", + "fg": 2076, + "rotates": false + }, + { + "id": "overlay_wielded_cw-24hack", + "fg": 2076, + "rotates": false + }, + { + "id": "overlay_wielded_cw-24k", + "fg": 2076, + "rotates": false + }, + { + "id": "overlay_wielded_cw-24m", + "fg": 2076, + "rotates": false + }, + { + "id": "overlay_wielded_cw-24m_hack", + "fg": 2076, + "rotates": false + }, + { + "id": "overlay_wielded_svs-24", + "fg": 2076, + "rotates": false + }, + { + "id": "overlay_wielded_svs-24c", + "fg": 2076, + "rotates": false + }, + { + "id": "overlay_wielded_ar15", + "fg": 2077, + "rotates": false + }, + { + "id": "overlay_wielded_m27iar", + "fg": 2077, + "rotates": false + }, + { + "id": ["overlay_wielded_arx160", "overlay_wielded_ar57"], + "fg": 2078, + "rotates": false + }, + { + "id": ["overlay_wielded_fn_fal", "overlay_wielded_fn571"], + "fg": 2078, + "rotates": false + }, + { + "id": "overlay_wielded_ksub2000", + "fg": 2078, + "rotates": false + }, + { + "id": "overlay_wielded_triple_launcher_simple", + "fg": 2078, + "rotates": false + }, + { + "id": "overlay_wielded_ashot", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_cop_38", + "fg": 2079, + "rotates": false + }, + { + "id": ["overlay_wielded_deagle_44", "overlay_wielded_e1776"], + "fg": 2079, + "rotates": false + }, + { + "id": ["overlay_wielded_m1911", "overlay_wielded_amthard", "overlay_wielded_browning_hp"], + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_m1991a1_38super", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_af2011a1_38super", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_m9", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_moss_brownie", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_raging_bull", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_raging_judge", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_ruger_lcr_22", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_ruger_lcr_38", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_ruger_redhawk", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_sw_500", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_sw_610", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_sw_619", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_sw629", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_50pistol", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_ficrico", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_gunknife", + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_bbgun", + "fg": 2080, + "rotates": false + }, + { + "id": "overlay_wielded_combination_gun", + "fg": 2080, + "rotates": false + }, + { + "id": "overlay_wielded_pipe_shotgun", + "fg": 2080, + "rotates": false + }, + { + "id": "overlay_wielded_remington_870", + "fg": 2080, + "rotates": false + }, + { + "id": "overlay_wielded_revolver_shotgun", + "fg": 2080, + "rotates": false + }, + { + "id": "overlay_wielded_shotgun_s", + "fg": 2080, + "rotates": false + }, + { + "id": "overlay_wielded_410_pipe_shotgun", + "fg": 3947 + }, + { + "id": "overlay_wielded_shotgun_410", + "fg": 2080, + "rotates": false + }, + { + "id": "overlay_wielded_m1a", + "fg": 2080, + "rotates": false + }, + { + "id": "overlay_wielded_surv_levershotgun", + "fg": 2080, + "rotates": false + }, + { + "id": "overlay_wielded_henry_big_boy", + "fg": 2080, + "rotates": false + }, + { + "id": "!overlay_wielded_BFG", + "fg": 2081, + "rotates": false + }, + { + "id": "overlay_wielded_bigun", + "fg": 2082, + "rotates": false + }, + { + "id": "overlay_wielded_l_def_12", + "fg": 2082, + "rotates": false + }, + { + "id": "overlay_wielded_ithaca_doom_dual", + "fg": 2107, + "rotates": false + }, + { + "id": "overlay_wielded_m1014", + "fg": 2082, + "rotates": false + }, + { + "id": "overlay_wielded_mossberg_500", + "fg": 2082, + "rotates": false + }, + { + "id": "overlay_wielded_weatherby_5", + "fg": 2082, + "rotates": false + }, + { + "id": "overlay_wielded_bloodscourge", + "fg": 2083, + "rotates": false + }, + { + "id": "bomblet_launcher_double", + "fg": 2061, + "rotates": false + }, + { + "id": "bomblet_launcher_brute", + "fg": 2061, + "rotates": false + }, + { + "id": "overlay_wielded_bomblet_launcher_brute", + "fg": 2084, + "rotates": false + }, + { + "id": "overlay_wielded_bomblet_launcher_double", + "fg": 2084, + "rotates": false + }, + { + "id": "bomblet_launcher_dualshot", + "fg": 2061, + "rotates": false + }, + { + "id": "overlay_wielded_bomblet_launcher_dualshot", + "fg": 2085, + "rotates": false + }, + { + "id": "overlay_wielded_bomblet_launcher_rotary", + "fg": 2086, + "rotates": false + }, + { + "id": "overlay_wielded_scattergun", + "fg": 2086, + "rotates": false + }, + { + "id": "overlay_wielded_bomblet_launcher_single", + "fg": 2087, + "rotates": false + }, + { + "id": "bomblet_launcher_single", + "fg": 2061, + "rotates": false + }, + { + "id": "overlay_wielded_blunderbuss", + "fg": 2087, + "rotates": false + }, + { + "id": "overlay_wielded_briefcase_smg", + "fg": 2088, + "rotates": false + }, + { + "id": "overlay_wielded_browning_blr", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_m1903", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_mosin44", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_mosin44_ebr", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_mosin91_30", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_mosin91_30_ebr", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_nailrifle", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_ruger_1022", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_trex_gun", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_levergun_44", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_carbine_flintlock", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_bh_m89", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_carbine_flintlock_double", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_marlin_9a", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_remington_700", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_savage_111f", + "fg": 2089, + "rotates": false + }, + { + "id": "overlay_wielded_calico", + "fg": 2091, + "rotates": false + }, + { + "id": "overlay_wielded_surv_carbine_223", + "fg": 2091, + "rotates": false + }, + { + "id": "overlay_wielded_surv_full_223", + "fg": 2091, + "rotates": false + }, + { + "id": "overlay_wielded_chemical_thrower", + "fg": 2092, + "rotates": false + }, + { + "id": "overlay_wielded_fn57", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_glock_19", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_p226_357sig", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_wrist_dread", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_glock_17", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_glock_22", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_l_mp_45", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_l_mp_9mm", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_l_sp_45", + "fg": 2093, + "rotates": false + }, + { + "id": ["overlay_wielded_410_revolver", "overlay_wielded_model_10_revolver", "overlay_wielded_sw_686"], + "fg": 2079, + "rotates": false + }, + { + "id": "overlay_wielded_l_sp_9mm", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_makarov", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_nailgun", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_sig_40", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_sig_mosquito", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_sig_p230", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_surv_hand_cannon", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_surv_six_shooter", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_sw_22", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_taurus_38", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_tokarev", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_usp_45", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_usp_9mm", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_walther_ppk", + "fg": 2093, + "rotates": false + }, + { + "id": "overlay_wielded_l_bak_223", + "fg": 2093, + "rotates": false + }, + { + "id": ["overlay_wielded_compbow", "overlay_wielded_compbow_high", "overlay_wielded_compbow_low"], + "fg": 2094, + "rotates": false + }, + { + "id": "overlay_wielded_compositebow", + "fg": 2095, + "rotates": false + }, + { + "id": "overlay_wielded_reflexbow", + "fg": 2095, + "rotates": false + }, + { + "id": "overlay_wielded_recurbow", + "fg": 2095, + "rotates": false + }, + { + "id": "overlay_wielded_ichaival_replica", + "fg": 2095, + "rotates": false + }, + { + "id": "overlay_wielded_cx4", + "fg": 2097, + "rotates": false + }, + { + "id": "overlay_wielded_emp_gun", + "fg": 2098, + "rotates": false + }, + { + "id": "overlay_wielded_flamethrower", + "fg": 2099, + "rotates": false + }, + { + "id": "overlay_wielded_flamethrower_crude", + "fg": 2099, + "rotates": false + }, + { + "id": "overlay_wielded_flamethrower_simple", + "fg": 2099, + "rotates": false + }, + { + "id": "!overlay_wielded_flesh_rifle", + "fg": 2100, + "rotates": false + }, + { + "id": "overlay_wielded_fn_p90", + "fg": 2101, + "rotates": false + }, + { + "id": "overlay_wielded_ftk93", + "fg": 2102, + "rotates": false + }, + { + "id": "overlay_wielded_garand", + "fg": 2103, + "rotates": false + }, + { + "id": "overlay_wielded_l_long_45", + "fg": 2103, + "rotates": false + }, + { + "id": "overlay_wielded_m2010", + "fg": 2103, + "rotates": false + }, + { + "id": "overlay_wielded_survivor_special_700", + "fg": 2103, + "rotates": false + }, + + { + "id": "overlay_wielded_hand_of_armok", + "fg": 2105, + "rotates": false + }, + { + "id": "overlay_wielded_helsing", + "fg": 2106, + "rotates": false + }, + { + "id": "overlay_wielded_hk_g3", + "fg": 2107, + "rotates": false + }, + { + "id": ["overlay_wielded_saiga_12", "overlay_wielded_saiga_410"], + "fg": 2107, + "rotates": false + }, + { + "id": "overlay_wielded_hk_g36", + "fg": 2108, + "rotates": false + }, + { + "id": "overlay_wielded_ksg", + "fg": 2108, + "rotates": false + }, + { + "id": "overlay_wielded_ithaca_doom", + "fg": 2108, + "rotates": false + }, + { + "id": "overlay_wielded_hk_g80", + "fg": 2109, + "rotates": false + }, + { + "id": "overlay_wielded_shockcannon", + "fg": 2109, + "rotates": false + }, + { + "id": "overlay_wielded_shockcannon_ups", + "fg": 2109, + "rotates": false + }, + { + "id": "overlay_wielded_heavy_rail_rifle", + "fg": 2109, + "rotates": false + }, + + { + "id": "overlay_wielded_rebar_rifle", + "fg": 2109, + "rotates": false + }, + { + "id": "overlay_wielded_hk_mp5", + "fg": 2110, + "rotates": false + }, + { + "id": "overlay_wielded_m6_asw", + "fg": 2110, + "rotates": false + }, + { + "id": ["overlay_wielded_hk_ump45", "overlay_wielded_apc9"], + "fg": 2110, + "rotates": false + }, + { + "id": "overlay_wielded_rm228", + "fg": 2110, + "rotates": false + }, + { + "id": "overlay_wielded_laser_cannon", + "fg": 2111, + "rotates": false + }, + { + "id": "laser_cannon", + "fg": 2111 + }, + { + "id": "cerberus_laser", + "fg": 2111 + }, + { + "id": ["overlay_wielded_laser_rifle", "overlay_wielded_arc_laser_rifle", "overlay_wielded_laser_sniper"], + "fg": 2112, + "rotates": false + }, + { + "id": "overlay_wielded_bolt_rifle_elec", + "fg": 2112, + "rotates": false + }, + { + "id": "overlay_wielded_launcher_simple", + "fg": 2113, + "rotates": false + }, + { + "id": "overlay_wielded_m320", + "fg": 2113, + "rotates": false + }, + { + "id": "overlay_wielded_m79", + "fg": 2113, + "rotates": false + }, + { + "id": "overlay_wielded_rm802", + "fg": 2113, + "rotates": false + }, + { + "id": "overlay_wielded_LAW", + "fg": 2114, + "rotates": false + }, + { + "id": "overlay_wielded_LAW_Packed", + "fg": 2114, + "rotates": false + }, + { + "id": ["overlay_wielded_longbow", "overlay_wielded_hybridbow"], + "fg": 2115, + "rotates": false + }, + { + "id": "overlay_wielded_selfbow", + "fg": 2115, + "rotates": false + }, + { + "id": "overlay_wielded_l_base_223", + "fg": 2116, + "rotates": false + }, + { + "id": "overlay_wielded_l_car_223", + "fg": 2116, + "rotates": false + }, + { + "id": "overlay_wielded_l_dsr_223", + "fg": 2116, + "rotates": false + }, + { + "id": "overlay_wielded_l_lmg_223", + "fg": 2116, + "rotates": false + }, + { + "id": "overlay_wielded_surv_lmg_308", + "fg": 2116, + "rotates": false + }, + { + "id": "overlay_wielded_surv_lmg_762", + "fg": 2116, + "rotates": false + }, + { + "id": "overlay_wielded_l_mbr_223", + "fg": 2116, + "rotates": false + }, + { + "id": "overlay_wielded_m107a1", + "fg": 2117, + "rotates": false + }, + { + "id": "overlay_wielded_rm11b_sniper_rifle", + "fg": 2117, + "rotates": false + }, + { + "id": "overlay_wielded_cwd-63", + "fg": 2117, + "rotates": false + }, + { + "id": "overlay_wielded_m134", + "fg": 2118, + "rotates": false + }, + { + "id": ["overlay_wielded_m240", "overlay_wielded_ameli"], + "fg": 2119, + "rotates": false + }, + { + "id": "overlay_wielded_m249", + "fg": 2119, + "rotates": false + }, + { + "id": "overlay_wielded_m2browning_sawn", + "fg": 2119, + "rotates": false + }, + { + "id": "overlay_wielded_m60", + "fg": 2119, + "rotates": false + }, + { + "id": "overlay_wielded_rm298", + "fg": 2119, + "rotates": false + }, + { + "id": "overlay_wielded_m202_flash", + "fg": 2120, + "rotates": false + }, + { + "id": "overlay_wielded_m2browning", + "fg": 2121, + "rotates": false + }, + { + "id": "overlay_wielded_m3_carlgustav", + "fg": 2122, + "rotates": false + }, + { + "id": "overlay_wielded_surv_rocket_launcher", + "fg": 2122, + "rotates": false + }, + { + "id": "overlay_wielded_mac_10", + "fg": 2123, + "rotates": false + }, + { + "id": "overlay_wielded_tec9", + "fg": 2123, + "rotates": false + }, + { + "id": "overlay_wielded_smg_38", + "fg": 2123, + "rotates": false + }, + { + "id": "overlay_wielded_surv_full_45", + "fg": 2123, + "rotates": false + }, + { + "id": "overlay_wielded_smg_40", + "fg": 2123, + "rotates": false + }, + { + "id": "overlay_wielded_smg_22", + "fg": 2123, + "rotates": false + }, + { + "id": "overlay_wielded_smg_45", + "fg": 2123, + "rotates": false + }, + { + "id": "overlay_wielded_smg_9mm", + "fg": 2123, + "rotates": false + }, + { + "id": "overlay_wielded_surv_full_9mm", + "fg": 2123, + "rotates": false + }, + { + "id": "overlay_wielded_hk_mp7", + "fg": 2123, + "rotates": false + }, + { + "id": "overlay_wielded_mgl", + "fg": 2124, + "rotates": false + }, + { + "id": "overlay_wielded_mark19", + "fg": 2124, + "rotates": false + }, + { + "id": "overlay_wielded_mininuke_launcher", + "fg": 2125, + "rotates": false + }, + { + "id": "overlay_wielded_minispeargun", + "fg": 2126, + "rotates": false + }, + { + "id": "overlay_wielded_pipe_combination_gun", + "fg": 2127, + "rotates": false + }, + { + "id": "overlay_wielded_gunsword", + "fg": 2127, + "rotates": false + }, + { + "id": "overlay_wielded_pipe__gun_44", + "fg": 2127, + "rotates": false + }, + { + "id": "overlay_wielded_pistol_pepperbox", + "fg": 2127, + "rotates": false + }, + { + "id": "overlay_wielded_pipe_double_shotgun", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_shotgun_d", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_rifle_22", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_rifle_3006", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_rifle_308", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_rifle_9mm", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_rifle_flintlock", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_rifle_38", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_rifle_40", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_rifle_44", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_rifle_45", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_rifle_223", + "fg": 2128, + "rotates": false + }, + { + "id": "overlay_wielded_pistol_flintlock", + "fg": 2129, + "rotates": false + }, + { + "id": "overlay_wielded_colt_army", + "fg": 2129, + "rotates": false + }, + { + "id": "overlay_wielded_colt_saa", + "fg": 2129, + "rotates": false + }, + { + "id": "overlay_wielded_colt_navy", + "fg": 2129, + "rotates": false + }, + { + "id": "overlay_wielded_plasma_rifle", + "fg": 2130, + "rotates": false + }, + { + "id": "overlay_wielded_ppsh", + "fg": 2131, + "rotates": false + }, + { + "id": "overlay_wielded_reflexrecurvebow", + "fg": 2132, + "rotates": false + }, + { + "id": "overlay_wielded_rm99_pistol", + "fg": 2134, + "rotates": false + }, + { + "id": "overlay_wielded_needlepistol", + "fg": 2134, + "rotates": false + }, + { + "id": "overlay_wielded_rm20", + "fg": 2135, + "rotates": false + }, + { + "id": "overlay_wielded_rm614_lmg", + "fg": 2135, + "rotates": false + }, + { + "id": "overlay_wielded_rm2000_smg", + "fg": 2136, + "rotates": false + }, + { + "id": "overlay_wielded_needlegun", + "fg": 2136, + "rotates": false + }, + { + "id": "overlay_wielded_rm360_carbine", + "fg": 2137, + "rotates": false + }, + { + "id": "overlay_wielded_tihar", + "fg": 2137, + "rotates": false + }, + { + "id": ["overlay_wielded_win70", "overlay_wielded_henry"], + "fg": 2137, + "rotates": false + }, + { + "id": "overlay_wielded_american_180", + "fg": 2137, + "rotates": false + }, + { + "id": "overlay_wielded_rm451_flamethrower", + "fg": 2138, + "rotates": false + }, + { + "id": "overlay_wielded_rm51_assault_rifle", + "fg": 2139, + "rotates": false + }, + { + "id": "overlay_wielded_surv_full_762", + "fg": 2139, + "rotates": false + }, + { + "id": "overlay_wielded_rm88_battle_rifle", + "fg": 2139, + "rotates": false + }, + { + "id": "overlay_wielded_surv_full_308", + "fg": 2139, + "rotates": false + }, + { + "id": "overlay_wielded_abzats", + "fg": 2139, + "rotates": false + }, + { + "id": "overlay_wielded_rm120c", + "fg": 2139, + "rotates": false + }, + { + "id": "overlay_wielded_RPG", + "fg": 2140, + "rotates": false + }, + { + "id": "overlay_wielded_scar_h", + "fg": 2141, + "rotates": false + }, + { + "id": "overlay_wielded_scar_l", + "fg": 2141, + "rotates": false + }, + { + "id": "overlay_wielded_scourge_staff", + "fg": 2142, + "rotates": false + }, + { + "id": "!overlay_wielded_shockcannon", + "fg": 2143, + "rotates": false + }, + { + "id": "overlay_wielded_shortbow", + "fg": 2144, + "rotates": false + }, + { + "id": "overlay_wielded_sig552", + "fg": 2145, + "rotates": false + }, + { + "id": "overlay_wielded_skorpion_61", + "fg": 2146, + "rotates": false + }, + { + "id": "overlay_wielded_skorpion_82", + "fg": 2146, + "rotates": false + }, + { + "id": "overlay_wielded_tommygun", + "fg": 2146, + "rotates": false + }, + { + "id": "overlay_wielded_hk_mp5eod", + "fg": 2146, + "rotates": false + }, + { + "id": "overlay_wielded_sling", + "fg": 2147, + "rotates": false + }, + { + "id": "overlay_wielded_slingshot", + "fg": 2148, + "rotates": false + }, + { + "id": "overlay_wielded_wristrocket", + "fg": 2148, + "rotates": false + }, + { + "id": "overlay_wielded_speargun", + "fg": 2149, + "rotates": false + }, + { + "id": "overlay_wielded_airspeargun", + "fg": 2149, + "rotates": false + }, + { + "id": "overlay_wielded_doublespeargun", + "fg": 2149, + "rotates": false + }, + { + "id": "overlay_wielded_sten", + "fg": 2150, + "rotates": false + }, + { + "id": "overlay_wielded_steyr_aug", + "fg": 2151, + "rotates": false + }, + { + "id": "overlay_wielded_survbow", + "fg": 2152, + "rotates": false + }, + { + "id": "overlay_wielded_TDI", + "fg": 2153, + "rotates": false + }, + { + "id": "overlay_wielded_nx17", + "fg": 2154, + "rotates": false + }, + { + "id": "overlay_wielded_unbio_blaster_gun", + "fg": 2154, + "rotates": false + }, + { + "id": "overlay_wielded_arccan", + "fg": 2154, + "rotates": false + }, + { + "id": "overlay_wielded_ltcarb", + "fg": 2154, + "rotates": false + }, + { + "id": "overlay_wielded_ups_rifle", + "fg": 2155, + "rotates": false + }, + { + "id": "overlay_wielded_ups_rifle_crank", + "fg": 2156, + "rotates": false + }, + { + "id": "overlay_wielded_uzi", + "fg": 2157, + "rotates": false + }, + { + "id": "overlay_wielded_v29", + "fg": 2158, + "rotates": false + }, + { + "id": "overlay_wielded_v29_cheap", + "fg": 2159, + "rotates": false + }, + { + "id": "blunderbuss", + "fg": 2160 + }, + { + "id": "carbine_flintlock", + "fg": 2160 + }, + { + "id": "survivor_special_700", + "fg": 2160 + }, + { + "id": "carbine_flintlock_double", + "fg": 2160 + }, + { + "id": "rifle_flintlock", + "fg": 2161 + }, + { + "id": "surv_levershotgun", + "fg": 2161 + }, + { + "id": "pistol_flintlock", + "fg": 2162, + "rotates": false + }, + { + "id": "surv_hand_cannon", + "fg": 2162 + }, + { + "id": "plasma_rifle", + "fg": 2163, + "rotates": false + }, + { + "id": "queen", + "fg": 2165 + }, + { + "id": "recurbow", + "fg": 2168, + "rotates": false + }, + { + "id": "reflexbow", + "fg": 2169, + "rotates": false + }, + { + "id": "reflexrecurvebow", + "fg": 2170, + "rotates": false + }, + { + "id": "remington_700", + "fg": 2171, + "rotates": false + }, + { + "id": "remington_870", + "fg": 2172, + "rotates": false + }, + { + "id": "rifle_22", + "fg": 2175, + "rotates": false + }, + { + "id": "rifle_38", + "fg": 2175, + "rotates": false + }, + { + "id": "rifle_3006", + "fg": 2175 + }, + { + "id": "rifle_308", + "fg": 2175 + }, + { + "id": "rifle_9mm", + "fg": 2175 + }, + { + "id": "rifle_44", + "fg": 2175 + }, + { + "id": "rifle_45", + "fg": 2175 + }, + { + "id": "rifle_40", + "fg": 2175 + }, + { + "id": "pipe__gun_44", + "fg": 2175 + }, + { + "id": "pipe_shotgun", + "fg": 2175 + }, + { + "id": "rifle_223", + "fg": 2175 + }, + { + "id": "rm360_carbine", + "fg": 2177 + }, + { + "id": "l_long_45", + "fg": 2178 + }, + { + "id": "abzats", + "fg": 2179 + }, + { + "id": "rm51_assault_rifle", + "fg": 2181, + "rotates": false + }, + { + "id": "surv_full_762", + "fg": 2181, + "rotates": false + }, + { + "id": "rm802", + "fg": 2181 + }, + { + "id": "rm614_lmg", + "fg": 2182, + "rotates": false + }, + { + "id": "rm20", + "fg": 2182 + }, + { + "id": "rm120c", + "fg": 2183 + }, + { + "id": "RPG", + "fg": 2185, + "rotates": false + }, + { + "id": "surv_rocket_launcher", + "fg": 2185 + }, + { + "id": "ruger_1022", + "fg": 2186, + "rotates": false + }, + { + "id": "ruger_lcr_38", + "fg": 2187, + "rotates": false + }, + { + "id": "ruger_lcr_22", + "fg": 2187, + "rotates": false + }, + { + "id": "surv_six_shooter", + "fg": 2187 + }, + { + "id": "ruger_mini", + "fg": 2188, + "rotates": false + }, + { + "id": "ruger_redhawk", + "fg": 2189, + "rotates": false + }, + { + "id": "l_dsr_223", + "fg": 2190 + }, + { + "id": "scar_h", + "fg": 2191, + "rotates": false + }, + { + "id": "selfbow", + "fg": 2194, + "rotates": false + }, + { + "id": "shortbow", + "fg": 2195, + "rotates": false + }, + { + "id": "shotgun_d", + "fg": 2196, + "rotates": false + }, + { + "id": "shotgun_s", + "fg": 2196 + }, + { + "id": "410_pipe_shotgun", + "fg": 2067 + }, + { + "id": "shotgun_410", + "fg": 2196 + }, + { + "id": "airspeargun", + "fg": 2196 + }, + { + "id": "doublespeargun", + "fg": 2196 + }, + { + "id": "speargun", + "fg": 2196 + }, + { + "id": "sig_40", + "fg": 2197, + "rotates": false + }, + { + "id": "sig_mosquito", + "fg": 2198, + "rotates": false + }, + { + "id": "sig_p230", + "fg": 2198 + }, + { + "id": "skorpion_82", + "fg": 2199, + "rotates": false + }, + { + "id": "sling", + "fg": 2201, + "rotates": false + }, + { + "id": "wristrocket", + "fg": 2201 + }, + { + "id": "slingshot", + "fg": 2202, + "rotates": false + }, + { + "id": "smg_38", + "fg": 2203 + }, + { + "id": "smg_9mm", + "fg": 2203, + "rotates": false + }, + { + "id": "surv_full_9mm", + "fg": 2203, + "rotates": false + }, + { + "id": "smg_40", + "fg": 2203, + "rotates": false + }, + { + "id": "smg_45", + "fg": 2203 + }, + { + "id": "surv_full_45", + "fg": 2203 + }, + { + "id": "smg_22", + "fg": 2203 + }, + { + "id": "surv_carbine_223", + "fg": 2203 + }, + { + "id": "surv_full_223", + "fg": 2203 + }, + { + "id": ["glowie", "vp_gel_lamp", "vp_gel_lamp_d"], + "fg": 2204 + }, + { + "id": "sparkie", + "fg": 2204 + }, + { + "id": "voideater", + "fg": 2204 + }, + { + "id": "glowie", + "fg": 2204 + }, + { + "id": "l_base_223", + "fg": 2207 + }, + { + "id": "l_car_223", + "fg": 2208 + }, + { + "id": "l_mbr_223", + "fg": 2208 + }, + { + "id": "2_shot_special", + "fg": 2209 + }, + { + "id": "l_lookout_9mm", + "fg": 2211 + }, + { + "id": "sw629", + "fg": 2212 + }, + { + "id": "sig552", + "fg": 2215 + }, + { + "id": "usp_45", + "fg": 2221, + "rotates": false + }, + { + "id": "l_mp_45", + "fg": 2221 + }, + { + "id": "l_sp_45", + "fg": 2221 + }, + { + "id": ["410_revolver", "model_10_revolver", "sw_686"], + "fg": 2210 + }, + { + "id": "usp_9mm", + "fg": 2222, + "rotates": false + }, + { + "id": "l_mp_9mm", + "fg": 2222, + "rotates": false + }, + { + "id": "l_sp_9mm", + "fg": 2222 + }, + { + "id": "makarov", + "fg": 2226, + "rotates": false + }, + { + "id": "watercannon", + "fg": 2227 + }, + { + "id": ["win70", "henry"], + "fg": 2228, + "rotates": false + }, + { + "id": "bigun", + "fg": 2228 + }, + { + "id": "l_def_12", + "fg": 2228 + }, + { + "id": "ithaca_doom_dual", + "fg": 2190 + }, + { + "id": "trex_gun", + "fg": 2228 + }, + { + "id": ["adjustable_stock", "lmg_handle"], + "fg": 2230, + "rotates": false + }, + { + "id": "arrowrest", + "fg": 2231 + }, + { + "id": ["bow_sight", "bow_sight_pin"], + "fg": 2231 + }, + { + "id": "autofire", + "fg": 2232 + }, + { + "id": "beltfeed", + "fg": 2232 + }, + { + "id": "bow_stabilizer", + "fg": 2232 + }, + { + "id": "conversion_battle", + "fg": 2232 + }, + { + "id": "conversion_sniper", + "fg": 2232 + }, + { + "id": "match_trigger", + "fg": 2232 + }, + { + "id": ["stabilizer", "lead_stabilizer"], + "fg": 2232 + }, + { + "id": "tuned_mechanism", + "fg": 2232 + }, + { + "id": "autofire_654", + "fg": 2232 + }, + { + "id": "combination_gun_shotgun", + "fg": 2234 + }, + { + "id": "combination_gun_shotgun_pipe", + "fg": 2235 + }, + { + "id": "pistol_scope", + "fg": 2242 + }, + { + "id": "tele_sight_pistol", + "fg": 2242 + }, + { + "id": "tele_sight", + "fg": 2242 + }, + { + "id": ["red_dot_sight", "lead_red_dot_sight"], + "fg": 2243 + }, + { + "id": "offset_sights", + "fg": 2243 + }, + { + "id": ["rail_laser_sight", "surv_laser_sight"], + "fg": 2244 + }, + { + "id": "lwfeed", + "fg": 2245 + }, + { + "id": "surv_762_mag", + "fg": 2245 + }, + { + "id": "m203", + "fg": 2246, + "rotates": false + }, + { + "id": "bomblet_undermod", + "fg": 2246, + "rotates": false + }, + { + "id": "ksg_aux_shotgun", + "fg": 2246 + }, + { + "id": "light_grip", + "fg": 2248 + }, + { + "id": "ugl_buttstock", + "fg": 2249 + }, + { + "id": "recoil_stock", + "fg": 2250, + "rotates": false + }, + { + "id": "folding_stock", + "fg": 2250 + }, + { + "id": "crafted_suppressor", + "fg": 2257 + }, + { + "id": "shot_suppressor", + "fg": 2257 + }, + { + "id": "suppressor_compact", + "fg": 2257 + }, + { + "id": "waterproof_gunmod", + "fg": 2258, + "rotates": false + }, + { + "id": "5x50_100_mag", + "fg": 2259 + }, + { + "id": "8x40_100_mag", + "fg": 2259 + }, + { + "id": "8x40_250_mag", + "fg": 2260 + }, + { + "id": "ppshdrum", + "fg": 2260 + }, + { + "id": "8x40_500_mag", + "fg": 2261 + }, + { + "id": "8x40_50_mag", + "fg": 2262 + }, + { + "id": "stanag30", + "fg": 2262 + }, + { + "id": "ak74mag", + "fg": 2263, + "rotates": false + }, + { + "id": "ppshmag", + "fg": 2263 + }, + { + "id": "cwd-63bigmag", + "fg": 2263 + }, + { + "id": "cwd-63mag", + "fg": 2263 + }, + { + "id": "svs24_robomag", + "fg": 2263 + }, + { + "id": "belt308_reusable", + "fg": 2264, + "rotates": false + }, +{ + "id": "belt308_surv", + "fg": 2264, + "rotates": false + }, + { + "id": "belt223", + "fg": 2264 + }, + { + "id": "belt308", + "fg": 2264 + }, + { + "id": "surv_belt_308", + "fg": 2264 + }, + { + "id": "surv_belt_762", + "fg": 2264 + }, + { + "id": "surv_belt_223", + "fg": 2264 + }, + { + "id": "belt40mm", + "fg": 2265 + }, + { + "id": "belt50", + "fg": 2265 + }, + { + "id": "belt30mm", + "fg": 2265 + }, + { + "id": "blrmag", + "fg": 2266 + }, + { + "id": "m107a1mag", + "fg": 2266 + }, + { + "id": "m2010mag", + "fg": 2266 + }, + { + "id": "glockbigmag", + "fg": 2267, + "rotates": false + }, + { + "id": "m9bigmag", + "fg": 2267, + "rotates": false + }, + { + "id": "thompson_bigmag", + "fg": 2267, + "rotates": false + }, + { + "id": "stenmag", + "fg": 2267, + "rotates": false + }, + { + "id": "8x40_25_mag", + "fg": 2267, + "rotates": false + }, + { + "id": "uzimag", + "fg": 2267 + }, + { + "id": "ump45mag", + "fg": 2267 + }, + { + "id": "tec9mag", + "fg": 2267 + }, + { + "id": "tdi_mag", + "fg": 2267 + }, + { + "id": "mac10mag", + "fg": 2267 + }, + { + "id": "m1911bigmag", + "fg": 2267 + }, + { + "id": "lw21mag", + "fg": 2267 + }, + { + "id": "glock40bigmag", + "fg": 2267 + }, + { + "id": "fnp90mag", + "fg": 2267 + }, + { + "id": "ruger1022bigmag", + "fg": 2267 + }, + { + "id": "nailmag", + "fg": 2267 + }, + { + "id": "glockmag", + "fg": 2268, + "rotates": false + }, + { + "id": "glock17_17", + "fg": 2268, + "rotates": false + }, + { + "id": "glock17_22", + "fg": 2268, + "rotates": false + }, + { + "id": "usp45mag", + "fg": 2268, + "rotates": false + }, + { + "id": "m9mag", + "fg": 2268, + "rotates": false + }, + { + "id": "usp9mag", + "fg": 2268, + "rotates": false + }, + { + "id": "skorpion_61_mag", + "fg": 2268, + "rotates": false + }, + { + "id": "skorpion_82_mag", + "fg": 2268, + "rotates": false + }, + { + "id": "thompson_mag", + "fg": 2268, + "rotates": false + }, + { + "id": "survivor9mm_mag", + "fg": 2268, + "rotates": false + }, + { + "id": "surv_9mm_mag", + "fg": 2268 + }, + { + "id": "lw12mag", + "fg": 2268, + "rotates": false + }, + { + "id": "lp_9mm_mag", + "fg": 2268, + "rotates": false + }, + { + "id": ["8x40_10_mag", "9mmbetacmag", "9mmcbjmag"], + "fg": 2268, + "rotates": false + }, + { + "id": "skorpion61mag", + "fg": 2268 + }, + { + "id": "sigp230mag", + "fg": 2268 + }, + { + "id": "ppkmag", + "fg": 2268 + }, + { + "id": "mosquitomag", + "fg": 2268 + }, + { + "id": ["m1911mag", "460mag", "460mag2"], + "fg": 2268 + }, + { + "id": "glock40mag", + "fg": 2268 + }, + { + "id": "p226mag_15rd_357sig", + "fg": 2268 + }, + { + "id": "fn57mag", + "fg": 2268 + }, + { + "id": "deaglemag", + "fg": 2268 + }, + { + "id": "sig40mag", + "fg": 2268 + }, + { + "id": "sw22mag", + "fg": 2268 + }, + { + "id": "taurus38mag", + "fg": 2268 + }, + { + "id": "m1991_38smag", + "fg": 2268 + }, + { + "id": "tokarevmag", + "fg": 2268 + }, + { + "id": "smg_22_mag", + "fg": 2268 + }, + { + "id": "smg_38_mag", + "fg": 2268 + }, + { + "id": "smg_40_mag", + "fg": 2268 + }, + { + "id": "smg_45_mag", + "fg": 2268 + }, + { + "id": "smg_9mm_mag", + "fg": 2268 + }, + { + "id": "lw223bigmag", + "fg": 2269, + "rotates": false + }, + { + "id": ["ruger1022mag", "22mag"], + "fg": 2269 + }, + { + "id": ["lw223mag", "223r5mag"], + "fg": 2270, + "rotates": false + }, + { + "id": "scarhbigmag", + "fg": 2270 + }, + { + "id": "saiga10mag", + "fg": 2270 + }, + { + "id": "saiga10mag_410", + "fg": 2270 + }, + { + "id": "m14mag", + "fg": 2270 + }, + { + "id": "hk46mag", + "fg": 2270 + }, + { + "id": "g3mag", + "fg": 2270 + }, + { + "id": "falmag", + "fg": 2270 + }, + { + "id": "m14smallmag", + "fg": 2271 + }, + { + "id": "hk46bigmag", + "fg": 2271 + }, + { + "id": "falbigmag", + "fg": 2271 + }, + { + "id": "5x50_50_mag", + "fg": 2271 + }, + { + "id": "20x66_40_mag", + "fg": 2271 + }, + { + "id": "20x66_20_mag", + "fg": 2271 + }, + { + "id": "20x66_10_mag", + "fg": 2271 + }, + { + "id": "360_200_mag", + "fg": 2271 + }, + { + "id": "m1918bigmag", + "fg": 2272, + "rotates": false + }, + { + "id": "makarovmag", + "fg": 2273, + "rotates": false + }, + { + "id": "skorpion82mag", + "fg": 2273 + }, + { + "id": "calicomag", + "fg": 2273 + }, + { + "id": "mp5mag", + "fg": 2274, + "rotates": false + }, + { + "id": "rpk74mag", + "fg": 2275, + "rotates": false + }, + { + "id": "akmmag", + "fg": 2275 + }, + { + "id": "vp_battery_truck", + "fg": 2276, + "rotates": false + }, + { + "id": "vp_storage_car", + "fg": 2276, + "rotates": true + }, + { + "id": "vp_storage_truck", + "fg": 2276, + "rotates": true + }, + { + "id": ["medium_storage_battery", "vp_medium_storage_battery"], + "fg": 2276 + }, + { + "id": "stanag10", + "fg": 2277, + "rotates": false + }, + { + "id": "m1918mag", + "fg": 2277, + "rotates": false + }, + { + "id": ["survivor223mag", "223ak74mag10", "223ak74mag30", "223ak74mag35", "transmag"], + "fg": 2277, + "rotates": false + }, + { + "id": "scarhmag", + "fg": 2277 + }, + { + "id": "cw24_robomag", + "fg": 2277 + }, + { + "id": "cw24_bigrobomag", + "fg": 2277 + }, + { + "id": "thompson_drum", + "fg": 2278, + "rotates": false + }, + { + "id": ["mp5bigmag", "e1776mag"], + "fg": 2278, + "rotates": false + }, + { + "id": "akmbigmag", + "fg": 2278 + }, + { + "id": "saiga30mag", + "fg": 2278 + }, + { + "id": "g3bigmag", + "fg": 2278 + }, + { + "id": "glock_drum_50rd", + "fg": 2278 + }, + { + "id": "glock_drum_100rd", + "fg": 2278 + }, + { + "id": "a180mag", + "fg": 2278 + }, + { + "id": "hk_g80mag", + "fg": 2278 + }, + { + "id": "360_400_mag", + "fg": 2278 + }, + { + "id": "stanag50", + "fg": 2278 + }, + { + "id": "svs24_robodrum", + "fg": 2278 + }, + { + "id": "saiga30mag_410", + "fg": 2278 + }, + { + "id": "tinyweldtank", + "fg": 2279, + "rotates": false + }, + { + "id": "weldtank", + "fg": 2280, + "rotates": false + }, + { + "id": "debug_mon", + "fg": 2281 + }, + { + "id": "hulk_weapon", + "fg": 2282, + "rotates": false + }, + { + "id": "mon_allosaurus", + "fg": 2284, + "rotates": false + }, + { + "id": "mon_animatronic_bat", + "fg": 2287, + "rotates": false + }, + { + "id": "mon_animatronic_bear_new", + "fg": 2288, + "rotates": false + }, + { + "id": "mon_animatronic_bear_old", + "fg": 2289, + "rotates": false + }, + { + "id": "mon_animatronic_beaver", + "fg": 2290, + "rotates": false + }, + { + "id": "mon_animatronic_bunny_new", + "fg": 2291, + "rotates": false + }, + { + "id": "mon_animatronic_bunny_old", + "fg": 2292, + "rotates": false + }, + { + "id": "mon_animatronic_cat", + "fg": 2293, + "rotates": false + }, + { + "id": "mon_animatronic_chicken_new", + "fg": 2294, + "rotates": false + }, + { + "id": "mon_animatronic_chicken_old", + "fg": 2295, + "rotates": false + }, + { + "id": "mon_animatronic_child", + "fg": 2296, + "rotates": false + }, + { + "id": "mon_animatronic_chipmunk", + "fg": 2297, + "rotates": false + }, + { + "id": "mon_animatronic_cow", + "fg": 2298, + "rotates": false + }, + { + "id": "mon_animatronic_coyote", + "fg": 2299, + "rotates": false + }, + { + "id": "mon_animatronic_deer", + "fg": 2300, + "rotates": false + }, + { + "id": "mon_animatronic_fox_new", + "fg": 2301, + "rotates": false + }, + { + "id": "mon_animatronic_fox_old", + "fg": 2302, + "rotates": false + }, + { + "id": "mon_animatronic_fox_wreck", + "fg": 2303, + "rotates": false + }, + { + "id": "mon_animatronic_horse", + "fg": 2304, + "rotates": false + }, + { + "id": "mon_animatronic_pig", + "fg": 2305, + "rotates": false + }, + { + "id": "mon_animatronic_sheep", + "fg": 2306, + "rotates": false + }, + { + "id": "mon_animatronic_squirrel", + "fg": 2307, + "rotates": false + }, + { + "id": "mon_animatronic_wolf", + "fg": 2308, + "rotates": false + }, + { + "id": "mon_ankylosaurus", + "fg": 2309, + "rotates": false + }, + { + "id": "mon_ant_kwama", + "fg": 2312, + "rotates": false + }, + { + "id": "mon_ant_larva_pk", + "fg": 2314, + "rotates": false + }, + { + "id": "mon_ant_male", + "fg": 2315, + "rotates": false + }, + { + "id": "mon_ant_queen_firebug", + "fg": 2317, + "rotates": false + }, + { + "id": "mon_ant_queen_young", + "fg": 2318, + "rotates": false + }, + { + "id": "mon_ant_scrib", + "fg": 2319, + "rotates": false + }, + { + "id": "mon_ant_soldier_pk", + "fg": 2321, + "rotates": false + }, + { + "id": "mon_ant_soldier_pk_weak", + "fg": 2322, + "rotates": false + }, + { + "id": "mon_ant_soldier_terminal", + "fg": 2323, + "rotates": false + }, + { + "id": "mon_ant_terminal", + "fg": 2324, + "rotates": false + }, + { + "id": "mon_archon", + "fg": 2325, + "rotates": false + }, + { + "id": "mon_bat_vampire", + "fg": 2327, + "rotates": false + }, + { + "id": "mon_bear_mega", + "fg": 2329, + "rotates": false + }, + { + "id": "mon_bear_mega_baby", + "fg": 2329, + "rotates": false + }, + { + "id": "mon_bear_mega_kid", + "fg": 2331, + "rotates": false + }, + { + "id": "mon_bear_mega_mating", + "fg": 2332, + "rotates": false + }, + { + "id": "mon_bear_pk", + "fg": 2333, + "rotates": false + }, + { + "id": "mon_bear_smoky_pk", + "fg": 2335, + "rotates": false + }, + { + "id": "mon_bear_weak", + "fg": 2336, + "rotates": false + }, + { + "id": "mon_beaver", + "fg": 2337, + "rotates": false + }, + { + "id": "mon_beekeeper_pk", + "fg": 2340, + "rotates": false + }, + { + "id": "mon_bee_king", + "fg": 2341, + "rotates": false + }, + { + "id": "mon_bee_larvae", + "fg": 2342, + "rotates": false + }, + { + "id": "mon_bee_queen", + "fg": 2343, + "rotates": false + }, + { + "id": "mon_bee_scout", + "fg": 2344, + "rotates": false + }, + { + "id": "mon_bee_soldier", + "fg": 2345, + "rotates": false + }, + { + "id": "mon_biollante_pk", + "fg": 2347, + "rotates": false + }, + { + "id": "mon_bjay", + "fg": 2348, + "rotates": false + }, + { + "id": "mon_blob_large", + "fg": 2352, + "rotates": false + }, + { + "id": "vp_gelrazor", + "fg": 2352, + "bg": 4151, + "rotates": true + }, + { + "id": "mon_blob_small", + "fg": 2353, + "rotates": false + }, + { + "id": "mon_boomer_huge_pk", + "fg": 2359, + "rotates": false + }, + { + "id": "mon_breather", + "fg": 2360, + "rotates": false + }, + { + "id": "mon_broken_cyborg", + "fg": 2362, + "rotates": false + }, + { + "id": "mon_butterfly", + "fg": 2363, + "rotates": false + }, + { + "id": "mon_cacodemon", + "fg": 2365, + "rotates": false + }, + { + "id": "mon_cacodemon_revive", + "fg": 2366, + "rotates": false + }, + { + "id": "mon_caterpillar", + "fg": 2367, + "rotates": false + }, + { + "id": "mon_centipede", + "fg": 2368, + "rotates": false + }, + { + "id": "mon_charred_nightmare", + "fg": 2370, + "rotates": false + }, + { + "id": "mon_cherub", + "fg": 2371, + "rotates": false + }, + { + "id": "mon_cherub_fly", + "fg": 2372, + "rotates": false + }, + { + "id": "mon_cougar_pk", + "fg": 2380, + "rotates": false + }, + { + "id": "mon_cougar_weak", + "fg": 2381, + "rotates": false + }, + { + "id": "mon_coyote_small", + "fg": 2384, + "rotates": false + }, + { + "id": "mon_coyote_wolf_zerg", + "fg": 2386, + "rotates": false + }, + { + "id": "mon_creeper_root", + "fg": 2389, + "rotates": false + }, + { + "id": "mon_creeper_vine_pk", + "fg": 2391, + "rotates": false + }, + { + "id": "mon_creeper_vine_terminal", + "fg": 2392, + "rotates": false + }, + { + "id": "mon_creeper_vine_terminal_pk", + "fg": 2393, + "rotates": false + }, + { + "id": "mon_cyberdemon", + "fg": 2395, + "rotates": false + }, + { + "id": "mon_cyborg_cop", + "fg": 2396, + "rotates": false + }, + { + "id": "mon_cyborg_guard", + "fg": 2397, + "rotates": false + }, + { + "id": "mon_dermatik_larva", + "fg": 2404, + "rotates": false + }, + { + "id": "mon_wasp_larvae", + "fg": 2404 + }, + { + "id": "mon_dionaea", + "fg": 2406, + "rotates": false + }, + { + "id": "mon_dionaea_sprout", + "fg": 2407, + "rotates": false + }, + { + "id": "!mon_dog", + "fg": 2408, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dog_large", + "fg": 2409, + "bg": 967, + "rotates": false + }, + { + "id": "mon_dog_skeleton_pk", + "fg": 2411, + "rotates": false + }, + { + "id": "mon_dog_zombie_cop_pk", + "fg": 2414, + "rotates": false + }, + { + "id": "mon_doom_archdemon", + "fg": 2416, + "rotates": false + }, + + { + "id": "mon_doom_archvile", + "fg": 2417, + "rotates": false + }, + { + "id": "mon_doom_archvile_2", + "fg": 2417, + "rotates": false + }, + { + "id": "mon_doom_archvile_3", + "fg": 2417, + "rotates": false + }, + { + "id": "mon_doom_archvile_4", + "fg": 2417, + "rotates": false + }, + { + "id": "mon_doom_archvile_5", + "fg": 2417, + "rotates": false + }, + { + "id": "mon_doom_archvile_queen", + "fg": 2418, + "rotates": false + }, + { + "id": "mon_doom_churl", + "fg": 2419, + "rotates": false + }, + { + "id": "mon_doom_churl_revive", + "fg": 2420, + "rotates": false + }, + { + "id": "mon_doom_cur", + "fg": 2421, + "rotates": false + }, + { + "id": "mon_doom_sacrifice", + "fg": 2422, + "rotates": false + }, + { + "id": "mon_doom_slave", + "fg": 2423, + "rotates": false + }, + { + "id": "mon_dracolich", + "fg": 2424, + "rotates": false + }, + { + "id": "mon_dragonfly", + "fg": 2425, + "rotates": false + }, + { + "id": "mon_failed_weapon", + "fg": 2430, + "rotates": false + }, + { + "id": "mon_fant", + "fg": 2431, + "rotates": false + }, + { + "id": "mon_fardigrade", + "fg": 2432, + "rotates": false + }, + { + "id": "mon_feer", + "fg": 2433, + "rotates": false + }, + { + "id": "mon_finebeast", + "fg": 2434, + "rotates": false + }, + { + "id": "mon_finecraft", + "fg": 2435, + "rotates": false + }, + { + "id": "mon_fionaea", + "fg": 2436, + "rotates": false + }, + { + "id": "mon_fish_blinky", + "fg": 2437, + "rotates": false + }, + { + "id": "mon_fish_bluegill", + "fg": 2438, + "rotates": false + }, + { + "id": "mon_fish_bowfin", + "fg": 2439, + "rotates": false + }, + { + "id": "mon_fish_bullhead", + "fg": 2440, + "rotates": false + }, + { + "id": "mon_fish_carp", + "fg": 2441, + "rotates": false + }, + { + "id": "mon_fish_crayfish", + "fg": 2442, + "rotates": false + }, + { + "id": "mon_fish_eel", + "fg": 2443, + "rotates": false + }, + { + "id": "mon_fish_lbass", + "fg": 2444, + "rotates": false + }, + { + "id": "mon_fish_lobster", + "fg": 2445, + "rotates": false + }, + { + "id": "mon_fish_pbass", + "fg": 2446, + "rotates": false + }, + { + "id": "mon_fish_perch", + "fg": 2447, + "rotates": false + }, + { + "id": "mon_fish_pickerel", + "fg": 2448, + "rotates": false + }, + { + "id": "mon_fish_pike", + "fg": 2449, + "rotates": false + }, + { + "id": "mon_fish_salmon", + "fg": 2450, + "rotates": false + }, + { + "id": "mon_fish_sbass", + "fg": 2451, + "rotates": false + }, + { + "id": "mon_fish_sunfish", + "fg": 2452, + "rotates": false + }, + { + "id": "mon_fish_trout", + "fg": 2453, + "rotates": false + }, + { + "id": "mon_fish_whitefish", + "fg": 2454, + "rotates": false + }, + { + "id": "mon_EMP_hack", + "fg": 2456 + }, + { + "id": "mon_flying_polyp", + "fg": 2459, + "rotates": false + }, + { + "id": "mon_folf", + "fg": 2460, + "rotates": false + }, + { + "id": "mon_foose", + "fg": 2461, + "rotates": false + }, + { + "id": "mon_fougar", + "fg": 2462, + "rotates": false + }, + { + "id": "mon_zombie_child_fungus", + "fg": 4233, + "rotates": false + }, + { + "id": "mon_nakedmolerat_giant", + "fg": 4234, + "rotates": false + }, + { + "id": "mon_ant_acid_larva", + "fg": 4235, + "rotates": false + }, + { + "id": "mon_ant_acid", + "fg": 4236, + "rotates": false + }, + { + "id": "mon_ant_acid_queen", + "fg": 4237, + "rotates": false + }, + { + "id": "mon_ant_acid_soldier", + "fg": 4238, + "rotates": false + }, + { + "id": "jabberwock_skull", + "fg": 4239, + "rotates": false + }, + { + "id": "mastermind_brain", + "fg": 4275, + "rotates": false + }, + { + "id": "triffid_marrow", + "fg": 4276, + "rotates": false + }, + { + "id": "megabear_skull", + "fg": 4278, + "rotates": false + }, + { + "id": "preserved_brain", + "fg": 4279, + "rotates": false + }, + { + "id": "f_tank_trap", + "fg": 4280, + "rotates": false + }, + { + "id": ["fridge_cargo", "vp_fridge_cargo"], + "fg": 4281, + "rotates": false + }, + { + "id": "food_processor", + "fg": 4282, + "rotates": false + }, + { + "id": "410_lever", + "fg": 4240, + "rotates": false + }, + { + "id": "overlay_wielded_410_lever", + "fg": 4241, + "rotates": false + }, + { + "id": "mon_frog", + "fg": 2464, + "rotates": false + }, + { + "id": "mon_fungaloid_pk", + "fg": 2467, + "rotates": false + }, + { + "id": "mon_fungus_boil", + "fg": 2477, + "rotates": false + }, + { + "id": "mon_fungus_failed_weapon", + "fg": 2478, + "rotates": false + }, + { + "id": "mon_fungus_pig", + "fg": 2479, + "rotates": false + }, + { + "id": "mon_furvivor", + "fg": 2480, + "rotates": false + }, + { + "id": "mon_furvivor_deagle", + "fg": 2481, + "rotates": false + }, + { + "id": "mon_furvivor_glock", + "fg": 2482, + "rotates": false + }, + { + "id": "mon_furvivor_pk", + "fg": 2483, + "rotates": false + }, + { + "id": "mon_furvivor_shotgun", + "fg": 2484, + "rotates": false + }, + { + "id": "mon_furvivor_smg", + "fg": 2485, + "rotates": false + }, + { + "id": "mon_gator", + "fg": 2488, + "rotates": false + }, + { + "id": "mon_giant_cockroach", + "fg": 2491, + "rotates": false + }, + { + "id": "mon_giant_cockroach_nymph", + "fg": 2492, + "rotates": false + }, + { + "id": "mon_gloople", + "fg": 2494, + "rotates": false + }, + { + "id": "mon_goat", + "fg": 2495, + "rotates": false + }, + { + "id": "mon_gray", + "fg": 2499, + "rotates": false + }, + { + "id": "mon_hell_baron", + "fg": 2507, + "rotates": false + }, + { + "id": "mon_hell_knight", + "fg": 2508, + "rotates": false + }, + { + "id": "mon_hell_knight_revive", + "fg": 2509, + "rotates": false + }, + { + "id": "mon_horse_zombie", + "fg": 2512, + "rotates": false + }, + { + "id": "mon_horse_zombie_scorched", + "fg": 2513, + "rotates": false + }, + { + "id": "mon_hunting_horror", + "fg": 2515, + "rotates": false + }, + { + "id": "mon_imp", + "fg": 2516, + "rotates": false + }, + { + "id": "mon_imp_black", + "fg": 2517, + "rotates": false + }, + { + "id": "mon_imp_revive", + "fg": 2518, + "rotates": false + }, + { + "id": "mon_jabberwock_pk", + "fg": 2524, + "rotates": false + }, + { + "id": "mon_lostsoul", + "fg": 2527, + "rotates": false + }, + { + "id": "mon_lostsoul_mount", + "fg": 2528, + "rotates": false + }, + { + "id": "mon_maggot", + "fg": 2529, + "rotates": false + }, + { + "id": "mon_mancubus", + "fg": 2530, + "rotates": false + }, + { + "id": "mon_manhack_acid", + "fg": 2532, + "rotates": false + }, + { + "id": "mon_manhack_fire", + "fg": 2533, + "rotates": false + }, + { + "id": "mon_manhack_missile", + "fg": 2534, + "rotates": false + }, + { + "id": "mon_marionette", + "fg": 2535, + "rotates": false + }, + { + "id": "mon_marloss_man", + "fg": 2536, + "rotates": false + }, + { + "id": "mon_mechaspider", + "fg": 2537, + "rotates": false + }, + { + "id": "mon_mechaspider_queen", + "fg": 2538, + "rotates": false + }, + { + "id": "mon_minecraft", + "fg": 2539, + "rotates": false + }, + { + "id": "mon_minecraft_charged", + "fg": 2540, + "rotates": false + }, + { + "id": "mon_mi_go_fly", + "fg": 2543, + "rotates": false + }, + { + "id": "mon_mi_go_terminal", + "fg": 2544, + "rotates": false + }, + { + "id": "mon_mole_large", + "fg": 2546, + "rotates": false + }, + { + "id": "mon_moose_pk", + "fg": 2548, + "rotates": false + }, + { + "id": "mon_moose_weak", + "fg": 2549, + "rotates": false + }, + { + "id": "mon_mosquito", + "fg": 2551, + "rotates": false + }, + { + "id": "mon_moth", + "fg": 2553, + "rotates": false + }, + { + "id": "mon_mutant_carp", + "fg": 2554, + "rotates": false + }, + { + "id": "mon_mutant_salmon", + "fg": 2555, + "rotates": false + }, + { + "id": "mon_oozle", + "fg": 2557, + "rotates": false + }, + { + "id": "mon_opossum", + "fg": 2558, + "rotates": false + }, + { + "id": "mon_pidgeon", + "fg": 2560, + "rotates": false + }, + { + "id": "mon_pig_saber", + "fg": 2562, + "rotates": false + }, + { + "id": "mon_pinky", + "fg": 2563, + "rotates": false + }, + { + "id": "mon_pinky_revive", + "fg": 2564, + "rotates": false + }, + { + "id": "mon_pregnant_giant_cockroach", + "fg": 2566, + "rotates": false + }, + { + "id": "mon_pupae", + "fg": 2567, + "rotates": false + }, + { + "id": "mon_pupae_pk", + "fg": 2568, + "rotates": false + }, + { + "id": "mon_revenant", + "fg": 2575, + "rotates": false + }, + { + "id": "bot_manhack_missile", + "fg": 4258, + "rotates": false + }, + { + "id": "mon_robin", + "fg": 2577, + "rotates": false + }, + { + "id": "mon_robot_drone", + "fg": 2578, + "rotates": false + }, + { + "id": "broken_robot_drone", + "fg": 4277, + "rotates": false + }, + { + "id": "mon_black_rat", + "fg": 2581, + "rotates": false + }, + { + "id": "mon_deer_mouse", + "fg": 2581, + "rotates": false + }, + { + "id": "mon_muskrat", + "fg": 2581, + "rotates": false + }, + { + "id": "mon_shadow", + "fg": 2583, + "rotates": false + }, + { + "id": "mon_shadow_snake", + "fg": 2584, + "rotates": false + }, + { + "id": "mon_shoggoth", + "fg": 2587, + "rotates": false + }, + { + "id": "mon_shrew", + "fg": 2588, + "rotates": false + }, + { + "id": "mon_skeleton_husk", + "fg": 2590, + "rotates": false + }, + { + "id": "mon_skeleton_pk", + "fg": 2591, + "rotates": false + }, + { + "id": "mon_skeleton_scorched", + "fg": 2592, + "rotates": false + }, + { + "id": "mon_skunk", + "fg": 2594, + "rotates": false + }, + { + "id": "mon_sludge_crawler_queen", + "fg": 2596, + "rotates": false + }, + { + "id": "mon_slug", + "fg": 2597, + "rotates": false + }, + { + "id": "mon_soulcube", + "fg": 2599, + "rotates": false + }, + { + "id": "soulcube_on", + "fg": 4257, + "rotates": false + }, + { + "id": "soulcube", + "fg": 4319, + "rotates": false + }, + { + "id": "soulcube_charging", + "fg": 4255, + "rotates": false + }, + { + "id": "broken_soulcube", + "fg": 4256, + "rotates": false + }, + { + "id": "mon_spider_jumping_giant_acid", + "fg": 2604, + "rotates": false + }, + { + "id": "mon_spider_trapdoor_giant_guardian", + "fg": 2607, + "rotates": false + }, + { + "id": "mon_spider_trapdoor_giant_pk", + "fg": 2608, + "rotates": false + }, + { + "id": "mon_spider_trapdoor_giant_s", + "fg": 2609, + "rotates": false + }, + { + "id": "mon_spider_web_alpha", + "fg": 2611, + "rotates": false + }, + { + "id": "mon_spider_web_mu", + "fg": 2612, + "rotates": false + }, + { + "id": "mon_spider_web_omega", + "fg": 2613, + "rotates": false + }, + { + "id": "mon_spider_web_queen", + "fg": 2614, + "rotates": false + }, + { + "id": "mon_spider_wolf_giant_pk", + "fg": 2621, + "rotates": false + }, + { + "id": "mon_stegosaurus", + "fg": 2626, + "rotates": false + }, + { + "id": "mon_tardigrade", + "fg": 2628, + "rotates": false + }, + { + "id": "mon_trapdoor_egg", + "fg": 2631, + "rotates": false + }, + { + "id": "mon_trapdoor_queen", + "fg": 2632, + "rotates": false + }, + { + "id": "mon_treent", + "fg": 2633, + "rotates": false + }, + { + "id": "mon_treent_green", + "fg": 5437, + "rotates": false + }, + { + "id": "mon_triffid_pk", + "fg": 2638, + "rotates": false + }, + { + "id": "!mon_turret_bmg", + "fg": 2644 + }, + { + "id": "mon_turret_shockcannon", + "fg": 2646, + "rotates": false + }, + { + "id": "bot_turret_shockcannon", + "fg": 2646, + "rotates": false + }, + { + "id": "mon_vinebeast_pk", + "fg": 2651, + "rotates": false + }, + { + "id": "mon_vinebeast_terminal", + "fg": 2651, + "rotates": false + }, + { + "id": "mon_wasp_queen", + "fg": 2655 + }, + { + "id": "mon_wasp_small", + "fg": 2656, + "rotates": false + }, + { + "id": "mon_zanimal_scorched", + "fg": 2660, + "rotates": false + }, + { + "id": "mon_zanimal_skeleton", + "fg": 2660, + "rotates": false + }, + { + "id": "mon_zanimal_skeleton_dead", + "fg": 2660, + "rotates": false + }, + { + "id": "mon_zhark", + "fg": 2661 + }, + { + "id": "mon_zolf_scorched", + "fg": 2663, + "rotates": false + }, + { + "id": "mon_zolf_shady", + "fg": 2664, + "rotates": false + }, + { + "id": "!mon_zombie_2", + "fg": [ + { "weight":3, "sprite":2666}, + { "weight":3, "sprite":2667}, + { "weight":3, "sprite":2668} + ], + "rotates": false + }, + { + "id": "!mon_zombie_3", + "fg": [ + { "weight":3, "sprite":2666}, + { "weight":3, "sprite":2667}, + { "weight":3, "sprite":2668} + ], + "rotates": false + }, + { + "id": "mon_zombie_bear_mega", + "fg": 2672, + "rotates": false + }, + { + "id": "mon_zombie_bio_infantry", + "fg": 2673, + "rotates": false + }, + { + "id": "mon_zombie_bio_knight", + "fg": 2674, + "rotates": false + }, + { + "id": "mon_zombie_bio_scout", + "fg": 2676, + "rotates": false + }, + { + "id": "mon_zombie_bio_tool", + "fg": 2677, + "rotates": false + }, + { + "id": "mon_zombie_blind", + "fg": 2679, + "rotates": false + }, + { + "id": "mon_zombie_blind_pk", + "fg": 2680, + "rotates": false + }, + { + "id": "mon_zombie_child_2", + "fg": [ + { "weight":2, "sprite":2685}, + { "weight":1, "sprite":2686}, + { "weight":3, "sprite":2687} + ], + "rotates": false + }, + { + "id": "mon_zombie_child_3", + "fg": [ + { "weight":2, "sprite":2685}, + { "weight":3, "sprite":2686}, + { "weight":1, "sprite":2687} + ], + "rotates": false + }, + { + "id": "mon_zombie_child_pk", + "fg": [ + { "weight":1, "sprite":2688} + ], + "rotates": false + }, + { + "id": "mon_zombie_child_reaver", + "fg": 2689, + "rotates": false + }, + { + "id": "mon_zombie_child_scorched_2", + "fg": 2691, + "rotates": false + }, + { + "id": "mon_zombie_crawler_pk", + "fg": 2695, + "rotates": false + }, + { + "id": "mon_zombie_crawler_pk_weak", + "fg": 2696, + "rotates": false + }, + { + "id": "mon_zombie_crawler_scorched", + "fg": 2697, + "rotates": false + }, + { + "id": "mon_zombie_cripple", + "fg": 2699, + "rotates": false + }, + { + "id": "mon_zombie_dog_pk", + "fg": 2702, + "rotates": false + }, + { + "id": "mon_zombie_electric_fungal", + "fg": 2704, + "rotates": false + }, + { + "id": "mon_zombie_electric_pk", + "fg": 2705, + "rotates": false + }, + { + "id": "mon_zombie_failed_weapon", + "fg": 2706, + "rotates": false + }, + { + "id": "overlay_worn_panties_on", + "fg": 2706, + "rotates": false + }, + { + "id": "mon_zombie_fat_2", + "fg": [ + { "weight":3, "sprite":2707}, + { "weight":3, "sprite":2708}, + { "weight":3, "sprite":2709} + ], + "rotates": false + }, + { + "id": "mon_zombie_fat_3", + "fg": [ + { "weight":3, "sprite":2707}, + { "weight":3, "sprite":2708}, + { "weight":3, "sprite":2709} + ], + "rotates": false + }, + { + "id": "mon_zombie_fiend_pk", + "fg": 2711, + "rotates": false + }, + { + "id": "mon_zombie_fiend_shocker", + "fg": 2712, + "rotates": false + }, + { + "id": "mon_zombie_gasbag_pk", + "fg": 2716, + "rotates": false + }, + { + "id": "mon_zombie_hollow_pk", + "fg": 2723, + "rotates": false + }, + { + "id": "mon_zombie_hulk_pk", + "fg": 2725, + "rotates": false + }, + { + "id": "mon_zombie_lord", + "fg": 2728, + "rotates": false + }, + { + "id": "mon_zombie_master_pk", + "fg": 2731 + }, + { + "id": "mon_zombie_necro_pk", + "fg": 2733 + }, + { + "id": "mon_zombie_pk", + "fg": 2735, + "rotates": false + }, + { + "id": "mon_zombie_radbag", + "fg": 2737, + "rotates": false + }, + { + "id": "mon_zombie_runner_pk", + "fg": 2741, + "rotates": false + }, + { + "id": "mon_zombie_scales", + "fg": 2742, + "rotates": false + }, + { + "id": "mon_zombie_scorched_master", + "fg": 2744, + "rotates": false + }, + { + "id": "mon_zombie_scorched_necro", + "fg": 2745, + "rotates": false + }, + { + "id": "mon_zombie_scorched_pk", + "fg": 2746, + "rotates": false + }, + { + "id": "mon_zombie_scorched_shocker", + "fg": 2747, + "rotates": false + }, + { + "id": "mon_zombie_shady_ghost", + "fg": 2750, + "rotates": false + }, + { + "id": "mon_zombie_shady_pk", + "fg": 2751, + "rotates": false + }, + { + "id": "mon_zombie_smoker_pk", + "fg": 2755, + "rotates": false + }, + { + "id": "mon_zombie_swimmer", + "fg": [ + { "weight":3, "sprite":2761}, + { "weight":3, "sprite":2762} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_swimmer_pk", + "fg": [ + { "weight":3, "sprite":2761}, + { "weight":3, "sprite":2762} + ], + "rotates": false + }, + { + "id": "mon_zombie_tough_2", + "fg": [ + { "weight":3, "sprite":2764}, + { "weight":3, "sprite":2765}, + { "weight":3, "sprite":2766} + ], + "rotates": false + }, + { + "id": "mon_zombie_tough_3", + "fg": [ + { "weight":3, "sprite":2764}, + { "weight":3, "sprite":2765}, + { "weight":3, "sprite":2766} + ], + "rotates": false + }, + { + "id": "animation_bullet_flame", + "fg": 2849, + "rotates": false + }, + { + "id": "animation_bullet_normal", + "fg": 2850, + "rotates": false + }, + { + "id": "animation_line", + "bg": 2850 + }, + { + "id": "animation_bullet_shrapnel", + "fg": 2851 + }, + { + "id": "animation_hit", + "fg": 2852 + }, + { + "id": "cursor", + "fg": 2853, + "rotates": false + }, + { + "id": "line_target", + "bg": 2853, + "rotates": false + }, + { + "id": "line_trail", + "bg": 2853, + "rotates": false + }, + { + "id": "fd_acid_vent", + "bg": 2856, + "rotates": false + }, + { + "id": "fd_slime", + "bg": 2856, + "rotates": false + }, + { + "id": "fd_tear_gas", + "bg": 2896, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2946, + "bg": 972 + }, + { + "id": "corner", + "fg": 2947, + "bg": 972 + }, + { + "id": "edge", + "fg": 2948, + "bg": 972 + }, + { + "id": "t_connection", + "fg": 2950, + "bg": 972 + }, + { + "id": "end_piece", + "fg": 2949, + "bg": 972 + }, + { + "id": "unconnected", + "fg": 2951, + "bg": 972 + } + ] + }, + { + "id": "fd_push_items", + "bg": 2896 + }, + { + "id": "fd_dazzling", + "fg": 2897 + }, + { + "id": "fd_electricity", + "fg": 2898, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 2899 + }, + { + "id": "unconnected", + "fg": 2899 + }, + { + "id": "corner", + "fg": 2900 + }, + { + "id": "edge", + "fg": 2901 + }, + { + "id": "end_piece", + "fg": 2902 + }, + { + "id": "t_connection", + "fg": 2903 + } + ] + }, + { + "id": "fd_shock_vent", + "bg": 2898, + "rotates": false + }, + { + "id": "fd_fatigue", + "fg": 2904 + }, + { + "id": "fd_gibs_flesh", + "fg": 2917 + }, + { + "id": "fd_gibs_veggy", + "fg": 2930 + }, + { + "id": "fd_spotlight", + "fg": 2952, + "rotates": false + }, + { + "id": "highlight_item", + "fg": 2959, + "rotates": false + }, + { + "id": "blob_pit", + "fg": 2967, + "bg": 3150 + }, + { + "id": "blob_pit_season_winter", + "fg": 2967, + "bg": 3150 + }, + { + "id": "blob_pit_slime", + "fg": 2967, + "bg": 1012 + }, + { + "id": "blob_pit_slime_season_winter", + "fg": 2967, + "bg": 1012 + }, + { + "id": "t_bridge", + "fg": 2979, + "rotates": false + }, + { + "id": "t_carpet_green", + "fg": 2982, + "rotates": false + }, + { + "id": "t_carpet_purple", + "fg": 2983, + "rotates": false + }, + { + "id": "t_carpet_red", + "fg": 2984, + "rotates": false + }, + { + "id": "t_carpet_yellow", + "fg": 2985, + "rotates": false + }, + { + "id": "t_fungus_wall_transformed", + "fg": 2987, + "bg": 3060, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 2987, + "bg": 3062 + }, + { + "id": "edge", + "fg": 2987, + "bg": 3063 + }, + { + "id": "t_connection", + "fg": 2987, + "bg": 3065 + }, + { + "id": "center", + "fg": 2987, + "bg": 3061 + }, + { + "id": "end_piece", + "fg": 2987, + "bg": 3064 + }, + { + "id": "unconnected", + "fg": 2987, + "bg": 3060 + } + ] + }, + { + "id": "t_claymound", + "fg": 2996 + }, + { + "id": "t_clay", + "fg": 2996 + }, + { + "id": "t_clay_season_winter", + "fg": 2997 + }, + { + "id": "t_claymound_season_winter", + "fg": 2997 + }, + { + "id": "!t_column", + "fg": 2998, + "rotates": false + }, + { + "id": "t_console", + "fg": 3005, + "rotates": false + }, + { + "id": "vp_cam_control", + "fg": 3005, + "rotates": true + }, + { + "id": "!t_elevator_control", + "fg": 3005, + "rotates": false + }, + { + "id": "f_aut_gas_console", + "fg": 3005 + }, + { + "id": ["t_console_broken", "t_sliding_concrete_wall_control"], + "fg": 3006, + "rotates": false + }, + { + "id": "!t_elevator_control", + "fg": 3005, + "rotates": false + }, + { + "id": "!t_elevator_control_off", + "fg": 3006, + "rotates": false + }, + { + "id": "t_radio_controls", + "fg": 3006, + "rotates": false + }, + { + "id": "f_aut_gas_console_o", + "fg": 3006 + }, + { + "id": "t_curtains", + "fg": 3012, + "rotates": false + }, + { + "id": ["vp_aisle_curtain", "vp_v_curtain"], + "fg": 3012, + "rotates": true + }, + { + "id": "!t_dock", + "fg": 3022, + "rotates": false, + "multitile": false, + "additional_tiles": [ + { + "id": "center", + "fg": 3022 + }, + { + "id": "unconnected", + "fg": 3022 + }, + { + "id": "corner", + "fg": 3023 + }, + { + "id": "edge", + "fg": 3024 + }, + { + "id": "end_piece", + "fg": 3025 + }, + { + "id": "t_connection", + "fg": 3026 + } + ] + }, + + { + "id": "t_door_boarded", + "fg": 3029, + "rotates": false + }, + { + "id": "t_door_boarded_damaged", + "fg": 3030, + "rotates": false + }, + { + "id": "t_door_boarded_damaged_peep", + "fg": 3031, + "rotates": false + }, + { + "id": "t_door_boarded_peep", + "fg": 3032, + "rotates": false + }, + { + "id": "t_door_curtain_c", + "fg": 3033, + "rotates": false + }, + { + "id": "t_door_curtain_o", + "fg": 3034, + "rotates": false + }, + { + "id": "t_door_glass_c", + "fg": 3036, + "rotates": false + }, + { + "id": "t_door_makeshift_c", + "fg": 3038, + "rotates": false + }, + { + "id": "t_door_metal_c", + "fg": 3040, + "rotates": true + }, + { + "id": "t_door_metal_locked", + "fg": 3040, + "rotates": false + }, + { + "id": "t_door_metal_c_peep", + "fg": 3041, + "rotates": false + }, + { + "id": "t_door_metal_pickable", + "fg": 3043 + }, + { + "id": "t_elevator", + "fg": 3121, + "rotates": false + }, + { + "id": "t_grate", + "fg": 3045, + "rotates": false + }, + { + "id": "t_floor_blue", + "fg": 3054, + "rotates": false + }, + { + "id": "t_floor_green", + "fg": 3055, + "rotates": false + }, + { + "id": "t_floor_red", + "fg": 3056, + "rotates": false + }, + { + "id": "t_floor_wax", + "fg": 3057 + }, + { + "id": "t_floor_waxed", + "fg": 3058, + "rotates": false + }, + { + "id": "t_floor_waxed_y", + "fg": 3056, + "rotates": false + }, + { + "id": ["f_standing_tank", "t_bulk_tank"], + "fg": 3068 + }, + { + "id": "t_backboard_in", + "fg": 2969, + "bg": 3058, + "rotates": false + }, + { + "id": "t_gates_control_brick", + "fg": 3069, + "rotates": false + }, + { + "id": ["t_gates_control_concrete", "t_reinforced_glass_control", "t_containment_control"], + "fg": 3070, + "rotates": false + }, + { + "id": "t_gates_control_metal", + "fg": 3070 + }, + { + "id": "t_generator_broken", + "fg": 3072, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "t_connection", + "fg": 3073 + } + ] + }, + { + "id": "t_monkey_bars", + "fg": 3128, + "bg": 3075, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3128, + "bg": 3075 + }, + { + "id": "corner", + "fg": 3129, + "bg": 3075 + }, + { + "id": "t_connection", + "fg": 3130, + "bg": 3075 + } + ] + }, + { + "id": "t_slide", + "fg": 3248, + "bg": 3075, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "edge", + "fg": 3248, + "bg": 3075 + }, + { + "id": "end_piece", + "fg": 3249, + "bg": 3075 + } + ] + }, + { + "id": "t_grass_white", + "bg": 3075, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3088 + }, + { + "id": "corner", + "fg": 3089 + }, + { + "id": "edge", + "fg": 3090 + }, + { + "id": "end_piece", + "fg": 3090 + }, + { + "id": "t_connection", + "fg": 3091 + } + ] + }, + { + "id": "t_grass_white_season_winter", + "fg": 3080 + }, + { + "id": "t_monkey_bars_season_winter", + "fg": 3128, + "bg": 3081, + "multitile": true, + "additional_tiles": [ + { + "id": "edge", + "bg": 3081 + }, + { + "id": "corner", + "fg": 3129, + "bg": 3081 + }, + { + "id": "center", + "fg": 3128, + "bg": 3081 + }, + { + "id": "t_connection", + "fg": 3130, + "bg": 3081 + } + ] + }, + { + "id": "t_slide_season_winter", + "fg": 3248, + "bg": 3085, + "multitile": true, + "additional_tiles": [ + { + "id": "edge", + "fg": 3248, + "bg": 3085 + }, + { + "id": "end_piece", + "fg": 3249, + "bg": 3085 + } + ] + }, + { + "id": "t_slime_season_winter", + "fg": 3250, + "bg": 992, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 3250, + "bg": 4844 + }, + { + "id": "center", + "fg": 3251, + "bg": 4844 + }, + { + "id": "corner", + "fg": 3252, + "bg": 4844 + }, + { + "id": "edge", + "fg": 3253, + "bg": 4844 + }, + { + "id": "end_piece", + "fg": 3254, + "bg": 4844 + }, + { + "id": "t_connection", + "fg": 3255, + "bg": 4844 + } + ] + }, + { + "id": "t_hole", + "fg": 3092, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 3092 + }, + { + "id": "center", + "fg": 3093 + }, + { + "id": "corner", + "fg": 3094 + }, + { + "id": "edge", + "fg": 3095 + }, + { + "id": "end_piece", + "fg": 3096 + }, + { + "id": "t_connection", + "fg": 3097 + } + ] + }, + { + "id": "f_robotic_arm", + "fg": 3099, + "rotates": false + }, + { + "id": "t_ind_lathe", + "fg": 3102, + "rotates": false + }, + { + "id": "f_ladder", + "fg": 3105, + "rotates": false + }, + { + "id": "t_lava", + "fg": 3106, + "rotates": false + }, + { + "id": "tr_lava", + "fg": 3106, + "rotates": false + }, + { + "id": "t_linoleum_gray", + "fg": 3109, + "rotates": false + }, + { + "id": "t_linoleum_white", + "fg": 3110, + "rotates": false + }, + { + "id": "t_ind_press", + "fg": 3113 + }, + { + "id": "f_water_heater", + "fg": 3115, + "rotates": true + }, + { + "id": "t_metal_floor", + "fg": 3121, + "rotates": false + }, + { + "id": "t_scrap_floor", + "fg": 3121, + "rotates": false + }, + { + "id": "t_ov_smreb_cage", + "fg": 3135, + "rotates": false + }, + { + "id": "tr_glass_pit", + "fg": 3154 + }, + { + "id": "tr_glass_pit_season_winter", + "fg": 3155 + }, + { + "id": "t_pontoon_dp", + "fg": 3163 + }, + { + "id": "tr_raincatcher", + "fg": 3174, + "rotates": false + }, + { + "id": "t_rdoor_boarded", + "fg": 3176, + "rotates": false + }, + { + "id": "t_rdoor_boarded_damaged", + "fg": 3177, + "rotates": false + }, + { + "id": "t_secretdoor_wall_c", + "fg": 3192, + "rotates": false + }, + { + "id": ["t_rock", "t_border_rock"], + "fg": 3192, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3192 + }, + { + "id": "corner", + "fg": 3193 + }, + { + "id": "edge", + "fg": 3194 + }, + { + "id": "end_piece", + "fg": 3195 + }, + { + "id": "t_connection", + "fg": 3203 + }, + { + "id": "unconnected", + "fg": 3204 + } + ] + }, + { + "id": "t_metal", + "fg": 3957, + "bg": 3192, + "rotates": false + }, + { + "id": ["t_switch_even", "t_jaildoor_control"], + "fg": 3277, + "bg": 3192, + "rotates": false + }, + { + "id": "t_switch_gb", + "fg": 3278, + "bg": 3192, + "rotates": false + }, + { + "id": "t_switch_rb", + "fg": 3279, + "bg": 3192, + "rotates": false + }, + { + "id": "t_switch_rg", + "fg": 3280, + "bg": 3192, + "rotates": false + }, + { + "id": "t_rock_smooth", + "fg": 3196, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3197 + }, + { + "id": "corner", + "fg": 3198 + }, + { + "id": "edge", + "fg": 3199 + }, + { + "id": "end_piece", + "fg": 3200 + }, + { + "id": "t_connection", + "fg": 3201 + }, + { + "id": "unconnected", + "fg": 3202 + } + ] + }, + { + "id": "t_sandbox", + "fg": 3214, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "corner", + "fg": 3214 + }, + { + "id": "center", + "fg": 3215 + }, + { + "id": "edge", + "fg": 3216 + }, + { + "id": "t_connection", + "fg": 3216 + }, + { + "id": "unconnected", + "fg": 3217 + } + ] + }, + { + "id": "t_searth_test", + "fg": 3227, + "bg": 3215, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3227, + "bg": 3215 + }, + { + "id": "corner", + "fg": 3228, + "bg": 3215 + }, + { + "id": "edge", + "fg": 3229, + "bg": 3215 + }, + { + "id": "t_connection", + "fg": 3231, + "bg": 3215 + }, + { + "id": "end_piece", + "fg": 3230, + "bg": 3215 + }, + { + "id": "unconnected", + "fg": 3232, + "bg": 3215 + } + ] + }, + { + "id": "t_sand", + "fg": 3215, + "rotates": false + }, + { + "id": "t_sand_season_winter", + "fg": 992, + "rotates": false + }, + { + "id": "t_sandmound", + "fg": 3218, + "rotates": false + }, + { + "id": "t_wall_w", + "fg": 3385, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "unconnected", + "fg": 3219 + }, + { + "id": "center", + "fg": 3385 + }, + { + "id": "corner", + "fg": 3397 + }, + { + "id": "edge", + "fg": 3398 + }, + { + "id": "end_piece", + "fg": 3399 + }, + { + "id": "t_connection", + "fg": 3400 + } + ] + }, + { + "id": "t_sewage", + "fg": 3233, + "rotates": false + }, + { + "id": "t_slope_down", + "fg": 3256, + "rotates": false + }, + { + "id": "t_slope_up", + "fg": 3257, + "rotates": false + }, + { + "id": "t_low_stairs_begin", + "fg": 3257, + "rotates": false + }, + { + "id": "t_strconc_floor_halfway", + "fg": 3262 + }, + { + "id": "t_water_dp_season_winter", + "fg": 3266, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3266 + }, + { + "id": "corner", + "fg": 3270 + }, + { + "id": "edge", + "fg": 3271 + }, + { + "id": "end_piece", + "fg": 3272 + }, + { + "id": "unconnected", + "fg": 3273 + } + ] + }, + { + "id": "t_water_dp", + "fg": 3266, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3266 + }, + { + "id": "corner", + "fg": 3267 + }, + { + "id": "edge", + "fg": 3268 + }, + { + "id": "end_piece", + "fg": 3269 + }, + { + "id": "unconnected", + "fg": 3274 + } + ] + }, + { + "id": "t_wall_b", + "fg": 3325, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3325 + }, + { + "id": "corner", + "fg": 3326 + }, + { + "id": "edge", + "fg": 3327 + }, + { + "id": "end_piece", + "fg": 3328 + }, + { + "id": "t_connection", + "fg": 3329 + }, + { + "id": "unconnected", + "fg": 3330 + } + ] + }, + { + "id": "t_rock_blue", + "fg": 3330, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3325 + }, + { + "id": "corner", + "fg": 3326 + }, + { + "id": "edge", + "fg": 3327 + }, + { + "id": "end_piece", + "fg": 3328 + }, + { + "id": "t_connection", + "fg": 3329 + }, + { + "id": "unconnected", + "fg": 3330 + } + ] + }, + { + "id": "t_wall_g", + "fg": 3334, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3334 + }, + { + "id": "corner", + "fg": 3341 + }, + { + "id": "edge", + "fg": 3342 + }, + { + "id": "end_piece", + "fg": 3343 + }, + { + "id": "t_connection", + "fg": 3344 + }, + { + "id": "unconnected", + "fg": 3345 + } + ] + }, + { + "id": "t_rock_green", + "fg": 3345, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3334 + }, + { + "id": "corner", + "fg": 3341 + }, + { + "id": "edge", + "fg": 3342 + }, + { + "id": "end_piece", + "fg": 3343 + }, + { + "id": "t_connection", + "fg": 3344 + }, + { + "id": "unconnected", + "fg": 3345 + } + ] + }, + { + "id": "t_wall_half", + "fg": 3346 + }, + { + "id": "t_wall_half_season_winter", + "fg": 3346 + }, + { + "id": "t_wall_log", + "fg": 3347, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3347 + }, + { + "id": "corner", + "fg": 3360 + }, + { + "id": "edge", + "fg": 3361 + }, + { + "id": "end_piece", + "fg": 3362 + }, + { + "id": "t_connection", + "fg": 3369 + }, + { + "id": "unconnected", + "fg": 3370 + } + ] + }, + { + "id": "t_wall_log_broken", + "fg": 3348, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3348 + }, + { + "id": "corner", + "fg": 3349 + }, + { + "id": "edge", + "fg": 3350 + }, + { + "id": "end_piece", + "fg": 3351 + }, + { + "id": "t_connection", + "fg": 3352 + }, + { + "id": "unconnected", + "fg": 3353 + } + ] + }, + { + "id": "t_wall_log_chipped", + "fg": 3354, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3354 + }, + { + "id": "corner", + "fg": 3355 + }, + { + "id": "edge", + "fg": 3356 + }, + { + "id": "end_piece", + "fg": 3357 + }, + { + "id": "t_connection", + "fg": 3358 + }, + { + "id": "unconnected", + "fg": 3359 + } + ] + }, + { + "id": "t_wall_log_half", + "fg": 3363, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3363 + }, + { + "id": "corner", + "fg": 3364 + }, + { + "id": "edge", + "fg": 3365 + }, + { + "id": "end_piece", + "fg": 3366 + }, + { + "id": "t_connection", + "fg": 3367 + }, + { + "id": "unconnected", + "fg": 3368 + } + ] + }, + { + "id": "t_wall_p", + "fg": 3371, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3371 + }, + { + "id": "corner", + "fg": 3372 + }, + { + "id": "edge", + "fg": 3373 + }, + { + "id": "end_piece", + "fg": 3374 + }, + { + "id": "t_connection", + "fg": 3375 + }, + { + "id": "unconnected", + "fg": 3376 + } + ] + }, + { + "id": "t_wall_r", + "fg": 3377, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3377 + }, + { + "id": "corner", + "fg": 3378 + }, + { + "id": "edge", + "fg": 3379 + }, + { + "id": "end_piece", + "fg": 3380 + }, + { + "id": "t_connection", + "fg": 3381 + }, + { + "id": "unconnected", + "fg": 3382 + } + ] + }, + { + "id": "t_rock_red", + "fg": 3382, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3377 + }, + { + "id": "corner", + "fg": 3378 + }, + { + "id": "edge", + "fg": 3379 + }, + { + "id": "end_piece", + "fg": 3380 + }, + { + "id": "t_connection", + "fg": 3381 + }, + { + "id": "unconnected", + "fg": 3382 + } + ] + }, + { + "id": "t_wall_wood", + "fg": 3389, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3389 + }, + { + "id": "corner", + "fg": 3392 + }, + { + "id": "unconnected", + "fg": 3393 + }, + { + "id": "edge", + "fg": 3394 + }, + { + "id": "end_piece", + "fg": 3395 + }, + { + "id": "t_connection", + "fg": 3396 + } + ] + }, + { + "id": "t_wall_wood_season_winter", + "fg": 3389, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3389 + }, + { + "id": "corner", + "fg": 3392 + }, + { + "id": "unconnected", + "fg": 3393 + }, + { + "id": "edge", + "fg": 3394 + }, + { + "id": "end_piece", + "fg": 3395 + }, + { + "id": "t_connection", + "fg": 3396 + } + ] + }, + { + "id": "t_wall_wood_broken", + "fg": 3390 + }, + { + "id": "t_wall_wood_broken_season_winter", + "fg": 3390 + }, + { + "id": "t_wall_wood_chipped", + "fg": 3391 + }, + { + "id": "t_wall_y", + "fg": 3401, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 3401 + }, + { + "id": "corner", + "fg": 3402 + }, + { + "id": "edge", + "fg": 3403 + }, + { + "id": "end_piece", + "fg": 3404 + }, + { + "id": "t_connection", + "fg": 3405 + }, + { + "id": "unconnected", + "fg": 3406 + } + ] + }, + { + "id": "t_water_pool", + "fg": 3407, + "rotates": false + }, + { + "id": "well_pump", + "fg": 3408 + }, + { + "id": "t_window_enhanced_noglass", + "fg": 3426 + }, + { + "id": "t_window_stained_blue", + "fg": 3430, + "rotates": false + }, + { + "id": "t_secretdoor_brick_wall_c", + "fg": 4259, + "rotates": false + }, + { + "id": "t_secretdoor_brick_wall_o", + "fg": 4260, + "rotates": false + }, + { + "id": "t_window_stained_green", + "fg": 3431, + "rotates": false + }, + { + "id": "t_window_stained_red", + "fg": 3432, + "rotates": false + }, + { + "id": "advanced_ecig", + "fg": 3435, + "rotates": false + }, + { + "id": "ecig", + "fg": 3435, + "rotates": false + }, + { + "id": "adv_UPS_off", + "fg": 3436, + "rotates": false + }, + { + "id": "battery_ups", + "fg": 3820, + "bg": 3436 + }, + { + "id": "airhorn", + "fg": 3437, + "rotates": false + }, + { + "id": "f_anvil", + "fg": 3438, + "rotates": false + }, + { + "id": "beartrap", + "fg": 3446, + "rotates": false + }, + { + "id": "bframegrow", + "fg": 3447 + }, + { + "id": "glooplegrow", + "fg": 3447 + }, + { + "id": "oozlegrow", + "fg": 3447 + }, + { + "id": "bitergrow", + "fg": 3448 + }, + { + "id": "cluttergrow", + "fg": 3448 + }, + { + "id": "freeziegrow", + "fg": 3448 + }, + { + "id": "frostiegrow", + "fg": 3448 + }, + { + "id": "fuzzlegrow", + "fg": 3448 + }, + { + "id": "glowiegrow", + "fg": 3448 + }, + { + "id": "graygrow", + "fg": 3448 + }, + { + "id": "horrorgrow", + "fg": 3448 + }, + { + "id": "inkiegrow", + "fg": 3448 + }, + { + "id": "meltiegrow", + "fg": 3448 + }, + { + "id": "queengrow", + "fg": 3448 + }, + { + "id": "razorqueengrow", + "fg": 3448 + }, + { + "id": "sharpgrow", + "fg": 3448 + }, + { + "id": "sicklegrow", + "fg": 3448 + }, + { + "id": "sparkiegrow", + "fg": 3448 + }, + { + "id": "stickiegrow", + "fg": 3448 + }, + { + "id": "torchiegrow", + "fg": 3448 + }, + { + "id": "voideatergrow", + "fg": 3448 + }, + { + "id": "bloodaxe", + "fg": 3451, + "rotates": false + }, + { + "id": "bloodaxe_act", + "fg": 3452, + "rotates": false + }, + { + "id": "blood_athame_active", + "fg": 3453, + "rotates": false + }, + { + "id": "boobytrap", + "fg": 3704, + "bg": 3454 + }, + { + "id": "tr_brazier", + "fg": 3456 + }, + { + "id": "bubblewrap", + "fg": 3461, + "rotates": false + }, + { + "id": "caltrops", + "fg": 3462, + "rotates": false + }, + { + "id": "cash_card", + "fg": 3469, + "rotates": false + }, + { + "id": "catfood", + "fg": 3470, + "rotates": false + }, + { + "id": "cell_phone", + "fg": 3471, + "rotates": false + }, + { + "id": "cell_phone_flashlight", + "fg": 3471, + "rotates": false + }, + { + "id": "char_smoker", + "fg": 3475, + "rotates": false + }, + { + "id": "chemistry_set", + "fg": 3476, + "rotates": false + }, + { + "id": "chemistry_set_basic", + "fg": 3476 + }, + { + "id": "chipper", + "fg": 3477, + "rotates": false + }, + { + "id": ["veh_tracker", "vp_tracker"], + "fg": 3483, + "rotates": false + }, + { + "id": "tr_cot", + "fg": 3488, + "rotates": false + }, + + { + "id": "clay_boiled", + "bg": 1713 + }, + { + "id": "cs_lajatang_off", + "fg": 3495 + }, + { + "id": "cs_lajatang_on", + "fg": 3495 + }, + { + "id": "dynamite_radio", + "fg": 3501, + "bg": 3721 + }, + { + "id": "dynamite_radio_act", + "fg": 3502, + "bg": 3721 + }, + { + "id": "eink_tablet_pc", + "fg": 3503, + "rotates": false + }, + { + "id": "emer_blanket", + "fg": 3506 + }, + { + "id": "extinguisher", + "fg": 3511, + "rotates": false + }, + { + "id": "e_handcuffs", + "fg": 3512 + }, + { + "id": "e_tool", + "fg": 3513, + "rotates": false + }, + { + "id": "firecracker", + "fg": 3514, + "rotates": false + }, + { + "id": "tool_rocket_candy", + "fg": 3514 + }, + { + "id": "firecracker_act", + "fg": 3515, + "rotates": false + }, + { + "id": "tool_rocket_candy_act", + "fg": 3515 + }, + { + "id": "fire_ax", + "fg": 3522, + "rotates": false + }, + { + "id": "crossbow_trap", + "fg": 3523 + }, + { + "id": "flashlight", + "fg": 3528, + "rotates": false + }, + { + "id": "flashlight_on", + "fg": 3529, + "rotates": false + }, + { + "id": "folding_bicycle", + "fg": 3532 + }, + { + "id": "folding_poncho", + "fg": 3533, + "rotates": false + }, + { + "id": "f_forge", + "fg": 3534, + "rotates": false + }, + { + "id": "forgerig", + "fg": 3534 + }, + { + "id": "funnel", + "fg": 3535, + "rotates": false + }, + { + "id": "tr_funnel", + "fg": 3535, + "rotates": false + }, + { + "id": "gasdiscount_gold", + "fg": 3539, + "rotates": false + }, + { + "id": "gasdiscount_platinum", + "fg": 3540, + "rotates": false + }, + { + "id": "badge_swat", + "fg": 3540 + }, + { + "id": "gasdiscount_silver", + "fg": 3541, + "rotates": false + }, + { + "id": "glowstick", + "fg": 3546, + "rotates": false + }, + { + "id": "glowstick_dead", + "fg": 3547, + "rotates": false + }, + { + "id": "glowstick_lit", + "fg": 3548, + "rotates": false + }, + { + "id": "grenade", + "fg": 3551, + "rotates": false + }, + { + "id": "grenade_act", + "fg": 3552, + "rotates": false + }, + { + "id": "metal_smoother", + "fg": 3555 + }, + { + "id": "wood_smoother", + "fg": 3555 + }, + { + "id": "hacksaw", + "fg": 3556, + "rotates": false + }, + { + "id": "hammer", + "fg": 3558, + "rotates": false + }, + { + "id": "handflare", + "fg": 3559, + "rotates": false + }, + { + "id": "handflare_act", + "fg": 3559, + "rotates": false + }, + { + "id": "handflare_lit", + "fg": 3560, + "rotates": false + }, + { + "id": "hand_drill", + "fg": 3562 + }, + { + "id": "heatpack", + "fg": 3564, + "rotates": false + }, + { + "id": "heatpack_used", + "fg": 3565 + }, + { + "id": "shotgun_trap", + "fg": 3752, + "bg": 3568 + }, + { + "id": ["hobo_stove_on", "can_forge_on"], + "fg": 3569 + }, + { + "id": "popcan_stove", + "fg": 3569 + }, + { + "id": ["horn_bicycle", "vp_horn_bicycle", "vp_horn_big", "vp_horn_car"], + "fg": 3571, + "rotates": false + }, + { + "id": "horn_big", + "fg": 3571, + "rotates": false + }, + { + "id": "horn_car", + "fg": 3571, + "rotates": false + }, + { + "id": "inhaler_sewergas", + "fg": 3577 + }, + { + "id": "inhaler_stimgas", + "fg": 3577 + }, + { + "id": "jack", + "fg": 3578 + }, + { + "id": "jack_makeshift", + "fg": 3580 + }, + { + "id": "jack_small", + "fg": 3580 + }, + { + "id": "knife_rm42", + "fg": 3590, + "rotates": false + }, + { + "id": "knife_steak", + "fg": 3591, + "rotates": false + }, + { + "id": "landmine", + "fg": 3598, + "rotates": false + }, + { + "id": "tr_landmine", + "fg": 3598, + "rotates": false + }, + { + "id": "!tr_landmine_buried", + "fg": 3598, + "rotates": false + }, + { + "id": "!tr_landmine_buried_season_winter", + "fg": 3598, + "rotates": false + }, + { + "id": "large_tent_kit", + "fg": 3600, + "rotates": false + }, + { + "id": "lightstrip", + "fg": 3603, + "rotates": false + }, + { + "id": "lightstrip_inactive", + "fg": 3604, + "rotates": false + }, + { + "id": "crude_firestarter", + "fg": 3604 + }, + { + "id": "lobotomizer", + "fg": 3605 + }, + { + "id": "survivor_machete", + "fg": 3607 + }, + { + "id": "tr_makeshift_funnel", + "fg": 3611, + "rotates": false + }, + { + "id": "matches", + "fg": 3617, + "rotates": false + }, + { + "id": "char_cooker", + "fg": 3618, + "rotates": false + }, + { + "id": "tr_metal_funnel", + "fg": 3619 + }, + { + "id": "double_plutonium_core", + "fg": 3821, + "bg": 3621 + }, + { + "id": "mop", + "fg": 3627, + "rotates": false + }, + { + "id": "mp3", + "fg": 3629, + "rotates": false + }, + { + "id": "mp3_on", + "fg": 3630, + "rotates": false + }, + { + "id": "charcoal_cooker", + "fg": 3631 + }, + { + "id": "gasoline_cooker", + "fg": 3631 + }, + { + "id": "oil_cooker", + "fg": 3631 + }, + { + "id": "offering_chalice", + "fg": 3637, + "rotates": false + }, + { + "id": "offering_chalice_active", + "fg": 3637, + "rotates": false + }, + { + "id": "oil_lamp", + "fg": 3638, + "rotates": false + }, + { + "id": "electric_lantern", + "fg": 3638 + }, + { + "id": "oxylamp", + "fg": 3638 + }, + { + "id": "oil_lamp_on", + "fg": 3639, + "rotates": false + }, + { + "id": "electric_lantern_on", + "fg": 3639 + }, + { + "id": "oxylamp_on", + "fg": 3639 + }, + { + "id": "overlay_wielded_ax", + "fg": 3640, + "rotates": false + }, + { + "id": "overlay_wielded_battleaxe", + "fg": 3640, + "rotates": false + }, + { + "id": "overlay_wielded_battleaxe_inferior", + "fg": 3640, + "rotates": false + }, + { + "id": "overlay_wielded_battleaxe_fake", + "fg": 3640, + "rotates": false + }, + { + "id": "overlay_wielded_banjo", + "fg": 3641, + "rotates": false + }, + { + "id": "overlay_wielded_battletorch", + "fg": 3642, + "rotates": false + }, + { + "id": "overlay_wielded_torch", + "fg": 3642, + "rotates": false + }, + { + "id": "overlay_wielded_solar_torch", + "fg": 3642, + "rotates": false + }, + { + "id": "overlay_wielded_torch_done", + "fg": 3642, + "rotates": false + }, + { + "id": "overlay_wielded_solar_torch_done", + "fg": 3642, + "rotates": false + }, + { + "id": "overlay_wielded_battletorch_done", + "fg": 3642, + "rotates": false + }, + { + "id": "overlay_wielded_battletorch_lit", + "fg": 3643, + "rotates": false + }, + { + "id": "overlay_wielded_solar_torch_lit", + "fg": 3643, + "rotates": false + }, + { + "id": "overlay_wielded_torch_lit", + "fg": 3643, + "rotates": false + }, + { + "id": "overlay_wielded_bloodaxe", + "fg": 3644, + "rotates": false + }, + { + "id": "overlay_wielded_copper_ax", + "fg": 3644, + "rotates": false + }, + { + "id": "overlay_wielded_hatchet", + "fg": 3644, + "rotates": false + }, + { + "id": "overlay_wielded_bloodaxe_act", + "fg": 3644, + "rotates": false + }, + { + "id": "overlay_wielded_blood_athame", + "fg": 3645, + "rotates": false + }, + { + "id": "overlay_wielded_blood_athame_active", + "fg": 3645, + "rotates": false + }, + { + "id": "overlay_wielded_broadfire_off", + "fg": 3646, + "rotates": false + }, + { + "id": "overlay_wielded_broadsword", + "fg": 3646, + "rotates": false + }, + { + "id": "overlay_wielded_broadsword_fake", + "fg": 3646, + "rotates": false + }, + { + "id": "overlay_wielded_stormbringer", + "fg": 3646, + "rotates": false + }, + { + "id": "overlay_wielded_arming_sword", + "fg": 3646, + "rotates": false + }, + { + "id": "overlay_wielded_arming_sword_fake", + "fg": 3646, + "rotates": false + }, + { + "id": "overlay_wielded_laevateinn_replica", + "fg": 3646, + "rotates": false + }, + { + "id": "overlay_wielded_arming_sword_inferior", + "fg": 3646, + "rotates": false + }, + { + "id": "overlay_wielded_broadsword_inferior", + "fg": 3646, + "rotates": false + }, + { + "id": "overlay_wielded_broadfire_on", + "fg": 3647, + "rotates": false + }, + { + "id": "overlay_wielded_carver_off", + "fg": 3648, + "rotates": false + }, + { + "id": "overlay_wielded_carver_on", + "fg": 3648, + "rotates": false + }, + { + "id": "overlay_wielded_honey_scraper", + "fg": 3648, + "rotates": false + }, + { + "id": "overlay_wielded_primitive_knife", + "fg": 3648, + "rotates": false + }, + { + "id": ["overlay_wielded_knife_steak", "overlay_wielded_cddaxp_bfopen"], + "fg": 3648, + "rotates": false + }, + { + "id": "overlay_wielded_blowgun", + "fg": 3650, + "rotates": false + }, + { + "id": "overlay_wielded_clarinet", + "fg": 3650, + "rotates": false + }, + { + "id": "overlay_wielded_flute", + "fg": 3650, + "rotates": false + }, + { + "id": "overlay_wielded_bone_flute", + "fg": 3650, + "rotates": false + }, + { + "id": "overlay_wielded_cs_lajatang_off", + "fg": 3651, + "rotates": false + }, + { + "id": "overlay_wielded_cs_lajatang_on", + "fg": 3651, + "rotates": false + }, + { + "id": "overlay_wielded_cutlass", + "fg": 3652, + "rotates": false + }, + { + "id": "overlay_cavalry_sabre", + "fg": 3652, + "rotates": false + }, + { + "id": "overlay_wielded_cutlass_fake", + "fg": 3652, + "rotates": false + }, + { + "id": "overlay_wielded_cutlass_inferior", + "fg": 3652, + "rotates": false + }, + { + "id": "overlay_wielded_cavalry_sabre_fake", + "fg": 3652, + "rotates": false + }, + { + "id": "overlay_wielded_diveknife", + "fg": 3653, + "rotates": false + }, + { + "id": "overlay_wielded_copper_knife", + "fg": 3653, + "rotates": false + }, + { + "id": "overlay_wielded_pockknife", + "fg": 3653, + "rotates": false + }, + { + "id": "overlay_wielded_unbio_bladed_weapon", + "fg": 3654, + "rotates": false + }, + { + "id": "unbio_bladed_weapon", + "fg": 4328, + "rotates": false + }, + { + "id": "!overlay_wielded_elc_blds", + "fg": 3655, + "rotates": false + }, + { + "id": "overlay_wielded_e_handcuffs", + "fg": 3656, + "rotates": false + }, + { + "id": "overlay_worn_e_handcuffs", + "fg": 3656, + "rotates": false + }, + { + "id": "overlay_wielded_e_tool", + "fg": 3657, + "rotates": false + }, + { + "id": "overlay_wielded_wakizashi", + "fg": 3658, + "rotates": false + }, + { + "id": "overlay_wielded_wakizashi_fake", + "fg": 3658, + "rotates": false + }, + { + "id": "overlay_wielded_dao", + "fg": 3658, + "rotates": false + }, + { + "id": "overlay_wielded_scimitar", + "fg": 3658, + "rotates": false + }, + { + "id": "overlay_wielded_scimitar_fake", + "fg": 3658, + "rotates": false + }, + { + "id": "overlay_wielded_scimitar_inferior", + "fg": 3658, + "rotates": false + }, + { + "id": "overlay_wielded_wakizashi_inferior", + "fg": 3658, + "rotates": false + }, + { + "id": "overlay_wielded_firemachete_off", + "fg": 3660, + "rotates": false + }, + { + "id": "overlay_wielded_machete", + "fg": 3660, + "rotates": false + }, + { + "id": "overlay_wielded_shishkebab_off", + "fg": 3660, + "rotates": false + }, + { + "id": "overlay_wielded_makeshift_machete", + "fg": 3660, + "rotates": false + }, + { + "id": "overlay_wielded_survivor_machete", + "fg": 3660, + "rotates": false + }, + { + "id": "overlay_wielded_blade", + "fg": 3660, + "rotates": false + }, + { + "id": "overlay_wielded_firemachete_on", + "fg": 3661, + "rotates": false + }, + { + "id": "overlay_wielded_shishkebab_on", + "fg": 3661, + "rotates": false + }, + { + "id": "overlay_wielded_sword_xiphos", + "fg": 3661, + "rotates": false + }, + { + "id": "overlay_wielded_fire_ax", + "fg": 3662, + "rotates": false + }, + { + "id": "overlay_wielded_fishing_rod_basic", + "fg": 3663, + "rotates": false + }, + { + "id": "overlay_wielded_fishing_rod_professional", + "fg": 3663, + "rotates": false + }, + { + "id": "overlay_wielded_flesh_blade", + "fg": 3664, + "rotates": false + }, + { + "id": "overlay_wielded_halligan", + "fg": 3665, + "rotates": false + }, + { + "id": "overlay_wielded_hammer", + "fg": 3666, + "rotates": false + }, + { + "id": "overlay_wielded_makeshift_hammer", + "fg": 3666, + "rotates": false + }, + { + "id": "overlay_wielded_heavy_flashlight", + "fg": 3667, + "rotates": false + }, + { + "id": "overlay_wielded_heavy_solar_flashlight", + "fg": 3667, + "rotates": false + }, + { + "id": "overlay_wielded_l-stick", + "fg": 3667, + "rotates": false + }, + { + "id": "overlay_wielded_glowstick_dead", + "fg": 3667, + "rotates": false + }, + { + "id": "overlay_wielded_glowstick", + "fg": 3667, + "rotates": false + }, + { + "id": "overlay_wielded_handflare", + "fg": 3667, + "rotates": false + }, + { + "id": "overlay_wielded_handflare_dead", + "fg": 3667, + "rotates": false + }, + { + "id": "overlay_wielded_heavy_flashlight_on", + "fg": 3668, + "rotates": false + }, + { + "id": "overlay_wielded_solar_flashlight_on", + "fg": 3668, + "rotates": false + }, + { + "id": "overlay_wielded_l-stick_on", + "fg": 3668, + "rotates": false + }, + { + "id": "overlay_wielded_glowstick_lit", + "fg": 3668, + "rotates": false + }, + { + "id": "overlay_wielded_handflare_lit", + "fg": 3668, + "rotates": false + }, + { + "id": "overlay_wielded_hoe", + "fg": 3669, + "rotates": false + }, + { + "id": "overlay_wielded_iceaxe", + "fg": 3670, + "rotates": false + }, + { + "id": "overlay_wielded_pickaxe", + "fg": 3670, + "rotates": false + }, + { + "id": "overlay_wielded_knife_butcher", + "fg": 3671, + "rotates": false + }, + { + "id": "overlay_wielded_knife_rm42", + "fg": 3672, + "rotates": false + }, + { + "id": "overlay_wielded_knife_rambo", + "fg": 3672, + "rotates": false + }, + { + "id": "overlay_wielded_makeshift_sword_bayonet", + "fg": 3672, + "rotates": false + }, + { + "id": "overlay_wielded_knife_hunting", + "fg": 3672, + "rotates": false + }, + { + "id": "overlay_wielded_knife_combat", + "fg": 3672, + "rotates": false + }, + { + "id": "overlay_wielded_knife_trench", + "fg": 3672, + "rotates": false + }, + { + "id": "overlay_wielded_kris", + "fg": 3673, + "rotates": false + }, + { + "id": "overlay_wielded_kris_fake", + "fg": 3673, + "rotates": false + }, + { + "id": "overlay_wielded_kukri", + "fg": 3674, + "rotates": false + }, + { + "id": "overlay_wielded_lobotomizer", + "fg": 3675, + "rotates": false + }, + { + "id": "overlay_wielded_makeshift_crowbar", + "fg": 3676, + "rotates": false + }, + { + "id": "overlay_wielded_crowbar", + "fg": 3676, + "rotates": false + }, + { + "id": "overlay_wielded_mop", + "fg": 3677, + "rotates": false + }, + { + "id": "overlay_wielded_nodachi", + "fg": 3678, + "rotates": false + }, + { + "id": "overlay_wielded_nodachi_fake", + "fg": 3678, + "rotates": false + }, + { + "id": "overlay_wielded_nodachi_inferior", + "fg": 3678, + "rotates": false + }, + { + "id": "overlay_wielded_primitive_axe", + "fg": 3679, + "rotates": false + }, + { + "id": "overlay_wielded_primitive_hammer", + "fg": 3679, + "rotates": false + }, + { + "id": "overlay_wielded_makeshift_axe", + "fg": 3679, + "rotates": false + }, + { + "id": "overlay_wielded_primitive_adze", + "fg": 3679, + "rotates": false + }, + { + "id": "overlay_wielded_rapier", + "fg": 3680, + "rotates": false + }, + { + "id": "overlay_wielded_rapier_fake", + "fg": 3680, + "rotates": false + }, + { + "id": "overlay_wielded_scythe", + "fg": 3681, + "rotates": false + }, + { + "id": ["overlay_wielded_scythe_war", "overlay_wielded_scythe_war_upgraded", "overlay_wielded_scythe_war_perfected"], + "fg": 3681, + "rotates": false + }, + { + "id": "overlay_wielded_shovel", + "fg": 3682, + "rotates": false + }, + { + "id": "overlay_wielded_makeshift_shovel", + "fg": 3682, + "rotates": false + }, + { + "id": "overlay_wielded_molded_shovel", + "fg": 3682, + "rotates": false + }, + { + "id": "overlay_wielded_primitive_shovel", + "fg": 3682, + "rotates": false + }, + { + "id": "overlay_wielded_sickle", + "fg": 3683, + "rotates": false + }, + { + "id": "overlay_wielded_khopesh", + "fg": 3683, + "rotates": false + }, + { + "id": "overlay_wielded_spear_pestilence", + "fg": 3684, + "rotates": false + }, + { + "id": "overlay_wielded_gungnir_replica", + "fg": 3684, + "rotates": false + }, + { + "id": "overlay_wielded_stormbringer_on", + "fg": 3685, + "rotates": false + }, + { + "id": "overlay_wielded_sun_sword", + "fg": 3686, + "rotates": false + }, + { + "id": "overlay_wielded_sun_sword_on", + "fg": 3687, + "rotates": false + }, + { + "id": ["overlay_wielded_tanto", "overlay_wielded_tanto_fake", "overlay_wielded_tanto_inferior"], + "fg": 3688, + "rotates": false + }, + { + "id": "overlay_wielded_tazer", + "fg": 3689, + "rotates": false + }, + { + "id": "overlay_wielded_trumpet", + "fg": 3690, + "rotates": false + }, + { + "id": "overlay_wielded_ukulele", + "fg": 3691, + "rotates": false + }, + { + "id": "overlay_wielded_vibrator", + "fg": 3692, + "rotates": false + }, + { + "id": "overlay_wielded_violin", + "fg": 3693, + "rotates": false + }, + { + "id": "overlay_wielded_violin_golden", + "fg": 3693, + "rotates": false + }, + { + "id": "overlay_wielded_wrench", + "fg": 3694, + "rotates": false + }, + { + "id": "overlay_wielded_zweifire_off", + "fg": 3695, + "rotates": false + }, + { + "id": "overlay_wielded_zweihander", + "fg": 3695, + "rotates": false + }, + { + "id": "overlay_wielded_zweihander_fake", + "fg": 3695, + "rotates": false + }, + { + "id": "overlay_wielded_zweihander_inferior", + "fg": 3695, + "rotates": false + }, + { + "id": "overlay_wielded_zweifire_on", + "fg": 3696, + "rotates": false + }, + { + "id": "pipebomb_radio", + "fg": 3704, + "bg": 3721 + }, + { + "id": "tool_rdx_sand_bomb", + "fg": 3704 + }, + { + "id": "pipebomb_radio_act", + "fg": 3705, + "bg": 3721 + }, + { + "id": "tool_rdx_sand_bomb_act", + "fg": 3705 + }, + { + "id": "pockknife", + "fg": 3710, + "rotates": false + }, + { + "id": "multitool", + "fg": 3710 + }, + { + "id": "carding_paddles", + "fg": 3715 + }, + { + "id": "two_way_radio", + "fg": 3720 + }, + { + "id": "rx12_injector", + "fg": 3731 + }, + { + "id": "scissors", + "fg": 3735, + "rotates": false + }, + { + "id": "screwdriver", + "fg": 3738, + "rotates": false + }, + { + "id": "omnipotence_scroll", + "fg": 3740, + "rotates": false + }, + { + "id": ["scroll_sun", "scroll_spell_acidspray", "scroll_spell_agile", "scroll_spell_clairvoyance", "scroll_spell_clarity", "scroll_spell_cleric", "scroll_spell_confusion", "scroll_spell_elecresist", "scroll_spell_flame_armor", "scroll_spell_free_action", "scroll_spell_heal", "scroll_spell_insight", "scroll_spell_invis", "scroll_spell_lightning", "scroll_spell_might", "scroll_spell_plants", "spell_bugs"], + "fg": 3740, + "rotates": false + }, + { + "id": "scroll_moon", + "fg": 3740, + "rotates": false + }, + { + "id": "scroll_artiface", + "fg": 3740, + "rotates": false + }, + { + "id": "scroll_nature", + "fg": 3740, + "rotates": false + }, + { + "id": "scroll_destruction", + "fg": 3740, + "rotates": false + }, + { + "id": "scroll_subversion", + "fg": 3740, + "rotates": false + }, + { + "id": ["scroll_sun_on", "scroll_spell_acidspray_on", "scroll_spell_agile_on", "scroll_spell_clairvoyance_on", "scroll_spell_clarity_on", "scroll_spell_cleric_on", "scroll_spell_confusion_on", "scroll_spell_elecresist_on", "scroll_spell_flame_armor_on", "scroll_spell_free_action_on", "scroll_spell_heal_on", "scroll_spell_insight_on", "scroll_spell_invis_on", "scroll_spell_lightning_on", "scroll_spell_might_on", "scroll_spell_plants_on", "spell_bugs_on"], + "fg": 3741, + "rotates": false + }, + { + "id": "scroll_moon_on", + "fg": 3741, + "rotates": false + }, + { + "id": "scroll_artiface_on", + "fg": 3741, + "rotates": false + }, + { + "id": "scroll_nature_on", + "fg": 3741, + "rotates": false + }, + { + "id": "scroll_destruction_on", + "fg": 3741, + "rotates": false + }, + { + "id": "scroll_subversion_on", + "fg": 3741, + "rotates": false + }, + { + "id": "sewing_kit", + "fg": 3744, + "rotates": false + }, + { + "id": "damaged_shelter_kit", + "fg": 3746 + }, + { + "id": "lemat_revolver_shotgun", + "fg": 3752 + }, + { + "id": ["masterkey", "lead_u_shotgun"], + "fg": 3752 + }, + { + "id": "rm121aux", + "fg": 3752 + }, + { + "id": "u_shotgun", + "fg": 3752 + }, + { + "id": "sm_extinguisher", + "fg": 3757, + "rotates": false + }, + { + "id": "throw_extinguisher", + "fg": 3757 + }, + { + "id": "soldering_iron", + "fg": 3759, + "rotates": false + }, + { + "id": "spear_pestilence", + "fg": 3761, + "rotates": false + }, + { + "id": "spiral_matrix", + "fg": 3762 + }, + { + "id": "dcluster", + "fg": 3762 + }, + { + "id": "spray_can", + "fg": 3763, + "rotates": false + }, + { + "id": "f_still", + "fg": 3765, + "rotates": false + }, + { + "id": "stormbringer", + "fg": 3766, + "rotates": false + }, + { + "id": "stormbringer_on", + "fg": 3767, + "rotates": false + }, + { + "id": "summon_kreck", + "fg": 3768, + "rotates": false + }, + { + "id": "bomblet_archdemon", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_kreck_on", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_dark_wyrm", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_dark_wyrm_on", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_blank", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_blank_on", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_flaming_eye", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_flaming_eye_on", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_hunting_horror", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_hunting_horror_on", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_flying_polyp", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_flying_polyp_on", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_mi_go", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_mi_go_on", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_yugg", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_yugg_on", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_shoggoth", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_shoggoth_on", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_dark_wyrm", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_dark_wyrm_on", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_jabberwock", + "fg": 3768, + "rotates": false + }, + { + "id": "summon_jabberwock_on", + "fg": 3768, + "rotates": false + }, + { + "id": "sun_sword", + "fg": 3769, + "rotates": false + }, + { + "id": ["diveknife", "cddaxp_bfopen"], + "fg": 3775 + }, + { + "id": "diamond_bayonet", + "fg": 3776 + }, + { + "id": "diamond_pistol_bayonet", + "fg": 3776 + }, + { + "id": "diamond_sword_bayonet", + "fg": 3776 + }, + { + "id": "makeshift_bayonet", + "fg": 3776 + }, + { + "id": "syringe", + "fg": 3778, + "rotates": false + }, + { + "id": "tailors_kit", + "fg": 3779 + }, + { + "id": "talking_doll", + "fg": 3780, + "rotates": false + }, + { + "id": "teddy", + "fg": 3780 + }, + { + "id": "portal", + "fg": 3786 + }, + { + "id": "tent_kit", + "fg": 3787, + "rotates": false + }, + { + "id": "broketent", + "fg": 3787 + }, + { + "id": "largebroketent", + "fg": 3787 + }, + { + "id": ["c4", "oxyacetylene"], + "fg": 3793 + }, + { + "id": "c4armed", + "fg": 3793 + }, + { + "id": "fertilizer_bomb", + "fg": 3794 + }, + { + "id": "nail_bomb", + "fg": 3794 + }, + { + "id": "tool_black_powder_charge", + "fg": 3794 + }, + { + "id": "fertilizer_bomb_act", + "fg": 3795 + }, + { + "id": "nail_bomb_act", + "fg": 3795 + }, + { + "id": "tool_black_powder_charge_act", + "fg": 3795 + }, + { + "id": "string_6", + "fg": 3800, + "rotates": false + }, + { + "id": "UPS_off", + "fg": 3803, + "rotates": false + }, + { + "id": "vac_sealer", + "fg": 3804, + "rotates": false + }, + { + "id": "makeshift_sealer", + "fg": 3804 + }, + { + "id": "washboard", + "fg": 3809 + }, + { + "id": "dog_whistle", + "fg": 3813, + "rotates": false + }, + { + "id": "tree_spile", + "fg": 3813 + }, + { + "id": "wrench", + "fg": 3815, + "rotates": false + }, + { + "id": "laser_capacitor", + "fg": 3820 + }, + { + "id": "rechargeable_battery", + "bg": 3820 + }, + { + "id": "magazine_battery_mod", + "fg": 3820 + }, + { + "id": "emer_blanket_on", + "fg": 3827, + "rotates": false + }, + { + "id": "porkpie", + "fg": 3829 + }, + + { + "id": "folding_poncho_on", + "fg": 3830, + "rotates": false + }, + { + "id": "goggles_ir", + "fg": 3834, + "rotates": false + }, + { + "id": "goggles_ir_on", + "fg": 3835, + "rotates": false + }, + { + "id": "knit_scarf", + "fg": 3840, + "rotates": false + }, + { + "id": "knit_scarf_loose", + "fg": 3840, + "rotates": false + }, + { + "id": "long_knit_scarf", + "fg": 3841, + "rotates": false + }, + { + "id": "long_knit_scarf_loose", + "fg": 3841, + "rotates": false + }, + { + "id": "mask_fsurvivor", + "fg": 3843 + }, + { + "id": "mask_fsurvivorxl", + "fg": 3843 + }, + { + "id": "mask_hsurvivor", + "fg": 3843 + }, + { + "id": "mask_lsurvivor", + "fg": 3843 + }, + { + "id": "mask_wsurvivor", + "fg": 3843 + }, + { + "id": "mask_wsurvivorxl", + "fg": 3843 + }, + { + "id": "overlay_female_worn_thermal_outfit", + "fg": 3847, + "rotates": false + }, + { + "id": "overlay_female_worn_thermal_outfit_on", + "fg": 3847, + "rotates": false + }, + { + "id": "overlay_female_worn_thermal_suit", + "fg": 3848, + "rotates": false + }, + { + "id": "overlay_female_worn_thermal_suit_on", + "fg": 3848, + "rotates": false + }, + { + "id": "overlay_female_worn_towel", + "fg": 3849, + "rotates": false + }, + { + "id": "overlay_female_worn_towel_soiled", + "fg": 3849, + "rotates": false + }, + { + "id": "overlay_female_worn_towel_wet", + "fg": 3849, + "rotates": false + }, + { + "id": "overlay_male_worn_thermal_outfit", + "fg": 3850, + "rotates": false + }, + { + "id": "overlay_male_worn_thermal_outfit_on", + "fg": 3850, + "rotates": false + }, + { + "id": "thermal_outfit", + "fg": 3850 + }, + { + "id": "thermal_outfit_on", + "fg": 3850 + }, + { + "id": "overlay_male_worn_thermal_suit", + "fg": 3851, + "rotates": false + }, + { + "id": "overlay_male_worn_thermal_suit_on", + "fg": 3851, + "rotates": false + }, + { + "id": "overlay_male_worn_towel", + "fg": 3852, + "rotates": false + }, + { + "id": "overlay_male_worn_towel_soiled", + "fg": 3852, + "rotates": false + }, + { + "id": "overlay_male_worn_towel_wet", + "fg": 3852, + "rotates": false + }, + { + "id": "overlay_wielded_acoustic_guitar", + "fg": 3853, + "rotates": false + }, + { + "id": "overlay_wielded_bagpipes", + "fg": 3854, + "rotates": false + }, + { + "id": "overlay_wielded_saxophone", + "fg": 3855, + "rotates": false + }, + { + "id": "overlay_wielded_tuba", + "fg": 3856, + "rotates": false + }, + { + "id": "overlay_worn_armor_wyrm", + "fg": 3857, + "rotates": false + }, + { + "id": "overlay_worn_fedora", + "fg": 3858, + "rotates": false + }, + { + "id": "overlay_worn_folding_poncho_on", + "fg": 3859, + "rotates": false + }, + { + "id": "overlay_worn_gilded_aegis", + "fg": 3860, + "rotates": false + }, + { + "id": "overlay_worn_goggles_ir", + "fg": 3861, + "rotates": false + }, + { + "id": "overlay_worn_goggles_ir_on", + "fg": 3862, + "rotates": false + }, + { + "id": "overlay_worn_goggles_nv", + "fg": 3863, + "rotates": false + }, + { + "id": "overlay_worn_goggles_nv_clairvoyance", + "fg": 3864, + "rotates": false + }, + { + "id": "goggles_nv_clairvoyance", + "fg": 3864, + "rotates": false + }, + { + "id": "overlay_worn_goggles_nv_on", + "fg": 3865, + "rotates": false + }, + { + "id": "overlay_worn_harmonica_holder", + "fg": 3866, + "rotates": false + }, + { + "id": "overlay_worn_knit_scarf", + "fg": 3867, + "rotates": false + }, + { + "id": "overlay_worn_knit_scarf_loose", + "fg": 3867, + "rotates": false + }, + { + "id": "overlay_worn_long_knit_scarf_loose", + "fg": 3868, + "rotates": false + }, + { + "id": "overlay_worn_long_knit_scarf", + "fg": 3868, + "rotates": false + }, + { + "id": "overlay_worn_scarf_long", + "fg": 3869, + "rotates": false + }, + { + "id": "overlay_worn_scarf_long_loose", + "fg": 3869, + "rotates": false + }, + { + "id": "overlay_worn_mask_bunker", + "fg": 3870, + "rotates": false + }, + { + "id": "overlay_worn_mask_bunker_on", + "fg": 3871, + "rotates": false + }, + { + "id": "overlay_worn_mask_h20survivor", + "fg": 3872, + "rotates": false + }, + { + "id": "overlay_worn_mask_h20survivor_on", + "fg": 3872, + "rotates": false + }, + { + "id": "overlay_worn_mask_h20survivorxl", + "fg": 3872, + "rotates": false + }, + { + "id": "overlay_worn_mask_h20survivorxl_on", + "fg": 3872, + "rotates": false + }, + { + "id": "!overlay_worn_mask_ski", + "fg": 3873, + "rotates": false + }, + { + "id": "!overlay_worn_mask_ski_loose", + "fg": 3874, + "rotates": false + }, + { + "id": "overlay_worn_megaarmor_torso_3", + "fg": 3875, + "rotates": false + }, + { + "id": "megaarmor_torso_3", + "fg": 3875, + "rotates": false + }, + { + "id": "overlay_worn_megaarmor_torso_3_act", + "fg": 3876, + "rotates": false + }, + { + "id": "megaarmor_torso_3_act", + "bg": 3876, + "rotates": false + }, + { + "id": "overlay_worn_miner_hat", + "fg": 3877, + "rotates": false + }, + { + "id": "overlay_worn_miner_hat_on", + "fg": 3878, + "rotates": false + }, + { + "id": "overlay_worn_rebreather_xl", + "fg": 3879, + "rotates": false + }, + { + "id": "overlay_worn_rebreather_xl_on", + "fg": 3879, + "rotates": false + }, + { + "id": "rebreather_xl", + "fg": 3879, + "rotates": false + }, + { + "id": "rebreather_xl_on", + "fg": 3879, + "rotates": false + }, + { + "id": "revenant_crown", + "fg": 3896, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_worn_revenant_crown", + "fg": 3880, + "rotates": false + }, + { + "id": "overlay_worn_rm13_armor_on", + "fg": 3881, + "rotates": false + }, + { + "id": "rm13_armor_on", + "fg": 3881 + }, + { + "id": "overlay_worn_robe_shadow", + "fg": 3882, + "rotates": false + }, + { + "id": "overlay_worn_sac_purse", + "fg": 3883, + "rotates": false + }, + { + "id": "overlay_worn_sac_purse_arm", + "fg": 3884, + "rotates": false + }, + { + "id": "overlay_worn_sac_purse_leg", + "fg": 3885, + "rotates": false + }, + { + "id": "overlay_worn_scarf", + "fg": 3886, + "rotates": false + }, + { + "id": "overlay_worn_scarf_loose", + "fg": 3888, + "rotates": false + }, + { + "id": "somen_clairvoyance", + "fg": 3905, + "bg": 0, + "rotates": false + }, + { + "id": "somen_clairvoyance_on", + "fg": 3906, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_somen_clairvoyance", + "fg": 3889, + "rotates": false + }, + { + "id": "overlay_worn_somen_clairvoyance_on", + "fg": 3606, + "rotates": false + }, + { + "id": "overlay_worn_stealth_cloak", + "fg": 3890, + "rotates": false + }, + { + "id": "stealth_cloak", + "fg": 323, + "rotates": false + }, + { + "id": "stealth_cloak_f", + "fg": 317, + "rotates": false + }, + { + "id": "overlay_worn_survivor_light", + "fg": 3891, + "rotates": false + }, + { + "id": "overlay_worn_survivor_light_on", + "fg": 3892, + "rotates": false + }, + { + "id": "overlay_worn_wearable_light", + "fg": 3893, + "rotates": false + }, + { + "id": "overlay_worn_wear_solar_flashlight", + "fg": 3893, + "rotates": false + }, + { + "id": "overlay_worn_wearable_light_on", + "fg": 3894, + "rotates": false + }, + { + "id": "overlay_worn_wear_solar_flashlight_on", + "fg": 3894, + "rotates": false + }, + { + "id": "rm13_armor", + "fg": 3897 + }, + { + "id": "overlay_worn_rm13_armor", + "fg": 3897, + "rotates": false + }, + { + "id": "rx11_stimpack", + "fg": 3900 + }, + { + "id": "berserker_drug", + "fg": 3900 + }, + { + "id": "berserker_drug_act", + "fg": 3900 + }, + { + "id": "megamap", + "fg": 3900 + }, + { + "id": "wearable_rx12", + "fg": 3900 + }, + { + "id": "scarf", + "fg": 3902, + "rotates": false + }, + { + "id": "scarf_loose", + "fg": 3902 + }, + + { + "id": "scarf_fur_long", + "fg": 3903, + "rotates": false + }, + { + "id": "scarf_fur_long_loose", + "fg": 3903, + "rotates": false + }, + { + "id": "scarf_fur_loose", + "fg": 3904, + "rotates": false + }, + { + "id": "scarf_fur", + "fg": 3904, + "rotates": false + }, + { + "id": "stethoscope", + "fg": 3907, + "rotates": false + }, + { + "id": "towel", + "fg": 3910, + "rotates": false + }, + { + "id": "tr_landmine_buried", + "fg": 3916, + "rotates": false + }, + { + "id": "tr_landmine_buried_season_winter", + "fg": 3917, + "rotates": false + }, + { + "id": "tr_blade", + "fg": 3918, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "edge", + "fg": 3919 + } + ] + }, + { + "id": "tr_boobytrap", + "fg": 3920, + "rotates": false + }, + { + "id": "tr_bubblewrap", + "fg": 3921, + "rotates": false + }, + { + "id": "tr_caltrops", + "fg": 3922, + "rotates": false + }, + { + "id": "tr_crossbow", + "fg": 3923, + "rotates": false + }, + { + "id": "tr_dissector", + "fg": 3924, + "rotates": false + }, + { + "id": "tr_engine", + "fg": 3925 + }, + { + "id": "tr_engine", + "fg": 3925 + }, + { + "id": "tr_fur_rollmat", + "fg": 3926, + "rotates": false + }, + { + "id": "tr_leather_funnel", + "fg": 3928, + "rotates": false + }, + { + "id": "leather_funnel", + "fg": 3928 + }, + { + "id": "tr_ledge", + "fg": 3929 + }, + { + "id": "tr_rollmat", + "fg": 3931, + "rotates": false + }, + { + "id": "tr_shotgun_2", + "fg": 3932 + }, + { + "id": "tr_shotgun_1", + "fg": 3932 + }, + { + "id": "tr_sinkhole", + "fg": 3933, + "rotates": false + }, + { + "id": "tr_temple_flood", + "fg": 3933 + }, + { + "id": "tr_sinkhole_season_winter", + "fg": 3934, + "rotates": false + }, + { + "id": "jar_kompot", + "fg": 3941, + "rotates": false + }, + { + "id": "overlay_wielded_pipe_shotgunsawn", + "fg": 3947, + "rotates": false + }, + { + "id": "overlay_wielded_saiga_sawn", + "fg": 3947, + "rotates": false + }, + { + "id": "overlay_wielded_shotgun_sawn", + "fg": 3947, + "rotates": false + }, + { + "id": "shotgun_sawn", + "fg": 3955, + "rotates": false + }, + { + "id": "pistol_pepperbox", + "fg": 3955 + }, + { + "id": "overlay_wielded_h&k416a5", + "fg": 3958, + "rotates": false + }, + { + "id": "overlay_wielded_m4a1", + "fg": 3958, + "rotates": false + }, + { + "id": "powder_candy", + "fg": 3959 + }, + { + "id": "vp_abolter", + "fg": 3960, + "rotates": true + }, + { + "id": "vp_abolternc", + "fg": 3960, + "rotates": true + }, + { + "id": "vp_avortexbolter", + "fg": 3960, + "rotates": true + }, + { + "id": "vp_avortexbolternc", + "fg": 3960, + "rotates": true + }, + { + "id": "vp_vortexcannon", + "fg": 3960, + "rotates": true + }, + { + "id": "vp_vortexbolter", + "fg": 3960, + "rotates": true + }, + { + "id": ["vp_cutter", "vp_cutternc", "vp_mcutter"], + "fg": 3960, + "rotates": true + }, + { + "id": ["vp_repeatingcrossbow", "vp_repeatingcrossbownc"], + "fg": 3960, + "rotates": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3960 + } + ] + }, + { + "id": "vp_aisle_horizontal", + "fg": 3961, + "rotates": true + }, + { + "id": "vp_gloopleaisle_horizontal", + "fg": 3961, + "rotates": true + }, + { + "id": "vp_grayaisle_horizontal", + "fg": 3961, + "rotates": true + }, + { + "id": "vp_oozleaisle_horizontal", + "fg": 3961, + "rotates": true + }, + { + "id": "vp_aisle_vertical", + "fg": 3962, + "rotates": true + }, + { + "id": "vp_gloopleaisle_vertical", + "fg": 3962, + "rotates": true + }, + { + "id": "vp_grayaisle_vertical", + "fg": 3962, + "rotates": true + }, + { + "id": "vp_oozleaisle_vertical", + "fg": 3962, + "rotates": true + }, + { + "id": "vp_tearer", + "fg": 3963, + "rotates": true + }, + { + "id": "vp_ablundergun", + "fg": 3964 + }, + { + "id": "vp_atiharturret", + "fg": 3964, + "rotates": true + }, + { + "id": "vp_blundergun", + "fg": 3964, + "rotates": true + }, + { + "id": "vp_tiharturret", + "fg": 3964, + "rotates": true + }, + { + "id": "tiharturret", + "fg": 4108, + "rotates": true + }, + { + "id": ["vp_rslauncher", "vp_rslaunchernc"], + "fg": 4108, + "rotates": true + }, + { + "id": "vp_atiharturretnc", + "fg": 3964, + "rotates": true + }, + { + "id": "vp_blunderbuss", + "fg": 3964, + "rotates": true + }, + { + "id": "vp_blunderbussnc", + "fg": 3964, + "rotates": true + }, + { + "id": "vp_avortexaccelerator", + "fg": 3965, + "rotates": true + }, + { + "id": ["vgen", "vgen2", "vp_vgen", "vp_vgen2"], + "fg": 3162, + "rotates": true + }, + { + "id": "vp_avortexacceleratornc", + "fg": 3965, + "rotates": true + }, + { + "id": "vp_avortexrifle", + "fg": 3965, + "rotates": true + }, + { + "id": "vp_avortexriflenc", + "fg": 3965, + "rotates": true + }, + { + "id": "vp_vortexrifle", + "fg": 3965, + "rotates": true + }, + { + "id": "vp_vortexaccelerator", + "fg": 3965, + "rotates": true + }, + { + "id": "vp_basketsm", + "fg": 3966, + "rotates": false + }, + { + "id": "basket", + "fg": 3966 + }, + { + "id": ["folding_basket", "bike_basket"], + "fg": 3966 + }, + { + "id": "vp_bed", + "fg": 3967, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3967 + } + ] + }, + { + "id": "vp_biter", + "fg": 3968, + "rotates": true + }, + { + "id": "vp_horror", + "fg": 3968, + "rotates": true + }, + { + "id": "vp_razorqueen", + "fg": 3968, + "rotates": true + }, + { + "id": "vp_sharp", + "fg": 3968, + "rotates": true + }, + { + "id": "vp_sickle", + "fg": 3968, + "rotates": true + }, + { + "id": "vp_blade_horizontal", + "fg": 3969, + "rotates": true + }, + { + "id": "vp_blade_vertical", + "fg": 3970, + "rotates": true + }, + { + "id": "vp_board_horizontal", + "fg": 3971, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3972 + } + ] + }, + { + "id": "vp_halfboard_horizontal", + "fg": 4063, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3972 + } + ] + }, + { + "id": "vp_halfboard_horizontal_2", + "fg": 4064, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3972 + } + ] + }, + { + "id": "vp_xlhalfboard_vertical_2", + "fg": 4181, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3972 + } + ] + }, + { + "id": "vp_xlhalfboard_horizontal_2", + "fg": 4064, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3972 + } + ] + }, + { + "id": "vp_xlhalfboard_horizontal", + "fg": 4063, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3972 + } + ] + }, + { + "id": "vp_board_ne", + "fg": 3973, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3974 + } + ] + }, + { + "id": "vp_board_nw", + "fg": 3975, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3976 + } + ] + }, + { + "id": "vp_board_se", + "fg": 3977, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3978 + } + ] + }, + { + "id": "vp_halfboard_se", + "fg": 4069, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3978 + } + ] + }, + { + "id": "vp_xlhalfboard_se", + "fg": 4069, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 3978 + } + ] + }, + { + "id": "vp_board_sw", + "fg": 3979, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3980 + } + ] + }, + { + "id": "vp_halfboard_sw", + "fg": 4070, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3980 + } + ] + }, + { + "id": "vp_xlhalfboard_sw", + "fg": 4070, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 3980 + } + ] + }, + { + "id": "vp_board_vertical", + "fg": 3981, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3982 + } + ] + }, + { + "id": "vp_halfboard_vertical", + "fg": 4071, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3982 + } + ] + }, + { + "id": "vp_xlhalfboard_vertical", + "fg": 4071, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 3982 + } + ] + }, + { + "id": ["vp_Waisle_horizontal", "vp_Waisle_vertical"], + "fg": 3983, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3983 + } + ] + }, + { + "id": "vp_boat_board", + "fg": 3983, + "rotates": true + }, + { + "id": "wood_plate", + "fg": 3983 + }, + { + "id": "vp_box", + "fg": 3984, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3984 + } + ] + }, + { + "id": "vp_basketlg", + "fg": 3984, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3984 + } + ] + }, + { + "id": "vp_basketlg_folding", + "fg": 3984, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3984 + } + ] + }, + { + "id": "vp_basketlg_external", + "fg": 3984, + "rotates": false + }, + { + "id": "vp_basketsm_external", + "fg": 3984, + "rotates": false + }, + { + "id": "vp_cargo_bag", + "fg": 3985, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3985 + } + ] + }, + { + "id": "vp_cargo_space_external", + "fg": 3986, + "rotates": false + }, + { + "id": "cargo_rack", + "fg": 3986 + }, + { + "id": "blaze_mag_rock", + "fg": 3986 + }, + { + "id": "vp_gloopledoor", + "fg": 4053, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4053 + }, + { + "id": "open", + "fg": 4054 + } + ] + }, + { + "id": "vp_gloopledoor_opaque", + "fg": 4053, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4053 + }, + { + "id": "open", + "fg": 4054 + } + ] + }, + { + "id": "vp_graydoor", + "fg": 4053, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4053 + }, + { + "id": "open", + "fg": 4054 + } + ] + }, + { + "id": "vp_graydoor_opaque", + "fg": 4053, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4053 + }, + { + "id": "open", + "fg": 4054 + } + ] + }, + { + "id": "vp_oozledoor", + "fg": 4053, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4053 + }, + { + "id": "open", + "fg": 4054 + } + ] + }, + { + "id": "vp_oozledoor_opaque", + "fg": 4053, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4053 + }, + { + "id": "open", + "fg": 4054 + } + ] + }, + { + "id": "vp_gloopleboard_horizontal", + "fg": 4047, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4047 + } + ] + }, + { + "id": "vp_grayboard_horizontal", + "fg": 4047, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4047 + } + ] + }, + { + "id": "vp_halfgloopleboard_horizontal", + "fg": 4047, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4047 + } + ] + }, + { + "id": "vp_halfgloopleboard_horizontal_2", + "fg": 4047, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4047 + } + ] + }, + { + "id": "vp_halfgrayboard_horizontal", + "fg": 4047, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4047 + } + ] + }, + { + "id": "vp_halfgrayboard_horizontal_2", + "fg": 4047, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4047 + } + ] + }, + { + "id": "vp_halfoozleboard_horizontal", + "fg": 4047, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4047 + } + ] + }, + { + "id": "vp_halfoozleboard_horizontal_2", + "fg": 4047, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4047 + } + ] + }, + { + "id": "vp_oozleboard_horizontal", + "fg": 4047, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4047 + } + ] + }, + { + "id": "vp_gloopleboard_nw", + "fg": 4049, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4049 + } + ] + }, + { + "id": "vp_grayboard_nw", + "fg": 4049, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4049 + } + ] + }, + { + "id": "vp_grayboard_sw", + "fg": 4049, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4049 + } + ] + }, + { + "id": "vp_halfgloopleboard_nw", + "fg": 4049, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4049 + } + ] + }, + { + "id": "vp_halfgrayboard_nw", + "fg": 4049, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4049 + } + ] + }, + { + "id": "vp_halfoozleboard_nw", + "fg": 4049, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4049 + } + ] + }, + { + "id": "vp_oozleboard_nw", + "fg": 4049, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4049 + } + ] + }, + { + "id": "vp_gloopleboard_ne", + "fg": 4048, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4048 + } + ] + }, + { + "id": "vp_grayboard_ne", + "fg": 4048, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4048 + } + ] + }, + { + "id": "vp_halfgloopleboard_ne", + "fg": 4048, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4048 + } + ] + }, + { + "id": "vp_halfgrayboard_ne", + "fg": 4048, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4048 + } + ] + }, + { + "id": "vp_halfoozleboard_ne", + "fg": 4048, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4048 + } + ] + }, + { + "id": "vp_oozleboard_ne", + "fg": 4048, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4048 + } + ] + }, + { + "id": "vp_gloopleboard_sw", + "fg": 4051, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4051 + } + ] + }, + { + "id": "vp_halfgloopleboard_sw", + "fg": 4051, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4051 + } + ] + }, + { + "id": "vp_halfgrayboard_sw", + "fg": 4051, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4051 + } + ] + }, + { + "id": "vp_halfoozleboard_sw", + "fg": 4051, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4051 + } + ] + }, + { + "id": "vp_oozleboard_sw", + "fg": 4051, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4051 + } + ] + }, + { + "id": "vp_gloopleboard_se", + "fg": 4050, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4050 + } + ] + }, + { + "id": "vp_grayboard_se", + "fg": 4050, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4050 + } + ] + }, + { + "id": "vp_halfgloopleboard_se", + "fg": 4050, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4050 + } + ] + }, + { + "id": "vp_halfgrayboard_se", + "fg": 4050, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4050 + } + ] + }, + { + "id": "vp_halfoozleboard_se", + "fg": 4050, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4050 + } + ] + }, + { + "id": "vp_oozleboard_se", + "fg": 4050, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4050 + } + ] + }, + { + "id": "vp_gloopleboard_vertical", + "fg": 4052, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4052 + } + ] + }, + { + "id": "vp_grayboard_vertical", + "fg": 4052, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4052 + } + ] + }, + { + "id": "vp_halfgloopleboard_vertical", + "fg": 4052, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4052 + } + ] + }, + { + "id": "vp_halfgloopleboard_vertical_2", + "fg": 4052, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4052 + } + ] + }, + { + "id": "vp_halfgrayboard_vertical", + "fg": 4052, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4052 + } + ] + }, + { + "id": "vp_halfgrayboard_vertical_2", + "fg": 4052, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4052 + } + ] + }, + { + "id": "vp_halfoozleboard_vertical", + "fg": 4052, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4052 + } + ] + }, + { + "id": "vp_halfoozleboard_vertical_2", + "fg": 4052, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4052 + } + ] + }, + { + "id": "vp_oozleboard_vertical", + "fg": 4052, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4052 + } + ] + }, + { + "id": "vp_hdboard_horizontal", + "fg": 4075, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4075 + } + ] + }, + { + "id": "vp_hdhalfboard_vertical_2", + "fg": 4075, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4075 + } + ] + }, + { + "id": "vp_hdhalfboard_horizontal_2", + "fg": 4075, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4075 + } + ] + }, + { + "id": "vp_hdhalfboard_horizontal", + "fg": 4075, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4075 + } + ] + }, + { + "id": "vp_hdboard_ne", + "fg": 4076, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4076 + } + ] + }, + { + "id": "vp_hdboard_nw", + "fg": 4077, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4077 + } + ] + }, + { + "id": "vp_hdboard_se", + "fg": 4078, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4078 + } + ] + }, + { + "id": "vp_hdhalfboard_se", + "fg": 4078, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4078 + } + ] + }, + { + "id": "vp_hdboard_sw", + "fg": 4079, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4079 + } + ] + }, + { + "id": "vp_hdhalfboard_sw", + "fg": 4079, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4079 + } + ] + }, + { + "id": "vp_hdboard_vertical", + "fg": 4080, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4080 + } + ] + }, + { + "id": "vp_hdhalfboard_vertical", + "fg": 4080, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4080 + } + ] + }, + { + "id": "vp_hdhatch_opaque", + "fg": 4093, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4093 + }, + { + "id": "open", + "fg": 4094 + } + ] + }, + { + "id": "vp_hdframe_cover", + "fg": 4081, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4081 + } + ] + }, + { + "id": "vp_hdhalfboard_ne", + "fg": 4090, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4090 + } + ] + }, + { + "id": "vp_hdhalfboard_nw", + "fg": 4091, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4091 + } + ] + }, + { + "id": "vp_hdhatch", + "fg": 4092, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4092 + }, + { + "id": "open", + "fg": 4094 + } + ] + }, + { + "id": "vp_cloth_halfboard_horizontal", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_cloth_halfboard_horizontal_2", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_cloth_halfboard_ne", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_cloth_halfboard_nw", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_cloth_halfboard_se", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_cloth_halfboard_sw", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_cloth_halfboard_vertical", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_cloth_halfboard_vertical_2", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_clothboard_horizontal", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_clothboard_ne", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_clothboard_nw", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_clothboard_se", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_clothboard_sw", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_clothboard_vertical", + "fg": 3989, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 3989 + } + ] + }, + { + "id": "vp_flamethrower", + "fg": 4020, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4020 + } + ] + }, + { + "id": "vp_frame_cover", + "fg": 4171, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4171 + } + ] + }, + { + "id": "vp_frame_handle", + "fg": 4023, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4023 + } + ] + }, + { + "id": "vp_frame_wood_cover", + "fg": 4032, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4032 + } + ] + }, + { + "id": "vp_frame_wood_handle", + "fg": 4033, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4033 + } + ] + }, + { + "id": "vp_frame_wood_light_cover", + "fg": 4032, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4032 + } + ] + }, + { + "id": "vp_frame_wood_light_handle", + "fg": 4033, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4033 + } + ] + }, + { + "id": "vp_funnel", + "fg": 4045, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4045 + } + ] + }, + { + "id": "vp_fusion_gun", + "fg": 4046, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4046 + } + ] + }, + { + "id": "vp_leather_funnel", + "fg": 4045, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4045 + } + ] + }, + { + "id": "vp_m249", + "fg": 4104, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4104 + } + ] + }, + { + "id": "vp_makeshift_funnel", + "fg": 4045, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4045 + } + ] + }, + { + "id": "vp_metal_funnel", + "fg": 4045, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4045 + } + ] + }, + { + "id": "vp_metal_wheel", + "fg": 4184, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4184 + } + ] + }, + { + "id": ["vp_l_lmg_223", "vp_l_lmg_223nc"], + "fg": 4106, + "rotates": true + }, + { + "id": ["vp_m107a1", "vp_m107a1nc"], + "fg": 4106, + "rotates": true + }, { + "id": ["vp_m60", "vp_m60nc"], + "fg": 4105, + "rotates": true + }, + { + "id": ["vp_m2browning_sawn", "vp_m2browning_sawnnc"], + "fg": 4107, + "rotates": true + }, + { + "id": "vp_mounted_abzats", + "fg": 4106, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4106 + } + ] + }, + { + "id": "vp_mounted_browning", + "fg": 4107, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4107 + } + ] + }, + { + "id": "vp_mounted_m134", + "fg": 4108, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4108 + } + ] + }, + { + "id": ["vp_aneedler", "vp_aneedlernc"], + "fg": 4109, + "rotates": true + }, + { + "id": "vp_auto_m134", + "fg": 4108, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4108 + } + ] + }, + { + "id": ["vp_mounted_rm298", "vp_auto_rm298"], + "fg": 4107, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4107 + } + ] + }, + { + "id": ["vp_mounted_rm614", "vp_auto_rm614"], + "fg": 4104, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4104 + } + ] + }, + { + "id": ["vp_mounted_mk19", "vp_auto_mk19"], + "fg": 4110, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4110 + } + ] + }, + { + "id": ["vp_mounted_abzats", "vp_auto_abzats"], + "fg": 4106, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4106 + } + ] + }, + { + "id": ["vp_calico", "vp_TDI", "vp_TDInc", "vp_acr", "vp_acrnc", "vp_ak47", "vp_ak74", "vp_american_180", "vp_american_180nc", "vp_an94", "vp_ar15", "vp_ar15nc", "vp_auto_m1918", "vp_bigun", "vp_bigunnc", "vp_browning_blr", "vp_caliconc", "vp_carbine_flintlock", "vp_carbine_flintlocknc", "vp_coilgun", "vp_coilgunnc", "vp_cx4", "vp_cx4nc", "vp_fn_fal", "vp_fn_falnc", "vp_fn_p90", "vp_h&k416a5", "vp_h&k416a5nc", "vp_heavy_rail_rifle", "vp_hk_g3", "vp_hk_g36", "vp_hk_g36nc", "vp_hk_g3nc", "vp_hk_g80", "vp_hk_mp5", "vp_hk_mp5nc", "vp_hk_mp7", "vp_hk_ump45", "vp_hk_ump45nc", "vp_ksg", "vp_ksgnc", "vp_l_base_223", "vp_l_base_223nc", "vp_l_car_223", "vp_l_car_223nc", "vp_l_def_12", "vp_l_def_12nc", "vp_l_dsr_223", "vp_l_dsr_223nc", "vp_l_long_45", "vp_l_long_45nc", "vp_l_mbr_223", "vp_l_mbr_223nc", "vp_m1014", "vp_m1014nc", "vp_m14ebr", "vp_m14ebrnc", "vp_m1a", "vp_m1anc", "vp_m2010", "vp_m27iar", "vp_m27iarnc", "vp_m4a1", "vp_m4a1nc", "vp_mac_10", "vp_mac_10nc", "vp_marlin_9a", "vp_marlin_9anc", "vp_mossberg_500", "vp_mossberg_500nc", "vp_nailrifle", "vp_nailriflenc", "vp_needlegun", "vp_pipe_double_shotgun", "vp_pipe_double_shotgunnc", "vp_pipe_shotgun", "vp_pipe_shotgunnc", "vp_rebar_rifle", "vp_remington_700", "vp_remington_870", "vp_remington_870nc", "vp_revolver_shotgun", "vp_revolver_shotgunnc", "vp_rifle_22", "vp_rifle_22nc", "vp_rifle_308", "vp_rifle_308nc", "vp_rifle_9mm", "vp_rifle_9mmnc", "vp_rifle_flintlock", "vp_rifle_flintlocknc", "vp_rm11b_sniper_rifle", "vp_rm2000_smg", "vp_rm360_carbine", "vp_rm360_carbinenc", "vp_rm51_assault_rifle", "vp_rm614_lmg", "vp_rm88_battle_rifle", "vp_ruger_1022", "vp_ruger_1022nc", "vp_ruger_mini", "vp_ruger_mininc", "vp_saiga_12", "vp_saiga_12nc", "vp_savage_111f", "vp_savage_111fnc", "vp_scar_h", "vp_scar_hnc", "vp_scar_l", "vp_scar_lnc", "vp_shotgun_d", "vp_shotgun_dnc", "vp_shotgun_s", "vp_shotgun_snc", "vp_sks", "vp_steyr_aug", "vp_steyr_augnc", "vp_surv_carbine_223", "vp_surv_carbine_223nc", "vp_survivor_special_700", "vp_tec9", "vp_tec9nc", "vp_uzi", "vp_uzinc", "vp_v29", "vp_v29_cheap"], + "fg": 4109, + "rotates": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4109 + } + ] + }, + { + "id": "vp_mounted_m1918", + "fg": 4109, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4109 + } + ] + }, + { + "id": "vp_mounted_m240", + "fg": 4104, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4104 + } + ] + }, + { + "id": "vp_mounted_m60", + "fg": 4104, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4104 + } + ] + }, + { + "id": "vp_mounted_mk19", + "fg": 4110, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4110 + } + ] + }, + { + "id": "vp_surv_full_12_t", + "fg": 4110, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4110 + } + ] + }, + { + "id": "vp_surv_full_223_t", + "fg": 4110, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4110 + } + ] + }, + { + "id": "vp_surv_full_308_t", + "fg": 4110, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4110 + } + ] + }, + { + "id": "vp_surv_full_762_t", + "fg": 4110, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4110 + } + ] + }, + { + "id": "vp_surv_lmg_223_t", + "fg": 4110, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4110 + } + ] + }, + { + "id": "vp_surv_lmg_308_t", + "fg": 4110, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4110 + } + ] + }, + { + "id": "vp_surv_lmg_762_t", + "fg": 4110, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4110 + } + ] + }, + { + "id": "vp_mounted_rm298", + "fg": 4107, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4107 + } + ] + }, + { + "id": "vp_mounted_rm614", + "fg": 4104, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4104 + } + ] + }, + { + "id": "vp_omnicam", + "fg": 4112, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4112 + } + ] + }, + { + "id": "vp_roller_drum", + "fg": 4132, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4132 + } + ] + }, + { + "id": "vp_stowboard_horizontal", + "fg": 4146, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4146 + } + ] + }, + { + "id": "vp_stowboard_vertical", + "fg": 4147, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4147 + } + ] + }, + { + "id": "vp_trunk_floor", + "fg": 4150, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4150 + } + ] + }, + { + "id": "vp_water_purifier", + "fg": 4155, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4155 + } + ] + }, + { + "id": "vp_wheel_armor", + "fg": 4184, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4184 + } + ] + }, + { + "id": "vp_wheel_armor_steerable", + "fg": 4184, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4184 + } + ] + }, + { + "id": "vp_wheel_wide", + "fg": 4189, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4189 + } + ] + }, + { + "id": "vp_wheel_wide_steerable", + "fg": 4189, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4189 + } + ] + }, + { + "id": "vp_woodboard_horizontal", + "fg": 4163, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4163 + } + ] + }, + { + "id": "vp_woodboard_ne", + "fg": 4164, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4164 + } + ] + }, + { + "id": "vp_woodboard_nw", + "fg": 4165, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4165 + } + ] + }, + { + "id": "vp_woodboard_se", + "fg": 4166, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4166 + } + ] + }, + { + "id": "vp_woodboard_sw", + "fg": 4167, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4167 + } + ] + }, + { + "id": "vp_woodboard_vertical", + "fg": 4168, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4168 + } + ] + }, + { + "id": "vp_woodhalfboard_horizontal", + "fg": 4163, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4163 + } + ] + }, + { + "id": "vp_woodhalfboard_horizontal_2", + "fg": 4163, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4163 + } + ] + }, + { + "id": "vp_woodhalfboard_ne", + "fg": 4164, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4164 + } + ] + }, + { + "id": "vp_woodhalfboard_nw", + "fg": 4165, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4165 + } + ] + }, + { + "id": "vp_woodhalfboard_se", + "fg": 4166, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4166 + } + ] + }, + { + "id": "vp_woodhalfboard_sw", + "fg": 4167, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4167 + } + ] + }, + { + "id": "vp_woodhalfboard_vertical", + "fg": 4168, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 3987, + "bg": 4168 + } + ] + }, + { + "id": "chemlab", + "fg": 3988, + "rotates": false + }, + { + "id": "vp_clutter", + "fg": 3990, + "rotates": true + }, + { + "id": "vp_fuzzle", + "fg": 3990, + "rotates": true + }, + { + "id": "vp_stickie", + "fg": 3990, + "rotates": true + }, + { + "id": "vp_meltie", + "fg": 3990, + "rotates": true + }, + { + "id": "cantilever_medium", + "fg": 3991 + }, + { + "id": "cantilever_small", + "fg": 3991 + }, + { + "id": "vp_dboard_horizontal", + "fg": 3992, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 3992 + } + ] + }, + { + "id": "vp_dboard_ne", + "fg": 3993, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 3993 + } + ] + }, + { + "id": "vp_dboard_nw", + "fg": 3994, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 3994 + } + ] + }, + { + "id": "vp_dboard_se", + "fg": 3995, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 3995 + } + ] + }, + { + "id": "vp_dboard_sw", + "fg": 3996, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 3996 + } + ] + }, + { + "id": "vp_dboard_vertical", + "fg": 3997, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 3997 + } + ] + }, + { + "id": "vp_dframe_cover", + "fg": 3998, + "rotates": true + }, + { + "id": "vp_dframe_cross", + "fg": 3999, + "rotates": true + }, + { + "id": "vp_dframe_horizontal", + "fg": 3999, + "rotates": true + }, + { + "id": "vp_dframe_vertical", + "fg": 3999, + "rotates": true + }, + { + "id": "diamondframe", + "fg": 3999 + }, + { + "id": "diamondplate", + "fg": 3999 + }, + { + "id": "vp_dframe_ne", + "fg": 4000, + "rotates": true + }, + { + "id": "vp_dframe_nw", + "fg": 4000, + "rotates": true + }, + { + "id": "vp_dframe_se", + "fg": 4000, + "rotates": true + }, + { + "id": "vp_dframe_sw", + "fg": 4000, + "rotates": true + }, + { + "id": "vp_dframe_vertical_2", + "fg": 4000, + "rotates": true + }, + { + "id": "vp_dframe_horizontal_2", + "fg": 4000, + "rotates": true + }, + { + "id": "vp_door", + "fg": 4001, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4002 + }, + { + "id": "open", + "fg": 4008 + } + ] + }, + { + "id": "vp_door_internal", + "fg": 4003, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4004 + }, + { + "id": "open", + "fg": 4005 + } + ] + }, + { + "id": "vp_fdoor", + "fg": 4004, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "open", + "fg": 4005 + }, + { + "id": "broken", + "fg": 4019 + } + ] + }, + { + "id": "vp_door_opaque", + "fg": 4006, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "open", + "fg": 4007 + }, + { + "id": "broken", + "fg": 4019 + } + ] + }, + { + "id": "vp_door_shutter", + "fg": 4009, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4010 + }, + { + "id": "open", + "fg": 4011 + } + ] + }, + { + "id": "vp_hatch_opaque", + "fg": 4074, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4010 + }, + { + "id": "open", + "fg": 4011 + } + ] + }, + { + "id": "vp_door_trunk", + "fg": 4074, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4010 + }, + { + "id": "open", + "fg": 4014 + } + ] + }, + { + "id": "vp_hatch", + "fg": 4074, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4010 + }, + { + "id": "open", + "fg": 4014 + } + ] + }, + { + "id": "vp_door_sliding", + "fg": 4012, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "open", + "fg": 4013 + }, + { + "id": "broken", + "fg": 4019 + } + ] + }, + { + "id": "t_door_c_peep", + "fg": 4015, + "rotates": false + }, + { + "id": "t_door_locked_peep", + "fg": 4015 + }, + { + "id": "t_door_b_peep", + "fg": 4016, + "rotates": false + }, + { + "id": "t_door_c", + "fg": 4017, + "rotates": false + }, + { + "id": "t_door_locked", + "fg": 4017, + "rotates": false + }, + { + "id": "t_door_locked_alarm", + "fg": 4017, + "rotates": false + }, + { + "id": "t_door_locked_interior", + "fg": 4017, + "rotates": false + }, + { + "id": "t_door_b", + "fg": 4018, + "rotates": false + }, + { + "id": "vp_flamethrower1", + "fg": 4020, + "rotates": true + }, + { + "id": "vp_flamethrower2", + "fg": 4020, + "rotates": true + }, + { + "id": "vp_flamethrower3", + "fg": 4020, + "rotates": true + }, + { + "id": "vp_mflamethrower1", + "fg": 4020, + "rotates": true + }, + { + "id": "vp_mflamethrower3", + "fg": 4020, + "rotates": true + }, + { + "id": "vp_forklift_fork", + "fg": 4022, + "rotates": true + }, + { + "id": "vp_frame_horizontal", + "fg": 4024, + "rotates": true + }, + { + "id": "vp_folding_frame", + "fg": 4024, + "rotates": true + }, + { + "id": "vp_frame_horizontal_2", + "fg": 4025, + "rotates": true + }, + { + "id": "foldframe", + "fg": 4025 + }, + { + "id": "vp_frame_ne", + "fg": 4026, + "rotates": true + }, + { + "id": "vp_frame_nw", + "fg": 4027, + "rotates": true + }, + { + "id": "vp_frame_se", + "fg": 4028, + "rotates": true + }, + { + "id": "vp_frame_sw", + "fg": 4029, + "rotates": true + }, + { + "id": "vp_frame_vertical", + "fg": 4030, + "rotates": true + }, + { + "id": "vp_frame_vertical_2", + "fg": 4031, + "rotates": true + }, + { + "id": "vp_frame_wood_horizontal", + "fg": 4034, + "rotates": true + }, + { + "id": "vp_frame_wood_light_horizontal", + "fg": 4034, + "rotates": true + }, + { + "id": "vp_frame_wood_horizontal_2", + "fg": 4035, + "rotates": true + }, + { + "id": "vp_frame_wood_light_horizontal_2", + "fg": 4035, + "rotates": true + }, + { + "id": "foldwoodframe", + "fg": 4035 + }, + { + "id": "vp_frame_wood_ne", + "fg": 4036, + "rotates": true + }, + { + "id": "vp_frame_wood_light_ne", + "fg": 4036, + "rotates": true + }, + { + "id": "vp_frame_wood_nw", + "fg": 4037, + "rotates": true + }, + { + "id": "vp_frame_wood_light_nw", + "fg": 4037, + "rotates": true + }, + { + "id": "vp_frame_wood_se", + "fg": 4038, + "rotates": true + }, + { + "id": "vp_frame_wood_light_se", + "fg": 4038, + "rotates": true + }, + { + "id": "vp_frame_wood_sw", + "fg": 4039, + "rotates": true + }, + { + "id": "vp_frame_wood_light_sw", + "fg": 4039, + "rotates": true + }, + { + "id": "vp_frame_wood_vertical", + "fg": 4040, + "rotates": true + }, + { + "id": "vp_frame_wood_light_vertical", + "fg": 4040, + "rotates": true + }, + { + "id": "vp_freezie", + "fg": 4041, + "rotates": true + }, + { + "id": "vp_frostie_ram", + "fg": 4042, + "rotates": true + }, + { + "id": "vp_frostie_trunk", + "fg": 4043, + "rotates": false + }, + { + "id": "vp_frostie_wheel", + "fg": 4044, + "rotates": true + }, + { + "id": "vp_frostie_wheel_sea", + "fg": 4044, + "rotates": true + }, + { + "id": "vp_40mmturret", + "fg": 4046 + }, + { + "id": "vp_launcher_simple", + "fg": 4046, + "rotates": true + }, + { + "id": "vp_afusion_gun", + "fg": 4046, + "rotates": true + }, + { + "id": "vp_gloople_amalgam", + "fg": 4055, + "rotates": false + }, + { + "id": "vp_gray_amalgam", + "fg": 4055, + "rotates": false + }, + { + "id": "vp_oozle_amalgam", + "fg": 4055, + "rotates": false + }, + { + "id": "oozle_nom", + "fg": 4055, + "rotates": false + }, + { + "id": "vp_oozle_nom", + "fg": 4055, + "rotates": false + }, + { + "id": "vp_gloople_cross", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gloople_horizontal", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gloople_horizontal_2", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gloople_ne", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gloople_nw", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gloople_se", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gloople_sw", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gloople_vertical", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gray_cross", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gray_horizontal", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gray_horizontal_2", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gray_ne", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gray_nw", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gray_se", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gray_sw", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gray_vertical", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_oozle_cross", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_oozle_horizontal", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_oozle_horizontal_2", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_oozle_ne", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_oozle_nw", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_oozle_se", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_oozle_sw", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_oozle_vertical", + "fg": 4056, + "rotates": true + }, + { + "id": "vp_gloople_diesel_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gloople_diesel_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gloople_feed_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gloople_feed_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gloople_gas_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gloople_gas_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gloople_water_dirty_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gloople_water_dirty_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gloople_water_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gloople_water_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gray_diesel_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gray_diesel_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gray_feed_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gray_feed_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gray_gas_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gray_gas_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gray_water_dirty_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gray_water_dirty_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gray_water_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gray_water_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_oozle_diesel_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "oozle_box", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_oozle_diesel_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_oozle_feed_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_oozle_feed_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_oozle_gas_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_oozle_gas_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_oozle_water_dirty_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_oozle_water_dirty_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_oozle_water_tank", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_oozle_water_tank_u", + "fg": 4057, + "rotates": true + }, + { + "id": "vp_gloople_trunk", + "fg": 4058, + "rotates": false + }, + { + "id": "vp_gloople_trunk_u", + "fg": 4058, + "rotates": false + }, + { + "id": "vp_gray_trunk", + "fg": 4058, + "rotates": false + }, + { + "id": "vp_gray_trunk_u", + "fg": 4058, + "rotates": false + }, + { + "id": "vp_oozle_trunk", + "fg": 4058, + "rotates": false + }, + { + "id": "vp_oozle_trunk_u", + "fg": 4058 + }, + { + "id": "vp_gloople_wheel", + "fg": 4059, + "rotates": true + }, + { + "id": "vp_oozle_wheel", + "fg": 4059, + "rotates": true + }, + { + "id": "gloople_wheel", + "fg": 4059 + }, + { + "id": "oozle_wheel", + "fg": 4059 + }, + { + "id": "vp_glowie_battery", + "fg": 4060, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 4060 + } + ] + }, + { + "id": "vp_glowie_battery_u", + "fg": 4060, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 4060 + } + ] + }, + { + "id": "vp_glowie_power", + "fg": 4060, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 4060 + } + ] + }, + { + "id": "vp_gray_wheel", + "fg": 4061, + "rotates": true + }, + { + "id": "vp_grinder", + "fg": 4061, + "rotates": true + }, + { + "id": "gray_wheel", + "fg": 4061 + }, + { + "id": "grinder", + "fg": 4061 + }, + { + "id": "vp_halfboard_ne", + "fg": 4065, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4066 + } + ] + }, + { + "id": "vp_xlhalfboard_ne", + "fg": 4065, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 4066 + } + ] + }, + { + "id": "vp_halfboard_nw", + "fg": 4067, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4068 + } + ] + }, + { + "id": "vp_xlhalfboard_nw", + "fg": 4067, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "bg": 4068 + } + ] + }, + { + "id": "vp_halfboard_vertical_2", + "fg": 4181, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4072 + } + ] + }, + { + "id": "vp_hand_paddles", + "fg": 4073, + "rotates": true + }, + { + "id": "vp_hdframe_horizontal", + "fg": 4082, + "rotates": true + }, + { + "id": "vp_hdframe_horizontal_2", + "fg": 4083, + "rotates": true + }, + { + "id": "vp_hdframe_ne", + "fg": 4084, + "rotates": true + }, + { + "id": "vp_hdframe_nw", + "fg": 4085, + "rotates": true + }, + { + "id": "vp_hdframe_se", + "fg": 4086, + "rotates": true + }, + { + "id": "vp_hdframe_sw", + "fg": 4087, + "rotates": true + }, + { + "id": "vp_hdframe_vertical", + "fg": 4088, + "rotates": true + }, + { + "id": "vp_hdframe_vertical_2", + "fg": 4089, + "rotates": true + }, + { + "id": "vp_hdroof", + "fg": 4095, + "rotates": true + }, + { + "id": "vp_roof", + "fg": 4095, + "rotates": true + }, + { + "id": "vp_inflatable_section", + "fg": 4096, + "rotates": true + }, + { + "id": "vp_inflatable_airbag", + "fg": 4096, + "rotates": true + }, + { + "id": "vp_inkie", + "fg": 4097, + "rotates": true + }, + { + "id": "vp_torchie", + "fg": 4097, + "rotates": true + }, + { + "id": "kitchen_unit", + "fg": 4098, + "rotates": false + }, + { + "id": ["vp_laser_gun", "vp_laser_lmg_t", "vp_laser_lmg_t", "vp_shockcannon_mounted", "vp_sur_pnu_lmg_t"], + "fg": 4099, + "rotates": true + }, + { + "id": "vp_laser_rifle", + "fg": 4099, + "rotates": true + }, + { + "id": "vp_ups_rifle_t", + "fg": 4099, + "rotates": true + }, + { + "id": "vp_alaser_gunp", + "fg": 4099, + "rotates": true + }, + { + "id": "vp_alasgun", + "fg": 4099, + "rotates": true + }, + { + "id": "vp_alasgunp", + "fg": 4099, + "rotates": true + }, + { + "id": "vp_laser_gunp", + "fg": 4099, + "rotates": true + }, + { + "id": "vp_lasgun", + "fg": 4099, + "rotates": true + }, + { + "id": "vp_light_blue", + "fg": 4100, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4101 + } + ] + }, + { + "id": "vp_light_red", + "fg": 4102, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4101 + } + ] + }, + { + "id": "vp_lit_aisle_horizontal", + "fg": 4103, + "rotates": true + }, + { + "id": "vp_lit_aisle_vertical", + "fg": 4103, + "rotates": true + }, + { + "id": "vp_aisle_lights", + "fg": 4103, + "rotates": true + }, + { + "id": "vp_scorpion", + "fg": 4104, + "rotates": true + }, + { + "id": "vp_am249", + "fg": 4104, + "rotates": true + }, + { + "id": "vp_auto_m240", + "fg": 4104, + "rotates": true + }, + { + "id": "vp_auto_m60", + "fg": 4104, + "rotates": true + }, + { + "id": "vp_m240", + "fg": 4104, + "rotates": true + }, + { + "id": "vp_m60", + "fg": 4105, + "rotates": true + }, + { + "id": "vp_50turret", + "fg": 4106 + }, + { + "id": "vp_ashardgun", + "fg": 4106, + "rotates": true + }, + { + "id": "ashardgun", + "fg": 4106, + "rotates": true + }, + { + "id": "vp_l_lmg_223", + "fg": 4106, + "rotates": true + }, + { + "id": "vp_m107a1", + "fg": 4106, + "rotates": true + }, + { + "id": "vp_mounted rm298", + "fg": 4106, + "rotates": true + }, + { + "id": "vp_mounted rm614_lmg", + "fg": 4106, + "rotates": true + }, + { + "id": "vp_rm802", + "fg": 4106, + "rotates": true + }, + { + "id": "vp_shardgun", + "fg": 4106, + "rotates": true + }, + { + "id": "shardgun", + "fg": 4106, + "rotates": true + }, + { + "id": "vp_shottyman", + "fg": 4106, + "rotates": true + }, + { + "id": "vp_ashardgunnc", + "fg": 4106, + "rotates": true + }, + { + "id": "vp_am2browning", + "fg": 4107, + "rotates": true + }, + { + "id": "vp_arm298", + "fg": 4107, + "rotates": true + }, + { + "id": "vp_m2browning_sawn", + "fg": 4107, + "rotates": true + }, + { + "id": "vp_agattler1", + "fg": 4108, + "rotates": true + }, + { + "id": "vp_gattler1", + "fg": 4108, + "rotates": true + }, + { + "id": "vp_rslauncher", + "fg": 4108, + "rotates": true + }, + { + "id": "rslauncher", + "fg": 4108, + "rotates": true + }, + { + "id": "vp_agattler1nc", + "fg": 4108, + "rotates": true + }, + { + "id": "vp_aneedler", + "fg": 4109, + "rotates": true + }, + { + "id": "vp_anailer", + "fg": 4109, + "rotates": true + }, + { + "id": "vp_nailer", + "fg": 4109, + "rotates": true + }, + { + "id": "nailer", + "fg": 4109, + "rotates": true + }, + { + "id": "vp_needler", + "fg": 4109, + "rotates": true + }, + { + "id": "needler", + "fg": 4109, + "rotates": true + }, + { + "id": ["vp_slauncher", "vp_slaunchernc"], + "fg": 4109, + "rotates": true + }, + { + "id": "slauncher", + "fg": 4109, + "rotates": true + }, + { + "id": "vp_anailernc", + "fg": 4109, + "rotates": true + }, + { + "id": "vp_diamondlance", + "fg": 4109, + "rotates": true + }, + { + "id": "vp_diamondnova", + "fg": 4109, + "rotates": true + }, + { + "id": "vp_mounted_30mm_autocannon", + "fg": 4110, + "rotates": true + }, + { + "id": "vp_ascorpion", + "fg": 4110, + "rotates": true + }, + { + "id": "vp_m320", + "fg": 4110, + "rotates": true + }, + { + "id": "vp_m79", + "fg": 4110, + "rotates": true + }, + { + "id": "vp_mgl", + "fg": 4110, + "rotates": true + }, + { + "id": "vp_SMG22", + "fg": 4110, + "rotates": true + }, + { + "id": "vp_SMG45", + "fg": 4110, + "rotates": true + }, + { + "id": "vp_SMG9mm", + "fg": 4110, + "rotates": true + }, + { + "id": "vp_ascorpionnc", + "fg": 4110, + "rotates": true + }, + { + "id": "vp_mounted_tank_manual", + "fg": 4111, + "rotates": true + }, + { + "id": "vp_mounted_tank_auto", + "fg": 4111, + "rotates": true + }, + { + "id": "vp_mounted_howitzer", + "fg": 4111, + "rotates": true + }, + { + "id": "vp_mounted_tank_105", + "fg": 4111, + "rotates": true + }, + { + "id": "vp_mounted_tank_rws", + "fg": 4111, + "rotates": true + }, + { + "id": "vp_tow_launcher", + "fg": 4111, + "rotates": true + }, + { + "id": "vp_tow_turret", + "fg": 4111, + "rotates": true + }, + { + "id": "vp_arailturret", + "fg": 4111, + "rotates": true + }, + { + "id": "vp_railturret", + "fg": 4111, + "rotates": true + }, + { + "id": "vp_oozle_vertical_2", + "fg": 4114, + "rotates": true + }, + { + "id": "vp_gray_vertical_2", + "fg": 4114, + "rotates": true + }, + { + "id": "vp_gloople_vertical_2", + "fg": 4114, + "rotates": true + }, + { + "id": "vp_plasma_gun", + "fg": 4115, + "rotates": true + }, + { + "id": "vp_alasgunx", + "fg": 4115, + "rotates": true + }, + { + "id": "vp_ateslagun", + "fg": 4115, + "rotates": true + }, + { + "id": "vp_lasgunp", + "fg": 4115, + "rotates": true + }, + { + "id": "vp_lasgunx", + "fg": 4115, + "rotates": true + }, + { + "id": "lasgunx", + "fg": 4115, + "rotates": true + }, + { + "id": "vp_teslagun", + "fg": 4115, + "rotates": true + }, + { + "id": "vp_aplasma_gun", + "fg": 4115, + "rotates": true + }, + { + "id": "vp_plow", + "fg": 4116, + "rotates": true + }, + { + "id": "v_planter_item", + "fg": 4116 + }, + { + "id": "v_planter_item_advanced", + "fg": 4116 + }, + { + "id": "v_plow_item", + "fg": 4116 + }, + { + "id": "vp_ram_alloy", + "fg": 4118, + "rotates": true + }, + { + "id": "vp_ram_military_horizontal", + "fg": 4119, + "rotates": true + }, + { + "id": "vp_ram_hardsteel", + "fg": 4119, + "rotates": true + }, + { + "id": "vp_ram_spiked", + "fg": 4120, + "rotates": true + }, + { + "id": "vp_ram_steel", + "fg": 4121, + "rotates": true + }, + { + "id": "vp_ram_wood", + "fg": 4122, + "rotates": true + }, + { + "id": "vp_reaper", + "fg": 4123, + "rotates": true + }, + { + "id": "v_reaper_item", + "fg": 4123 + }, + { + "id": "v_reaper_item_advanced", + "fg": 4123 + }, + { + "id": "vp_reaper_advanced", + "fg": 4123, + "rotates": true + }, + { + "id": "recharge_station", + "fg": 4124, + "rotates": false + }, + { + "id": ["vp_reinforced_solar_panel", "vp_xreinforced_solar_panel"], + "fg": 4125, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4126 + } + ] + }, + { + "id": "vp_solar_array", + "fg": 4125, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4126 + } + ] + }, + { + "id": ["solar_array", "solar_array2"], + "fg": 4125, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4126 + } + ] + }, + { + "id": ["vp_reinforced_solar_panel_v2", "vp_xreinforced_solar_panel_v2"], + "fg": 4127, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4128 + } + ] + }, + { + "id": "vp_reinforced_windshield", + "fg": 4129, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4130 + } + ] + }, + { + "id": "vp_robot_controls", + "fg": 4131, + "rotates": false + }, + { + "id": "hd_steel_drum", + "fg": 4132 + }, + { + "id": "vp_benginein", + "fg": 4132, + "rotates": true + }, + { + "id": "vp_bwheel", + "fg": 4132, + "rotates": true + }, + { + "id": "vp_saddle", + "fg": 4133, + "rotates": true + }, + { + "id": "seat", + "fg": 4134, + "rotates": false + }, + { + "id": "vp_seed_drill", + "fg": 4136, + "rotates": true + }, + { + "id": "vp_seed_drill_advanced", + "fg": 4136, + "rotates": true + }, + { + "id": ["vp_solar_panel", "vp_xsolar_panel"], + "fg": 4137, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4138 + } + ] + }, + { + "id": ["vp_solar_panel_v2", "vp_xsolar_panel_v2"], + "fg": 4139, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4140 + } + ] + }, + { + "id": ["vp_solar_panel_v3", "vp_xsolar_panel_v3"], + "fg": 4141, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4142 + } + ] + }, + { + "id": "vp_space_anomaly", + "fg": 4143, + "rotates": true + }, + { + "id": "space_anomaly", + "fg": 4143 + }, + { + "id": "vp_sparkie", + "fg": 4144, + "rotates": true + }, + { + "id": "vp_voideater", + "fg": 4144, + "rotates": true + }, + { + "id": "vp_spike", + "fg": 4145, + "rotates": true + }, + { + "id": "vp_spike_wood", + "fg": 4145, + "rotates": true + }, + { + "id": "vp_surv_station_t", + "fg": 4148, + "rotates": false + }, + { + "id": "surv_station", + "fg": 4148, + "rotates": false + }, + { + "id": "vp_tread1", + "fg": 4149, + "rotates": true + }, + { + "id": "vp_tread2", + "fg": 4149, + "rotates": true + }, + { + "id": "vp_tread3", + "fg": 4149, + "rotates": true + }, + { + "id": "tread1", + "fg": 4149 + }, + { + "id": "tread2", + "fg": 4149 + }, + { + "id": "tread3", + "fg": 4149 + }, + { + "id": "vp_turretframe", + "fg": 4151, + "rotates": true + }, + { + "id": "turretframe", + "fg": 4151, + "rotates": true + }, + { + "id": "vp_turret_mount", + "fg": 4151, + "rotates": true + }, + { + "id": "turret_mount", + "fg": 4151, + "rotates": true + }, + { + "id": "v_table", + "fg": 4153, + "rotates": false + }, + { + "id": "weldrig", + "fg": 4156, + "rotates": false + }, + { + "id": "vp_wheel_wood", + "fg": 4157, + "rotates": true + }, + { + "id": "wheel_wood", + "fg": 4157, + "rotates": true + }, + { + "id": "vp_wheel_wood_b", + "fg": 4158, + "rotates": true + }, + { + "id": "wheel_wood_b", + "fg": 4158, + "rotates": true + }, + { + "id": "vp_windshield", + "fg": 4159, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4160 + } + ] + }, + { + "id": "vp_frostie_wall", + "fg": 4159, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 4160 + } + ] + }, + { + "id": "vp_wing_mirror", + "fg": 4161, + "rotates": true + }, + { + "id": "vp_wiring", + "fg": 4162, + "rotates": true + }, + { + "id": "vp_fxlhalfboard_horizontal", + "fg": 4162, + "rotates": true + }, + { + "id": "vp_fxlhalfboard_horizontal_2", + "fg": 4162, + "rotates": true + }, + { + "id": "vp_fxlhalfboard_ne", + "fg": 4162, + "rotates": true + }, + { + "id": "vp_fxlhalfboard_nw", + "fg": 4162, + "rotates": true + }, + { + "id": "vp_fxlhalfboard_se", + "fg": 4162, + "rotates": true + }, + { + "id": "vp_fxlhalfboard_sw", + "fg": 4162, + "rotates": true + }, + { + "id": "vp_fxlhalfboard_vertical", + "fg": 4162, + "rotates": true + }, + { + "id": "vp_fxlhalfboard_vertical_2", + "fg": 4162, + "rotates": true + }, + { + "id": "vp_woodhalfboard_vertical_2", + "fg": 4168, + "rotates": true + }, + { + "id": "boat_board", + "fg": 4169, + "rotates": false + }, + { + "id": "f_bench", + "fg": 4170, + "rotates": true + }, + { + "id": "vp_xlframe_cross", + "fg": 4172, + "rotates": true + }, + { + "id": "xlframe", + "fg": 4172, + "rotates": true + }, + { + "id": "vp_xlframe_horizontal", + "fg": 4173, + "rotates": true + }, + { + "id": "vp_xlframe_horizontal_2", + "fg": 4174, + "rotates": true + }, + { + "id": "vp_xlframe_ne", + "fg": 4175, + "rotates": true + }, + { + "id": "vp_xlframe_nw", + "fg": 4176, + "rotates": true + }, + { + "id": "vp_xlframe_se", + "fg": 4177, + "rotates": true + }, + { + "id": "vp_xlframe_sw", + "fg": 4178, + "rotates": true + }, + { + "id": "vp_xlframe_vertical", + "fg": 4179, + "rotates": true + }, + { + "id": "vp_xlframe_vertical_2", + "fg": 4180, + "rotates": true + }, + { + "id": "inflatable_section", + "fg": 4182, + "rotates": false + }, + { + "id": "inflatable_airbag", + "fg": 4182, + "rotates": false + }, + { + "id": "vp_wheel", + "fg": 4183, + "rotates": true + }, + { + "id": "vp_wheel_steerable", + "fg": 4183, + "rotates": true + }, + { + "id": "wheel_metal", + "fg": 4184 + }, + { + "id": "vp_wheel_bicycle", + "fg": 4185, + "rotates": true + }, + { + "id": "vp_wheel_bicycle_steerable", + "fg": 4185, + "rotates": true + }, + { + "id": "vp_wheel_unicycle", + "fg": 4185, + "rotates": true + }, + { + "id": "vp_wheel_caster", + "fg": 4186, + "rotates": true + }, + { + "id": "vp_wheel_motorbike", + "fg": 4187, + "rotates": true + }, + { + "id": "vp_wheel_motorbike_steerable", + "fg": 4187, + "rotates": true + }, + { + "id": "vp_wheel_barrow", + "fg": 4187, + "rotates": true + }, + { + "id": "wheel_barrow", + "fg": 4187 + }, + { + "id": "vp_wheel_small", + "fg": 4188, + "rotates": true + }, + { + "id": "vp_wheel_small_steerable", + "fg": 4188, + "rotates": true + }, + { + "id": "mon_w11b10", + "fg": 4190, + "rotates": false + }, + { + "id": "mon_w11b20b4", + "fg": 4191, + "rotates": false + }, + { + "id": "mon_w12b10", + "fg": 4192, + "rotates": false + }, + { + "id": "mon_w11h10", + "fg": 4193, + "rotates": false + }, + { + "id": "mon_w12n10", + "fg": 4194, + "rotates": false + }, + { + "id": "mon_compsognathus", + "fg": 4195, + "rotates": false + }, + { + "id": "mon_gallimimus", + "fg": 4196, + "rotates": false + }, + { + "id": "mon_titanis", + "fg": 4197, + "rotates": false + }, + { + "id": "mon_eoraptor", + "fg": 4198, + "rotates": false + }, + { + "id": "mon_velociraptor", + "fg": 4199, + "rotates": false + }, + { + "id": "mon_deinonychus", + "fg": 4200, + "rotates": false + }, + { + "id": "mon_utahraptor_to_L", + "fg": 4201, + "rotates": false + }, + { + "id": "mon_dimorphodon", + "fg": 4202, + "rotates": false + }, + { + "id": "mon_dilophosaurus", + "fg": 4203, + "rotates": false + }, + { + "id": "mon_cult_churl", + "fg": 4204, + "rotates": false + }, + { + "id": "mon_cult_slave", + "fg": 4205, + "rotates": false + }, + { + "id": "mon_legion", + "fg": 4206, + "rotates": false + }, + { + "id": "mon_nuculais", + "fg": 4207, + "rotates": false + }, + { + "id": "mon_fish_eel_large", + "fg": 4208, + "rotates": false + }, + { + "id": "mon_fish_flying", + "fg": 4209, + "rotates": false + }, + { + "id": "mon_fish_lobster_giant", + "fg": 4210, + "rotates": false + }, + { + "id": "mon_thing_head", + "fg": 4211, + "rotates": false + }, + { + "id": "mon_thing_spider", + "fg": 4212, + "rotates": false + }, + { + "id": "mon_raphael", + "fg": 4213, + "rotates": false + }, + { + "id": "mon_donatello", + "fg": 4214, + "rotates": false + }, + { + "id": "mon_leonardo", + "fg": 4215, + "rotates": false + }, + { + "id": "mon_michelangelo", + "fg": 4216, + "rotates": false + }, + { + "id": "mon_ratman_ninja", + "fg": 4217, + "rotates": false + }, + { + "id": ["mon_deer_small", "mon_deer_fawn"], + "fg": 4218, + "rotates": false + }, + { + "id": "mon_deer_rutting", + "fg": 4219, + "rotates": false + }, + { + "id": "mon_horror_dusk", + "fg": 4220, + "rotates": false + }, + { + "id": "mon_horror_dusk_queen", + "fg": 4221, + "rotates": false + }, + { + "id": "mon_thing_swamp", + "fg": 4222, + "rotates": false + }, + { + "id": "mon_stemcell_nether", + "fg": 4223, + "rotates": false + }, + { + "id": "chili_pepper", + "fg": 1178, + "rotates": false + }, + { + "id": "mon_gull", + "fg": 4224, + "rotates": false + } + + ] + }, + { + "file": "2_expan_32x32_5200-5391.png", + "tiles": + [ + { + "id": "t_palisade", + "fg": 5201, + "bg": 5225, + "multitile": true, + "additional_tiles": [ + { + "fg": [ 5200, 5201], + "bg": 5225, + "id": "edge" + }, + { + "fg": 5202, + "bg": 5225, + "id": "center" + }, + { + "fg": [ 5203, 5204, 5205, 5206 ], + "bg": 5225, + "id": "corner" + }, + { + "fg": [ 5207, 5201, 5208, 5201], + "bg": 5225, + "id": "end_piece" + }, + { + "fg": [ 5209, 5210, 5211, 5212], + "bg": 5225, + "id": "t_connection" + }, + { + "fg": 5213, + "bg": 5225, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": "t_palisade_gate", + "fg": 5215, + "bg": 5225, + "multitile": true, + "additional_tiles": [ + { + "fg": [ 5214, 5215], + "bg": 5225, + "id": "edge" + }, + { + "fg": [ 5216, 5215, 5217, 5215], + "bg": 5225, + "id": "end_piece" + }, + { + "fg": [ 5215, 5214, 5215, 5214], + "bg": 5225, + "id": "t_connection" + }, + { + "fg": 5215, + "bg": 5225, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_palisade_gate_o", + "fg": 5223, + "bg": 5225, + "multitile": true, + "additional_tiles": [ + { + "fg": [ 5218, 5223], + "bg": 5225, + "id": "edge" + }, + { + "fg": 5219, + "bg": 5225, + "id": "center" + }, + { + "fg": [ 5220, 5221, 5224, 5222], + "bg": 5225, + "id": "corner" + }, + { + "fg": [ 5222, 5223, 5224, 5223], + "bg": 5225, + "id": "end_piece" + }, + { + "fg": [ 5220, 5219, 5221, 5218], + "bg": 5225, + "id": "t_connection" + }, + { + "fg": 5223, + "bg": 5225, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": "t_palisade_gate_o_season_winter", + "fg": 5223, + "bg": 5226, + "multitile": true, + "additional_tiles": [ + { + "fg": [ 5218, 5223], + "bg": 5226, + "id": "edge" + }, + { + "fg": 5219, + "bg": 5226, + "id": "center" + }, + { + "fg": [ 5220, 5221, 5224, 5222], + "bg": 5226, + "id": "corner" + }, + { + "fg": [ 5222, 5223, 5224, 5223], + "bg": 5226, + "id": "end_piece" + }, + { + "fg": [ 5220, 5219, 5221, 5218], + "bg": 5226, + "id": "t_connection" + }, + { + "fg": 5223, + "bg": 5226, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": "t_palisade_gate_season_winter", + "fg": 5215, + "bg": 5226, + "multitile": true, + "additional_tiles": [ + { + "fg": [ 5214, 5215], + "bg": 5226, + "id": "edge" + }, + { + "fg": [ 5216, 5215, 5217, 5215], + "bg": 5226, + "id": "end_piece" + }, + { + "fg": [ 5215, 5214, 5215, 5214], + "bg": 5226, + "id": "t_connection" + }, + { + "fg": 5215, + "bg": 5226, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_palisade_season_winter", + "fg": 5201, + "bg": 5226, + "multitile": true, + "additional_tiles": [ + { + "fg": [ 5200, 5201], + "bg": 5226, + "id": "edge" + }, + { + "fg": 5202, + "bg": 5226, + "id": "center" + }, + { + "fg": [ 5203, 5204, 5205, 5206 ], + "bg": 5226, + "id": "corner" + }, + { + "fg": [ 5207, 5201, 5208, 5201], + "bg": 5226, + "id": "end_piece" + }, + { + "fg": [ 5209, 5210, 5211, 5212], + "bg": 5226, + "id": "t_connection" + }, + { + "fg": 5213, + "bg": 5226, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": "t_pit_corpsed", + "fg": 3151, + "bg": 5225, + "multitile": true, + "additional_tiles": [ + { + "fg": [ 3151, 3151], + "bg": 5225, + "id": "edge" + }, + { + "fg": 5234, + "bg": 5225, + "id": "center" + }, + { + "fg": [ 5227, 5228, 5229, 5230 ], + "bg": 5225, + "id": "corner" + }, + { + "fg": [ 3151, 3151, 3151, 3151], + "bg": 5225, + "id": "end_piece" + }, + { + "fg": [ 5231, 5232, 5232, 5233], + "bg": 5225, + "id": "t_connection" + }, + { + "fg": 3151, + "bg": 5225, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_pit_corpsed_season_winter", + "fg": 3152, + "bg": 5226, + "multitile": true, + "additional_tiles": [ + { + "fg": [ 3152, 3152], + "bg": 5226, + "id": "edge" + }, + { + "fg": 5234, + "bg": 5226, + "id": "center" + }, + { + "fg": [ 5227, 5228, 5229, 5230 ], + "bg": 5226, + "id": "corner" + }, + { + "fg": [ 3152, 3152, 3152, 3152], + "bg": 5226, + "id": "end_piece" + }, + { + "fg": [ 5231, 5232, 5232, 5233], + "bg": 5226, + "id": "t_connection" + }, + { + "fg": 3152, + "bg": 5226, + "id": "unconnected" + } + ], + "rotates": false + }, + + { + "id": "overlay_female_worn_wig_black", + "fg": 5248, + "rotates": false + }, + { + "id": "overlay_female_worn_wig_brown", + "fg": 5249, + "rotates": false + }, + { + "id": "overlay_female_worn_wig_ginger", + "fg": 5250, + "rotates": false + }, + { + "id": "overlay_female_worn_wig_gray", + "fg": 5251, + "rotates": false + }, + { + "id": "overlay_female_worn_wig_white", + "fg": 5252, + "rotates": false + }, + { + "id": "overlay_male_worn_wig_black", + "fg": 5253, + "rotates": false + }, + { + "id": "overlay_male_worn_wig_brown", + "fg": 5254, + "rotates": false + }, + { + "id": "overlay_male_worn_wig_ginger", + "fg": 5255, + "rotates": false + }, + { + "id": "overlay_male_worn_wig_gray", + "fg": 5256, + "rotates": false + }, + { + "id": "overlay_male_worn_wig_white", + "fg": 5257, + "rotates": false + }, + { + "id": "overlay_female_worn_wig2_black", + "fg": 5258, + "rotates": false + }, + { + "id": "overlay_female_worn_wig2_blonde", + "fg": 5259, + "rotates": false + }, + { + "id": "overlay_female_worn_wig2_brown", + "fg": 5260, + "rotates": false + }, + { + "id": "overlay_female_worn_wig2_red", + "fg": 5261, + "rotates": false + }, + { + "id": "overlay_female_worn_wig2_gray", + "fg": 5262, + "rotates": false + }, + { + "id": "overlay_male_worn_wig2_black", + "fg": 5263, + "rotates": false + }, + { + "id": "overlay_male_worn_wig2_blonde", + "fg": 5265, + "rotates": false + }, + { + "id": "overlay_male_worn_wig2_brown", + "fg": 5264, + "rotates": false + }, + { + "id": "overlay_male_worn_wig2_red", + "fg": 5266, + "rotates": false + }, + { + "id": "overlay_male_worn_wig2_gray", + "fg": 5267, + "rotates": false + } + ] + }, + { + "file": "3_tree_64x80_5392-5471.png", + "sprite_width":64, + "sprite_height":80, + "sprite_offset_x":-16, + "sprite_offset_y":-48, + "tiles": + [ + { + "id": "vp_solar_array", + "fg": 5392, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 5393 + } + ] + }, + { + "id": "vp_solar_array2", + "fg": 5394, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 5395 + } + ] + }, + { + "id": "vp_solar_array2r", + "fg": 5394, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "broken", + "fg": 5395 + } + ] + }, + { + "id": ["overlay_wielded_pike", "overlay_wielded_pike_fake", "overlay_wielded_pike_inferior"], + "fg": 5398, + "rotates": false + }, + { + "id": "overlay_wielded_pike_assembly2_vo", + "fg": 5398, + "rotates": false + }, + { + "id": "t_stairs_down", + "fg": 5396, + "rotates": false + }, + { + "id": "t_stairs_up", + "fg": 5397, + "rotates": false + }, + { + "id": "f_boulder_large", + "fg": 5439, + "rotates": false + }, + { + "id": ["t_tree", "t_tree_pecan"], + "fg": 5400, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_apricot", "t_tree_plum"], + "fg": 5407, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_season_autumn", "t_tree_oak_harvested", "t_tree_pecan_harvested"], + "fg": 5436, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_season_winter", "t_tree_pecan_season_winter"], + "fg": 5405, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_pine", + "fg": 5401, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_pine_season_winter", + "fg": 5406, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_young_season_summer", + "fg": 5404, + "bg": 5402, + "rotates": false + }, + { + "id": "!t_tree_young_season_winter", + "fg": 5404, + "bg": 5403, + "rotates": false + }, + { + "id": ["t_tree_apple_harvested", "t_tree_apple_cut", "t_tree_apricot_harvested", "t_tree_apricot_cut", "t_tree_cherry_harvested", "t_tree_cherry_cut","t_tree_peach_harvested", "t_tree_peach_cut", "t_tree_pear_harvested", "t_tree_pear_cut", "t_tree_plum_harvested", "t_tree_plum_cut", "t_tree_apple", "t_tree_apricot", "t_tree_cherry", "t_tree_peach", "t_tree_pear", "t_tree_plum"], + "fg": 5407, + "bg": 5402 + }, + { + "id": "t_tree_apricot_season_summer", + "fg": 5412, + "bg": 5402 + }, + { + "id": "t_tree_cherry_season_summer", + "fg": 5408, + "bg": 5402 + }, + { + "id": "t_tree_peach_season_summer", + "fg": 5409, + "bg": 5402 + }, + { + "id": "t_tree_apple_season_autumn", + "fg": 5410, + "bg": 5402 + }, + { + "id": "t_tree_pear_season_autumn", + "fg": 5411, + "bg": 5402 + }, + { + "id": "t_tree_apricot_season_summer", + "fg": 5412, + "bg": 5402 + }, + { + "id": "t_tree_plum_season_summer", + "fg": 5413, + "bg": 5402 + }, + { + "id": ["t_tree_apple_harvested_season_winter", "t_tree_apple_cut_season_winter", "t_tree_apricot_harvested_season_winter", "t_tree_apricot_cut_season_winter", "t_tree_cherry_harvested_season_winter", "t_tree_cherry_cut_season_winter", "t_tree_peach_harvested_season_winter", "t_tree_peach_cut_season_winter", "t_tree_pear_harvested_season_winter", "t_tree_pear_cut_season_winter", "t_tree_plum_harvested_season_winter", "t_tree_plum_cut_season_winter", "t_tree_apple_season_winter", "t_tree_apricot_season_winter", "t_tree_cherry_season_winter", "t_tree_peach_season_winter", "t_tree_pear_season_winter", "t_tree_plum_season_winter"], + "fg": 5414, + "bg": 5403 + }, + { + "id": ["t_tree_dead", "t_tree_hickory_dead"], + "fg": 5417, + "bg": 5402 + }, + { + "id": ["t_tree_dead_season_winter", "t_tree_hickory_dead_season_winter"], + "fg": 5417, + "bg": 5403 + }, + { + "id": "t_tree_deadpine", + "fg": 5418, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_deadpine_season_winter", + "fg": 5418, + "bg": 5403, + "rotates": false + }, + { + "id": ["t_tree_hickory", "t_tree_hickory_harvested"], + "fg": 5419, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_hickory_season_winter", "t_tree_hickory_harvested_season_winter"], + "fg": 5421, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_hickory_season_autumn", + "fg": 5420, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_blackjack", + "fg": 5415, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_blackjack_season_winter", + "fg": 5416, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_fungal", + "fg": 5422, + "bg": 5424, + "rotates": false + }, + { + "id": "t_tree_fungal_season_winter", + "fg": 5440, + "bg": 5438, + "rotates": false + }, + { + "id": "t_marloss_tree", + "fg": 5423, + "bg": 5424, + "rotates": false + }, + { + "id": "t_marloss_tree_season_winter", + "fg": 5441, + "bg": 5438, + "rotates": false + }, + + { + "id": "t_tree_birch", + "fg": 5425, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_birch_harvested", + "fg": 5426, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_birch_season_winter", + "fg": 5427, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_birch_harvested_season_winter", + "fg": 5426, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_maple", + "fg": 5428, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_maple_season_autumn", + "fg": 5430, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_maple_tapped", + "fg": 5429, + "bg": 5402 + }, + { + "id": "t_tree_maple_tapped_season_autumn", + "fg": 5431, + "bg": 5402 + }, + { + "id": "t_tree_maple_tapped_season_winter", + "fg": 5431, + "bg": 5403 + }, + { + "id": ["t_tree_willow", "t_tree_coffee_season_summer", "t_tree_coffee"], + "fg": 5432, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_maple_season_winter", + "fg": 5443, + "bg": 5403, + "rotates": false + }, + { + "id": ["t_tree_oak_harvested", "t_tree_harvested", "t_tree_pecan_harvested"], + "fg": 5444, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_oak_harvested_season_winter", "t_tree_harvested_season_winter", "t_tree_pecan_harvested_season_winter"], + "fg": 5444, + "bg": 5403, + "rotates": false + }, + { + "id": "t_stump", + "fg": 5445, + "bg": 5402, + "rotates": false + }, + { + "id": "t_stump_season_winter", + "fg": 5445, + "bg": 5403, + "rotates": false + }, + { + "id": ["t_tree_willow_harvested", "t_tree_coffee_harvested", "t_tree_coffee_cut"], + "fg": 5433, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_willow_harvested_season_winter"], + "fg": 5433, + "bg": 5403, + "rotates": false + }, + { + "id": ["t_tree_willow_season_winter", "t_tree_coffee_harvested_season_winter", "t_tree_coffee_cut_season_winter", "t_tree_coffee_season_winter"], + "fg": 5434, + "bg": 5403, + "rotates": false + }, + { + "id": "t_leanto", + "fg": 5435, + "bg": 5402, + "rotates": false + }, + { + "id": "t_leanto_season_winter", + "fg": 5435, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_coffee_season_autumn", + "fg": 5446, + "bg": 5402, + "rotates": false + }, + { + "id": "mon_treent", + "fg": 5447, + "rotates": false + }, + { + "id": "hulk_weapon", + "fg": 5448, + "rotates": false + }, + { + "id": "mon_oni", + "fg": 5449, + "rotates": false + }, + { + "id": "mon_jabberwock", + "fg": 5450, + "rotates": false + }, + { + "id": "mon_jabberwock_pk", + "fg": 5451, + "rotates": false + }, + { + "id": "mon_shoggoth", + "fg": 5452, + "rotates": false + }, + { + "id": "mon_tankbot", + "fg": 5453, + "rotates": false + }, + { + "id": "mon_zombie_hulk", + "fg": 5454, + "rotates": false + }, + { + "id": "mon_zombie_hulk_pk", + "fg": 5455, + "rotates": false + }, + { + "id": "mon_turret_searchlight", + "fg": 5456, + "rotates": false + }, + { + "id": "mon_blob_brain", + "fg": 5457, + "rotates": false + }, { + "id": "mon_fungaloid_seeder", + "fg": 5458, + "rotates": false + }, { + "id": "mon_fungaloid_tower", + "fg": 5459, + "rotates": false + }, { + "id": "mon_fungaloid_queen", + "fg": 5460, + "rotates": false + }, { + "id": "mon_triffid_heart", + "fg": 5461, + "rotates": false + }, { + "id": "mon_yugg", + "fg": 5462, + "rotates": false + }, + { + "id": "mon_nakedmolerat_giant", + "fg": 5463, + "rotates": false + }, + { + "id": "mon_kappabot", + "fg": 5442, + "rotates": false + }, + + + { "id": "L dinos", "fg": 0, "rotates": false }, + { "id": "mon_spinosaurus", "fg": 5464, "rotates": false }, + { "id": "mon_tyrannosaurus", "fg": 5465, "rotates": false }, + { "id": "mon_triceratops", "fg": 5466, "rotates": false }, + { "id": "mon_stegosaurus", "fg": 5467, "rotates": false }, + { "id": "mon_ankylosaurus", "fg": 5468, "rotates": false }, + { "id": "mon_allosaurus", "fg": 5469, "rotates": false }, + { "id": "mon_parasaurolophus", "fg": 5470, "rotates": false }, + { "id": "mon_utahraptor", "fg": 5471, "rotates": false } + + ] + }, + { + "file": "4_fallback_5472-9567.png", + "tiles": [], + "ascii": [ + { + "offset": 0, + "bold": false, + "color": "BLACK" + }, + { + "offset": 256, + "bold": true, + "color": "WHITE" + }, + { + "offset": 512, + "bold": false, + "color": "WHITE" + }, + { + "offset": 768, + "bold": true, + "color": "BLACK" + }, + { + "offset": 1024, + "bold": false, + "color": "RED" + }, + { + "offset": 1280, + "bold": false, + "color": "GREEN" + }, + { + "offset": 1536, + "bold": false, + "color": "BLUE" + }, + { + "offset": 1792, + "bold": false, + "color": "CYAN" + }, + { + "offset": 2048, + "bold": false, + "color": "MAGENTA" + }, + { + "offset": 2304, + "bold": false, + "color": "YELLOW" + }, + { + "offset": 2560, + "bold": true, + "color": "RED" + }, + { + "offset": 2816, + "bold": true, + "color": "GREEN" + }, + { + "offset": 3072, + "bold": true, + "color": "BLUE" + }, + { + "offset": 3328, + "bold": true, + "color": "CYAN" + }, + { + "offset": 3584, + "bold": true, + "color": "MAGENTA" + }, + { + "offset": 3840, + "bold": true, + "color": "YELLOW" + } + ] + }, + { + "file": "5_tiles_character_customization_32x32_9568-11567.png", + "tiles": + [ + { "id": "tiles.png+tiles_jpmods.png=10880", "fg": 0, "rotates": false }, + { "id": "start @ =5472", "fg": 0, "rotates": false }, + { "id": "- 1312", "fg": 0, "rotates": false }, + + { "id": "old!overlay_worn_surv_suit_no_mask", "fg": 10880, "rotates": false }, + { "id": "old!overlay_worn_surv_armor_suit_no_mask", "fg": 10881, "rotates": false }, + + { "id": "old!overlay_male_worn_blob_armor_vo", "fg": 10885, "rotates": false }, + { "id": "old!overlay_female_worn_blob_armor_vo", "fg": 10884, "rotates": false }, + + { "id": "old!overlay_male_worn_blob_armor_on_vo", "fg": 10883, "rotates": false }, + { "id": "old!overlay_female_worn_blob_armor_on_vo", "fg": 10882, "rotates": false }, + + { "id": "old!overlay_male_worn_blob_ball_vo", "fg": 10887, "rotates": false }, + { "id": "old!overlay_female_worn_blob_ball_vo", "fg": 10886, "rotates": false }, + + + { + "id": "old!overlay_wielded_spear_assembly2_vo", + "fg": 10897, + "rotates": false + }, + { + "id": "old!overlay_female_mutation_LIGHT_FRECKLES", + "fg": 10898, + "rotates": false + }, + { + "id": "old!overlay_male_mutation_LIGHT_FRECKLES", + "fg": 10899, + "rotates": false + }, + { + "id": "old!overlay_female_mutation_DENSE_FRECKLES", + "fg": 10900, + "rotates": false + }, + { + "id": "old!overlay_male_mutation_DENSE_FRECKLES", + "fg": 10901, + "rotates": false + }, + + + { "id": "overlay_male_mutation_LYNX_FUR", "fg": 2798, "rotates": false }, + { "id": "overlay_male_mutation_M_SKIN", "fg": 2799, "rotates": false }, + { "id": "overlay_male_mutation_SCALES", "fg": 2800, "rotates": false }, + { "id": "overlay_male_mutation_SLEEK_SCALES", "fg": 2800, "rotates": false }, + { "id": "overlay_male_mutation_SUNBURN", "fg": 2801, "rotates": false }, + { "id": "overlay_male_mutation_TROGLO2", "fg": 2801, "rotates": false }, + { "id": "overlay_male_mutation_TROGLO3", "fg": 2802, "rotates": false }, + { "id": "overlay_male_mutation_VISCOUS", "fg": 2803, "rotates": false }, + { "id": "overlay_mutation_ADDICTIVE", "fg": 0, "rotates": false }, + { "id": "overlay_mutation_BEAUTIFUL", "fg": 2804, "rotates": false }, + { "id": "overlay_mutation_BEAUTIFUL2", "fg": 2804, "rotates": false }, + { "id": "overlay_mutation_BEAUTIFUL3", "fg": 2804, "rotates": false }, + { "id": "overlay_mutation_ALCMET", "fg": 2805, "rotates": false }, + { "id": "overlay_mutation_ANTENNAE", "fg": 2806, "rotates": false }, + { "id": "overlay_mutation_ANTLERS", "fg": 2807, "rotates": false }, + { "id": "!overlay_mutation_ARACHNID_ARMS", "fg": 2808, "rotates": false }, + { "id": "overlay_mutation_ARACHNID_ARMS_OK", "fg": 2808, "rotates": false }, + { "id": "overlay_mutation_ARM_TENTACLES", "fg": 2809, "rotates": false }, + { "id": "overlay_mutation_ARM_TENTACLES_4", "fg": 2810, "rotates": false }, + { "id": "overlay_mutation_ARM_TENTACLES_8", "fg": 2811, "rotates": false }, + { "id": "overlay_mutation_BEAK", "fg": 2812, "rotates": false }, + { "id": "overlay_mutation_BEAK_HUM", "fg": 2812, "rotates": false }, + { "id": "overlay_mutation_BEAK_PECK", "fg": 2812, "rotates": false }, + { "id": "overlay_mutation_CANINE_EARS","fg": 2813, "rotates": false }, + { "id": "overlay_mutation_LUPINE_EARS", "fg": 2813, "rotates": false }, + { "id": "overlay_mutation_CENOBITE", "fg": 2814, "rotates": false }, + { "id": "overlay_mutation_DEBUG_CLOAK", "fg": 2815, "rotates": false }, + { "id": "overlay_mutation_DEBUG_HS", "fg": 2815, "rotates": false }, + { "id": "overlay_mutation_DEBUG_LS", "fg": 2815, "rotates": false }, + { "id": "overlay_mutation_DEBUG_MIND_CONTROL", "fg": 2815, "rotates": false }, + { "id": "overlay_mutation_DEBUG_NIGHTVISION", "fg": 2815, "rotates": false }, + { "id": "overlay_mutation_DEBUG_NODMG", "fg": 2815, "rotates": false }, + { "id": "overlay_mutation_DEBUG_NOSCENT", "fg": 2815, "rotates": false }, + { "id": "overlay_mutation_DEBUG_NOTEMP", "fg": 2815, "rotates": false }, + { "id": "overlay_mutation_DEBUG_SILENT", "fg": 2815, "rotates": false }, + { "id": "overlay_mutation_ELFA_EARS", "fg": 2816, "rotates": false }, + { "id": "overlay_mutation_FELINE_EARS", "fg": 2817, "rotates": false }, + { "id": "overlay_worn_fur_cat_ears", "fg": 2817, "rotates": false }, + { "id": "overlay_worn_leather_cat_ears", "fg": 2817, "rotates": false }, + { "id": "overlay_mutation_FLOWERS", "fg": 2818, "rotates": false }, + { "id": "overlay_mutation_HORNS", "fg": 2819, "rotates": false }, + { "id": "overlay_mutation_HORNS_POINTED", "fg": 2819, "rotates": false }, + { "id": "overlay_mutation_HORNS_CURLED", "fg": 2820, "rotates": false }, + { "id": "overlay_mutation_INSECT_ARMS", "fg": 2821, "rotates": false }, + { "id": "overlay_mutation_INSECT_ARMS_OK", "fg": 2821, "rotates": false }, + { "id": "overlay_mutation_LEG_TENTACLES", "fg": 2822, "rotates": false }, + + { "id": "overlay_mutation_MUZZLE_BEAR", "fg": 2823, "rotates": false }, + { "id": "overlay_mutation_MUZZLE", "fg": 2823, "rotates": false }, + { "id": "overlay_mutation_MOUTH_FLAPS", "fg": 2824, "rotates": false }, + { "id": "overlay_mutation_MOUTH_TENTACLES", "fg": 2825, "rotates": false }, + { "id": "overlay_mutation_MUZZLE_LONG", "fg": 2826, "rotates": false }, + { "id": "overlay_mutation_MUZZLE_RAT", "fg": 2827, "rotates": false }, + { "id": "overlay_mutation_M_BLOOM", "fg": 2828, "rotates": false }, + { "id": "overlay_mutation_PAWS_LARGE", "fg": 2829, "rotates": false }, + { "id": "overlay_mutation_ROOTS2", "fg": 2830, "rotates": false }, + { "id": "overlay_mutation_ROOTS3", "fg": 2830, "rotates": false }, + { "id": "overlay_mutation_SABER_TEETH", "fg": 2831, "rotates": false }, + { "id": "overlay_mutation_SORES", "fg": 2832, "rotates": false }, + { "id": "overlay_mutation_SPOTS", "fg": 2832, "rotates": false }, + { "id": "overlay_mutation_TAIL_CATTLE", "fg": 2833, "rotates": false }, + { "id": "overlay_mutation_TAIL_FLUFFY", "fg": 2834, "rotates": false }, + { "id": "overlay_mutation_TAIL_CLUB", "fg": 2834, "rotates": false }, + { "id": "overlay_mutation_TAIL_RAPTOR", "fg": 2835, "rotates": false }, + { "id": "overlay_mutation_TAIL_RAT", "fg": 2836, "rotates": false }, + { "id": "overlay_mutation_TAIL_STING", "fg": 2837, "rotates": false }, + { "id": "overlay_mutation_TAIL_STUB", "fg": 2838, "rotates": false }, + { "id": "overlay_mutation_TAIL_THICK", "fg": 2838, "rotates": false }, + { "id": "overlay_mutation_TAIL_LONG", "fg": 2838, "rotates": false }, + { "id": "overlay_mutation_TAIL_FIN", "fg": 2838, "rotates": false }, + { "id": "overlay_mutation_THRESH_ALPHA", "fg": 2839, "rotates": false }, + { "id": "overlay_mutation_URSINE_EARS", "fg": 2840, "rotates": false }, + { "id": "overlay_mutation_VINES1", "fg": 2841, "rotates": false }, + { "id": "overlay_mutation_VINES2", "fg": 2842, "rotates": false }, + { "id": "overlay_mutation_VINES3", "fg": 2842, "rotates": false }, + { "id": "overlay_mutation_WHISKERS", "fg": 2843, "rotates": false }, + { "id": "overlay_mutation_WHISKERS_RAT", "fg": 2843, "rotates": false }, + { "id": "overlay_mutation_WINGS_BAT", "fg": 2844, "rotates": false }, + { "id": "overlay_mutation_WINGS_BIRD", "fg": 2845, "rotates": false }, + { "id": "overlay_mutation_WINGS_BUTTERFLY", "fg": 2846, "rotates": false }, + { "id": "overlay_mutation_WINGS_INSECT", "fg": 2847, "rotates": false }, + { "id": "overlay_mutation_WINGS_STUB", "fg": 2848, "rotates": false }, + + { "id": "player_female", "fg": 9568, "bg": 967 }, + { "id": "player_male", "fg": 9569, "bg": 967 }, + { "id": "npc_female", "fg": 9570, "bg": 967 }, + { "id": "npc_male", "fg": 9571, "bg": 967 }, + + { "id": "overlay_female_mutation_skin1", "fg": 9574, "rotates": false }, + { "id": "overlay_female_mutation_skin2", "fg": 9578, "rotates": false }, + { "id": "overlay_female_mutation_skin3", "fg": 9580, "rotates": false }, + { "id": "overlay_female_mutation_skin4", "fg": 9582, "rotates": false }, + { "id": "overlay_male_mutation_skin1", "fg": 9575, "rotates": false }, + { "id": "overlay_male_mutation_skin2", "fg": 9579, "rotates": false }, + { "id": "overlay_male_mutation_skin3", "fg": 9581, "rotates": false }, + { "id": "overlay_male_mutation_skin4", "fg": 9583, "rotates": false }, + + { "id": "overlay_female_mutation_PALE", "fg": 9572, "rotates": false }, + { "id": "overlay_male_mutation_PALE", "fg": 9573, "rotates": false }, + { "id": "overlay_female_mutation_SKIN_LIGHT", "fg": 9574, "rotates": false }, + { "id": "overlay_male_mutation_SKIN_LIGHT", "fg": 9575, "rotates": false }, + { "id": "overlay_female_mutation_SKIN_MEDIUM", "fg": 9576, "rotates": false }, + { "id": "overlay_male_mutation_SKIN_MEDIUM", "fg": 9577, "rotates": false }, + { "id": "overlay_female_mutation_SKIN_TAN", "fg": 9578, "rotates": false }, + { "id": "overlay_male_mutation_SKIN_TAN", "fg": 9579, "rotates": false }, + { "id": "overlay_female_mutation_SKIN_DARK", "fg": 9580, "rotates": false }, + { "id": "overlay_male_mutation_SKIN_DARK", "fg": 9581, "rotates": false }, + { "id": "overlay_female_mutation_SKIN_PINK", "fg": 9582, "rotates": false }, + { "id": "overlay_male_mutation_SKIN_PINK", "fg": 9583, "rotates": false }, + { "id": "overlay_female_mutation_SKIN_YELLOW", "fg": 9584, "rotates": false }, + { "id": "overlay_male_mutation_SKIN_YELLOW", "fg": 9585, "rotates": false }, + + { "id": "!overlay_female_mutation_ALBINO", "fg": 9582, "rotates": false }, + { "id": "!overlay_male_mutation_ALBINO", "fg": 9583, "rotates": false }, + + { "id": "overlay_female_mutation_EYE_BLUE", "fg": 9588, "rotates": false }, + { "id": "overlay_male_mutation_EYE_BLUE", "fg": 9589, "rotates": false }, + { "id": "overlay_female_mutation_EYE_GRAY", "fg": 9590, "rotates": false }, + { "id": "overlay_male_mutation_EYE_GRAY", "fg": 9591, "rotates": false }, + { "id": "overlay_female_mutation_EYE_BROWN", "fg": 9592, "rotates": false }, + { "id": "overlay_male_mutation_EYE_BROWN", "fg": 9593, "rotates": false }, + { "id": "overlay_female_mutation_EYE_GREEN", "fg": 9594, "rotates": false }, + { "id": "overlay_male_mutation_EYE_GREEN", "fg": 9595, "rotates": false }, + { "id": "overlay_female_mutation_EYE_RED", "fg": 9596, "rotates": false }, + { "id": "overlay_male_mutation_EYE_RED", "fg": 9597, "rotates": false }, + { "id": "overlay_female_mutation_EYE_YELLOW", "fg": 9598, "rotates": false }, + { "id": "overlay_male_mutation_EYE_YELLOW", "fg": 9599, "rotates": false }, + + { "id": "overlay_female_mutation_HAIR_BLONDE", "fg": 9600, "rotates": false }, + { "id": "overlay_male_mutation_HAIR_BLONDE", "fg": 9601, "rotates": false }, + { "id": "overlay_female_mutation_HAIR_RED", "fg": 9602, "rotates": false }, + { "id": "overlay_male_mutation_HAIR_RED", "fg": 9603, "rotates": false }, + { "id": "overlay_female_mutation_HAIR_BROWN", "fg": 9604, "rotates": false }, + { "id": "overlay_male_mutation_HAIR_BROWN", "fg": 9605, "rotates": false }, + { "id": "overlay_female_mutation_HAIR_BLACK", "fg": 9606, "rotates": false }, + { "id": "overlay_male_mutation_HAIR_BLACK", "fg": 9607, "rotates": false }, + { "id": "overlay_female_mutation_HAIR_WHITE", "fg": 9608, "rotates": false }, + { "id": "overlay_male_mutation_HAIR_WHITE", "fg": 9609, "rotates": false }, + { "id": "overlay_female_mutation_HAIR_GRAY", "fg": 9610, "rotates": false }, + { "id": "overlay_male_mutation_HAIR_GRAY", "fg": 9611, "rotates": false }, + { "id": "overlay_female_mutation_HAIR_PINK", "fg": 9612, "rotates": false }, + { "id": "overlay_male_mutation_HAIR_PINK", "fg": 9613, "rotates": false }, + + { "id": "overlay_female_mutation_hair2blond", "fg": 9616, "rotates": false }, + { "id": "overlay_male_mutation_hair2blond", "fg": 9617, "rotates": false }, + { "id": "overlay_female_mutation_hair2red", "fg": 9618, "rotates": false }, + { "id": "overlay_male_mutation_hair2red", "fg": 9619, "rotates": false }, + { "id": "overlay_female_mutation_hair2brown", "fg": 9620, "rotates": false }, + { "id": "overlay_male_mutation_hair2brown", "fg": 9621, "rotates": false }, + { "id": "overlay_female_mutation_hair2black", "fg": 9622, "rotates": false }, + { "id": "overlay_male_mutation_hair2black", "fg": 9623, "rotates": false }, + { "id": "overlay_female_mutation_hair2white", "fg": 9624, "rotates": false }, + { "id": "overlay_male_mutation_hair2white", "fg": 9625, "rotates": false }, + { "id": "overlay_female_mutation_hair2gray", "fg": 9626, "rotates": false }, + { "id": "overlay_male_mutation_hair2gray", "fg": 9627, "rotates": false }, + { "id": "overlay_female_mutation_hair2pink", "fg": 9628, "rotates": false }, + { "id": "overlay_male_mutation_hair2pink", "fg": 9629, "rotates": false }, + + { "id": "overlay_female_mutation_hair3blond", "fg": 9632, "rotates": false }, + { "id": "overlay_male_mutation_hair3blond", "fg": 9633, "rotates": false }, + { "id": "overlay_female_mutation_hair3red", "fg": 9634, "rotates": false }, + { "id": "overlay_male_mutation_hair3red", "fg": 9635, "rotates": false }, + { "id": "overlay_female_mutation_hair3brown", "fg": 9636, "rotates": false }, + { "id": "overlay_male_mutation_hair3brown", "fg": 9637, "rotates": false }, + { "id": "overlay_female_mutation_hair3black", "fg": 9638, "rotates": false }, + { "id": "overlay_male_mutation_hair3black", "fg": 9639, "rotates": false }, + { "id": "overlay_female_mutation_hair3white", "fg": 9640, "rotates": false }, + { "id": "overlay_male_mutation_hair3white", "fg": 9641, "rotates": false }, + { "id": "overlay_female_mutation_hair3gray", "fg": 9642, "rotates": false }, + { "id": "overlay_male_mutation_hair3gray", "fg": 9643, "rotates": false }, + { "id": "overlay_female_mutation_hair3pink", "fg": 9644, "rotates": false }, + { "id": "overlay_male_mutation_hair3pink", "fg": 9645, "rotates": false }, + + { "id": "overlay_mutation_hair4blond", "fg": 9648, "rotates": false }, + { "id": "overlay_mutation_hair4red", "fg": 9649, "rotates": false }, + { "id": "overlay_mutation_hair4brown", "fg": 9650, "rotates": false }, + { "id": "overlay_mutation_hair4black", "fg": 9651, "rotates": false }, + { "id": "overlay_mutation_hair4white", "fg": 9652, "rotates": false }, + { "id": "overlay_mutation_hair4gray", "fg": 9653, "rotates": false }, + { "id": "overlay_mutation_hair4pink", "fg": 9654, "rotates": false }, + + { "id": "overlay_mutation_hair5blond", "fg": 9655, "rotates": false }, + { "id": "overlay_mutation_hair5red", "fg": 9656, "rotates": false }, + { "id": "overlay_mutation_hair5brown", "fg": 9657, "rotates": false }, + { "id": "overlay_mutation_hair5black", "fg": 9658, "rotates": false }, + { "id": "overlay_mutation_hair5white", "fg": 9659, "rotates": false }, + { "id": "overlay_mutation_hair5gray", "fg": 9660, "rotates": false }, + { "id": "overlay_mutation_hair5pink", "fg": 9661, "rotates": false }, + + { "id": "overlay_female_mutation_hair6blond", "fg": 9664, "rotates": false }, + { "id": "overlay_male_mutation_hair6blond", "fg": 9665, "rotates": false }, + { "id": "overlay_female_mutation_hair6red", "fg": 9666, "rotates": false }, + { "id": "overlay_male_mutation_hair6red", "fg": 9667, "rotates": false }, + { "id": "overlay_female_mutation_hair6brown", "fg": 9668, "rotates": false }, + { "id": "overlay_male_mutation_hair6brown", "fg": 9669, "rotates": false }, + { "id": "overlay_female_mutation_hair6black", "fg": 9670, "rotates": false }, + { "id": "overlay_male_mutation_hair6black", "fg": 9671, "rotates": false }, + { "id": "overlay_female_mutation_hair6white", "fg": 9672, "rotates": false }, + { "id": "overlay_male_mutation_hair6white", "fg": 9673, "rotates": false }, + { "id": "overlay_female_mutation_hair6gray", "fg": 9674, "rotates": false }, + { "id": "overlay_male_mutation_hair6gray", "fg": 9675, "rotates": false }, + { "id": "overlay_female_mutation_hair6pink", "fg": 9676, "rotates": false }, + { "id": "overlay_male_mutation_hair6pink", "fg": 9677, "rotates": false }, + + { "id": "overlay_female_mutation_hair7blond", "fg": 9680, "rotates": false }, + { "id": "overlay_male_mutation_hair7blond", "fg": 9681, "rotates": false }, + { "id": "overlay_female_mutation_hair7red", "fg": 9682, "rotates": false }, + { "id": "overlay_male_mutation_hair7red", "fg": 9683, "rotates": false }, + { "id": "overlay_female_mutation_hair7brown", "fg": 9684, "rotates": false }, + { "id": "overlay_male_mutation_hair7brown", "fg": 9685, "rotates": false }, + { "id": "overlay_female_mutation_hair7black", "fg": 9686, "rotates": false }, + { "id": "overlay_male_mutation_hair7black", "fg": 9687, "rotates": false }, + { "id": "overlay_female_mutation_hair7white", "fg": 9688, "rotates": false }, + { "id": "overlay_male_mutation_hair7white", "fg": 9689, "rotates": false }, + { "id": "overlay_female_mutation_hair7gray", "fg": 9690, "rotates": false }, + { "id": "overlay_male_mutation_hair7gray", "fg": 9691, "rotates": false }, + { "id": "overlay_female_mutation_hair7pink", "fg": 9692, "rotates": false }, + { "id": "overlay_male_mutation_hair7pink", "fg": 9693, "rotates": false }, + + { "id": "overlay_female_mutation_hair8blond", "fg": 9696, "rotates": false }, + { "id": "overlay_male_mutation_hair8blond", "fg": 9697, "rotates": false }, + { "id": "overlay_female_mutation_hair8red", "fg": 9698, "rotates": false }, + { "id": "overlay_male_mutation_hair8red", "fg": 9699, "rotates": false }, + { "id": "overlay_female_mutation_hair8brown", "fg": 9700, "rotates": false }, + { "id": "overlay_male_mutation_hair8brown", "fg": 9701, "rotates": false }, + { "id": "overlay_female_mutation_hair8black", "fg": 9702, "rotates": false }, + { "id": "overlay_male_mutation_hair8black", "fg": 9703, "rotates": false }, + { "id": "overlay_female_mutation_hair8white", "fg": 9704, "rotates": false }, + { "id": "overlay_male_mutation_hair8white", "fg": 9705, "rotates": false }, + { "id": "overlay_female_mutation_hair8gray", "fg": 9706, "rotates": false }, + { "id": "overlay_male_mutation_hair8gray", "fg": 9707, "rotates": false }, + { "id": "overlay_female_mutation_hair8pink", "fg": 9708, "rotates": false }, + { "id": "overlay_male_mutation_hair8pink", "fg": 9709, "rotates": false }, + + { "id": "overlay_female_mutation_hair9blond", "fg": 9712, "rotates": false }, + { "id": "overlay_male_mutation_hair9blond", "fg": 9713, "rotates": false }, + { "id": "overlay_female_mutation_hair9red", "fg": 9714, "rotates": false }, + { "id": "overlay_male_mutation_hair9red", "fg": 9715, "rotates": false }, + { "id": "overlay_female_mutation_hair9brown", "fg": 9716, "rotates": false }, + { "id": "overlay_male_mutation_hair9brown", "fg": 9717, "rotates": false }, + { "id": "overlay_female_mutation_hair9black", "fg": 9718, "rotates": false }, + { "id": "overlay_male_mutation_hair9black", "fg": 9719, "rotates": false }, + { "id": "overlay_female_mutation_hair9white", "fg": 9720, "rotates": false }, + { "id": "overlay_male_mutation_hair9white", "fg": 9721, "rotates": false }, + { "id": "overlay_female_mutation_hair9gray", "fg": 9722, "rotates": false }, + { "id": "overlay_male_mutation_hair9gray", "fg": 9723, "rotates": false }, + { "id": "overlay_female_mutation_hair9pink", "fg": 9724, "rotates": false }, + { "id": "overlay_male_mutation_hair9pink", "fg": 9725, "rotates": false }, + + { "id": "overlay_female_mutation_hair10blond", "fg": 9728, "rotates": false }, + { "id": "overlay_male_mutation_hair10blond", "fg": 9729, "rotates": false }, + { "id": "overlay_female_mutation_hair10red", "fg": 9730, "rotates": false }, + { "id": "overlay_male_mutation_hair10red", "fg": 9731, "rotates": false }, + { "id": "overlay_female_mutation_hair10brown", "fg": 9732, "rotates": false }, + { "id": "overlay_male_mutation_hair10brown", "fg": 9733, "rotates": false }, + { "id": "overlay_female_mutation_hair10black", "fg": 9734, "rotates": false }, + { "id": "overlay_male_mutation_hair10black", "fg": 9735, "rotates": false }, + { "id": "overlay_female_mutation_hair10white", "fg": 9736, "rotates": false }, + { "id": "overlay_male_mutation_hair10white", "fg": 9737, "rotates": false }, + { "id": "overlay_female_mutation_hair10gray", "fg": 9738, "rotates": false }, + { "id": "overlay_male_mutation_hair10gray", "fg": 9739, "rotates": false }, + { "id": "overlay_female_mutation_hair10pink", "fg": 9740, "rotates": false }, + { "id": "overlay_male_mutation_hair10pink", "fg": 9741, "rotates": false }, + + { "id": "overlay_female_mutation_forehair1blond", "fg": 9824, "rotates": false }, + { "id": "overlay_male_mutation_forehair1blond", "fg": 9825, "rotates": false }, + { "id": "overlay_female_mutation_forehair1red", "fg": 9826, "rotates": false }, + { "id": "overlay_male_mutation_forehair1red", "fg": 9827, "rotates": false }, + { "id": "overlay_female_mutation_forehair1brown", "fg": 9828, "rotates": false }, + { "id": "overlay_male_mutation_forehair1brown", "fg": 9829, "rotates": false }, + { "id": "overlay_female_mutation_forehair1black", "fg": 9830, "rotates": false }, + { "id": "overlay_male_mutation_forehair1black", "fg": 9831, "rotates": false }, + { "id": "overlay_female_mutation_forehair1white", "fg": 9832, "rotates": false }, + { "id": "overlay_male_mutation_forehair1white", "fg": 9833, "rotates": false }, + { "id": "overlay_female_mutation_forehair1gray", "fg": 9834, "rotates": false }, + { "id": "overlay_male_mutation_forehair1gray", "fg": 9835, "rotates": false }, + { "id": "overlay_female_mutation_forehair1pink", "fg": 9836, "rotates": false }, + { "id": "overlay_male_mutation_forehair1pink", "fg": 9837, "rotates": false }, + + { "id": "overlay_female_mutation_forehair2blond", "fg": 9840, "rotates": false }, + { "id": "overlay_male_mutation_forehair2blond", "fg": 9841, "rotates": false }, + { "id": "overlay_female_mutation_forehair2red", "fg": 9842, "rotates": false }, + { "id": "overlay_male_mutation_forehair2red", "fg": 9843, "rotates": false }, + { "id": "overlay_female_mutation_forehair2brown", "fg": 9844, "rotates": false }, + { "id": "overlay_male_mutation_forehair2brown", "fg": 9845, "rotates": false }, + { "id": "overlay_female_mutation_forehair2black", "fg": 9846, "rotates": false }, + { "id": "overlay_male_mutation_forehair2black", "fg": 9847, "rotates": false }, + { "id": "overlay_female_mutation_forehair2white", "fg": 9848, "rotates": false }, + { "id": "overlay_male_mutation_forehair2white", "fg": 9849, "rotates": false }, + { "id": "overlay_female_mutation_forehair2gray", "fg": 9850, "rotates": false }, + { "id": "overlay_male_mutation_forehair2gray", "fg": 9851, "rotates": false }, + { "id": "overlay_female_mutation_forehair2pink", "fg": 9852, "rotates": false }, + { "id": "overlay_male_mutation_forehair2pink", "fg": 9853, "rotates": false }, + + { "id": "overlay_female_mutation_forehair3blond", "fg": 9856, "rotates": false }, + { "id": "overlay_male_mutation_forehair3blond", "fg": 9857, "rotates": false }, + { "id": "overlay_female_mutation_forehair3red", "fg": 9858, "rotates": false }, + { "id": "overlay_male_mutation_forehair3red", "fg": 9859, "rotates": false }, + { "id": "overlay_female_mutation_forehair3brown", "fg": 9860, "rotates": false }, + { "id": "overlay_male_mutation_forehair3brown", "fg": 9861, "rotates": false }, + { "id": "overlay_female_mutation_forehair3black", "fg": 9862, "rotates": false }, + { "id": "overlay_male_mutation_forehair3black", "fg": 9863, "rotates": false }, + { "id": "overlay_female_mutation_forehair3white", "fg": 9864, "rotates": false }, + { "id": "overlay_male_mutation_forehair3white", "fg": 9867, "rotates": false }, + { "id": "overlay_female_mutation_forehair3gray", "fg": 9866, "rotates": false }, + { "id": "overlay_male_mutation_forehair3gray", "fg": 9867, "rotates": false }, + { "id": "overlay_female_mutation_forehair3pink", "fg": 9868, "rotates": false }, + { "id": "overlay_male_mutation_forehair3pink", "fg": 9869, "rotates": false }, + + { "id": "overlay_female_mutation_forehair4blond", "fg": 9872, "rotates": false }, + { "id": "overlay_male_mutation_forehair4blond", "fg": 9873, "rotates": false }, + { "id": "overlay_female_mutation_forehair4red", "fg": 9874, "rotates": false }, + { "id": "overlay_male_mutation_forehair4red", "fg": 9875, "rotates": false }, + { "id": "overlay_female_mutation_forehair4brown", "fg": 9876, "rotates": false }, + { "id": "overlay_male_mutation_forehair4brown", "fg": 9877, "rotates": false }, + { "id": "overlay_female_mutation_forehair4black", "fg": 9878, "rotates": false }, + { "id": "overlay_male_mutation_forehair4black", "fg": 9879, "rotates": false }, + { "id": "overlay_female_mutation_forehair4white", "fg": 9880, "rotates": false }, + { "id": "overlay_male_mutation_forehair4white", "fg": 9881, "rotates": false }, + { "id": "overlay_female_mutation_forehair4gray", "fg": 9882, "rotates": false }, + { "id": "overlay_male_mutation_forehair4gray", "fg": 9883, "rotates": false }, + { "id": "overlay_female_mutation_forehair4pink", "fg": 9884, "rotates": false }, + { "id": "overlay_male_mutation_forehair4pink", "fg": 9885, "rotates": false }, + + { "id": "overlay_female_mutation_forehair5blond", "fg": 9888, "rotates": false }, + { "id": "overlay_male_mutation_forehair5blond", "fg": 9889, "rotates": false }, + { "id": "overlay_female_mutation_forehair5red", "fg": 9890, "rotates": false }, + { "id": "overlay_male_mutation_forehair5red", "fg": 9891, "rotates": false }, + { "id": "overlay_female_mutation_forehair5brown", "fg": 9892, "rotates": false }, + { "id": "overlay_male_mutation_forehair5brown", "fg": 9893, "rotates": false }, + { "id": "overlay_female_mutation_forehair5black", "fg": 9894, "rotates": false }, + { "id": "overlay_male_mutation_forehair5black", "fg": 9895, "rotates": false }, + { "id": "overlay_female_mutation_forehair5white", "fg": 9896, "rotates": false }, + { "id": "overlay_male_mutation_forehair5white", "fg": 9897, "rotates": false }, + { "id": "overlay_female_mutation_forehair5gray", "fg": 9898, "rotates": false }, + { "id": "overlay_male_mutation_forehair5gray", "fg": 9899, "rotates": false }, + { "id": "overlay_female_mutation_forehair5pink", "fg": 9900, "rotates": false }, + { "id": "overlay_male_mutation_forehair5pink", "fg": 9901, "rotates": false }, + + { "id": "overlay_female_mutation_forehair6blond", "fg": 9904, "rotates": false }, + { "id": "overlay_male_mutation_forehair6blond", "fg": 9905, "rotates": false }, + { "id": "overlay_female_mutation_forehair6red", "fg": 9906, "rotates": false }, + { "id": "overlay_male_mutation_forehair6red", "fg": 9907, "rotates": false }, + { "id": "overlay_female_mutation_forehair6brown", "fg": 9908, "rotates": false }, + { "id": "overlay_male_mutation_forehair6brown", "fg": 9909, "rotates": false }, + { "id": "overlay_female_mutation_forehair6black", "fg": 9910, "rotates": false }, + { "id": "overlay_male_mutation_forehair6black", "fg": 9911, "rotates": false }, + { "id": "overlay_female_mutation_forehair6white", "fg": 9912, "rotates": false }, + { "id": "overlay_male_mutation_forehair6white", "fg": 9913, "rotates": false }, + { "id": "overlay_female_mutation_forehair6gray", "fg": 9914, "rotates": false }, + { "id": "overlay_male_mutation_forehair6gray", "fg": 9915, "rotates": false }, + { "id": "overlay_female_mutation_forehair6pink", "fg": 9916, "rotates": false }, + { "id": "overlay_male_mutation_forehair6pink", "fg": 9917, "rotates": false }, + + { "id": "overlay_female_mutation_forehair7blond", "fg": 9920, "rotates": false }, + { "id": "overlay_male_mutation_forehair7blond", "fg": 9921, "rotates": false }, + { "id": "overlay_female_mutation_forehair7red", "fg": 9922, "rotates": false }, + { "id": "overlay_male_mutation_forehair7red", "fg": 9923, "rotates": false }, + { "id": "overlay_female_mutation_forehair7brown", "fg": 9924, "rotates": false }, + { "id": "overlay_male_mutation_forehair7brown", "fg": 9925, "rotates": false }, + { "id": "overlay_female_mutation_forehair7black", "fg": 9926, "rotates": false }, + { "id": "overlay_male_mutation_forehair7black", "fg": 9927, "rotates": false }, + { "id": "overlay_female_mutation_forehair7white", "fg": 9928, "rotates": false }, + { "id": "overlay_male_mutation_forehair7white", "fg": 9929, "rotates": false }, + { "id": "overlay_female_mutation_forehair7gray", "fg": 9930, "rotates": false }, + { "id": "overlay_male_mutation_forehair7gray", "fg": 9931, "rotates": false }, + { "id": "overlay_female_mutation_forehair7pink", "fg": 9932, "rotates": false }, + { "id": "overlay_male_mutation_forehair7pink", "fg": 9933, "rotates": false }, + + { "id": "overlay_female_mutation_forehair8blond", "fg": 9936, "rotates": false }, + { "id": "overlay_male_mutation_forehair8blond", "fg": 9937, "rotates": false }, + { "id": "overlay_female_mutation_forehair8red", "fg": 9938, "rotates": false }, + { "id": "overlay_male_mutation_forehair8red", "fg": 9939, "rotates": false }, + { "id": "overlay_female_mutation_forehair8brown", "fg": 9940, "rotates": false }, + { "id": "overlay_male_mutation_forehair8brown", "fg": 9941, "rotates": false }, + { "id": "overlay_female_mutation_forehair8black", "fg": 9942, "rotates": false }, + { "id": "overlay_male_mutation_forehair8black", "fg": 9943, "rotates": false }, + { "id": "overlay_female_mutation_forehair8white", "fg": 9944, "rotates": false }, + { "id": "overlay_male_mutation_forehair8white", "fg": 9945, "rotates": false }, + { "id": "overlay_female_mutation_forehair8gray", "fg": 9946, "rotates": false }, + { "id": "overlay_male_mutation_forehair8gray", "fg": 9947, "rotates": false }, + { "id": "overlay_female_mutation_forehair8pink", "fg": 9948, "rotates": false }, + { "id": "overlay_male_mutation_forehair8pink", "fg": 9949, "rotates": false }, + + { "id": "overlay_female_mutation_forehair9blond", "fg": 9952, "rotates": false }, + { "id": "overlay_male_mutation_forehair9blond", "fg": 9953, "rotates": false }, + { "id": "overlay_female_mutation_forehair9red", "fg": 9954, "rotates": false }, + { "id": "overlay_male_mutation_forehair9red", "fg": 9955, "rotates": false }, + { "id": "overlay_female_mutation_forehair9brown", "fg": 9956, "rotates": false }, + { "id": "overlay_male_mutation_forehair9brown", "fg": 9957, "rotates": false }, + { "id": "overlay_female_mutation_forehair9black", "fg": 9958, "rotates": false }, + { "id": "overlay_male_mutation_forehair9black", "fg": 9959, "rotates": false }, + { "id": "overlay_female_mutation_forehair9white", "fg": 9960, "rotates": false }, + { "id": "overlay_male_mutation_forehair9white", "fg": 9961, "rotates": false }, + { "id": "overlay_female_mutation_forehair9gray", "fg": 9962, "rotates": false }, + { "id": "overlay_male_mutation_forehair9gray", "fg": 9963, "rotates": false }, + { "id": "overlay_female_mutation_forehair9pink", "fg": 9964, "rotates": false }, + { "id": "overlay_male_mutation_forehair9pink", "fg": 9965, "rotates": false }, + + { "id": "overlay_female_mutation_forehair10blond", "fg": 9968, "rotates": false }, + { "id": "overlay_male_mutation_forehair10blond", "fg": 9969, "rotates": false }, + { "id": "overlay_female_mutation_forehair10red", "fg": 9970, "rotates": false }, + { "id": "overlay_male_mutation_forehair10red", "fg": 9971, "rotates": false }, + { "id": "overlay_female_mutation_forehair10brown", "fg": 9972, "rotates": false }, + { "id": "overlay_male_mutation_forehair10brown", "fg": 9973, "rotates": false }, + { "id": "overlay_female_mutation_forehair10black", "fg": 9974, "rotates": false }, + { "id": "overlay_male_mutation_forehair10black", "fg": 9975, "rotates": false }, + { "id": "overlay_female_mutation_forehair10white", "fg": 9976, "rotates": false }, + { "id": "overlay_male_mutation_forehair10white", "fg": 9977, "rotates": false }, + { "id": "overlay_female_mutation_forehair10gray", "fg": 9978, "rotates": false }, + { "id": "overlay_male_mutation_forehair10gray", "fg": 9979, "rotates": false }, + { "id": "overlay_female_mutation_forehair10pink", "fg": 9980, "rotates": false }, + { "id": "overlay_male_mutation_forehair10pink", "fg": 9981, "rotates": false }, + + { "id": "overlay_female_mutation_LIGHT_FRECKLES", "fg": 10016, "rotates": false }, + { "id": "overlay_male_mutation_LIGHT_FRECKLES", "fg": 10017, "rotates": false }, + { "id": "overlay_female_mutation_DENSE_FRECKLES", "fg": 10018, "rotates": false }, + { "id": "overlay_male_mutation_DENSE_FRECKLES", "fg": 10019, "rotates": false }, + + { "id": "overlay_female_mutation_SKIN_ROUGH", "fg": 10020, "rotates": false }, + { "id": "overlay_male_mutation_SKIN_ROUGH", "fg": 10021, "rotates": false }, + + { "id": "overlay_female_mutation_SLIMY", "fg": 10022, "rotates": false }, + { "id": "overlay_male_mutation_SLIMY", "fg": 10023, "rotates": false }, + + { "id": "overlay_mutation_BEE", "fg": 10024, "rotates": false }, + { "id": "overlay_mutation_MUTE", "fg": 10025, "rotates": false }, + + { "id": ["overlay_mutation_DEBUG_NIGHTVISION", "overlay_DEBUG_CLOAK", "overlay_mutation_DEBUG_LS", "overlay_mutation_DEBUG_NOSCENT", "overlay_mutation_DEBUG_SILENT", "overlay_mutation_DEBUG_NOTEMP", "overlay_mutation_DEBUG_NODMG", "overlay_mutation_DEBUG_HS", "overlay_mutation_DEBUG_CBM_SLOTS", "overlay_mutation_DEBUG_MIND_CONTROL", "overlay_mutation_DEBUG_STORAGE"], "fg": 10026, "rotates": false }, + + { "id": "overlay_mutation_NPC_BRANDY", "fg": 10027, "rotates": false }, + { "id": "overlay_mutation_NPC_RUM", "fg": 10028, "rotates": false }, + { "id": "overlay_mutation_NPC_WHISKEY", "fg": 10029, "rotates": false }, + + { "id": "overlay_female_mutation_SCALES", "fg": 10032, "rotates": false }, + { "id": "overlay_male_mutation_SCALES", "fg": 10033, "rotates": false }, + { "id": "overlay_female_mutation_SLEEK_SCALES", "fg": 10034, "rotates": false }, + { "id": "overlay_male_mutation_SLEEK_SCALES", "fg": 10035, "rotates": false }, + { "id": "overlay_female_mutation_THICK_SCALES", "fg": 10036, "rotates": false }, + { "id": "overlay_male_mutation_THICK_SCALES", "fg": 10037, "rotates": false }, + + { "id": "overlay_female_mutation_EYEBULGE", "fg": 10044, "rotates": false }, + { "id": "overlay_male_mutation_EYEBULGE", "fg": 10045, "rotates": false }, + { "id": "overlay_female_mutation_CEPH_EYES", "fg": 10046, "rotates": false }, + { "id": "overlay_male_mutation_CEPH_EYES", "fg": 10047, "rotates": false }, + { "id": "overlay_female_mutation_ELFAEYES", "fg": 10048, "rotates": false }, + { "id": "overlay_male_mutation_ELFAEYES", "fg": 10049, "rotates": false }, + + { "id": "overlay_female_mutation_FEL_EYE", "fg": 10050, "rotates": false }, + { "id": "overlay_male_mutation_FEL_EYE", "fg": 10051, "rotates": false }, + { "id": "overlay_female_mutation_LIZ_EYE", "fg": 10052, "rotates": false }, + { "id": "overlay_male_mutation_LIZ_EYE", "fg": 10053, "rotates": false }, + + + { "id": "overlay_mutation_FANGS", "fg": 10054, "rotates": false }, + { "id": "overlay_mutation_SABER_TEETH", "fg": 10055, "rotates": false }, + { "id": "overlay_mutation_INCISORS", "fg": 10056, "rotates": false }, + { "id": "overlay_mutation_MEMBRANE", "fg": 10057, "rotates": false }, + { "id": "overlay_mutation_GILLS", "fg": 10058, "rotates": false }, + { "id": "overlay_mutation_GILLS_CEPH", "fg": 10059, "rotates": false }, + + { "id": "overlay_female_mutation_M_SKIN", "fg": 10060, "rotates": false }, + { "id": "overlay_male_mutation_M_SKIN", "fg": 10061, "rotates": false }, + { "id": "overlay_female_mutation_M_SKIN2", "fg": 10062, "rotates": false }, + { "id": "overlay_male_mutation_M_SKIN2", "fg": 10063, "rotates": false }, + + { "id": "overlay_female_mutation_FEATHERS", "fg": 10064, "rotates": false }, + { "id": "overlay_male_mutation_FEATHERS", "fg": 10065, "rotates": false }, + { "id": "overlay_female_mutation_DOWN", "fg": 10066, "rotates": false }, + { "id": "overlay_male_mutation_DOWN", "fg": 10067, "rotates": false }, + { "id": "overlay_female_mutation_LIGHTFUR", "fg": 10068, "rotates": false }, + { "id": "overlay_male_mutation_LIGHTFUR", "fg": 10069, "rotates": false }, + { "id": "overlay_female_mutation_FUR", "fg": 10070, "rotates": false }, + { "id": "overlay_male_mutation_FUR", "fg": 10071, "rotates": false }, + { "id": "overlay_female_mutation_URSINE_FUR", "fg": 10072, "rotates": false }, + { "id": "overlay_male_mutation_URSINE_FUR", "fg": 10073, "rotates": false }, + { "id": "overlay_female_mutation_LUPINE_FUR", "fg": 10074, "rotates": false }, + { "id": "overlay_male_mutation_LUPINE_FUR", "fg": 10075, "rotates": false }, + { "id": "overlay_female_mutation_FELINE_FUR", "fg": 10076, "rotates": false }, + { "id": "overlay_male_mutation_FELINE_FUR", "fg": 10077, "rotates": false }, + + { "id": "overlay_female_mutation_SPINES", "fg": 10078, "rotates": false }, + { "id": "overlay_male_mutation_SPINES", "fg": 10079, "rotates": false }, + + { "id": "overlay_female_mutation_CHITIN", "fg": 10080, "rotates": false }, + { "id": "overlay_male_mutation_CHITIN", "fg": 10081, "rotates": false }, + { "id": "overlay_female_mutation_CHITIN2", "fg": 10082, "rotates": false }, + { "id": "overlay_male_mutation_CHITIN2", "fg": 10083, "rotates": false }, + { "id": "overlay_female_mutation_CHITIN3", "fg": 10084, "rotates": false }, + { "id": "overlay_male_mutation_CHITIN3", "fg": 10085, "rotates": false }, + + { "id": "overlay_female_mutation_CHITIN_FUR", "fg": 10086, "rotates": false }, + { "id": "overlay_male_mutation_CHITIN_FUR", "fg": 10087, "rotates": false }, + { "id": "overlay_female_mutation_CHITIN_FUR2", "fg": 10088, "rotates": false }, + { "id": "overlay_male_mutation_CHITIN_FUR2", "fg": 10089, "rotates": false }, + + { "id": "overlay_female_mutation_THORNS", "fg": 10090, "rotates": false }, + { "id": "overlay_male_mutation_THORNS", "fg": 10091, "rotates": false }, + + { "id": "overlay_female_mutation_TROGLO", "fg": 10092, "rotates": false }, + { "id": "overlay_male_mutation_TROGLO", "fg": 10093, "rotates": false }, + { "id": "overlay_female_mutation_TROGLO2", "fg": 10094, "rotates": false }, + { "id": "overlay_male_mutation_TROGLO2", "fg": 10095, "rotates": false }, + { "id": "overlay_female_mutation_TROGLO3", "fg": 10096, "rotates": false }, + { "id": "overlay_male_mutation_TROGLO3", "fg": 10097, "rotates": false }, + + { "id": "overlay_female_mutation_LYNX_FUR", "fg": 10098, "rotates": false }, + { "id": "overlay_male_mutation_LYNX_FUR", "fg": 10099, "rotates": false }, + + { "id": "overlay_mutation_TAIL_LONG", "fg": 10100, "rotates": false }, + + { "id": "overlay_mutation_WHISKERS", "fg": 10101, "rotates": false }, + + { "id": "overlay_mutation_BEAK_PECK", "fg": 10102, "rotates": false }, + { "id": "overlay_mutation_BEAK_HUM", "fg": 10103, "rotates": false }, + + { "id": "overlay_mutation_CLAWS", "fg": 10104, "rotates": false }, + { "id": "overlay_mutation_CLAWS_RETRACT", "fg": 10104, "rotates": false }, + { "id": "overlay_mutation_CLAWS_TENTACLE", "fg": 10104, "rotates": false }, + { "id": "overlay_mutation_CLAWS_ST", "fg": 10105, "rotates": false }, + { "id": "overlay_mutation_SHELL", "fg": 10106, "rotates": false }, + { "id": "overlay_mutation_SHELL2", "fg": 10107, "rotates": false }, + + + { "id": "overlay_mutation_INSECT_ARMS", "fg": 10108, "rotates": false }, + { "id": "overlay_mutation_ARACHNID_ARMS", "fg": 10109, "rotates": false }, + + { "id": "overlay_mutation_MANDIBLES", "fg": 10110, "rotates": false}, + + { "id": "overlay_mutation_MOUSE_EARS", "fg": 10111, "rotates": false}, + + { "id": "overlay_female_mutation_VISCOUS", "fg": 10112, "rotates": false }, + { "id": "overlay_male_mutation_VISCOUS", "fg": 10113, "rotates": false }, + + { "id": "overlay_female_mutation_PLANTSKIN", "fg": 10038, "rotates": false }, + + { "id": "overlay_female_mutation_PLANTSKIN", "fg": 10038, "rotates": false }, + { "id": "overlay_male_mutation_PLANTSKIN", "fg": 10039, "rotates": false }, + { "id": "overlay_female_mutation_CHLOROMORPH", "fg": 10038, "rotates": false }, + { "id": "overlay_male_mutation_CHLOROMORPH", "fg": 10039, "rotates": false }, + { "id": "overlay_female_mutation_BARK", "fg": 10040, "rotates": false }, + { "id": "overlay_male_mutation_BARK", "fg": 10041, "rotates": false }, + { "id": "overlay_male_mutation_LEAVES", "fg": 10042, "rotates": false }, + { "id": "overlay_female_mutation_LEAVES", "fg": 10042, "rotates": false }, + { "id": "overlay_male_mutation_LEAVES_TEMP", "fg": 10042, "rotates": false }, + { "id": "overlay_female_mutation_LEAVES_TEMP", "fg": 10042, "rotates": false }, + { "id": "overlay_mutation_FLOWERS", "fg": 10043, "rotates": false }, + + { "id": "overlay_mutation_SKIN_PALE_JP", "fg": 10272, "rotates": false }, + { "id": "overlay_mutation_SKIN_LIGHT_JP", "fg": 10273, "rotates": false }, + { "id": "overlay_mutation_SKIN_MEDIUM_JP", "fg": 10274, "rotates": false }, + { "id": "overlay_mutation_SKIN_TAN_JP", "fg": 10275, "rotates": false }, + { "id": "overlay_mutation_SKIN_DARK_JP", "fg": 10276, "rotates": false }, + { "id": "overlay_mutation_SKIN_PINK_JP", "fg": 10277, "rotates": false }, + + { "id": "overlay_mutation_EYE_BLUE_JP", "fg": 10288, "rotates": false }, + { "id": "overlay_mutation_EYE_BROWN_JP", "fg": 10289, "rotates": false }, + { "id": "overlay_mutation_EYE_GRAY_JP", "fg": 10290, "rotates": false }, + { "id": "overlay_mutation_EYE_GREEN_JP", "fg": 10291, "rotates": false }, + { "id": "overlay_mutation_EYE_RED_JP", "fg": 10292, "rotates": false }, + { "id": "overlay_mutation_EYE_YELLOW_JP", "fg": 10293, "rotates": false }, + { "id": "overlay_mutation_EYE_PURPLE_JP", "fg": 10294, "rotates": false }, + + { "id": "overlay_mutation_EYE_BLUE_JP_2", "fg": 10304, "rotates": false }, + { "id": "overlay_mutation_EYE_BROWN_JP_2", "fg": 10305, "rotates": false }, + { "id": "overlay_mutation_EYE_GRAY_JP_2", "fg": 10306, "rotates": false }, + { "id": "overlay_mutation_EYE_GREEN_JP_2", "fg": 10307, "rotates": false }, + { "id": "overlay_mutation_EYE_RED_JP_2", "fg": 10308, "rotates": false }, + { "id": "overlay_mutation_EYE_YELLOW_JP_2", "fg": 10309, "rotates": false }, + { "id": "overlay_mutation_EYE_PURPLE_JP_2", "fg": 10310, "rotates": false }, + + { "id": "overlay_mutation_hair1blondjp", "fg": 10320, "rotates": false }, + { "id": "overlay_mutation_hair1redjp", "fg": 10321, "rotates": false }, + { "id": "overlay_mutation_hair1brownjp", "fg": 10322, "rotates": false }, + { "id": "overlay_mutation_hair1blackjp", "fg": 10323, "rotates": false }, + { "id": "overlay_mutation_hair1whitejp", "fg": 10324, "rotates": false }, + { "id": "overlay_mutation_hair1greyjp", "fg": 10325, "rotates": false }, + { "id": "overlay_mutation_hair1pinkjp", "fg": 10326, "rotates": false }, + { "id": "overlay_mutation_hair1orangejp", "fg": 10327, "rotates": false }, + { "id": "overlay_mutation_hair1bluejp", "fg": 10328, "rotates": false }, + { "id": "overlay_mutation_hair1greenjp", "fg": 10329, "rotates": false }, + { "id": "overlay_mutation_hair1aquajp", "fg": 10330, "rotates": false }, + { "id": "overlay_mutation_hair1purplejp", "fg": 10331, "rotates": false }, + + { "id": "overlay_male_mutation_MCHEST_SKULL_WHITE", "fg": 10368, "rotates": false }, + { "id": "overlay_male_mutation_MCHEST_SKULL_BLACK", "fg": 10369, "rotates": false }, + { "id": "overlay_male_mutation_MCHEST_MCHEST_HEART", "fg": 10370, "rotates": false }, + { "id": "overlay_male_mutation_MCHEST_MCHEST_CROSS", "fg": 10371, "rotates": false }, + { "id": "overlay_male_mutation_MCHEST_MCHEST_FLOWER", "fg": 10372, "rotates": false }, + { "id": "overlay_male_mutation_MCHEST_MLEFTARM_BLACKOUT", "fg": 10373, "rotates": false }, + { "id": "overlay_male_mutation_MCHEST_MRIGHTARM_BLACKOUT", "fg": 10374, "rotates": false }, + { "id": "overlay_male_mutation_MRIGHTARM_BARBEDWIRE", "fg": 10375, "rotates": false }, + { "id": "overlay_male_mutation_MRIGHTLEG_WATER", "fg": 10376, "rotates": false }, + { "id": "overlay_male_mutation_MWHOLEBODY_TIGER", "fg": 10377, "rotates": false }, + { "id": "overlay_male_mutation_MWHOLEBODY_YAKUZA1", "fg": 10378, "rotates": false }, + { "id": "overlay_male_mutation_MWHOLEBODY_YAKUZA2", "fg": 10379, "rotates": false }, + { "id": "overlay_male_mutation_MWHOLEBODY_SKELETON", "fg": 10380, "rotates": false }, + { "id": "overlay_male_mutation_MWHOLEBODY_MCHEST_SCAR", "fg": 10384, "rotates": false }, + + { "id": "overlay_mutation_EYES_RED", "fg": 10400, "rotates": false }, + { "id": "overlay_mutation_FACE_JOKERSCAR", "fg": 10401, "rotates": false }, + { "id": "overlay_mutation_FACE_EYESCAR", "fg": 10402, "rotates": false }, + { "id": "overlay_mutation_EYES_SUNK", "fg": 10403, "rotates": false }, + { "id": "overlay_mutation_EYES_BLACKEYE", "fg": 10404, "rotates": false }, + { "id": "overlay_mutation_FACE_CLOWN", "fg": 10405, "rotates": false }, + { "id": "overlay_mutation_FACE_TEAR", "fg": 10406, "rotates": false }, + { "id": "overlay_mutation_FACE_BAGSEYES", "fg": 10407, "rotates": false }, + { "id": "overlay_mutation_FACE_REDPAINT", "fg": 10408, "rotates": false }, + { "id": "overlay_mutation_FACE_BLACKMETAL", "fg": 10409, "rotates": false }, + { "id": "overlay_mutation_LIPS_HOTPINK", "fg": 10410, "rotates": false }, + { "id": "overlay_mutation_LIPS_TEAL", "fg": 10411, "rotates": false }, + { "id": "overlay_mutation_LIPS_RED", "fg": 10412, "rotates": false }, + { "id": "overlay_mutation_FACE_BEYESHADOW", "fg": 10413, "rotates": false }, + { "id": "overlay_mutation_FACE_GEYESHADOW", "fg": 10414, "rotates": false }, + { "id": "overlay_mutation_FACE_REYESHADOW", "fg": 10415, "rotates": false }, + { "id": "overlay_mutation_FACE_BLUSH", "fg": 10416, "rotates": false }, + { "id": "overlay_mutation_FACE_SCAR", "fg": 10417, "rotates": false }, + + { "id": "overlay_mutation_FCHEST_CROSS", "fg": 10432, "rotates": false }, + { "id": "overlay_mutation_FCHEST_PIECE", "fg": 10433, "rotates": false }, + { "id": "overlay_mutation_FCHEST_UCROSS", "fg": 10434, "rotates": false }, + { "id": "overlay_mutation_FLARM_BLACKOUT", "fg": 10435, "rotates": false }, + { "id": "overlay_mutation_FLLEG_BARBEDWIRE", "fg": 10436, "rotates": false }, + { "id": "overlay_mutation_FRARM_FLAME", "fg": 10437, "rotates": false }, + { "id": "overlay_mutation_FRLEG_FLOWER", "fg": 10438, "rotates": false } + ] + }, + { + "file": "6_tiles_wide_monsters_160x128_11568-11603.png", + "sprite_width":160, + "sprite_height":128, + "sprite_offset_x":-48, + "sprite_offset_y":-48, + "tiles": + [ + { "id": "mon_mechaspider_queen", "fg": 11568, "rotates": false }, + { "id": "mon_mechaspider", "fg": 11569, "rotates": false }, + { "id": "broken_mechaspider", "fg": 11570, "rotates": false }, + { "id": "mon_generator_SCINET", "fg": 11571, "rotates": false }, + { "id": "mon_treent_green", "fg": 11572, "rotates": false }, + { "id": "mon_cyberdemon", "fg": 11573, "rotates": false }, + { "id": "mon_doom_archdemon", "fg": 11574, "rotates": false }, + { "id": "arachnotron_guts", "fg": 11575, "rotates": false }, + { "id": "mon_bear_mega", "fg": 11576, "rotates": false }, + { "id": "mon_bear_mega_mating", "fg": 11577, "rotates": false }, + { "id": "mon_bear_mega_kid", "fg": 11578, "rotates": false }, + { "id": "mon_zombie_bear_mega", "fg": 11579, "rotates": false }, + { "id": "mon_ant_acid_ultralisk", "fg": 11580, "rotates": false }, + { "id": "broken_tankbot", "fg": 11581, "rotates": false }, + { "id": "mon_albino_penguin", "fg": 11582, "rotates": false }, + { "id": "mon_skeleton_hulk", "fg": 11583, "rotates": false }, + { "id": "mon_revenant", "fg": 11584, "rotates": false }, + { "id": "mon_chickenbot", "fg": 11585, "rotates": false }, + { "id": "broken_chickenbot", "fg": 11586, "rotates": false }, + { "id": "mon_zombie_bonetitan", "fg": 11587, "rotates": false } + + ] + }, + { + "file": "7_expan2_32x32_11604-11651.png", + "sprite_offset_y":-16, + "tiles": + [ + { + "id": "overlay_worn_eboshi", + "fg": 11609, + "rotates": false + }, + { + "id": ["overlay_worn_bowhat", "overlay_worn_porkpie", "overlay_worn_tophat"], + "fg": 11610, + "rotates": false + }, + { + "id": ["overlay_worn_firehelmet", "overlay_worn_hat_hard_hooded"], + "fg": 11611, + "rotates": false + }, + { + "id": "overlay_worn_hat_hard", + "fg": 11612, + "rotates": false + }, + { + "id": "overlay_worn_miner_hat", + "fg": 11613, + "rotates": false + }, + { + "id": "overlay_worn_miner_hat_on", + "fg": 11614, + "rotates": false + }, + { + "id": "overlay_worn_hat_sombrero", + "fg": 11615, + "rotates": false + }, + { + "id": "overlay_worn_pickelhaube", + "fg": 11616, + "rotates": false + }, + { + "id": ["overlay_worn_straw_hat", "overlay_worn_10gal_hat"], + "fg": 11617, + "rotates": false + }, + { + "id": "overlay_worn_straw_fedora", + "fg": 11618, + "rotates": false + }, + { + "id": "overlay_worn_fedora", + "fg": 11619, + "rotates": false + }, + { + "id": ["overlay_effect_evil", "overlay_effect_attention", "overlay_effect_teleglow"], + "fg": 11620 + }, + { + "id": "overlay_effect_cold", + "fg": 11621 + }, + { + "id": "overlay_effect_hot", + "fg": 11622 + }, + { + "id": "overlay_effect_downed", + "fg": 11623 + }, + { + "id": "overlay_effect_grabbed", + "fg": 11624 + }, + { + "id": ["overlay_effect_winded", "overlay_effect_asthma"], + "fg": 11625 + }, + { + "id": "overlay_effect_stunned", + "fg": 11626 + }, + { + "id": ["overlay_effect_foodpoison", "overlay_effect_nausea"], + "fg": 11627 + }, + { + "id": "overlay_effect_frostbite", + "fg": 11628 + }, + { + "id": "overlay_effect_blisters", + "fg": 11629 + }, + { + "id": "overlay_effect_poison", + "fg": 11630 + }, + { + "id": "overlay_effect_badpoison", + "fg": 11631 + }, + { + "id": "overlay_effect_paralyzepoison", + "fg": 11632 + }, + { + "id": "overlay_effect_common_cold", + "fg": 11633 + }, + { + "id": ["overlay_effect_flu", "overlay_effect_Influenza"], + "fg": 11634 + }, + { + "id": "overlay_effect_spores", + "fg": 11635 + }, + { + "id": "overlay_effect_fungus", + "fg": 11636 + }, + { + "id": "overlay_effect_visuals", + "fg": 11637 + }, + { + "id": ["overlay_effect_deaf", "overlay_effect_earphones"], + "fg": 11638 + }, + { + "id": "overlay_effect_onfire", + "fg": 11639 + }, + { + "id": "effect_onfire", + "fg": 11639 + }, + { + "id": "onfire", + "fg": 11639 + }, + { + "id": "overlay_effect_sleep", + "fg": 11640 + }, + { + "id": "overlay_effect_docile", + "fg": 11641 + }, + { + "id": "overlay_effect_pet", + "fg": 11642 + }, + { + "id": "overlay_effect_pacified", + "fg": 11643 + }, + { + "id": "overlay_effect_shrieking", + "fg": 11644 + }, + { + "id": "overlay_effect_milked", + "fg": 11645 + }, + { + "id": "overlay_effect_haslight", + "fg": 11646 + } + ] + }, + { + "file": "8_tiles-monster-variants_32x32_11652-16851.png", + "tiles": + [ + { + "id": "mon_zombie_tough", + "fg": [ + { "weight":3, "sprite":2764}, + { "weight":3, "sprite":2765}, + { "weight":3, "sprite":2766}, + { "weight":3, "sprite":11668}, + { "weight":3, "sprite":11669}, + { "weight":2, "sprite":11670}, + { "weight":1, "sprite":11671}, + { "weight":1, "sprite":11672}, + { "weight":1, "sprite":11673}, + { "weight":1, "sprite":11674}, + { "weight":1, "sprite":11675}, + { "weight":1, "sprite":11676} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_tough_2", + "fg": [ + { "weight":3, "sprite":2764}, + { "weight":3, "sprite":2765}, + { "weight":3, "sprite":2766}, + { "weight":3, "sprite":11668}, + { "weight":3, "sprite":11669}, + { "weight":2, "sprite":11670}, + { "weight":1, "sprite":11671}, + { "weight":1, "sprite":11672}, + { "weight":1, "sprite":11673}, + { "weight":1, "sprite":11674}, + { "weight":1, "sprite":11675}, + { "weight":1, "sprite":11676} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_tough_3", + "fg": [ + { "weight":3, "sprite":2764}, + { "weight":3, "sprite":2765}, + { "weight":3, "sprite":2766}, + { "weight":3, "sprite":11668}, + { "weight":3, "sprite":11669}, + { "weight":2, "sprite":11670}, + { "weight":1, "sprite":11671}, + { "weight":1, "sprite":11672}, + { "weight":1, "sprite":11673}, + { "weight":1, "sprite":11674}, + { "weight":1, "sprite":11675}, + { "weight":1, "sprite":11676} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_fat", + "fg": [ + { "weight":3, "sprite":2707}, + { "weight":3, "sprite":2708}, + { "weight":1, "sprite":2709}, + { "weight":3, "sprite":11684}, + { "weight":3, "sprite":11685}, + { "weight":3, "sprite":11686}, + { "weight":1, "sprite":11687}, + { "weight":1, "sprite":11688}, + { "weight":3, "sprite":11689}, + { "weight":3, "sprite":11690}, + { "weight":3, "sprite":11691}, + { "weight":2, "sprite":11692}, + { "weight":1, "sprite":11693} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_fat_2", + "fg": [ + { "weight":3, "sprite":2707}, + { "weight":3, "sprite":2708}, + { "weight":1, "sprite":2709}, + { "weight":3, "sprite":11684}, + { "weight":3, "sprite":11685}, + { "weight":3, "sprite":11686}, + { "weight":1, "sprite":11687}, + { "weight":1, "sprite":11688}, + { "weight":3, "sprite":11689}, + { "weight":3, "sprite":11690}, + { "weight":3, "sprite":11691}, + { "weight":2, "sprite":11692}, + { "weight":1, "sprite":11693} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_fat_3", + "fg": [ + { "weight":3, "sprite":2707}, + { "weight":3, "sprite":2708}, + { "weight":1, "sprite":2709}, + { "weight":3, "sprite":11684}, + { "weight":3, "sprite":11685}, + { "weight":3, "sprite":11686}, + { "weight":1, "sprite":11687}, + { "weight":1, "sprite":11688}, + { "weight":3, "sprite":11689}, + { "weight":3, "sprite":11690}, + { "weight":3, "sprite":11691}, + { "weight":2, "sprite":11692}, + { "weight":1, "sprite":11693} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_looter", + "fg": [ + { "weight":1, "sprite":4608}, + { "weight":1, "sprite":11700}, + { "weight":1, "sprite":11701}, + { "weight":1, "sprite":11702}, + { "weight":1, "sprite":11703}, + { "weight":1, "sprite":11704}, + { "weight":1, "sprite":11705}, + { "weight":1, "sprite":11706}, + { "weight":1, "sprite":11707}, + { "weight":1, "sprite":11708}, + { "weight":1, "sprite":11709}, + { "weight":1, "sprite":11710}, + { "weight":1, "sprite":11711} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_m1911", + "fg": [ + { "weight":1, "sprite":4609}, + { "weight":1, "sprite":11716}, + { "weight":1, "sprite":11717}, + { "weight":1, "sprite":11718} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_glock", + "fg": [ + { "weight":1, "sprite":4610}, + { "weight":1, "sprite":11732}, + { "weight":1, "sprite":11733} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_melee", + "fg": [ + { "weight":1, "sprite":4611}, + { "weight":1, "sprite":11748}, + { "weight":1, "sprite":11749}, + { "weight":1, "sprite":11750}, + { "weight":1, "sprite":11751} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_raider", + "fg": [ + { "weight":1, "sprite":4612}, + { "weight":1, "sprite":11764}, + { "weight":1, "sprite":11765}, + { "weight":1, "sprite":11766} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_rifle", + "fg": [ + { "weight":1, "sprite":4613}, + { "weight":1, "sprite":11780}, + { "weight":1, "sprite":11781}, + { "weight":1, "sprite":11782} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_scrapper", + "fg": [ + { "weight":1, "sprite":4614}, + { "weight":1, "sprite":11796}, + { "weight":1, "sprite":11797} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_shotgun", + "fg": [ + { "weight":1, "sprite":4615}, + { "weight":1, "sprite":11812} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_smg", + "fg": [ + { "weight":1, "sprite":4616}, + { "weight":1, "sprite":11828} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_alpha", + "fg": [ + { "weight":1, "sprite":4617}, + { "weight":1, "sprite":11844} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_super_psycho", + "fg": [ + { "weight":1, "sprite":4618}, + { "weight":1, "sprite":11860} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_bandit_super_snipe", + "fg": [ + { "weight":1, "sprite":4619}, + { "weight":1, "sprite":11876} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_grabber", + "fg": [ + { "weight":1, "sprite":2717}, + { "weight":1, "sprite":11892}, + { "weight":1, "sprite":11893}, + { "weight":1, "sprite":11894}, + { "weight":1, "sprite":11895}, + { "weight":1, "sprite":11896}, + { "weight":1, "sprite":11897}, + { "weight":1, "sprite":11898}, + { "weight":1, "sprite":11899} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie", + "fg": [ + { "weight":3, "sprite":2666}, + { "weight":3, "sprite":2667}, + { "weight":3, "sprite":2668}, + { "weight":3, "sprite":11652}, + { "weight":3, "sprite":11653}, + { "weight":3, "sprite":11654}, + { "weight":3, "sprite":11655}, + { "weight":3, "sprite":11656}, + { "weight":3, "sprite":11657}, + { "weight":3, "sprite":11658}, + { "weight":3, "sprite":11659}, + { "weight":1, "sprite":11660}, + { "weight":1, "sprite":11661}, + { "weight":3, "sprite":11662}, + { "weight":3, "sprite":11663}, + { "weight":3, "sprite":11664}, + { "weight":3, "sprite":11665}, + { "weight":3, "sprite":11666}, + { "weight":3, "sprite":11667}, + { "weight":3, "sprite":12084}, + { "weight":3, "sprite":12085}, + { "weight":3, "sprite":12086}, + { "weight":3, "sprite":12087}, + { "weight":3, "sprite":12088}, + { "weight":3, "sprite":12089}, + { "weight":3, "sprite":12090}, + { "weight":3, "sprite":12091} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_2", + "fg": [ + { "weight":3, "sprite":2666}, + { "weight":3, "sprite":2667}, + { "weight":3, "sprite":2668}, + { "weight":3, "sprite":11652}, + { "weight":3, "sprite":11653}, + { "weight":3, "sprite":11654}, + { "weight":3, "sprite":11655}, + { "weight":3, "sprite":11656}, + { "weight":3, "sprite":11657}, + { "weight":3, "sprite":11658}, + { "weight":3, "sprite":11659}, + { "weight":1, "sprite":11660}, + { "weight":1, "sprite":11661}, + { "weight":3, "sprite":11662}, + { "weight":3, "sprite":11663}, + { "weight":3, "sprite":11664}, + { "weight":3, "sprite":11665}, + { "weight":3, "sprite":11666}, + { "weight":3, "sprite":11667}, + { "weight":3, "sprite":12084}, + { "weight":3, "sprite":12085}, + { "weight":3, "sprite":12086}, + { "weight":3, "sprite":12087}, + { "weight":3, "sprite":12088}, + { "weight":3, "sprite":12089}, + { "weight":3, "sprite":12090}, + { "weight":3, "sprite":12091} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_3", + "fg": [ + { "weight":3, "sprite":2666}, + { "weight":3, "sprite":2667}, + { "weight":3, "sprite":2668}, + { "weight":3, "sprite":11652}, + { "weight":3, "sprite":11653}, + { "weight":3, "sprite":11654}, + { "weight":3, "sprite":11655}, + { "weight":3, "sprite":11656}, + { "weight":3, "sprite":11657}, + { "weight":3, "sprite":11658}, + { "weight":3, "sprite":11659}, + { "weight":1, "sprite":11660}, + { "weight":1, "sprite":11661}, + { "weight":3, "sprite":11662}, + { "weight":3, "sprite":11663}, + { "weight":3, "sprite":11664}, + { "weight":3, "sprite":11665}, + { "weight":3, "sprite":11666}, + { "weight":3, "sprite":11667}, + { "weight":3, "sprite":12084}, + { "weight":3, "sprite":12085}, + { "weight":3, "sprite":12086}, + { "weight":3, "sprite":12087}, + { "weight":3, "sprite":12088}, + { "weight":3, "sprite":12089}, + { "weight":3, "sprite":12090}, + { "weight":3, "sprite":12091} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_twisted_body", + "fg": [ + { "weight":1, "sprite":2647}, + { "weight":1, "sprite":11908}, + { "weight":1, "sprite":11909} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_scientist", + "fg": [ + { "weight":1, "sprite":2586}, + { "weight":1, "sprite":11924}, + { "weight":1, "sprite":11925}, + { "weight":1, "sprite":11926}, + { "weight":1, "sprite":11927} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_broken_cyborg", + "fg": [ + { "weight":1, "sprite":2362}, + { "weight":1, "sprite":11940}, + { "weight":1, "sprite":11941}, + { "weight":1, "sprite":11942}, + { "weight":1, "sprite":11943}, + { "weight":1, "sprite":11944}, + { "weight":1, "sprite":11945} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_child", + "fg": [ + { "weight":3, "sprite":2685}, + { "weight":3, "sprite":2686}, + { "weight":3, "sprite":2687}, + { "weight":3, "sprite":11956}, + { "weight":3, "sprite":11957}, + { "weight":3, "sprite":11958}, + { "weight":3, "sprite":11959}, + { "weight":3, "sprite":11960}, + { "weight":3, "sprite":11961}, + { "weight":3, "sprite":11962}, + { "weight":3, "sprite":11963}, + { "weight":3, "sprite":11964}, + { "weight":3, "sprite":11965}, + { "weight":3, "sprite":11966}, + { "weight":3, "sprite":11967}, + { "weight":3, "sprite":11968}, + { "weight":3, "sprite":11969} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_child_2", + "fg": [ + { "weight":3, "sprite":2685}, + { "weight":3, "sprite":2686}, + { "weight":3, "sprite":2687}, + { "weight":3, "sprite":11956}, + { "weight":3, "sprite":11957}, + { "weight":3, "sprite":11958}, + { "weight":3, "sprite":11959}, + { "weight":3, "sprite":11960}, + { "weight":3, "sprite":11961}, + { "weight":3, "sprite":11962} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_child_3", + "fg": [ + { "weight":3, "sprite":2685}, + { "weight":3, "sprite":2686}, + { "weight":3, "sprite":2687}, + { "weight":3, "sprite":11956}, + { "weight":3, "sprite":11957}, + { "weight":3, "sprite":11958}, + { "weight":3, "sprite":11959}, + { "weight":3, "sprite":11960}, + { "weight":3, "sprite":11961}, + { "weight":3, "sprite":11962} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_child_pk", + "fg": [ + { "weight":3, "sprite":2688}, + { "weight":3, "sprite":11972}, + { "weight":3, "sprite":11973} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_survivor", + "fg": [ + { "weight":3, "sprite":2760}, + { "weight":3, "sprite":11988}, + { "weight":3, "sprite":11989}, + { "weight":3, "sprite":11990}, + { "weight":3, "sprite":11991}, + { "weight":3, "sprite":11992}, + { "weight":3, "sprite":11993} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_screecher", + "fg": [ + { "weight":3, "sprite":2748}, + { "weight":3, "sprite":12004}, + { "weight":3, "sprite":12005}, + { "weight":3, "sprite":12006}, + { "weight":3, "sprite":12007} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_shrieker", + "fg": [ + { "weight":3, "sprite":2752}, + { "weight":3, "sprite":12020}, + { "weight":3, "sprite":12021}, + { "weight":3, "sprite":12022} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_shriekling", + "fg": [ + { "weight":3, "sprite":2753}, + { "weight":3, "sprite":12036}, + { "weight":3, "sprite":12037}, + { "weight":3, "sprite":12038} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_runner", + "fg": [ + { "weight":3, "sprite":2740}, + { "weight":3, "sprite":12052}, + { "weight":3, "sprite":12053}, + { "weight":3, "sprite":12054}, + { "weight":3, "sprite":12055} + ], + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_pk", + "fg": [ + { "weight":3, "sprite":2735}, + { "weight":3, "sprite":12068}, + { "weight":3, "sprite":12069}, + { "weight":3, "sprite":12070}, + { "weight":3, "sprite":12071}, + { "weight":3, "sprite":12072}, + { "weight":3, "sprite":12073}, + { "weight":3, "sprite":12074}, + { "weight":3, "sprite":12075} + ], + "bg": 967, + "rotates": false + } + ] + }, + { + "file": "9_tiles-connected_32x32_16852-22051.png", + "tiles": + [ + { + "id": ["t_water_sh", "t_swater_sh"], + "fg": 16852, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": [ + { "weight":30, "sprite":16852}, + { "weight":30, "sprite":27613}, + { "weight":30, "sprite":27614}, + { "weight":30, "sprite":27615}, + { "weight":30, "sprite":27616}, + { "weight":30, "sprite":27617}, + { "weight":30, "sprite":27618}, + { "weight":30, "sprite":27619}, + { "weight":30, "sprite":27620} + ], + "bg": 1012, + "id": "center" + }, + { + "fg": [ + { "weight":30, "sprite":16853}, + { "weight":30, "sprite":27621}, + { "weight":30, "sprite":27622}, + { "weight":30, "sprite":27623}, + { "weight":30, "sprite":27624}, + { "weight":30, "sprite":27625}, + { "weight":30, "sprite":27626}, + { "weight":30, "sprite":27627}, + { "weight":30, "sprite":27628} + ], + "bg": 1012, + "id": "corner" + }, + { + "fg": [ + { "weight":30, "sprite":16854}, + { "weight":30, "sprite":27629}, + { "weight":30, "sprite":27630}, + { "weight":30, "sprite":27631}, + { "weight":30, "sprite":27632}, + { "weight":30, "sprite":27633}, + { "weight":30, "sprite":27634}, + { "weight":30, "sprite":27635}, + { "weight":30, "sprite":27636} + ], + "bg": 1012, + "id": "t_connection" + }, + { + "fg": [ + { "weight":30, "sprite":16855}, + { "weight":30, "sprite":27637}, + { "weight":30, "sprite":27638}, + { "weight":30, "sprite":27639}, + { "weight":30, "sprite":27640}, + { "weight":30, "sprite":27641}, + { "weight":30, "sprite":27642}, + { "weight":30, "sprite":27643}, + { "weight":30, "sprite":27644} + ], + "bg": 1012, + "id": "edge" + }, + { + "fg": [ + { "weight":30, "sprite":16856}, + { "weight":30, "sprite":27645}, + { "weight":30, "sprite":27646}, + { "weight":30, "sprite":27647}, + { "weight":30, "sprite":27648}, + { "weight":30, "sprite":27649}, + { "weight":30, "sprite":27650}, + { "weight":30, "sprite":27651}, + { "weight":30, "sprite":27652} + ], + "bg": 1012, + "id": "end_piece" + }, + + { + "fg": [ + { "weight":30, "sprite":16857}, + { "weight":30, "sprite":27653}, + { "weight":30, "sprite":27654}, + { "weight":30, "sprite":27655}, + { "weight":30, "sprite":27656}, + { "weight":30, "sprite":27657}, + { "weight":30, "sprite":27658}, + { "weight":30, "sprite":27659}, + { "weight":30, "sprite":27660} + ], + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": ["t_water_sh_season_winter", "t_swater_sh_season_winter"], + "fg": 16852, + "bg": 992, + "multitile": true, + "additional_tiles": [ + { + "fg": [ + { "weight":30, "sprite":16852}, + { "weight":30, "sprite":27613}, + { "weight":30, "sprite":27614}, + { "weight":30, "sprite":27615}, + { "weight":30, "sprite":27616}, + { "weight":30, "sprite":27617}, + { "weight":30, "sprite":27618}, + { "weight":30, "sprite":27619}, + { "weight":30, "sprite":27620} + ], + "bg": 992, + "id": "center" + }, + { + "fg": [ + { "weight":30, "sprite":16853}, + { "weight":30, "sprite":27621}, + { "weight":30, "sprite":27622}, + { "weight":30, "sprite":27623}, + { "weight":30, "sprite":27624}, + { "weight":30, "sprite":27625}, + { "weight":30, "sprite":27626}, + { "weight":30, "sprite":27627}, + { "weight":30, "sprite":27628} + ], + "bg": 992, + "id": "corner" + }, + { + "fg": [ + { "weight":30, "sprite":16854}, + { "weight":30, "sprite":27629}, + { "weight":30, "sprite":27630}, + { "weight":30, "sprite":27631}, + { "weight":30, "sprite":27632}, + { "weight":30, "sprite":27633}, + { "weight":30, "sprite":27634}, + { "weight":30, "sprite":27635}, + { "weight":30, "sprite":27636} + ], + "bg": 992, + "id": "t_connection" + }, + { + "fg": [ + { "weight":30, "sprite":16855}, + { "weight":30, "sprite":27637}, + { "weight":30, "sprite":27638}, + { "weight":30, "sprite":27639}, + { "weight":30, "sprite":27640}, + { "weight":30, "sprite":27641}, + { "weight":30, "sprite":27642}, + { "weight":30, "sprite":27643}, + { "weight":30, "sprite":27644} + ], + "bg": 992, + "id": "edge" + }, + { + "fg": [ + { "weight":30, "sprite":16856}, + { "weight":30, "sprite":27645}, + { "weight":30, "sprite":27646}, + { "weight":30, "sprite":27647}, + { "weight":30, "sprite":27648}, + { "weight":30, "sprite":27649}, + { "weight":30, "sprite":27650}, + { "weight":30, "sprite":27651}, + { "weight":30, "sprite":27652} + ], + "bg": 992, + "id": "end_piece" + }, + + { + "fg": [ + { "weight":30, "sprite":16857}, + { "weight":30, "sprite":27653}, + { "weight":30, "sprite":27654}, + { "weight":30, "sprite":27655}, + { "weight":30, "sprite":27656}, + { "weight":30, "sprite":27657}, + { "weight":30, "sprite":27658}, + { "weight":30, "sprite":27659}, + { "weight":30, "sprite":27660} + ], + "bg": 992, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": ["t_water_dp", "t_swater_dp"], + "fg": 16858, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": [ + { "weight":30, "sprite":16858}, + { "weight":30, "sprite":27565}, + { "weight":30, "sprite":27566}, + { "weight":30, "sprite":27567}, + { "weight":30, "sprite":27568}, + { "weight":30, "sprite":27569}, + { "weight":30, "sprite":27570}, + { "weight":30, "sprite":27571}, + { "weight":30, "sprite":27572} + ], + "bg": 1012, + "id": "center" + }, + { + "fg": [ + { "weight":30, "sprite":16859}, + { "weight":30, "sprite":27573}, + { "weight":30, "sprite":27574}, + { "weight":30, "sprite":27575}, + { "weight":30, "sprite":27576}, + { "weight":30, "sprite":27577}, + { "weight":30, "sprite":27578}, + { "weight":30, "sprite":27579}, + { "weight":30, "sprite":27580} + ], + "bg": 1012, + "id": "corner" + }, + { + "fg": [ + { "weight":30, "sprite":16860}, + { "weight":30, "sprite":27581}, + { "weight":30, "sprite":27582}, + { "weight":30, "sprite":27583}, + { "weight":30, "sprite":27584}, + { "weight":30, "sprite":27585}, + { "weight":30, "sprite":27586}, + { "weight":30, "sprite":27587}, + { "weight":30, "sprite":27588} + ], + "bg": 1012, + "id": "t_connection" + }, + { + "fg": [ + { "weight":30, "sprite":16861}, + { "weight":30, "sprite":27589}, + { "weight":30, "sprite":27590}, + { "weight":30, "sprite":27591}, + { "weight":30, "sprite":27592}, + { "weight":30, "sprite":27593}, + { "weight":30, "sprite":27594}, + { "weight":30, "sprite":27595}, + { "weight":30, "sprite":27596} + ], + "bg": 1012, + "id": "edge" + }, + { + "fg": [ + { "weight":30, "sprite":16862}, + { "weight":30, "sprite":27597}, + { "weight":30, "sprite":27598}, + { "weight":30, "sprite":27599}, + { "weight":30, "sprite":27600}, + { "weight":30, "sprite":27601}, + { "weight":30, "sprite":27602}, + { "weight":30, "sprite":27603}, + { "weight":30, "sprite":27604} + ], + "bg": 1012, + "id": "end_piece" + }, + { + "fg": [ + { "weight":30, "sprite":16863}, + { "weight":30, "sprite":27605}, + { "weight":30, "sprite":27606}, + { "weight":30, "sprite":27607}, + { "weight":30, "sprite":27608}, + { "weight":30, "sprite":27609}, + { "weight":30, "sprite":27610}, + { "weight":30, "sprite":27611}, + { "weight":30, "sprite":27612} + ], + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": ["t_water_dp_season_winter", "t_swater_dp_season_winter"], + "fg": 16868, + "bg": 992, + "multitile": true, + "additional_tiles": [ + { + "fg": [ + { "weight":30, "sprite":16858}, + { "weight":30, "sprite":27565}, + { "weight":30, "sprite":27566}, + { "weight":30, "sprite":27567}, + { "weight":30, "sprite":27568}, + { "weight":30, "sprite":27569}, + { "weight":30, "sprite":27570}, + { "weight":30, "sprite":27571}, + { "weight":30, "sprite":27572} + ], + "bg": 992, + "id": "center" + }, + { + "fg": [ + { "weight":30, "sprite":16859}, + { "weight":30, "sprite":27573}, + { "weight":30, "sprite":27574}, + { "weight":30, "sprite":27575}, + { "weight":30, "sprite":27576}, + { "weight":30, "sprite":27577}, + { "weight":30, "sprite":27578}, + { "weight":30, "sprite":27579}, + { "weight":30, "sprite":27580} + ], + "bg": 992, + "id": "corner" + }, + { + "fg": [ + { "weight":30, "sprite":16860}, + { "weight":30, "sprite":27581}, + { "weight":30, "sprite":27582}, + { "weight":30, "sprite":27583}, + { "weight":30, "sprite":27584}, + { "weight":30, "sprite":27585}, + { "weight":30, "sprite":27586}, + { "weight":30, "sprite":27587}, + { "weight":30, "sprite":27588} + ], + "bg": 992, + "id": "t_connection" + }, + { + "fg": [ + { "weight":30, "sprite":16861}, + { "weight":30, "sprite":27589}, + { "weight":30, "sprite":27590}, + { "weight":30, "sprite":27591}, + { "weight":30, "sprite":27592}, + { "weight":30, "sprite":27593}, + { "weight":30, "sprite":27594}, + { "weight":30, "sprite":27595}, + { "weight":30, "sprite":27596} + ], + "bg": 992, + "id": "edge" + }, + { + "fg": [ + { "weight":30, "sprite":16862}, + { "weight":30, "sprite":27597}, + { "weight":30, "sprite":27598}, + { "weight":30, "sprite":27599}, + { "weight":30, "sprite":27600}, + { "weight":30, "sprite":27601}, + { "weight":30, "sprite":27602}, + { "weight":30, "sprite":27603}, + { "weight":30, "sprite":27604} + ], + "bg": 992, + "id": "end_piece" + }, + + { + "fg": [ + { "weight":30, "sprite":16863}, + { "weight":30, "sprite":27605}, + { "weight":30, "sprite":27606}, + { "weight":30, "sprite":27607}, + { "weight":30, "sprite":27608}, + { "weight":30, "sprite":27609}, + { "weight":30, "sprite":27610}, + { "weight":30, "sprite":27611}, + { "weight":30, "sprite":27612} + ], + "bg": 992, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": ["t_grass", "t_grass_long", "t_grass_golf"], + "fg": 16884, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": 16884, + "bg": 1012, + "id": "center" + }, + { + "fg": [ 16885, 16886, 16887, 16888 ], + "bg": 1012, + "id": "corner" + }, + { + "fg": [ 16889, 16890, 16891, 16892], + "bg": 1012, + "id": "t_connection" + }, + { + "fg": [ 16893, 16894], + "bg": 1012, + "id": "edge" + }, + { + "fg": [ 16895, 16896, 16897, 16898], + "bg": 1012, + "id": "end_piece" + }, + + { + "fg": 16899, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": ["t_grass_season_summer", "t_grass_golf_season_summer"], + "fg": 16900, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": 16900, + "bg": 1012, + "id": "center" + }, + { + "fg": [ 16901, 16902, 16903, 16904 ], + "bg": 1012, + "id": "corner" + }, + { + "fg": [ 16905, 16906, 16907, 16908 ], + "bg": 1012, + "id": "t_connection" + }, + { + "fg": [ 16909, 16910 ], + "bg": 1012, + "id": "edge" + }, + { + "fg": [ 16911, 16912, 16913, 16914 ], + "bg": 1012, + "id": "end_piece" + }, + + { + "fg": 16915, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": ["t_grass_season_autumn", "t_grass_golf_season_autumn"], + "fg": 16916, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": 16916, + "bg": 1012, + "id": "center" + }, + { + "fg": [ 16917, 16918, 16919, 16920 ], + "bg": 1012, + "id": "corner" + }, + { + "fg": [ 16921, 16922, 16923, 16924], + "bg": 1012, + "id": "t_connection" + }, + { + "fg": [ 16925, 16926], + "bg": 1012, + "id": "edge" + }, + { + "fg": [ 16927, 16928, 16929, 16930], + "bg": 1012, + "id": "end_piece" + }, + + { + "fg": 16931, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": "f_rubble", + "fg": 16932, + "bg": 16948, + "multitile": true, + "additional_tiles": [ + { + "fg": 16932, + "bg": 16948, + "id": "center" + }, + { + "fg": [ 16933, 16934, 16935, 16936 ], + "bg": [ 16949, 16950, 16951, 16952 ], + "id": "corner" + }, + { + "fg": [ 16937, 16938, 16939, 16940], + "bg": [ 16953, 16954, 16955, 16956], + "id": "t_connection" + }, + { + "fg": [ 16941, 16942], + "bg": [ 16957, 16958], + "id": "edge" + }, + { + "fg": [ 16943, 16944, 16945, 16946], + "bg": [ 16959, 16960, 16961, 16962], + "id": "end_piece" + }, + + { + "fg": 16947, + "bg": 16963, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": "f_rubble_rock", + "fg": 16964, + "bg": 16980, + "multitile": true, + "additional_tiles": [ + { + "fg": 16964, + "bg": 16980, + "id": "center" + }, + { + "fg": [ 16965, 16966, 16967, 16968 ], + "bg": [ 16981, 16982, 16983, 16984 ], + "id": "corner" + }, + { + "fg": [ 16969, 16970, 16971, 16972], + "bg": [ 16985, 16986, 16987, 16988], + "id": "t_connection" + }, + { + "fg": [ 16973, 16974], + "bg": [ 16989, 16990], + "id": "edge" + }, + { + "fg": [ 16975, 16976, 16977, 16978], + "bg": [ 16991, 16992, 16993, 16994], + "id": "end_piece" + }, + + { + "fg": 16979, + "bg": 16995, + "id": "unconnected" + } + ], + "rotates": true + }, + { + "id": ["t_lava", "tr_lava"], + "fg": 16996, + "bg": 985, + "multitile": true, + "additional_tiles": [ + { + "fg": 16996, + "bg": 985, + "id": "center" + }, + { + "fg": [ 16997, 16998, 16999, 17000 ], + "bg": 985, + "id": "corner" + }, + { + "fg": [ 17001, 17002, 17003, 17004], + "bg": 985, + "id": "t_connection" + }, + { + "fg": [ 17005, 17006], + "bg": 985, + "id": "edge" + }, + { + "fg": [ 17007, 17008, 17009, 17010], + "bg": 985, + "id": "end_piece" + }, + + { + "fg": 17011, + "bg": 985, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "fd_web", + "fg": 17012, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17012, + "bg": 0, + "id": "center" + }, + { + "fg": [ 17013, 17014, 17015, 17016 ], + "bg": 0, + "id": "corner" + }, + { + "fg": [ 17017, 17018, 17019, 17020], + "bg": 0, + "id": "t_connection" + }, + { + "fg": [ 17021, 17022], + "bg": 0, + "id": "edge" + }, + { + "fg": [ 17023, 17024, 17025, 17026], + "bg": 0, + "id": "end_piece" + }, + + { + "fg": 17027, + "bg": 0, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "fd_slime", + "fg": 17028, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17028, + "bg": 0, + "id": "center" + }, + { + "fg": [ 17029, 17030, 17031, 17032 ], + "bg": 0, + "id": "corner" + }, + { + "fg": [ 17033, 17034, 17035, 17036], + "bg": 0, + "id": "t_connection" + }, + { + "fg": [ 17037, 17038], + "bg": 0, + "id": "edge" + }, + { + "fg": [ 17039, 17040, 17041, 17042], + "bg": 0, + "id": "end_piece" + }, + + { + "fg": 17043, + "bg": 0, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "f_rubble_landfill", + "fg": 17044, + "bg": 16884, + "multitile": true, + "additional_tiles": [ + { + "fg": 17044, + "bg": 16884, + "id": "center" + }, + { + "fg": [ 17045, 17046, 17047, 17048 ], + "bg": [ 16885, 16886, 16887, 16888 ], + "id": "corner" + }, + { + "fg": [ 17049, 17050, 17051, 17052], + "bg": [ 16889, 16890, 16891, 16892], + "id": "t_connection" + }, + { + "fg": [ 17053, 17054], + "bg": [ 16893, 16894], + "id": "edge" + }, + { + "fg": [ 17055, 17056, 17057, 17058], + "bg": 0, + "id": "end_piece" + }, + + { + "fg": 17059, + "bg": 16899, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "f_rubble_landfill_season_winter", + "fg": 17044, + "bg": 992, + "multitile": true, + "additional_tiles": [ + { + "fg": 17044, + "bg": 992, + "id": "center" + }, + { + "fg": [ 17045, 17046, 17047, 17048 ], + "bg": 992, + "id": "corner" + }, + { + "fg": [ 17049, 17050, 17051, 17052], + "bg": 992, + "id": "t_connection" + }, + { + "fg": [ 17053, 17054], + "bg": 992, + "id": "edge" + }, + { + "fg": [ 17055, 17056, 17057, 17058], + "bg": 992, + "id": "end_piece" + }, + + { + "fg": 17059, + "bg": 992, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_root_wall", + "fg": 17060, + "bg": 16884, + "multitile": true, + "additional_tiles": [ + { + "fg": 17060, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ 17061, 17062, 17063, 17064 ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ 17065, 17066, 17067, 17068], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ 17069, 17070], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ 17071, 17072, 17073, 17074], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": 17075, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_root_wall_season_winter", + "fg": 17076, + "bg": 992, + "multitile": true, + "additional_tiles": [ + { + "fg": 17076, + "bg": 992, + "id": "center" + }, + { + "fg": [ 17077, 17078, 17079, 17080 ], + "bg": 992, + "id": "corner" + }, + { + "fg": [ 17081, 17082, 17083, 17084], + "bg": 992, + "id": "t_connection" + }, + { + "fg": [ 17085, 17086], + "bg": 992, + "id": "edge" + }, + { + "fg": [ 17087, 17088, 17089, 17090], + "bg": 992, + "id": "end_piece" + }, + { + "fg": 17091, + "bg": 992, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_grass_golf", + "fg": 17092, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": 17092, + "bg": 1012, + "id": "center" + }, + { + "fg": [ 17093, 17094, 17095, 17096 ], + "bg": 1012, + "id": "corner" + }, + { + "fg": [ 17097, 17098, 17099, 17100], + "bg": 1012, + "id": "t_connection" + }, + { + "fg": [ 17101, 17102], + "bg": 1012, + "id": "edge" + }, + { + "fg": [ 17103, 17104, 17105, 17106], + "bg": 1012, + "id": "end_piece" + }, + { + "fg": 17107, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_paper", + "fg": 17108, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": 17108, + "bg": 1012, + "id": "center" + }, + { + "fg": [ 17109, 17110, 17111, 17112 ], + "bg": 1012, + "id": "corner" + }, + { + "fg": [ 17113, 17114, 17115, 17116], + "bg": 1012, + "id": "t_connection" + }, + { + "fg": [ 17117, 17118], + "bg": 1012, + "id": "edge" + }, + { + "fg": [ 17119, 17120, 17121, 17122], + "bg": 1012, + "id": "end_piece" + }, + { + "fg": 17123, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_paper_floor", + "fg": 17124, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": 17124, + "bg": 1012, + "id": "center" + }, + { + "fg": [ 17125, 17126, 17127, 17128 ], + "bg": 1012, + "id": "corner" + }, + { + "fg": [ 17129, 17130, 17131, 17132], + "bg": 1012, + "id": "t_connection" + }, + { + "fg": [ 17133, 17134], + "bg": 1012, + "id": "edge" + }, + { + "fg": [ 17135, 17136, 17137, 17138], + "bg": 1012, + "id": "end_piece" + }, + { + "fg": 17139, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_floor", + "fg": 17140, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": 17140, + "bg": 1012, + "id": "center" + }, + { + "fg": [ 17141, 17142, 17143, 17144 ], + "bg": 1012, + "id": "corner" + }, + { + "fg": [ 17145, 17146, 17147, 17148], + "bg": 1012, + "id": "t_connection" + }, + { + "fg": [ 17149, 17150], + "bg": 1012, + "id": "edge" + }, + { + "fg": [ 17151, 17152, 17153, 17154], + "bg": 1012, + "id": "end_piece" + }, + { + "fg": 17155, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_floor_primitive", + "fg": 17156, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": 17156, + "bg": 1012, + "id": "center" + }, + { + "fg": [ 17157, 17158, 17159, 17160 ], + "bg": 1012, + "id": "corner" + }, + { + "fg": [ 17161, 17162, 17163, 17164], + "bg": 1012, + "id": "t_connection" + }, + { + "fg": [ 17165, 17166], + "bg": 1012, + "id": "edge" + }, + { + "fg": [ 17167, 17168, 17169, 17170], + "bg": 1012, + "id": "end_piece" + }, + { + "fg": 17171, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_elevator", + "fg": 17171, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17172, + "bg": 0, + "id": "center" + }, + { + "fg": [ 17173, 17174, 17175, 17176 ], + "bg": 0, + "id": "corner" + }, + { + "fg": [ 17177, 17178, 17179, 17180], + "bg": 0, + "id": "t_connection" + }, + { + "fg": [ 17181, 17182], + "bg": 0, + "id": "edge" + }, + { + "fg": [ 17183, 17184, 17185, 17186], + "bg": 0, + "id": "end_piece" + }, + { + "fg": 17187, + "bg": 0, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "fd_blood", + "fg": 17188, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17188, + "bg": 0, + "id": "center" + }, + { + "fg": [ 17189, 17190, 17191, 17192 ], + "bg": 0, + "id": "corner" + }, + { + "fg": [ 17193, 17194, 17195, 17196], + "bg": 0, + "id": "t_connection" + }, + { + "fg": [ 17197, 17198], + "bg": 0, + "id": "edge" + }, + { + "fg": [ 17199, 17200, 17201, 17202], + "bg": 0, + "id": "end_piece" + }, + { + "fg": 17203, + "bg": 0, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "fd_gibs_flesh", + "fg": 17204, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17204, + "bg": 0, + "id": "center" + }, + { + "fg": [ 17205, 17206, 17207, 17208 ], + "bg": 0, + "id": "corner" + }, + { + "fg": [ 17209, 17210, 17211, 17212], + "bg": 0, + "id": "t_connection" + }, + { + "fg": [ 17213, 17214], + "bg": 0, + "id": "edge" + }, + { + "fg": [ 17215, 17216, 17217, 17218], + "bg": 0, + "id": "end_piece" + }, + { + "fg": 17219, + "bg": 0, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_pit_foxhole", + "fg": 17220, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17220, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ 17221, 17222, 17223, 17224 ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ 17225, 17226, 17227, 17228], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ 17229, 17230], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ 17231, 17232, 17233, 17234], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": 17235, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_pit_foxhole_season_winter", + "fg": 17220, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17220, + "bg": 992, + "id": "center" + }, + { + "fg": [ 17221, 17222, 17223, 17224 ], + "bg": 992, + "id": "corner" + }, + { + "fg": [ 17225, 17226, 17227, 17228], + "bg": 992, + "id": "t_connection" + }, + { + "fg": [ 17229, 17230], + "bg": 992, + "id": "edge" + }, + { + "fg": [ 17231, 17232, 17233, 17234], + "bg": 992, + "id": "end_piece" + }, + { + "fg": 17235, + "bg": 992, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": ["t_grass_dead"], + "fg": 17236, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17236, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ 17237, 17238, 17239, 17240 ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ 17241, 17242, 17243, 17244], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ 17245, 17246], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ 17247, 17248, 17249, 17250], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": 17251, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_grass_long", + "fg": 17252, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": [ + { "weight":30, "sprite":17252}, + { "weight":30, "sprite":27664}, + { "weight":30, "sprite":27665}, + { "weight":30, "sprite":27666} + ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ 17253, 17254, 17255, 17256 ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ 17257, 17258, 17259, 17260], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ 17261, 17262], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ 17263, 17264, 17265, 17266], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": [ + { "weight":30, "sprite":17267}, + { "weight":30, "sprite":27667}, + { "weight":30, "sprite":27668}, + { "weight":30, "sprite":27669} + ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": ["t_grass_long_season_summer"], + "fg": 17268, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "multitile": true, + "additional_tiles": [ + { + "fg": 17268, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ 17269, 17270, 17271, 17272 ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ 17273, 17274, 17275, 17276], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ 17277, 17278], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ 17279, 17280, 17281, 17282], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": 17283, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": ["t_grass_long_season_autumn"], + "fg": 17284, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17284, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ 17285, 17286, 17287, 17288 ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ 17289, 17290, 17291, 17292], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ 17293, 17294], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ 17295, 17296, 17297, 17298], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": 17299, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "f_makeshiftfence", + "fg": 17300, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17300, + "bg": 0, + "id": "center" + }, + { + "fg": [ 17301, 17302, 17303, 17304 ], + "bg": 0, + "id": "corner" + }, + { + "fg": [ 17305, 17306, 17307, 17308], + "bg": 0, + "id": "t_connection" + }, + { + "fg": [ 17309, 17310], + "bg": 0, + "id": "edge" + }, + { + "fg": [ 17311, 17312, 17313, 17314], + "bg": 0, + "id": "end_piece" + }, + { + "fg": 17315, + "bg": 0, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_fence", + "fg": 17316, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": 17316, + "bg": 1012, + "id": "center" + }, + { + "fg": [ 17317, 17318, 17319, 17320 ], + "bg": 1012, + "id": "corner" + }, + { + "fg": [ 17321, 17322, 17323, 17324], + "bg": 1012, + "id": "t_connection" + }, + { + "fg": [ 17325, 17326], + "bg": 1012, + "id": "edge" + }, + { + "fg": [ 17327, 17328, 17329, 17330], + "bg": 1012, + "id": "end_piece" + }, + { + "fg": 17331, + "bg": 1012, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_fence_season_winter", + "fg": 17316, + "bg": 992, + "multitile": true, + "additional_tiles": [ + { + "fg": 17316, + "bg": 992, + "id": "center" + }, + { + "fg": [ 17317, 17318, 17319, 17320 ], + "bg": 992, + "id": "corner" + }, + { + "fg": [ 17321, 17322, 17323, 17324], + "bg": 992, + "id": "t_connection" + }, + { + "fg": [ 17325, 17326], + "bg": 992, + "id": "edge" + }, + { + "fg": [ 17327, 17328, 17329, 17330], + "bg": 992, + "id": "end_piece" + }, + { + "fg": 17331, + "bg": 992, + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": "t_grass_tall", + "fg": 17332, + "bg": 1012, + "multitile": true, + "additional_tiles": [ + { + "fg": 17332, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ 17333, 17334, 17335, 17336 ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ 17337, 17338, 17339, 17340], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ 17341, 17342], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ 17343, 17344, 17345, 17346], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": 17347, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": ["t_grass_tall_season_summer"], + "fg": 17348, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "multitile": true, + "additional_tiles": [ + { + "fg": 17348, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ 17349, 17350, 17351, 17352 ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ 17353, 17354, 17355, 17356], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ 17357, 17358], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ 17359, 17360, 17361, 17362], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": 17363, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": ["t_grass_tall_season_autumn"], + "fg": 17364, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17364, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ 17365, 17366, 17367, 17368 ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ 17369, 17370, 17371, 17372], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ 17373, 17374], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ 17375, 17376, 17377, 17378], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": 17379, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": ["t_woodchips"], + "fg": 17380, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17380, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ 17381, 17382, 17383, 17384 ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ 17385, 17386, 17387, 17388], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ 17389, 17390], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ 17391, 17392, 17393, 17394], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": 17395, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": ["t_woodchips_season_winter"], + "fg": 17380, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17380, + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "center" + }, + { + "fg": [ 17381, 17382, 17383, 17384 ], + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "corner" + }, + { + "fg": [ 17385, 17386, 17387, 17388], + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "t_connection" + }, + { + "fg": [ 17389, 17390], + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "edge" + }, + { + "fg": [ 17391, 17392, 17393, 17394], + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "end_piece" + }, + { + "fg": 17395, + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": ["t_moss"], + "fg": 17396, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17396, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ 17397, 17398, 17399, 17400 ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ 17401, 17402, 17403, 17404], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ 17405, 17406], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ 17407, 17408, 17409, 17410], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": 17411, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + + "rotates": false + }, + { + "id": ["t_moss_season_winter"], + "fg": 17396, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "center" + }, + { + "fg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "corner" + }, + { + "fg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "t_connection" + }, + { + "fg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "edge" + }, + { + "fg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "end_piece" + }, + { + "fg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "id": "unconnected" + } + ], + + "rotates": false + }, + { + "id": ["fd_electricity"], + "fg": 17412, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17412, + "id": "center" + }, + { + "fg": [ 17413, 17414, 17415, 17416 ], + "id": "corner" + }, + { + "fg": [ 17417, 17418, 17419, 17420], + "id": "t_connection" + }, + { + "fg": [ 17421, 17422], + "id": "edge" + }, + { + "fg": [ 17423, 17424, 17425, 17426], + "id": "end_piece" + }, + { + "fg": 17427, + "id": "unconnected" + } + ], + + "rotates": false + }, + { + "id": ["t_grass_tall_season_winter", "t_grass_long_season_winter"], + "fg": 17428, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17428, + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "center" + }, + { + "fg": [ 17429, 17430, 17431, 17432 ], + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "corner" + }, + { + "fg": [ 17433, 17434, 17435, 17436], + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "t_connection" + }, + { + "fg": [ 17437, 17438], + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "edge" + }, + { + "fg": [ 17439, 17440, 17441, 17442], + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "end_piece" + }, + { + "fg": 17443, + "bg": [ + { "weight":3, "sprite":992}, + { "weight":3, "sprite":3080}, + { "weight":3, "sprite":3081}, + { "weight":3, "sprite":3082}, + { "weight":3, "sprite":3083}, + { "weight":3, "sprite":3084}, + { "weight":3, "sprite":3085} + ], + "id": "unconnected" + } + ], + "rotates": false + }, + { + "id": ["t_railroad_track", "t_railroad_track_h", "t_railroad_track_v", "t_railroad_track_d", "t_railroad_track_d1", "t_railroad_track_d2"], + "fg": 17444, + "bg": 5131, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 17444, + "bg": 5131 + }, + { + "id": "corner", + "fg": [ 17445, 17446, 17447, 17448 ], + "bg": 5131 + }, + { + "id": "edge", + "fg": [ 17449, 17450, 17451, 17452 ], + "bg": 5131 + }, + { + "id": "t_connection", + "fg": 17453, + "bg": 5131 + }, + { + "id": "end_piece", + "fg": [ 17455, 17456, 17457, 17458 ], + "bg": 5131 + }, + { + "id": "unconnected", + "fg": 17444, + "bg": 5131 + } + ] + }, { + "id": ["t_railroad_tie", "t_railroad_tie_d", "t_railroad_tie_v", "t_railroad_tie_h"], + "fg": 17460, + "bg": 5131, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 17460, + "bg": 5131 + }, + { + "id": "corner", + "fg": 17461, + "bg": 5131 + }, + { + "id": "edge", + "fg": 17465, + "bg": 5131 + }, + { + "id": "end_piece", + "fg": 17465, + "bg": 5131 + }, + { + "id": "t_connection", + "fg": 17469, + "bg": 5131 + }, + { + "id": "unconnected", + "fg": 0, + "bg": 5131 + } + ] + }, + { + "id": ["t_railroad_track_on_tie", "t_railroad_track_d_on_tie", "t_railroad_track_v_on_tie", "t_railroad_track_v_on_tie", "t_railroad_track_h_on_tie", "t_railroad_tie_d1", "t_railroad_tie_d2"], + "fg": 17476, + "bg": 22733, + "rotates": false, + "multitile": true, + "additional_tiles": [ + { + "id": "center", + "fg": 17476, + "bg": 5131 + }, + { + "id": "corner", + "fg": 17476, + "bg": 5131 + }, + { + "id": "edge", + "fg": [ 17481, 17482, 17483, 17484 ], + "bg": 5131 + }, + { + "id": "t_connection", + "fg": 17485, + "bg": 5131 + }, + { + "id": "end_piece", + "fg": [ 17487, 17488, 17489, 17490 ], + "bg": 5131 + }, + { + "id": "unconnected", + "fg": 17476, + "bg": 5131 + } + ] + }, + { + "id": ["t_cave_moss"], + "fg": 17492, + "bg": 0, + "multitile": true, + "additional_tiles": [ + { + "fg": 17492, + "bg": [ + { "weight":100, "sprite":4844} + ], + "id": "center" + }, + { + "fg": [ 17493, 17494, 17495, 17496 ], + "bg": [ + { "weight":100, "sprite":4844}, + { "weight":10, "sprite":4845}, + { "weight":10, "sprite":4846}, + { "weight":10, "sprite":4847} + ], + "id": "corner" + }, + { + "fg": [ 17497, 17498, 17499, 17500], + "bg": [ + { "weight":100, "sprite":4844}, + { "weight":10, "sprite":4845}, + { "weight":10, "sprite":4846}, + { "weight":10, "sprite":4847} + ], + "id": "t_connection" + }, + { + "fg": [ 17501, 17502], + "bg": [ + { "weight":100, "sprite":4844}, + { "weight":10, "sprite":4845}, + { "weight":10, "sprite":4846}, + { "weight":10, "sprite":4847} + ], + "id": "edge" + }, + { + "fg": [ 17503, 17504, 17505, 17506], + "bg": [ + { "weight":100, "sprite":4844}, + { "weight":10, "sprite":4845}, + { "weight":10, "sprite":4846}, + { "weight":10, "sprite":4847} + ], + "id": "end_piece" + }, + { + "fg": 17507, + "bg": [ + { "weight":100, "sprite":4844}, + { "weight":10, "sprite":4845}, + { "weight":10, "sprite":4846}, + { "weight":10, "sprite":4847} + ], + "id": "unconnected" + } + ], + + "rotates": false + }, + { + "id": ["f_bathtub"], + "fg": 17508, + + "multitile": true, + "additional_tiles": [ + { + "fg": 17508, + + "id": "center" + }, + { + "fg": [ 17509, 17510, 17511, 17512 ], + + "id": "corner" + }, + { + "fg": [ 17513, 17514, 17515, 17516], + + "id": "t_connection" + }, + { + "fg": [ 17517, 17518], + + "id": "edge" + }, + { + "fg": [ 17519, 17520, 17521, 17522], + + "id": "end_piece" + }, + { + "fg": 17523, + + "id": "unconnected" + } + ], + + "rotates": false + }, + { + "id": ["t_sconc_wall"], + "fg": 17524, + + "multitile": true, + "additional_tiles": [ + { + "fg": 17524, + + "id": "center" + }, + { + "fg": [ 17525, 17526, 17527, 17528 ], + + "id": "corner" + }, + { + "fg": [ 17529, 17530, 17531, 17532], + + "id": "t_connection" + }, + { + "fg": [ 17533, 17534], + + "id": "edge" + }, + { + "fg": [ 17535, 17536, 17537, 17538], + + "id": "end_piece" + }, + { + "fg": 17539, + + "id": "unconnected" + } + ], + + "rotates": false + }, + { + "id": ["t_sand"], + "fg": 17540, + + "multitile": true, + "additional_tiles": [ + { + "fg": 17540, + + "id": "center" + }, + { + "fg": [ 17541, 17542, 17543, 17544 ], + + "id": "corner" + }, + { + "fg": [ 17545, 17546, 17547, 17548], + + "id": "t_connection" + }, + { + "fg": [ 17549, 17550], + + "id": "edge" + }, + { + "fg": [ 17551, 17552, 17553, 17554], + + "id": "end_piece" + }, + { + "fg": 17555, + + "id": "unconnected" + } + ], + + "rotates": false + } + ] + }, +{ + "file": "10_xfiles_32x32_22052-22195.png", + "tiles": [ + { + "id": "mon_pink_mist", + "fg": 22052, + "rotates": false + }, + { + "id": "mon_entomber", + "fg": 22054, + "rotates": false + }, + { + "id": "mon_bloodbeast", + "fg": 22053, + "rotates": false + }, + { + "id": "mon_worm_mass", + "fg": 22061, + "rotates": false + }, + { + "id": "mon_bloodworm", + "fg": 22062, + "rotates": false + }, + { + "id": "mon_grey_grunt", + "fg": 22055, + "rotates": false + }, + { + "id": "mon_alien_turret", + "fg": 22056, + "rotates": false + }, + { + "id": "mon_loch_ness_monster", + "fg": 22057, + "rotates": false + }, + { + "id": "mon_jersey_devil", + "fg": 22059, + "rotates": false + }, + { + "id": "mon_mothman", + "fg": 22058, + "rotates": false + }, + { + "id": "grey_handgun", + "fg": 22068, + "rotates": false + }, + { + "id": "mon_robo_sentinel", + "fg": 22064, + "rotates": false + }, + { + "id": "mon_floating_head", + "fg": 22065, + "rotates": false + }, + { + "id": "mon_reptilian", + "fg": 22070, + "rotates": false + }, + { + "id": "mon_lake_lurker", + "fg": 22071, + "rotates": false + }, + { + "id": "mon_cia_security", + "fg": 22072, + "rotates": false + }, + { + "id": "mon_cia_security", + "fg": 22072, + "rotates": false + }, + { + "id": "mon_cia_hazmat", + "fg": 22073, + "rotates": false + }, + { + "id": "mon_woods_thing", + "fg": 22074, + "rotates": false + }, + { + "id": "mon_man_spider", + "fg": 22075, + "rotates": false + }, + { + "id": "grey_instrument", + "fg": 22077, + "rotates": false + }, + { + "id": "bone_violin", + "fg": 22078, + "rotates": false + }, + { + "id": "golden_hand", + "fg": 22079, + "rotates": false + }, + { + "id": "crystal_eyeball", + "fg": 22080, + "rotates": false + }, + { + "id": "glass_spider", + "fg": 22081, + "rotates": false + }, + { + "id": "grey_ammo", + "fg": 22082, + "rotates": false + }, + { + "id": "bloody_chainsaw_off", + "fg": 3472, + "bg": 957, + "rotates": false + }, + { + "id": "bloody_chainsaw_on", + "fg": 3473, + "bg": 957, + "rotates": false + }, + + { + "id": "overlay_wielded_bloody_chainsaw_off", + "fg": 3649, + "rotates": false + }, + { + "id": "overlay_wielded_bloody_chainsaw_on", + "fg": 3468, + "rotates": false + }, + { + "id": "glowing_lighter", + "fg": 3602, + "bg": 957, + "rotates": false + } + ] + }, + { + "file": "11_tiles_kawaiimaidmod_32x32_22196-22291.png", + "tiles": + [ + { "id": "!player_female", "fg": 5472, "bg": 967, "rotates": false }, + + { "id": "kawaii_maid_dress", "fg": 480, "rotates": false }, + { "id": "kawaii_maid_dress_ex", "fg": 480, "rotates": false }, + { "id": "kawaii_maid_dress_ex2", "fg": 480, "rotates": false }, + { "id": "kawaii_maid_dress_lss", "fg": 480, "rotates": false }, + { "id": "kawaii_maid_dress_lss1", "fg": 480, "rotates": false }, + { "id": "kawaii_maid_dress_lss2", "fg": 480, "rotates": false }, + { "id": "kawaii_maid_hat", "fg": 4283, "rotates": false }, + { "id": "kawaii_maid_hat_kiai", "fg": 4283, "rotates": false }, + { "id": "kawaii_maid_hat_thermal_off", "fg": 4283, "rotates": false }, + { "id": "kawaii_maid_hat_thermal_on", "fg": 4283, "rotates": false }, + { "id": "kawaii_maid_hat_lss", "fg": 4283, "rotates": false }, + { "id": "kawaii_maid_hat_lss1", "fg": 4283, "rotates": false }, + { "id": "kawaii_maid_hat_lss2", "fg": 4283, "rotates": false }, + { "id": "kawaii_dress_shoes", "fg": 345, "rotates": false }, + { "id": "kawaii_maid_panties", "fg": 836, "rotates": false }, + { "id": "kawaii_maid_bra", "fg": 304, "rotates": false }, + { "id": "kawaii_maid_megane_01", "fg": 375, "rotates": false }, + { "id": "kawaii_balclava", "fg": 278, "rotates": false }, + { "id": "kawaii_hat_cotton", "fg": 405, "rotates": false }, + { "id": "kawaii_tailskirt_mini", "fg": 495, "rotates": false }, + { "id": "kawaii_vest", "fg": 946, "rotates": false }, + { "id": "kawaii_bikini_bottom_black", "fg": 836, "rotates": false }, + { "id": "kawaii_bikini_top_black", "fg": 539, "rotates": false }, + { "id": "kawaii_maid_hardcase", "fg": 273, "rotates": false }, + { "id": "kawaii_wedding_dress", "fg": 22210, "rotates": false }, + { "id": "kawaii_hitec_megane", "fg": 375, "rotates": false }, + { "id": "kawaii_hitec_megane_nv", "fg": 375, "rotates": false }, + { "id": "kawaii_hitec_megane_ir", "fg": 375, "rotates": false }, + { "id": "kawaii_hitec_megane_blind", "fg": 375, "rotates": false }, + { "id": "kawaii_maid_megane_02", "fg": 375, "rotates": false }, + { "id": "kawaii_maid_megane_03", "fg": 375, "rotates": false }, + { "id": "kawaii_maid_megane_04", "fg": 375, "rotates": false }, + { "id": "kawaii_maid_megane_05", "fg": 375, "rotates": false }, + { "id": "kawaii_maid_megane_06", "fg": 375, "rotates": false }, + { "id": "kawaii_maid_megane_07", "fg": 375, "rotates": false }, + { "id": "kawaii_maid_megane_08", "fg": 375, "rotates": false }, + { "id": "kawaii_maid_megane_09", "fg": 375, "rotates": false }, + { "id": "kawaii_maid_simapan_pink", "fg": 22219, "rotates": false }, + { "id": "kawaii_maid_simabura_pink", "fg": 22220, "rotates": false }, + { "id": "kawaii_maid_simapan_green", "fg": 22221, "rotates": false }, + { "id": "kawaii_maid_simabura_green", "fg": 22222, "rotates": false }, + { "id": "kawaii_secretpoach", "fg": 22223, "rotates": false }, + { "id": "kawaii_maid_garter", "fg": 22224, "rotates": false }, + { "id": "kawaii_maid_niso_thick", "fg": 22225, "rotates": false }, + { "id": "kawaii_maid_niso_thin", "fg": 22226, "rotates": false }, + { "id": "kawaii_sister_dress", "fg": 22227, "rotates": false }, + { "id": "kawaii_selfbow", "fg": 22228, "rotates": false }, + { "id": "kawaii_custombow_v1", "fg": 22229, "rotates": false }, + { "id": "kawaii_custombow_v2", "fg": 22230, "rotates": false }, + { "id": "kawaii_custombow_v3", "fg": 22231, "rotates": false }, + { "id": "kawaii_shieldbow", "fg": 22232, "rotates": false }, + { "id": "kawaii_shelia_off", "fg": 22233, "rotates": false }, + { "id": "kawaii_shelia_on", "fg": 22234, "rotates": false }, + { "id": "kawaii_leila", "fg": 22235, "rotates": false }, + { "id": "kawaii_daikyu", "fg": 22236, "rotates": false }, + { "id": "kawaii_boots", "fg": 22237, "rotates": false }, + { "id": "kawaii_sailor_fuku", "fg": 22238, "rotates": false }, + { "id": "kawaii_socks_white", "fg": 22239, "rotates": false }, + { "id": "kawaii_loafer", "fg": 22240, "rotates": false }, + { "id": "kawaii_arrow_ribbon", "fg": 22241, "rotates": false }, + { "id": "kawaii_arrow_feather", "fg": 22242, "rotates": false }, + { "id": "kawaii_arrow_little_mary", "fg": 22243, "rotates": false }, + { "id": "kawaii_scarf", "fg": 22244, "rotates": false }, + { "id": "kawaii_scarf_loose", "fg": 22245, "rotates": false }, + { "id": "kawaii_tights_black", "fg": 22246, "rotates": false }, + { "id": "kawaii_tights_white", "fg": 22247, "rotates": false }, + { "id": "kawaii_maid_dress_long", "fg": 22248, "rotates": false }, + { "id": "kawaii_boots_hi", "fg": 22249, "rotates": false }, + { "id": "kawaii_shoes_hi", "fg": 22250, "rotates": false }, + { "id": "kawaii_glass_bow", "fg": 22251, "rotates": false }, + { "id": "kawaii_knife_steak_twin", "fg": 22252, "rotates": false }, + { "id": "kawaii_sword_steel", "fg": 22253, "rotates": false }, + { "id": "kawaii_crowbar_lance", "fg": 22254, "rotates": false }, + { "id": "kawaii_amts_eve", "fg": 22255, "rotates": false }, + + { "id": "kawaii_amts_box", "fg": 22256, "rotates": false }, + { "id": "kawaii_amts_box2", "fg": 22257, "rotates": false }, + { "id": "kawaii_amts_manual", "fg": 22258, "rotates": false }, + { "id": "kawaii_amts_point_viewer", "fg": 22259, "rotates": false }, + + { "id": "kawaii_amts_pacsys", "fg": 22260, "rotates": false }, + { "id": "kawaii_amts_pac_t1_01", "fg": 22260, "rotates": false }, + { "id": "kawaii_amts_pac_t1_02", "fg": 22260, "rotates": false }, + { "id": "kawaii_amts_pac_t1_03", "fg": 22260, "rotates": false }, + { "id": "kawaii_amts_pac_t2_01", "fg": 22260, "rotates": false }, + { "id": "kawaii_amts_pac_t2_02", "fg": 22260, "rotates": false }, + { "id": "kawaii_amts_pac_t2_03", "fg": 22260, "rotates": false }, + + { "id": "kawaii_bottle_2l", "fg": 1392, "rotates": false }, + { "id": "kawaii_jerrycan_10l", "fg": 1415, "rotates": false }, + { "id": "kawaii_jerrycan_20l", "fg": 1416, "rotates": false }, + { "id": "kawaii_UPS", "fg": 3436, "rotates": false }, + { "id": "kawaii_portable_kitchen", "fg": 305, "rotates": false }, + + { "id": "kawaii_book_am_arrow", "fg": 1035, "bg": 959, "rotates": false }, + + { "id": "overlay_worn_kawaii_maid_dress", "fg": 22197, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_dress_ex", "fg": 22197, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_dress_ex2", "fg": 22197, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_dress_lss", "fg": 22197, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_dress_lss1", "fg": 22197, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_dress_lss2", "fg": 22197, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_hat", "fg": 22198, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_hat_kiai", "fg": 22198, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_hat_thermal_off", "fg": 22198, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_hat_thermal_on", "fg": 22198, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_hat_lss", "fg": 22198, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_hat_lss1", "fg": 22198, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_hat_lss2", "fg": 22198, "rotates": false }, + { "id": "overlay_worn_kawaii_dress_shoes", "fg": 22199, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_panties", "fg": 22200, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_bra", "fg": 22201, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_megane_01", "fg": 22202, "rotates": false }, + { "id": "overlay_worn_kawaii_balclava", "fg": 22203, "rotates": false }, + { "id": "overlay_worn_kawaii_hat_cotton", "fg": 22204, "rotates": false }, + { "id": "overlay_worn_kawaii_tailskirt_mini", "fg": 22205, "rotates": false }, + { "id": "overlay_worn_kawaii_vest", "fg": 22206, "rotates": false }, + { "id": "overlay_worn_kawaii_bikini_bottom_black", "fg": 22207, "rotates": false }, + { "id": "overlay_worn_kawaii_bikini_top_black", "fg": 22208, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_hardcase", "fg": 22209, "rotates": false }, + { "id": "overlay_worn_kawaii_wedding_dress", "fg": 22210, "rotates": false }, + { "id": "overlay_worn_kawaii_hitec_megane", "fg": 22202, "rotates": false }, + { "id": "overlay_worn_kawaii_hitec_megane_nv", "fg": 22202, "rotates": false }, + { "id": "overlay_worn_kawaii_hitec_megane_ir", "fg": 22202, "rotates": false }, + { "id": "overlay_worn_kawaii_hitec_megane_blind", "fg": 22202, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_megane_02", "fg": 22211, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_megane_03", "fg": 22212, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_megane_04", "fg": 22213, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_megane_05", "fg": 22214, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_megane_06", "fg": 22215, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_megane_07", "fg": 22216, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_megane_08", "fg": 22217, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_megane_09", "fg": 22218, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_simapan_pink", "fg": 22219, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_simabura_pink", "fg": 22220, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_simapan_green", "fg": 22221, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_simabura_green", "fg": 22222, "rotates": false }, + { "id": "overlay_worn_kawaii_secretpoach", "fg": 22223, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_garter", "fg": 22224, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_niso_thick", "fg": 22225, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_niso_thin", "fg": 22226, "rotates": false }, + { "id": "overlay_worn_kawaii_sister_dress", "fg": 22227, "rotates": false }, + { "id": "overlay_wielded_kawaii_selfbow", "fg": 22228, "rotates": false }, + { "id": "overlay_wielded_kawaii_custombow_v1", "fg": 22229, "rotates": false }, + { "id": "overlay_wielded_kawaii_custombow_v2", "fg": 22230, "rotates": false }, + { "id": "overlay_wielded_kawaii_custombow_v3", "fg": 22231, "rotates": false }, + { "id": "overlay_wielded_kawaii_shieldbow", "fg": 22232, "rotates": false }, + { "id": "overlay_wielded_kawaii_shelia_off", "fg": 22233, "rotates": false }, + { "id": "overlay_wielded_kawaii_shelia_on", "fg": 22234, "rotates": false }, + { "id": "overlay_wielded_kawaii_leila", "fg": 22235, "rotates": false }, + { "id": "overlay_wielded_kawaii_daikyu", "fg": 22236, "rotates": false }, + { "id": "overlay_worn_kawaii_boots", "fg": 22237, "rotates": false }, + { "id": "overlay_worn_kawaii_sailor_fuku", "fg": 22238, "rotates": false }, + { "id": "overlay_worn_kawaii_socks_white", "fg": 22239, "rotates": false }, + { "id": "overlay_worn_kawaii_loafer", "fg": 22240, "rotates": false }, + + { "id": "overlay_worn_kawaii_scarf", "fg": 22244, "rotates": false }, + { "id": "overlay_worn_kawaii_scarf_loose", "fg": 22245, "rotates": false }, + { "id": "overlay_worn_kawaii_tights_black", "fg": 22246, "rotates": false }, + { "id": "overlay_worn_kawaii_tights_white", "fg": 22247, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_dress_long", "fg": 22248, "rotates": false }, + { "id": "overlay_worn_kawaii_boots_hi", "fg": 22249, "rotates": false }, + { "id": "overlay_worn_kawaii_shoes_hi", "fg": 22250, "rotates": false }, + { "id": "overlay_wielded_kawaii_glass_bow", "fg": 22251, "rotates": false }, + { "id": "overlay_wielded_kawaii_knife_steak_twin", "fg": 22252, "rotates": false }, + { "id": "overlay_wielded_kawaii_sword_steel", "fg": 22253, "rotates": false }, + { "id": "overlay_wielded_kawaii_crowbar_lance", "fg": 22254, "rotates": false }, + { "id": "overlay_wielded_kawaii_amts_eve", "fg": 22255, "rotates": false }, + + { "id": "overlay_worn_kawaii_maid_hardcase_mini", "fg": 22261, "rotates": false }, + { "id": "overlay_worn_kawaii_maid_hardcase_slim", "fg": 22262, "rotates": false } + ] + }, + + { + "file": "12_tiles_kawaiimaidmod_offset_32x32_22292-22339.png", + "sprite_offset_y":-4, + "tiles": + [ + { "id": "kawaii_wedding_veil_a", "fg": 22292, "rotates": false }, + { "id": "kawaii_wedding_veil_b", "fg": 22293, "rotates": false }, + { "id": "kawaii_wig_01", "fg": 22294, "rotates": false }, + { "id": "kawaii_sister_veil", "fg": 22295, "rotates": false }, + { "id": "kawaii_raincoat", "fg": 22296, "rotates": false }, + { "id": "kawaii_raincoat_off", "fg": 22297, "rotates": false }, + + { "id": "overlay_worn_kawaii_wedding_veil_a", "fg": 22292, "rotates": false }, + { "id": "overlay_worn_kawaii_wedding_veil_b", "fg": 22293, "rotates": false }, + { "id": "overlay_worn_kawaii_wig_01", "fg": 22294, "rotates": false }, + { "id": "overlay_worn_kawaii_sister_veil", "fg": 22295, "rotates": false }, + { "id": "overlay_worn_kawaii_raincoat", "fg": 22296, "rotates": false }, + { "id": "overlay_worn_kawaii_raincoat_off", "fg": 22297, "rotates": false } + ] + }, + + { + "file": "13_tiles_kawaiimaidmod_64x48-22340-22364.png", + "sprite_width":64, + "sprite_height":48, + "sprite_offset_x":-16, + "sprite_offset_y":-16, + "tiles": + [ + { "id": "kawaii_rita_and_rosa", "fg": 22340, "rotates": false }, + { "id": "kawaii_rita_and_rosa_off", "fg": 22341, "rotates": false }, + { "id": "kawaii_crystal_td", "fg": 22342, "rotates": false }, + { "id": "kawaii_crystal_tr", "fg": 22343, "rotates": false }, + { "id": "kawaii_crystal_tr_prot", "fg": 22343, "rotates": false }, + { "id": "kawaii_spear_steel", "fg": 22344, "rotates": false }, + { "id": "kawaii_death_scythe", "fg": 22345, "rotates": false }, + + { "id": "overlay_wielded_kawaii_rita_and_rosa", "fg": 22340, "rotates": false }, + { "id": "overlay_wielded_kawaii_rita_and_rosa_off", "fg": 22341, "rotates": false }, + { "id": "overlay_wielded_kawaii_crystal_td", "fg": 22342, "rotates": false }, + { "id": "overlay_wielded_kawaii_crystal_tr", "fg": 22343, "rotates": false }, + { "id": "overlay_wielded_kawaii_crystal_tr_prot", "fg": 22343, "rotates": false }, + { "id": "overlay_wielded_kawaii_spear_steel", "fg": 22344, "rotates": false }, + { "id": "overlay_wielded_kawaii_death_scythe", "fg": 22345, "rotates": false }, + + { "id": "overlay_wielded_cs_lajatang_off", "fg": 22346, "rotates": false }, + { "id": "overlay_wielded_cs_lajatang_on", "fg": 22347, "rotates": false }, + { "id": "overlay_wielded_ecs_lajatang_off", "fg": 22348, "rotates": false }, + { "id": "overlay_wielded_ecs_lajatang_on", "fg": 22349, "rotates": false } + ] + }, + { + "file": "14_tiles2_32x32_22365-27564.png", + "tiles": + [ + { + "id": "cddaxp_cnodachi", + "fg": 22365, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_cnodachi", + "fg": 22366, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_dkusarigama", + "fg": 22367, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_dkusarigama", + "fg": 22368, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_ckusarigama", + "fg": 22369, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_cddaxp_ckusarigama", + "fg": 22370, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_cbayonet", + "fg": 22371, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_cpistolbayonet", + "fg": 22372, + "bg": 0, + "rotates": false + }, + { + "id": "cddaxp_cswordbayonet", + "fg": 22373, + "bg": 0, + "rotates": false + }, + { + "id": "f_flower_tulip", + "fg": 22374, + "bg": 0, + "rotates": false + }, + { + "id": "f_flower_spurge", + "fg": 22375, + "bg": 0, + "rotates": false + }, + { + "id": "t_shrub_hydrangea", + "fg": 22376, + "bg": 1012, + "rotates": false + }, + { + "id": ["t_shrub_hydrangea_harvested", "t_shrub_hydrangea_season_spring", "t_shrub_hydrangea_season_summer"], + "fg": 22377, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_rose", + "fg": 22378, + "bg": 1012, + "rotates": false + }, + { + "id": ["t_shrub_rose_harvested", "t_shrub_rose_season_spring", "t_shrub_rose_season_summer"], + "fg": 22379, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_grape", + "fg": 22380, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_grape_harvested", + "fg": 22381, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_raspberry", + "fg": 22382, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_raspberry_harvested", + "fg": 22383, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_huckleberry", + "fg": 22384, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_huckleberry_harvested", + "fg": 22385, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_blackberry", + "fg": 22386, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_blackberry_harvested", + "fg": 22387, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_elderberry", + "fg": 22388, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_elderberry_harvested", + "fg": 22389, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_mulberry", + "fg": 22390, + "bg": 1012, + "rotates": false + }, + { + "id": "t_tree_mulberry_harvested", + "fg": 22391, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_hydrangea_season_winter", + "fg": 22392, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_hydrangea_harvested_season_winter", + "fg": 22392, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_rose_season_winter", + "fg": 22393, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_rose_harvested_season_winter", + "fg": 22393, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_grape_season_winter", + "fg": 22394, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_grape_harvested_season_winter", + "fg": 22394, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_raspberry_season_winter", + "fg": 22395, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_raspberry_harvested_season_winter", + "fg": 22395, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_huckleberry_season_winter", + "fg": 22396, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_huckleberry_harvested_season_winter", + "fg": 22396, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_blackberry_season_winter", + "fg": 22396, + "bg": 992, + "rotates": false + }, + { + "id": "t_shrub_blackberry_harvested_season_winter", + "fg": 22396, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_elderberry_season_winter", + "fg": 22397, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_elderberry_harvested_season_winter", + "fg": 22397, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_mulberry_season_winter", + "fg": 22398, + "bg": 992, + "rotates": false + }, + { + "id": "t_tree_mulberry_harvested_season_winter", + "fg": 22398, + "bg": 992, + "rotates": false + }, + { + "id": "clay_pot_flower", + "fg": 22399, + "bg": 0, + "rotates": false + }, + { + "id": "plastic_pot_flower", + "fg": 22400, + "bg": 0, + "rotates": false + }, + { + "id": "grenadebandolier", + "fg": 22401, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_grenadebandolier", + "fg": 22402, + "bg": 0, + "rotates": false + }, + { + "id": ["v_airjack_item", "vp_air_jack"], + "fg": 22403, + "bg": 0, + "rotates": false + }, + { + "id": ["v_motorcycle_kickstand_item", "vp_motorcycle_kickstand"], + "fg": 22404, + "bg": 0, + "rotates": false + }, + { + "id": "elderberries", + "fg": 22405, + "bg": 0, + "rotates": false + }, + { + "id": "irradiated_elderberries", + "fg": 22406, + "bg": 0, + "rotates": false + }, + { + "id": "huckleberries", + "fg": 22407, + "bg": 0, + "rotates": false + }, + { + "id": "irradiated_huckleberries", + "fg": 22408, + "bg": 0, + "rotates": false + }, + { + "id": "mulberries", + "fg": 22409, + "bg": 0, + "rotates": false + }, + { + "id": "irradiated_mulberries", + "fg": 22410, + "bg": 0, + "rotates": false + }, + { + "id": "hydrangea_bud", + "fg": 22411, + "bg": 0, + "rotates": false + }, + { + "id": "hydrangea_flower", + "fg": 22412, + "bg": 0, + "rotates": false + }, + { + "id": "rose_hips", + "fg": 22413, + "bg": 0, + "rotates": false + }, + { + "id": "irradiated_rose_hips", + "fg": 22414, + "bg": 0, + "rotates": false + }, + { + "id": "rose_bud", + "fg": 22415, + "bg": 0, + "rotates": false + }, + { + "id": "rose_flower", + "fg": 22416, + "bg": 0, + "rotates": false + }, + { + "id": "seed_elderberries", + "fg": 22417, + "bg": 0, + "rotates": false + }, + { + "id": "seed_grapes", + "fg": 22418, + "bg": 0, + "rotates": false + }, + { + "id": "seed_huckleberries", + "fg": 22419, + "bg": 0, + "rotates": false + }, + { + "id": "seed_mulberries", + "fg": 22420, + "bg": 0, + "rotates": false + }, + { + "id": "seed_rose", + "fg": 22421, + "bg": 0, + "rotates": false + }, + { + "id": "spurge_bud", + "fg": 22422, + "bg": 0, + "rotates": false + }, + { + "id": "spurge_flower", + "fg": 22423, + "bg": 0, + "rotates": false + }, + { + "id": "tulip_bud", + "fg": 22424, + "bg": 0, + "rotates": false + }, + { + "id": "tulip_flower", + "fg": 22425, + "bg": 0, + "rotates": false + }, + { + "id": "f_candle_barrier", + "fg": 22426, + "bg": 0, + "rotates": false + }, + { + "id": "armor_alloyplate", + "fg": 22427, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_armor_alloyplate", + "fg": 22428, + "bg": 0, + "rotates": false + }, + { + "id": "armored_pack", + "fg": 22429, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_armored_pack", + "fg": 22430, + "bg": 0, + "rotates": false + }, + { + "id": "environmental_skinsuit", + "fg": 22431, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_environmental_skinsuit", + "fg": 22432, + "bg": 0, + "rotates": false + }, + { + "id": "survivor_skinsuit", + "fg": 22433, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_survivor_skinsuit", + "fg": 22434, + "bg": 0, + "rotates": false + }, + { + "id": "survivor_alloyplate", + "fg": 22435, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_survivor_alloyplate", + "fg": 22436, + "bg": 0, + "rotates": false + }, + { + "id": "survivor_lightplate", + "fg": 22437, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_survivor_lightplate", + "fg": 22438, + "bg": 0, + "rotates": false + }, + { + "id": [".300", "reloaded_.300", "reloaded_.3002", ".3002"], + "fg": 22439, + "bg": 0, + "rotates": false + }, + { + "id": [".303", "reloaded_.303", "reloaded_303_match"], + "fg": 22440, + "bg": 0, + "rotates": false + }, + { + "id": ".30810mag", + "fg": 22441, + "bg": 0, + "rotates": false + }, + { + "id": ".30820mag", + "fg": 22442, + "bg": 0, + "rotates": false + }, + { + "id": "reloaded_308_match", + "fg": 22443, + "bg": 0, + "rotates": false + }, + { + "id": ".380", + "fg": 22444, + "bg": 0, + "rotates": false + }, + { + "id": ".460", + "fg": 22445, + "bg": 0, + "rotates": false + }, + { + "id": "reloaded_.460", + "fg": 22446, + "bg": 0, + "rotates": false + }, + { + "id": "wolfsuit", + "fg": 22447 + }, + { + "id": "tr_landmine", + "fg": 22448, + "rotates": false + }, + { + "id": ["muzzle_brake", "460_muzzle_brake"], + "fg": 22449 + }, + { + "id": "retool_410", + "fg": 22450 + }, + { + "id": ["retool_762", "retool_545x39"], + "fg": 22451 + }, + { + "id": "retool_mauser", + "fg": 22452 + }, + { + "id": "thermos", + "fg": 22453 + }, + { + "id": "40sawmag", + "fg": 22454 + }, + { + "id": "50api", + "fg": 22455 + }, + { + "id": "7.62x54Rmag", + "fg": 22456 + }, + { + "id": "7.62x54Rmag2", + "fg": 22457 + }, + { + "id": "762_54R_incendiary", + "fg": 22458 + }, + { + "id": ["8mmMauser", "Match_7.92mm", "reloaded_7.92mm"], + "fg": 22459 + }, + { + "id": "9r51", + "fg": 22460 + }, + { + "id": "9x4", + "fg": 22461 + }, + { + "id": "Enfield17", + "fg": 22462 + }, + { + "id": "overlay_wielded_Enfield17", + "fg": 22463 + }, + { + "id": "G98", + "fg": 22464 + }, + { + "id": "overlay_wielded_G98", + "fg": 22465 + }, + { + "id": "SMLEMK4", + "fg": 22466 + }, + { + "id": "overlay_wielded_SMLEMK4", + "fg": 22467 + }, + { + "id": "Type24", + "fg": 22468 + }, + { + "id": "overlay_wielded_Type24", + "fg": 22469 + }, + { + "id": "ak101", + "fg": 22470 + }, + { + "id": "overlay_wielded_ak101", + "fg": 22471 + }, + { + "id": "ak102", + "fg": 22472 + }, + { + "id": "overlay_wielded_ak102", + "fg": 22473 + }, + { + "id": "ak104", + "fg": 22474 + }, + { + "id": "overlay_wielded_ak104", + "fg": 22475 + }, + { + "id": "ak12", + "fg": 22477 + }, + { + "id": "overlay_wielded_ak12", + "fg": 22478 + }, + { + "id": "ak12ussr", + "fg": 22479 + }, + { + "id": "overlay_wielded_ak12ussr", + "fg": 22480 + }, + { + "id": ["f_BioCo_Assembly_Machine", "BioCo_Assembly_Machine", "BioCo_Assembly_Machine_USE"], + "fg": 22481 + }, + { + "id": "Autonmous_Machine_Parts", + "fg": 22482 + }, + { + "id": "BioCo_AutoDoc_Core", + "fg": 22483 + }, + { + "id": "mon_zombie_skeltal", + "fg": 22484, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_skeltal_minion", + "fg": 22485, + "bg": 967, + "rotates": false + }, + { + "id": "sporeos", + "fg": 22486, + "bg": 0, + "rotates": false + }, + { + "id": "bread_garlic", + "fg": 22487, + "bg": 0, + "rotates": false + }, + { + "id": "garlic_roasted", + "fg": 22488, + "bg": 0, + "rotates": false + }, + { + "id": "chili_pepper_roasted", + "fg": 22489, + "bg": 0, + "rotates": false + }, + { + "id": "tar_oil", + "fg": 22490, + "bg": 0, + "rotates": false + }, + { + "id": "backpack_giant", + "fg": 22491 + }, + { + "id": "overlay_worn_backpack_giant", + "fg": 22492 + }, + { + "id": "canteen_birchbark", + "fg": 22493 + }, + { + "id": "jar_clay", + "fg": 22494 + }, + { + "id": "jar_clay_sealed", + "fg": 22495 + }, + { + "id": "legwrap_fur", + "fg": 22496 + }, + { + "id": "overlay_worn_legwrap_fur", + "fg": 22497 + }, + { + "id": "legwrap_leather", + "fg": 22498 + }, + { + "id": "overlay_worn_legwrap_leather", + "fg": 22499 + }, + { + "id": ["makeshift_sled_frame_item" , "vp_makeshift_sled_frame_part"], + "fg": 22500 + }, + { + "id": "log_canoe_item", + "fg": 22501 + }, + { + "id": "pack_basket", + "fg": 22502 + }, + { + "id": "overlay_worn_pack_basket", + "fg": 22503 + }, + { + "id": "makeshift_poultice", + "fg": 22504 + }, + { + "id": "pitch_wood", + "fg": 22505 + }, + { + "id": "primitive_hoe", + "fg": 22506 + }, + { + "id": "overlay_wielded_primitive_hoe", + "fg": 22507 + }, + { + "id": "sheath_birchbark", + "fg": 22508 + }, + { + "id": "overlay_worn_sheath_birchbark", + "fg": 22509 + }, + { + "id": ["makeshift_sled_basket_item", "vp_makeshift_sled_basket_part", "makeshift_sled_item"], + "fg": 22510, + "bg": 957, + "rotates": true + }, + { + "id": ["makeshift_sled_runners_item", "vp_makeshift_sled_runner_part"], + "fg": 22511, + "bg": 957, + "rotates": true + }, + { + "id": ["log_frame_item", "vp_log_frame_part"], + "fg": 22512, + "bg": 957, + "rotates": true + }, + { + "id": ["teabag_bark", "teabag_beebalm", "teabag_dandelion"], + "fg": 22513 + }, + { + "id": ["teabag_herbal", "teabag_pine"], + "fg": 22514 + }, + { + "id": "backpack_fur", + "fg": 22515 + }, + { + "id": "overlay_worn_backpack_fur", + "fg": 22516 + }, + { + "id": "f_wooden_rollmat", + "fg": 22517 + }, + { + "id": "wooden_rollmat", + "fg": 22518 + }, + { + "id": ["tr_birch_funnel", "birch_funnel"], + "fg": 22519 + }, + { + "id": "birch_water_jug", + "fg": 22520 + }, + { + "id": "dog_whistle_prim", + "fg": 22521 + }, + { + "id": "fish_trap_primitive", + "fg": 22522 + }, + { + "id": "flint_hand_drill", + "fg": 22523 + }, + { + "id": "intestines_processed", + "fg": 22524 + }, + { + "id": "large_intestines_processed", + "fg": 22525 + }, + { + "id": "bike_rack", + "fg": 22526 + }, + { + "id": "vp_bike_rack", + "fg": 22526, + "rotates": true + }, + { + "id": "overlay_worn_scarf_fur", + "fg": 22527, + "rotates": false + }, + { + "id": "overlay_worn_scarf_fur_loose", + "fg": 22527, + "rotates": false + }, + { + "id": "overlay_worn_scarf_fur_long", + "fg": 22528, + "rotates": false + }, + { + "id": "overlay_worn_scarf_fur_long_loose", + "fg": 22528, + "rotates": false + }, + { + "id": "scarf_long_loose", + "fg": 22529 + }, + { + "id": "scarf_long", + "fg": 22529 + }, + { + "id": "patchwork_scarf", + "fg": 22530, + "rotates": false + }, + { + "id": "patchwork_scarf_loose", + "fg": 22530 + }, + { + "id": "overlay_worn_patchwork_scarf", + "fg": 22531, + "rotates": false + }, + { + "id": "overlay_worn_patchwork_scarf_loose", + "fg": 22531, + "rotates": false + }, + { + "id": "overlay_worn_long_patchwork_scarf", + "fg": 22532, + "rotates": false + }, + { + "id": "overlay_worn_long_patchwork_scarf_loose", + "fg": 22532, + "rotates": false + }, + { + "id": "grimrobe", + "fg": 22549, + "rotates": false + }, + { + "id": "manual_shinigami", + "fg": 22548, + "rotates": false + }, + { + "id": "grimrobe", + "fg": 22549, + "rotates": false + }, + { + "id": "overlay_worn_grimrobe", + "fg": 22550, + "rotates": false + }, + { + "id": "scythe_bone", + "fg": 22551, + "rotates": false + }, + { + "id": "overlay_wielded_scythe_bone", + "fg": 22552, + "rotates": false + }, + { + "id": "scythe_diamond", + "fg": 22553, + "rotates": false + }, + { + "id": "overlay_wielded_scythe_diamond", + "fg": 22554, + "rotates": false + }, + { + "id": "scythe_fire_on", + "fg": 22555, + "rotates": false + }, + { + "id": "overlay_wielded_scythe_fire_on", + "fg": 22556, + "rotates": false + }, + { + "id": "scythe_ornate", + "fg": 22557, + "rotates": false + }, + { + "id": "overlay_wielded_scythe_ornate", + "fg": 22558, + "rotates": false + }, + { + "id": "scythe_relic", + "fg": 22559, + "rotates": false + }, + { + "id": "overlay_wielded_scythe_relic", + "fg": 22560, + "rotates": false + }, + { + "id": "relicscythes_book", + "fg": 22561, + "rotates": false + }, + { + "id": "basicscythes_book", + "fg": 22562, + "rotates": false + }, + { + "id": "scythe_fire_off", + "fg": 22563, + "rotates": false + }, + { + "id": "overlay_wielded_scythe_fire_off", + "fg": 22564, + "rotates": false + }, + { + "id": "blank_dummy", + "fg": 22573, + "rotates": false + }, + { + "id": "guy_dummy", + "fg": 22574, + "rotates": false + }, + { + "id": "gal_dummy", + "fg": 22575, + "rotates": false + }, + { + "id": "fancy_guy_dummy", + "fg": 22576, + "rotates": false + }, + { + "id": "fancy_gal_dummy", + "fg": 22577, + "rotates": false + }, + { + "id": "sport_guy_dummy", + "fg": 22578, + "rotates": false + }, + { + "id": "sport_gal_dummy", + "fg": 22579, + "rotates": false + }, + { + "id": "volleyball", + "fg": 22580, + "rotates": false + }, + { + "id": "volleyball_buddy", + "fg": 22581, + "rotates": false + }, + { + "id": "f_lily", + "fg": 22587, + "rotates": false + }, + { + "id": "f_black_eyed_susan", + "fg": 22588, + "rotates": false + }, + { + "id": "f_lotus", + "fg": 22589, + "rotates": false + }, + { + "id": "f_lilypad", + "fg": 22590, + "rotates": false + }, + { + "id": "f_sunflower", + "fg": 22591, + "rotates": false + }, + { + "id": "t_shrub_peanut", + "fg": 22592, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "rotates": false + }, + { + "id": "t_shrub_peanut_harvested", + "fg": 22593, + "bg": [ + { "weight":40, "sprite":1012}, + { "weight":30, "sprite":4833}, + { "weight":30, "sprite":4834}, + { "weight":30, "sprite":4835}, + { "weight":1, "sprite":4836}, + { "weight":1, "sprite":4837}, + { "weight":1, "sprite":4838}, + { "weight":1, "sprite":4839}, + { "weight":1, "sprite":4840}, + { "weight":1, "sprite":4841}, + { "weight":1, "sprite":4842}, + { "weight":1, "sprite":4843} + ], + "rotates": false + }, + { + "id": "bottle_twoliter", + "fg": 22594, + "bg": 0, + "rotates": false + }, + { + "id": "magnesium_tablet", + "fg": 22595, + "bg": 0, + "rotates": false + }, + { + "id": "garden_gnome", + "fg": 22596, + "bg": 0, + "rotates": false + }, + { + "id": "f_gnome", + "fg": 22596, + "bg": 967, + "rotates": false + }, + { + "id": "hecu_helmet", + "fg": 22597 + }, + { + "id": "hecu_gasmask_on", + "fg": 22598 + }, + { + "id": "hecu_gasmask", + "fg": 22614 + }, + { + "id": "hecu_jacket", + "fg": 22599 + }, + { + "id": "pcv", + "fg": 22600 + }, + { + "id": "pcv_on", + "fg": 22616 + }, + { + "id": "hecu_backpack", + "fg": 22601 + }, + { + "id": "hecu_pants", + "fg": 22602 + }, + { + "id": "hecu_boots", + "fg": 22603 + }, + { + "id": "hecu_gloves", + "fg": 22604 + }, + { + "id": "overlay_worn_hecu_helmet", + "fg": 22605 + }, + { + "id": "overlay_worn_hecu_gasmask", + "fg": 22606 + }, + { + "id": "overlay_worn_hecu_gasmask_on", + "fg": 22613 + }, + { + "id": "overlay_worn_hecu_jacket", + "fg": 22607 + }, + { + "id": "overlay_worn_pcv", + "fg": 22608 + }, + { + "id": "overlay_worn_pcv_on", + "fg": 22615 + }, + { + "id": "overlay_worn_hecu_backpack", + "fg": 22609 + }, + { + "id": "overlay_worn_hecu_pants", + "fg": 22610 + }, + { + "id": "overlay_worn_hecu_boots", + "fg": 22611 + }, + { + "id": "overlay_worn_hecu_gloves", + "fg": 22612 + }, + { + "id": "badge_military", + "fg": 22617 + }, + { + "id": "overlay_worn_badge_military", + "fg": 22618 + }, + { + "id": "m110", + "fg": 22619 + }, + { + "id": "overlay_wielded_m110", + "fg": 22620 + }, + { + "id": "fn_fnp", + "fg": 22621 + }, + { + "id": "overlay_wielded_fn_fnp", + "fg": 22622 + }, + { + "id": "fnfnp9mag", + "fg": 22623 + }, + { + "id": "cz_bren", + "fg": 22624 + }, + { + "id": "overlay_wielded_cz_bren", + "fg": 22625 + }, + { + "id": "auto_assault12", + "fg": 22626 + }, + { + "id": "overlay_wielded_auto_assault12", + "fg": 22627 + }, + { + "id": ["auto30mag", "spas30mag"], + "fg": 22628 + }, + { + "id": ["auto10mag", "spas10mag"], + "fg": 22629 + }, + { + "id": "fg42", + "fg": 22630 + }, + { + "id": "overlay_wielded_fg42", + "fg": 22631 + }, + { + "id": "jamisonmag/fg42mag", + "fg": 22632 + }, + { + "id": "px4_stormsub", + "fg": 22633 + }, + { + "id": "overlay_wielded_px4_stormsub", + "fg": 22634 + }, + { + "id": "spas15", + "fg": 22635 + }, + { + "id": "overlay_wielded_spas15", + "fg": 22636 + }, + { + "id": "jericho_941", + "fg": 22637 + }, + { + "id": "overlay_wielded_jericho_941", + "fg": 22638 + }, + { + "id": "jerichomagazine", + "fg": 22639 + }, + { + "id": "rem_model7600", + "fg": 22640 + }, + { + "id": "overlay_wielded_rem_model7600", + "fg": 22641 + }, + { + "id": "ruger_blackhawk", + "fg": 22642 + }, + { + "id": "overlay_wielded_ruger_blackhawk", + "fg": 22643 + }, + { + "id": "sig_p227", + "fg": 22644 + }, + { + "id": "overlay_wielded_sig_p227", + "fg": 22645 + }, + { + "id": "p227mag", + "fg": 22646 + }, + { + "id": "hat_noise_cancelling", + "fg": 22647 + }, + { + "id": "acorn_roasted", + "fg": 22648 + }, + { + "id": "acorns_cooked", + "fg": 22649 + }, + { + "id": "almond_unshelled", + "fg": 22651 + }, + { + "id": "almond", + "fg": 22650 + }, + { + "id": "almond_roasted", + "fg": 22652 + }, + { + "id": "beech_nuts", + "fg": 22653 + }, + { + "id": "cashews", + "fg": 22654 + }, + { + "id": "smart_phone", + "fg": 22655 + }, + { + "id": "smart_phone_flashlight", + "fg": 22656 + }, + { + "id": "faux_fur", + "fg": 22657 + }, + { + "id": "faux_fur_cat_ears", + "fg": 22658 + }, { + "id": "overlay_worn_faux_fur_cat_ears", + "fg": 22659 + }, + { + "id": "faux_fur_cat_tail", + "fg": 22660 + }, { + "id": "overlay_worn_faux_fur_cat_tail", + "fg": 22661 + }, + { + "id": "faux_fur_collar", + "fg": 22662 + }, { + "id": "overlay_worn_faux_fur_collar", + "fg": 22663 + }, + { + "id": "coat_faux_fur", + "fg": 22664 + }, { + "id": "overlay_worn_coat_faux_fur", + "fg": 22665 + }, + { + "id": ["mon_tengu"], + "fg": 22666, + "bg": 967, + "rotates": false + }, + { + "id": ["mon_tengu_monk"], + "fg": 22667, + "bg": 967, + "rotates": false + }, + { + "id": ["mon_nekomata"], + "fg": 22668, + "bg": 967, + "rotates": false + }, + { + "id": ["mon_kappa"], + "fg": 22669, + "bg": 967, + "rotates": false + }, + { + "id": ["mon_kappa_engineer"], + "fg": 22670, + "bg": 967, + "rotates": false + }, + { + "id": ["broken_kappabot"], + "fg": 22671, + "bg": 967, + "rotates": false + }, + { + "id": ["nekomata_tails"], + "fg": 22672, + "rotates": false + }, + { + "id": ["mon_kamaitachi"], + "fg": 22673, + "bg": 967, + "rotates": false + }, + { + "id": ["koji"], + "fg": 22674, + "rotates": false + }, + { + "id": ["sake_koji_rice"], + "fg": 22675, + "rotates": false + }, + { + "id": ["sake_filtered"], + "fg" : 22676, + "rotates": false + }, + { + "id": ["sake_unfiltered"], + "fg" : 22677, + "rotates" : false + }, + { + "id": ["brew_sake"], + "fg" : 22677, + "rotates" : false + }, + { + "id": ["brew_sake_koji"], + "fg": 22678, + "rotates": false + }, + { + "id": ["black_eyed_susan_bud"], + "fg" : 22679, + "rotates" : false + }, + { + "id": ["black_eyed_susan_flower"], + "fg" : 22680, + "rotates" : false + }, + { + "id": ["chestnut"], + "fg": 22681, + "rotates": false + }, + { + "id": ["chestnut_unshelled"], + "fg" : 22682, + "rotates" : false + }, + { + "id": ["chestnut_roasted"], + "fg": 22683, + "rotates": false + }, + { + "id": "overlay_worn_robe", + "fg": 22684, + "rotates": false + }, + { + "id": "jedi_cloak", + "fg": 22685 + }, + { + "id": "overlay_worn_cloak_fur", + "fg": 22686, + "rotates": false + }, + { + "id": "chainsaw_off", + "fg": 22687, + "rotates": false + }, + { + "id": "chainsaw_on", + "fg": 22688, + "rotates": false + }, + { + "id": "overlay_wielded_chainsaw_off", + "fg": 22689, + "rotates": false + }, + { + "id": "overlay_wielded_chainsaw_on", + "fg": 22690, + "rotates": false + }, + { + "id": "chainsaw_off", + "fg": 22687, + "rotates": false + }, + { + "id": "chainsaw_on", + "fg": 22688, + "rotates": false + }, + { + "id": "overlay_wielded_chainsaw_off", + "fg": 22689, + "rotates": false + }, + { + "id": "overlay_wielded_chainsaw_on", + "fg": 22690, + "rotates": false + }, + { + "id": "combatsaw_off", + "fg": 22691, + "rotates": false + }, + { + "id": "combatsaw_on", + "fg": 22692, + "rotates": false + }, + { + "id": "overlay_wielded_combatsaw_off", + "fg": 22693, + "rotates": false + }, + { + "id": "overlay_wielded_combatsaw_on", + "fg": 22694, + "rotates": false + }, + { + "id": "elec_chainsaw_off", + "fg": 22695, + "rotates": false + }, + { + "id": "elec_chainsaw_on", + "fg": 22696, + "rotates": false + }, + { + "id": "overlay_wielded_elec_chainsaw_off", + "fg": 22697, + "rotates": false + }, + { + "id": "overlay_wielded_elec_chainsaw_on", + "fg": 22698, + "rotates": false + }, + { + "id": "e_combatsaw_off", + "fg": 22699, + "rotates": false + }, + { + "id": "e_combatsaw_on", + "fg": 22700, + "rotates": false + }, + { + "id": "overlay_wielded_e_combatsaw_off", + "fg": 22701, + "rotates": false + }, + { + "id": "overlay_wielded_e_combatsaw_on", + "fg": 22702, + "rotates": false + }, + { + "id": "cs_lajatang_off", + "fg": 22703, + "rotates": false + }, + { + "id": "cs_lajatang_on", + "fg": 22704, + "rotates": false + }, + { + "id": "ecs_lajatang_off", + "fg": 22705, + "rotates": false + }, + { + "id": "ecs_lajatang_on", + "fg": 22706, + "rotates": false + }, + { + "id": "carver_off", + "fg": 22707, + "bg": 957, + "rotates": false + }, + { + "id": "carver_on", + "fg": 22708, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_carver_off", + "fg": 22709, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_carver_on", + "fg": 22710, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_trimmer_off", + "fg": 22711, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_trimmer_on", + "fg": 22712, + "bg": 957, + "rotates": false + }, + { + "id": "t_shrub_lilac", + "fg": 22713, + "bg": 1012, + "rotates": false + }, + { + "id": "t_shrub_lilac_harvested", + "fg": 22714, + "bg": 1012, + "rotates": false + }, + { + "id": ["t_shrub_lilac_season_winter", "t_shrub_lilac_harvested_season_winter"], + "fg": 22715, + "bg": 992, + "rotates": false + }, + { + "id": "motor_tiny", + "fg": 22716, + "rotates": false + }, + { + "id": "pot_canning", + "fg": 22717, + "rotates": false + }, + { + "id": "pot_xlhelmet", + "fg": 22718, + "rotates": false + }, + { + "id": "overlay_worn_pot_xlhelmet", + "fg": 22719, + "rotates": false + }, + { + "id": "hazelnut", + "fg": 22720, + "rotates": false + }, + { + "id": "hazelnut_unshelled", + "fg": 22721, + "rotates": false + }, + { + "id": "hazelnut_roasted", + "fg": 22722, + "rotates": false + }, + { + "id": "walnut", + "fg": 22723, + "rotates": false + }, + { + "id": "walnut_unshelled", + "fg": 22724, + "rotates": false + }, + { + "id": "walnut_roasted", + "fg": 22725, + "rotates": false + }, + { + "id": "pistachio", + "fg": 22726, + "rotates": false + }, + { + "id": "pistachio_unshelled", + "fg": 22727, + "rotates": false + }, + { + "id": "pistachio_roasted", + "fg": 22728, + "rotates": false + }, + { + "id": "atomic_coffeepot", + "fg": 22729, + "bg": 957, + "rotates": false + }, + { + "id": "inj_iron", + "fg": 22730 + }, + { + "id": "lilac_bud", + "fg": 22731, + "bg": 957, + "rotates": false + }, + { + "id": "lilac_flower", + "fg": 22732 + }, + { + "id": "lily_flower", + "fg": 22733 + }, + { + "id": "lily_bud", + "fg": 22734 + }, + { + "id": "lotus_flower", + "fg": 22735 + }, + { + "id": "lotus_bud", + "fg": 22736 + }, + { + "id": "peanut", + "fg": 22737 + }, + { + "id": "peanut_unshelled", + "fg": 22738 + }, + { + "id": "pecan", + "fg": 22739 + }, + { + "id": "pecan_unshelled", + "fg": 22740 + }, + { + "id": "pecan_roasted", + "fg": 22741 + }, + { + "id": "sunflower", + "fg": 22742 + }, + { + "id": "vp_ram_chitin", + "fg": 22743, + "rotates": true + }, + { + "id": "vp_ram_acidchitin", + "fg": 22744, + "rotates": true + }, + { + "id": "vp_black_box", + "fg": 22745, + "rotates": true + }, + { + "id": "vp_engine_electric_tiny", + "fg": 22746, + "rotates": true + }, + { + "id": ["bonemeal_tablet", "flavored_bonemeal_tablet"], + "fg": 22747 + }, + { + "id": "mon_turret_gnome", + "fg": 22748, + "rotates": true + }, + { + "id": "bot_turret_gnome", + "fg": 22749, + "rotates": true + }, + { + "id": "broken_turret_gnome", + "fg": 22750, + "rotates": true + }, + { + "id": ["broken_turret_9mm", "broken_turret"], + "fg": 22751, + "rotates": true + }, + { + "id": ["bot_turret_9mm", "bot_turret"], + "fg": 22752, + "rotates": true + }, + { + "id": "mon_turret_shot", + "fg": 22753, + "rotates": true + }, + { + "id": "broken_turret_shot", + "fg": 22754, + "rotates": true + }, + { + "id": "bot_turret_shot", + "fg": 22755, + "rotates": true + }, + { + "id": "mon_turret_teargas", + "fg": 22756, + "rotates": true + }, + { + "id": "broken_turret_teargas", + "fg": 22757, + "rotates": true + }, + { + "id": "bot_turret_teargas", + "fg": 22758, + "rotates": true + }, + { + "id": "mon_turret_beanbag", + "fg": 22759, + "rotates": true + }, + { + "id": "broken_turret_beanbag", + "fg": 22760, + "rotates": true + }, + { + "id": "bot_turret_beanbag", + "fg": 22761, + "rotates": true + }, + { + "id": ["broken_turret_rifle", "broken_milturret_556"], + "fg": 22762, + "rotates": true + }, + { + "id": ["bot_rifleturret", "bot_milturret_556"], + "fg": 22763, + "rotates": true + }, + { + "id": "overlay_wielded_m1918", + "fg": 22764, + "rotates": false + }, + { + "id": "mon_milturret_308", + "fg": 22765, + "rotates": true + }, + { + "id": "broken_milturret_308", + "fg": 22766, + "rotates": true + }, + { + "id": "bot_milturret_308", + "fg": 22767, + "rotates": true + }, + { + "id": ["broken_turret_bmg", "broken_milturret_50bmg"], + "fg": 22768, + "rotates": true + }, + { + "id": ["bot_antimateriel", "bot_milturret_50bmg"], + "fg": 22769, + "rotates": true + }, + { + "id": "mon_milturret_8x40mm", + "fg": 22770, + "rotates": true + }, + { + "id": "broken_milturret_8x40mm", + "fg": 22771, + "rotates": true + }, + { + "id": "bot_milturret_8x40mm", + "fg": 22772, + "rotates": true + }, + { + "id": "bodypillow", + "fg": 22773, + "rotates": true + }, + { + "id": "overlay_wielded_bodypillow", + "fg": 22774, + "rotates": true + }, + { + "id": "mon_milturret_needle", + "fg": 22775, + "rotates": true + }, + { + "id": "broken_milturret_needle", + "fg": 22776, + "rotates": true + }, + { + "id": "bot_milturret_needle", + "fg": 22777, + "rotates": true + }, + { + "id": "mon_milturret_40mm", + "fg": 22778, + "rotates": true + }, + { + "id": "broken_milturret_40mm", + "fg": 22779, + "rotates": true + }, + { + "id": "bot_milturret_40mm", + "fg": 22780, + "rotates": true + }, + { + "id": "mon_milturret_flame", + "fg": 22781, + "rotates": true + }, + { + "id": "broken_milturret_flame", + "fg": 22782, + "rotates": true + }, + { + "id": "bot_milturret_flame", + "fg": 22783, + "rotates": true + }, + { + "id": ["broken_laserturret", "broken_advturret_laser"], + "fg": 22784, + "rotates": true + }, + { + "id": ["bot_laserturret", "bot_advturret_laser"], + "fg": 22785, + "rotates": true + }, + { + "id": "mon_advturret_acid", + "fg": 22786, + "rotates": true + }, + { + "id": "broken_advturret_acid", + "fg": 22787, + "rotates": true + }, + { + "id": "bot_advturret_acid", + "fg": 22788, + "rotates": true + }, + { + "id": "mon_advturret_plasma", + "fg": 22789, + "rotates": true + }, + { + "id": "broken_advturret_plasma", + "fg": 22790, + "rotates": true + }, + { + "id": "bot_advturret_plasma", + "fg": 22791, + "rotates": true + }, + { + "id": "mon_advturret_rail", + "fg": 22792, + "rotates": true + }, + { + "id": "broken_advturret_rail", + "fg": 22793, + "rotates": true + }, + { + "id": "bot_advturret_rail", + "fg": 22794, + "rotates": true + }, + { + "id": "mon_advturret_lightning", + "fg": 22795, + "rotates": true + }, + { + "id": "broken_advturret_lightning", + "fg": 22796, + "rotates": true + }, + { + "id": "bot_advturret_lightning", + "fg": 22797, + "rotates": true + }, + { + "id": "mon_advturret_emp", + "fg": 22798, + "rotates": true + }, + { + "id": "broken_advturret_emp", + "fg": 22799, + "rotates": true + }, + { + "id": "bot_advturret_emp", + "fg": 22800, + "rotates": true + }, + { + "id": "mon_turret_disarmed", + "fg": 22801, + "rotates": true + }, + { + "id": "broken_turret_disarmed", + "fg": 22802, + "rotates": true + }, + { + "id": "bot_turret_disarmed", + "fg": 22801, + "rotates": true + }, + { + "id": "mon_milturret_disarmed", + "fg": 22803, + "rotates": true + }, + { + "id": "broken_milturret_disarmed", + "fg": 22804, + "rotates": true + }, + { + "id": "bot_milturret_disarmed", + "fg": 22803, + "rotates": true + }, + { + "id": "mon_advturret_disarmed", + "fg": 22805, + "rotates": true + }, + { + "id": "broken_advturret_disarmed", + "fg": 22806, + "rotates": true + }, + { + "id": "bot_advturret_disarmed", + "fg": 22805, + "rotates": true + }, + { + "id": "mon_turret_water", + "fg": 22807, + "rotates": true + }, + { + "id": "broken_turret_water", + "fg": 22808, + "rotates": true + }, + { + "id": "bot_turret_water", + "fg": 22809, + "rotates": true + }, + { + "id": "mon_craftbuddy", + "fg": 22810, + "rotates": true + }, + { + "id": "broken_craftbuddy", + "fg": 22811, + "rotates": true + }, + { + "id": "bot_craftbuddy", + "fg": 22812, + "rotates": true + }, + { + "id": ["mon_autoarmor_basic", "mon_autoarmor_base"], + "fg": 22813, + "rotates": true + }, + { + "id": "broken_autoarmor_basic", + "fg": 22814, + "rotates": true + }, + { + "id": "bot_autoarmor_basic", + "fg": 22815, + "rotates": true + }, + { + "id": "mon_autoarmor_heavy", + "fg": 22816, + "rotates": true + }, + { + "id": "broken_autoarmor_heavy", + "fg": 22817, + "rotates": true + }, + { + "id": "bot_autoarmor_heavy", + "fg": 22818, + "rotates": true + }, + { + "id": "mon_autoarmor_light", + "fg": 22819, + "rotates": true + }, + { + "id": "broken_autoarmor_light", + "fg": 22820, + "rotates": true + }, + { + "id": "bot_autoarmor_light", + "fg": 22821, + "rotates": true + }, + { + "id": "mon_light_hack", + "fg": 22822, + "rotates": true + }, + { + "id": "broken_light_hack", + "fg": 22823, + "rotates": true + }, + { + "id": "bot_light_hack", + "fg": 22824, + "rotates": true + }, + { + "id": "mon_distract_hack", + "fg": 22825, + "rotates": true + }, + { + "id": "broken_distract_hack", + "fg": 22826, + "rotates": true + }, + { + "id": "bot_distract_hack", + "fg": 22827, + "rotates": true + }, + { + "id": "mon_arson_hack", + "fg": 22829, + "rotates": true + }, + { + "id": "broken_arson_hack", + "fg": 22830, + "rotates": true + }, + { + "id": "bot_arson_hack", + "fg": 22831, + "rotates": true + }, + { + "id": "mon_spore_hack", + "fg": 22832, + "rotates": true + }, + { + "id": "broken_spore_hack", + "fg": 22833, + "rotates": true + }, + { + "id": "bot_spore_hack", + "fg": 22834, + "rotates": true + }, + { + "id": "mon_eyebot_heater", + "fg": 22835, + "rotates": true + }, + { + "id": "broken_eyebot_heater", + "fg": 22836, + "rotates": true + }, + { + "id": "bot_eyebot_heater", + "fg": 22837, + "rotates": true + }, + { + "id": "mon_eyebot_furnace", + "fg": 22838, + "rotates": true + }, + { + "id": "broken_eyebot_furnace", + "fg": 22839, + "rotates": true + }, + { + "id": "bot_eyebot_furnace", + "fg": 22840, + "rotates": true + }, + { + "id": "mon_eyebot_burn", + "fg": 22841, + "rotates": true + }, + { + "id": "broken_eyebot_burn", + "fg": 22842, + "rotates": true + }, + { + "id": "bot_eyebot_burn", + "fg": 22843, + "rotates": true + }, + { + "id": "helmet_riot_raised", + "fg": 22844, + "rotates": true + }, + { + "id": "mon_utilibot", + "fg": 22845, + "bg": 967, + "rotates": true + }, + { + "id": "broken_utilibot", + "fg": 22846, + "rotates": true + }, + { + "id": "bot_utilibot", + "fg": 22847, + "rotates": true + }, + { + "id": "mon_utilibot_butler", + "fg": 22848, + "bg": 967, + "rotates": true + }, + { + "id": "broken_utilibot_butler", + "fg": 22849, + "rotates": true + }, + { + "id": "bot_utilibot_butler", + "fg": 22850, + "rotates": true + }, + { + "id": "mon_utilibot_const", + "fg": 22851, + "bg": 967, + "rotates": true + }, + { + "id": "broken_utilibot_const", + "fg": 22852, + "rotates": true + }, + { + "id": "bot_utilibot_const", + "fg": 22853, + "rotates": true + }, + { + "id": "mon_utilibot_fire", + "fg": 22854, + "bg": 967, + "rotates": true + }, + { + "id": "broken_utilibot_fire", + "fg": 22855, + "rotates": true + }, + { + "id": "bot_utilibot_fire", + "fg": 22856, + "rotates": true + }, + { + "id": "mon_utilibot_blob", + "fg": 22857, + "bg": 967, + "rotates": true + }, + { + "id": "broken_utilibot_blob", + "fg": 22858, + "rotates": true + }, + { + "id": "bot_utilibot_blob", + "fg": 22859, + "rotates": true + }, + { + "id": "overlay_worn_helmet_riot_raised", + "fg": 22860, + "rotates": true + }, + { + "id": "mon_utilibot_slimespring", + "fg": 22861, + "bg": 967, + "rotates": true + }, + { + "id": "broken_utilibot_slimespring", + "fg": 22862, + "rotates": true + }, + { + "id": "bot_utilibot_slimespring", + "fg": 22863, + "rotates": true + }, + { + "id": "mon_utilibot_digester", + "fg": 22864, + "bg": 967, + "rotates": true + }, + { + "id": "broken_utilibot_digester", + "fg": 22865, + "rotates": true + }, + { + "id": "bot_utilibot_digester", + "fg": 22866, + "rotates": true + }, + { + "id": "mon_utilibot_beehive", + "fg": 22867, + "bg": 967, + "rotates": true + }, + { + "id": "broken_utilibot_beehive", + "fg": 22868, + "rotates": true + }, + { + "id": "bot_utilibot_beehive", + "fg": 22869, + "rotates": true + }, + { + "id": "mon_medibot", + "fg": 22870, + "bg": 967, + "rotates": true + }, + { + "id": "broken_medibot", + "fg": 22871, + "rotates": true + }, + { + "id": "bot_medibot", + "fg": 22872, + "rotates": true + }, + { + "id": "mon_medibot_assassin", + "fg": 22873, + "bg": 967, + "rotates": true + }, + { + "id": "broken_medibot_assassin", + "fg": 22874, + "rotates": true + }, + { + "id": "bot_medibot_assassin", + "fg": 22875, + "rotates": true + }, + { + "id": "overlay_worn_dance_shoes", + "fg": 22876, + "rotates": false + }, + { + "id": "mon_medibot_elixir", + "fg": 22877, + "bg": 967, + "rotates": true + }, + { + "id": "broken_medibot_elixir", + "fg": 22878, + "rotates": true + }, + { + "id": "bot_medibot_elixir", + "fg": 22879, + "rotates": true + }, + { + "id": "mon_medibot_party", + "fg": 22880, + "bg": 967, + "rotates": true + }, + { + "id": "broken_medibot_party", + "fg": 22881, + "rotates": true + }, + { + "id": "bot_medibot_party", + "fg": 22882, + "rotates": true + }, + { + "id": "mon_skitterbot_rat", + "fg": 22883, + "bg": 967, + "rotates": true + }, + { + "id": "broken_skitterbot_rat", + "fg": 22884, + "rotates": true + }, + { + "id": "bot_skitterbot_rat", + "fg": 22885, + "rotates": true + }, + { + "id": "mon_skitterbot_grab", + "fg": 22886, + "bg": 967, + "rotates": true + }, + { + "id": "broken_skitterbot_grab", + "fg": 22887, + "rotates": true + }, + { + "id": "bot_skitterbot_grab", + "fg": 22888, + "rotates": true + }, + { + "id": "mon_skitterbot_hunter", + "fg": 22889, + "bg": 967, + "rotates": true + }, + { + "id": "broken_skitterbot_hunter", + "fg": 22890, + "rotates": true + }, + { + "id": "bot_skitterbot_hunter", + "fg": 22891, + "rotates": true + }, + { + "id": "broken_broken_cyborg", + "fg": 22892, + "rotates": true + }, + { + "id": "mon_cyborg_necro", + "fg": 22893, + "bg": 967, + "rotates": true + }, + { + "id": "broken_cyborg_necro", + "fg": 22894, + "rotates": true + }, + { + "id": "bot_cyborg_necro", + "fg": 22895, + "rotates": true + }, + { + "id": ["mon_secubot", "mon_defbot_9mm"], + "fg": 22896, + "bg": 967, + "rotates": true + }, + { + "id": ["broken_secubot", "broken_defbot_9mm"], + "fg": 22897, + "rotates": true + }, + { + "id": ["bot_secubot", "bot_defbot_9mm"], + "fg": 22898, + "rotates": true + }, + { + "id": ["mon_riotbot", "mon_copbot", "mon_defbot_riotcontrol"], + "fg": 22899, + "bg": 967, + "rotates": true + }, + { + "id": ["broken_riotbot", "broken_copbot", "broken_defbot_riotcontrol"], + "fg": 22900, + "rotates": true + }, + { + "id": ["bot_riotbot", "bot_copbot", "bot_defbot_riotcontrol"], + "fg": 22901, + "rotates": true + }, + { + "id": "mon_defbot_shot", + "fg": 22902, + "bg": 967, + "rotates": true + }, + { + "id": "broken_defbot_shot", + "fg": 22903, + "rotates": true + }, + { + "id": "bot_defbot_shot", + "fg": 22904, + "rotates": true + }, + { + "id": "mon_defbot_cowboy", + "fg": 22905, + "bg": 967, + "rotates": true + }, + { + "id": "broken_defbot_cowboy", + "fg": 22906, + "rotates": true + }, + { + "id": "bot_defbot_cowboy", + "fg": 22907, + "rotates": true + }, + { + "id": "overlay_worn_dress_shoes", + "fg": 22908, + "rotates": false + }, + { + "id": "mon_defbot_samurai", + "fg": 22909, + "bg": 967, + "rotates": true + }, + { + "id": "broken_defbot_samurai", + "fg": 22910, + "rotates": true + }, + { + "id": "bot_defbot_samurai", + "fg": 22911, + "rotates": true + }, + { + "id": "mon_defbot_paladin", + "fg": 22912, + "bg": 967, + "rotates": true + }, + { + "id": "broken_defbot_paladin", + "fg": 22913, + "rotates": true + }, + { + "id": "bot_defbot_paladin", + "fg": 22914, + "rotates": true + }, + { + "id": "t_shrub_helmet_plump", + "fg": 22915, + "bg": 4844, + "rotates": false + }, + { + "id": "t_shrub_helmet_plump_harvested", + "fg": 22916, + "bg": 4844, + "rotates": false + }, + { + "id": [ "t_shrub_pod_sweet_season_autumn", "t_shrub_pod_sweet_season_winter" ], + "fg": 22917, + "bg": 4844, + "rotates": false + }, + { + "id": [ "t_shrub_pod_sweet", "t_shrub_pod_sweet_season_spring", "t_shrub_pod_sweet_season_summer" ], + "fg": 22918, + "bg": 4844, + "rotates": false + }, + { + "id": "t_shrub_pod_sweet_harvested", + "fg": 22919, + "bg": 4844, + "rotates": false + }, + { + "id": [ "t_shrub_wheat_cave_season_summer", "t_shrub_wheat_cave_season_autumn" ], + "fg": 22920, + "bg": 4844, + "rotates": false + }, + { + "id": [ "t_shrub_wheat_cave", "t_shrub_wheat_cave_season_spring", "t_shrub_wheat_cave_season_winter" ], + "fg": 22921, + "bg": 4844, + "rotates": false + }, + { + "id": "t_shrub_wheat_cave_harvested", + "fg": 22922, + "bg": 4844, + "rotates": false + }, + { + "id": [ "t_shrub_tails_pig_season_summer", "t_shrub_tails_pig_season_autumn" ], + "fg": 22923, + "bg": 4844, + "rotates": false + }, + { + "id": [ "t_shrub_tails_pig", "t_shrub_tails_pig_season_spring", "t_shrub_tails_pig_season_winter" ], + "fg": 22924, + "bg": 4844, + "rotates": false + }, + { + "id": "t_shrub_tails_pig_harvested", + "fg": 22925, + "bg": 4844, + "rotates": false + }, + { + "id": "t_shrub_bush_quarry_season_winter", + "fg": 22926, + "bg": 4844, + "rotates": false + }, + { + "id": [ "t_shrub_bush_quarry", "t_shrub_bush_quarry_season_spring", "t_shrub_bush_quarry_season_summer", "t_shrub_bush_quarry_season_autumn" ], + "fg": 22927, + "bg": 4844, + "rotates": false + }, + { + "id": "t_shrub_bush_quarry_harvested", + "fg": 22928, + "bg": 4844, + "rotates": false + }, + { + "id": [ "caveyot_helmet_plump", "caveyot_helmet_plump_cooked" ], + "fg": 22929, + "bg": 0, + "rotates": false + }, + { + "id": "caveyot_pod_sweet", + "fg": 22930, + "bg": 0, + "rotates": false + }, + { + "id": "caveyot_wheat_cave", + "fg": 22931, + "bg": 0, + "rotates": false + }, + { + "id": "caveyot_tails_pig", + "fg": 22932, + "bg": 0, + "rotates": false + }, + { + "id": ["caveyot_bush_quarry", "caveyot_bush_quarry_cooked"], + "fg": 22933, + "bg": 0, + "rotates": false + }, + { + "id": "mon_milbot_trainer", + "fg": 22934, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_trainer", + "fg": 22935, + "rotates": true + }, + { + "id": "bot_milbot_trainer", + "fg": 22936, + "rotates": true + }, + { + "id": "mon_milbot_556", + "fg": 22937, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_556", + "fg": 22938, + "rotates": true + }, + { + "id": "bot_milbot_556", + "fg": 22939, + "rotates": true + }, + { + "id": "overlay_worn_tux", + "fg": 22940, + "rotates": false + }, + { + "id": "mon_milbot_308", + "fg": 22941, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_308", + "fg": 22942, + "rotates": true + }, + { + "id": "bot_milbot_308", + "fg": 22943, + "rotates": true + }, + { + "id": "mon_milbot_50bmg", + "fg": 22944, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_50bmg", + "fg": 22945, + "rotates": true + }, + { + "id": "bot_milbot_50bmg", + "fg": 22946, + "rotates": true + }, + { + "id": "mon_milbot_8x40mm", + "fg": 22947, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_8x40mm", + "fg": 22948, + "rotates": true + }, + { + "id": "bot_milbot_8x40mm", + "fg": 22949, + "rotates": true + }, + { + "id": "mon_milbot_needle", + "fg": 22950, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_needle", + "fg": 22951, + "rotates": true + }, + { + "id": "bot_milbot_needle", + "fg": 22952, + "rotates": true + }, + { + "id": "mon_milbot_40mm", + "fg": 22953, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_40mm", + "fg": 22954, + "rotates": true + }, + { + "id": "bot_milbot_40mm", + "fg": 22955, + "rotates": true + }, + { + "id": "wool_suit", + "fg": 22956 + }, + { + "id": "mon_milbot_flame", + "fg": 22957, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_flame", + "fg": 22958, + "rotates": true + }, + { + "id": "bot_milbot_flame", + "fg": 22959, + "rotates": true + }, + { + "id": "mon_milbot_gaurdian", + "fg": 22960, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_gaurdian", + "fg": 22961, + "rotates": true + }, + { + "id": "bot_milbot_gaurdian", + "fg": 22962, + "rotates": true + }, + { + "id": "mon_milbot_deluxe", + "fg": 22963, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_deluxe", + "fg": 22964, + "rotates": true + }, + { + "id": "bot_milbot_deluxe", + "fg": 22965, + "rotates": true + }, + { + "id": "mon_milbot_protector", + "fg": 22966, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_protector", + "fg": 22967, + "rotates": true + }, + { + "id": "bot_milbot_protector", + "fg": 22968, + "rotates": true + }, + { + "id": "mon_milbot_defender", + "fg": 22969, + "bg": 967, + "rotates": true + }, + { + "id": "broken_milbot_defender", + "fg": 22970, + "rotates": true + }, + + { + "id": "bot_milbot_defender", + "fg": 22971, + "rotates": true + }, + { + "id": "overlay_worn_wool_suit", + "fg": 22972, + "rotates": false + }, + { + "id": "mon_advbot_laser", + "fg": 22973, + "bg": 967, + "rotates": true + }, + { + "id": "broken_advbot_laser", + "fg": 22974, + "rotates": true + }, + { + "id": "bot_advbot_laser", + "fg": 22975, + "rotates": true + }, + { + "id": "mon_advbot_plasma", + "fg": 22976, + "bg": 967, + "rotates": true + }, + { + "id": "broken_advbot_plasma", + "fg": 22977, + "rotates": true + }, + { + "id": "bot_advbot_plasma", + "fg": 22978, + "rotates": true + }, + { + "id": "mon_advbot_rail", + "fg": 22979, + "bg": 967, + "rotates": true + }, + { + "id": "broken_advbot_rail", + "fg": 22980, + "rotates": true + }, + { + "id": "bot_advbot_rail", + "fg": 22981, + "rotates": true + }, + { + "id": "mon_advbot_lightning", + "fg": 22982, + "bg": 967, + "rotates": true + }, + { + "id": "broken_advbot_lightning", + "fg": 22983, + "rotates": true + }, + { + "id": "bot_advbot_lightning", + "fg": 22984, + "rotates": true + }, + { + "id": "mon_advbot_emp", + "fg": 22985, + "bg": 967, + "rotates": true + }, + { + "id": "broken_advbot_emp", + "fg": 22986, + "rotates": true + }, + { + "id": "bot_advbot_emp", + "fg": 22987, + "rotates": true + }, + { + "id": "mon_advbot_glitter", + "fg": 22989, + "bg": 967, + "rotates": true + }, + { + "id": "broken_advbot_glitter", + "fg": 22990, + "rotates": true + }, + { + "id": "bot_advbot_glitter", + "fg": 22991, + "rotates": true + }, + { + "id": "mon_advbot_bitter", + "fg": 22992, + "bg": 967, + "rotates": true + }, + { + "id": "broken_advbot_bitter", + "fg": 22993, + "rotates": true + }, + { + "id": "bot_advbot_bitter", + "fg": 22994, + "rotates": true + }, + { + "id": "crucible", + "fg": 22995, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_wielded_crucible", + "fg": 22996, + "rotates": false + }, + { + "id": "crucible_clay", + "fg": 22997 + }, + { + "id": "overlay_wielded_crucible_clay", + "fg": 22998, + "rotates": false + }, + { + "id": "coin_quarter", + "fg": 22999 + }, + { + "id": "magic_8_ball", + "fg": 23000, + "rotates": false + }, + { + "id": "mask_rioter", + "fg": 23001 + }, + { + "id": "overlay_worn_mask_rioter", + "fg": 23002, + "rotates": false + }, + { + "id": "keffiyeh", + "fg": 23003 + }, + { + "id": "overlay_worn_keffiyeh", + "fg": 23004, + "rotates": false + }, + { + "id": "thermal_mask", + "fg": 23005, + "bg": 957, + "rotates": false + }, + { + "id": "thermal_mask_on", + "fg": 23005, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_worn_thermal_mask", + "fg": 23006, + "rotates": false + }, + { + "id": "overlay_worn_thermal_mask_on", + "fg": 23006, + "rotates": false + }, + { + "id": "duster_faux_fur", + "fg": 23007 + }, + { + "id": "overlay_worn_duster_faux_fur", + "fg": 23008, + "rotates": false + }, + { + "id": "longsword_fake", + "fg": 23009, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_longsword_fake", + "fg": 23010, + "rotates": false + }, + { + "id": "longsword", + "fg": 23011, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_longsword", + "fg": 23012, + "rotates": false + }, + { + "id": "longsword_inferior", + "fg": 23013, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_longsword_inferior", + "fg": 23014, + "rotates": false + }, + { + "id": "katana", + "fg": 23015, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_katana", + "fg": 23016, + "rotates": false + }, + { + "id": "katana_fake", + "fg": 23017, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_katana_fake", + "fg": 23018, + "rotates": false + }, + { + "id": "katana_inferior", + "fg": 23019, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_katana_inferior", + "fg": 23020, + "rotates": false + }, + { + "id": "firekatana_off", + "fg": 23021, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_firekatana_off", + "fg": 23022, + "rotates": false + }, + { + "id": "firekatana_on", + "fg": 23023, + "bg": 957, + "rotates": false + }, + + { + "id": "overlay_wielded_firekatana_on", + "fg": 23024, + "rotates": false + }, + { + "id": "subsuit_xl", + "fg": 23025 + }, + { + "id": "overlay_worn_subsuit_xl", + "fg": 23026, + "rotates": false + }, + { + "id": "footrags", + "fg": 23027, + "bg": 957 + }, + { + "id": "overlay_worn_footrags", + "fg": 23028, + "rotates": false + }, + { + "id": "flip_flops", + "fg": 23029, + "rotates": false + }, + { + "id": "overlay_worn_flip_flops", + "fg": 23030, + "rotates": false + }, + { + "id": "ragpouch", + "fg": 23031 + }, + { + "id": "overlay_worn_ragpouch", + "fg": 23032 + }, + { + "id": "slippers", + "fg": 23033 + }, + { + "id": "overlay_worn_slippers", + "fg": 23034, + "rotates": false + }, + { + "id": "overlay_wielded_candle", + "fg": 23035, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_candle_lit", + "fg": 23036, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_worn_mouthpiece", + "fg": 23037, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_worn_judo_belt_black", + "fg": 23038, + "rotates": false + }, + { + "id": "overlay_worn_judo_belt_blue", + "fg": 23039, + "rotates": false + }, + { + "id": "overlay_worn_judo_belt_brown", + "fg": 23040, + "rotates": false + }, + { + "id": "overlay_worn_judo_belt_green", + "fg": 23041, + "rotates": false + }, + { + "id": "overlay_worn_judo_belt_orange", + "fg": 23042, + "rotates": false + }, + { + "id": "overlay_worn_judo_belt_white", + "fg": 23043, + "rotates": false + }, + { + "id": "overlay_worn_judo_belt_yellow", + "fg": 23044, + "rotates": false + }, + { + "id": "overlay_worn_backpack_leather", + "fg": 23045, + "rotates": false + }, + { + "id": "overlay_worn_backpack_leather", + "fg": 23045, + "rotates": false + }, + { + "id": "overlay_worn_survivor_pack", + "fg": 23046, + "rotates": false + }, + { + "id": "makeshift_knife", + "fg": 23047 + }, + { + "id": "overlay_wielded_makeshift_knife", + "fg": 23048, + "rotates": false + }, + { + "id": "overlay_wielded_throwing_knife", + "fg": 23049 + }, + { + "id": "cassock", + "fg": 23050 + }, + { + "id": "geta", + "fg": 23051 + }, + { + "id": "eboshi", + "fg": 23052 + }, + { + "id": "kariginu", + "fg": 23053 + }, + { + "id": "thawb", + "fg": 23054 + }, + { + "id": "kufi", + "fg": 23055 + }, + { + "id": "kippah", + "fg": 23056 + }, + { + "id": "kittel", + "fg": 23057 + }, + { + "id": ["bondage_mask", "bondage_mask_zipped"], + "fg": 23058 + }, + { + "id": "overlay_worn_bondage_mask", + "fg": 544, + "rotates": false + }, + { + "id": "overlay_worn_bondage_mask_zipped", + "fg": 23059, + "rotates": false + }, + { + "id": "crossbow", + "fg": 2001, + "rotates": false + }, + { + "id": "overlay_wielded_crossbow", + "fg": 2096, + "rotates": false + }, + { + "id": "crossbow_makeshift", + "fg": 23060, + "rotates": false + }, + { + "id": "overlay_wielded_crossbow_makeshift", + "fg": 23061, + "rotates": false + }, + { + "id": "ethereal_crossbow", + "fg": 2007, + "rotates": false + }, + { + "id": "overlay_wielded_ethereal_crossbow", + "fg": 23062, + "rotates": false + }, + { + "id": "hand_crossbow", + "fg": 2025, + "rotates": false + }, + { + "id": "overlay_wielded_hand_crossbow", + "fg": 2104, + "rotates": false + }, + { + "id": "bullet_crossbow", + "fg": 1992, + "bg": 957, + "rotates": false + }, + { + "id": "overlay_wielded_bullet_crossbow", + "fg": 23063, + "rotates": false + }, + { + "id": "gun_crossbow", + "fg": 23064 + }, + { + "id": "huge_crossbow", + "fg": 2036, + "rotates": false + }, + { + "id": "overlay_wielded_huge_crossbow", + "fg": 2090, + "rotates": false + }, + { + "id": "compcrossbow", + "fg": 23065, + "rotates": false + }, + { + "id": "overlay_wielded_compcrossbow", + "fg": 23066, + "rotates": false + }, + { + "id": "compositecrossbow", + "fg": 23067, + "rotates": false + }, + { + "id": "overlay_wielded_compositecrossbow", + "fg": 23068, + "rotates": false + }, + { + "id": ["rep_crossbow"], + "fg": 2173, + "rotates": false + }, + { + "id": ["overlay_wielded_rep_crossbow"], + "fg": 2133, + "rotates": false + }, + { + "id": ["hat_faux_fur"], + "fg": 23069, + "rotates": false + }, + { + "id": ["overlay_worn_hat_faux_fur"], + "fg": 23070, + "rotates": false + }, + { + "id": ["pants_faux_fur"], + "fg": 23071, + "rotates": false + }, + { + "id": ["overlay_worn_pants_faux_fur"], + "fg": 23072, + "rotates": false + }, + { + "id": ["trenchcoat_faux_fur"], + "fg": 23073, + "rotates": false + }, + { + "id": ["overlay_worn_trenchcoat_faux_fur"], + "fg": 23074, + "rotates": false + }, + { + "id": ["sleeveless_duster_faux_fur"], + "fg": 23075, + "rotates": false + }, + { + "id": ["overlay_worn_sleeveless_duster_faux_fur"], + "fg": 23076, + "rotates": false + }, + { + "id": ["sleeveless_trenchcoat_faux_fur"], + "fg": 23077, + "rotates": false + }, + { + "id": ["overlay_worn_sleeveless_trenchcoat_faux_fur"], + "fg": 23078, + "rotates": false + }, + { + "id": "hexenhammer", + "fg": 23079, + "rotates": false + }, + { + "id": "hexenhammer_active", + "fg": 23080, + "rotates": false + }, + { + "id": "overlay_wielded_hexenhammer", + "fg": 23081, + "rotates": false + }, + { + "id": "overlay_wielded_hexenhammer_active", + "fg": 23082, + "rotates": false + }, + { + "id": "overlay_worn_gauntlets_necro", + "fg": 23083, + "rotates": false + }, + { + "id": "overlay_worn_trenchcoat_leather", + "fg": 23084, + "rotates": false + }, + { + "id": "overlay_worn_gloves_wool", + "fg": 23085, + "rotates": false + }, + { + "id": "overlay_wielded_rm103a_pistol", + "fg": 23086, + "rotates": false + }, + { + "id": "mon_insect_leech", + "fg": 23087, + "rotates": false + }, + { + "id": "mon_insect_hugeleech", + "fg": 23088, + "rotates": false + }, + { + "id": "mon_insect_abominableleech", + "fg": 23089, + "rotates": false + }, + { + "id": "mon_insect_acidicleech", + "fg": 23090, + "rotates": false + }, + { + "id": "mon_insect_bigleech", + "fg": 23091, + "rotates": false + }, + { + "id": "mon_insect_bloatedleech", + "fg": 23092, + "rotates": false + }, + { + "id": "mon_insect_devourerleech", + "fg": 23093, + "rotates": false + }, + { + "id": "mon_insect_bloodsurgeleech", + "fg": 23094, + "rotates": false + }, + { + "id": "mon_insect_dreadfulleech", + "fg": 23095, + "rotates": false + }, + { + "id": "mon_insect_eyedleech", + "fg": 23096, + "rotates": false + }, + { + "id": "mon_insect_sharpshooterleech", + "fg": 23097, + "rotates": false + }, + { + "id": "mon_insect_spikyleech", + "fg": 23098, + "rotates": false + }, + { + "id": "mon_insect_vampireleech", + "fg": 23099, + "rotates": false + }, + { + "id": "mon_insect_venomleech", + "fg": 23100, + "rotates": false + }, + { + "id": "mon_vampbat", + "fg": 23101, + "rotates": false + }, + { + "id": "mon_bigvampbat", + "fg": 23102, + "rotates": false + }, + { + "id": "mon_feralvampbat", + "fg": 23103, + "rotates": false + }, + { + "id": "mon_zombie_bonewraith", + "fg": 23104, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_bloodcompact", + "fg": 23105, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_blooddefused", + "fg": 23106, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_bloodinfused", + "fg": 23107, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_shapeshifter", + "fg": 23108, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_shifter", + "fg": 23109, + "bg": 967, + "rotates": false + }, + { + "id": "mon_zombie_succumbvampire", + "fg": 23110, + "bg": 967, + "rotates": false + }, + { + "id": "nec_teddy", + "fg": 23111, + "bg": 0, + "rotates": false + }, + { + "id": ["overlay_wielded_nec_teddy", "overlay_worn_nec_teddy"], + "fg": 23112, + "bg": 0, + "rotates": false + }, + { + "id": "apple_sugar", + "fg": 23114, + "bg": 0, + "rotates": false + }, + { + "id": "veggy_salted", + "fg": 23115, + "bg": 0, + "rotates": false + }, + { + "id": "hflesh_salted", + "fg": 23116, + "bg": 0, + "rotates": false + }, + { + "id": "meat_salted", + "fg": 23117, + "bg": 0, + "rotates": false + }, + { + "id": "plastic_bag_vac", + "fg": 23118, + "bg": 0, + "rotates": false + }, + { + "id": "overlay_worn_cloak_wool", + "fg": 23119, + "rotates": false + }, + { + "id": "boots_larmor", + "fg": 23120 + }, + { + "id": "overlay_worn_boots_larmor", + "fg": 23121, + "rotates": false + }, + { + "id": "boots_plate", + "fg": 23122 + }, + { + "id": "overlay_worn_boots_plate", + "fg": 23123, + "rotates": false + }, + { + "id": "panties", + "fg": 23124, + "rotates": false + }, + { + "id": "overlay_female_worn_panties", + "fg": 23125, + "rotates": false + }, + { + "id": "overlay_male_worn_panties", + "fg": 23126, + "rotates": false + }, + { + "id": "bra", + "fg": 23127, + "rotates": false + }, + { + "id": "overlay_female_worn_bra", + "fg": 23128, + "rotates": false + }, + { + "id": "overlay_male_worn_bra", + "fg": 23129, + "rotates": false + }, + { + "id": "nomex_gloves", + "fg": 23130 + }, + { + "id": "overlay_worn_nomex_gloves", + "fg": 23131, + "rotates": false + }, + { + "id": "gloves_fsurvivor", + "fg": 23132 + }, + { + "id": "overlay_worn_gloves_fsurvivor", + "fg": 23133, + "rotates": false + }, + { + "id": "overlay_worn_gloves_medical", + "fg": 23134, + "rotates": false + }, + { + "id": "long_glove_white", + "fg": 23135 + }, + { + "id": "glove_jackson", + "fg": 23136 + }, + { + "id": "overlay_worn_glove_jackson", + "fg": 23137, + "rotates": false + }, + { + "id": "anbc_suit", + "fg": 23138 + }, + { + "id": "overlay_worn_anbc_suit", + "fg": 23139, + "rotates": false + }, + { + "id": "overlay_worn_entry_suit", + "fg": 23140, + "rotates": false + }, + { + "id": "ai_core_blank", + "fg": 23141 + }, + { + "id": "ai_core", + "fg": 23142 + }, + { + "id": "nanite_core_1", + "fg": 23143 + }, + { + "id": "nanite_core_2", + "fg": 23144 + }, + { + "id": "nanite_core_3", + "fg": 23145 + }, + { + "id": "nanite_core_4", + "fg": 23146 + }, + { + "id": "nanite_guide", + "fg": 23147 + }, + { + "id": "nano_storage", + "fg": 23148 + }, + { + "id": "overlay_worn_nano_storage", + "fg": 23149, + "rotates": false + }, + { + "id": "nanosuit", + "fg": 23150 + }, + { + "id": "overlay_worn_nanosuit", + "fg": 23151, + "rotates": false + }, + { + "id": "nano_container", + "fg": 23152 + }, + { + "id": "overlay_worn_nano_container", + "fg": 23153, + "rotates": false + }, + { + "id": "nano_shredder", + "fg": 23154 + }, + { + "id": "overlay_wielded_nano_shredder", + "fg": 23155, + "rotates": false + }, + { + "id": "draconic_heart", + "fg": 23158 + }, + { + "id": "draconic_heart_mutator", + "fg": 23159 + }, + { + "id": "essence_pure", + "fg": 23160 + }, + { + "id": "meteoric_talisman_on", + "fg": 23161, + "rotates": false + }, + { + "id": "overlay_worn_meteoric_talisman_on", + "fg": 23162, + "rotates": false + }, + { + "id": "atomic_flamethrower", + "fg": 23163, + "rotates": false + }, + { + "id": "overlay_wielded_atomic_flamethrower", + "fg": 23164, + "rotates": false + }, + { + "id": "atomic_earthquake_generator", + "fg": 23165, + "rotates": false + }, + { + "id": "overlay_wielded_atomic_earthquake_generator", + "fg": 23166, + "rotates": false + }, + { + "id": "atomic_entity_scanner", + "fg": 23167, + "rotates": false + }, + { + "id": "t_hidden_door_c", + "fg": 23168, + "bg": 987, + "rotates": false + }, + { + "id": "t_hidden_door_o", + "fg": 23169, + "bg": 987, + "rotates": false + }, + { + "id": "atlatl", + "fg": 1986, + "bg": 0, + "rotates": false + } + ] + }, + { + "file": "15_tiles-connected_variants_32x32_27565-32764.png", + "tiles": + [ + { + "id": "atlatl", + "fg": 1986, + "bg": 0, + "rotates": false + } + ] + }, + { + "file": "16_tiles_trees_64x80_32765-33165.png", + "sprite_width":64, + "sprite_height":80, + "sprite_offset_x":-16, + "sprite_offset_y":-48, + "tiles": + [ + { + "id": "t_tree_season_spring", + "fg": 32765, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_season_summer", "t_tree"], + "fg": 32766, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_season_autumn", + "fg": 32767, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_season_winter", + "fg": 32768, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_harvested_season_spring", + "fg": 32769, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_harvested_season_summer", "t_tree_harvested"], + "fg": 32770, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_harvested_season_autumn", + "fg": 32771, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_harvested_season_winter", + "fg": 32772, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_blackjack_season_spring", + "fg": 32773, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_blackjack_season_summer", "t_tree_blackjack"], + "fg": 32774, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_blackjack_season_autumn", + "fg": 32775, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_blackjack_season_winter", + "fg": 32776, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_blackjack_harvested_season_spring", + "fg": 32777, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_blackjack_harvested_season_summer", "t_tree_blackjack_harvested"], + "fg": 32778, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_blackjack_harvested_season_autumn", + "fg": 32779, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_blackjack_harvested_season_winter", + "fg": 32780, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_walnut_season_spring", + "fg": 32781, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_walnut_season_summer", "t_tree_walnut"], + "fg": 32782, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_walnut_season_autumn", + "fg": 32783, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_walnut_season_winter", + "fg": 32784, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_walnut_harvested_season_spring", + "fg": 32785, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_walnut_harvested_season_summer", "t_tree_walnut_harvested"], + "fg": 32786, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_walnut_harvested_season_autumn", + "fg": 32787, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_walnut_harvested_season_winter", + "fg": 32788, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_chestnut_season_spring", + "fg": 32789, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_chestnut_season_summer", "t_tree_chestnut"], + "fg": 32790, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_chestnut_season_autumn", + "fg": 32791, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_chestnut_season_winter", + "fg": 32792, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_chestnut_harvested_season_spring", + "fg": 32793, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_chestnut_harvested_season_summer", "t_tree_chestnut_harvested"], + "fg": 32794, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_chestnut_harvested_season_autumn", + "fg": 32795, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_chestnut_harvested_season_winter", + "fg": 32796, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_beech_season_spring", + "fg": 32797, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_beech_season_summer", "t_tree_beech"], + "fg": 32798, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_beech_season_autumn", + "fg": 32799, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_beech_season_winter", + "fg": 32800, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_beech_harvested_season_spring", + "fg": 32801, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_beech_harvested_season_summer", "t_tree_beech_harvested"], + "fg": 32802, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_beech_harvested_season_autumn", + "fg": 32803, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_beech_harvested_season_winter", + "fg": 32804, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_dead_season_spring", + "fg": 32805, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_dead_season_summer", "t_tree_dead_season_summer"], + "fg": 32806, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_dead_season_autumn", + "fg": 32807, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_dead_season_winter", + "fg": 32808, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_pecan_season_spring", + "fg": 32809, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_pecan_season_summer", "t_tree_pecan"], + "fg": 32810, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_pecan_season_autumn", + "fg": 32811, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_pecan_season_winter", + "fg": 32812, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_pecan_harvested_season_spring", + "fg": 32813, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_pecan_harvested_season_summer", "t_tree_pecan_harvested"], + "fg": 32814, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_pecan_harvested_season_autumn", + "fg": 32815, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_pecan_harvested_season_winter", + "fg": 32816, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_hazelnut_season_spring", + "fg": 32817, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_hazelnut_season_summer", "t_tree_hazelnut"], + "fg": 32818, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_hazelnut_season_autumn", + "fg": 32819, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_hazelnut_season_winter", + "fg": 32820, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_hazelnut_harvested_season_spring", + "fg": 32821, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_hazelnut_harvested_season_summer", "t_tree_hazelnut_harvested"], + "fg": 32822, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_hazelnut_harvested_season_autumn", + "fg": 32823, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_hazelnut_harvested_season_winter", + "fg": 32824, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_almond_season_spring", + "fg": 32825, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_almond_season_summer", "t_tree_almond"], + "fg": 32826, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_almond_season_autumn", + "fg": 32827, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_almond_season_winter", + "fg": 32828, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_almond_harvested_season_spring", + "fg": 32829, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_almond_harvested_season_summer", "t_tree_almond_harvested"], + "fg": 32830, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_almond_harvested_season_autumn", + "fg": 32831, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_almond_harvested_season_winter", + "fg": 32832, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_pistachio_season_spring", + "fg": 32833, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_pistachio_season_summer", "t_tree_pistachio"], + "fg": 32834, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_pistachio_season_autumn", + "fg": 32835, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_pistachio_season_winter", + "fg": 32836, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_pistachio_harvested_season_spring", + "fg": 32837, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_pistachio_harvested_season_summer", "t_tree_pistachio_harvested"], + "fg": 32838, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_pistachio_harvested_season_autumn", + "fg": 32839, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_pistachio_harvested_season_winter", + "fg": 32840, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_mulberry_season_spring", + "fg": 32841, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_mulberry_season_summer", "t_tree_mulberry"], + "fg": 32842, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_mulberry_season_autumn", + "fg": 32843, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_mulberry_season_winter", + "fg": 32844, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_mulberry_harvested_season_spring", + "fg": 32845, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_mulberry_harvested_season_summer", "t_tree_mulberry_harvested"], + "fg": 32846, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_mulberry_harvested_season_autumn", + "fg": 32847, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_mulberry_harvested_season_winter", + "fg": 32848, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_elderberry_season_spring", + "fg": 32849, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_elderberry_season_summer", "t_tree_elderberry"], + "fg": 32850, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_elderberry_season_autumn", + "fg": 32851, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_elderberry_season_winter", + "fg": 32852, + "bg": 5403, + "rotates": false + }, + { + "id": ["t_tree_elderberry_harvested_season_spring"], + "fg": 32853, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_elderberry_harvested_season_summer", "t_tree_elderberry"], + "fg": 32854, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_elderberry_harvested_season_autumn", + "fg": 32855, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_elderberry_harvested_season_winter", + "fg": 32856, + "bg": 5403, + "rotates": false + }, + { + "id": "t_tree_cottonwood_season_spring", + "fg": 32857, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_cottonwood_season_summer", "t_tree_cottonwood"], + "fg": 32858, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_cottonwood_season_autumn", + "fg": 32859, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_cottonwood_season_winter", + "fg": 32860, + "bg": 5403, + "rotates": false + }, + { + "id": ["t_tree_elm_season_spring"], + "fg": 32861, + "bg": 5402, + "rotates": false + }, + { + "id": ["t_tree_elm_season_summer", "t_tree_elm"], + "fg": 32862, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_elm_season_autumn", + "fg": 32863, + "bg": 5402, + "rotates": false + }, + { + "id": "t_tree_elm_season_winter", + "fg": 32864, + "bg": 5403, + "rotates": false + } + ] + }, + { + "file": "17_top_hats_32x32.png", + "sprite_offset_y":-16, + "tiles": + [ + { + "id": "overlay_worn_hat_chef", + "fg": 33165, + "rotates": false + } + ] + } + ] +} \ No newline at end of file diff --git a/gfx/MSX++DeadPeopleEdition/tileset.txt b/gfx/MSX++DeadPeopleEdition/tileset.txt new file mode 100644 index 0000000000000..24fb3013af1f1 --- /dev/null +++ b/gfx/MSX++DeadPeopleEdition/tileset.txt @@ -0,0 +1,14 @@ +#MSX++DEAD_PEOPLE+ TILESET +#SomeDeadGuy's Tileset for Main DDA Repo + +#Name of the tileset +NAME: MSX++DEAD_PEOPLE + +#Viewing (Option) name of the tileset +VIEW: MSX++LIVE_PEOPLE + +#JSON Path - Default of tile_config.json +JSON: tile_config.json + +#Tileset Path - Default of tinytile.png +TILESET: tiles.png diff --git a/gfx/MShock24TilesetModded/tile_config.json b/gfx/MShock24TilesetModded/tile_config.json index e9993ac57b8c9..a742db5a7a27b 100644 --- a/gfx/MShock24TilesetModded/tile_config.json +++ b/gfx/MShock24TilesetModded/tile_config.json @@ -16774,7 +16774,7 @@ "rotates": false }, { - "id": "apple_vac", + "id": "apple_sugar", "fg": 730, "rotates": false }, @@ -17384,7 +17384,7 @@ "rotates": false }, { - "id": "fish_vac", + "id": "salted_fish", "fg": 836, "rotates": false }, @@ -17447,7 +17447,7 @@ "rotates": false }, { - "id": "hflesh_vac", + "id": "hflesh_salted", "fg": 855, "rotates": false }, @@ -17637,7 +17637,7 @@ "rotates": false }, { - "id": "meat_vac", + "id": "meat_salted", "fg": 901, "rotates": false }, @@ -18003,7 +18003,7 @@ "rotates": false }, { - "id": "veggy_vac", + "id": "veggy_salted", "fg": 1002, "rotates": false }, @@ -19057,30 +19057,10 @@ "rotates": false }, { - "id": "bag_apple_vac", + "id": "plastic_bag_vac", "fg": 1215, "rotates": false }, - { - "id": "bag_fish_vac", - "fg": 1216, - "rotates": false - }, - { - "id": "bag_hflesh_vac", - "fg": 1217, - "rotates": false - }, - { - "id": "bag_meat_vac", - "fg": 1218, - "rotates": false - }, - { - "id": "bag_veggy_vac", - "fg": 1219, - "rotates": false - }, { "id": "baseball", "fg": 1220, diff --git a/gfx/MShock32TilesetModded/tile_config.json b/gfx/MShock32TilesetModded/tile_config.json index 6fd79fac3b52f..cf33971f342ff 100644 --- a/gfx/MShock32TilesetModded/tile_config.json +++ b/gfx/MShock32TilesetModded/tile_config.json @@ -16774,7 +16774,7 @@ "rotates": false }, { - "id": "apple_vac", + "id": "apple_sugar", "fg": 730, "rotates": false }, @@ -17384,7 +17384,7 @@ "rotates": false }, { - "id": "fish_vac", + "id": "salted_fish", "fg": 836, "rotates": false }, @@ -17447,7 +17447,7 @@ "rotates": false }, { - "id": "hflesh_vac", + "id": "hflesh_salted", "fg": 855, "rotates": false }, @@ -17637,7 +17637,7 @@ "rotates": false }, { - "id": "meat_vac", + "id": "meat_salted", "fg": 901, "rotates": false }, @@ -18003,7 +18003,7 @@ "rotates": false }, { - "id": "veggy_vac", + "id": "veggy_salted", "fg": 1002, "rotates": false }, @@ -19057,30 +19057,10 @@ "rotates": false }, { - "id": "bag_apple_vac", + "id": "plastic_bag_vac", "fg": 1215, "rotates": false }, - { - "id": "bag_fish_vac", - "fg": 1216, - "rotates": false - }, - { - "id": "bag_hflesh_vac", - "fg": 1217, - "rotates": false - }, - { - "id": "bag_meat_vac", - "fg": 1218, - "rotates": false - }, - { - "id": "bag_veggy_vac", - "fg": 1219, - "rotates": false - }, { "id": "baseball", "fg": 1220, diff --git a/gfx/MshockXotto+/tile_config.json b/gfx/MshockXotto+/tile_config.json index 0a804a1927791..e249302746bd0 100644 --- a/gfx/MshockXotto+/tile_config.json +++ b/gfx/MshockXotto+/tile_config.json @@ -21470,7 +21470,7 @@ "rotates": false }, { - "id": "apple_vac", + "id": "apple_sugar", "fg": 1078, "rotates": false }, @@ -22364,7 +22364,7 @@ "rotates": false }, { - "id": "fish_vac", + "id": "salted_fish", "fg": 1190, "rotates": false }, @@ -22479,7 +22479,7 @@ "rotates": false }, { - "id": "hflesh_vac", + "id": "hflesh_salted", "fg": 1209, "rotates": false }, @@ -22752,7 +22752,7 @@ "rotates": false }, { - "id": "meat_vac", + "id": "meat_salted", "fg": 1259, "rotates": false }, @@ -23480,7 +23480,7 @@ "rotates": false }, { - "id": "veggy_vac", + "id": "veggy_salted", "fg": 1366, "rotates": false }, @@ -25132,30 +25132,10 @@ "fg": 1637 }, { - "id": "bag_apple_vac", + "id": "plastic_bag_vac", "fg": 1639, "rotates": false }, - { - "id": "bag_fish_vac", - "fg": 1640, - "rotates": false - }, - { - "id": "bag_hflesh_vac", - "fg": 1641, - "rotates": false - }, - { - "id": "bag_meat_vac", - "fg": 1642, - "rotates": false - }, - { - "id": "bag_veggy_vac", - "fg": 1643, - "rotates": false - }, { "id": "baseball", "fg": 1644, @@ -41659,4 +41639,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/gfx/RetroDaysTileset/tile_config.json b/gfx/RetroDaysTileset/tile_config.json index e2780cedc73f2..c1bf85658a0de 100644 --- a/gfx/RetroDaysTileset/tile_config.json +++ b/gfx/RetroDaysTileset/tile_config.json @@ -9085,12 +9085,12 @@ "rotates": false }, { - "id": "meat_vac", + "id": "meat_salted", "fg": 462, "rotates": false }, { - "id": "hflesh_vac", + "id": "hflesh_salted", "fg": 462, "rotates": false }, @@ -9275,7 +9275,7 @@ "rotates": false }, { - "id": "fish_vac", + "id": "salted_fish", "fg": 477, "rotates": false }, @@ -10345,7 +10345,7 @@ "rotates": false }, { - "id": "apple_vac", + "id": "apple_sugar", "fg": 552, "rotates": false }, @@ -10384,11 +10384,6 @@ "fg": 555, "rotates": false }, - { - "id": "salted_fish", - "fg": 556, - "rotates": false - }, { "id": "fish_canned", "fg": 556, @@ -11880,7 +11875,7 @@ "rotates": false }, { - "id": "veggy_vac", + "id": "veggy_salted", "fg": 602, "rotates": false }, @@ -13305,15 +13300,10 @@ "rotates": false }, { - "id": "bag_apple_vac", + "id": "plastic_bag_vac", "fg": 788, "rotates": false }, - { - "id": "bag_fish_vac", - "fg": 789, - "rotates": false - }, { "id": "concrete", "fg": 789, @@ -13324,21 +13314,6 @@ "fg": 789, "rotates": false }, - { - "id": "bag_meat_vac", - "fg": 790, - "rotates": false - }, - { - "id": "bag_hflesh_vac", - "fg": 790, - "rotates": false - }, - { - "id": "bag_veggy_vac", - "fg": 791, - "rotates": false - }, { "id": "bat", "fg": 792, diff --git a/gfx/ThuztorTileset@/tile_config.json b/gfx/ThuztorTileset@/tile_config.json index f23883410c6a3..e6c939e7e8cd3 100644 --- a/gfx/ThuztorTileset@/tile_config.json +++ b/gfx/ThuztorTileset@/tile_config.json @@ -9714,21 +9714,21 @@ "multitile" : false }, { - "id" : "meat_vac", + "id" : "meat_salted", "fg" : 1374, "bg" : 1286, "rotates" : false, "multitile" : false }, { - "id" : "veggy_vac", + "id" : "veggy_salted", "fg" : 1375, "bg" : 1286, "rotates" : false, "multitile" : false }, { - "id" : "apple_vac", + "id" : "apple_sugar", "fg" : 1376, "bg" : 1286, "rotates" : false, @@ -12045,21 +12045,7 @@ "multitile" : false }, { - "id" : "bag_meat_vac", - "fg" : 1710, - "bg" : 1557, - "rotates" : false, - "multitile" : false - }, - { - "id" : "bag_veggy_vac", - "fg" : 1711, - "bg" : 1557, - "rotates" : false, - "multitile" : false - }, - { - "id" : "bag_apple_vac", + "id" : "plastic_bag_vac", "fg" : 1712, "bg" : 1557, "rotates" : false, diff --git a/gfx/TsuTileset/tile_config.json b/gfx/TsuTileset/tile_config.json index b936120186432..8dd52429483a4 100644 --- a/gfx/TsuTileset/tile_config.json +++ b/gfx/TsuTileset/tile_config.json @@ -7548,21 +7548,21 @@ "multitile" : false }, { - "id" : "meat_vac", + "id" : "meat_salted", "fg" : 1089, "bg" : 193, "rotates" : false, "multitile" : false }, { - "id" : "veggy_vac", + "id" : "veggy_salted", "fg" : 1090, "bg" : 193, "rotates" : false, "multitile" : false }, { - "id" : "apple_vac", + "id" : "apple_sugar", "fg" : 1091, "bg" : 193, "rotates" : false, @@ -11195,21 +11195,7 @@ "multitile" : false }, { - "id" : "bag_meat_vac", - "fg" : 1651, - "bg" : 193, - "rotates" : false, - "multitile" : false - }, - { - "id" : "bag_veggy_vac", - "fg" : 1652, - "bg" : 193, - "rotates" : false, - "multitile" : false - }, - { - "id" : "bag_apple_vac", + "id" : "plastic_bag_vac", "fg" : 1653, "bg" : 193, "rotates" : false, diff --git a/gfx/tile_config_template.json b/gfx/tile_config_template.json index 21e186acb3d99..02878752fa22b 100644 --- a/gfx/tile_config_template.json +++ b/gfx/tile_config_template.json @@ -7494,21 +7494,21 @@ "multitile":false }, { - "id": "meat_vac", + "id": "meat_salted", "fg":-1, "bg":-1, "rotates":false, "multitile":false }, { - "id": "veggy_vac", + "id": "veggy_salted", "fg":-1, "bg":-1, "rotates":false, "multitile":false }, { - "id": "apple_vac", + "id": "apple_sugar", "fg":-1, "bg":-1, "rotates":false, @@ -11147,21 +11147,7 @@ "multitile":false }, { - "id": "bag_meat_vac", - "fg":-1, - "bg":-1, - "rotates":false, - "multitile":false - }, - { - "id": "bag_veggy_vac", - "fg":-1, - "bg":-1, - "rotates":false, - "multitile":false - }, - { - "id": "bag_apple_vac", + "id": "plastic_bag_vac", "fg":-1, "bg":-1, "rotates":false, diff --git a/json_blacklist b/json_blacklist index 5284c82d809dd..fac4e37c5283a 100644 --- a/json_blacklist +++ b/json_blacklist @@ -26,7 +26,6 @@ data/json/itemgroups/tools.json data/json/itemgroups/vending_machines.json data/json/items/ammo.json data/json/items/ammo_types.json -data/json/items/archery.json data/json/items/armor/bandolier.json data/json/items/armor/boots.json data/json/items/armor/holster.json @@ -37,7 +36,6 @@ data/json/items/comestibles/med.json data/json/items/comestibles/mutagen.json data/json/items/comestibles/protein.json data/json/items/containers.json -data/json/items/crossbows.json data/json/items/fake.json data/json/items/generic/ammolink.json data/json/items/generic/string.json @@ -214,7 +212,6 @@ data/json/overmap/multitile_city_buildings.json data/json/overmap/specials.json data/json/overmap_connections.json data/json/overmap_locations.json -data/json/overmap_terrain.json data/json/recipes/ammo/pistol.json data/json/recipes/ammo/rifle.json data/json/recipes/armor/arms.json diff --git a/lang/extract_json_strings.py b/lang/extract_json_strings.py index 0859952d3a40b..608d883833b25 100755 --- a/lang/extract_json_strings.py +++ b/lang/extract_json_strings.py @@ -5,6 +5,7 @@ import os import subprocess from optparse import OptionParser +from sys import platform # Must parse command line arguments here # 'options' variable is referenced in our defined functions below @@ -23,19 +24,19 @@ def __str__(self): return ("---\nJSON error\n{0}\n--- JSON Item:\n{1}\n---".format(self.msg, self.item)) # there may be some non-json files in data/raw -not_json = { +not_json = {os.path.normpath(i) for i in { "sokoban.txt", "main.lua", "preload.lua", "LOADING_ORDER.md" -} +}} -git_files_list = { +git_files_list = {os.path.normpath(i) for i in { ".", -} +}} # no warning will be given if an untranslatable object is found in those files -warning_suppressed_list = { +warning_suppressed_list = {os.path.normpath(i) for i in { "data/json/overmap_terrain.json", "data/json/traps.json", "data/json/vehicleparts/", @@ -46,7 +47,7 @@ def __str__(self): "data/mods/More_Survival_Tools/start_locations.json", "data/mods/NPC_Traits/npc_classes.json", "data/mods/Tanks/monsters.json" -} +}} def warning_supressed(filename): for i in warning_suppressed_list: @@ -55,11 +56,11 @@ def warning_supressed(filename): return False # these files will not be parsed. Full related path. -ignore_files = { +ignore_files = {os.path.normpath(i) for i in { "data/json/anatomy.json", "data/mods/replacements.json", "data/raw/color_templates/no_bright_background.json" -} +}} # these objects have no translatable strings ignorable = { @@ -74,6 +75,7 @@ def warning_supressed(filename): "ITEM_OPTION", "ITEM_WHITELIST", "MIGRATION", + "mod_tileset", "monitems", "MONSTER_BLACKLIST", "MONSTER_FACTION", @@ -239,21 +241,24 @@ def extract_martial_art(item): def extract_effect_type(item): # writestr will not write string if it is None. outfile = get_outfile("effects") - name = item.get("name", ()) + ctxt_name = item.get("name", ()) - if name: - if len(name) == len(item.get("desc", ())): - for nm_desc in zip(name, item.get("desc", ())): + if ctxt_name: + if len(ctxt_name) == len(item.get("desc", ())): + for nm_desc in zip(ctxt_name, item.get("desc", ())): writestr(outfile, nm_desc[0]) writestr(outfile, nm_desc[1], format_strings=True, comment="Description of effect '{}'.".format(nm_desc[0])) else: - for i in item.get("name", ()): + for i in ctxt_name: writestr(outfile, i) for f in ["desc", "reduced_desc"]: for i in item.get(f, ()): writestr(outfile, i, format_strings=True) + name = None + if ctxt_name: + name = [i["str"] if type(i) is dict else i for i in ctxt_name] # apply_message msg = item.get("apply_message") if not name: @@ -677,15 +682,15 @@ def extract_gate(item): ## PREPARATION ## -directories = { +directories = {os.path.normpath(i) for i in { "data/raw", "data/json", "data/mods", "data/core", "data/legacy", "data/help", -} -to_dir = "lang/json" +}} +to_dir = os.path.normpath("lang/json") print("==> Preparing the work space") @@ -729,11 +734,17 @@ def writestr(filename, string, plural=None, context=None, format_strings=False, for entry in string: writestr(filename, entry, None, context, format_strings, comment) return + elif type(string) is dict and plural is None: + if "ctxt" in string: + writestr(filename, string["str"], None, string["ctxt"], format_strings, comment) + else: + writestr(filename, string["str"], None, None, format_strings, comment) + return # don't write empty strings if not string: return - with open(filename,'a') as fs: + with open(filename, 'a', encoding="utf-8") as fs: # Append developers comment if comment: tlcomment(fs, comment) @@ -911,7 +922,7 @@ def extract_all_from_dir(json_dir): allfiles = os.listdir(json_dir) allfiles.sort() dirs = [] - skiplist = [ ".gitkeep" ] + skiplist = [ os.path.normpath(".gitkeep") ] for f in allfiles: full_name = os.path.join(json_dir, f) if os.path.isdir(full_name): @@ -935,7 +946,7 @@ def extract_all_from_file(json_file): if options.verbose: print("Loading {}".format(json_file)) - with open(json_file) as fp: + with open(json_file, encoding="utf-8") as fp: jsondata = json.load(fp) # it's either an array of objects, or a single object try: @@ -952,7 +963,7 @@ def extract_all_from_file(json_file): def add_fake_types(): """Add names of fake items and monsters. This is done by hand and must be updated manually each time something is added to itypedef.cpp or mtypedef.cpp.""" - outfile = os.path.join(to_dir, "faketypes.py") + outfile = os.path.join(to_dir, os.path.normpath("faketypes.py")) # fake item types @@ -961,7 +972,11 @@ def add_fake_types(): def prepare_git_file_list(): command_str = "git ls-files" - res = subprocess.Popen(command_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True) + res = None; + if platform == "win32": + res = subprocess.Popen(command_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + else: + res = subprocess.Popen(command_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True) output = res.stdout.readlines() res.communicate() if res.returncode != 0: @@ -969,7 +984,7 @@ def prepare_git_file_list(): exit(1) for f in output: if len(f) > 0: - git_files_list.add(f[:-1].decode('utf8')) + git_files_list.add(os.path.normpath(f[:-1].decode('utf8'))) ## ## EXTRACTION diff --git a/lang/merge_po.sh b/lang/merge_po.sh index 71c6362452a06..a9f9ef1495286 100755 --- a/lang/merge_po.sh +++ b/lang/merge_po.sh @@ -52,13 +52,13 @@ then for n in $@ do echo "updating lang/po/${n}.po" - msgmerge -F -U lang/po/${n}.po lang/po/cataclysm-dda.pot + msgmerge --sort-by-file --no-fuzzy-matching lang/po/${n}.po lang/po/cataclysm-dda.pot | msgattrib --sort-by-file --no-obsolete -o lang/po/${n}.po done # otherwise merge lang/po/cataclysm-dda.pot with all .po files in lang/po else for f in lang/po/*.po do echo "updating $f" - msgmerge -F -U $f lang/po/cataclysm-dda.pot + msgmerge --sort-by-file --no-fuzzy-matching $f lang/po/cataclysm-dda.pot | msgattrib --sort-by-file --no-obsolete -o $f done fi diff --git a/lang/po/cataclysm-dda.pot b/lang/po/cataclysm-dda.pot index 6a59b97bcd373..d33fa65bbeda8 100644 --- a/lang/po/cataclysm-dda.pot +++ b/lang/po/cataclysm-dda.pot @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-11-02 15:23+0800\n" +"POT-Creation-Date: 2018-11-23 11:58+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -4197,6 +4197,7 @@ msgid "" msgstr "" #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "" @@ -4471,19 +4472,6 @@ msgstr[1] "" msgid "A large American flag made to fly in even the worst conditions." msgstr "" -#: lang/json/ARMOR_from_json.py -msgid "ANBC suit" -msgid_plural "ANBC suits" -msgstr[0] "" -msgstr[1] "" - -#. ~ Description for ANBC suit -#: lang/json/ARMOR_from_json.py -msgid "" -"An armored, impermeable full-body suit that functions as body armor, as well " -"as protecting from nuclear, biological, and chemical hazards." -msgstr "" - #: lang/json/ARMOR_from_json.py msgid "leather apron" msgid_plural "leather aprons" @@ -5189,6 +5177,16 @@ msgid_plural "bondage masks" msgstr[0] "" msgstr[1] "" +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "" + #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" @@ -5196,6 +5194,29 @@ msgid "" "zippers." msgstr "" +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "" + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "bondage suit" msgid_plural "bondage suits" @@ -5695,7 +5716,7 @@ msgstr[1] "" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." msgstr "" @@ -6057,6 +6078,19 @@ msgstr[1] "" msgid "A thick fur full-length duster. Has many pockets for storage." msgstr "" +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather duster" msgid_plural "leather dusters" @@ -7119,6 +7153,19 @@ msgstr[1] "" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "" +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -7207,20 +7254,6 @@ msgid "" "your chin." msgstr "" -#: lang/json/ARMOR_from_json.py -msgid "hazmat suit" -msgid_plural "hazmat suits" -msgstr[0] "" -msgstr[1] "" - -#. ~ Description for hazmat suit -#: lang/json/ARMOR_from_json.py -msgid "" -"An impermeable whole-body garment worn as protection against hazardous " -"materials. Though very restrictive and fragile, wearing it will provide " -"complete protection against ambient radiation." -msgstr "" - #: lang/json/ARMOR_from_json.py msgid "headgear" msgid_plural "headgears" @@ -7433,17 +7466,6 @@ msgid "" "the cost of great encumbrance." msgstr "" -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "" -msgstr[1] "" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "" - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" @@ -8949,6 +8971,17 @@ msgstr[1] "" msgid "A hefty pair of fur-lined pants." msgstr "" +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather pants" msgid_plural "leather pants" @@ -9666,6 +9699,19 @@ msgid "" "unencumbered. Has plenty of storage space due to its many pockets." msgstr "" +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" msgid_plural "sleeveless leather dusters" @@ -9718,6 +9764,19 @@ msgid "" "plenty of storage space due to its many pockets." msgstr "" +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -10390,6 +10449,19 @@ msgstr[1] "" msgid "A thick fur trenchcoat, lined with pockets. Great for storage." msgstr "" +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" msgid_plural "leather trenchcoats" @@ -10815,6 +10887,12 @@ msgid "" "harm." msgstr "" +#: lang/json/ARMOR_from_json.py +msgid "hazmat suit" +msgid_plural "hazmat suits" +msgstr[0] "" +msgstr[1] "" + #. ~ Description for hazmat suit #: lang/json/ARMOR_from_json.py msgid "" @@ -10824,6 +10902,12 @@ msgid "" "mask for full protection." msgstr "" +#: lang/json/ARMOR_from_json.py +msgid "ANBC suit" +msgid_plural "ANBC suits" +msgstr[0] "" +msgstr[1] "" + #. ~ Description for ANBC suit #: lang/json/ARMOR_from_json.py msgid "" @@ -13615,11 +13699,12 @@ msgstr[0] "" msgstr[1] "" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" @@ -13659,23 +13744,6 @@ msgid "" "highly discouraged." msgstr "" -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "" -msgstr[1] "" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While " -"activated, they will continously drain power to make automated precise cuts " -"but you will be unable to wield anything." -msgstr "" - #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" msgid_plural "Lessons for the Novice Bowhunter" @@ -16228,6 +16296,21 @@ msgid "" "with sketches and notes, a skilled tailor could learn a lot from this volume." msgstr "" +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon " +"Animal Rights Organization." +msgstr "" + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -17728,18 +17811,6 @@ msgid "" "nutrition, but little of the savor of cooked fish." msgstr "" -#: lang/json/COMESTIBLE_from_json.py -msgid "salted fish slices" -msgid_plural "salted fish slices" -msgstr[0] "" -msgstr[1] "" - -#. ~ Description for salted fish slices -#: lang/json/COMESTIBLE_from_json.py -msgid "" -"Fish fillets cured in brine and vacuum-packed. Salty but tasty in a pinch." -msgstr "" - #: lang/json/COMESTIBLE_from_json.py msgid "batter fried fish" msgid_plural "batter fried fish" @@ -21039,8 +21110,7 @@ msgstr "" #. ~ Description for salted meat slice #: lang/json/COMESTIBLE_from_json.py -msgid "" -"Meat slices cured in brine and vacuum-packed. Salty but tasty in a pinch." +msgid "Meat slices cured in brine. Salty but tasty in a pinch." msgstr "" #: lang/json/COMESTIBLE_from_json.py @@ -26557,6 +26627,17 @@ msgid "" "easily sealed." msgstr "" +#: lang/json/CONTAINER_from_json.py +msgid "vacuum-packed bag" +msgid_plural "vacuum-packed bags" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for vacuum-packed bag +#: lang/json/CONTAINER_from_json.py +msgid "This is a bag of vacuum-packed food." +msgstr "" + #: lang/json/CONTAINER_from_json.py msgid "tin can" msgid_plural "tin cans" @@ -27600,6 +27681,32 @@ msgid "" "when you look at them." msgstr "" +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "" + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "" + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -30155,7 +30262,7 @@ msgid "" "resulting weapon is unwieldy and slow but very heavy hitting." msgstr "" -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "" @@ -31450,89 +31557,6 @@ msgid "" "Use it to open the cover and show the light." msgstr "" -#: lang/json/GENERIC_from_json.py -msgid "vacuum-packed fruit slice" -msgid_plural "vacuum-packed fruit slices" -msgstr[0] "" -msgstr[1] "" - -#. ~ Use action menu_text for vacuum-packed fruit slice. -#. ~ Use action menu_text for vacuum-packed fish slice. -#. ~ Use action menu_text for vacuum-packed salted simpleton slice. -#. ~ Use action menu_text for vacuum-packed meat slice. -#. ~ Use action menu_text for vacuum-packed veggy chunk. -#: lang/json/GENERIC_from_json.py -msgid "Open bag" -msgstr "" - -#. ~ Use action msg for vacuum-packed fruit slice. -#. ~ Use action msg for vacuum-packed fish slice. -#. ~ Use action msg for vacuum-packed salted simpleton slice. -#. ~ Use action msg for vacuum-packed meat slice. -#. ~ Use action msg for vacuum-packed veggy chunk. -#: lang/json/GENERIC_from_json.py -msgid "You open the vacuum pack, exposing it to the atmosphere." -msgstr "" - -#. ~ Description for vacuum-packed fruit slice -#: lang/json/GENERIC_from_json.py -msgid "" -"This is a bag of vacuum packed fruit slices in plastic packaging. Use to " -"open and eat to enjoy." -msgstr "" - -#: lang/json/GENERIC_from_json.py -msgid "vacuum-packed fish slice" -msgid_plural "vacuum-packed fish slices" -msgstr[0] "" -msgstr[1] "" - -#. ~ Description for vacuum-packed fish slice -#: lang/json/GENERIC_from_json.py -msgid "" -"This is a bag of vacuum packed fish slices in plastic packaging. Use to " -"open and eat to enjoy." -msgstr "" - -#: lang/json/GENERIC_from_json.py -msgid "vacuum-packed salted simpleton slice" -msgid_plural "vacuum-packed salted simpleton slices" -msgstr[0] "" -msgstr[1] "" - -#. ~ Description for vacuum-packed salted simpleton slice -#: lang/json/GENERIC_from_json.py -msgid "" -"This is a bag of vacuum packed human flesh slices in plastic packaging. Use " -"to open and eat to enjoy." -msgstr "" - -#: lang/json/GENERIC_from_json.py -msgid "vacuum-packed meat slice" -msgid_plural "vacuum-packed meat slices" -msgstr[0] "" -msgstr[1] "" - -#. ~ Description for vacuum-packed meat slice -#: lang/json/GENERIC_from_json.py -msgid "" -"This is a bag of vacuum packed meat slices in plastic packaging. Use to " -"open and eat to enjoy." -msgstr "" - -#: lang/json/GENERIC_from_json.py -msgid "vacuum-packed veggy chunk" -msgid_plural "vacuum-packed veggy chunks" -msgstr[0] "" -msgstr[1] "" - -#. ~ Description for vacuum-packed veggy chunk -#: lang/json/GENERIC_from_json.py -msgid "" -"This is a bag of vacuum packed vegetable slices in plastic packaging. Use " -"to open and eat to enjoy." -msgstr "" - #: lang/json/GENERIC_from_json.py msgid "can sealer" msgid_plural "can sealers" @@ -31886,8 +31910,7 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." +"spike." msgstr "" #: lang/json/GENERIC_from_json.py @@ -37937,6 +37960,34 @@ msgstr "" msgid "Want a little crazy in your Cataclysm? Try this one." msgstr "" +#: lang/json/MOD_INFO_from_json.py +msgid "(DP_RP) Chesthole Indicators" +msgstr "" + +#. ~ Description for (DP_RP) Chesthole Indicators +#: lang/json/MOD_INFO_from_json.py +msgid "Changes interface indicators to Chesthole version." +msgstr "" + +#: lang/json/MOD_INFO_from_json.py +msgid "(DP_RP) REMIX Indicators" +msgstr "" + +#. ~ Description for (DP_RP) REMIX Indicators +#: lang/json/MOD_INFO_from_json.py +msgid "" +"Changes interface indicators to remix of Xotto, Chesthole and DeadPeople." +msgstr "" + +#: lang/json/MOD_INFO_from_json.py +msgid "(DP_RP) Xotto Indicators" +msgstr "" + +#. ~ Description for (DP_RP) Xotto Indicators +#: lang/json/MOD_INFO_from_json.py +msgid "Changes interface indicators to Xotto version." +msgstr "" + #: lang/json/MOD_INFO_from_json.py msgid "Folding Parts pack" msgstr "" @@ -38553,17 +38604,6 @@ msgid "" "navigate through tricky terrain at rapid speeds." msgstr "" -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "" - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "" @@ -38745,7 +38785,7 @@ msgstr "" #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "" @@ -42449,6 +42489,17 @@ msgstr "" msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "" +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "" + #: lang/json/MONSTER_from_json.py msgid "Compsognathus" msgstr "" @@ -44296,7 +44347,7 @@ msgstr[1] "" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from " -"heat, smoke, teargas, and shrapnel. It must be prepared before use." +"heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" #: lang/json/TOOL_ARMOR_from_json.py @@ -45153,6 +45204,42 @@ msgid "" "into an active cable charger system." msgstr "" +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "" + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "" + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "" + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." +msgstr "" + #: lang/json/TOOL_from_json.py msgid "integrated toolset" msgid_plural "integrated toolsets" @@ -49961,7 +50048,7 @@ msgid "" "of energy." msgstr "" -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" msgstr[0] "" @@ -51629,14 +51716,6 @@ msgid "" "to a potato." msgstr "" -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "" - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" @@ -52884,6 +52963,15 @@ msgid_plural "autonomous surgical razors" msgstr[0] "" msgstr[1] "" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While " +"activated, they will continously drain power to make automated precise cuts " +"but you will be unable to wield anything." +msgstr "" + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -55071,6 +55159,13 @@ msgid "" "of impaired movement." msgstr "" +#: lang/json/bionic_from_json.py +#: lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "" +msgstr[1] "" + #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" msgstr "" @@ -55084,13 +55179,6 @@ msgid "" "already, it will boost the rate of recovery while you sleep." msgstr "" -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "" -msgstr[1] "" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "" @@ -55806,6 +55894,14 @@ msgstr "" msgid "Mark firewood source" msgstr "" +#: lang/json/construction_from_json.py +msgid "" +"Firewood or other flammable materials on a nearby tile marked in this way " +"may be used to automatically refuel fires. This will be done to maintain " +"light during long-running tasks that require it such as crafting or reading, " +"but not (for example) if you are simply waiting nearby." +msgstr "" + #: lang/json/construction_from_json.py msgid "Build Butchering Rack" msgstr "" @@ -57174,12 +57270,12 @@ msgstr "" msgid "A laser sight is targeting you!" msgstr "" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" msgstr "" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "" @@ -58052,7 +58148,6 @@ msgstr "" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" "You are thoroughly relaxed and don't feel like moving. Fighting? Too much " "effort." msgstr "" @@ -58381,11 +58476,12 @@ msgstr "" msgid "This damaged limb is slowly regaining its functions." msgstr "" -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" msgstr "" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "" @@ -61685,10 +61781,10 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" #: lang/json/gun_from_json.py @@ -62375,7 +62471,7 @@ msgstr[1] "" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those " "who wander the \"Earth-that-was\"." msgstr "" @@ -65780,7 +65876,7 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." +"firearm, contributing to both accuracy and damage." msgstr "" #: lang/json/gunmod_from_json.py @@ -65805,7 +65901,7 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." +"shooting. Increases damage output and weapon range." msgstr "" #: lang/json/gunmod_from_json.py @@ -68203,6 +68299,10 @@ msgstr "" msgid "Clear rubble" msgstr "" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "" @@ -68231,6 +68331,11 @@ msgstr "" msgid "Make it talk" msgstr "" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "" @@ -68273,6 +68378,10 @@ msgstr "" msgid "Drill" msgstr "" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "" + #: lang/json/item_action_from_json.py #: lang/json/item_action_from_json.py lang/json/keybinding_from_json.py #: src/game_inventory.cpp @@ -68316,6 +68425,7 @@ msgid "Squeeze" msgstr "" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" msgstr "" @@ -68354,6 +68464,11 @@ msgstr "" msgid "Siphon" msgstr "" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "" @@ -68406,6 +68521,11 @@ msgstr "" msgid "Make some noise" msgstr "" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "" @@ -70156,6 +70276,22 @@ msgstr "" msgid "Change sort order" msgstr "" +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "" + #: lang/json/keybinding_from_json.py msgid "List items and monsters" msgstr "" @@ -70341,13 +70477,12 @@ msgid "Load color template" msgstr "" #: lang/json/keybinding_from_json.py -#: src/craft_command.cpp src/veh_interact.cpp +#: src/veh_interact.cpp msgid "Yes" msgstr "" #: lang/json/keybinding_from_json.py -#: src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: src/options.cpp src/veh_interact.cpp msgid "No" msgstr "" @@ -70499,6 +70634,11 @@ msgstr "" msgid "Open Vault" msgstr "" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -71193,6 +71333,7 @@ msgid "Emergency Message" msgstr "" #. ~ Computer option +#: lang/json/mapgen_from_json.py #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "" @@ -71253,7 +71394,7 @@ msgid "ERROR: SIGNAL DISCONNECT" msgstr "" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py #: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "" @@ -71263,6 +71404,11 @@ msgstr "" msgid "The Red Dragon Tea Shop" msgstr "" +#. ~ Sign +#: lang/json/mapgen_from_json.py +msgid "The Green Leaf Tea Shop" +msgstr "" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Please don't litter, keep the trail nice!" @@ -72565,7 +72711,7 @@ msgstr "" msgid "Got that book for me?" msgstr "" -#: lang/json/mission_def_from_json.py src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py #: src/npctalk.cpp msgid "Thanks!" msgstr "" @@ -73321,7 +73467,7 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." +"prophesied events accurately before concerning the Church of Starry Wisdom." msgstr "" #: lang/json/mission_def_from_json.py @@ -73643,7 +73789,7 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels " "is boosted so we can pick it up at much longer ranges. I really need you " @@ -81872,6 +82018,7 @@ msgid "river bank" msgstr "" #: lang/json/overmap_terrain_from_json.py +#: lang/json/snippet_from_json.py msgid "house" msgstr "" @@ -82948,6 +83095,14 @@ msgstr "" msgid "mass grave" msgstr "" +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "" + #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" msgstr "" @@ -87867,6 +88022,116 @@ msgid "" "yourself needing those skills to survive. " msgstr "" +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off. " +"If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off. " +"If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "WEAPON" @@ -89008,16 +89273,16 @@ msgstr "" #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape " +"or starve to death." msgstr "" #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape " +"or starve to death." msgstr "" #. ~ Starting location for scenario 'Challenge-Lab'. @@ -89746,6 +90011,42 @@ msgid "" "robots would protect you, but they may prove more dangerous than the zombies." msgstr "" +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" @@ -89881,7 +90182,7 @@ msgid "" "a user to navigate complex software systems and even bypass their security." msgstr "" -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "" @@ -89988,7 +90289,7 @@ msgid "" "water, and determines the detriment of swimming with heavier gear." msgstr "" -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "" @@ -90462,6 +90763,42 @@ msgid "" "spawn with more resources." msgstr "" +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best " +"friend." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "You feel great! It doesn't seem like wounds could even slow you down for " @@ -91135,6 +91472,566 @@ msgid "" "continuing production of PE062 there." msgstr "" +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -94029,6 +94926,190 @@ msgid "" "you in a sleep." msgstr "" +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no " +"environment to save now, but one can still save thyself I guess." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their " +"components. This guy around here, McSomething whatever his name is, is a " +"master at this." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are " +"always better than two." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my " +"sorry ass away from the horde, with nothing more but some white powder I got " +"from that zombie. Saved me that time." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it lemon?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "" + #: lang/json/snippet_from_json.py msgid " " msgstr "" @@ -94133,10 +95214,6 @@ msgstr "" msgid "piece of shit" msgstr "" -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "" - #: lang/json/snippet_from_json.py msgid "scumbag" msgstr "" @@ -94333,6 +95410,10 @@ msgstr "" msgid "son of an ass" msgstr "" +#: lang/json/snippet_from_json.py +msgid "Oh sugar!" +msgstr "" + #: lang/json/snippet_from_json.py msgid "sad" msgstr "" @@ -94413,7 +95494,7 @@ msgstr "" msgid "never" msgstr "" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" msgstr "" @@ -94597,6 +95678,10 @@ msgstr "" msgid "my days are numbered" msgstr "" +#: lang/json/snippet_from_json.py +msgid ", I'm sorry" +msgstr "" + #: lang/json/snippet_from_json.py msgid "Can you wait?" msgstr "" @@ -95309,7 +96394,7 @@ msgstr "" msgid "Hands in the air, !" msgstr "" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" msgstr "" @@ -98328,10 +99413,26 @@ msgstr "" msgid "Middle of Nowhere" msgstr "" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "" @@ -98428,6 +99529,14 @@ msgstr "" msgid "Gas Station" msgstr "" +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" +msgstr "" + #: lang/json/talk_topic_from_json.py msgid "That sure is a shiny badge you got there!" msgstr "" @@ -98461,15 +99570,14 @@ msgid "Anything I can help with?" msgstr "" #: lang/json/talk_topic_from_json.py -#: lang/json/talk_topic_from_json.py src/npctalk.cpp msgid "Well, bye." msgstr "" #: lang/json/talk_topic_from_json.py msgid "" "Guess that makes two of us. Well, kind of. I don't think we're open, " -"though. Full up as hell; it's almost a crowd downstairs. See the trader " -"over there? There's the one to ask." +"though. Full up as hell; it's almost a crowd downstairs. Did you see the " +"trader at the enterance? There's the one to ask." msgstr "" #: lang/json/talk_topic_from_json.py @@ -98669,7 +99777,7 @@ msgid "I see." msgstr "" #: lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py src/npctalk.cpp msgid "Oh, okay." msgstr "" @@ -98754,6 +99862,255 @@ msgstr "" msgid "Thanks, bye." msgstr "" +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Let's trade items." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to " +"disappear quickly from here." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: src/npctalk.cpp +msgid "What is it?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "" + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "" @@ -99459,10 +100816,6 @@ msgstr "" msgid "We're abandoning this camp." msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "" @@ -99494,7 +100847,7 @@ msgstr "" msgid "Are you looking to buy anything else?" msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." msgstr "" @@ -99622,7 +100975,7 @@ msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of " "operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " @@ -100277,10 +101630,6 @@ msgstr "" msgid "I can't imagine what I'd need your assistance with." msgstr "" -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "" @@ -100344,11 +101693,6 @@ msgstr "" msgid "Can I trade for supplies?" msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -#: src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " @@ -100439,10 +101783,22 @@ msgstr "" msgid "This is a trait test response." msgstr "" +#: lang/json/talk_topic_from_json.py +msgid "This is a short trait test response." +msgstr "" + #: lang/json/talk_topic_from_json.py msgid "This is a wearing test response." msgstr "" +#: lang/json/talk_topic_from_json.py +msgid "This is a npc trait test response." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "This is a npc short trait test response." +msgstr "" + #: lang/json/talk_topic_from_json.py msgid "This is an npc effect test response." msgstr "" @@ -100475,6 +101831,10 @@ msgstr "" msgid "This is a nearby role test response." msgstr "" +#: lang/json/talk_topic_from_json.py +msgid "This is a class test response." +msgstr "" + #: lang/json/talk_topic_from_json.py msgid "This is a npc allies 1 test response." msgstr "" @@ -100625,7 +101985,8 @@ msgstr "" msgid "Not at technique at all" msgstr "" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp +#: src/martialarts.cpp msgid "Block" msgstr "" @@ -100783,8 +102144,6 @@ msgid "Rapid Strike" msgstr "" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "" @@ -100896,11 +102255,6 @@ msgstr "" msgid "Counterattack" msgstr "" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -100915,22 +102269,10 @@ msgstr "" msgid "Feint" msgstr "" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -100945,11 +102287,6 @@ msgstr "" msgid "Cross" msgstr "" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -100964,12 +102301,6 @@ msgstr "" msgid "Jab" msgstr "" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -100984,11 +102315,6 @@ msgstr "" msgid "Uppercut" msgstr "" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -101003,11 +102329,6 @@ msgstr "" msgid "Cross Counter" msgstr "" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -101036,14 +102357,6 @@ msgstr "" msgid "karate chop" msgstr "" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -101058,11 +102371,6 @@ msgstr "" msgid "throw" msgstr "" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -101077,11 +102385,6 @@ msgstr "" msgid "dodge throw" msgstr "" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -101096,12 +102399,6 @@ msgstr "" msgid "feint at" msgstr "" -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -101112,11 +102409,6 @@ msgstr "" msgid " feints at %s" msgstr "" -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -101127,21 +102419,11 @@ msgstr "" msgid " disarms %s" msgstr "" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #: lang/json/technique_from_json.py src/monster.cpp msgid "grab" msgstr "" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "" @@ -101156,20 +102438,10 @@ msgstr "" msgid " strikes %s" msgstr "" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -101184,11 +102456,6 @@ msgstr "" msgid "kick" msgstr "" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -101213,19 +102480,6 @@ msgstr "" msgid " flying knees %s" msgstr "" -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -101236,32 +102490,14 @@ msgstr "" msgid " jabs %s" msgstr "" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min " -"3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -101276,11 +102512,6 @@ msgstr "" msgid "axe-kick" msgstr "" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -101295,11 +102526,6 @@ msgstr "" msgid "side kick" msgstr "" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -101314,11 +102540,6 @@ msgstr "" msgid "sweep kick" msgstr "" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -101333,11 +102554,6 @@ msgstr "" msgid "biojutsu counter" msgstr "" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -101366,11 +102582,6 @@ msgstr "" msgid "biojutsu impale" msgstr "" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -101381,20 +102592,10 @@ msgstr "" msgid " brutally impales %s" msgstr "" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -101409,13 +102610,6 @@ msgstr "" msgid "Drunk feint" msgstr "" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -101430,11 +102624,6 @@ msgstr "" msgid "Drunk counter" msgstr "" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -101449,12 +102638,6 @@ msgstr "" msgid "Fencing lunge" msgstr "" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -101469,11 +102652,6 @@ msgstr "" msgid "Fencing thrust" msgstr "" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -101488,11 +102666,6 @@ msgstr "" msgid "Fencing stop thrust" msgstr "" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -101507,11 +102680,6 @@ msgstr "" msgid "Round strike" msgstr "" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -101540,11 +102708,6 @@ msgstr "" msgid "Snap strike" msgstr "" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -101559,11 +102722,6 @@ msgstr "" msgid "Combination strike" msgstr "" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -101578,11 +102736,6 @@ msgstr "" msgid "free strike" msgstr "" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -101597,13 +102750,6 @@ msgstr "" msgid "puño strike" msgstr "" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -101618,11 +102764,6 @@ msgstr "" msgid "knee strike" msgstr "" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -101637,11 +102778,6 @@ msgstr "" msgid "hamstring" msgstr "" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -101656,12 +102792,6 @@ msgstr "" msgid "Vicious Precision" msgstr "" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -101676,11 +102806,6 @@ msgstr "" msgid "Silat Brutality" msgstr "" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -101690,11 +102815,6 @@ msgstr "" msgid "Dirty Hit" msgstr "" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -101737,11 +102857,6 @@ msgstr "" msgid "Viper Bite" msgstr "" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -101756,11 +102871,6 @@ msgstr "" msgid "Viper Strike" msgstr "" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -101779,11 +102889,6 @@ msgstr "" msgid "Stinger Strike" msgstr "" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -101798,11 +102903,6 @@ msgstr "" msgid "Pincer Strike" msgstr "" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -101817,11 +102917,6 @@ msgstr "" msgid "Toad's Tongue" msgstr "" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -101900,11 +102995,6 @@ msgstr "" msgid "Tiger Takedown" msgstr "" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -101919,11 +103009,6 @@ msgstr "" msgid "Leopard Fist" msgstr "" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -101952,11 +103037,6 @@ msgstr "" msgid "Leopard Foresight" msgstr "" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -101971,11 +103051,6 @@ msgstr "" msgid "Dragon Snatch" msgstr "" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -101990,12 +103065,6 @@ msgstr "" msgid "Dragon's Vortex" msgstr "" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -102010,12 +103079,6 @@ msgstr "" msgid "Dragon Sweeper" msgstr "" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -102030,11 +103093,6 @@ msgstr "" msgid "Dragon Strike" msgstr "" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -102061,11 +103119,6 @@ msgstr "" msgid "Crane Flap" msgstr "" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "" @@ -102078,11 +103131,6 @@ msgstr "" msgid "Crane Strike" msgstr "" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -102102,20 +103150,10 @@ msgstr "" msgid "Power Hit" msgstr "" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -102144,11 +103182,6 @@ msgstr "" msgid "Flowing Water Cut" msgstr "" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -102163,11 +103196,6 @@ msgstr "" msgid "Red Leaf's Cut" msgstr "" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -102182,11 +103210,6 @@ msgstr "" msgid "Fire and Stone's Cut" msgstr "" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -102201,11 +103224,6 @@ msgstr "" msgid "In-One Timing" msgstr "" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -102216,11 +103234,6 @@ msgstr "" msgid " strikes %s's weaknesses" msgstr "" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "" @@ -105347,7 +106360,7 @@ msgstr "" msgid "wood sawing" msgstr "" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "" @@ -105391,7 +106404,7 @@ msgstr "" msgid "bolt turning" msgstr "" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "" @@ -106086,6 +107099,14 @@ msgstr "" msgid "Circle Split" msgstr "" +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "" + #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" msgstr "" @@ -109453,6 +110474,10 @@ msgstr "" msgid "You discover a %s!" msgstr "" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "" + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "" @@ -109520,6 +110545,10 @@ msgstr "" msgid "You need to perform field dressing before quartering." msgstr "" +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "" + #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." msgstr "" @@ -109675,19 +110704,19 @@ msgstr "" #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." msgstr "" #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." msgstr "" #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." msgstr "" @@ -109850,7 +110879,7 @@ msgid "You have lost the item you were using to start the fire." msgstr "" #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." +msgid "There is not enough sunlight to start a fire now. You stop trying." msgstr "" #: src/activity_handlers.cpp @@ -110675,7 +111704,8 @@ msgstr "" msgid "category" msgstr "" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp +#: src/effect.cpp msgid "damage" msgstr "" @@ -111946,7 +112976,7 @@ msgstr[0] "" msgstr[1] "" #: src/auto_pickup.cpp -msgid "Won't display bottled and suffixes=(fits)" +msgid "Won't display content or suffix matches" msgstr "" #: src/auto_pickup.cpp @@ -112582,8 +113612,8 @@ msgstr "" #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out " -"when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "" #: src/bionics_ui.cpp @@ -112690,6 +113720,55 @@ msgid "" "To read a description of %s, press '!', then '%c'." msgstr "" +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr "" + #: src/calendar.cpp msgid "forever" msgstr "" @@ -113108,22 +114187,6 @@ msgstr "" msgid "Liquid from your inventory has leaked onto the ground." msgstr "" -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "" - #: src/character.cpp msgid "Left Arm" msgstr "" @@ -113220,8 +114283,7 @@ msgstr "" msgid "No limb would benefit from it." msgstr "" -#: src/character.cpp src/game.cpp -#: src/game.cpp src/iexamine.cpp src/inventory_ui.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp #: src/pickup.cpp msgid "Cancel" msgstr "" @@ -113305,7 +114367,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" msgstr "" @@ -113326,7 +114388,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" msgstr "" @@ -113343,7 +114405,7 @@ msgid "Destination for guns, bows and similar weapons." msgstr "" #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" msgstr "" @@ -113386,7 +114448,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" msgstr "" @@ -113435,7 +114497,7 @@ msgid "Destination for Compact Bionics Modules aka CBMs." msgstr "" #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" msgstr "" @@ -113478,7 +114540,7 @@ msgid "Destination for chemicals." msgstr "" #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" msgstr "" @@ -113505,7 +114567,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" msgstr "" @@ -113530,7 +114592,7 @@ msgid "Items inside of this zone are ignored by \"sort out loot\" zone-action." msgstr "" #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" msgstr "" @@ -114629,12 +115691,16 @@ msgstr "" msgid "After boarding up the window the curtains and curtain rod are left." msgstr "" +#: src/construction.cpp +msgid "You gather some clay." +msgstr "" + #: src/construction.cpp msgid "You gather some sand." msgstr "" #: src/construction.cpp -msgid "You gather some clay." +msgid "You gather some materials." msgstr "" #: src/construction.cpp @@ -115104,6 +116170,16 @@ msgstr "" msgid "Use which component?" msgstr "" +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "" + #: src/crafting.cpp msgid "Use which tool?" msgstr "" @@ -115313,31 +116389,80 @@ msgstr "" msgid "Nothing selected!" msgstr "" -#: src/crafting_gui.cpp src/newcharacter.cpp -#: src/overmap_ui.cpp -msgid "Search:" +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" msgstr "" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" +"The default is to search result names. Some single-character prefixes can " +"be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" +msgstr "" + +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" +msgstr "" + +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" +msgstr "" + +#: src/crafting_gui.cpp src/newcharacter.cpp +#: src/overmap_ui.cpp +msgid "Search:" msgstr "" #: src/crafting_gui.cpp @@ -115370,10 +116495,6 @@ msgstr "" msgid "slow %d%%" msgstr "" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "" - #: src/crafting_gui.cpp msgid "Searched" msgstr "" @@ -116473,12 +117594,17 @@ msgstr "" #: src/editmap.cpp #, c-format -msgid "apparent light: %.2f, light_at: %.2f" +msgid "outside: %d obstructed: %d" +msgstr "" + +#: src/editmap.cpp +#, c-format +msgid "light_at: %s" msgstr "" #: src/editmap.cpp #, c-format -msgid "outside: %d" +msgid "apparent light: %.5f (%d)" msgstr "" #: src/editmap.cpp @@ -120323,10 +121449,6 @@ msgstr "" msgid "thin sludge trail" msgstr "" -#: src/field.cpp -msgid "fire" -msgstr "" - #: src/field.cpp msgid "raging fire" msgstr "" @@ -121409,9 +122531,12 @@ msgstr "" msgid "minute" msgstr "" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp +#: src/martialarts.cpp msgid "turn" -msgstr "" +msgid_plural "turns" +msgstr[0] "" +msgstr[1] "" #: src/game.cpp msgid "Set year to?" @@ -121999,7 +123124,7 @@ msgstr "" msgid "Sort armor" msgstr "" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "" @@ -122066,7 +123191,7 @@ msgid "" msgstr "" #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." +msgid "It looks solid, and will burn for a few hours without extra fuel." msgstr "" #: src/game.cpp @@ -122615,7 +123740,7 @@ msgstr "" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "" @@ -122626,7 +123751,7 @@ msgstr "" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." @@ -123467,6 +124592,10 @@ msgstr "" msgid "You feel fatigue seeping into your body." msgstr "" +#: src/game.cpp +msgid "The portal collapses!" +msgstr "" + #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." @@ -124247,7 +125376,7 @@ msgstr "" msgid "Are you sure you want to sleep?" msgstr "" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "" @@ -124544,6 +125673,11 @@ msgstr "" msgid "You don't have a suitable item to coat with diamond" msgstr "" +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "" + #: src/iexamine.cpp #, c-format msgid "Use the %s?" @@ -125994,6 +127128,10 @@ msgstr "" msgid "You inspect its contents and find: " msgstr "" +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "" + #: src/iexamine.cpp msgid "You see some smoldering embers there." msgstr "" @@ -126467,6 +127605,10 @@ msgstr "" msgid "Category: " msgstr "" +#: src/item.cpp +msgid "$" +msgstr "" + #: src/item.cpp msgid "Price: " msgstr "" @@ -126671,10 +127813,6 @@ msgid "" "very bad idea." msgstr "" -#: src/item.cpp -msgid "Capacity: " -msgstr "" - #: src/item.cpp #, c-format msgid " round of %s" @@ -126682,6 +127820,10 @@ msgid_plural " rounds of %s" msgstr[0] "" msgstr[1] "" +#: src/item.cpp +msgid "Capacity: " +msgstr "" + #: src/item.cpp msgid " per round" msgstr "" @@ -126999,11 +128141,15 @@ msgid "Warmth: " msgstr "" #: src/item.cpp -msgid "Encumbrance: " +msgid " (fits)" msgstr "" #: src/item.cpp -msgid " (fits)" +msgid " (poor fit)" +msgstr "" + +#: src/item.cpp +msgid "Encumbrance: " msgstr "" #: src/item.cpp @@ -127030,6 +128176,10 @@ msgstr "" msgid "Environmental protection: " msgstr "" +#: src/item.cpp +msgid "When active: " +msgstr "" + #: src/item.cpp msgid "Just for fun." msgstr "" @@ -127564,7 +128714,7 @@ msgid " (undersize)" msgstr "" #: src/item.cpp -msgid " (fits)" +msgid " (poor fit)" msgstr "" #: src/item.cpp @@ -127614,7 +128764,7 @@ msgstr "" msgid "sawn-off " msgstr "" -#. ~ This is a string to construct the item name as it is displayed. This format string has been added for maximum flexibility. The strings are: %1$s: Damage text (e.g. "bruised"). %2$s: burn adjectives (e.g. "burnt"). %3$s: tool modifier text (e.g. "atomic"). %4$s: vehicle part text (e.g. "3.8-Liter"). $5$s: main item text (e.g. "apple"). %6s: tags (e.g. "(wet) (fits)"). +#. ~ This is a string to construct the item name as it is displayed. This format string has been added for maximum flexibility. The strings are: %1$s: Damage text (e.g. "bruised"). %2$s: burn adjectives (e.g. "burnt"). %3$s: tool modifier text (e.g. "atomic"). %4$s: vehicle part text (e.g. "3.8-Liter"). $5$s: main item text (e.g. "apple"). %6s: tags (e.g. "(wet) (poor fit)"). #: src/item.cpp #, c-format msgid "%1$s%2$s%3$s%4$s%5$s%6$s" @@ -127903,6 +129053,13 @@ msgstr "" msgid "Execute which action?" msgstr "" +#: src/item_factory.cpp +msgid "" +"Can be activated to increase environmental protection. Will " +"consume charges when active, but only when environmental hazards are " +"present." +msgstr "" + #: src/item_factory.cpp msgid "cannot specify revert_msg without revert_to" msgstr "" @@ -131104,6 +132261,105 @@ msgid "" "work." msgstr "" +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "" + +#: src/iuse.cpp +msgid "Heads!" +msgstr "" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "" + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "" + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "" + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "" + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "" + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "" + +#: src/iuse.cpp +msgid "Most likely." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "" + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "" + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "" + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "" + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "" + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "" + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "" + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "" + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "" + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "" + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "" + #: src/iuse_actor.cpp #, c-format msgid "The %s is empty!" @@ -133726,6 +134982,214 @@ msgstr "" msgid "Open Evidence Locker" msgstr "" +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "" + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "" + +#: src/martialarts.cpp +msgid "activate" +msgstr "" + +#: src/martialarts.cpp +msgid "be used" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "" + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "" + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind it" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" +msgstr "" + +#: src/martialarts.cpp +msgid "Passive" +msgstr "" + +#: src/martialarts.cpp +msgid "Hit" +msgstr "" + +#: src/martialarts.cpp +msgid "Get hit" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "" + +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr "" + #: src/material.cpp msgid "damages" msgstr "" @@ -136817,6 +138281,11 @@ msgstr "" msgid "The %1$s climbs over the %2$s." msgstr "" +#: src/monmove.cpp +#, c-format +msgid "A %1$s flies over the %2$s!" +msgstr "" + #: src/monmove.cpp #, c-format msgid "A %1$s %2$s from the %3$s!" @@ -137690,8 +139159,9 @@ msgstr "" msgid "Freeform" msgstr "" -#: src/newcharacter.cpp -msgid "Pick your style:" +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" msgstr "" #: src/newcharacter.cpp @@ -138907,44 +140377,6 @@ msgstr "" msgid " If you are interested, I have another job for you." msgstr "" -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "" - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "" - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "" - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "" - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to " -"disappear quickly from here." -msgstr "" - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "" - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "" - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." msgstr "" @@ -138953,10 +140385,6 @@ msgstr "" msgid "Why should I share my equipment with you?" msgstr "" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "" - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr "" @@ -138977,46 +140405,6 @@ msgstr "" msgid "Here's what I can teach you..." msgstr "" -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "" - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "" - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "" - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "" - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "" - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "" - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "" - #: src/npctalk.cpp #, c-format msgid "%d.%d miles." @@ -139029,22 +140417,6 @@ msgid_plural "%d feet." msgstr[0] "" msgstr[1] "" -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "" - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "" - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "" - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "" - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "" @@ -139350,30 +140722,6 @@ msgstr "" msgid "Delivering bandages." msgstr "" -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "" - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "" - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "" - #: src/npctalk.cpp msgid "Okay, fine." msgstr "" @@ -139406,30 +140754,6 @@ msgstr "" msgid "Never mind, I'll do without. Bye." msgstr "" -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "" - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "" - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "" @@ -139451,94 +140775,6 @@ msgstr "" msgid "%s: %d -> %d (cost $%d)" msgstr "" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "" - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "" - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "" - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "" - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "" - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "" - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "" - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "" - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "" - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "" - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "" - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "" - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "" - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "" - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "" - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "" - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "" - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "" - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "" @@ -139547,10 +140783,6 @@ msgstr "" msgid "Let's keep moving." msgstr "" -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "" - #: src/npctalk.cpp msgid "Combat commands..." msgstr "" @@ -139608,15 +140840,11 @@ msgid "Miscellaneous rules..." msgstr "" #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "" - -#: src/npctalk.cpp -msgid "I'll give you some space." +msgid "I'm going to go my own way for a while." msgstr "" #: src/npctalk.cpp -msgid "I understand..." +msgid "Let's talk about faction camps." msgstr "" #: src/npctalk.cpp @@ -140325,6 +141553,11 @@ msgid "" "you. - Butcher: Butcher corpses you stand on." msgstr "" +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "" + #: src/options.cpp msgid "Pulp" msgstr "" @@ -140512,10 +141745,6 @@ msgstr "" msgid "Always" msgstr "" -#: src/options.cpp -msgid "Ask" -msgstr "" - #: src/options.cpp msgid "Never" msgstr "" @@ -142839,9 +144068,7 @@ msgstr "" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "" -msgstr[1] "" +msgstr "" #: src/player.cpp msgid "Equipment:" @@ -144296,22 +145523,6 @@ msgstr "" msgid "Stop wielding %s?" msgstr "" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "" -msgstr[1] "" - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "" - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "" @@ -145129,10 +146340,6 @@ msgstr "" msgid "Perception" msgstr "" -#: src/player_display.cpp -msgid "Speed" -msgstr "" - #: src/player_display.cpp msgid "Severely Malnourished" msgstr "" @@ -147524,6 +148731,19 @@ msgstr "" msgid "'}' to scroll down" msgstr "" +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" +msgstr "" + #: src/veh_interact.cpp #, c-format msgid "> %2$s" @@ -148372,12 +149592,12 @@ msgstr "" #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" +msgid "Turn on %s" msgstr "" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" +msgid "Turn off %s" msgstr "" #: src/vehicle_use.cpp diff --git a/lang/po/de.po b/lang/po/de.po index eb956751ac088..62b0b4c1c3c70 100644 --- a/lang/po/de.po +++ b/lang/po/de.po @@ -3,23 +3,24 @@ # Nico Brandt , 2018 # Enrico Grunitz, 2018 # Ozone H3 , 2018 -# Robert Boettcher , 2018 # Kitty M , 2018 +# Robert Boettcher , 2018 # Nipaporn P. , 2018 # Mark Bies, 2018 # Brett Dong , 2018 # - - , 2018 # Phil Mait , 2018 -# Wuzzy , 2018 -# Vlasov Vitaly , 2018 # MinerMax555 , 2018 +# Tarnath , 2018 +# Vlasov Vitaly , 2018 +# Wuzzy , 2018 # Pupsi , 2018 # msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-26 22:02+0800\n" +"POT-Creation-Date: 2018-11-16 22:24+0800\n" "PO-Revision-Date: 2018-04-26 14:47+0000\n" "Last-Translator: Pupsi , 2018\n" "Language-Team: German (https://www.transifex.com/cataclysm-dda-translators/teams/2217/de/)\n" @@ -5111,6 +5112,7 @@ msgstr "" "was der Blob braucht, um gesund zu sein. Glaubst du zumindest." #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "Stein" @@ -6228,6 +6230,16 @@ msgid_plural "bondage masks" msgstr[0] "Bondage-Maske" msgstr[1] "Bondage-Masken" +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "Zuziehen" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "Du schließt die Augen und den Mund der Bondage-Maske." + #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" @@ -6237,6 +6249,31 @@ msgstr "" "Eine enge Maske aus schwarzem Leder. Die Augen und der Mund können mit " "Reißverschlüssen verschlossen werden." +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "Bondage-Maske (geschlossen)" +msgstr[1] "Bondage-Masken (geschlossen)" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "Aufziehen" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "Du öffnest die Augen und den Mund der Bondage-Maske." + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "" +"Eine enge Maske aus schwarzem Leder. Die Reißverschlüsse an Augen und der " +"Mund wurden geschlossen." + #: lang/json/ARMOR_from_json.py msgid "bondage suit" msgid_plural "bondage suits" @@ -6815,7 +6852,7 @@ msgstr[1] "Kunstfell Pelzmäntel" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." msgstr "" "Ein grellbunter Kunstpelzmantel mit kleinen Taschen. Obwohl er nicht so warm" @@ -7237,6 +7274,21 @@ msgstr "" "Ein dicker Pelzstaubmantel in Lebensgröße. Hat viele Taschen für die " "Lagerung." +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "Kunstfellstaubmantel" +msgstr[1] "Kunstfellstaubmäntel" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." +msgstr "" +"Ein dicker Kunstpelzstaubmantel, der bis unter die Knie fällt. Er hat viele " +"Taschen für die Lagerung von Dingen." + #: lang/json/ARMOR_from_json.py msgid "leather duster" msgid_plural "leather dusters" @@ -8455,6 +8507,21 @@ msgstr[1] "Pelzhüte" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "Ein Hut aus den Pelzen von Tieren. Extrem warm." +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "Kunstpelzhut" +msgstr[1] "Kunstpelzhüte" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "" +"Ein stylischer Hut aus Kunstpelz. Wie echtes Fell, aber ohne das ganze " +"Leiden, zumindest wenn man dem Etikett glauben kann. Sehr warm." + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -8821,17 +8888,6 @@ msgstr "" "Ein mittelalterlicher Helm, der exzellenten Schutz für den gesamten Kopf auf" " Kosten hoher Hinderung bietet." -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "Spezialeinheitshelm" -msgstr[1] "Spezialeinheitshelme" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "Ein Helm mit einem Plastikschild, der dein gesamtes Gesicht bedeckt." - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" @@ -10559,6 +10615,17 @@ msgstr[1] "Pelzhosen" msgid "A hefty pair of fur-lined pants." msgstr "Eine starke pelzgefütterte Hose." +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "Kunstpelzhose" +msgstr[1] "Kunstpelzhosen" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "Eine lange Baumwollhose, die mit warmem Kunstpelz gefüttert wurde." + #: lang/json/ARMOR_from_json.py msgid "leather pants" msgid_plural "leather pants" @@ -11275,23 +11342,87 @@ msgid_plural "sleeping bags" msgstr[0] "Schlafsack" msgstr[1] "Schlafsäcke" +#. ~ Use action menu_text for sleeping bag. +#. ~ Use action menu_text for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Roll up" +msgstr "Aufrollen" + +#. ~ Use action msg for sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the sleeping bag, preparing it for transport." +msgstr "" +"Du rollst deinen Schlafsack auf und bereitest ihn für den Transport vor." + #. ~ Description for sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag that covers you head to toe." msgstr "Ein großer Schlafsack, der dich von Kopf bis Fuß bedeckt." +#: lang/json/ARMOR_from_json.py +msgid "rolled sleeping bag" +msgid_plural "rolled sleeping bags" +msgstr[0] "Schlafsack (aufgerollt)" +msgstr[1] "Schlafsäcke (aufgerollt)" + +#. ~ Use action menu_text for rolled sleeping bag. +#. ~ Use action menu_text for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Unroll" +msgstr "Entrollen" + +#. ~ Use action msg for rolled sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll the sleeping bag." +msgstr "Du entrollst deinen Schlafsack." + +#. ~ Description for rolled sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag rolled up for transport. It has a strap to carry it " +"with." +msgstr "" +"Ein großer Schlafsack, der für den Transport zusammengerollt wurde. Er hat " +"einen Riemen, um ihn einfach tragen zu können." + #: lang/json/ARMOR_from_json.py msgid "fur sleeping bag" msgid_plural "fur sleeping bags" msgstr[0] "Pelzschlafsack" msgstr[1] "Pelzschlafsäcke" +#. ~ Use action msg for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the fur sleeping bag, preparing it for transport." +msgstr "" +"Du rollst deinen Pelzschlafsack auf und bereitest ihn für den Transport vor." + #. ~ Description for fur sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag lined with fur. Who needs a tent?" msgstr "" "Ein großer mit Pelz gefütterter Schlafsack. Wer braucht schon ein Zelt?" +#: lang/json/ARMOR_from_json.py +msgid "rolled fur sleeping bag" +msgid_plural "rolled fur sleeping bags" +msgstr[0] "Pelzschlafsack (aufgerollt)" +msgstr[1] "Pelzschlafsäcke (aufgerollt)" + +#. ~ Use action msg for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll up the fur sleeping bag." +msgstr "Du entrollst deinen Pelzschlafsack." + +#. ~ Description for rolled fur sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag lined with fur, rolled for transport. It has a strap " +"to carry it with." +msgstr "" +"Ein großer, mit Pelz gefütterter Schlafsack, der für den Transport " +"zusammengerollt wurde. Er hat einen Riemen, um ihn einfach tragen zu können." + #: lang/json/ARMOR_from_json.py msgid "sleeveless duster" msgid_plural "sleeveless dusters" @@ -11322,6 +11453,21 @@ msgstr "" "Ein dicker Pelzstaubmantel in Lebensgröße ohne Ärmel, was deine Arme " "unbelastet lässt. Hat viel Lagerplatz aufgrund seiner vielen Taschen." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "ärmelloser Kunstpelzstaubmantel" +msgstr[1] "ärmellose Kunstpelzstaubmäntel" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "" +"Ein dicker, ärmelloser Kunstpelzstaubmantel, der bis unter die Knie fällt. " +"Er hat viele Taschen für die Lagerung von Dingen." + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" msgid_plural "sleeveless leather dusters" @@ -11383,6 +11529,21 @@ msgstr "" "Ein dicker Pelztrenchcoat ohne Ärmel, was deine Arme unbelastet lässt. Hat " "viel Lagerplatz aufgrund seiner vielen Taschen." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "ärmelloser Kunstpelztrenchcoat" +msgstr[1] "ärmellose Kunstpelztrenchcoats" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "" +"Ein dicker, ärmelloser Kunstpelztrenchcoat. Er bietet viel Platz für die " +"Lagerung von Dingen und sieht zudem ziemlich gut aus." + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -12149,6 +12310,22 @@ msgstr "" "Ein dicker Pelztrenchcoat, in dem Taschen genäht wurden. Großartig als " "Lagerplatz." +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "Kunstpelztrenchcoat" +msgstr[1] "Kunstpelztrenchcoats" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "" +"Ein dicker Kunstpelztrenchcoat, in den Taschen genäht wurden. Einfach " +"großartig für die Lagerung von Dingen und macht dich darüber hinaus zum " +"heutigen Stadtgespräch." + #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" msgid_plural "leather trenchcoats" @@ -12674,7 +12851,7 @@ msgstr "" "Eine feuerfeste Ganzkörperbekleidung, welche von Feuerwehrleuten als Schutz " "vor extremer Hitze getragen wird. Obwohl die Bewegungsfreiheit stark " "eingeschränkt wird, bietet er einen ausgezeichneten Schutz vor Feuer und " -"Rauch bieten. Eine separate Gasmaske ist für einen vollständigen Schutz " +"Rauch. Eine separate Gasmaske ist für einen vollständigen Schutz " "erforderlich." #: lang/json/ARMOR_from_json.py @@ -15893,7 +16070,7 @@ msgid "" "directly into your bloodstream through the needle without needing to carry a" " syringe." msgstr "" -"Eine kleine Röhre mit einziehbare Nadel, die in einem Netz aus winzigen " +"Eine kleine Röhre mit einziehbarer Nadel, die in einem Netz aus winzigen " "Schläuchen anstelle eines Kolbens endet. Installiert, ermöglicht sie dir, " "Substanzen direkt in deine Blutbahn zu injizieren, ohne dass du noch eine " "Spritze bei dir tragen musst." @@ -15968,11 +16145,12 @@ msgstr[0] "Ionenüberlastungserzeuger-KBM" msgstr[1] "Ionenüberlastungserzeuger-KBMs" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" "Ein leistungsstarker Ionen-Energiegenerator wurde deiner Brust implantiert. " @@ -16031,27 +16209,6 @@ msgstr "" "eine Explosion beim Einschlag verursacht. Einer Verwendung im Nahkampf ist " "strengstens abzuraten." -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "Autonome-Chirurgieklingen-KBM" -msgstr[1] "Autonome-Chirurgieklingen-KBMs" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While" -" activated, they will continously drain power to make automated precise cuts" -" but you will be unable to wield anything." -msgstr "" -"In den Fingern des Benutzers wurde ein System chirurgischer Klingen " -"eingebaut. Während sie aktiviert sind, werden sie stätig Strom verbrauchen, " -"um automatisierte präzise Schnitte vorzunehmen, aber du wirst nicht in der " -"Lage sein, irgendetwas zu halten." - #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" msgid_plural "Lessons for the Novice Bowhunter" @@ -19070,6 +19227,25 @@ msgstr "" "Skizzen und Notizen gefüllt, ein erfahrener Schneider könnte davon eine " "Menge lernen." +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "Tierfreundliche, humane Mode" +msgstr[1] "Tierfreundliche, humane Mode" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon" +" Animal Rights Organization." +msgstr "" +"Ein Lehrbuch, in dem die Verwendung von Kunstpelz sowie dessen Vor- und " +"Nachteile beschrieben werden. Die Textsprache ist ziemlich leidenschaftlich," +" und ein Haftungsausschluss auf dem Cover zeigt stolz, dass das Buch von der" +" »Gryphon Animal Rights Organization« gedruckt und vertrieben wird." + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -26647,7 +26823,7 @@ msgstr "Er ist eindeutig nicht nach Großmutters Rezept gebacken worden." #: lang/json/COMESTIBLE_from_json.py msgid "putrid heart" -msgstr "" +msgstr "fauliges Herz" #. ~ Description for putrid heart #: lang/json/COMESTIBLE_from_json.py @@ -26658,10 +26834,16 @@ msgid "" "hands. After everything you've seen lately, you can't help but remember old" " sayings about eating the hearts of your enemies..." msgstr "" +"Eine dicke, massive Masse an Fleisch, oberflächig ähnlich dem Herz eines " +"Säugetiers, überzogen von gerippten Rillen und leicht so groß wie dein Kopf." +" Es ist noch voll von, ähm, was auch immer als Blut in Jabberwocks durchgeht" +" und es liegt schwer in deinen Händen. Nach allem, was du in letzter Zeit " +"gesehen hast, kannst du nicht lassen an alte Geschichten zu denken, über das" +" Verspeißen der Herzen deiner Feinde..." #: lang/json/COMESTIBLE_from_json.py msgid "desiccated putrid heart" -msgstr "" +msgstr "ausgetrocknetes fauliges Herz" #. ~ Description for desiccated putrid heart #: lang/json/COMESTIBLE_from_json.py @@ -26670,6 +26852,10 @@ msgid "" "sliced open and drained of blood. It could be eaten if you're hungry, but " "looks *disgusting*." msgstr "" +"Ein riesiger Streifen aus Muskeln - das ist alles, was von einem fauligen " +"Herz übrig bleibt, welches aufgeschnitten und von Blut befreit wurde. Es " +"könnte gegessen werden, wenn du besonders hungrig bist, aber es sieht " +"einfach nur ekelhaft aus." #: lang/json/COMESTIBLE_from_json.py msgid "Spice" @@ -27292,19 +27478,21 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "ice cream" msgid_plural "ice cream scoops" -msgstr[0] "Eisportionierer" -msgstr[1] "Eisportionierer" +msgstr[0] "Eis-Kugel" +msgstr[1] "Eis-Kugeln" #. ~ Description for ice cream #: lang/json/COMESTIBLE_from_json.py msgid "A sweet, frozen food made of milk with liberal amounts of sugar." msgstr "" +"Ein süßes, tiefgekühltes Lebensmittel, dass aus Milch und reichlich Zucker " +"gemacht wird." #: lang/json/COMESTIBLE_from_json.py msgid "dairy dessert" msgid_plural "dairy dessert scoops" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Milchdessert-Kugel" +msgstr[1] "Milchdessert-Kugeln" #. ~ Description for dairy dessert #: lang/json/COMESTIBLE_from_json.py @@ -27313,24 +27501,29 @@ msgid "" "cream, it be called a dairy dessert instead. It still tastes good, but your" " body won't like you." msgstr "" +"Gesetzliche Vorgaben sehen vor, dass dieses Lebensmittel, da es sich " +"technisch nicht um Eis handelt, stattdessen Milch-Dessert genannt muss. Es " +"schmeckt aber immer noch gut, deine Fettpölsterchen werden es dir danken." #: lang/json/COMESTIBLE_from_json.py msgid "candy ice cream" msgid_plural "candy ice cream scoops" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Candy-Eis-Kugel" +msgstr[1] "Candy-Eis-Kugeln" #. ~ Description for candy ice cream #: lang/json/COMESTIBLE_from_json.py msgid "" "Ice cream with bits of chocolate, caramel, or other flavoring mixed in." msgstr "" +"Eiscreme, welche mit Schokoladenstückchen, Karamell oder anderen Zutaten und" +" Aromen vermengt wurde. " #: lang/json/COMESTIBLE_from_json.py msgid "fruity ice cream" msgid_plural "fruity ice cream scoops" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Fruchteis-Kugel" +msgstr[1] "Fruchteis-Kugeln" #. ~ Description for fruity ice cream #: lang/json/COMESTIBLE_from_json.py @@ -27338,12 +27531,14 @@ msgid "" "Small bits of sweet fruit have been tossed into this ice cream, making it " "slightly less terrible for you." msgstr "" +"Eiscreme, welche kleine Stücke süßer Früchte enthält, was es für deinen " +"Geschmack etwas appetitlicher macht." #: lang/json/COMESTIBLE_from_json.py msgid "frozen custard" msgid_plural "frozen custard scoops" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Frozen-Custard-Kugel" +msgstr[1] "Frozen-Custard-Kugeln" #. ~ Description for frozen custard #: lang/json/COMESTIBLE_from_json.py @@ -27352,6 +27547,11 @@ msgid "" "ice cream, but with egg yolk added in. Its storing temperature is warmer, " "and it lasts a little longer than regular ice cream." msgstr "" +"Ähnlich normalem Speiseeis. Dieser auf »Coney Island« berühmte Leckerbissen " +"wird an sich wie Eiscreme hergestellt, jedoch mit dem Unterschied, dass " +"Eigelb hinzugefügt wird. Die Lagertemperatur der Leckerei ist zudem " +"vergleichsweise höher angesiedelt und die Haltbarkeit ist auch etwas länger " +"als bei gewöhnlichem Eis." #: lang/json/COMESTIBLE_from_json.py msgid "frozen yogurt" @@ -27365,14 +27565,14 @@ msgid "" "Tarter than ice cream, this is made with yogurt and other dairy products, " "and is generally low-fat compared to ice cream itself." msgstr "" -"Weniger süß als Eis, aus Joghurt und anderen Milchprodukten hergestellt, und" -" im Allgemeinen recht fettarm." +"Weniger süß als Eis, da es aus Joghurt und anderen Milchprodukten " +"hergestellt wird, die im Allgemeinen zudem recht fettarm sind." #: lang/json/COMESTIBLE_from_json.py msgid "sorbet" msgid_plural "sorbet scoops" -msgstr[0] "Sorbet Portionierer" -msgstr[1] "Sorbet Portionierer" +msgstr[0] "Sorbet-Kugel" +msgstr[1] "Sorbet-Kugeln" #. ~ Description for sorbet #: lang/json/COMESTIBLE_from_json.py @@ -27384,8 +27584,8 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "gelato" msgid_plural "gelato scoops" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Gelato-Kugel" +msgstr[1] "Gelato-Kugeln" #. ~ Description for gelato #: lang/json/COMESTIBLE_from_json.py @@ -27393,6 +27593,9 @@ msgid "" "Italian-style ice cream. Less airy, and more dense, giving it a richer " "flavor and texture." msgstr "" +"Eiscreme italienischer Machart. Weniger luftig und dafür etwas dichter als " +"gewöhnliches Speiseeis, wodurch es an Aroma gewinnt und zugleich eine " +"reichere Textur erhält." #: lang/json/COMESTIBLE_from_json.py msgid "Adderall" @@ -28289,7 +28492,7 @@ msgstr "Knochenmehl-Tablette" #. ~ Description for bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Tastes horribly and is " +"Homemade calcium supplement made out of bone meal. Tastes horrible and is " "hard to swallow but it does its job." msgstr "" "Selbstgemachtes Kalzium-Nahrungsergänzungsmittel aus Knochenmehl. Schmeckt " @@ -28302,9 +28505,9 @@ msgstr "aromatisierte Knochenmehl-Tablette" #. ~ Description for flavored bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Due to some sweetness " -"mixed in to counteract the powdery texture and the taste of ash, almost as " -"palatable as the pre-cataclysm tablets." +"Homemade calcium supplement made out of bone meal. Due to some sweetness " +"mixed in to counteract the powdery texture and the taste of ash, it's almost" +" as palatable as the pre-cataclysm tablets." msgstr "" "Selbstgemachtes Kalzium-Nahrungsergänzungsmittel aus Knochenmehl. Durch " "Zumengen von Süße, um der pulvrigen Textur und dem Geschmack von Asche " @@ -28700,6 +28903,9 @@ msgid "" "A thick, soupy red liquid. It looks and smells disgusting, and seems to " "bubble with an intelligence of its own..." msgstr "" +"Eine dicke, suppenartige rote Flüssigkeit. Sie sieht ekelhaft aus und riecht" +" auch nicht viel besser. Irgendwie scheint sie mit einer eigentümlichen " +"Intelligenz vor sich hin zu blubbern..." #: lang/json/COMESTIBLE_from_json.py msgid "alpha mutagen" @@ -28946,7 +29152,7 @@ msgstr "" "nährstoffhaltigen Früchten. Es wurde mit zusätzlichen Vitaminen und " "Mineralien ergänzt." -#: lang/json/COMESTIBLE_from_json.py src/mission_companion.cpp +#: lang/json/COMESTIBLE_from_json.py src/faction_camp.cpp msgid "seeds" msgid_plural "seeds" msgstr[0] "Samen" @@ -29817,12 +30023,12 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "mutagenic glob" -msgstr "" +msgstr "Mutagen-Klumpen" #. ~ Description for mutagenic glob #: lang/json/COMESTIBLE_from_json.py msgid "A gelatinous glob of mutagen." -msgstr "" +msgstr "Ein gelatinöser Klumpen aus Mutagenen." #: lang/json/COMESTIBLE_from_json.py msgid "honey" @@ -31330,8 +31536,8 @@ msgstr "" #: lang/json/CONTAINER_from_json.py msgid "gelatinous capsule" msgid_plural "gelatinous capsules" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "gelatinöse Kapsel" +msgstr[1] "gelatinöse Kapseln" #. ~ Description for gelatinous capsule #. ~ Description for gray cocoon @@ -31366,8 +31572,8 @@ msgstr[1] "graue Tanks" #: lang/json/CONTAINER_from_json.py msgid "oozing pod" msgid_plural "oozing pods" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "triefende Kapsel" +msgstr[1] "triefende Kapseln" #: lang/json/CONTAINER_from_json.py msgid "oozing tank" @@ -31943,6 +32149,36 @@ msgstr "" "Eine Handvoll glimmende Asche, von der Rauch aufsteigt. Sie verglüht vor " "deinen Augen." +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "Magic 8 Ball" +msgstr[1] "Magic 8 Balls" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "" +"Ein Wahrsagegerät aus den 1950er Jahren. Die Art moralische Unterstützung, " +"von der du nicht wusstest, dass du sie gebraucht hast." + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "Münze" +msgstr[1] "Münzen" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "" +"Eine veralte Währungsform. Beraubt vom ursprünglichen Zweck, dient sie jetzt" +" dem Münze werfenden Münzwerfer treu und völlig unentgeltlich." + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -34874,7 +35110,7 @@ msgstr "" "Waffe, die sich daraus ergibt, ist unhandlich und langsam, aber schlägt sehr" " heftig zu." -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "Brett" @@ -36623,6 +36859,8 @@ msgid "" "You examine the batch and see that the pickling solution has done its job, " "so you seal the jar up for storage." msgstr "" +"Du untersuchst den Inhalt und siehst, dass die Beizlösung ihre Aufgabe " +"erfüllt hat, also versiegelst du das Glasgefäß für die Lagerung." #. ~ Use action not_ready_msg for fermenting eggs jar. #: lang/json/GENERIC_from_json.py @@ -36902,12 +37140,10 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." +"spike." msgstr "" -"Dies ist eine mittelalterliche Waffe, die aus einem Holzgriff, der mit einer" -" Eisenspitze bestückt ist, besteht. Obwohl er verglichen mit anderen Speeren" -" groß und schwer ist, sind seine Genauigkeit und sein Schaden beispiellos." +"Dies ist eine mittelalterliche Waffe, bestehend aus einem Holzschaft, der " +"mit einer eisernen Spitze versehen ist." #: lang/json/GENERIC_from_json.py msgid "pot" @@ -37870,6 +38106,10 @@ msgid "" "and used to support another vehicle for transport. It must be mounted on a " "vehicle to be used." msgstr "" +"Eine Ansammlung von Rohren, Nocken und Riemen, die an der Fahrzeugkante " +"montiert werden und zur Befestigung eines anderen Vehikels zu " +"Transportzwecken dienen. Muss an ein Fahrzeug montiert werden, um verwendet " +"werden zu können." #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "floodlight" @@ -39353,8 +39593,8 @@ msgstr "Eine große und schwere gezackte Metallscheibe, um Gräben zu graben." #: lang/json/GENERIC_from_json.py msgid "airjack" msgid_plural "airjacks" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Airjack" +msgstr[1] "Airjacks" #. ~ Description for airjack #. ~ Description for air jack system @@ -39363,6 +39603,9 @@ msgid "" "An extendable metal pylon used to replace a portable jack. If mounted to a " "vehicle, it could be used to lift it up." msgstr "" +"Ein ausfahrbarer Metallpylon, der als Ersatz für einen tragbaren Wagenheber " +"verwendet werden kann. Wird er an ein Fahrzeug montiert, kann er zum Anheben" +" der Karosserie verwendet werden." #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "motorcycle kickstand" @@ -40170,6 +40413,8 @@ msgid "" "A broken military turret. Much less threatening now that it lies limp on " "solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter Militärgeschützturm. Viel unbedrohlicher, jetzt, wo er schlaff " +"auf den Boden liegt. Er könnte für Bauteile demontiert werden." #. ~ Description for broken advanced turret #. ~ Description for broken 9mm turret @@ -40179,12 +40424,14 @@ msgid "" "A broken 9mm defense turret. Much less threatening now that it lies limp on" " solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter 9mm Verteidigungsgeschützturm. Viel unbedrohlicher, jetzt, wo " +"er schlaff auf den Boden liegt. Er könnte für Bauteile demontiert werden. " #: lang/json/GENERIC_from_json.py msgid "broken 9mm turret" msgid_plural "broken 9mm turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter 9mm-Geschützturm" +msgstr[1] "kaputte 9mm-Geschütztürme" #. ~ Description for broken 9mm turret #: lang/json/GENERIC_from_json.py @@ -40192,12 +40439,14 @@ msgid "" "A broken shotgun defense turret. Much less threatening now that it lies " "limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter Flinten-Verteidigungsgeschützturm. Viel unbedrohlicher, jetzt, " +"wo er schlaff auf den Boden liegt. Er könnte für Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken riot control turret" msgid_plural "broken riot control turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter Antikrawallgeschützturm" +msgstr[1] "kaputte Antikrawallgeschütztürme" #. ~ Description for broken riot control turret #: lang/json/GENERIC_from_json.py @@ -40205,18 +40454,20 @@ msgid "" "A broken riot control turret. Much less threatening now that it lies limp " "on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter Antikrawallgeschützturm. Viel unbedrohlicher, jetzt, wo er " +"schlaff auf den Boden liegt. Er könnte für Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken riotcontrol turret" msgid_plural "broken riotcontrol turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter Antikrawallgeschützturm" +msgstr[1] "kaputte Antikrawallgeschütztürme" #: lang/json/GENERIC_from_json.py msgid "broken 5.56mm turret" msgid_plural "broken 5.56mm turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter 5.56mm-Geschützturm" +msgstr[1] "kaputte 5.56mm-Geschütztürme" #. ~ Description for broken 5.56mm turret #: lang/json/GENERIC_from_json.py @@ -40224,12 +40475,14 @@ msgid "" "A broken military-grade 5.56mm turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter 5.56mm-Militärgeschützturm. Viel unbedrohlicher, jetzt, wo er " +"schlaff auf den Boden liegt. Er könnte für Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken 7.62mm turret" msgid_plural "broken 7.62mm turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter 7.62mm-Geschützturm" +msgstr[1] "kaputte 7.62mm-Geschütztürme" #. ~ Description for broken 7.62mm turret #: lang/json/GENERIC_from_json.py @@ -40237,12 +40490,14 @@ msgid "" "A broken military-grade 7.62mm turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter 7.62mm-Militärgeschützturm. Viel unbedrohlicher, jetzt, wo er " +"schlaff auf den Boden liegt. Er könnte für Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken 50cal turret" msgid_plural "broken 50cal turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter Kaliber-.50-Geschützturm" +msgstr[1] "kaputte Kaliber-.50-Geschütztürme" #. ~ Description for broken 50cal turret #: lang/json/GENERIC_from_json.py @@ -40250,12 +40505,14 @@ msgid "" "A broken military-grade 50 caliber turret. Much less threatening now that " "it lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter Kaliber-.50-Militärgeschützturm. Viel unbedrohlicher, jetzt, wo" +" er schlaff auf den Boden liegt. Er könnte für Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken 40mm turret" msgid_plural "broken 40mm turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter 40mm-Geschützturm" +msgstr[1] "kaputte 40mm-Geschütztürme" #. ~ Description for broken 40mm turret #: lang/json/GENERIC_from_json.py @@ -40263,6 +40520,8 @@ msgid "" "A broken military-grade 40mm grenade turret. Much less threatening now that" " it lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter 40mm-Granaten-Militärgeschützturm. Viel unbedrohlicher, jetzt, " +"wo er schlaff auf den Boden liegt. Er könnte für Bauteile demontiert werden." #. ~ Description for broken 5.56mm turret #: lang/json/GENERIC_from_json.py @@ -40270,12 +40529,14 @@ msgid "" "A broken military-grade 5x50 flechette turret. Much less threatening now " "that it lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter 5x50-Flechet-Militärgeschützturm. Viel unbedrohlicher, jetzt, " +"wo er schlaff auf den Boden liegt. Er könnte für Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken 8x40mm turret" msgid_plural "broken 8x40mm turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter 8x40mm-Geschützturm" +msgstr[1] "kaputte 8x40mm-Geschütztürme" #. ~ Description for broken 8x40mm turret #: lang/json/GENERIC_from_json.py @@ -40283,12 +40544,14 @@ msgid "" "A broken military-grade 8x40mm turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter 8x40mm-Militärgeschützturm. Viel unbedrohlicher, jetzt, wo er " +"schlaff auf den Boden liegt. Er könnte für Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken flamethrower turret" msgid_plural "broken flamethrower turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter Flammenwerfer-Geschützturm" +msgstr[1] "kaputte Flammenwerfer-Geschütztürme" #. ~ Description for broken flamethrower turret #: lang/json/GENERIC_from_json.py @@ -40296,12 +40559,14 @@ msgid "" "A broken military-grade flamethrower turret. Much less threatening now that" " it lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter Flammenwerfer-Militärgeschützturm. Viel unbedrohlicher, jetzt, " +"wo er schlaff auf den Boden liegt. Er könnte für Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken laser turret" msgid_plural "broken laser turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter Laser-Geschützturm" +msgstr[1] "kaputte Laser-Geschütztürme" #. ~ Description for broken laser turret #: lang/json/GENERIC_from_json.py @@ -40309,12 +40574,15 @@ msgid "" "A broken advanced laser emitter turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter fortschrittlicher Laser-Emitter-Geschützturm. Viel " +"unbedrohlicher, jetzt, wo er schlaff auf den Boden liegt. Er könnte für " +"Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken acid turret" msgid_plural "broken acid turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter Säure-Geschützturm" +msgstr[1] "kaputte Säure-Geschütztürme" #. ~ Description for broken acid turret #: lang/json/GENERIC_from_json.py @@ -40322,12 +40590,15 @@ msgid "" "A broken advanced acid thrower turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter fortschrittlicher Säure-Werfer-Geschützturm. Viel " +"unbedrohlicher, jetzt, wo er schlaff auf den Boden liegt. Er könnte für " +"Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken plasma turret" msgid_plural "broken plasma turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter Plasma-Geschützturm" +msgstr[1] "kaputte Plasma-Geschütztürme" #. ~ Description for broken plasma turret #: lang/json/GENERIC_from_json.py @@ -40335,12 +40606,15 @@ msgid "" "A broken advanced plasma ejector turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter fortschrittlicher Plasma-Werfer-Geschützturm. Viel " +"unbedrohlicher, jetzt, wo er schlaff auf den Boden liegt. Er könnte für " +"Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken rail gun turret" msgid_plural "broken rail gun turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter Schienengewehrgeschützturm" +msgstr[1] "kaputte Schienengewehrgeschütztürme" #. ~ Description for broken rail gun turret #: lang/json/GENERIC_from_json.py @@ -40348,6 +40622,9 @@ msgid "" "A broken advanced rail gun turret. Much less threatening now that it lies " "limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter fortschrittlicher Schienengewehr-Geschützturm. Viel " +"unbedrohlicher, jetzt, wo er schlaff auf den Boden liegt. Er könnte für " +"Bauteile demontiert werden." #. ~ Description for broken acid turret #: lang/json/GENERIC_from_json.py @@ -40355,6 +40632,9 @@ msgid "" "A broken advanced acid projector turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter fortschrittlicher Säureprojektor-Geschützturm. Viel " +"unbedrohlicher, jetzt, wo er schlaff auf den Boden liegt. Er könnte für " +"Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken electro turret" @@ -40368,12 +40648,15 @@ msgid "" "A broken advanced electro caster turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter fortschrittlicher Elektro-Werfer-Geschützturm. Viel " +"unbedrohlicher, jetzt, wo er schlaff auf den Boden liegt. Er könnte für " +"Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken EMP turret" msgid_plural "broken EMP turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter EMP-Geschützturm" +msgstr[1] "kaputte EMP-Geschütztürme" #. ~ Description for broken EMP turret #: lang/json/GENERIC_from_json.py @@ -40381,6 +40664,9 @@ msgid "" "A broken advanced EMP generator turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter fortschrittlicher EMP-Generator-Geschützturm. Viel " +"unbedrohlicher, jetzt, wo er schlaff auf den Boden liegt. Er könnte für " +"Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken gaurdin gnome" @@ -40404,12 +40690,14 @@ msgstr[1] "" msgid "" "A broken eyebot, now dark and motionless. Could be stripped down for parts." msgstr "" +"Ein kaputter Schauboter, jetzt dunkel und bewegungslos. Er könnte noch für " +"seine Bestandteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken disarmed eyebot" msgid_plural "broken disarmed eyebots" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter entwaffneter Schauboter" +msgstr[1] "kaputte entwaffnete Schauboter" #. ~ Description for broken disarmed eyebot #: lang/json/GENERIC_from_json.py @@ -40417,6 +40705,9 @@ msgid "" "A broken eyebot. Its integrated weapon module has been removed. Could be " "gutted for parts or crafted into a salvaged robot." msgstr "" +"Ein kaputter Schauboter. Sein integriertes Waffenmodul wurde entfernt. " +"Könnte für seine Bestandteile entkernt oder zu einem geborgenen Roboter " +"verarbeitet werden." #: lang/json/GENERIC_from_json.py msgid "broken utility robot" @@ -40434,8 +40725,8 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "broken disarmed skitterbot" msgid_plural "broken disarmed skitterbots" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter entwaffneter Scheuchboter" +msgstr[1] "kaputte entwaffnete Scheuchboter" #. ~ Description for broken disarmed skitterbot #: lang/json/GENERIC_from_json.py @@ -40443,6 +40734,9 @@ msgid "" "A broken skitterbot. Its internal weapon modules have been removed. Could " "be gutted for parts or crafted into a salvaged robot." msgstr "" +"Ein kaputter Scheuchboter. Seine integrierten Waffenmodule wurden entfernt. " +"Könnte für seine Bestandteile entkernt oder zu einem geborgenen Roboter " +"verarbeitet werden." #. ~ Description for broken skitterbot #: lang/json/GENERIC_from_json.py @@ -40450,12 +40744,14 @@ msgid "" "A broken skitterbot, now harmless and inert. Could be stripped of integral " "weapon modules." msgstr "" +"Ein kaputter Scheuchboter, jetzt völlig reg- und harmlos. Er könnte noch für" +" seine integrierten Waffenmodule demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken disarmed defense bot" msgid_plural "broken disarmed defense bots" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter entwaffneter Verteidigungsroboter" +msgstr[1] "kaputte entwaffnete Verteidigungsroboter" #. ~ Description for broken disarmed defense bot #. ~ Description for broken security robot @@ -40473,14 +40769,14 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "broken security robot" msgid_plural "broken security robots" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter Sicherheitsroboter" +msgstr[1] "kaputte Sicherheitsroboter" #: lang/json/GENERIC_from_json.py msgid "broken riotcontrol robot" msgid_plural "broken riotcontrol robots" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter Antikrawallroboter" +msgstr[1] "kaputte Antikrawallroboter" #: lang/json/GENERIC_from_json.py msgid "broken chickenwalker" @@ -40558,35 +40854,35 @@ msgstr[1] "" #: lang/json/GENERIC_from_json.py msgid "integral tazer" msgid_plural "integral tazers" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierter Elektroschocker" +msgstr[1] "integrierte Elektroschocker" #: lang/json/GENERIC_from_json.py lang/json/gun_from_json.py #: lang/json/gun_from_json.py msgid "integral 9mm firearm" msgid_plural "integral 9mm firearms" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierte 9mm-Feuerwaffe" +msgstr[1] "integrierte 9mm-Feuerwaffen" #: lang/json/GENERIC_from_json.py lang/json/gun_from_json.py #: lang/json/gun_from_json.py msgid "integral 5.56mm firearm" msgid_plural "integral 5.56mm firearms" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierte 5.56mm-Feuerwaffe" +msgstr[1] "integrierte 5.56mm-Feuerwaffen" #: lang/json/GENERIC_from_json.py lang/json/gun_from_json.py #: lang/json/gun_from_json.py msgid "integral 7.62mm firearm" msgid_plural "integral 7.62mm firearms" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierte 7.62mm-Feuerwaffe" +msgstr[1] "integrierte 7.62mm-Feuerwaffen" #: lang/json/GENERIC_from_json.py msgid "integral shotgun" msgid_plural "integral shotguns" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierte Schrotflinte" +msgstr[1] "integrierte Schrotflinten" #: lang/json/GENERIC_from_json.py lang/json/gun_from_json.py #: lang/json/gun_from_json.py @@ -40599,34 +40895,34 @@ msgstr[1] "" #: lang/json/gun_from_json.py msgid "integral teargas launcher" msgid_plural "integral teargas launchers" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierter Tränengaswerfer" +msgstr[1] "integrierte Tränengaswerfer" #: lang/json/GENERIC_from_json.py lang/json/gun_from_json.py #: lang/json/gun_from_json.py lang/json/gunmod_from_json.py #: lang/json/gunmod_from_json.py msgid "integral flamethrower" msgid_plural "integral flamethrowers" -msgstr[0] "eingebauter Flammenwerfer" -msgstr[1] "eingebaute Flammenwerfer" +msgstr[0] "integrierter Flammenwerfer" +msgstr[1] "integrierte Flammenwerfer" #: lang/json/GENERIC_from_json.py msgid "integral flechette firearm" msgid_plural "integral flechette firearms" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierte Flechet-Feuerwaffe" +msgstr[1] "integrierte Flechet-Feuerwaffen" #: lang/json/GENERIC_from_json.py msgid "integral 8x40mm firearm" msgid_plural "integral 8x40mm firearms" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierte 8x40mm-Feuerwaffe" +msgstr[1] "integrierte 8x40mm-Feuerwaffen" #: lang/json/GENERIC_from_json.py msgid "integral 50 caliber firearm" msgid_plural "integral 50 caliber firearms" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierte Kaliber-.50-Feuerwaffe" +msgstr[1] "integrierte Kaliber-.50-Feuerwaffen" #: lang/json/GENERIC_from_json.py lang/json/gun_from_json.py #: lang/json/gun_from_json.py @@ -40645,14 +40941,14 @@ msgstr[1] "" #: lang/json/gun_from_json.py msgid "integral plasma ejector" msgid_plural "integral plasma ejectors" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierter Plasma-Werfer" +msgstr[1] "integrierte Plasma-Werfer" #: lang/json/GENERIC_from_json.py msgid "integral electromagnetic railgun" msgid_plural "integral electromagnetic railguns" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integriertes elektromagnetisches Schienengewehr" +msgstr[1] "integrierte elektromagnetische Schienengewehre" #: lang/json/GENERIC_from_json.py lang/json/gun_from_json.py #: lang/json/gun_from_json.py @@ -40664,14 +40960,14 @@ msgstr[1] "" #: lang/json/GENERIC_from_json.py msgid "integral electro caster" msgid_plural "integral electro casters" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierter Elektro-Werfer" +msgstr[1] "integrierte Elektro-Werfer" #: lang/json/GENERIC_from_json.py msgid "integral EMP projector" msgid_plural "integral EMP projectors" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierter EMP-Projektor" +msgstr[1] "integrierte EMP-Projektoren" #: lang/json/GENERIC_from_json.py msgid "stone spear" @@ -40841,8 +41137,8 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "broken watercannon turret" msgid_plural "broken watercannon turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter Wasserwerfer-Geschützturm" +msgstr[1] "kaputte Wasserwerfer-Geschütztürme" #. ~ Description for broken watercannon turret #: lang/json/GENERIC_from_json.py @@ -40850,6 +41146,8 @@ msgid "" "A broken watercannon turret. Much less threatening now that it lies limp on" " solid ground. Could be gutted for parts." msgstr "" +"Ein kaputter Wasserwerfer-Geschützturm. Viel unbedrohlicher, jetzt, wo er " +"schlaff auf den Boden liegt. Er könnte für Bauteile demontiert werden." #: lang/json/GENERIC_from_json.py msgid "broken floating heater" @@ -41273,12 +41571,15 @@ msgid "" "A broken advanced robot. Its internal weapons have been removed. Could be " "gutted for parts or crafted into a salvaged robot." msgstr "" +"Ein kaputter fortgeschrittener Roboter. Seine internen Waffen wurden " +"entfernt. Könnte für seine Bestandteile entkernt oder zu einem geborgenen " +"Roboter verarbeitet werden." #: lang/json/GENERIC_from_json.py msgid "broken advanced robot" msgid_plural "broken advanced robots" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "kaputter fortgeschrittener Roboter" +msgstr[1] "kaputte fortgeschrittene Roboter" #. ~ Description for broken advanced robot #: lang/json/GENERIC_from_json.py @@ -41286,6 +41587,9 @@ msgid "" "A broken advanced robot. This one is armed with an integrated laser-emitter." " Could be stripped for parts." msgstr "" +"Ein kaputter fortgeschrittener Roboter. Dieser ist mit einem integrierten " +"Laser-Emitter ausgerüstet. Er könnte noch für seine Bestandteile demontiert " +"werden." #. ~ Description for broken advanced robot #: lang/json/GENERIC_from_json.py @@ -41293,6 +41597,9 @@ msgid "" "A broken advanced robot. This one is armed with an integrated plasma-" "ejector. Could be stripped for parts." msgstr "" +"Ein kaputter fortgeschrittener Roboter. Dieser ist mit einem integrierten " +"Plasma-Werfer ausgerüstet. Er könnte noch für seine Bestandteile demontiert " +"werden." #. ~ Description for broken advanced robot #: lang/json/GENERIC_from_json.py @@ -41300,6 +41607,9 @@ msgid "" "A broken advanced robot. This one is armed with an integrated electro-" "caster. Could be stripped for parts." msgstr "" +"Ein kaputter fortgeschrittener Roboter. Dieser ist mit einem integrierten " +"Elektro-Werfer ausgerüstet. Er könnte noch für seine Bestandteile demontiert" +" werden." #. ~ Description for broken advanced robot #: lang/json/GENERIC_from_json.py @@ -41307,6 +41617,9 @@ msgid "" "A broken advanced robot. This one is armed with an integrated EMP projector." " Could be stripped for parts." msgstr "" +"Ein kaputter fortgeschrittener Roboter. Dieser ist mit einem integrierten " +"EMP-Projektor ausgerüstet. Er könnte noch für seine Bestandteile demontiert " +"werden." #: lang/json/GENERIC_from_json.py msgid "broken glittering lady" @@ -41334,6 +41647,9 @@ msgid "" "A broken salvaged robot. Thank God it's finally dead. Could be stripped or " "recrafted." msgstr "" +"Ein kaputter geborgener Roboter. Gott sei Dank ist er endlich wirklich " +"kaputt. Er könnte noch für seine Bestandteile demontiert, oder wieder " +"aufgebaut werden." #: lang/json/GENERIC_from_json.py msgid "broken screeching terror" @@ -41358,6 +41674,8 @@ msgstr[1] "" #: lang/json/GENERIC_from_json.py msgid "A broken salvaged robot. Could be stripped or recrafted." msgstr "" +"Ein kaputter geborgener Roboter. Er könnte noch für seine Bestandteile " +"demontiert, oder wieder aufgebaut werden." #: lang/json/GENERIC_from_json.py msgid "broken atomic sultan" @@ -41402,8 +41720,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "integral paintball gun" msgid_plural "integral paintball guns" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierte Paintballwaffe" +msgstr[1] "integrierte Paintballwaffen" #. ~ Description for integral paintball gun #: lang/json/GENERIC_from_json.py @@ -41411,6 +41729,8 @@ msgid "" "A highpowered paintball module used for safely testing robots or training " "soldiers." msgstr "" +"Ein leistungsstarkes Paintball-Modul zum sicheren Testen von Robotern oder " +"zum Trainieren von Soldaten." #: lang/json/GENERIC_from_json.py msgid "robot carrier" @@ -43622,6 +43942,8 @@ msgid "" "Makes solar panels and several other parts foldable, and adds foldable " "quarterboards." msgstr "" +"Macht Solarmodule und diverse andere Teile faltbar und fügt faltbare " +"Seitenwände hinzu." #: lang/json/MOD_INFO_from_json.py msgid "DinoMod" @@ -43997,7 +44319,7 @@ msgstr "" #: lang/json/MOD_INFO_from_json.py msgid "Salvaged Robots" -msgstr "" +msgstr "geborgene Roboter" #. ~ Description for Salvaged Robots #: lang/json/MOD_INFO_from_json.py @@ -44005,8 +44327,8 @@ msgid "" "Expands the types of robots and allows players to jury-rig broken robots " "into functioning companions." msgstr "" -"Erweitert die Robotertypen und ermöglicht es Spielern, zerbrochene Roboter " -"zu funktionierenden Gefährten zu machen." +"Erweitert die Robotertypen und ermöglicht es Spielern, kaputte Roboter zu " +"funktionierenden Gefährten zu machen." #: lang/json/MOD_INFO_from_json.py src/debug_menu.cpp msgid "Sleep Deprivation" @@ -44281,19 +44603,6 @@ msgstr "" "Art der Echoortung, um durch kniffliges Gelände bei hohen Geschwindigkeiten " "zu navigieren." -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "Verrauchter Bär" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "" -"Eine rauchende Hülle ist alles, was von diesem einst stolzen Bär übrigblieb." -" Seine schwarzen Augen sehen dich mit Bosheit an … und Hunger." - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "vernarbter Zombie" @@ -44524,7 +44833,7 @@ msgstr "C.H.U.D." #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "" "Der C.H.U.D. oder Cannibalistic Humanoid Underground Dweller – zu Deutsch " @@ -47480,10 +47789,10 @@ msgstr "" "Vorzugsbeute von Kojoten, Wölfen und Riesenmutantenspinnen." #: lang/json/MONSTER_from_json.py -msgid "labrador mutt" +msgid "Labrador mutt" msgstr "Labradormischling" -#. ~ Description for labrador mutt +#. ~ Description for Labrador mutt #: lang/json/MONSTER_from_json.py msgid "" "This once average Labrador mixed breed dog has clearly gone feral. You can " @@ -47496,17 +47805,17 @@ msgstr "" "wenn er die Gelegenheit dazu hat." #: lang/json/MONSTER_from_json.py -msgid "labrador puppy" +msgid "Labrador puppy" msgstr "Labradorwelpe" -#. ~ Description for labrador puppy +#. ~ Description for Labrador puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Labrador puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Eine süße schutzlose Labradorwelpe. Es ist viel sicherer, sie zu zähmen, als" -" ihre erwachsenen Artgenossen." +"Eine süße schutzlose Labradorwelpe. Kann viel sicherer als das erwachsene " +"Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py msgid "bulldog" @@ -47515,7 +47824,7 @@ msgstr "Bulldogge" #. ~ Description for bulldog #: lang/json/MONSTER_from_json.py msgid "" -"The American Bulldog is a hardy, well built dog, that seems suited for " +"The American bulldog is a hardy, well built dog, that seems suited for " "surviving the apocalypse." msgstr "" "Der American Bulldog ist ein abgehärteter gut gebauter Hund, der fähig " @@ -47528,11 +47837,11 @@ msgstr "Bulldoggenwelpe" #. ~ Description for bulldog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless American Bulldog puppy. Much safer to tame than " +"An adorable, defenseless American bulldog puppy. Much safer to tame than " "adult counterparts." msgstr "" -"Eine süße schutzlose Welpe der Hunderasse American Bulldog. Es ist viel " -"sicherer, sie zu zähmen, als ihre erwachsenen Artgenossen." +"Ein entzückender, wehrloser amerikanischer Bulldoggenwelpe. Kann viel " +"sicherer als das erwachsene Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py msgid "pit bull mix" @@ -47541,16 +47850,17 @@ msgstr "Pitbullmischling" #. ~ Description for pit bull mix #: lang/json/MONSTER_from_json.py msgid "" -"The oft-misunderstood Pit Bull is not actually a single breed but a label " -"for several such as American Pit Bull Terrier and American Staffordshire " -"Terrier. Average abilities and well-known for their 'lock jaw' which isn't " -"real but their incredible determination is." +"The oft-misunderstood pit bull is not actually a single breed but a label " +"for several such as the American pit bull terrier and American Staffordshire" +" terrier. Average abilities and well-known for their 'lock jaw' which isn't" +" real but their incredible determination is." msgstr "" -"Der oft missverstandene Bitpull ist tatsächlich keine einzelne Hunderasse, " -"sondern ein Überbegriff für mehrere Rassen wie American Pit Bull Terrier und" -" American Staffordshire Terrier. Haben durchschnittliche Fähigkeiten und " -"sind sehr bekannt für ihre »Kieferklemme«, die sie tatsächlich gar nicht " -"haben, dafür ist ihre unglaubliche Willenskraft real." +"Der oft missverstandene Pitbull ist tatsächlich keine einzelne Hunderasse, " +"sondern vielmehr der Oberbegriff für mehrere Rassen wie »American Pit Bull " +"Terrier« und »American Staffordshire Terrier«. Von eher durchschnittlichen " +"Fähigkeiten und bekannt für ihre »Kiefersperre«, die sie in Wirklichkeit gar" +" nicht haben, und welche im Grunde auf ihre unglaubliche Entschlossenheit " +"und Willenskraft zurückzuführen ist." #: lang/json/MONSTER_from_json.py msgid "pit bull puppy" @@ -47559,11 +47869,11 @@ msgstr "Pitbullwelpe" #. ~ Description for pit bull puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Pit Bull puppy. Much safer to tame than adult " +"An adorable, defenseless pit bull puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Eine süße schutzlose Pitbullwelpe. Es ist viel sicherer, sie zu zähmen, als " -"ihre erwachsenen Artgenossen." +"Ein entzückender, wehrloser Pitbullwelpe. Kann viel sicherer als das " +"erwachsene Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py msgid "beagle" @@ -47572,12 +47882,12 @@ msgstr "Beagle" #. ~ Description for beagle #: lang/json/MONSTER_from_json.py msgid "" -"An adorable Beagle that has managed to survive the apocalypse. Being agile " +"An adorable beagle that has managed to survive the apocalypse. Being agile " "and small, they are difficult to shoot at. Generally attacks in packs." msgstr "" -"Ein süßer Beagle, der es geschafft hat, die Apokalypse zu überleben. Sie " -"sind agil und klein, was es schwer macht, auf sie zu schießen. Greifen " -"üblicherweise in Rudeln an." +"Ein entzückender Beagle, der es geschafft hat, die Apokalypse zu überleben. " +"Als Hunderasse wendig und klein, was es schwer macht, auf sie zu schießen. " +"Beagle greifen in der Regel im Rudel an." #: lang/json/MONSTER_from_json.py msgid "beagle puppy" @@ -47586,11 +47896,11 @@ msgstr "Beaglewelpe" #. ~ Description for beagle puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Beagle puppy. Much safer to tame than adult " +"An adorable, defenseless beagle puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Eine süße schutzlose Beaglewelpe. Es ist viel sicherer, sie zu zähmen, als " -"ihre erwachsenen Artgenossen." +"Ein entzückender, wehrloser Beaglewelpe. Kann viel sicherer als das " +"erwachsene Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py msgid "border collie" @@ -47600,7 +47910,7 @@ msgstr "Border Collie" #: lang/json/MONSTER_from_json.py msgid "" "An athletic and hyperactive dog that loves to herd animals and jump, the " -"Border Collie is an agile attacker. Although they can be easy to train, " +"border collie is an agile attacker. Although they can be easy to train, " "they don't work well in packs." msgstr "" "Der Border Collie ist ein agiler Angreifer und ein athletischer und " @@ -47614,11 +47924,11 @@ msgstr "Border-Collie-Welpe" #. ~ Description for border collie puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Border Collie puppy. Much safer to tame than adult" +"An adorable, defenseless border collie puppy. Much safer to tame than adult" " counterparts." msgstr "" -"Eine süße schutzlose Welpe der Hunderasse Border Collie. Es ist viel " -"sicherer, sie zu zähmen, als ihre erwachsenen Artgenossen." +"Ein entzückender, wehrloser Welpe der Hunderasse Border Collie. Kann viel " +"sicherer als das erwachsene Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py msgid "boxer mastiff" @@ -47627,11 +47937,12 @@ msgstr "Boxerdogge" #. ~ Description for boxer mastiff #: lang/json/MONSTER_from_json.py msgid "" -"An ordinary breed full of affection, the Boxer Mastiff doesn't otherwise " +"An ordinary breed full of affection, the boxer mastiff doesn't otherwise " "stand out amongst other dogs with its capabilities." msgstr "" "Die Boxerdogge ist eine gewöhnliche Rasse voller Zuneigung, unterscheidet " -"sich jedoch hinsichtlich ihrer Fähigkeiten nicht von anderen Hunderassen." +"sich hinsichtlich ihrer Fähigkeiten jedoch nicht groß von anderen " +"Hunderassen." #: lang/json/MONSTER_from_json.py msgid "boxer puppy" @@ -47640,17 +47951,17 @@ msgstr "Boxerwelpe" #. ~ Description for boxer puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Boxer puppy. Much safer to tame than adult " +"An adorable, defenseless boxer puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Eine süße schutzlose Boxerwelpe. Es ist viel sicherer, sie zu zähmen, als " -"ihre erwachsenen Artgenossen." +"Ein entzückender, wehrloser Boxerwelpe. Kann viel sicherer als das " +"erwachsene Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py -msgid "chihuahua" +msgid "Chihuahua" msgstr "Chihuahua" -#. ~ Description for chihuahua +#. ~ Description for Chihuahua #: lang/json/MONSTER_from_json.py msgid "" "It's a tiny Chihuahua. How it has managed to survive is a miracle; although" @@ -47661,17 +47972,17 @@ msgstr "" "sein." #: lang/json/MONSTER_from_json.py -msgid "chihuahua puppy" +msgid "Chihuahua puppy" msgstr "Chihuahuawelpe" -#. ~ Description for chihuahua puppy +#. ~ Description for Chihuahua puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Chihuahua puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Eine süße schutzlose Chihuahuawelpe. Es ist viel sicherer, sie zu zähmen, " -"als ihre erwachsenen Artgenossen." +"Eine süße schutzlose Chihuahuawelpe. Kann viel sicherer als das erwachsene " +"Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py msgid "dachshund" @@ -47694,17 +48005,17 @@ msgstr "Dackelwelpe" #. ~ Description for dachshund puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Dachshund puppy. Much safer to tame than adult " +"An adorable, defenseless dachshund puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Eine süße schutzlose Dackelwelpe. Es ist viel sicherer, sie zu zähmen, als " -"ihre erwachsenen Artgenossen." +"Eine süße schutzlose Dackelwelpe. Kann viel sicherer als das erwachsene " +"Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py -msgid "german shepherd" +msgid "German shepherd" msgstr "Deutscher Schäferhund" -#. ~ Description for german shepherd +#. ~ Description for German shepherd #: lang/json/MONSTER_from_json.py msgid "" "The original K-9 breed. An easy to train and great attack dog that will " @@ -47715,23 +48026,23 @@ msgstr "" "allerdings sind sie nicht gut in Rudeln." #: lang/json/MONSTER_from_json.py -msgid "german shepherd puppy" -msgstr "Deusche-Schäferhunds-Welpe" +msgid "German shepherd puppy" +msgstr "Deutscher Schäferhundwelpe" -#. ~ Description for german shepherd puppy +#. ~ Description for German shepherd puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless German Shepherd puppy. Much safer to tame than " +"An adorable, defenseless German shepherd puppy. Much safer to tame than " "adult counterparts." msgstr "" -"Eine süße schutzlose Welpe eines Deutschen Schäferhundes. Es ist viel " -"sicherer, sie zu zähmen, als ihre erwachsenen Artgenossen." +"Ein entzückender, wehrloser Welpe eines Deutschen Schäferhundes. Kann viel " +"sicherer als das erwachsene Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py -msgid "great pyrenees" +msgid "Great Pyrenees" msgstr "Pyrenäenberghund" -#. ~ Description for great pyrenees +#. ~ Description for Great Pyrenees #: lang/json/MONSTER_from_json.py msgid "" "A large and powerful breed, the Great Pyrenees has a beautiful, thick white " @@ -47744,17 +48055,17 @@ msgstr "" "dahinschlurfenden Horden aus Untoten schützen." #: lang/json/MONSTER_from_json.py -msgid "great pyrenees puppy" +msgid "Great Pyrenees puppy" msgstr "Pyrenäenberghundswelpe" -#. ~ Description for great pyrenees puppy +#. ~ Description for Great Pyrenees puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Great Pyrenees puppy. Much safer to tame than " "adult counterparts." msgstr "" -"Eine süße schutzlose Pyrenäenberghundswelpe. Es ist viel sicherer, sie zu " -"zähmen, als ihre erwachsenen Artgenossen." +"Eine süße schutzlose Pyrenäenberghundswelpe. Kann viel sicherer als das " +"erwachsene Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py msgid "rottweiler" @@ -47763,13 +48074,13 @@ msgstr "Rottweiler" #. ~ Description for rottweiler #: lang/json/MONSTER_from_json.py msgid "" -"Terrifying breed to face feral, as the Rottweiler breed is descended from " +"Terrifying breed to face feral, as the rottweiler breed is descended from " "Roman legion mastiffs. Robust and vicious, quite capable of mauling a human" " to death." msgstr "" -"Eine angsteinflößende Rasse, wenn man einem wilden Exemplar begegnet. Die " +"Eine wahrhaft furchterregende Rasse, insbesondere die wilden Exemplare. Die " "Rottweilerrrasse stammt von Doggen römischer Legionen ab. Robust und " -"bösartig, sehr fähig, einen Menschen zu Tode zu zerfleischen." +"bösartig, sehr gut in der Lage, einen Menschen zu Tode zu beißen." #: lang/json/MONSTER_from_json.py msgid "rottweiler puppy" @@ -47778,11 +48089,11 @@ msgstr "Rottweilerwelpe" #. ~ Description for rottweiler puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Rottweiler puppy. Much safer to tame than adult " +"An adorable, defenseless rottweiler puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Eine süße schutzlose Rottweilerwelpe. Es ist viel sicherer, sie zu zähmen, " -"als ihre erwachsenen Artgenossen." +"Ein entzückender, wehrloser Rottweilerwelpe. Kann viel sicherer als das " +"erwachsene Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py msgid "cattle dog" @@ -47791,12 +48102,12 @@ msgstr "Treibhund" #. ~ Description for cattle dog #: lang/json/MONSTER_from_json.py msgid "" -"An agile and sturdy breed that is welcome on any farm, the Australian Cattle" -" Dog is adept at leaping fences and herding livestock." +"An agile and sturdy breed that is welcome on any farm, the Australian cattle" +" dog is adept at leaping fences and herding livestock." msgstr "" -"Eine agile und widerstandsfähige Rasse, die auf jedem Bauernhof willkommen " -"ist. Der Australische Treibhund ist erfahren im Überspringen von Zäunen und " -"dem Hüten von Vieh." +"Eine agile und robuste Hunderasse, die auf jedem Bauernhof willkommen ist. " +"Der Australische Treibhund ist erfahren im Überspringen von Zäunen und ein " +"hervorragender Viehhüter." #: lang/json/MONSTER_from_json.py msgid "cattle dog puppy" @@ -47805,11 +48116,11 @@ msgstr "Treibhundswelpe" #. ~ Description for cattle dog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Australian Cattle Dog puppy. Much safer to tame " +"An adorable, defenseless Australian cattle dog puppy. Much safer to tame " "than adult counterparts." msgstr "" -"Eine süße schutzlose Welpe der Hunderasse Australischer Treibhund. Es ist " -"viel sicherer, sie zu zähmen, als ihre erwachsenen Artgenossen." +"Ein entzückender, wehrloser Welpe der Hunderasse Australischer Treibhund. " +"Kann viel sicherer als das erwachsene Gegenstück gezähmt werden." #: lang/json/MONSTER_from_json.py msgid "fox" @@ -49116,7 +49427,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "mr skeltal" -msgstr "" +msgstr "Mr. Skeltal" #. ~ Description for mr skeltal #: lang/json/MONSTER_from_json.py @@ -49125,15 +49436,34 @@ msgid "" "the bone. In its bony hand, it holds a pristine trumpet, unmarred by the end" " of the world." msgstr "" +"Fleischlos und von allen Organen befreit lässt dich dieses schreitende " +"Skelett bis auf die Knochen erschaudern. In seiner bleichen Hand hält es " +"eine makellose Trompete, die ungeachtet des Endes der Welt noch völlig " +"unbeschädigt ist." #: lang/json/MONSTER_from_json.py msgid "minion of skeltal" -msgstr "" +msgstr "Diener des Skeltal" #. ~ Description for minion of skeltal #: lang/json/MONSTER_from_json.py msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "" +"Ein niederes Skelett, auferstanden durch das verzweifelte Schallen einer " +"Trompete." + +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "Verrauchter Bär" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "" +"Eine rauchende Hülle ist alles, was von diesem einst stolzen Bär übrigblieb." +" Seine schwarzen Augen sehen dich mit Bosheit an … und Hunger." #: lang/json/MONSTER_from_json.py msgid "Compsognathus" @@ -49340,8 +49670,8 @@ msgstr "" #: lang/json/MONSTER_from_json.py lang/json/TOOL_from_json.py msgid "disarmed defense turret" msgid_plural "disarmed defense turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "entwaffneter Verteidigungsgeschützturm" +msgstr[1] "entwaffnete Verteidigungsgeschütztürme" #. ~ Description for disarmed defense turret #: lang/json/MONSTER_from_json.py @@ -49355,8 +49685,8 @@ msgstr "" #: lang/json/MONSTER_from_json.py lang/json/TOOL_from_json.py msgid "disarmed military turret" msgid_plural "disarmed military turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "entwaffneter Militärgeschützturm" +msgstr[1] "entwaffnete Militärgeschütztürme" #. ~ Description for disarmed military turret #: lang/json/MONSTER_from_json.py @@ -49382,7 +49712,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "9mm turret" -msgstr "" +msgstr "9mm-Geschützturm" #. ~ Description for 9mm turret #: lang/json/MONSTER_from_json.py @@ -49395,7 +49725,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "shotgun turret" -msgstr "" +msgstr "Flintengeschützturm" #. ~ Description for shotgun turret #: lang/json/MONSTER_from_json.py @@ -49408,7 +49738,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "riot control turret" -msgstr "" +msgstr "Antikrawallgeschützturm" #. ~ Description for riot control turret #: lang/json/MONSTER_from_json.py @@ -49430,7 +49760,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "5.56mm turret" -msgstr "" +msgstr "5.56mm-Geschützturm" #. ~ Description for 5.56mm turret #: lang/json/MONSTER_from_json.py @@ -49443,7 +49773,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "7.62mm turret" -msgstr "" +msgstr "7.62mm-Geschützturm" #. ~ Description for 7.62mm turret #: lang/json/MONSTER_from_json.py @@ -49469,7 +49799,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "8x40mm turret" -msgstr "" +msgstr "8x40mm-Geschützturm" #. ~ Description for 8x40mm turret #: lang/json/MONSTER_from_json.py @@ -49495,7 +49825,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "40mm grenade turret" -msgstr "" +msgstr "40mm-Granaten-Geschützturm" #. ~ Description for 40mm grenade turret #: lang/json/MONSTER_from_json.py @@ -49530,7 +49860,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "acid turret" -msgstr "" +msgstr "Säure-Geschützturm" #. ~ Description for acid turret #: lang/json/MONSTER_from_json.py @@ -49556,7 +49886,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "railgun turret" -msgstr "" +msgstr "Schienengewehrgeschützturm" #. ~ Description for railgun turret #: lang/json/MONSTER_from_json.py @@ -49581,7 +49911,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "EMP turret" -msgstr "" +msgstr "EMP-Geschützturm" #. ~ Description for EMP turret #: lang/json/MONSTER_from_json.py @@ -49838,7 +50168,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "watercannon turret" -msgstr "" +msgstr "Wasserwerfer-Geschützturm" #. ~ Description for watercannon turret #: lang/json/MONSTER_from_json.py @@ -50088,7 +50418,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "military robot" -msgstr "" +msgstr "Militärroboter" #. ~ Description for military robot #: lang/json/MONSTER_from_json.py @@ -50163,7 +50493,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "advanced robot" -msgstr "" +msgstr "fortgeschrittener Roboter" #. ~ Description for advanced robot #: lang/json/MONSTER_from_json.py @@ -50171,6 +50501,9 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is armed with a powerful laser-emitter." msgstr "" +"Ein fortschrittlicher Roboter, der aufgrund seines internen Fusionskerns " +"noch funktioniert. Dieses Modell ist mit einem leistungsstarken Laser-" +"Emitter bewaffnet." #: lang/json/MONSTER_from_json.py msgid "laser-emitting robot" @@ -50182,6 +50515,9 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is furnished with a powerful laser-emitter." msgstr "" +"Ein fortschrittlicher Roboter, der aufgrund seines internen Fusionskerns " +"noch funktioniert. Dieses Modell ist mit einem leistungsstarken Laser-" +"Emitter ausgestattet." #: lang/json/MONSTER_from_json.py msgid "plasma-ejecting robot" @@ -50193,10 +50529,13 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is furnished with a powerful plasma-ejector." msgstr "" +"Ein fortschrittlicher Roboter, der aufgrund seines internen Fusionskerns " +"noch funktioniert. Dieses Modell ist mit einem leistungsstarken Plasma-" +"Werfer ausgestattet." #: lang/json/MONSTER_from_json.py msgid "railgun robot" -msgstr "" +msgstr "Schienengewehrroboter" #. ~ Description for railgun robot #: lang/json/MONSTER_from_json.py @@ -50204,6 +50543,9 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is furnished with a powerful railgun." msgstr "" +"Ein fortschrittlicher Roboter, der aufgrund seines internen Fusionskerns " +"noch funktioniert. Dieses Modell ist mit einem leistungsstarken " +"Schienengewehr ausgestattet." #: lang/json/MONSTER_from_json.py msgid "electro-casting robot" @@ -50215,6 +50557,9 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is furnished with a powerful electro-caster." msgstr "" +"Ein fortschrittlicher Roboter, der aufgrund seines internen Fusionskerns " +"noch funktioniert. Dieses Modell ist mit einem leistungsstarken Elektro-" +"Werfer ausgestattet." #: lang/json/MONSTER_from_json.py msgid "EMP-projecting robot" @@ -50226,6 +50571,9 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is furnished with a powerful EMP-projector." msgstr "" +"Ein fortschrittlicher Roboter, der aufgrund seines internen Fusionskerns " +"noch funktioniert. Dieses Modell ist mit einem leistungsstarken EMP-" +"Projektoren ausgestattet." #: lang/json/MONSTER_from_json.py msgid "junkyard cowboy" @@ -50702,7 +51050,7 @@ msgid "" " it to turn it on." msgstr "" "Dies ist ein Sockenpaar mit eingebauten batteriebetriebenen Heizelementen. " -"Benutze sie, um sie einzuschalten." +"Benutze es, um die Heizelemente einzuschalten." #: lang/json/TOOL_ARMOR_from_json.py msgid "pair of thermal electric socks (on)" @@ -50734,8 +51082,8 @@ msgid "" "them off." msgstr "" "Dies ist ein Sockenpaar mit eingebauten batteriebetriebenen Heizelementen. " -"Sie sind momentan eingeschaltet und verbrauchen beständig die Batterien. " -"Benutze sie, um sie auszuschalten." +"Es ist momentan eingeschaltet und verbrauchet beständig die Batterien. " +"Benutze es, um die Heizelemente auszuschalten." #: lang/json/TOOL_ARMOR_from_json.py msgid "thermal electric suit" @@ -50749,9 +51097,9 @@ msgid "" "This is a full-body suit of thin thermal underwear equipped with internal " "battery-powered heating elements. Use it to turn it on." msgstr "" -"Dies ist ein Ganzkörperanzug aus dünner Thermalunterwäsche, die mit " +"Dies ist ein Ganzkörperanzug aus dünner Thermalunterwäsche, der mit " "eingebauten batteriebetriebenen Heizelementen ausgestattet ist. Benutze " -"diesen Gegenstand, um sie einzuschalten." +"diesen Gegenstand, um die Heizelemente einzuschalten." #: lang/json/TOOL_ARMOR_from_json.py msgid "thermal electric suit (on)" @@ -50766,10 +51114,10 @@ msgid "" "battery-powered heating elements. It is currently on, and continually " "draining batteries. Use it to turn it off." msgstr "" -"Dies ist ein Ganzkörperanzug aus dünner Thermalunterwäsche, die mit " -"eingebauten batteriebetriebenen Heizelementen ausgestattet ist. Sie sind " -"momentan eingeschaltet und verbrauchen beständig die Batterien. Benutze " -"diesen Gegenstand, um sie auszuschalten." +"Dies ist ein Ganzkörperanzug aus dünner Thermalunterwäsche, der mit " +"eingebauten batteriebetriebenen Heizelementen ausgestattet ist. Er ist " +"momentan eingeschaltet und verbraucht beständig die Batterien. Benutze " +"diesen Gegenstand, um die Heizelemente auszuschalten." #: lang/json/TOOL_ARMOR_from_json.py msgid "pair of thermal electric gloves" @@ -50816,7 +51164,7 @@ msgid "" "Use it to turn it on." msgstr "" "Dies ist eine eng anliegende Stoffmaske mit eingebauten batteriebetriebenen " -"Heizelementen. Benutze diesen Gegenstand, um sie einzuschalten." +"Heizelementen. Benutze diesen Gegenstand, um die Heizelemente einzuschalten." #: lang/json/TOOL_ARMOR_from_json.py msgid "thermal electric balaclava (on)" @@ -50832,8 +51180,8 @@ msgid "" "it off." msgstr "" "Dies ist eine eng anliegende Stoffmaske mit eingebauten batteriebetriebenen " -"Heizelementen. Sie sind momentan eingeschaltet und verbrauchen beständig die" -" Batterien. Benutze diesen Gegenstand, um sie auszuschalten." +"Heizelementen. Sie ist momentan eingeschaltet und verbraucht beständig die " +"Batterien. Benutze diesen Gegenstand, um die Heizelemente auszuschalten." #: lang/json/TOOL_ARMOR_from_json.py msgid "pair of binoculars" @@ -51151,12 +51499,12 @@ msgstr[1] "große Überlebendenfeuermasken" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from" -" heat, smoke, teargas, and shrapnel. It must be prepared before use." +" heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" -"Eine selbstgebaute, nomexisolierte Gasmaske, welche das Gesicht und die " -"Augen schützt, unabhängig von deinem Mutationszustand. Sie bietet " -"ausgezeichneten Schutz vor Hitze, Rauch, Tränengas und Schrapnell. Sie muss " -"vor der Benutzung vorbereitet werden." +"Eine selbstgebaute, nomex-isolierte Gasmaske, welche - unabhängig von deinem" +" Mutationszustand - Gesicht und die Augen schützt. Sie bietet " +"ausgezeichneten Schutz vor Hitze, Rauch, Tränengas und Schrapnellen. Sie " +"muss vor der Benutzung vorbereitet werden." #: lang/json/TOOL_ARMOR_from_json.py msgid "firefighter PBA mask" @@ -51908,7 +52256,7 @@ msgid "" msgstr "" "Dieser Anzug aus dünner Thermalunterwäsche bedeckt dich von Kopf bis Fuß und" " ist mit eingebauten batteriebetriebenen Heizelementen ausgestattet. Benutze" -" diesen Gegenstand, um sie einzuschalten." +" diesen Gegenstand, um die Heizelemente einzuschalten." #: lang/json/TOOL_ARMOR_from_json.py msgid "thermal electric outfit (on)" @@ -51924,9 +52272,9 @@ msgid "" "on, and continually draining batteries. Use it to turn it off." msgstr "" "Dieser Anzug aus dünner Thermalunterwäsche bedeckt dich von Kopf bis Fuß und" -" ist mit eingebauten batteriebetriebenen Heizelementen ausgestattet. Sie " -"sind momentan eingeschaltet und verbrauchen beständig die Batterien. Benutze" -" diesen Gegenstand, um sie auszuschalten." +" ist mit eingebauten batteriebetriebenen Heizelementen ausgestattet. Er ist " +"momentan eingeschaltet und verbraucht beständig die Batterien. Benutze " +"diesen Gegenstand, um die Heizelemente auszuschalten." #: lang/json/TOOL_ARMOR_from_json.py msgid "ski mask" @@ -52181,6 +52529,46 @@ msgstr "" "Ein ausgeklapptes Feld aus tragbaren Quantensolarmodulen, bereit, etwas " "Strom in ein aktives Kabelladesystem zu befördern." +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "Spezialeinheitshelm" +msgstr[1] "Spezialeinheitshelme" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "Du ziehst dein Visier hoch." + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "" +"Ein Helm mit einem Plastikschirm bzw. Schutzschild, der dein gesamtes " +"Gesicht bedeckt. Aktiviere den Helm, um den Gesichtsschild anzuheben." + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "Spezialeinheitshelm (Visier oben)" +msgstr[1] "Spezialeinheitshelme (Visier oben)" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "Du senkst dein Visier." + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." +msgstr "" +"Ein Spezialeinheitshelm mit einem Plastikschutzschild, welcher momentan " +"geöffnet ist. Aktiviere den Helm, um den Schild abzusenken." + #: lang/json/TOOL_from_json.py msgid "integrated toolset" msgid_plural "integrated toolsets" @@ -53398,7 +53786,7 @@ msgid "" "This is military grade RDX composition explosive. A label reads: \"Highly " "explosive, use with extreme caution!\" It comes with a small timer." msgstr "" -"Dies ist ein Strengstoff der Militärklasse und aus einer Hexogen-" +"Dies ist ein Strengstoff in Militärqualität und aus einer Hexogen-" "Komposition. Er ist beschriftet mit: »Hochexplosiv, mit extremer Vorsicht zu" " benutzen!«. Es hat einen kleinen Timer." @@ -53424,7 +53812,7 @@ msgid "" "explosive, use with extreme caution!\" It comes with a small timer, which is" " currently ticking down." msgstr "" -"Dies ist ein Strengstoff der Militärklasse und aus einer Hexogen-" +"Dies ist ein Strengstoff in Militärqualität und aus einer Hexogen-" "Komposition. Er ist beschriftet mit: »Hochexplosiv, mit extremer Vorsicht zu" " benutzen!«. Es hat einen kleinen Timer, der gerade abläuft." @@ -57936,7 +58324,7 @@ msgstr "" " bietet eine sofortige Abhilfe für Asthmaanfälle und Rauchinhalationen und " "kann einen kurzen Energieschub bieten." -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" msgstr[0] "Lötkolben" @@ -59248,8 +59636,8 @@ msgid "" "of interest." msgstr "" "Die ist ein Flugschreiber, der vermutlich aus irgendeinem Wrack eines " -"Militärvehikels entnommen wurde. Falls du ein System findest, um dies zu " -"analysieren, könntest du etwas von Interesse finden." +"Militärvehikels entnommen wurde. Falls du ein System findest, um ihn zu " +"analysieren, könntest du vielleicht etwas von Interesse finden." #: lang/json/TOOL_from_json.py lang/json/vehicle_part_from_json.py msgid "minireactor" @@ -59907,14 +60295,6 @@ msgstr "" "Scheint eine Art des Genetic Lifeform and Disk Operating Systems zu sein, " "angeschlossen an eine Kartoffel." -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "" - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" @@ -60017,7 +60397,7 @@ msgstr "Fehler. Keine Waffensysteme gefunden." #. ~ Description for disarmed defense turret #: lang/json/TOOL_from_json.py msgid "An automated defense turret. It lacks an intergrated weapon." -msgstr "" +msgstr "Ein automatisierter Verteidigungsgeschützturm ohne integrierte Waffe." #. ~ Description for disarmed military turret #: lang/json/TOOL_from_json.py @@ -60032,8 +60412,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive 9mm defense turret" msgid_plural "inactive 9mm defense turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver 9mm-Verteidigungsgeschützturm" +msgstr[1] "inaktive 9mm-Verteidigungsgeschütztürme" #. ~ Description for inactive 9mm defense turret #: lang/json/TOOL_from_json.py @@ -60047,8 +60427,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive shotgun defense turret" msgid_plural "inactive shotgun defense turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver Flinten-Verteidigungsgeschützturm" +msgstr[1] "inaktive Flinten-Verteidigungsgeschütztürme" #. ~ Description for inactive shotgun defense turret #: lang/json/TOOL_from_json.py @@ -60062,8 +60442,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive riot control turret" msgid_plural "inactive riot control turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver Antikrawallgeschützturm" +msgstr[1] "inaktive Antikrawallgeschütztürme" #. ~ Description for inactive riot control turret #: lang/json/TOOL_from_json.py @@ -60088,8 +60468,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive 5.56mm military turret" msgid_plural "inactive 5.56mm military turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver 5.56mm-Militärgeschützturm" +msgstr[1] "inaktive 5.56mm-Militärgeschütztürme" #. ~ Description for inactive 5.56mm military turret #: lang/json/TOOL_from_json.py @@ -60104,8 +60484,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive 7.62mm military turret" msgid_plural "inactive 7.62mm military turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktive 7.62mm-Militärgeschützturm" +msgstr[1] "inaktive 7.62mm-Militärgeschütztürme" #. ~ Description for inactive 7.62mm military turret #: lang/json/TOOL_from_json.py @@ -60120,8 +60500,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive 50 caliber military turret" msgid_plural "inactive 50 caliber military turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver Kaliber-.50-Militärgeschützturm" +msgstr[1] "inaktive Kaliber-.50-Militärgeschütztürme" #. ~ Description for inactive 50 caliber military turret #: lang/json/TOOL_from_json.py @@ -60152,8 +60532,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive military 8x40mm turret" msgid_plural "inactive military 8x40mm turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver militärischer 8x40mm-Geschützturm" +msgstr[1] "inaktive militärische 8x40mm-Geschütztürme" #. ~ Description for inactive military 8x40mm turret #: lang/json/TOOL_from_json.py @@ -60168,8 +60548,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive military 40mm grenade turret" msgid_plural "inactive military 40mm grenade turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver militärischer 40mm-Granaten-Geschützturm" +msgstr[1] "inaktive militärische 40mm-Granaten-Geschütztürme" #. ~ Description for inactive military 40mm grenade turret #: lang/json/TOOL_from_json.py @@ -60184,8 +60564,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive military flamethrower turret" msgid_plural "inactive military flamethrower turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver militärischer Flammenwerfer-Geschützturm" +msgstr[1] "inaktive militärische Flammenwerfer-Geschütztürme" #. ~ Description for inactive military flamethrower turret #: lang/json/TOOL_from_json.py @@ -60213,8 +60593,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive advanced plasma turret" msgid_plural "inactive advanced plasma turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver fortschrittlicher Plasma-Geschützturm" +msgstr[1] "inaktive fortschrittliche Plasma-Geschütztürme" #. ~ Description for inactive advanced plasma turret #: lang/json/TOOL_from_json.py @@ -60243,8 +60623,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive advanced acid turret" msgid_plural "inactive advanced acid turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver fortschrittlicher Säure-Geschützturm" +msgstr[1] "inaktive fortschrittliche Säure-Geschütztürme" #. ~ Description for inactive advanced acid turret #: lang/json/TOOL_from_json.py @@ -60257,8 +60637,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive advanced EMP turret" msgid_plural "inactive advanced EMP turrets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver fortschrittlicher EMP-Geschützturm" +msgstr[1] "inaktive fortschrittliche EMP-Geschütztürme" #. ~ Description for inactive advanced EMP turret #: lang/json/TOOL_from_json.py @@ -60769,8 +61149,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive eyebot" msgid_plural "inactive eyebots" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver Schauboter" +msgstr[1] "inaktive Schauboter" #: lang/json/TOOL_from_json.py msgid "inactive floating heater" @@ -60931,8 +61311,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive skitterbot" msgid_plural "inactive skitterbots" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver Scheuchboter" +msgstr[1] "inaktive Scheuchboter" #: lang/json/TOOL_from_json.py msgid "inactive rat snatcher" @@ -61044,8 +61424,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive military robot" msgid_plural "inactive military robots" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver Militärroboter" +msgstr[1] "inaktive Militärroboter" #: lang/json/TOOL_from_json.py msgid "inactive robo-gaurdian" @@ -61106,8 +61486,8 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive advanced robot" msgid_plural "inactive advanced robots" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "inaktiver fortgeschrittener Roboter" +msgstr[1] "inaktive fortgeschrittene Roboter" #: lang/json/TOOL_from_json.py msgid "inactive glittering lady" @@ -61237,6 +61617,19 @@ msgid_plural "autonomous surgical razors" msgstr[0] "autonome Chirurgieklingen" msgstr[1] "autonome Chirurgieklingen" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While" +" activated, they will continously drain power to make automated precise cuts" +" but you will be unable to wield anything." +msgstr "" +"In den Fingern des Benutzers wurde ein System chirurgischer Klingen " +"eingebaut. Während sie aktiviert sind, werden sie stätig Strom verbrauchen, " +"um automatisierte präzise Schnitte vorzunehmen, aber du wirst nicht in der " +"Lage sein, irgendetwas zu halten." + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -63136,7 +63529,7 @@ msgstr "" #: lang/json/bionic_from_json.py msgid "Leaky Bionic" -msgstr "Undichtes Bionik" +msgstr "undichte Bionik" #. ~ Description for Leaky Bionic #: lang/json/bionic_from_json.py @@ -63602,7 +63995,7 @@ msgid "" "place of many tools when crafting." msgstr "" "In deinen Händen ist ein vollständiges Instrumentarium chirurgisch eingebaut" -" – Schraubenzieher, Hammer, Schraubenschlüssel, und Heizelemente. Du kannst " +" - Schraubenzieher, Hammer, Schraubenschlüssel, und Heizelemente. Du kannst " "sie anstelle zahlreicher Werkzeuge beim Fertigen verwenden." #: lang/json/bionic_from_json.py @@ -63650,6 +64043,10 @@ msgid "" "to why you don't opt for the Autodoc's 'Cyborg Identity Package.' A " "remodulator unit jammed down your throat has given you a creepy robot voice." msgstr "" +"Du wirst wahrscheinlich den Rest deiner Tage als lebendiges Beispiel dafür " +"dienen, warum man sich nicht für das »Cyborg Identity Package« von Autodoc " +"entscheiden sollte. Eine Remodulatoreinheit hat sich in deinem Hals " +"verklemmt und hat dir eine gruselige Roboterstimme verliehen." #: lang/json/bionic_from_json.py msgid "Internal Chronometer" @@ -63715,6 +64112,12 @@ msgid "" "of impaired movement." msgstr "" +#: lang/json/bionic_from_json.py lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "Ionenüberlastungserzeuger" +msgstr[1] "Ionenüberlastungserzeuger" + #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" msgstr "Synaptisches Regenerationssystem" @@ -63733,13 +64136,6 @@ msgstr "" "leiden. Solltest du bereits an den Folgen von Schlafentzug leiden, wird er " "deine Schlaf-Erholungsrate erhöhen." -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "Ionenüberlastungserzeuger" -msgstr[1] "Ionenüberlastungserzeuger" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "Autonome Chirurgieklingen" @@ -64664,6 +65060,8 @@ msgstr "Dir ist warm." #: lang/json/dream_from_json.py msgid "You dream of a massive block of cheese bigger than you." msgstr "" +"Du träumst von einem massiven Käseblock. Einem Block, der viel größer ist " +"als du." #: lang/json/dream_from_json.py msgid "You dream of being cozy in a dark place." @@ -64849,8 +65247,9 @@ msgid "" "You dream of having that success you knew you deserved, back before all " "this." msgstr "" -"Du träumst darüber, den Erfolg, von dem du weißt, dass du ihn verdient " -"hättest, zu haben; und zwar bevor all dies geschah." +"Du träumst vom Erfolg, von dem du immer geglaubt hast, dass du ihn verdient " +"hättest; bevor all dies geschah und die Welt sich in einen Trümmerhaufen " +"verwandelte." #: lang/json/dream_from_json.py msgid "Your dream-self looks competent and in control." @@ -65107,8 +65506,8 @@ msgstr "" #: lang/json/dream_from_json.py msgid "Your success in restoring civilization was only a dream. For now." msgstr "" -"Dein Erfolg bei dem Wiederaufbau der Gesellschaft war nur ein Traum. Fürs " -"Erste." +"Dein Erfolg bei der Wiederherstellung der Zivilisation war nur ein Traum. " +"Zumindest für den Augenblick..." #: lang/json/dream_from_json.py msgid "NO! You will not allow this corruption to prevail!" @@ -65743,8 +66142,8 @@ msgid "" "You're short of breath. Running and fighting will be difficult until you " "recover." msgstr "" -"Deine Luft ist knapp. Laufen und kämpfen wird schwierig sein, bis du dich " -"davon erholst." +"Du bist recht kurzatmig. Laufen und Kämpfen ist schwieriger, bis du dich von" +" der Kurzatmigkeit erholt hast." #. ~ Apply message for effect(s) 'Winded'. #: lang/json/effects_from_json.py @@ -65923,7 +66322,7 @@ msgstr "Deine Ohren klingeln!" #. ~ Remove message for effect(s) 'Impaired hearing, Ringing ears, Deaf'. #: lang/json/effects_from_json.py msgid "You can hear again!" -msgstr "Du kannst wieder hören!" +msgstr "Du kannst jetzt wieder hören!" #: lang/json/effects_from_json.py src/bionics.cpp msgid "Stung" @@ -66054,12 +66453,12 @@ msgstr "Vom Laser anvisiert" msgid "A laser sight is targeting you!" msgstr "Ein Laservisier zielt auf dich!" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" msgstr "Rauch" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "Du hast einen Schwall von dickem Rauch inhaliert." @@ -66422,7 +66821,7 @@ msgstr "Kühl" #: lang/json/effects_from_json.py #, python-format msgid "Your %s is exposed to the cold." -msgstr "Dein %s ist der Kälte ausgesetzt." +msgstr "Dein Körperteil »%s« ist der Kälte ausgesetzt." #. ~ Speed name of effect(s) 'Chilly, Cold, Freezing'. #: lang/json/effects_from_json.py lang/json/morale_type_from_json.py @@ -66433,7 +66832,7 @@ msgstr "Kalt" #: lang/json/effects_from_json.py #, python-format msgid "Your %s is very exposed to the cold." -msgstr "Dein %s ist der Kälte extrem ausgesetzt." +msgstr "Dein Körperteil »%s« ist extremer Kälte ausgesetzt." #: lang/json/effects_from_json.py msgid "Freezing" @@ -66443,7 +66842,7 @@ msgstr "Frierend" #: lang/json/effects_from_json.py #, python-format msgid "Your %s is dangerously cold!" -msgstr "Dein %s ist gefährlich kalt!" +msgstr "Dein Körperteil »%s« ist gefährlich kalt!" #: lang/json/effects_from_json.py msgid "Warm" @@ -66453,7 +66852,7 @@ msgstr "Warm" #: lang/json/effects_from_json.py #, python-format msgid "Your %s feels warm." -msgstr "Dein %s fühlt sich warm an." +msgstr "Dein Körperteil »%s« fühlt sich warm an." #. ~ Speed name of effect(s) 'Warm, Hot, Scorching'. #: lang/json/effects_from_json.py lang/json/morale_type_from_json.py @@ -66464,7 +66863,7 @@ msgstr "Heiß" #: lang/json/effects_from_json.py #, python-format msgid "Your %s is sweating from the heat." -msgstr "Dein %s schwitzt von der Hitze." +msgstr "Dein Körperteil »%s« schwitzt vor Hitze." #: lang/json/effects_from_json.py msgid "Scorching" @@ -66474,7 +66873,7 @@ msgstr "Glutheiß" #: lang/json/effects_from_json.py #, python-format msgid "Your %s is sweating profusely!" -msgstr "Dein %s schwitzt beträchtlich!" +msgstr "Dein Körperteil »%s« schwitzt beträchtlich!" #: lang/json/effects_from_json.py msgid "Frostnip" @@ -66484,7 +66883,8 @@ msgstr "Fröstelnd" #: lang/json/effects_from_json.py #, python-format msgid "Your %s is frostnipped and has gone numb." -msgstr "Dein %s ist frostgeschädigt und ist taub geworden." +msgstr "" +"Dein Körperteil »%s« wurde vom Frost geschädigt und ist nun taub geworden." #. ~ Speed name of effect(s) 'Frostnip, Frostbite'. #: lang/json/effects_from_json.py @@ -66496,7 +66896,8 @@ msgstr "Frostbeule" #, python-format msgid "Your %s is frostbitten! Its tissues are frozen from the cold!" msgstr "" -"Dein %s ist durch Frost geschädigt! Die Gewebe sind von der Kälte erfroren." +"Dein Körperteil »%s« wurde stark vom Frost geschädigt! Das Gewebe ist durch " +"die Kälte regelrecht eingefroren." #: lang/json/effects_from_json.py msgid "Defrosting" @@ -66507,8 +66908,7 @@ msgstr "Abtauen" #, python-format msgid "Your %s is starting to feel the damage cold has wrought." msgstr "" -"Dein %s beginnt damit, den Schaden, den die Kälte angerichtet hat, zu " -"fühlen." +"Dein Körperteil »%s« spürt den Schaden, den die Kälte angerichtet hat." #: lang/json/effects_from_json.py msgid "Blisters" @@ -66963,11 +67363,11 @@ msgstr "Entspannungsgas" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" -"You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort." +"You are thoroughly relaxed and don't feel like moving. Fighting? Too much " +"effort." msgstr "" -"Stärke −3; Geschicklichkeit −3; Intelligenz −2; Wahrnehmung −4\n" -"Du bist völlig entspannt und hast keinen Drang, dich zu bewegen. Kämfpen? Zu anstrengend." +"Du bist völlig entspannt und verspürst keinerlei Drang, dich zu bewegen. " +"Kämpfen? Viel zu anstrengend." #. ~ Apply message for effect(s) 'Relaxation gas'. #: lang/json/effects_from_json.py @@ -67219,7 +67619,7 @@ msgstr "Einfache Wunden werden für dich ein größeres Problem sein als zuvor." #. ~ Remove message for effect(s) 'B12 deficiency, Slow healing, No healing'. #: lang/json/effects_from_json.py msgid "Your wounds now heal normally." -msgstr "Deine Wunden heilen sich wieder normal." +msgstr "Deine Wunden heilen nun wieder in »normaler« Geschwindigkeit." #. ~ Decay message for effect(s) 'B12 deficiency, Slow healing, No healing'. #: lang/json/effects_from_json.py @@ -67321,11 +67721,12 @@ msgstr "Fast vollständig erholt" msgid "This damaged limb is slowly regaining its functions." msgstr "Deine beschädigte Gliedmaße erhält langsam wieder ihre Fähgkeiten." -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" msgstr "Deaktiviert" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "" @@ -70219,8 +70620,7 @@ msgstr "" "Wiederverwendung intakt zu bleiben." #: lang/json/gun_from_json.py lang/json/gun_from_json.py -#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py -#: lang/json/gunmod_from_json.py src/item.cpp +#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" msgid "pistol" msgstr "Pistole" @@ -71216,10 +71616,10 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" "Die Kurzgewehr-L523-Plattform von Leadworks LLC verwendet die " "allgegenwärtige 5.56-Patrone in mehreren Anwendungsgebieten und wurde so " @@ -72092,7 +72492,7 @@ msgstr[1] "LeMat-Revolver" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those" " who wander the \"Earth-that-was\"." msgstr "" @@ -74806,8 +75206,8 @@ msgstr[1] "" #: lang/json/gun_from_json.py msgid "integral 50 caliber machinegun" msgid_plural "integral 50 caliber machineguns" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integriertes Kaliber-.50-Maschinengewehr" +msgstr[1] "integrierte Kaliber-.50-Maschinengewehre" #: lang/json/gun_from_json.py msgid "integral needle gun" @@ -74818,20 +75218,20 @@ msgstr[1] "" #: lang/json/gun_from_json.py msgid "integral 8mm firearm" msgid_plural "integral 8mm firearms" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierte 8mm-Feuerwaffe" +msgstr[1] "integrierte 8mm-Feuerwaffen" #: lang/json/gun_from_json.py msgid "integral laser emitter" msgid_plural "integral laser emitters" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integrierter Laser-Emitter" +msgstr[1] "integrierte Laser-Emitter" #: lang/json/gun_from_json.py msgid "integral railgun" msgid_plural "integral railguns" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "integriertes Schienengewehr" +msgstr[1] "integrierte Schienengewehre" #: lang/json/gun_from_json.py msgid "integral lightning caster" @@ -76184,6 +76584,39 @@ msgstr "" "oder .45-Feuerwaffe wandelt dieser Umbausatz sie zu einer 9×19mm-Feuerwaffe " "um. Der Umbau resultiert in einer leicht geringeren Treffergenauigkeit." +#: lang/json/gunmod_from_json.py +msgid "belt feed adapter" +msgid_plural "belt feed adapters" +msgstr[0] "Gurtladeadapter" +msgstr[1] "Gurtladeadapter" + +#: lang/json/gunmod_from_json.py +msgid "" +"A kit providing the necessary parts for permanently converting a firearm " +"from magazine to belt-feed. Guaranteed to void your warranty." +msgstr "" +"Ein Satz, der die notwendigen Teile enthält, um eine Feuerwaffe permanent " +"vom Ladesystem per Magazin zum Ladesystem per Munitionsgurt konvertiert. " +"Damit erlöscht deine Garantie garantiert." + +#: lang/json/gunmod_from_json.py +msgid "magazine" +msgstr "Magazin" + +#: lang/json/gunmod_from_json.py +msgid "tuned mechanism" +msgid_plural "tuned mechanisms" +msgstr[0] "abgestimmter Mechanismus" +msgstr[1] "abgestimmte Mechanismen" + +#: lang/json/gunmod_from_json.py +msgid "" +"A set of finely tuned internal components which increase the precision and " +"reliably of a firearm." +msgstr "" +"Ein paar fein abgestimmte interne Komponenten, welche die Präzision und " +"Verlässlichkeit einer Feuerwaffe erhöhen." + #: lang/json/gunmod_from_json.py msgid "arrow rest" msgid_plural "arrow rests" @@ -76336,11 +76769,11 @@ msgstr[1] "LW-Gewehrlauferweiterungen" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." +"firearm, contributing to both accuracy and damage." msgstr "" -"Ein eingebauter verlängerter Leadworks-Lauf erhöht die " -"Mündungsgeschwindigkeit einer Feuerwaffe und verbessert somit sowohl " -"Treffergenauigkeit als auch den Schaden, verlangsamt aber das Zielen." +"Ein eingebauter verlängerter Leadworks-Lauf. Erhöht die " +"Mündungsgeschwindigkeit einer Feuerwaffe und trägt dadurch zu " +"Treffergenauigkeit und Schaden bei." #: lang/json/gunmod_from_json.py msgid "LW shortened barrel" @@ -76367,11 +76800,10 @@ msgstr[1] "LW-Hochleistungsläufe" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." +"shooting. Increases damage output and weapon range." msgstr "" -"Ein eingebauter Leadworks-Hochleistungslauf, der besonders für lang " -"anhaltendes Feuern ausgelegt wurde. Verringert die Treffgenauigkeit aber " -"erhöht den Schaden und die Waffenreichweite." +"Ein eingebauter Leadworks-Hochleistungslauf, der speziell für längeres " +"Schießen konzipiert wurde. Erhöht den Schaden und die Waffenreichweite." #: lang/json/gunmod_from_json.py msgid "lightweight replacement furniture" @@ -76400,11 +76832,10 @@ msgstr[1] "ergonomische Griffe" #: lang/json/gunmod_from_json.py msgid "" -"A set of ergonomic replacement furniture for a firearm improving handling " -"and accuracy." +"A set of ergonomic replacement furniture for a firearm improving handling." msgstr "" -"Eine ergonomische Ersatzausstattung für eine Feuerwaffe; es verbessert die " -"Handhabbarkeit und die Treffgenauigkeit." +"Eine ergonomische Ersatzausstattung für eine Feuerwaffe, welche die " +"Handhabbarkeit verbessert." #: lang/json/gunmod_from_json.py msgid "beam scatterer" @@ -76461,25 +76892,6 @@ msgstr "" msgid "emitter" msgstr "Emitter" -#: lang/json/gunmod_from_json.py -msgid "belt feed adapter" -msgid_plural "belt feed adapters" -msgstr[0] "Gurtladeadapter" -msgstr[1] "Gurtladeadapter" - -#: lang/json/gunmod_from_json.py -msgid "" -"A kit providing the necessary parts for permanently converting a firearm " -"from magazine to belt-feed. Guaranteed to void your warranty." -msgstr "" -"Ein Satz, der die notwendigen Teile enthält, um eine Feuerwaffe permanent " -"vom Ladesystem per Magazin zum Ladesystem per Munitionsgurt konvertiert. " -"Damit erlöscht deine Garantie garantiert." - -#: lang/json/gunmod_from_json.py -msgid "magazine" -msgstr "Magazin" - #: lang/json/gunmod_from_json.py msgid "leadworks magazine adapter" msgid_plural "leadworks magazine adapters" @@ -76503,24 +76915,11 @@ msgstr[1] "abgestimmte Abzüge" #: lang/json/gunmod_from_json.py msgid "" -"A precision weighted trigger assembly that improves a firearm's accuracy." -msgstr "" -"Eine präzise gewichteter Abzugsbausatz, der einer Feuerwaffe " -"Treffgenauigkeit erhöht." - -#: lang/json/gunmod_from_json.py -msgid "tuned mechanism" -msgid_plural "tuned mechanisms" -msgstr[0] "abgestimmter Mechanismus" -msgstr[1] "abgestimmte Mechanismen" - -#: lang/json/gunmod_from_json.py -msgid "" -"A set of finely tuned internal components which increase the precision and " -"reliably of a firearm." +"A precision weighted trigger assembly that slightly improves a firearm's " +"accuracy." msgstr "" -"Ein paar fein abgestimmte interne Komponenten, welche die Präzision und " -"Verlässlichkeit einer Feuerwaffe erhöhen." +"Ein gewichteter Präzisions-Abzugs-Bausatz, welcher die Treffgenauigkeit " +"einer Feuerwaffe geringfügig verbessert." #: lang/json/gunmod_from_json.py msgid "firearm waterproofing" @@ -76717,11 +77116,11 @@ msgstr[1] "Gyrostabilisatoren" #: lang/json/gunmod_from_json.py msgid "" "An advanced unit that straps onto the side of your firearm and reduces " -"vibration, greatly reducing recoil and increasing accuracy." +"vibration, greatly reducing recoil and slightly increasing accuracy." msgstr "" -"Eine fortschrittliche Einheit, die sich an der Seite deiner Feuerwaffe " -"festschnallt und die Vibration reduziert, was den Rückstoß stark reduziert " -"und die Treffsicherheit erhöht." +"Ein fortschrittliches Modul, das an der Seite deiner Feuerwaffe festschnallt" +" wird und welches die Vibration deiner Waffe reduziert, wodurch der Rückstoß" +" stark verringert und die Treffgenauigkeit geringfügig erhöht wird." #: lang/json/gunmod_from_json.py msgid "LW gyroscopic stabilizer" @@ -77539,9 +77938,9 @@ msgid "" "with some string. It still makes a good melee weapon providing reach " "attacks when attached to long arm or crossbow." msgstr "" -"Eine behelfsmäßige Version eines Bajonetts, bestehend aus einem geborgenem " -"Stachel mit etwas Schnur. Es ist immer noch eine gute Nahkampfwaffe, die " -"Streckangriffe vornehmen kann, falls sie an einer langen Waffe oder einer " +"Eine behelfsmäßige Version des Schwert-Bajonetts, bestehend aus einem " +"geborgenem Stachel und etwas Schnur. Noch immer eine gute Nahkampfwaffe, die" +" Distanzangriffe vornehmen kann, falls sie an einer langen Waffe oder einer " "Armbrust befestigt ist." #: lang/json/gunmod_from_json.py @@ -77690,6 +78089,10 @@ msgid "" " you will then replenish a variable amount of movement points, depending on " "many factors (press to see the exact amount)." msgstr "" +"Jeder Schritt kostet 100 Bewegungspunkte oder, ja nach Gelände, auch mal " +"mehr. In Abhängigkeit zahlreicher Faktoren wirst du anschließend eine " +"variable Anzahl an Bewegungspunkten wieder auffüllen (drücke " +", um die genaue Anzahl zu sehen)." #: lang/json/help_from_json.py msgid "To attempt to hit a monster with your weapon, simply move into it." @@ -77705,6 +78108,12 @@ msgid "" "choose a direction). Smashing down obstacles is much easier with a good " "weapon or a strong character." msgstr "" +"Du wirst Türen (»+«) finden, welche mit geöffnet und mit " +" geschlossen werden können. Einige Türen sind abgeschlossen. " +"Verschlossene Türen, Fenster und einige andere Hindernisse können durch " +"Zerschlagen zerstört werden. (, wähle anschließend eine " +"Richtung aus). Das Zerschlagen von Hindernissen wird durch eine guten Waffe " +"oder einem starken Protagonisten vereinfacht." #: lang/json/help_from_json.py msgid "" @@ -77714,6 +78123,13 @@ msgid "" "to react. Pressing will toggle \"Safe Mode\". While this is" " on, any movement will be ignored if new monsters enter the player's view." msgstr "" +"Es kann Momente geben, in denen du duch schneller bewegen willst. Dies " +"machst du durch das Gedrückthalten der Bewegungstaste. Allerdings kann die " +"schnelle Bewegung auf diese Weise deinen Protagonisten in eine gefährliche " +"Situation bringen oder ihn sogar töten, bevor du die Gelegenheit hast, zu " +"reagieren. Das Drücken von wird den sog. Laufmodus " +"umschalten. Ist dieser an, wird jede Bewegungstaste ignoriert, falls neue " +"Monster in das Sichtfeld des Protagonisten geraten." #: lang/json/help_from_json.py msgid ": Viewing" @@ -77730,6 +78146,15 @@ msgid "" " enough. Pressing Shift+vikeys (h,j,k,l,y,u,b,n) will scroll the view " "persistently, allowing you to keep an eye on things as you move around." msgstr "" +"Der Protagonist kann oft mehr sehen, als auf dem Bildschirm auf einmal " +"angezeigt werden kann. Das Drücken von ermöglicht es dir, die " +"Ansicht mithilfe der Bewegungstasten zu verschieben und die Gegenstände in " +"der Welt sowie Monster und ihre Haltung gegenüber dir zu betrachten. Drücke " +" für eine Liste von naheliegenden, sichtbaren Gegenständen," +" wobei Gegenstände, die in Kisten, Schränken, Kühlschränken und ähnlichem " +"sind, nicht angezeigt werden, bis du nahe genug bist. Mit Umschalt + den Vi-" +"Tasten (h,j,k,l,y,u,b,n) wird die Ansicht dauerhaft verschoben, was dich ein" +" Auge auf Dinge werfen lässt, während du dich umherbewegst." #: lang/json/help_from_json.py msgid ": Hunger, thirst, and sleep" @@ -77785,6 +78210,18 @@ msgid "" "diseased water. To make sure it's healthy, purify the water by boiling it or" " using water purifier before drinking." msgstr "" +"Nahrung in einer Stadt zu finden, ist normalerweise einfach; außerhalb einer" +" Stadt müsstest du jagen. Nachdem du ein Tier erlegt hast, stell dich über " +"dessen Leiche und schlachte es mit . Du könntest außerdem " +"versuchen, essbares Obst oder Gemüse zu sammeln; um dies zu tun, finde eine " +"vielversprechende Pflanze und untersuche sie. Außerdem müsstest du außerhalb" +" einer Stadt Wasser aus einem Fluss oder einer anderen natürlichen Quelle " +"trinken; um es aufzusammeln, stell dich ins seichte Wasser und drücke " +". Du benötigst einen wasserdichten Behälter. Sei vorgewarnt, " +"dass einige Wasserquellen nicht vertrauenswürdig sind und verseuchtes Wasser" +" produzieren können. Um sicherzustellen, dass es gesund ist, lass sämtliches" +" Wasser, welches du aufsammelst, durch einen Wasserfilter laufen, bevor du " +"es trinkst." #: lang/json/help_from_json.py msgid "" @@ -77796,6 +78233,13 @@ msgid "" " be vulnerable to attack, so try to find a safe place to sleep, or set traps" " for unwary intruders." msgstr "" +"Alle 14 bis 20 Stunden wirst du müde. Wenn du nicht schläfst (drücke " +"), wirst du Persönlichkeitswerte und Bewegungsgeschwindigkeit " +"einbüßen. Du wirst manchmal nicht sofort einschlafen können. Innen zu " +"schlafen, insbesondere in einem Bett, wird helfen. Falls das nicht reicht, " +"könnten Schlaftabletten nützlich sein. Beim Schlafen wirst du langsam " +"geheilt. Du bist außerdem Verwundbar gegenüber Angriffen, also finde einen " +"sicheren Schlafplatz, oder stelle Fallen für unvorsichtige Eindringlinge." #: lang/json/help_from_json.py msgid ": Pain and stimulants" @@ -78133,6 +78577,18 @@ msgid "" "book: just have it handy when crafting. Different knowledge is useful for " "different applications:" msgstr "" +"Um Gegenstände anzufertigen, drücke . Es gibt sieben " +"Kategorien: Waffen, Munition, Nahrung, Chemikalien, Elektronik, Kleidung und" +" der ganze Rest. Jede Hauptkategorie ist in kleinere Unterkategorien " +"unterteilt. Obgleich einige Gegenstände keine Erfahrungen zur Anfertigung " +"erfordern, verlangt das Meiste davon von dir etwas Vorwissen. Manchmal wird " +"ein erfahrender Überlebender sich ein Rezept aus seiner Erfahrung in der " +"Fertigkeit herleiten können, aber du wirst öfter Bezugsmaterial, " +"üblicherweise irgendein Buch, benötigen. Durch das Lesen hast du eine " +"Chance, dir die Rezepte umgehend einprägen zu können und du kannst ebenso " +"Sachen anfertigen, während du dich auf ein Buch beziehst: Hab es einfach bei" +" der Fertigung zur Hand. Verschiedenes Wissen ist nützlich für verschiedene " +"Anwendungen:" #: lang/json/help_from_json.py msgid "" @@ -78193,6 +78649,12 @@ msgid "" "require additional tools, like a shovel, to be set. Once set, a trap will " "remain in place until stepped on or disarmed." msgstr "" +"Um eine Falle zu stellen, benutze einfach den Gegenstand (drücke " +") und wähle eine Richtung; die Falle wird auf ein benachbartes " +"Feld platziert. Einige Fallen könnten zusätzliche Werkzeuge, wie eine " +"Schaufel, benötigen, um gestellt zu werden. Sobald sie gestellt ist, wird " +"eine Falle auf ihrem Platz bleiben, bis auf sie draufgetreten oder sie " +"entschärft wird." #: lang/json/help_from_json.py msgid "" @@ -78202,6 +78664,12 @@ msgid "" "however, if you fail, there is a chance that you will set off the trap, " "suffering the consequences." msgstr "" +"Um eine Falle zu entschärfen, untersuche (drücke ) das Feld, " +"auf dem es liegt. Dein Erfolg hängt von deiner Fallenerfahrung und " +"Geschicklichkeit ab. Wenn du erfolgreich bist, wird die Falle entfernt und " +"durch einige oder alle ihrer Bauteile ersetzt; wenn du allerdings versagst, " +"ist es möglich, dass du die Falle auslöst und die Konsequenzen zu spüren " +"bekommst." #: lang/json/help_from_json.py msgid "" @@ -78226,6 +78694,12 @@ msgid "" "a blue background. Pressing , then a direction key, will " "allow you to examine these containers and loot their contents." msgstr "" +"Es gibt eine breite Auswahl an Gegenständen, die dir zur Verfügung stehen. " +"Du könntest sie auf dem Boden liegend finden; wenn dem so sei, dann drücke " +"einfach , um die Gegenstände auf dem selben Feld aufzuheben. " +"Einige Gegenstände befinden sich in einem Behälter, der als »{« auf blauem " +"Grund dargestellt ist. Drücke , dann eine Richtungstaste, um " +"diese Behälter zu untersuchen und ihre Inhalte auszuplündern." #: lang/json/help_from_json.py msgid "" @@ -78234,6 +78708,11 @@ msgid "" "superior. You can also access the item comparison menu by pressing C after " " to view nearby items menu is open and an item is selected." msgstr "" +" drücken öffnet ein Vergleichsmenü, in dem duch zwei " +"Gegenstände Seite an Seite zu sehen, wobei ihre Eigenschaften hervorgehben " +"sind, um darzustellen, welcher überlegen ist. Du kannst außerdem das " +"Vergleichsmenü mit »C« öffnen, nachdem das geöffnet und " +"ein Gegenstand ausgewählt ist." #: lang/json/help_from_json.py msgid "" @@ -78245,6 +78724,14 @@ msgid "" "strength. Cutting damage is a guaranteed increase in damage, but it may be " "reduced by a monster's natural armor." msgstr "" +"Alle Gegenstände können als Nahkampfwaffe benutzt werden, wobei einige " +"besser als andere sind. Du kannst mit die " +"Nahkampfattribute eines Gegenstandes, den du trägst, überprüfen. Zuerst " +"öffnest du das Inventarmenü, dann drückst du das Gegenstandszeichen. Es gibt" +" 3 Nahkampfwerte: Schlag, Schnitt und Treffbonus (oder -strafe). " +"Schlagschaden ist grundsätzlich wirksam, aber wird bei niedriger Stärke " +"abgeschnitten. Schnittschaden wird den Schaden garantiert erhöhen, aber " +"könnte durch eines Monsters natürliche Rüstung geschwächt werden." #: lang/json/help_from_json.py msgid "" @@ -78255,6 +78742,14 @@ msgid "" "unwielding your weapon, it will go back in your inventory, or will be " "dropped on the ground if there is no space." msgstr "" +"Um einen Gegenstand als Waffe zu halten, drücke , dann den " +"passenden Buchstaben. Wenn du dies auf den Gegenstand, den du gerade trägst," +" anwendest, wirst du aufhören, diesen Gegenstand zu halten, was deine Hände " +"frei macht. Eine getragene Waffe wird dein getragenes Volumen nicht erhöhen," +" somit könnte sich das Festhalten eines großen Gegenstandes als eine gute " +"Idee für das Reisen erweisen. Wenn du deine Waffe nicht mehr hälst, wird sie" +" zurück in dein Inventar befördert oder auf dem Boden geworfen, wenn es " +"keinen Platz mehr gibt." #: lang/json/help_from_json.py msgid "" @@ -78262,6 +78757,10 @@ msgid "" "Armor reduces damage and helps you resist things like smoke. To take off an " "item, press then the proper letter." msgstr "" +"Um ein Bekleidungsstück zu tragen, drücke , dann den passenden " +"Buchstaben. Panzerung reduziert Schaden und hilft dir dabei, Dingen wie " +"Rauch zu widerstehen. Um einen Gegenstand auszuziehen, drücke " +", dann den passenden Buchstaben." #: lang/json/help_from_json.py msgid "" @@ -78269,6 +78768,10 @@ msgid "" "open) is the ability to filter or prioritize items. You can enter item " "names, or various advanced filter strings: {:}" msgstr "" +"Im »Nahe Gegenstände ansehen«-Menü (drücke zum Öffnen) ist" +" es auch möglich, Gegenstände auszufiltern oder zu priorisieren. Du kannst " +"Gegenstandsbezeichnungen oder verschiedene komplexe Filtereingaben machen: " +"»{:}«" #: lang/json/help_from_json.py msgid "" @@ -78351,6 +78854,15 @@ msgid "" "chambering a round though. Of course all this takes some time, so try not to" " do it if there are monsters nearby." msgstr "" +"Du kannst ein Magazin aus einer Feuerwaffe auswerfen, indem du " +"»« drückst, dann kannst du es separat mit einer kompatiblen " +"Munition laden. Alternativ kannst du auch, wenn du eine Feuerwaffe mit einem" +" teilweise geladenem Magazin und eine passene lose Munition im Inventar " +"hast, einfach mit »« nachladen, dadurch wirst du automatisch " +"das Magazin auswerfen, es mit so viel Munition wie möglich befüllen und dann" +" das Magazin wieder anstecken. Du musst du dich nicht ums Fertigladen " +"kümmern. Natürlich kostet das alles etwas Zeit, also versuch, es zu " +"vermeiden, wenn Monster in der Nähe sind." #: lang/json/help_from_json.py msgid "" @@ -78374,14 +78886,14 @@ msgstr "Magazinbeschreibungen listen auch die kompatible Munition auf." msgid "" "Note that while several ammo types exist for a given caliber and magazine " "type, you can't mix and match these types into a single magazine. You can't " -"for example load 9x19mm JHP and 9x19 FMJ ammo into the same magazine, since " -"a magazine always requires identical rounds to be loaded in it." +"for example load 9x19mm JHP and 9x19mm FMJ ammo into the same magazine, " +"since a magazine always requires identical rounds to be loaded in it." msgstr "" -"Beachte, dass, obwohl verschiedene Munitionstypen für einen bestimmten " -"Kaliber- und Magazintyp existieren, kannst du diese Typen nicht in einem " -"einzelnen Magazin vermischen. Du kannst zum Beispiel nicht gleichzeitig " -"9×19mm JHP und 9×19 FMJ in das selbe Magazin laden, da in ein Magazin immer " -"gleiche Patronen geladen werden müssen." +"Beachte, obwohl verschiedene Munitionstypen für einen bestimmten Kaliber- " +"und Magazintyp existieren, kannst du diese Typen nicht in einem einzelnen " +"Magazin vermischen. Du kannst zum Beispiel nicht gleichzeitig 9×19mm JHP und" +" 9×19mm FMJ in das selbe Magazin laden, da in ein Magazin immer gleiche " +"Patronen geladen werden müssen." #: lang/json/help_from_json.py msgid "" @@ -78407,6 +78919,11 @@ msgid "" "cycle modes, press . Firing continuously, especially" " in bursts, will severely reduce accuracy." msgstr "" +"Zum Feuern drücke , bewege den Cursor auf das relevante Feld, " +"dann drücke ».« oder »f«. Einige Feuerwaffen haben Alternativfeuermodi, wie " +"zum Beispiel Feuerstoß. Um Modi zu wechseln, drücke " +". Dauerfeuer, insbesondere in Feuerstößen, wird die " +"Treffgenauigkeit drastisch reduzieren." #: lang/json/help_from_json.py msgid "" @@ -78431,6 +78948,12 @@ msgid "" "found in their own traits, learned from manuals or by taking lessons from " "wandering masters." msgstr "" +"Es stehen, insbesondere für den unbewaffneten Kämpfer, zahlreiche Kampfstile" +" zur Verfügung. Du kannst mit der Wahl eines einzelnen, häufig " +"unterrichteten Stils beginnen, indem du mit dem Merkmal »Kampfkunst-" +"Training« beginnst. Viele weitere Stile können mittels ihrer eigenen " +"»Wesenszügen« erlernt werden. Das Lernen aus Handbüchern oder von " +"umherreisenden Meistern ist im laufenden Spiel zudem möglich." #: lang/json/help_from_json.py msgid "" @@ -78444,6 +78967,15 @@ msgid "" "accidentally wielding weapons taken from the ground, enable \"Keep hands " "free\" found in the styles menu." msgstr "" +"Um einen Kampfstil zu wählen, drücke . Einige Stile können" +" nur unbewaffnet angewendet werden, andere sind auch mit bestimmten Waffen " +"kompatibel oder benötigen diese sogar. Wenn deine aktuelle Waffe mit dem " +"ausgewählten Stil kompatibel ist, wirst du den ausgewählten Stil sofort " +"verwenden. Andernfalls wird er als Standardstil festgelegt. Zur Ausübung des" +" Stils verwende eine relevante Waffe oder leeren deine Hände, indem du " +" drückst, und dann die Taste für den Gegenstand, den du gerade " +"hältst. Wenn du verhindern möchtest, dass du versehentlich Waffen vom Boden " +"aufnimmst, aktiviere »Hände freihalten« im Stilmenü." #: lang/json/help_from_json.py msgid "" @@ -78625,6 +79157,14 @@ msgid "" "default to cruise control, so the gas/brake adjust the speed which the " "vehicle will attempt to maintain." msgstr "" +"Um die Kontrolle über das Fahrzeug zu übernehmen, geh zu einer Stelle mit " +"einer Fahrzeugsteuerung und drücke . Sobald du die " +"Konstolle übernommen hast, wird beschleunigen und " +"verlangsamen oder die Richtung umkehren. & lenkt nach links. & " +" lenkt nach rechts. Die diagonalen Bewegungstasten passen die " +"Fahrtrichtung und Geschwindigkeit an. Der Fahrtregler ist standardmäßig " +"angeschaltet, dadurch werden Gas und Bremse die Geschwindigkeit, welche das " +"Fahrzeug beizubehalten versucht, anpassen." #: lang/json/help_from_json.py msgid "" @@ -78632,6 +79172,10 @@ msgid "" "fumble the controls. As your Driving skill improves, you will fumble less " "and less. To simply maintain course and speed, hit ." msgstr "" +"16-48 km/h bzw. 10-30 mph sind eine gute Geschwindigkeit für Fahranfänger, " +"welche dazu neigen, mit der Steuerung herumzufummeln. Während deine " +"Fahrerfahrung sich verbessert, fummelnst du weniger und weniger. Um die " +"Richtung und Geschwindigkeit beizubehalten, drück einfach ." #: lang/json/help_from_json.py msgid "" @@ -78641,6 +79185,12 @@ msgid "" " to bring up the \"Vehicle Controls\" menu, which has" " options for things you'd do from the driver's seat." msgstr "" +"Es ist eine gute Idee, die Handbremse - »s« - beim Parken zu ziehen, nur um " +"auf Nummer sicher zu gehen. Wenn du aussteigen willst, schalte die Lampen " +"aus, schalte den Fahrtregler um, starte oder stoppe den Motor. Ansonsten " +"benutze die Fahrzeugsteuerung, drücke , um das " +"Fahrzeugsteuerungsmenü, welches Einstellungen für Dinge, die man vom " +"Fahrersitz macht, hat." #: lang/json/help_from_json.py msgid "" @@ -78669,7 +79219,7 @@ msgstr "" #: lang/json/help_from_json.py msgid "<1>: List of item types and data" -msgstr "<1>: Liste der Gegenstandstypen und -daten " +msgstr "<1>: Gegenstandstypen und -daten" #: lang/json/help_from_json.py #, no-python-format @@ -78679,6 +79229,10 @@ msgid "" "! Medication\n" "These are all consumed by using . They provide a certain amount of nutrition, quench your thirst, may be a stimulant or a depressant, and may provide morale. There may also be more subtle effects." msgstr "" +"~ Flüssigkeit\n" +"%% Nahrung\n" +"! Medizin\n" +"Diese werden alle mit konsumiert. Sie haben einen bestimmten Nährwert, stillen deinen Durst, können stimulierend oder ein Deppressivum sein oder die Moral anheben. Subtilere Wirkungen können ebenfalls existieren." #: lang/json/help_from_json.py msgid "" @@ -78687,24 +79241,34 @@ msgid "" ", Tiny item\n" "These are all generic items, useful only to be wielded as a weapon. However, some have special uses; they will show up under the TOOLS section in your inventory. Press to use these." msgstr "" +"/ große Waffe\n" +"; kleine Waffe und/oder Werkzeug\n" +", winziger Gegenstand\n" +"Diese sind alles generische Gegenstände, nur nützlich, um als Waffe getragen zu werden. Allerdings haben einige besondere Verwendungszwecke; sie werden under dem Abschnitt »WERKZEUGE« in deinem Inventar aufgeführt. Drücke , um sie zu benutzen." #: lang/json/help_from_json.py msgid "" ") Container\n" "These items may hold other items. Some are passable weapons. Many will be listed with their contents, e.g. \"plastic bottle of water\". Those containing comestibles may be eaten with ; this may leave an empty container." msgstr "" +") Behälter\n" +"Diese Gegenstände können andere Gegenstände beeinhalten. Einige sind passable Waffen. Viele werden mit ihren Inhalten aufgeführt, z.B. »Plastikflasche mit Wasser«. Lebensmittel in Behältern können mit gegessen werden; dies wird einen leeren Behälter zurücklassen." #: lang/json/help_from_json.py msgid "" "[ Clothing\n" "This may be worn with the key or removed with the key. It may cover one or more body parts; you can wear multiple articles of clothing on any given body part, but this will encumber you severely. Each article of clothing may provide storage space, warmth, encumbrance, and a resistance to bashing and/or cutting attacks. Some may protect against environmental effects." msgstr "" +"[ Kleidung\n" +"Dies kann angezogen (mit der -Taste) oder ausgezogen (mit der -Taste) werden. Es kann eins oder mehrere Körperteile bedecken; du kannst mehrere Kleidungsartikel auf jedem Körperteil tragen, aber dies wird deine Bewegungsfreiheit stark einschänken und dich gegen Schlag und/oder Schnittangriffe besser widerstehen lassen. Einige schützen dich vor Umwelteinflüssen." #: lang/json/help_from_json.py msgid "" "( Firearm\n" "This weapon may be loaded with ammunition with , unloaded with , and fired with . Some have automatic fire, which may be used with at a penalty to accuracy. The color refers to the type; handguns are gray, shotguns are red, submachine guns are cyan, rifles are brown, assault rifles are blue, and heavy machine guns are light red. Each has a dispersion rating, a bonus to damage, a rate of fire, and a maximum load. Note that most firearms load fully in one action, while shotguns must be loaded one shell at a time." msgstr "" +"( Feuerwaffe\n" +"Diese Waffe kann mit Munition mit geladen, mit entladen, und mit abgefeuert werden. Einige haben eine Automatik, welche mit benutzt werden kann, auf Kosten der Genauigkeit. Die Farbe kennzeichnet den Typ; Handfeuerwaffen sind grau, Schrotflinten rot, Maschinenpistolen türkis, Gewehre braun, Sturmgewehre blau und schwere Maschinengewehre hellrot. Jede hat eine Streuungswertung, einen Schadensbonus, eine Schussgeschwindigkeit und eine Munitionskapazität. Beachte, dass die meisten Feuerwaffen in einem Zug voll geladen werden, wobei Schrotflinten Patrone für Patrone nachgeladen werden müssen." #: lang/json/help_from_json.py msgid "" @@ -78719,12 +79283,16 @@ msgid "" "* Thrown weapon; simple projectile or grenade\n" "These items are suited for throwing, and many are only useful when thrown, such as grenades, Molotov cocktails, or tear gas. Once activated be certain to throw these items by pressing , then the letter of the item to throw." msgstr "" +"* Geworfene Waffe; einfaches Wurfgeschoss oder Granate\n" +"Diese Gegenstände sind geeignet zum Werfen und viele sind nur nützlich, wenn sie geworfen werden, zum Beispiel Granaten, Molotowcocktails oder Tränengasgranaten. Sobald du sie aktiviert hast, stell sicher, sie zu werfen, indem du erst , dann das Zeichen des Gegenstands, den du werfen willst, drückst." #: lang/json/help_from_json.py msgid "" "? Book or magazine\n" "This can be read for training or entertainment by pressing . Most require a basic level of intelligence; some require some base knowledge in the relevant subject. Some books may contain useful crafting recipes." msgstr "" +"? Buch oder Magazin\n" +"Dies kann gelesen werden, entweder zum Trainieren deiner Fertigkeiten oder zur Unterhaltung. Lies sie, indem du drückst. Die meisten Bücher erfordern eine Mindestintelligenz, einige erfordern ein Vorwissen im entsprechenden Fachthema. Einige Bücher können nützliche Fertigungsrezepte enthalten." #: lang/json/help_from_json.py msgid "<2>: Description of map symbols" @@ -78739,107 +79307,140 @@ msgid "" ". Field - Empty grassland, occasional wild " "fruit." msgstr "" +". Feld - Leeres Grasland, gelegentlich wilde " +"Früchte." #: lang/json/help_from_json.py msgid "" "F Forest - May be dense or sparse. Slow " "moving; foragable food." msgstr "" +"F Wald - Spärlich bis dicht. Langsame " +"Durchquerung; Gut für die Nahrungssuche." #: lang/json/help_from_json.py msgid "" "│─└┌┐┘├┴┤┬┼ Road - Safe from burrowing animals." msgstr "" +"│─└┌┐┘├┴┤┬┼ Straße - Sicher vor grabenden Tieren." #: lang/json/help_from_json.py msgid "" "H= Highway - Like roads, but lined with " "guard rails." msgstr "" +"H= Schnellstraße - Wie Straßen, aber mit " +"Leitplanken" #: lang/json/help_from_json.py msgid "|- Bridge - Helps you cross rivers." msgstr "" -"|- Brücke - hiflt dir beim Überqueren von " -"Flüssen. " +"|- Brücke - Hilft dir beim Überqueren von " +"Flüssen." #: lang/json/help_from_json.py msgid "" "R River - Most creatures can not swim across " "them, but you may." msgstr "" +"R Fluss - Die meisten Kreaturen können nicht " +"durchschwimmen, aber du schon." #: lang/json/help_from_json.py msgid "" "O Parking lot - Empty lot, few items. " "Mostly useless." msgstr "" +"O Parkplatz - Leeres Grundstück, wenige " +"Gegenstände. Meist nutzlos." #: lang/json/help_from_json.py msgid "" "^>v< House - Filled with a variety of " "items. Good place to sleep." msgstr "" +"^>v< Wohnhaus - Angefüllt mit zahlreichen " +"Gegenständen. Guter Schlafplatz." #: lang/json/help_from_json.py msgid "" "^>v< Gas station - A good place to collect " "gasoline. Risk of explosion." msgstr "" +"^>v< Tankstelle - Guter Ort, zum " +"Benzinsammeln. Explosionsgefahr!" #: lang/json/help_from_json.py msgid "" "^>v< Pharmacy - The best source for vital " "medications." msgstr "" +"^>v< Apotheke - Die beste Quelle für " +"lebenswichtige Medikamente." #: lang/json/help_from_json.py msgid "" "^>v< Grocery store - A good source of canned " "food and other supplies." msgstr "" +"^>v< Lebensmittelgeschäft - Gute Quelle für " +"Konserven und anderen Vorräten." #: lang/json/help_from_json.py msgid "" "^>v< Hardware store - Home to tools, melee " "weapons and crafting goods." msgstr "" +"^>v< Baumarkt - Werkzeuge, Nahkampfwaffen und " +"Baumaterialien." #: lang/json/help_from_json.py msgid "" "^>v< Sporting Goods store - Several " "survival tools and melee weapons." msgstr "" +"^>v< Sportgeschäft - Diverse " +"Überlebenswerkzeuge und Nahkampfwaffen." #: lang/json/help_from_json.py msgid "" "^>v< Liquor store - Alcohol is good for " "crafting Molotov cocktails." msgstr "" +"^>v< Spirituosenladen - Alkohol ist gut, um " +"Molotowcocktails zu machen. " #: lang/json/help_from_json.py msgid "" "^>v< Gun store - Firearms and ammunition are very " "valuable." msgstr "" +"^>v< Waffengeschäft - Feuerwaffen und Munition " +"sind sehr wertvoll." #: lang/json/help_from_json.py msgid "" "^>v< Clothing store - High-capacity clothing, " "some light armor." msgstr "" +"^>v< Bekleidungsgeschäft - Kleidung mit vielen " +"Taschen, leichte Rüstung." #: lang/json/help_from_json.py msgid "" "^>v< Library - Home to books, both entertaining " "and informative." msgstr "" +"^>v< Bibliothek - Heim aller Bücher: " +"Unterhaltungsliteratur und Sachbücher." #: lang/json/help_from_json.py msgid "" "^>v< Man-made buildings - The pointed side " "indicates the front door." msgstr "" +"^>v< Menschgemachte Gebäude. Die Spitze deutet " +"die Vordertüre an." #: lang/json/help_from_json.py msgid " There are many others out there... search for them!" @@ -78996,6 +79597,8 @@ msgid "" "Q: How do I get into science labs?\n" "A: You can enter the front door if you have an ID card by examining () the keypad. If you are skilled in computers and have an electrohack, it is possible to hack the keypad. An EMP blast has a chance to force the doors open, but it's more likely to break them. You can also sneak in through the sewers sometimes, or try to smash through the walls with explosions." msgstr "" +"F: Wie komme ich in die wissenschaftlichen Labore?\n" +"A: Du kannst die Vordertüre passieren, wenn du eine Dienstkarte eines Wissenschaftlers hast und mit der -Taste das Keypad untersuchst. Falls du Erfahrung mit Computern und einem Elektrohack hast, ist es möglich, das Keypad zu hacken. Ein EMP kann mit einer gewissen Wahrscheinlichkeit die Türen öffnen, aber es ist wahrscheinlicher, dass sie dabei kaputt gehen. Du kannst dich manchmal auch durch die Abwässerkanäle hereinschleichen oder die Wände sprengen." #: lang/json/help_from_json.py msgid "" @@ -79230,6 +79833,10 @@ msgstr "Kauen" msgid "Clear rubble" msgstr "Schutt beseitigen" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "Münzwurf" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "Koks schnupfen" @@ -79258,6 +79865,11 @@ msgstr "Pusten" msgid "Make it talk" msgstr "Zum Reden bringen" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "Rauchen" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "Ausziehen" @@ -79299,6 +79911,10 @@ msgstr "Inhalieren" msgid "Drill" msgstr "Bohren" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "Fragen" + #: lang/json/item_action_from_json.py lang/json/item_action_from_json.py #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Read" @@ -79341,6 +79957,7 @@ msgid "Squeeze" msgstr "Quetschen" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" msgstr "Spielen" @@ -79378,6 +79995,11 @@ msgstr "Rasieren" msgid "Siphon" msgstr "Absaugen" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "Rauchen" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "Etwas schreiben" @@ -79430,6 +80052,11 @@ msgstr "Munition lagern/entladen" msgid "Make some noise" msgstr "Etwas Krach machen" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "Spielen" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "Aktivieren/deaktivieren" @@ -79606,14 +80233,14 @@ msgstr "" #: lang/json/json_flag_from_json.py msgid "This tastes better while cold." msgstr "" -"Das schmeckt besserwährend es " -"kaltist." +"Das schmeckt besser, wenn es kalt " +"ist." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "This tastes better while hot." msgstr "" -"Das schmeckt besser während es heiß ist." +"Das schmeckt besser, wenn es heiß ist." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -80511,10 +81138,18 @@ msgstr "Seitenwechsel getragener Kleidung" msgid "Assign invlets to armor" msgstr "Inventarzeichen zu Kleidung zuweisen" +#: lang/json/keybinding_from_json.py +msgid "Sort armor into natural layer order" +msgstr "Kleidung in normale Schichtreihenfolge bringen" + #: lang/json/keybinding_from_json.py msgid "Equip armor from inventory" msgstr "Kleidung aus Inventar anziehen" +#: lang/json/keybinding_from_json.py +msgid "Equip armor from inventory at this position" +msgstr "Kleidung aus Inventar an akt. Stelle anziehen" + #: lang/json/keybinding_from_json.py msgid "Unequip selected armor" msgstr "Gewählte Kleidung ablegen" @@ -80537,7 +81172,7 @@ msgstr "Rezeptergebnis anzeigen" #: lang/json/keybinding_from_json.py msgid "Hide/show recipe" -msgstr "Rezept verbergen / anzeigen" +msgstr "Rezept verbergen/anzeigen" #: lang/json/keybinding_from_json.py msgid "Batch crafting" @@ -80545,7 +81180,7 @@ msgstr "Stapelfertigung" #: lang/json/keybinding_from_json.py msgid "Related recipes" -msgstr "Verbunden Rezepte" +msgstr "Verbundene Rezepte" #: lang/json/keybinding_from_json.py msgid "Center On Character" @@ -81360,6 +81995,22 @@ msgstr "Priorität verringern" msgid "Change sort order" msgstr "Sortierreihenfolge wechseln" +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "Zur Sicherheitsmodus-Ausschlussliste addieren" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "Von Sicherheitsmodus-Ausschlussliste löschen" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "Umsehen" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "Feuer" + #: lang/json/keybinding_from_json.py msgid "List items and monsters" msgstr "Gegenstände u. Monster auflisten" @@ -81542,19 +82193,17 @@ msgstr "Benutzerdefinierte Farbe löschen" msgid "Load color template" msgstr "Farbvorlage laden" -#: lang/json/keybinding_from_json.py src/craft_command.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/veh_interact.cpp msgid "Yes" msgstr "Ja" -#: lang/json/keybinding_from_json.py src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/options.cpp src/veh_interact.cpp msgid "No" msgstr "Nein" #: lang/json/keybinding_from_json.py msgid "Ignore further distractions and finish" -msgstr "Ignoriere weitere Ablenkungen und fortfahren" +msgstr "Ignoriere weitere Ablenkungen und fahre fort" #: lang/json/keybinding_from_json.py msgid "Cancel popup" @@ -81698,6 +82347,11 @@ msgstr "Vereinigte Computerbank des Finanzministeriums" msgid "Open Vault" msgstr "Tresorraum öffnen" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "Vereinigte hochsicherheits Computerbank des Finanzministeriums" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -82405,7 +83059,8 @@ msgid "Emergency Message" msgstr "Notfallnachricht" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py lang/json/mapgen_from_json.py +#: lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "Externe Stromversorgung deaktivieren" @@ -82467,7 +83122,6 @@ msgstr "FEHLER: SIGNAL GETRENNT" #. ~ Computer option #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py -#: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "Verstärker-Mod installieren" @@ -82999,7 +83653,7 @@ msgstr "" #. ~ Description of buff for martial art 'Zui Quan' #: lang/json/martial_art_from_json.py msgid "Intelligence increases dodging ability" -msgstr "Intelligenz erhöht Ausweichfähigkeit" +msgstr "Intelligenz erhöht Ausweichfertigkeit" #: lang/json/martial_art_from_json.py msgid "Counter Strike" @@ -83902,7 +84556,8 @@ msgstr "Versuch es mit einer Bibliothek." msgid "Got that book for me?" msgstr "Hast du das Buch für mich?" -#: lang/json/mission_def_from_json.py src/npctalk.cpp src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Thanks!" msgstr "Danke!" @@ -84852,17 +85507,8 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." -msgstr "" -"Ich hab noch eine Aufgabe, wenn du dich ihr gewachsen fühlst. Es gibt einen " -"Gefangenen, den der Priester besonders hervorgehoben hat. Ich frage mich, ob" -" du herausfinden kannst, was ihm passiert sein könnte oder ob er irgendwas " -"in der Zelle zurückgelassen hat. Der Priester gibt zu, dass das Individuum " -"ziemlich instabil sei – um es vorsichtig auszudrücken – aber er glaubte " -"persönlich, dass der Mann eine Art reumütiger Visionär wäre. Ich bin nicht " -"in der Position, diesen Bericht schon jetzt einfach abzustoßen. Es scheint, " -"dass der Mann Ereignisse präzise voraussagte, bevor er was mit der Kirche " -"der Sternenweisheit zu tun hatte." +"prophesied events accurately before concerning the Church of Starry Wisdom." +msgstr "" #: lang/json/mission_def_from_json.py msgid "" @@ -85280,22 +85926,12 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels" " is boosted so we can pick it up at much longer ranges. I really need you " "make me one." msgstr "" -"Meine Hauptverantwortlichkeit besteht darin, den Funkverkehr zu überwachen " -"und mögliche Ziele zum Sichern oder Retten auszumachen. Die Mehrheit der " -"Funkverstärker sind defekt und diejenigen, die funktionieren, werden nur mit" -" Notstrom betrieben. Wenn du ein grundlegendes Verständnis von Elektronik " -"hast, solltest du in der Lage sein, die Radiosender-Verstärker-Modifikation," -" die in diesen Plänen gefunden werden kann, anzufertigen. Wird diese " -"Modifikation am Haupt-Terminal einer Radiostation angebracht, wird der " -"schwache Funkverkehr auf den Notkanälen verstärkt, damit wir ihn mit viel " -"höheren Reichweiten empfangen können. Ich brauche dich wirklich, um mir so " -"eine Modifikation zu bauen." #: lang/json/mission_def_from_json.py msgid "" @@ -87215,7 +87851,7 @@ msgstr "" #: lang/json/mission_def_from_json.py msgid "So glad for your help." -msgstr "" +msgstr "Ich freue mich wirklich sehr über deine Hilfe." #: lang/json/mission_def_from_json.py msgid "" @@ -88289,6 +88925,8 @@ msgid "" "Your body's efficiency is like that of a tiny furnace, increasing your " "maximum stamina by 40%." msgstr "" +"Der Wirkungsgrad deines Körpers ähnelt dem eines winzigen Ofens. Deine " +"maximale Ausdauer ist im Vergleich um 40% erhöht." #: lang/json/mutation_from_json.py msgid "Quick" @@ -88382,7 +89020,7 @@ msgid "" " Activate to toggle NV-visible areas on or off." msgstr "" "Du verfügst über eine natürliche Nachtsicht und kannst in der Dunkelheit " -"weiter sehen als die Meisten. Aktiviere dies, um die Nachtsicht ein- bzw. " +"weiter sehen als die Meisten. Aktivieren, um die Nachtsicht ein- bzw. " "auszuschalten." #: lang/json/mutation_from_json.py @@ -88451,7 +89089,7 @@ msgstr "" #: lang/json/mutation_from_json.py msgid "Unbreakable" -msgstr "Umumstößlich" +msgstr "Unzerbrechlich" #. ~ Description for Unbreakable #: lang/json/mutation_from_json.py @@ -88484,8 +89122,8 @@ msgstr "Packesel" msgid "" "You can manage to find space for anything! You can carry 40% more volume." msgstr "" -"Du schaffst es, Platz für alles zu finden! Du kannst um 40% mehr Volumen " -"tragen." +"Du findest wirklich Platz für alles und kannst im Vergleich 40% mehr Volumen" +" tragen." #: lang/json/mutation_from_json.py msgid "Strong Back" @@ -88769,8 +89407,8 @@ msgid "" "You make less noise while walking. You're also less likely to set off " "traps." msgstr "" -"Du machst weniger Geräusche beim Laufen. Dir ist es auch unwahrscheinlicher," -" Fallen auszulösen." +"Du machst beim Gehen weniger Lärm und es ist auch weniger wahrscheinlich, " +"dass du Fallen auslöst." #: lang/json/mutation_from_json.py msgid "Robust Genetics" @@ -89277,7 +89915,7 @@ msgstr "" #: lang/json/mutation_from_json.py msgid "Sweet Tooth" -msgstr "" +msgstr "Naschkatze" #. ~ Description for Sweet Tooth #: lang/json/mutation_from_json.py @@ -89285,10 +89923,12 @@ msgid "" "You have a soft spot for processed foods, and gain a morale bonus from " "eating them." msgstr "" +"Du hast eine Schwäche für stark verarbeitete Lebensmittel und erhältst durch" +" den Konsum dieser einen Bonus auf deine Moral." #: lang/json/mutation_from_json.py msgid "Sugar-Loving" -msgstr "" +msgstr "Zuckerliebend" #. ~ Description for Sugar-Loving #: lang/json/mutation_from_json.py @@ -89296,6 +89936,8 @@ msgid "" "You *adore* the taste of junk food, and find it preferable to everything " "else!" msgstr "" +"Du »liebst« den Geschmack von Junk Food und ziehst es allen anderen " +"Lebensmitteln vor!" #: lang/json/mutation_from_json.py msgid "Glass Jaw" @@ -89347,8 +89989,8 @@ msgid "" "It's easier for you to become addicted to substances, and harder to rid " "yourself of these addictions." msgstr "" -"Es ist leichter für dich, von Substanzen abhängig zu werden und schwerer, " -"diese Süchte wieder los zu werden." +"Du wirst im Vergleich schneller von suchterzeugenden Substanzen abhängig und" +" kommst auch schwerer von ihnen wieder los." #: lang/json/mutation_from_json.py msgid "Trigger Happy" @@ -89418,6 +90060,8 @@ msgid "" "Natural animals like dogs and wolves see you as prey, and are liable to " "attack you on sight." msgstr "" +"Ganz gewöhnliche Tiere wie Hunde und Wölfe betrachten dich als Beute und " +"greifen dich nach dem Aufspüren ohne Umschweife an." #: lang/json/mutation_from_json.py msgid "Slow Reader" @@ -89690,7 +90334,7 @@ msgid "" " Activate to toggle NV-visible areas on or off." msgstr "" "Du kannst in tiefster Dunkelheit sehen, als ob du eine Nachtsichtbrille " -"tragen würdest. Aktiviere dies, um die Nachtsicht ein- bzw. auszuschalten." +"tragen würdest. Aktivieren, um die Nachtsicht ein- bzw. auszuschalten." #: lang/json/mutation_from_json.py msgid "Cephalopod Eyes" @@ -89718,7 +90362,7 @@ msgid "" "areas on or off." msgstr "" "Dein Gehirn hat mit deinen Augen gleichgezogen. Du kannst nun viel besser im Dunkeln sehen, aber das Sonnenlicht erscheint nun viel heller.\n" -"Aktiviere dies, um die Nachtsicht ein- bzw. auszuschalten." +"Aktivieren, um die Nachtsicht ein- bzw. auszuschalten." #: lang/json/mutation_from_json.py msgid "Fey Eyes" @@ -89743,7 +90387,7 @@ msgid "" "The shadows don't seem as dark now. Activate to toggle NV-visible areas on " "or off." msgstr "" -"Die Schatten scheinen nicht mehr so dunkel zu sein. Aktiviere dies, um die " +"Die Schatten scheinen nicht mehr so dunkel zu sein. Aktivieren, um die " "Nachtsicht ein- bzw. auszuschalten." #: lang/json/mutation_from_json.py @@ -89786,8 +90430,9 @@ msgid "" "Your optic nerves and brain caught up with your eyes. Now you can see " "pretty well at night. Activate to toggle NV-visible areas on or off." msgstr "" -"Deine Sehnerven und dein Gehirn haben mit deinen Augen gleichgezogen. Nun kannst du ziemlich gut in der Nacht sehen.\n" -"Aktiviere dies, um die Nachtsicht ein- bzw. auszuschalten." +"Deine Sehnerven und dein Gehirn haben mit deinen Augen gleichgezogen. Nun " +"kannst du nachts ziemlich gut sehen. Aktivieren, um die Nachtsicht ein- bzw." +" auszuschalten." #: lang/json/mutation_from_json.py msgid "Ursine Vision" @@ -89800,8 +90445,9 @@ msgid "" "you're nearsighted in the light. Maybe glasses would help. Activate to " "toggle NV-visible areas on or off." msgstr "" -"Deine Sicht hat sich verschoben: Obwohl du besser im Dunkeln sehen kannst, kannst nicht sehr weit im Licht sehen. Vielleicht helfen Brillen.\n" -"Aktiviere dies, um die Nachtsicht ein- bzw. auszuschalten." +"Deine Sicht hat sich verschoben: Obwohl du besser im Dunkeln sehen kannst, " +"kannst nicht sehr weit im Licht sehen. Vielleicht würde eine Brille helfen. " +"Aktivieren, um die Nachtsicht ein- bzw. auszuschalten." #: lang/json/mutation_from_json.py msgid "Avian Eyes" @@ -89957,6 +90603,10 @@ msgid "" "allowing you to see as though you were wearing goggles. Slightly decreases " "wet penalties." msgstr "" +"Du besitzt einen weiteren Satz transparenter Augenlider, die sich schließen," +" sobald du dich unter der Wasseroberfläche befindest und dich sehen lassen, " +"als trügest du eine Schwimmbrille. Verringern zudem in geringem Maße die " +"Moralstrafe für Nässe." #: lang/json/mutation_from_json.py msgid "Gills" @@ -90066,8 +90716,8 @@ msgid "" msgstr "" "Eine paar sehr flexible und glatte Schuppen sind als Bedeckung auf deinen " "Körper gewachsen; sie dienen als natürliche Panzerung, verbessern deine " -"Schwimmfähigkeit und erschweren es, dich zu greifen. Reduziert fast alle " -"Auswirkungen von Nässe." +"Schwimmfertigkeit und erschweren es, dass du festgehalten werden kannst. " +"Reduziert fast alle Auswirkungen von Nässe." #: lang/json/mutation_from_json.py msgid "Light Bones" @@ -90097,8 +90747,8 @@ msgid "" "also provide a natural waterproofing." msgstr "" "Schillernde Federn sind über deinen ganzen Körper gewachen und bieten so " -"einen geringfügigen Schutz vor Angriffen und einem schwachen Schutz vor " -"Kälte. Sie bieten außer eine natürliche Abdichtung vor Wasser." +"einen geringen Schutz vor Angriffen und einem schwachen Schutz vor der " +"Kälte. Sie bieten zudem eine natürliche Abdichtung gegen Wasser." #: lang/json/mutation_from_json.py msgid "Down" @@ -90419,6 +91069,11 @@ msgid "" "guidance determines that it is safe to germinate. Rapid development taxes " "local nutrient reserves but ensures swift and effective growth." msgstr "" +"Örtliche Organismen scheinen den offenen Sporenausstoß als Gefahr zu " +"betrachten und greifen die Mykus an. Dementsprechend bleiben unsere " +"örtlichen Sporensäcke im Ruhezustand, bis die örtliche Führung bestimmt, " +"dass die Keimung sicher ist. Eine rasche Entwicklung belastet die örtlichen " +"Nährstoffreserven, sorgt jedoch für schnelles und effektives Wachstum." #: lang/json/mutation_from_json.py msgid "Mycus Blossoms" @@ -90441,6 +91096,11 @@ msgid "" "guidance determines that it is safe to germinate. Rapid development taxes " "local nutrient reserves but ensures swift and effective growth." msgstr "" +"Örtliche Organismen scheinen den offenen Sporenausstoß als Gefahr zu " +"betrachten und greifen die Mykus an. Dementsprechend bleiben unsere " +"örtlichen Blüten im Ruhezustand, bis die örtliche Führung bestimmt, dass die" +" Keimung sicher ist. Eine rasche Entwicklung belastet die örtlichen " +"Nährstoffreserven, sorgt jedoch für schnelles und effektives Wachstum." #: lang/json/mutation_from_json.py msgid "Mycus Provenance" @@ -91251,8 +91911,8 @@ msgid "" "fabric pants." msgstr "" "Du hast einen langen, eleganten Schwanz, wie den einer Großkatze. Er " -"verbessert deine Balance, was deine Ausweichfähigkeit erhöht, dich aber vom " -"Tragen nicht-textiler Hosen abhält." +"verbessert deine Balance, was deine Ausweichfertigkeit erhöht, dich aber vom" +" Tragen nicht-textiler Hosen abhält." #: lang/json/mutation_from_json.py msgid "Cattle Tail" @@ -91335,7 +91995,7 @@ msgid "" "pants." msgstr "" "Du hast einen langen, flauschig-felligen Schwanz. Er verbessert deine " -"Balance stark, was deine Ausweichfähigkeit deutlich erhöht. Verhindert " +"Balance stark, was deine Ausweichfertigkeit deutlich erhöht. Verhindert " "Tragen nicht-textiler Hosen." #: lang/json/mutation_from_json.py @@ -91843,8 +92503,8 @@ msgid "" "generation. Activate this to start or stop weaving webs." msgstr "" "Du hast die notwendige Anatomie und Techniken entwickelt, um deine " -"Netzproduktion zu kontrollieren. Aktiviere dies, um mit dem Spinnen von " -"Netzen anzufangen oder damit aufzuhören." +"Netzproduktion zu kontrollieren. Aktivieren, um mit dem Spinnen von Netzen " +"anzufangen oder damit aufzuhören." #: lang/json/mutation_from_json.py msgid "Web Diver" @@ -91888,7 +92548,7 @@ msgid "" "very slightly." msgstr "" "Du hast eine Gruppe an Katzenschnurrhaaren um deinen Mund. Sie machen dir " -"Vibrationen in der Luft bewusster und verbessern deine Ausweichfähigkeiten " +"Vibrationen in der Luft bewusster und verbessern deine Ausweichfertigkeit " "ein ganz klein wenig." #: lang/json/mutation_from_json.py @@ -91904,7 +92564,7 @@ msgid "" msgstr "" "Du hast eine Gruppe an herausstechenden nagetierähnlichen Schnurrhaaren um " "deinen Mund. Sie machen dir Vibrationen in der Luft bewusster und verbessern" -" deine Ausweichfähigkeiten ein wenig." +" deine Ausweichfertigkeit ein wenig." #: lang/json/mutation_from_json.py msgid "Fat Deposits" @@ -92234,7 +92894,7 @@ msgstr "" "einst leicht zu tragen fandst, ist jetzt unerträglich. Kleidung ist jetzt, " "wenn du sie vor dem Tragen nicht umnähst, doppelt so hinderlich für dich. " "Deine Trefferpunkte wurden zudem stark reduziert. Bewegungen sind jedoch " -"leiser und deine Ausweichen-Fähigkeit ist ein wenig höher als zuvor." +"leiser und deine Ausweichfertigkeit ist ein wenig höher als zuvor." #: lang/json/mutation_from_json.py msgid "Unassuming" @@ -92360,7 +93020,7 @@ msgid "" msgstr "" "Du hast ein Paar großer, lederiger Flügel. Du kannst sie etwas Bewegen, aber" " sind nutzlos und bringen dich eigentlich sogar aus der Balance, was deine " -"Ausweichfähigkeit etwas reduziert." +"Ausweichfertigkeit etwas reduziert." #: lang/json/mutation_from_json.py msgid "Butterfly Wings" @@ -92469,8 +93129,8 @@ msgid "" "You are a vision of beauty. Some people will react very well to your looks," " and most people will trust you immediately." msgstr "" -"Du bist traumhaft schön. Eine Leute werden sehr gut auf dein Aussehen " -"reagieren und die meisten Leute werden dir sofort vertrauen." +"Du bist die Schönheit in Person. Einige Menschen werden sehr gut auf dein " +"Aussehen reagieren, und die meisten werden dir auch sofort vertrauen." #: lang/json/mutation_from_json.py msgid "Glorious" @@ -92482,9 +93142,8 @@ msgid "" "You are incredibly beautiful. People cannot help themselves for your " "charms, and will do whatever they can to please you." msgstr "" -"Du bist unbeschreiblich wunderschön. Leute können deinem Charme nicht " -"widerstehen und werden alles tun, was in ihrer Macht steht, um dir zu " -"gefallen." +"Du bist unglaublich schön. Menschen können deinem Charme nicht widerstehen " +"und werden alles tun, was in ihrer Macht steht, um dir zu gefallen." #: lang/json/mutation_from_json.py msgid "Snout" @@ -93581,8 +94240,8 @@ msgid "" "your whole body. Activate to pull your head and limbs into your shell, " "trading mobility and vision for warmth and shelter." msgstr "" -"Dein schützender Panzer ist groß genug gewachsen, um – wenn es sein muss – " -"deinen ganzen Körper zu bedecken. Aktiviere dies, um deinen Kopf und deine " +"Dein schützender Panzer ist groß genug gewachsen, um - wenn es sein muss - " +"deinen ganzen Körper zu bedecken. Aktiviere ihn, um deinen Kopf und deine " "Gliedmaßen in deinen Panzer einzuziehen und Mobilität und Sicht gegen Wärme " "und Unterschlupf einzutauschen." @@ -93931,7 +94590,7 @@ msgstr "" #: lang/json/mutation_from_json.py msgid "Toxic Flesh" -msgstr "" +msgstr "Giftiges Fleisch" #. ~ Description for Toxic Flesh #: lang/json/mutation_from_json.py @@ -93969,7 +94628,7 @@ msgstr "" #: lang/json/mutation_from_json.py msgid "Shark Teeth" -msgstr "" +msgstr "Haifischzähne" #. ~ Description for Shark Teeth #: lang/json/mutation_from_json.py @@ -94179,6 +94838,11 @@ msgid "" "slightly faster, and suffer no reading time penalty for books too complex " "for you to easily understand." msgstr "" +"Wochenlanges Durchblättern von Handbücher und Anstellen von Nachforschungen " +"zu Themen, in denen du nicht sonderlich bewandert bist, haben dich gelehrt, " +"wie du schneller das findest, was du brauchst. Du liest nun etwas schneller " +"und erleidest keine Lesezeitstrafe für Bücher, die an sich zu komplex für " +"dich sind, um sie einfach zu verstehen." #: lang/json/mutation_from_json.py msgid "Carries Brandy" @@ -94833,7 +95497,7 @@ msgstr "" #: lang/json/npc_from_json.py msgid "Tester" -msgstr "" +msgstr "Tester" #: lang/json/npc_from_json.py msgid "Representative" @@ -94986,7 +95650,7 @@ msgstr "Fluss" msgid "river bank" msgstr "Flussufer" -#: lang/json/overmap_terrain_from_json.py +#: lang/json/overmap_terrain_from_json.py lang/json/snippet_from_json.py msgid "house" msgstr "Wohnhaus" @@ -96035,7 +96699,7 @@ msgstr "Rauchsalon" #: lang/json/overmap_terrain_from_json.py msgid "music venue" -msgstr "" +msgstr "Musikveranstaltung" #: lang/json/overmap_terrain_from_json.py msgid "gambling hall" @@ -96061,6 +96725,14 @@ msgstr "Wohnwagenplatz" msgid "mass grave" msgstr "Massengrab" +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "Bahnhof" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "Bahnhofsparkplatz" + #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" msgstr "verlassener Drive-Through" @@ -96175,7 +96847,7 @@ msgstr "Diner" #: lang/json/overmap_terrain_from_json.py msgid "apartment" -msgstr "" +msgstr "Apartment" #: lang/json/overmap_terrain_from_json.py msgid "dealership" @@ -96211,7 +96883,7 @@ msgstr "Bunker" #: lang/json/overmap_terrain_from_json.py msgid "scavenger bunker" -msgstr "" +msgstr "Sammlerbunker" #: lang/json/overmap_terrain_from_json.py msgid "VFW hall" @@ -96404,15 +97076,15 @@ msgstr "Kriegsdenkmal" #: lang/json/overmap_terrain_from_json.py msgid "ruined cabin - barn" -msgstr "" +msgstr "zerstörte Hütte - Scheune" #: lang/json/overmap_terrain_from_json.py msgid "ruined cabin - car corner" -msgstr "" +msgstr "zerstörte Hütte - Autohändler" #: lang/json/overmap_terrain_from_json.py msgid "ruined cabin - dirt plaza" -msgstr "" +msgstr "zerstörte Hütte - Schmutzfläche" #: lang/json/overmap_terrain_from_json.py msgid "FEMA refugee camp" @@ -100838,6 +101510,11 @@ msgid "" "smarter, and memorized the entire handbook. Let's hope that knowledge helps" " you now." msgstr "" +"Du wurdest sehr vermögend, ob durch Glück oder Willen, und hast Spiele für " +"Leute veranstaltet, die der Großteil der Welt bei ihrem Vornamen kennt. Du " +"konntest es dir leisten, deine Spieler zu verwöhnen, also tatest du es. Du " +"investiertest in Bioniken, um dich schlauer zu machen und hast dir das " +"gesamte Handbuch gemerkt. Hoffen wir, dass dir dieses Wissen nun hilft." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -100854,6 +101531,11 @@ msgid "" "smarter, and memorized the entire handbook. Let's hope that knowledge helps" " you now." msgstr "" +"Du wurdest sehr vermögend, ob durch Glück oder Willen, und hast Spiele für " +"Leute veranstaltet, die der Großteil der Welt bei ihrem Vornamen kennt. Du " +"konntest es dir leisten, deine Spieler zu verwöhnen, also tatest du es. Du " +"investiertest in Bioniken, um dich schlauer zu machen und hast dir das " +"gesamte Handbuch gemerkt. Hoffen wir, dass dir dieses Wissen nun hilft." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -102089,6 +102771,148 @@ msgstr "" "Freiheit, in der du tun konntest, was du wolltest, brauchst du jetzt diese " "Fähigkeiten zum Überleben." +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "Geweckter" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" +"Du wurdest mitten in der Nacht von einem seltsamen Geräusch geweckt. Nur mit" +" einer Taschenlampe ausgerüstet, bist du losgezogen, um dem Lärm auf den " +"Grund zu gehen und hast dich in der Apokalypse wiedergefunden." + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "Geweckte" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" +"Du wurdest mitten in der Nacht von einem seltsamen Geräusch geweckt. Nur mit" +" einer Taschenlampe ausgerüstet, bist du losgezogen, um dem Lärm auf den " +"Grund zu gehen und hast dich in der Apokalypse wiedergefunden." + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "Bionikradfahrer" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" +"Dein Training und deine Augmentationen für den Cyber-Olympics-" +"Radsportwettbewerb haben dir einen schönen Vorteil verschafft, um dem Beginn" +" der Katastrophe zu entkommen. Kannst du der Apokalypse für immer davon " +"laufen?" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "Bionikradfahrerin" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" +"Dein Training und deine Augmentationen für den Cyber-Olympics-" +"Radsportwettbewerb haben dir einen schönen Vorteil verschafft, um dem Beginn" +" der Katastrophe zu entkommen. Kannst du der Apokalypse für immer davon " +"laufen?" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "Schweißer" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" +"Du hast vor der Katastrophe für eine Offshore-Firma als Schweißer " +"gearbeitet, und warst gerade auf dem Weg nach Hause, als sich das Ende " +"anbahnte und schließlich mit aller Wucht zuschlug. Wenigstens hast du noch " +"dein Handwerkszeug bei dir." + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "Schweißerin" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" +"Du hast vor der Katastrophe für eine Offshore-Firma als Schweißerin " +"gearbeitet, und warst gerade auf dem Weg nach Hause, als sich das Ende " +"anbahnte und schließlich mit aller Wucht zuschlug. Wenigstens hast du noch " +"dein Handwerkszeug bei dir." + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "Primitiver Überlebenskünstler" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"Du wusstest, dass der Tag kommt. Der Tag, an dem alles den Bach runter geht." +" Du hast dich gut vorbereitet, nicht durch schnöde Ausrüstung, sondern durch" +" Training und das Einüben von Fertigkeiten. All die Tage im Wald zahlen sich" +" nun aus. Wenn deine Vorfahren ohne Technik überlebt konnten, dann wirst du " +"verdammt sein, wenn du es nicht auch schaffst." + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "Primitive Überlebenskünstlerin" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"Du wusstest, dass der Tag kommt. Der Tag, an dem alles den Bach runter geht." +" Du hast dich gut vorbereitet, nicht durch schnöde Ausrüstung, sondern durch" +" Training und das Einüben von Fertigkeiten. All die Tage im Wald zahlen sich" +" nun aus. Wenn deine Vorfahren ohne Technik überlebt konnten, dann wirst du " +"verdammt sein, wenn du es nicht auch schaffst." + #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "WEAPON" @@ -103347,21 +104171,21 @@ msgstr "Herausforderung: Labor" #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" -"Du warst in einer Laborzelle eingesperrt, bis eine Art Monster das Glas " -"zerbrach. Das Labor wurde abgeriegelt! Finde einen Weg zur Flucht." +"Du wurdest in ein Labor gesperrt, ohne einen (offensichtlichen) Weg nach " +"draußen. Finde einen Fluchtweg oder verhungere." #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" -"Du warst in einer Laborzelle eingesperrt, bis eine Art Monster das Glas " -"zerbrach. Das Labor wurde abgeriegelt! Finde einen Weg zur Flucht." +"Du wurdest in ein Labor gesperrt, ohne einen (offensichtlichen) Weg nach " +"draußen. Finde einen Fluchtweg oder verhungere." #. ~ Starting location for scenario 'Challenge-Lab'. #: lang/json/scenario_from_json.py @@ -104183,7 +105007,7 @@ msgstr "" #: lang/json/scenario_from_json.py msgctxt "start_name" msgid "Scavenger Bunker" -msgstr "" +msgstr "Sammlerbunker" #. ~ Name for scenario 'Robots' for a male character #: lang/json/scenario_from_json.py @@ -104215,6 +105039,50 @@ msgid "" "zombies." msgstr "" +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "Bunker Evakuierter" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "Bunker Evakuierte" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" +"Irgendwie hattest du die richtigen Verbindungen oder eine verlässliche " +"Informationsquelle... und deshalb hast du diesen LMOE-Unterschlupf gefunden." +" Jetzt ist es Sommer und auf irgendeine Weise hast du tatsächlich überlebt, " +"nun sollten die Dinge ein weniger leichter sein." + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" +"Irgendwie hattest du die richtigen Verbindungen oder eine verlässliche " +"Informationsquelle... und deshalb hast du diesen LMOE-Unterschlupf gefunden." +" Jetzt ist es Sommer und auf irgendeine Weise hast du tatsächlich überlebt, " +"nun sollten die Dinge ein weniger leichter sein." + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "LMOE-Unterschlupf" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" @@ -104386,7 +105254,7 @@ msgstr "" "lassen dich durch komplexere Softwaresysteme navigieren und sogar ihre " "Sicherheitssysteme umgehen." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "Kochen" @@ -104521,7 +105389,7 @@ msgstr "" "Ertrinken, beeinflusst deine Kampfeffizienz und Geschwindigkeit im tiefen " "Wasser und die Einbußen mit schwerer Ausrüstung." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "Schneiderhandwerk" @@ -104769,7 +105637,7 @@ msgstr "Waffe" #: lang/json/snippet_from_json.py msgid "Fires can spread easily, especially with abundance of fuel." msgstr "" -"Feuer können sich leicht ausbreiten, insbesondere dann, wenn reichlich " +"Feuer kann sich leicht ausbreiten, insbesondere dann, wenn reichlich " "Brennstoff vorhanden ist." #: lang/json/snippet_from_json.py @@ -104780,8 +105648,8 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "Light itself doesn't draw zombies, it's sight, noise or smell." msgstr "" -"Nicht Licht an sich zieht Zombies an, es ist vielmehr Sichtbarkeit, Lärm " -"oder Geruch." +"Nicht das Licht an sich zieht die Zombies an, es ist vielmehr Sichtbarkeit, " +"Lärm oder Geruch." #: lang/json/snippet_from_json.py msgid "Moose may not be your friend." @@ -104795,23 +105663,28 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "Peek around corners. You may see your enemy before it sees you." msgstr "" -"Spähe um Ecken und du könntest deinen Feind sehen, bevor er dich sieht." +"Spähe vorsichtig um Ecken herum und du könntest deine Feinde sehen, bevor " +"sie dich sehen." #: lang/json/snippet_from_json.py msgid "Cold food lasts longer. Find a cool basement or make a root cellar." msgstr "" +"Kaltes Essen hält sich länger. Finde einen kühlen Keller oder bau dir doch " +"einfach selbst einen." #: lang/json/snippet_from_json.py msgid "" "You died? That's a part of the experience. Try again with what you've " "learned." msgstr "" +"Bist du gestorben? Das ist ein Teil der Spielerfahrung. Versuchen es, mit " +"dem was du gelernt hast, einfach noch einmal." #: lang/json/snippet_from_json.py msgid "Freezing food? Put it by a fire or heat it up in a pan." msgstr "" -"Einfrierende Nahrung? Lege sie in die Nähe eines Feuers oder erhitzen sie in" -" einer Pfanne." +"Einfrierende Nahrung? Dann lege sie einfach in die Nähe eines Feuers oder " +"erhitzen sie in einer Pfanne." #: lang/json/snippet_from_json.py msgid "Underground cave or a basement is always cool, but never freezes." @@ -104824,10 +105697,14 @@ msgid "" "Afraid of wild life? Yell untill it goes away. But beware of what comes " "instead." msgstr "" +"Fürchtest du dich vor wilden Tieren. Schrei einfach, bis sie die Flucht " +"ergreifen. Aber hüte dich vor dem, was stattdessen kommen könnte." #: lang/json/snippet_from_json.py msgid "Animals and zombies are not friends. You can take advantage of that." msgstr "" +"Die Zombies und das Tierreich sind nicht miteinander befreundet. Das kannst " +"du gut zu deinem eigenen Vorteil nutzen." #: lang/json/snippet_from_json.py msgid "Door is not the only way in. Or out if that matters." @@ -104838,6 +105715,8 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "Don't fight against the odds. There's no shame in running to survive." msgstr "" +"Kämpfe nicht, wenn deine Chancen schlecht stehen. Es liegt wirklich keine " +"Schande im Wegrennen, um zu überleben." #: lang/json/snippet_from_json.py msgid "You don't have to sit next to fire to use it." @@ -104876,23 +105755,24 @@ msgid "" "Balance armor versus encumbrance. Even dropping a backpack can help in " "melee." msgstr "" -"Versuche eine vernüftige Balance zwischen Rüstung und Hinderung zu finden. " -"Selbst das Fallenlassen deines Rucksacks kann sich im Nahkampf vorteilhaft " -"auswirken." +"Finde eine vernüftige Balance zwischen Rüstung und Hinderung. Selbst das " +"Fallenlassen deines Rucksacks wirkt sich im Nahkampf vorteilhaft aus." #: lang/json/snippet_from_json.py msgid "" "Scared of melee? Throw some things at enemies and use reach weapons like " "spears." msgstr "" -"Angst vor dem Nahkampf? Wirf doch einfach Dinge auf Gegner und verwende " -"Waffen mit Reichweite z.B. Speere." +"Angst vor dem Nahkampf? Dann wirf doch einfach Dinge auf deine Gegner und " +"verwende Waffen mit mehr Reichweite z.B. Speere." #: lang/json/snippet_from_json.py msgid "" "Makeshift weapons can break easily, but they are weapons, and can be made " "again." msgstr "" +"Behelfsmäßige Waffen können leicht brechen, aber es sind immerhin Waffen und" +" sie können auch leicht wieder hergestellt werden." #: lang/json/snippet_from_json.py msgid "Not much survives a car at 120mph. Can you?" @@ -104902,11 +105782,15 @@ msgstr "Es gibt nicht viel, dass ein Auto mit 120 km/h überlebt, oder?" msgid "" "You don't want an overgrown cockroach in your rotten food. Get rid of it." msgstr "" +"Lust auf neue Haustiere? Dann entsorg doch deine verrotteten Nahrungsmittel " +"einfach in deinen eigenen vier Wänden." #: lang/json/snippet_from_json.py msgid "" "Medicine can help you survive in a pinch but avoid overdose and addictions." msgstr "" +"Medizin hilft dir beim Überleben. Aber achte, um eine Abhängigkeit zu " +"vermeiden, auf die richtige Dosierungen." #: lang/json/snippet_from_json.py msgid "" @@ -104934,18 +105818,20 @@ msgid "" "improve." msgstr "" "Fühlst du dich nach dem Aufwachen seltsam? Versuche doch, gesünder zu essen," -" und deine Gesundheit könnte davon profitieren." +" und dein Wohlbefinden könnte davon profitieren." #: lang/json/snippet_from_json.py msgid "" "Eat well or your health might suffer. Fast food is only good in a pinch." msgstr "" +"Iss gut und ausgewogen oder deine Gesundheit könnte darunter leiden. Jeden " +"Tag Fast Food zu essen, ist vermutlich keine gute Idee, oder?" #: lang/json/snippet_from_json.py msgid "Nature can provide. You can live off the land if you learn how." msgstr "" -"Die Natur kann dich versorgen. Du kannst vom Land leben, wenn du lernst, wie" -" es geht." +"Du kannst vom Natur leben, wenn du lernst, wie es geht. Land und Wälder " +"haben einen reichen Tisch für dich gedeckt." #: lang/json/snippet_from_json.py msgid "Raw food and water from unsafe sources can't be healthy? Right?" @@ -104956,6 +105842,8 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "Why walk all day to nearest town when you can adapt a vehicle?" msgstr "" +"Warum denn den ganzen Tag bis zur nächsten Stadt laufen, wenn du doch ein " +"Fahrzeug klar machen könntest?" #: lang/json/snippet_from_json.py msgid "Food from before cataclysm won't last forever. Keep that in mind." @@ -104968,16 +105856,22 @@ msgid "" "You can make unusual things from usual stuff. Go full MacGyver style if " "needed." msgstr "" +"Du kannst ungewöhnliche Dinge aus ganz gewöhnlichen Materialien zaubern. " +"Mach doch heute einen auf MacGyver." #: lang/json/snippet_from_json.py msgid "" "There are fungi you want to eat, and those you want to burn. You'll know " "the difference." msgstr "" +"Es gibt essbare Pilze und Pilze, die du lieber verbrennen solltest. Du wirst" +" den Unterschied schon früh genug erkennen." #: lang/json/snippet_from_json.py msgid "Having a backup weapon is wise. So is having a backup plan." msgstr "" +"Es könnte sich als klug erweisen, sowohl eine Ausweichswaffe als auch einen " +"Ausweichsplan in der Hinterhand zu haben." #: lang/json/snippet_from_json.py msgid "" @@ -104987,7 +105881,8 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "Wet and angry? A dry towel will bring your smile back." -msgstr "Durchnässt und wütend? Ein trockenes Handtuch kann Wunder bewirken." +msgstr "" +"Durchnässt und wütend? Ein trockenes Handtuch kann wahre Wunder bewirken." #: lang/json/snippet_from_json.py msgid "Like to gamble? Use mutagen! Be a winner today!" @@ -105003,7 +105898,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "You're on fire? Stop and wait to put it out." -msgstr "Du brennst? Aufhören und warten, um das Feuer zu löschen." +msgstr "Du brennst? Stoppe und warten, bis das Feuer gelöscht ist." #: lang/json/snippet_from_json.py msgid "" @@ -105013,7 +105908,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "Routine kills. Stay alert! Don't let your guard down." -msgstr "" +msgstr "Der immer gleiche Trott kann tödlich enden. Bleib wachsam!" #: lang/json/snippet_from_json.py msgid "" @@ -105027,8 +105922,8 @@ msgstr "" msgid "" "Famous last words: Let's poke this electric zombie with a metal stick." msgstr "" -"Berühmte letzte Worte: »Lass uns diesen elektrisch-knisternden Zombie mit " -"einem Metallstab erschlagen.«" +"Berühmte letzte Worte: »Lass uns doch diesen elektrisch-knisternden Zombie " +"mit einem schönen Metallstab erschlagen.«" #: lang/json/snippet_from_json.py msgid "" @@ -105061,10 +105956,14 @@ msgid "" "Food's shelf life is not given. Storage conditions matter, especially " "temperature." msgstr "" +"Lebensmittelhaltbarkeit ist keine feste Größe. Lagerbedingungen, vor allem " +"Temperatur, haben enormen Einfluss auf die tatsächliche Haltbarkeit." #: lang/json/snippet_from_json.py msgid "Frozen food doesn't rot, but may be inedible if not defrosted." msgstr "" +"Gefrorene Lebensmittel verrotten zwar nicht, können aber ungenießbar sein, " +"wenn sie nicht zuvor aufgetaut werden." #: lang/json/snippet_from_json.py msgid "" @@ -105095,6 +105994,56 @@ msgid "" "Don't be afraid to make the game easier on yourself. Worlds can be made to " "spawn with more resources." msgstr "" +"Hab keine Angst davor, das Spiel für dich einfacher zu machen. Die " +"Spielwelten können z.B. auf eine höhere Ressourcen-Rate eingestellt werden." + +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "" +"Lass dich nicht mit heruntergelassener Hose erwischen. Toilettenpapier gibt " +"es doch sowieso nicht mehr." + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "" +"Eine beeinträchtigte Bewegungsgeschwindigkeit bedingt durch schwieriges " +"Gelände kann auch zu deinem Vorteil eingesetzt werden." + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best" +" friend." +msgstr "" +"Wenn die ganze Stadt zu einem großen Supermarkt geworden ist, wird der " +"Einkaufswagen zu deinem besten Freund." + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "" +"Das Ausprobieren verschiedener Charaktere, Berufe und Szenarien kann dein " +"Spiel aufpeppen. Versuch es doch mit ein wenig Rollenspiel!" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "" +"Ein geretteter Überlebender ist gleichsam ein gewonnener Freund. Zumindest " +"meistens..." + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "" +"Neu bei Cataclysm? Wirf einen Blick in das Menü für die Tastenbelegung und " +"lerne dort einige Grundlagen kennen." + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "Erwarte das Unerwartete, auch wenn es die spanische Inquisition ist." #: lang/json/snippet_from_json.py msgid "" @@ -106116,6 +107065,566 @@ msgstr "" "Codenamen »VAULT« vorgeschlagen, um die Produktion von PE062 hier " "fortzusetzen." +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "Popular" + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "Top-Forty" + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "Coorporate" + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "Commercial" + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "Alternative" + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "College" + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "Arthouse" + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "Underground" + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "Experimental" + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "Forgotten" + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "Traditional" + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "Historical" + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "Classic" + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "Modern" + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "Adult" + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "Contemporary" + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "Christian" + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "Pagan" + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "British" + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "Continental" + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "Tropical" + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "Island" + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "New-York" + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "Hollywood" + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "Trans-Pacific" + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "Latin" + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "Instrumental" + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "Fusion" + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "Visual" + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "Liquid" + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "Digital" + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "Procedurally-Generated" + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "Melodic" + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "Harmonious" + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "Discordant" + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "Contextual" + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "Conceptual" + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "Collaborative" + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "Rhythmic" + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "-Neo-" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "-Retro-" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "-Post-" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "-Anti-" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "-Hard-" + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "-Soft-" + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "-Speed-" + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "-Slow-" + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "-Hi-Fi-" + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "-Lo-Fi-" + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "-Mid-Fi-" + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "-Ambient-" + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "-Dance-" + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "-Chill-" + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "-Psycho-" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "-Turbo-" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "-Prog-" + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "-Glam-" + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "-Outsider-" + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "-indie-" + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "-Dark-" + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "-Death-" + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "-Electro-" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "-Acid-" + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "-Space-" + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "-Ghetto-" + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "-Street-" + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "-Urban-" + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "-World-" + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "-Euro-" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "-Afro-" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "-Grunge-" + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "-Brass-" + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "-Splatter-" + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "-Swamp-" + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "-Ghost-" + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "-Shadow-" + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "-Neuro-" + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "-Hyper-" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "-Carnival-" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "-Meta-" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "-Techno-" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "-Synth-" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "-Robo-" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "-Skate-" + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "-Freak-" + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "-Surf-" + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "-Mutant-" + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "-Jurassic-" + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "-Free-" + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "-Garage-" + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "-Garbage-" + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "-Break-" + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "-Laser-" + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "-Porno-" + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "-Hypno-" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "-Lunar-" + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "-Thunder-" + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "-Clown-" + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "-Murder-" + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "-Narco-" + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "-Gangster-" + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "Tune" + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "Core" + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "Wave" + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "Beat" + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "Step" + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "Pop" + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "Hop" + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "Drums" + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "Style" + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "Chant" + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "Folk" + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "Country" + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "Jazz" + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "Blues" + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "Soul" + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "R&B" + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "Hip-Hop" + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "Swing" + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "Funk" + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "Disco" + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "Polka" + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "Tango" + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "Salsa" + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "Mambo" + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "Electronic" + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "Metal" + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "Reaggae" + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "Ska" + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "Dreckskerl" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "Thrash" + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "Goth" + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "Industrial" + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "Psychedelic" + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "Noise" + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "Sound" + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "Revival" + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "Gospel" + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "Oper" + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "Shanties" + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -106364,7 +107873,7 @@ msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " "a man carrying a somewhat confused horse on his shoulders. He is flanked by" " two scantily clad nurses who hold bloody chainsaws and give approving " -"thumbs up. His bulging knees and elbows are stiched and seem to be the " +"thumbs up. His bulging knees and elbows are stitched and seem to be the " "source of his ability. The caption reads: \"Brand new! Horse power at " "hand!\"" msgstr "" @@ -106372,7 +107881,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " -"a man smiling while being relentlesly punched by a boxer. He doesn't even " +"a man smiling while being relentlessly punched by a boxer. He doesn't even " "sweat as punches have no effect on him. Two scantily clad nurses give " "approving thumbs up from the background. The caption reads: \"Bouncy as " "never before! Absorb those shocks!\"" @@ -110180,6 +111689,198 @@ msgstr "" "funktionieren werden, wenn du keine Anästhetika mitbringst, um dich in den " "Schlaf zu versetzen." +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "" +"Wissen ist Macht. Ernsthaft, mit doch einfach mal ein Buch in die Hand." + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "" +"Nichts kann dich töten, wenn alles bereits tot ist. Nun, außer Kälte, Hunger" +" und… ach egal." + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no" +" environment to save now, but one can still save thyself I guess." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their components." +" This guy around here, McSomething whatever his name is, is a master at " +"this." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are" +" always better than two." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my" +" sorry ass away from the horde, with nothing more but some white powder I " +"got from that zombie. Saved me that time." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "" +"Vermeide es, Abschussgeräte in allzu engen Gängen zu verwenden, du könntest " +"ja daneben schießen." + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it " +"lemon?" +msgstr "" +"Einst traf ich eine verrückte Chemikerin, die aus einer einfachen Kartoffel " +"eine Batterie gemacht hat... oder war es Zitrone?" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "" + #: lang/json/snippet_from_json.py msgid " " msgstr ", " @@ -110284,10 +111985,6 @@ msgstr "Arschlecker" msgid "piece of shit" msgstr "Hackfresse" -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "Dreckskerl" - #: lang/json/snippet_from_json.py msgid "scumbag" msgstr "Abschaum" @@ -110564,7 +112261,7 @@ msgstr "Hi, ." msgid "never" msgstr "niemals" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" msgstr "nein" @@ -111460,7 +113157,7 @@ msgstr "So, Hände hoch!" msgid "Hands in the air, !" msgstr "Hände hoch, !" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" msgstr "Bewegung" @@ -114649,10 +116346,26 @@ msgstr "LMOE-Unterschlupf" msgid "Middle of Nowhere" msgstr "Mitten im Nirgendwo" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "Experiment Zelle" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "Wissenschaftslabor" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "Unterste Etage eines Wissenschaftslabors" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "Gefrorenes Wissenschaftslabor" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "Tiefgefrorenes Wissenschaftslabor" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "Einkaufszentrum – Verladerampe" @@ -114719,7 +116432,7 @@ msgstr "" #: lang/json/start_location_from_json.py msgid "Scavenger Bunker" -msgstr "" +msgstr "Sammlerbunker" #: lang/json/start_location_from_json.py msgid "Swamp" @@ -114749,6 +116462,14 @@ msgstr "Villa" msgid "Gas Station" msgstr "Tankstelle" +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "Elektronikfachgeschäft" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" +msgstr "Bekleidungsgeschäft" + #: lang/json/talk_topic_from_json.py msgid "That sure is a shiny badge you got there!" msgstr "Das ist wirklich eine glänzende Dienstmarke, die Sie da haben!" @@ -114781,8 +116502,7 @@ msgstr "Was ist mit deinen Ohren?" msgid "Anything I can help with?" msgstr "Irgendwas, wobei ich helfen kann?" -#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Well, bye." msgstr "Gut, tschüss." @@ -115016,7 +116736,8 @@ msgstr "Ist mir egal." msgid "I see." msgstr "Ich verstehe." -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Oh, okay." msgstr "Oh, okay." @@ -115031,7 +116752,7 @@ msgstr "Vergiss es, ich bin nicht interessiert." #: src/npctalk.cpp src/npctalk.cpp src/pickup.cpp src/player.cpp #: src/player.cpp src/veh_interact.cpp msgid "Never mind." -msgstr "Schon gut." +msgstr "Ach, schon gut." #: lang/json/talk_topic_from_json.py msgid "I'll do it!" @@ -115093,6 +116814,262 @@ msgstr "Danke." msgid "Thanks, bye." msgstr "Danke, tschüss." +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "Also, ich glaub, es gibt nur noch uns." + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "Wenigstens haben wir eine Unterkunft." + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "Was sollten wir nun tun?" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "Irgendwelche Tipps?" + +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "Kann ich irgendetwas für dich tun?" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "Willst du mit mir reisen?" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's trade items." +msgstr "Lass uns handeln!" + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "Ich kann den Unterschlupf nicht ohne Ausrüstung verlassen." + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "" +"Keine Ahnung, uns nach Vorräten und anderen Überlebenden umsehen, vermute " +"ich." + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "" +"Vielleicht sollten wir damit anfangen, diesen Ort zu verbarrikadieren." + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to" +" disappear quickly from here." +msgstr "" +"Ich denke, es könnte wirklich nützlich sein, wenn man ein fahrtüchtiges Auto" +" hat, wenn wir schnell von hier verschwinden wollen." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "" +"Wir könnten uns nach einen dieser Bauernhöfe da draußen umsehen. Sie können " +"viel Nahrung bieten und sie sind nicht in der Nähe der Städte." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "" +"Wir sollten wahrscheinlich fern vor den Städten bleiben, selbst, wenn es " +"dort Unmengen nützliches Zeugs gibt." + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "Hmm, okay." + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "Nicht, bevor ich ein paar Antibiotika kriege." + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "Du hast mich erst kürzlich gefragt; frag später nach." + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "Warum sollte ich mit dir reisen?" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "Verstanden. Ich hol diese Antibiotika." + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "Richtig, richtig. Ich frag später nochmal." + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "Ich kann dich beschützen." + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "Du kannst mich beschützen." + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "Wir sind Freunde, oder?" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "Wenn du es nicht tust, werd ich dich töten." + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "Alles klar, ich komme mit." + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "Großartig!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "In Ordnung, los geht’s!" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "Hmm … Ich glaube nicht." + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "Willst du wirklich gehen?" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "Ja, ich bin mir sicher. Tschüss." + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "Ach was, ich mach nur Scherze." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp +msgid "What is it?" +msgstr "Was gibt’s?" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "Wie weit noch?" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "Ich will für eine Weile die Führung übernehmen." + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "Geh zur Seite! Ich führe nun." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "Los geht’s!" + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "In Ordnung. Du übernimmst die Führung." + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "Gut. Noch etwas …" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "In Ordnung, lass uns gehen." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "Okay, okay." + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "Auf keinen Fall! Ich würde alleine zurückgelassen werden." + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "Ich bin auf Wache." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "Ich möchte, dass du mich begleitest." + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "Wir sehen uns." + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "Damit fühl ich mich nicht so ganz wohl …" + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "Ich lass dir deinen Freiraum." + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "Ich behalte das lieber für mich." + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "Ich verstehe …" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "In Ordnung. Hier." + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "Danke!" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "Danke! Aber kann ich noch mehr haben?" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "Danke, bis später!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "In Ordnung, in Ordnung. Tschuldigung." + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "Ernsthaft, gib mir mehr Zeug!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "Okay. Tschüss." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "In Ordnung, lass uns anfangen!" + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "Klingt gut." + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "Gut, übernimm die Führung." + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "Nein, wir sind hier okay." + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "Wenn ich darüber nachdenke, vergiss es." + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "Hallo, Marshal!" @@ -115920,10 +117897,6 @@ msgstr "Was muss getan werden?" msgid "We're abandoning this camp." msgstr "Wir geben dieses Lager auf." -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "Wir sehen uns." - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "Hoffentlich bist du hier zum Handeln." @@ -115968,7 +117941,7 @@ msgstr "" msgid "Are you looking to buy anything else?" msgstr "Willst du etwas anderes kaufen?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." msgstr "Sehr gut …" @@ -116112,21 +118085,12 @@ msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of" " operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " "forces to conduct recovery operations." msgstr "" -"Ich führe das, was von meiner Kompanie übrigblieb, in einer Mission, die " -"Einrichtung erneut zu sichern. Wir betreteten den Komplex mit zwei Dutzend " -"Männern und gingen direkt die Sicherung dieses Kontrollraums an. Von hier " -"aus versandte ich meine Männer, um wichtige Systeme in diesem Stockwerk und " -"den darunterliegenden Stockwerken zu sichern. Wenn wir erfolgreich sind, " -"kann diese Einrichtung gesäubert werden und als eine ständige " -"Operationsbasis dieser Region dienen. Was am wichtigsten ist, dies wird es " -"uns ermöglichen, den Flüchtlingsverkehr weg von überfüllten Außenposten zu " -"lenken und weitere unserer Kräfte auf Rettungsoperationen zu konzentrieren." #: lang/json/talk_topic_from_json.py msgid "Seems like a decent plan..." @@ -116812,7 +118776,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Let's see what you've managed to find." -msgstr "" +msgstr "Lass mal sehen, was du so gefunden hast." #: lang/json/talk_topic_from_json.py msgid "" @@ -116832,7 +118796,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "I'll think about it." -msgstr "" +msgstr "Ich denke drüber nach." #: lang/json/talk_topic_from_json.py msgid "" @@ -116844,7 +118808,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Tell me more about the scavenging runs." -msgstr "" +msgstr "Erzähl mir mehr über die Plünderungsaktionen." #: lang/json/talk_topic_from_json.py msgid "What kind of tasks do you have for me?" @@ -116852,7 +118816,7 @@ msgstr "Was für Aufgaben hast du für mich?" #: lang/json/talk_topic_from_json.py msgid "No, thanks." -msgstr "" +msgstr "Nein, danke." #: lang/json/talk_topic_from_json.py msgid "Want a drink?" @@ -116860,11 +118824,11 @@ msgstr "Willst du einen Drink?" #: lang/json/talk_topic_from_json.py msgid "I'm looking for information." -msgstr "" +msgstr "Ich suche nach Informationen." #: lang/json/talk_topic_from_json.py msgid "Let me see what you keep behind the counter." -msgstr "" +msgstr "Lass mich mal sehen, was du hinter dem Tresen hast." #: lang/json/talk_topic_from_json.py msgid "What do you have on tap?" @@ -116920,7 +118884,7 @@ msgstr "[12$] Ich nehme einen Schuss Whisky" #: lang/json/talk_topic_from_json.py msgid "On second thought, don't bother." -msgstr "" +msgstr "Wenn ich so darüber nachdenke, vergiss es einfach." #: lang/json/talk_topic_from_json.py msgid "Can I interest you in a trim?" @@ -116951,10 +118915,6 @@ msgid "I can't imagine what I'd need your assistance with." msgstr "" "Ich kann mir nicht vorstellen, wofür ich deine Hilfe benötigen könnte." -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "Rühr dich nicht vom Fleck, während ich meine Schere hole …" @@ -117030,10 +118990,6 @@ msgstr "Ich bin froh, dich an Bord zu haben." msgid "Can I trade for supplies?" msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "Kann ich irgendetwas für dich tun?" - #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " @@ -117153,7 +119109,7 @@ msgstr "Das ist eine NPC-verfügbar-Testantwort." #: lang/json/talk_topic_from_json.py msgid "This is a om_location_field test response." -msgstr "" +msgstr "Das ist eine om_location_field Testantwort." #: lang/json/talk_topic_from_json.py msgid "This is a faction camp any test response." @@ -117161,27 +119117,27 @@ msgstr "Das ist jegliche Fraktionslager-Testantwort." #: lang/json/talk_topic_from_json.py msgid "This is a nearby role test response." -msgstr "" +msgstr "Das ist eine nearby role Testantwort." #: lang/json/talk_topic_from_json.py msgid "This is a npc allies 1 test response." -msgstr "" +msgstr "Das ist eine npc allies 1 Testantwort." #: lang/json/talk_topic_from_json.py msgid "This an error! npc allies 2 test response." -msgstr "" +msgstr "Das ist eine error! npc allies 2 Testantwort." #: lang/json/talk_topic_from_json.py msgid "This is an or trait test response." -msgstr "" +msgstr "Das ist eine or trait Testantwort." #: lang/json/talk_topic_from_json.py msgid "This is an and cash, available, trait test response." -msgstr "" +msgstr "Das ist eine and cash, available, trait Testantwort." #: lang/json/talk_topic_from_json.py msgid "This is a complex nested test response." -msgstr "" +msgstr "Das ist eine complex nested Testantwort." #: lang/json/talk_topic_from_json.py msgid "This is a u_add_effect - infection response" @@ -117313,7 +119269,7 @@ msgstr "Packt eure Sachen, . Wir gehen auf eine Reise." msgid "Not at technique at all" msgstr "Überhaupt keine Technik" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp src/martialarts.cpp msgid "Block" msgstr "Blockieren" @@ -117471,8 +119427,6 @@ msgid "Rapid Strike" msgstr "Schneller Schlag" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "50% Züge, 66% Schaden" @@ -117588,11 +119542,6 @@ msgstr " entwaffnet %s mit der Peitsche" msgid "Counterattack" msgstr "Konterangriff" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "Gegenangriff beim Blocken, Gegenangriff beim Ausweichen" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -117607,22 +119556,10 @@ msgstr " verpasst %s einen Konterangriff" msgid "Feint" msgstr "Täuschungsmanöver" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "Kostenloser Wiederanlauf nach einem Fehlschlag" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "Griffbrecher" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "Einen Griff brechen" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -117637,11 +119574,6 @@ msgstr "Geschickt verpasst %s einen Jab" msgid "Cross" msgstr "Cross" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "×1,2 Schlagschaden, min. 2 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -117656,12 +119588,6 @@ msgstr " verpasst %s einen Cross" msgid "Jab" msgstr "Jab" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "50% Züge, 66% Schaden, min. 3 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -117676,11 +119602,6 @@ msgstr " verpasst %s einen schnellen Jab" msgid "Uppercut" msgstr "Aufwärtshaken" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "Für 2 Züge betäuben, ×1,4 Schlagschden, min. 4 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -117695,12 +119616,6 @@ msgstr " verpasst %s einen Aufwärtshaken" msgid "Cross Counter" msgstr "Cross-Konter" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "" -"Für 2 Züge betäuben, um 1 Feld zurückwerfen, nur krit., min. 5 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -117729,14 +119644,6 @@ msgstr " schlägt %s schnell" msgid "karate chop" msgstr "Karatehieb" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "Für 2 Züge betäuben, nur krit., min. 4 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -117751,11 +119658,6 @@ msgstr " verpasst %s einen Karatehieb" msgid "throw" msgstr "Wurf" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "Für 1 Zug zu Boden werfen, um 1 Feld zurückwerfen, min 2. unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -117770,13 +119672,6 @@ msgstr " wirft %s" msgid "dodge throw" msgstr "Ausweichwurf" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "" -"Für 1 Zug zu Boden werfen, um 1 Feld zurückwerfen, Gegenangriff beim " -"Ausweichen, min. 6 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -117791,12 +119686,6 @@ msgstr " wirft %s reibungslos" msgid "feint at" msgstr "Täuschungsmanöver" -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "Kostenloser Wiederanlauf nach einem Fehlschlag, min. 2 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -117807,11 +119696,6 @@ msgstr "Du täuschst %s" msgid " feints at %s" msgstr " täuscht %s" -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "Ziel entwaffnen, min. 3 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -117822,21 +119706,11 @@ msgstr "Du entwaffnest %s" msgid " disarms %s" msgstr " entwaffnet %s" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "Für 1 Zug zu Boden werfen, um 1 Feld zurückwerfen, min. 3 unbewaffnet" - #: lang/json/technique_from_json.py lang/json/technique_from_json.py #: src/monster.cpp msgid "grab" msgstr "Griff" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "Für 2 Züge zu Boden werfen, min. 2 unbewaffnet" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "Präzisionsschlag" @@ -117851,20 +119725,10 @@ msgstr "Du schlägst %s präzise" msgid " strikes %s" msgstr " schlägt %s präzise" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "Kostenloser Wiederanlauf nach einem Fehlschlag, min. 1 unbewaffnet" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "Ellenbogen" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "50% Züge, nur krit., min. 2 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -117879,11 +119743,6 @@ msgstr " stößt %s mit dem Ellenbogen" msgid "kick" msgstr "Tritt" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "Für 1 Zug betäuben, min. 3 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -117908,19 +119767,6 @@ msgstr "Du verpasst %s ein »fliegendes Knie«" msgid " flying knees %s" msgstr " verpasst %s ein »fliegendes Knie«" -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "50% Züge, 66% Schaden, min. 2 unbewaffnet" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "Für 2 Züge betäuben, nur krit., min. 3 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -117931,34 +119777,14 @@ msgstr "Du verpasst %s einen Jab" msgid " jabs %s" msgstr " verpasst %s einen Jab" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "Für 1 Zug zu Boden werfen, min. 4 unbewaffnet" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "Griffbrecher" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "Einen Griff brechen, min. 4 unbewaffnet" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "Überraschungsangriff" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min" -" 3 melee" -msgstr "" -"Für 2 Züge betäuben, ×1,4 Schlagschaden, ×2 Schnittschaden, nur krit. min. 3" -" unbewaffnet, min. 3 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -117973,11 +119799,6 @@ msgstr " greift %s überraschend an" msgid "axe-kick" msgstr "Axe-Kick" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "Für 2 Züge betäuben, nur krit., min. 2 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -117992,11 +119813,6 @@ msgstr " verpasst %s einen Axe-Kick" msgid "side kick" msgstr "Seitentritt" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "Für 1 Zug betäuben, um 1 Feld zurückwerfen, min. 3 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -118011,11 +119827,6 @@ msgstr " verpasst %s einen Seitentritt" msgid "sweep kick" msgstr "Schwungtritt" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "Für 2 Züge zu Boden werfen, min. 4 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -118030,11 +119841,6 @@ msgstr "Schwunghaft tritt %s" msgid "biojutsu counter" msgstr "Biojutsu-Konter" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "Gegenangriff beim Blocken, min. 4 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -118063,13 +119869,6 @@ msgstr "Schnell schlitzt %s" msgid "biojutsu impale" msgstr "Biojutsu-Spieß" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "" -"Für 1 Zug betäuben, ×1,5 Schnittschaden, ×1,5 Schlagschaden, nur krit. min. " -"3 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -118080,20 +119879,10 @@ msgstr "Brutal spießt du %s auf" msgid " brutally impales %s" msgstr "Brutal spießt %s auf" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "Für 2 Züge zu Boden werfen, min. 2 Nahkampf" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "Weitschlag" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "Im breiten Bogen angreifen, nur krit., min. 5 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -118108,13 +119897,6 @@ msgstr " spaltet sich durch %s" msgid "Drunk feint" msgstr "Betrunkenheit vortäuschen" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "Kostenloser Wiederanlauf nach einem Fehlschlag, min. 3 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -118129,11 +119911,6 @@ msgstr " stolpert und schielt auf %s" msgid "Drunk counter" msgstr "betrunkener Konter" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "×1,25 Schlagschaden, Gegenangriff beim Ausweichen, min. 4 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -118148,12 +119925,6 @@ msgstr " taumelt und trifft %s" msgid "Fencing lunge" msgstr "Hervorspringen" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "75% Züge, min. 2 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -118168,11 +119939,6 @@ msgstr " stürzt sich auf %s" msgid "Fencing thrust" msgstr "Fechtstoß" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "90% Züge, ×1,25 Stichschaden, min. 1 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -118187,13 +119953,6 @@ msgstr " stößt auf %s" msgid "Fencing stop thrust" msgstr "Stoppstoß" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "" -"×1,25 Stichschaden, für 1 Zug betäuben, Gegenangriff beim Blocken, min. 3 " -"Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -118208,11 +119967,6 @@ msgstr " liefert einen perfekten Stoppstoß gegenüber %s ab" msgid "Round strike" msgstr "Rundschlag" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "60% Züge, min. 4 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -118241,11 +119995,6 @@ msgstr " verpasst %s einen Fächerschlag" msgid "Snap strike" msgstr "Schnappschlag" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "80% Züge" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -118260,11 +120009,6 @@ msgstr " schnappt schnell nach %s" msgid "Combination strike" msgstr "Kombischlag" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "80% Züge, 150% Schaden, min. 2 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -118279,11 +120023,6 @@ msgstr " kombischlägt %s" msgid "free strike" msgstr "Freischlag" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "Kostenloser Schlag, min. 4 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -118298,15 +120037,6 @@ msgstr " freischlägt %s" msgid "puño strike" msgstr "Puño-Schlag" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "" -"Wandelt jeglichen Schaden zu ×4 Schlagschaden um, für 1 Zug betäuben, min. 3" -" Nahkampf, min. 2 Schlagschadenspunkte ausgeteilt" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -118321,11 +120051,6 @@ msgstr " verpasst %s einen Puño" msgid "knee strike" msgstr "Knieschlag" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "Für 2 Züge zu Boden werfen, nur krit., min. 3 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -118340,11 +120065,6 @@ msgstr " verpasst %s einen Knieschlag" msgid "hamstring" msgstr "Lähmen" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "Für 3 Züge zu Boden werfen, nur krit., min. 2 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -118359,12 +120079,6 @@ msgstr " wirft %s mit einen Tiefschlag zu Boden!" msgid "Vicious Precision" msgstr "Grausame Präzision" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "150% Schaden, nur krit., min. 4 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -118379,11 +120093,6 @@ msgstr "Grausam verwundet %s." msgid "Silat Brutality" msgstr "Silat-Brutalität" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "1 Zug betäuben, 1 Feld zurückwerfen, nur krit. min. 3 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -118393,11 +120102,6 @@ msgstr "Du bringst %s ins Taumeln" msgid "Dirty Hit" msgstr "Schmutziger Schlag" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "2 Züge, nur krit. min. 1 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -118440,11 +120144,6 @@ msgstr " verpasst %s einen schnellen Hieb" msgid "Viper Bite" msgstr "Viperbiss" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "2 Züge betäuben, ×1,5 Schlagschaden, dauert 2 Züge" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -118459,11 +120158,6 @@ msgstr " verpasst %s einen Viperbiss" msgid "Viper Strike" msgstr "Viperschlag" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "×3 Schlagschaden, dauert 2 Züge" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -118482,12 +120176,6 @@ msgstr "Viperwinden" msgid "Stinger Strike" msgstr "Stachelschlag" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "" -"Für 3 Züge betäuben, um 3 Felder zurückwerfen, ×2 Schlagschaden, nur krit." - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -118502,11 +120190,6 @@ msgstr "Der Stacheltritt von lässt %s fliegen" msgid "Pincer Strike" msgstr "Scherenschlag" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "×1,25 Schlagschaden, für 2 Züge betäuben, min. 4 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -118521,11 +120204,6 @@ msgstr " verpasst %s mit einer Scherenfaust einen Jab" msgid "Toad's Tongue" msgstr "Froschzunge" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "50% Züge, für 1 Zug zu Boden werfen, min. 4 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -118604,11 +120282,6 @@ msgstr " schlägt auf %s los" msgid "Tiger Takedown" msgstr "Tigerstampfer" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "Für 1 Zug zu Boden werfen, min. 4 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -118623,11 +120296,6 @@ msgstr " greift und wirft %s auf den Boden" msgid "Leopard Fist" msgstr "Leopardenfaust" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "Für 2 Züge betäuben, nur krit., min. 5 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -118656,11 +120324,6 @@ msgstr " streift %s schnell" msgid "Leopard Foresight" msgstr "Leopardenvoraussicht" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "×1,5 Schlagschaden, Gegenangriff beim Ausweichen, min. 4 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -118678,11 +120341,6 @@ msgstr "" msgid "Dragon Snatch" msgstr "Drachenschnapper" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "Für 2 Züge betäuben, ×1,2 Schlagschaden, min. 4 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -118697,14 +120355,6 @@ msgstr " ergreift und tritt %s mit dem Knie" msgid "Dragon's Vortex" msgstr "Drachenwirbel" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "" -"Für 2 Züge betäuben, Gegenangriff beim Ausweichen, Gegenangriff beim " -"Blocken, min. 4 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -118719,12 +120369,6 @@ msgstr " fängt den Angriff ab und bringt %s zum Rotieren" msgid "Dragon Sweeper" msgstr "Drachenkehrer" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "Für 2 Züge zu Boden werfen, min. 5 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -118739,12 +120383,6 @@ msgstr " verpasst den Beinen von %s einen niedrigen Roundhouse-Kick" msgid "Dragon Strike" msgstr "Drachenschlag" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "" -"Für 1 Zug betäuben, um 1 Feld zurückwerfen, nur krit., min. 6 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -118771,11 +120409,6 @@ msgstr " macht die Kranichflatter" msgid "Crane Flap" msgstr "Kranichflattern" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "Einen Griff brechen, min. 3 unbewaffnet" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "Du schwingst deine Arme und befreist dich" @@ -118788,11 +120421,6 @@ msgstr " flattert sich frei" msgid "Crane Strike" msgstr "Kranichschlag" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "Für 3 Züge betäuben, nur krit., min. 4 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -118812,21 +120440,10 @@ msgstr "Du täuscht %s einen Angriff vor" msgid "Power Hit" msgstr "Kraftschlag" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "" -"Für 1 Zug betäuben, um 1 Feld zurückwerfen, nur krit. min. 4 unbewaffnet" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "Zurückschlagen" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "Gegenangriff beim Blocken, min. 5 unbewaffnet" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -118855,11 +120472,6 @@ msgstr " bring %s zum Stolpern" msgid "Flowing Water Cut" msgstr "Wasserflusshaken" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "175% Züge, ×2 Schlagschaden, ×2 Schnittschaden, min. 4 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -118874,11 +120486,6 @@ msgstr " schlägt %s mit der langsamen Kraft von fließendem Wasser" msgid "Red Leaf's Cut" msgstr "Rotblatthaken" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "Für 2 Züge zu Boden werfen, min. 5 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -118893,14 +120500,6 @@ msgstr "s Schlag wirft %s aus dem Gleichgewicht" msgid "Fire and Stone's Cut" msgstr "Feuer-und-Stein-Haken" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "" -"Für 2 Züge betäuben, ×1,5 Schlagschaden, ×1,5 Schnittschaden, nur krit., " -"min. 6 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -118915,14 +120514,6 @@ msgstr " betäubt %s durch die Wucht des Schlags" msgid "In-One Timing" msgstr "Zeitgefühl" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "" -"50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "" -"50% Züge, ×1,5 Schlagschaden, ×1,5 Schnittschaden, für 2 Züge betäuben, min." -" 5 Nahkampf" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -118933,12 +120524,6 @@ msgstr "Du schlägst auf die Schwachstellen von %s" msgid " strikes %s's weaknesses" msgstr " schlägt die Schwachstellen von %s" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "" -"80% Züge, kostenloser Wiederanlauf nach einem Fehlschlag, min. 2 Nahkampf" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "langsamer Schlag" @@ -121654,18 +123239,20 @@ msgstr "Ein kleiner Himbeerstrauch ohne Früchte. Gib auf seine Dornen Acht! " #: lang/json/terrain_from_json.py msgid "grape bush" -msgstr "" +msgstr "Weinreben" #. ~ Description for grape bush #: lang/json/terrain_from_json.py msgid "A bush of a different species invaded by vines of grapes." -msgstr "" +msgstr "Ein Busch einer anderen Gattung, der von Weinreben durchzogen ist." #. ~ Description for grape bush #: lang/json/terrain_from_json.py msgid "" "A bush of a different species invaded by grape vines but they're fruitless." msgstr "" +"Ein Busch einer anderen Gattung, der von Weinreben durchzogen ist. Derzeit " +"ohne Früchte." #: lang/json/terrain_from_json.py msgid "rose bush" @@ -122602,7 +124189,7 @@ msgstr "Feinhämmer" msgid "wood sawing" msgstr "Holzsäge" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "Metallsäge" @@ -122646,7 +124233,7 @@ msgstr "Grabe" msgid "bolt turning" msgstr "Bolzendreh" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "Feinbolzendreh" @@ -123528,6 +125115,14 @@ msgstr "" msgid "Circle Split" msgstr "" +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "Reaktortest" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "Solartest" + #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" msgstr "Tieflader" @@ -125072,7 +126667,7 @@ msgstr "" #: lang/json/vehicle_part_from_json.py msgid "air jack system" -msgstr "" +msgstr "Airjack-System" #: lang/json/vehicle_part_from_json.py msgid "foldable light frame" @@ -127227,7 +128822,7 @@ msgstr "Drücke " #: src/action.cpp src/input.cpp msgid "Try" -msgstr "Probier herum" +msgstr "Versuche" #: src/action.cpp msgid "Look" @@ -127315,6 +128910,10 @@ msgstr "Du bist fertig mit Graben." msgid "You discover a %s!" msgstr "Du findest: %s!" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "Keines deiner Schneidwerkzeuge ist zum Schlachten geeignet." + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "" @@ -127397,6 +128996,12 @@ msgstr "Dies wurde bereits gevierteilt." msgid "You need to perform field dressing before quartering." msgstr "Du musst es erst ausnehmen, bevor du es vierteilen kannst." +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "" +"Würdest du es wagen, die sterblichen Überreste eines Mitmenschen zu " +"entweihen?" + #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." msgstr "" @@ -127573,27 +129178,28 @@ msgstr "Du bist mit dem Schlachten von %s fertig." #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." msgstr "" -"Ungeschickt hackst du auf die Leiche ein und hackst dabei einige Körperteile" -" ab. Du wunderst dich, warum du dich so dumm angestellt hast." +"Ungeschickt hackst du auf die Leiche ein und trennst dabei einige " +"überzählige Körperteile ab. Du wunderst dich, wie du dich so dumm anstellen " +"konntest." #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." msgstr "" -"Deine unerfahrenen Hände rutschen ab und beschädigen die Leiche. Du hoffst " -"noch, dass sie nicht komplett ruiniert wurde." +"Deine unerfahrenen Hände rutschen ab und beschädigen die Leiche. Du hoffst, " +"dass sie dabei nicht komplett ruiniert wurde." #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." msgstr "" -"Du hast etwas falsch gemacht und die Leiche ziemlich verstümmelt. Vielleicht" -" kannst du das noch retten." +"Du hast etwas falsch gemacht und die Leiche ziemlich stark verstümmelt. " +"Vielleicht kannst du die Sache noch retten." #: src/activity_handlers.cpp #, c-format @@ -127766,7 +129372,7 @@ msgstr "" "Du hast den Gegenstand, mit dem du das Feuer starten wolltest, verloren." #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." +msgid "There is not enough sunlight to start a fire now. You stop trying." msgstr "" "Es gibt nicht genügend Sonnenlicht, um jetzt ein Feuer zu entfachen. Du " "brichst deine Versuche ab." @@ -127857,11 +129463,11 @@ msgstr "Wiederholen, so oft du kannst" #: src/activity_handlers.cpp msgid "Repeat until fully repaired, but don't reinforce" -msgstr "Wiederholen, bis fertig repariert, aber nicht verstärken" +msgstr "Wiederholen, bis vollständig repariert, aber ohne Verstärkung" #: src/activity_handlers.cpp msgid "Repeat until success/failure/level up" -msgstr "Wiederholen bis Erfolg/Versagen/neue Fähigkeitsstufe" +msgstr "Wiederholen bis Erfolg/Versagen/neue Fertigkeitsstufe" #: src/activity_handlers.cpp #, c-format @@ -128034,8 +129640,8 @@ msgstr "Du hast alle Samen eingepflanzt, die du pflanzen konntest." #, c-format msgid "You put your %1$s in the %2$s's %3$s." msgid_plural "You put your %1$s in the %2$s's %3$s." -msgstr[0] "Du legst %1$s in %3$s von %2$s." -msgstr[1] "Du legst %1$s in %3$s von %2$s." +msgstr[0] "Du legst »%1$s« in %3$s von %2$s." +msgstr[1] "Du legst »%1$s« in %3$s von %2$s." #: src/activity_item_handling.cpp #, c-format @@ -128113,8 +129719,8 @@ msgstr "%1$s ist zu schwer und fiel auf %2$s." #, c-format msgid "You drop your %1$s on the %2$s." msgid_plural "You drop your %1$s on the %2$s." -msgstr[0] "Du legst %1$s auf %2$s." -msgstr[1] "Du legst %1$s auf %2$s." +msgstr[0] "Du legst »%1$s« auf %2$s." +msgstr[1] "Du legst »%1$s« auf %2$s." #: src/activity_item_handling.cpp #, c-format @@ -128127,8 +129733,8 @@ msgstr[1] " lässt %1$s auf %2$s fallen." #, c-format msgid "You put your %1$s in the %2$s." msgid_plural "You put your %1$s in the %2$s." -msgstr[0] "Du legst %1$s in %2$s." -msgstr[1] "Du legst %1$s in %2$s." +msgstr[0] "Du legst »%1$s« in %2$s." +msgstr[1] "Du legst »%1$s« in %2$s." #: src/activity_item_handling.cpp #, c-format @@ -128618,7 +130224,7 @@ msgstr "Ladungen" msgid "category" msgstr "Kategorie" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp src/effect.cpp msgid "damage" msgstr "Schaden" @@ -128850,6 +130456,71 @@ msgstr "Alle" msgid "Hang on a bit..." msgstr "Bitte warten …" +#: src/armor_layers.cpp +msgid "close to your skin" +msgstr "Hauteng" + +#: src/armor_layers.cpp +msgid "of normal clothing" +msgstr "Normal" + +#: src/armor_layers.cpp +msgid "on your waist" +msgstr "Taille" + +#: src/armor_layers.cpp +msgid "of outer clothing" +msgstr "Äußere" + +#: src/armor_layers.cpp +msgid "strapped to you" +msgstr "Angebunden" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgid_plural "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgstr[0] "" +"Das Tragen mehrerer Dinge auf der Kleidungs-Schicht-%s erhöht die Hinderung " +"von »%s«." +msgstr[1] "" +"Das Tragen mehrerer Dinge auf der Kleidungs-Schicht-%s erhöht die Hinderung " +"von »%s«." + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgid_plural "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgstr[0] "" +"Wenn du dies über etwas trägst, obwohl es normalerweise drunter getragen " +"würde, erhöhst du die Hinderung von »%s«." +msgstr[1] "" +"Wenn du dies über etwas trägst, obwohl es normalerweise drunter getragen " +"würde, erhöhst du die Hinderung von »%s«." + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgid_plural "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgstr[0] "" +"Wenn du dies über »%s« trägst, fügst du " +"zusätzliche Hinderung zu »%s« hinzu." +msgstr[1] "" +"Wenn du dies über »%s« trägst, fügst du " +"zusätzliche Hinderung zu »%s« hinzu." + #: src/armor_layers.cpp msgid "This is worn next to the skin." msgstr "Dies wird direkt an deiner Haut getragen." @@ -129020,32 +130691,35 @@ msgstr "Inventarzeichen für Kleidungsstücke neu zuweisen?" #, c-format msgid "" "Use the arrow- or keypad keys to navigate the left list.\n" -"Press [%s] to select highlighted armor for reordering.\n" -"Use [%s] / [%s] to scroll the right list.\n" -"Press [%s] to assign special inventory letters to clothing.\n" -"Press [%s] to change the side on which item is worn.\n" -"Use [%s] to equip an armor item from the inventory.\n" -"Press [%s] to remove selected armor from oneself.\n" +"[%s] to select highlighted armor for reordering.\n" +"[%s] / [%s] to scroll the right list.\n" +"[%s] to assign special inventory letters to clothing.\n" +"[%s] to change the side on which item is worn.\n" +"[%s] to sort armor into natural layer order.\n" +"[%s] to equip a new item.\n" +"[%s] to equip a new item at the currently selected position.\n" +"[%s] to remove selected armor from oneself.\n" " \n" "[Encumbrance and Warmth] explanation:\n" "The first number is the summed encumbrance from all clothing on that bodypart.\n" -"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers.\n" +"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers or wearing items outside of other items they would normally be work beneath (e.g. a shirt over a backpack).\n" "The sum of these values is the effective encumbrance value your character has for that bodypart." msgstr "" -"Drücke die Pfeil- oder Ziffernblock-Tasten, um durch die\n" -"linke Liste zu navigieren.\n" -"Drücke [%s], um die hevorgehobene Kleidung zum Umsortieren auszuwählen.\n" -"Benutze [%s] / [%s], um durch die rechte Liste zu scrollen.\n" -"Drücke [%s], um der Kleidung besondere Inventarzeichen zuzuweisen.\n" -"Drücke [%s], um die Seite, an der die Kleidung getragen wird, zu wechseln.\n" -"Benutze [%s], um ein Kleidungsstück aus dem Inventar anzuziehen.\n" -"Drücke [%s], um das gewählte Kleidungsstück auszuziehen.\n" -"\n" -"»[Hinderung und Wärme]«-Erklärung:\n" -"Die erste Zahl ist die summierte Hinderung aller Kleidungsstücke auf diesem Körperteil.\n" -"Die zweite Zahl ist eine zusätzliche Hinderungsstrafe, die vom Tragen mehrerer Kleidungsstücke über die Schichten des Körperteils verursacht wird.\n" -"Die Summe dieser Werte ist der effektive Hinderungswert, der dein\n" -"Protagonist für diesen Körperteil hat." +"Pfeil- oder Ziffernblock-Tasten verwenden, um in der Liste (links) zu navigieren.\n" +" \n" +" [%s], um die markierte Kleidung zum Umsortieren auszuwählen.\n" +" [%s] / [%s], um durch die rechte Liste zu scrollen.\n" +" [%s], um Inventarbuchstaben der Kleidung neu zuzuweisen.\n" +" [%s], um die Seite, an der die Kleidung getragen wird, zu wechseln.\n" +" [%s], um die Kleidung in die natürliche Schichtreihenfolge zu sortieren.\n" +" [%s], um ein Kleidungsstück aus dem Inventar anzuziehen.\n" +" [%s], um ein Kleidungsstück an der aktuell ausgewählten Position anzuziehen.\n" +" [%s], um das gewählte Kleidungsstück auszuziehen.\n" +" \n" +"Erläuterung der »Hinderung und Wärme«-Anzeige (mitte):\n" +" \n" +"Die »erste Zahl« ist die summierte Hinderung aller Kleidungsstücke dieses Körperteils. Die »zweite Zahl« ist eine zusätzliche Hinderungsstrafe, die dadurch verursacht wird, dass mehrere Kleidungsstücke auf einer der vier Schichten des Körperteils getragen werden oder Kleidungsstücke außerhalb der natürlichen Schichtreihenfolge getragen werden (z.B. ein Hemd über einem Rucksack).\n" +"Die »Summe« dieser Werte ist der effektive Hinderungswert, den der Charakter oder NPC für den entsprechenden Körperteil erleidet." #: src/artifact.cpp msgid "smooth sphere" @@ -129855,18 +131529,18 @@ msgid "" "M:steel,iron multiple materials allowed (OR search)" msgstr "" "»*« wird als Wildcard benutzt. Einige Beispiele:\n" -"\n" -"»Holzpfeil« passt exakt auf eine Gegenstandsbezeichnung.\n" -"»Holzpf*« passt auf alles, was mit »Holzpf« beginnt.\n" -"»*eile« passt auf Bezeichnungen, die mit »eile« aufhören.\n" -"»*ere*eile« mehrere Wildcards sind erlaubt.\n" -"»ScHweRer*HolZ*PfeiL« Groß-/Kleinschreibung unwichtig.\n" -"\n" -"Materialbasiertes Auto-Aufheben :\n" -"\n" -"»m:Kevlar« passt auf Gegenstände aus Kevlar\n" -"»M:Kupfer« passt auf Gegenstände aus reinem Kupfer\n" -"»M:Stahl,Eisen« mehrere Materialien sind erlaubt (ODER Suche)" +" \n" +"»Holzpfeil« passt exakt auf einen Gegenstand.\n" +"»Holzpf*« passt auf alles, was mit »Holzpf« beginnt.\n" +"»*eile« passt auf alles, was mit »eile« endet.\n" +"»*ere*eile« mehrere Wildcards sind erlaubt.\n" +"»HolZ*PfeiL« Groß-/Kleinschreibung unwichtig.\n" +" \n" +"Materialbasiertes Auto-Aufheben:\n" +" \n" +"»m:Kevlar« passt auf Gegenstände aus Kevlar.\n" +"»M:Kupfer« passt auf Gegenstände aus reinem Kupfer.\n" +"»M:Stahl,Eisen« mehrere Materialien erlaubt (ODER Suche)." #: src/auto_pickup.cpp msgid "Pickup Rule:" @@ -130161,6 +131835,14 @@ msgstr "" msgid "Your plugged-in solar pack is now able to charge your system." msgstr "Dein eingestöpselter Solarrucksack kann jetzt dein System aufladen." +#: src/bionics.cpp +msgid "" +"You need to connect the cable to yourself and the solar pack before your " +"solar pack can charge your system." +msgstr "" +"Du musst ein Kabel an dir und an deinem Solarrucksack anbringen, bevor das " +"Solarmodul dein System aufladen kann." + #: src/bionics.cpp msgid "" "You might plug in your solar pack to the cable charging system, if you " @@ -130500,7 +132182,7 @@ msgstr "%s (%i Plätze);" #: src/bionics.cpp #, c-format msgid "Increased storage capacity by %i." -msgstr "Lagerkapazität um %i erhöht." +msgstr "Bionik-Stromkapazität um %i erhöht." #: src/bionics.cpp #, c-format @@ -130548,13 +132230,13 @@ msgstr "" #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out" -" when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "" -"Du liegst völlig bewegungslos da und konzentrierst dich innerlich auf einen " -"interessanten Stein an der Decke, während der Autodoktor schmerzfrei in dir " -"reinschneidet. Dankbarerweise wirst du ohnmächtig, als die Klingen dein " -"Gesichtsfeld erreichen." +"Du liegst völlig regungslos da und konzentrierst dich innerlich auf einen " +"interessanten Stein an der Decke, während der Autodoktor schmerzfrei in dich" +" hineinschneidet. Als die Klingen dein Gesichtsfeld erreichen, wirst du " +"dankbarerweise ohnmächtig." #: src/bionics_ui.cpp #, c-format @@ -130673,6 +132355,55 @@ msgstr "" "Du kannst %s nicht aktivieren! Um die Beschreibung von %s zu lesen, drücke " "»!«, dann »%c«." +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "Geschwindigkeit" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "Stärke" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "Geschicklichkeit" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "Intelligenz" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "Wahrnehmung" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr "" + #: src/calendar.cpp msgid "forever" msgstr "für immer" @@ -130705,6 +132436,13 @@ msgid_plural "%d days" msgstr[0] "%d Tag" msgstr[1] "%d Tage" +#: src/calendar.cpp +#, c-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d Woche" +msgstr[1] "%d Wochen" + #: src/calendar.cpp #, c-format msgid "%d season" @@ -130761,6 +132499,15 @@ msgid_plural "%3d days" msgstr[0] "%3d Tag" msgstr[1] "%3d Tage" +#. ~ Right-aligned time string. should right-align with other strings with +#. this same comment +#: src/calendar.cpp +#, c-format +msgid "%3d week" +msgid_plural "%3d weeks" +msgstr[0] "%3d Woche" +msgstr[1] "%3d Wochen" + #. ~ Right-aligned time string. should right-align with other strings with #. this same comment #: src/calendar.cpp @@ -131097,22 +132844,6 @@ msgstr " braucht mindestens %1$s, um %2$s mit %3$s zu benutzen." msgid "Liquid from your inventory has leaked onto the ground." msgstr "Flüssigkeit aus deinem Inventar ist auf den Boden ausgelaufen." -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "Stärke" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "Geschicklichkeit" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "Intelligenz" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "Wahrnehmung" - #: src/character.cpp msgid "Left Arm" msgstr "Linker Arm" @@ -131211,11 +132942,9 @@ msgstr "Du glaubst nicht, dass das eine Wirkung zeigen wird." #: src/character.cpp msgid "No limb would benefit from it." -msgstr "Kein Körperglied würde davon profitieren." +msgstr "Weder Leib noch Glieder würden davon profitieren." -#: src/character.cpp src/game.cpp src/game.cpp src/iexamine.cpp -#: src/inventory_ui.cpp src/npctalk_funcs.cpp src/pickup.cpp src/turret.cpp -#: src/vehicle_use.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp src/pickup.cpp msgid "Cancel" msgstr "Abbrechen" @@ -131305,9 +133034,9 @@ msgstr "" "definiert sind, werden alle Lebensmittel hierher verschoben." #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" -msgstr "Beute: verd.Essen" +msgstr "Beute: verd. Essen" #: src/clzones.cpp msgid "" @@ -131330,9 +133059,9 @@ msgstr "" "entsprechende Zone nicht definiert wurde." #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" -msgstr "Beute: verd.Getränke" +msgstr "Beute: verd. Getränke" #: src/clzones.cpp msgid "Destination for perishable drinks." @@ -131347,7 +133076,7 @@ msgid "Destination for guns, bows and similar weapons." msgstr "Zielfeld für Feuerwaffen, Bögen und ähnliche Waffen." #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" msgstr "Beute: Magazine" @@ -131392,9 +133121,9 @@ msgstr "" "entsprechende Zone nicht definiert wurde." #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" -msgstr "Beute: vers.Kleidung" +msgstr "Beute: vers. Kleidung" #: src/clzones.cpp msgid "Destination for filthy clothing." @@ -131441,7 +133170,7 @@ msgid "Destination for Compact Bionics Modules aka CBMs." msgstr "Zielfeld für Kompakte Bionikmodule aka KBMs." #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" msgstr "Beute: Fahrzeugteile" @@ -131486,7 +133215,7 @@ msgid "Destination for chemicals." msgstr "Zielfeld für Chemikalien." #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" msgstr "Beute: Ersatzteile" @@ -131515,9 +133244,9 @@ msgstr "" "definiert ist." #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" -msgstr "Beute: vers.Rüstungen" +msgstr "Beute: vers. Rüstungen" #: src/clzones.cpp msgid "Destination for filthy armor." @@ -131544,7 +133273,7 @@ msgstr "" "Beute aussortieren« ignoriert." #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" msgstr "Ackerbau: Feld" @@ -132696,6 +134425,16 @@ msgid "" "IF YOU WOULD LIKE TO SPEAK WITH SOMEONE IN PERSON OR WOULD LIKE\n" "TO WRITE US A LETTER PLEASE SEND IT TO...\n" msgstr "" +"\n" +"FLÜCHTLINGSLAGER GEFUNDEN! STANDORT: %d %s\n" +"\n" +"FALLS SIE IRGENDWELCHE ANMERKUNGEN BEZÜGLICH IHRES BESUCHS\n" +"HABEN, KONTAKTIEREN SIE BITTE DAS BÜRO FÜR ÖFFENTLICHE NOTFALL-\n" +"ANGELEGENHEITEN. DAS ÖRTLICHE BÜRO KANN ZWISCHEN 9:00 UND\n" +"16:00 UHR UNTER 555-0164 ERREICHT WERDEN.\n" +"\n" +"WENN SIE MIT JEMANDEN PERSÖNLICH SPRECHEN WOLLEN, ODER UNS\n" +"EINEN BRIEF ZUSENDEN WOLLEN, SCHICKEN SIE IHN BITTE AN…\n" #: src/construction.cpp msgid " Construction " @@ -132773,7 +134512,7 @@ msgstr "Stufe/Variante #" msgid "Result: " msgstr "Ergebnis: " -#: src/construction.cpp src/crafting_gui.cpp src/recipe.cpp +#: src/construction.cpp src/crafting_gui.cpp msgid "N/A" msgstr "(entfällt)" @@ -132891,13 +134630,17 @@ msgstr "" "Nach dem du es mit Brettern zugedeckt hast, bleiben die Vorhänge und die " "Gardinenstange übrig." +#: src/construction.cpp +msgid "You gather some clay." +msgstr "Du sammelst etwas Ton ein." + #: src/construction.cpp msgid "You gather some sand." -msgstr "Du sammelst etwas Sand auf." +msgstr "Du sammelst etwas Sand ein." #: src/construction.cpp -msgid "You gather some clay." -msgstr "Du sammelst etwas Ton auf." +msgid "You gather some materials." +msgstr "Du sammelst einige Materialien ein." #: src/construction.cpp msgid "You cannot build there!" @@ -132917,7 +134660,7 @@ msgstr "Das sieht nicht essbar aus." #: src/consumption.cpp msgid "This is full of dirt after being on the ground." -msgstr "" +msgstr "Das ist nun voller Schmutz, nachdem es auf Boden gelegen hat." #: src/consumption.cpp src/iuse.cpp src/iuse.cpp src/iuse.cpp #: src/iuse_actor.cpp src/iuse_actor.cpp src/iuse_actor.cpp src/mutation.cpp @@ -133057,7 +134800,7 @@ msgstr "Pfui, %s (verdorben) schmeckt nicht so gut …" #: src/consumption.cpp #, c-format msgid "You drink your %s (rotten)." -msgstr "Du trinkst %s (verdorben)." +msgstr "Du trinkst: %s (verdorben)." #: src/consumption.cpp #, c-format @@ -133067,12 +134810,12 @@ msgstr " trinkt %s." #: src/consumption.cpp #, c-format msgid "You drink your %s." -msgstr "Du trinkst %s." +msgstr "Du trinkst: %s." #: src/consumption.cpp #, c-format msgid "You eat your %s (rotten)." -msgstr "Du isst %s (verdorben)." +msgstr "Du isst: %s (verdorben)." #: src/consumption.cpp #, c-format @@ -133138,7 +134881,7 @@ msgstr "Mmm, Junk Food." #: src/consumption.cpp msgid "When life's got you down, there's always sugar." -msgstr "" +msgstr "Wenn das Leben dich fertig macht, dann gibt es immer noch Zucker." #: src/consumption.cpp msgid "They may do what they must... you've already won." @@ -133159,7 +134902,7 @@ msgstr "Du ergötzt dich am süßen Honig." #: src/consumption.cpp msgid "You can't finish it all!" -msgstr "Du schaffst es nicht ganz zu Ende!" +msgstr "Du schaffst es aber nicht, alles zu dir zu nehmen." #: src/consumption.cpp msgid "You gorge yourself, preparing to hibernate." @@ -133337,7 +135080,7 @@ msgstr "%s hilft bei der Fertigung." #: src/crafting.cpp #, c-format msgid "%s could assist you with a batch..." -msgstr "%s könnte dir bei einem Stapel helfen …" +msgstr "%s könnte dir beim Anfertigen eines Stapels helfen." #: src/crafting.cpp #, c-format @@ -133357,17 +135100,17 @@ msgstr "Du versagt dabei, %s anzufertigen, aber vergeudest keine Materialien." #: src/crafting.cpp #, c-format msgid "You craft %s from memory." -msgstr "Du fertigst %s aus dem Gedächtnis heraus." +msgstr "Du fertigst »%s« aus dem Gedächtnis heraus an." #: src/crafting.cpp #, c-format msgid "You craft %s using a book as a reference." -msgstr "Du fertigst %s mit Hilfe eines Buchs als Referenz." +msgstr "Du fertigst »%s« mit Hilfe eines Buchs als Referenz an." #: src/crafting.cpp #, c-format msgid "You memorized the recipe for %s!" -msgstr "Du hast dir das Rezept für %s gemerkt." +msgstr "Du hast dir das Rezept für %s nun eingeprägt." #: src/crafting.cpp #, c-format @@ -133388,6 +135131,16 @@ msgstr "%s (%d/%d an Person u. i. d. Nähe)" msgid "Use which component?" msgstr "Welche Komponente soll verwendet werden?" +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "%s (%d/%d Ladungen in der Nähe)" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "%s (%d/%d Ladungen an der Person)" + #: src/crafting.cpp msgid "Use which tool?" msgstr "Welches Werkzeug soll benutzt werden?" @@ -133462,7 +135215,7 @@ msgstr "" #: src/crafting.cpp #, c-format msgid "You disassemble the %s into its components." -msgstr "Du demontierst %s in die Einzelzeile." +msgstr "Du demontierst %s in die entsprechenden Einzelzeile." #: src/crafting.cpp #, c-format @@ -133501,7 +135254,7 @@ msgstr "Nebenprodukte:" #: src/crafting_gui.cpp msgid "Press to attempt to craft object." -msgstr "Drücke , um das Rezept zu versuchen." +msgstr ", um Rezept zu versuchen." #: src/crafting_gui.cpp #, c-format @@ -133510,23 +135263,23 @@ msgid "" "keybindings" msgstr "" "[E]rgebnis, [f]inden, zu[r]ücksetzen, [M]odus, [s]:zeigen/verstecken, " -"[L]:verbundene, %s [?] Tasten" +"[L]:verbundene, %s [?]:Tasten" #: src/crafting_gui.cpp msgid "[b]atch" -msgstr "[b] Stapel" +msgstr "[b]:Stapel," #: src/crafting_gui.cpp msgid "cancel [b]atch" -msgstr "Stapel a[b]brechen" +msgstr "Stapel a[b]brechen," #: src/crafting_gui.cpp #, c-format msgid "" "[E]: Describe, [F]ind, [m]ode, [s]how/hide, Re[L]ated, %s [?] keybindings" msgstr "" -"[E]rgebnis, [f]inden, [M]odus, [s]:zeigen/verstecken, [L]:verbundene, %s [?]" -" Tasten" +"[E]rgebnis, [f]inden, [M]odus, [s]:zeigen/verstecken, [L]:verbundene, %s " +"[?]:Tasten" #: src/crafting_gui.cpp msgid "" @@ -133534,7 +135287,7 @@ msgid "" "keybindings" msgstr "" "[E]rgebnis, [f]inden, zu[r]ücksetzen, [M]odus, [s]:zeigen/verstecken, " -"[L]:verbundene, [b]:Stapel, %s [?] Tasten" +"[L]:verbundene, [b]:Stapel, %s [?]:Tasten" #: src/crafting_gui.cpp msgid "" @@ -133542,7 +135295,7 @@ msgid "" "keybindings" msgstr "" "[E]rgebnis, [f]inden, [M]odus, [s]:zeigen/verstecken, [L]:verbundene, " -"[b]:Stapel, [?] Tasten" +"[b]:Stapel, [?]:Tasten" #: src/crafting_gui.cpp #, c-format @@ -133560,37 +135313,37 @@ msgstr "Rezeptquelle: %s" #: src/crafting_gui.cpp #, c-format -msgid "Skills used: %s" -msgstr "Verwendete Fertigkeiten: %s" +msgid "Primary skill used: %s" +msgstr "Verwendete Primärfertigkeit: %s" #: src/crafting_gui.cpp #, c-format -msgid "Required skills: %s" -msgstr "Erforderliche Fertigkeiten: %s" +msgid "Difficulty: %d" +msgstr "Schwierigkeitsgrad: %d" #: src/crafting_gui.cpp #, c-format -msgid "Difficulty: %d" -msgstr "Schwierigkeitsgrad: %d" +msgid "Your skill level: %d" +msgstr "Deine Fertigkeitsstufe: %d" #: src/crafting_gui.cpp -msgid "Your skill level: N/A" -msgstr "Deine Fertigkeitenstufe: (entfällt)" +msgid "Your skill level: N/A" +msgstr "Deine Fertigkeitsstufe: (entfällt)" #: src/crafting_gui.cpp #, c-format -msgid "Your skill level: %d" -msgstr "Deine Fertigkeitenstufe: %d" +msgid "Other skills used: %s" +msgstr "Verwendete Sekundärfertigkeiten: %s" #: src/crafting_gui.cpp #, c-format -msgid "Time to complete: %s" -msgstr "Dauer zur Fertigstellung: %s" +msgid "Time to complete: %s" +msgstr "Fertigungsdauer: %s" #: src/crafting_gui.cpp #, c-format -msgid "Dark craftable? %s" -msgstr "Im Dunkeln herstellbar? %s" +msgid "Dark craftable? %s" +msgstr "Fertigung im Dunkeln? %s" #: src/crafting_gui.cpp src/defense.cpp msgid "Easy" @@ -133616,49 +135369,82 @@ msgstr "Das kannst du nicht tun!" msgid "Nothing selected!" msgstr "Nichts ausgewählt!" -#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp -msgid "Search:" -msgstr "Suchen:" +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "Qualität des Rezeptergebnisses" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "Gesamte Beschreibung durchsuchen (langsam)" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "Distanzangriff" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "zur Fertigung erforderliche Komponente" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "nach Primärfertigkeit suchen" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "nach jeglicher Fertigkeit suchen" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "zur Fertigung erforderliche Qualität" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "zur Fertigung erforderliches Werkzeug" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "nach versteckten oder sichtbaren suchen" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "ja" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" +msgstr "nach eingeprägten oder nicht suchen" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" -msgstr "" -"Spezielle Präfixe für Anforderungen:\n" -" [t] Werkzeuge suchen\n" -" [c] Komponenten suchen\n" -" [q] Qualitäten suchen\n" -" [s] Fertigkeiten suchen\n" -"Spezielle Präfixe für Endprodukte:\n" -" [Q] Qualitäten suchen\n" -"Sonstige:\n" -" [h] nach versteckten (yes) suchen\n" -" [m] nach eingeprägten (yes) oder nicht eingeprägten (no) suchen\n" -"Beispiele:\n" -" t:Lötkolben\n" -" c:Brett\n" -" q:Metallsäge\n" -" s:Kochen\n" -" Q:Feinbolzendreh\n" -" h:yes\n" -" m:no" +"The default is to search result names. Some single-character prefixes can be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" +msgstr "" +"Standardmäßig wird nach Ergebnisnamen gesucht. Einige Einzelzeichen-Präfixe können mit einem Doppelpunkt »:« vorangestellt werden, um dadurch auf eine andere Weise zu suchen.\n" +" \n" +"Beispiele:\n" + +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "T-Shirt" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" +msgstr " %s%.*s %s\n" + +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "Name des Rezeptergebnisses" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" +msgstr " %c:%s%.*s %s\n" + +#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp +msgid "Search:" +msgstr "Suchen:" #: src/crafting_gui.cpp msgid "RESULTS" @@ -133666,7 +135452,7 @@ msgstr "ERGEBNISSE" #: src/crafting_gui.cpp msgid "Related recipes:" -msgstr "Verbunden Rezepte:" +msgstr "Verbundene Rezepte:" #: src/crafting_gui.cpp #, c-format @@ -133675,7 +135461,7 @@ msgstr "%s versteckt" #: src/crafting_gui.cpp msgid "can craft:" -msgstr "kann fertigen:" +msgstr " kann fertigen:" #: src/crafting_gui.cpp msgid "too dark" @@ -133690,10 +135476,6 @@ msgstr "zu traurig" msgid "slow %d%%" msgstr "langsam %d%%" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "ja" - #: src/crafting_gui.cpp msgid "Searched" msgstr "Suchergebnis" @@ -133788,39 +135570,39 @@ msgstr "%1$s schießt auf %2$s." #: src/creature.cpp msgid "Severe pain" -msgstr "" +msgstr "Starke Schmerzen" #: src/creature.cpp msgid "Intense pain" -msgstr "" +msgstr "Intensive Schmerzen" #: src/creature.cpp msgid "Unmanageable pain" -msgstr "" +msgstr "Unerträgliche Schmerzen" #: src/creature.cpp msgid "Distressing pain" -msgstr "" +msgstr "Quälender Schmerzen" #: src/creature.cpp msgid "Distracting pain" -msgstr "" +msgstr "Ablenkende Schmerzen" #: src/creature.cpp msgid "Moderate pain" -msgstr "" +msgstr "Mäßige Schmerzen" #: src/creature.cpp msgid "Mild pain" -msgstr "" +msgstr "Milde Schmerzen" #: src/creature.cpp msgid "Minimal pain" -msgstr "" +msgstr "Geringe Schmerzen" #: src/creature.cpp msgid "No pain" -msgstr "Kein Schmerz" +msgstr "Keine Schmerzen" #: src/creature.cpp msgid "Hostile" @@ -133838,6 +135620,11 @@ msgstr "Freundl." msgid "BUG: Behavior unnamed. (Creature::get_attitude_ui_data)" msgstr "BUG: Namenloses Verhalten. (Creature::get_attitude_ui_data)" +#: src/debug.cpp +#, c-format +msgid "See %s for a full stack backtrace" +msgstr "" + #: src/debug.cpp msgid "An error has occurred! Written below is the error report:" msgstr "Ein Fehler ist aufgetreten! Es folgt der Fehlerbericht:" @@ -135076,7 +136863,7 @@ msgstr "" msgid "You must construct expansions in fields." msgstr "Du musst Expansionen auf Feldern bauen." -#: src/editmap.cpp src/mission_companion.cpp +#: src/editmap.cpp src/faction_camp.cpp msgid "" "Engine cannot support merging vehicles from two overmaps, please remove them" " from the OM tile." @@ -137110,460 +138897,2170 @@ msgstr "Essensversorgung: %s" msgid "Combat Ability: %s" msgstr "Kampffähigkeit: %s" -#: src/field.cpp -msgid "blood splatter" -msgstr "Blutspritzer" +#: src/faction_camp.cpp +msgid " [DONE]\n" +msgstr " [FERTIG]\n" -#: src/field.cpp -msgid "blood stain" -msgstr "Blutfleck" +#: src/faction_camp.cpp +msgid " left]\n" +msgstr "" -#: src/field.cpp -msgid "puddle of blood" -msgstr "Blutpfütze" +#: src/faction_camp.cpp +msgid "Upgrade Camp" +msgstr "Lager aufwerten" -#: src/field.cpp -msgid "bile splatter" -msgstr "Gallenspritzer" +#: src/faction_camp.cpp +msgid "Working to expand your camp!\n" +msgstr "Bei der Arbeit, dein Lager auszubauen!\n" -#: src/field.cpp -msgid "bile stain" -msgstr "Gallenfleck" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?" +msgstr "" +"\n" +" \n" +"Willst du deine Verbündeten zurück in deine Gruppe bringen?" -#: src/field.cpp -msgid "puddle of bile" -msgstr "Gallenpfütze" +#: src/faction_camp.cpp +msgid "Recover Ally from Upgrading" +msgstr "Verbündeten von Aufwertung zurückrufen" -#: src/field.cpp -msgid "bloody meat chunks" -msgstr "blutige Fleischstücke" +#: src/faction_camp.cpp +msgid "Busy crafting!\n" +msgstr "Ist beschäftigt mit der Fertigung!\n" -#: src/field.cpp -msgid "heap of gore" -msgstr "Gedärmehaufen" +#: src/faction_camp.cpp +msgid " (Finish) Crafting" +msgstr " (Fertig) Fertigen" -#: src/field.cpp -msgid "scraps of flesh" -msgstr "Fleischfetzen" +#: src/faction_camp.cpp +msgid "Gather Materials" +msgstr "Materialien sammeln" -#: src/field.cpp -msgid "broken vegetation tangle" -msgstr "kaputter Wildwuchs" +#: src/faction_camp.cpp +msgid "Searching for materials to upgrade the camp.\n" +msgstr "Auf der Suche nach Materialien, um das Lager aufzuwerten.\n" -#: src/field.cpp -msgid "shattered branches and leaves" -msgstr "geborstene Äste und Blätter" +#: src/faction_camp.cpp +msgid "Recover Ally from Gathering" +msgstr "Verbündeten vom Sammeln zurückrufen" -#: src/field.cpp -msgid "shredded leaves and twigs" -msgstr "zerfetzte Blätter und Äste" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" +" \n" +"Effects:\n" +"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" +" \n" +"Must have enjoyability >= -6\n" +"Perishable food liquidated at penalty depending on upgrades and rot time:\n" +"> Rotten: 0%%\n" +"> Rots in < 2 days: 60%%\n" +"> Rots in < 5 days: 80%%\n" +" \n" +"Total faction food stock: %d kcal or %d day's rations" +msgstr "" +"Anmerkungen:\n" +"Verteile Lebensmittel an deine Gefährten und fülle deine Speisekammern. Platziere die Lebensmittel, die du verteilen möchtest, auf der anderen Seite des Zelteingangs zwischen dem Lagerleiter und der Wand.\n" +" \n" +"Wirkungen:\n" +"> Erhöht den Essensversorgungswert deiner Fraktion, welcher im Gegenzug benutzt wird, Arbeiter für ihre Zeit zu bezahlen.\n" +" \n" +"Minimale Genießbarkeit: -6\n" +"Verderbliche Lebensmittel:\n" +"> Verdorben: 0%%\n" +"> Verdirbt in < 2 Tagen: 60%%\n" +"> Verdirbt in < 5 Tagen: 80%%\n" +" \n" +"Gesamte Nahrungsvorräte der Fraktion: %d kcal oder %d Tagesrationen" -#: src/field.cpp -msgid "cobwebs" -msgstr "Spinnenweben" +#: src/faction_camp.cpp +msgid "Distribute Food" +msgstr "Nahrung verteilen" -#: src/field.cpp -msgid "thick webs" -msgstr "dicke Spinnenweben" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" +" \n" +"Effects:\n" +"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" +"> Items sitting on any type of furniture will not be moved.\n" +"> Items that are not listed in one of the categories are defaulted to the tools group." +msgstr "" +"Anmerkungen:\n" +"Setzt die Punkte, an denen Gegenstände in der »Niedere Arbeiten«-Mission sortiert werden, zurück.\n" +" \n" +"Wirkungen:\n" +"> Zuweisbare Punkte: Nahrung, Nahrung zum Verteilen, Samen, Waffen, Kleidung, Bioniken, alle Arten von Werkzeugen, Holz, Müll, Bücher, Medizin und Munition.\n" +"> Gegenstände, die sich auf einem Möbelstück befinden, werden nicht bewegt.\n" +"> Gegenstände, die nicht in eine der genannten Kategorien passt, werden standardmäßig als Werkzeuge behandelt." -#: src/field.cpp -msgid "webs" -msgstr "Spinnenweben" +#: src/faction_camp.cpp +msgid "Reset Sort Points" +msgstr "Sortierungspunkte zurücksetzen" -#: src/field.cpp -msgid "puddle of slime" -msgstr "Schleimpfütze" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to gather light brush and heavy sticks.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +"> heavy sticks\n" +"> withered plants\n" +"> splintered wood\n" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" +"Anmerkungen:\n" +"Entsende einen Begleiter, um nach leichtem Unterholz und schweren Stöcken zu suchen.\n" +" \n" +"Benutzte Fertigkeit: Überleben\n" +"Schwierigkeitsgrad: Entfällt\n" +"Sammelmöglichkeiten:\n" +"> Schwere Stöcke\n" +"> Verdorrte Pflanzen\n" +"> Zersplittertes Holz\n" +" \n" +"Risiko: Sehr niedrig\n" +"Dauer: 3 Stunden, wiederholt\n" +"Positionen: %d/3\n" -#: src/field.cpp -msgid "slime stain" -msgstr "Schleimfleck" +#: src/faction_camp.cpp +msgid "Collect Firewood" +msgstr "Feuerholz sammeln" -#: src/field.cpp -msgid "slime trail" -msgstr "Schleimspur" +#: src/faction_camp.cpp +msgid "Searching for firewood.\n" +msgstr "Auf der Suche nach Feuerholz.\n" -#: src/field.cpp -msgid "acid splatter" -msgstr "Säurespritzer" +#: src/faction_camp.cpp +msgid "Recover Firewood Gatherers" +msgstr "Feuerholzsammler zurückrufen" -#: src/field.cpp -msgid "acid streak" -msgstr "Säurepfütze" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to do low level chores and sort supplies.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" +"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours\n" +"Positions: %d/1\n" +msgstr "" +"Anmerkungen:\n" +"Entsende einen Begleiter, um einfache Tätigkeiten durchzuführen und Vorräte zu sortieren.\n" +" \n" +"Benutzte Fertigkeit: Herstellung\n" +"Schwierigkeitsgrad: Entfällt\n" +"Wirkungen:\n" +"> Material, dass sich außen auf dem Boden befindet, wird in die vier Kisten vor dem Zelt einsortiert\n" +"Standard, von oben nach unten: Kleidung, Nahrung, Bücher/Bioniken, Werkzeuge. Holz wird nach Süden aufgestapelt, Müll nach Norden.\n" +" \n" +"Risiko: Keins\n" +"Dauer: 3 Stunden\n" +"Positionen: %d/1\n" -#: src/field.cpp -msgid "pool of acid" -msgstr "Säurepfuhl" +#: src/faction_camp.cpp +msgid "Menial Labor" +msgstr "Niedere Arbeiten" -#: src/field.cpp -msgid "glob of sap" -msgstr "Saftpfütze" +#: src/faction_camp.cpp +msgid "Performing menial labor...\n" +msgstr "Übt niedere Arbeiten aus …\n" -#: src/field.cpp -msgid "pool of sap" -msgstr "Saftpfuhl" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?\n" +msgstr "" +"\n" +" \n" +"Möchtest du deine Verbündeten zurück in deine Gruppe bringen?\n" -#: src/field.cpp -msgid "sap splatter" -msgstr "Saftfleck" +#: src/faction_camp.cpp +msgid "Recover Menial Laborer" +msgstr "Niederen Arbeiter zurückrufen" -#: src/field.cpp -msgid "sludge trail" -msgstr "Schlammspur" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours \n" +"Positions: %d/1\n" +msgstr "" +"Anmerkungen:\n" +"Deine Basis ist groß genug geworden, um eine Expansion zu unterstützen. Expansionen eröffnen neue Möglichkeiten, aber können teuer und zeitraubend sein. Wähle mit Bedacht, nur 8 können für jedes Lager gebaut werden.\n" +"\n" +"Benutzte Fertigkeit: Herstellung\n" +"Schwierigkeitsgrad: Entfällt\n" +"Wirkungen:\n" +"> Wähle eine beliebige der verfügbaren Expansionen. Es ist eine gute Wahl, mit einem Bauernhof oder Holzlager anzufangen, da Nahrung benutzt wird, um Begleitermissionen zu unterstützen und Holz dein primäres Baumaterial ist.\n" +" \n" +"Risiko: Keins\n" +"Dauer: 3 Stunden\n" +"Positionen: %d/1\n" -#: src/field.cpp -msgid "thick sludge trail" -msgstr "dicke Schlammspur" +#: src/faction_camp.cpp +msgid "Expand Base" +msgstr "Basis expandieren" -#: src/field.cpp -msgid "thin sludge trail" -msgstr "dünne Schlammspur" +#: src/faction_camp.cpp +msgid "Surveying for expansion...\n" +msgstr "Auf der Auskundschaftung für Expansionen …\n" -#: src/field.cpp -msgid "fire" -msgstr "Feuer" +#: src/faction_camp.cpp +msgid "Recover Surveyor" +msgstr "Kundschafter zurückrufen" -#: src/field.cpp -msgid "raging fire" -msgstr "wütendes Feuer" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to a nearby forest to cut logs.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: 1 \n" +"Effects:\n" +"> 50%% of trees/trunks at the forest position will be cut down.\n" +"> 100%% of total material will be brought back.\n" +"> Repeatable with diminishing returns.\n" +" \n" +"Risk: None\n" +"Time: 6 Hour Base + Travel Time + Cutting Time\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "small fire" -msgstr "kleines Feuer" +#: src/faction_camp.cpp +msgid "Cut Logs" +msgstr "Holz hacken" -#: src/field.cpp -msgid "legacy rubble" -msgstr "Altschotter" +#: src/faction_camp.cpp +msgid "Cutting logs in the woods...\n" +msgstr "Zerhackt Baumstämme in den Wäldern …\n" -#: src/field.cpp -msgid "smoke" -msgstr "Rauch" +#: src/faction_camp.cpp +msgid "Recover Log Cutter" +msgstr "Holzhacker zurückrufen" -#: src/field.cpp -msgid "thick smoke" -msgstr "dicker Rauch" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Good for setting up resupply or contingency points.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward.\n" +" \n" +"Risk: Medium\n" +"Time: 6 Hour Construction + Travel\n" +"Positions: %d/1\n" +msgstr "" +"Anmerkungen:\n" +"Entsende einen Begleiter, um an einem entfernten Ort einen improvisierten Unterschlupf zu bauen und ihn mit Ausrüstung zu bestücken.\n" +" \n" +"Benutzte Fertigkeit: Überleben\n" +"Schwierigkeitsgrad: 3\n" +"Wirkungen:\n" +"> Gut zum Aufsetzen von Versorgungs- oder Notvorratspunkten.\n" +"> Die Ausrüstung bleibt unbewacht und könnte gestohlen werden.\n" +"> Dauer hängt vom Gewicht der verschickten Ausrüstung ab.\n" +" \n" +"Risiko: Mittel\n" +"Dauer: 6 Stunden Bauzeit + Reise\n" +"Positionen: %d/1\n" -#: src/field.cpp -msgid "thin smoke" -msgstr "dünner Rauch" +#: src/faction_camp.cpp +msgid "Setup Hide Site" +msgstr "Tierhautplatz aufsetzen" -#: src/field.cpp -msgid "hazy cloud" -msgstr "Dunstwolke" +#: src/faction_camp.cpp +msgid "Setting up a hide site...\n" +msgstr "Setzt einen Tierhautplatz auf …\n" -#: src/field.cpp -msgid "thick toxic gas" -msgstr "dickes Giftgas" +#: src/faction_camp.cpp +msgid "Recover Hide Setup" +msgstr "Tierhausplatzaufsetzung zurückrufen" -#: src/field.cpp -msgid "toxic gas" -msgstr "Giftgas" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Push gear out to a hide site or bring gear back from one.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 1\n" +"Effects:\n" +"> Good for returning equipment you left in the hide site shelter.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward or back.\n" +" \n" +"Risk: Medium\n" +"Time: 1 Hour Base + Travel\n" +"Positions: %d/1\n" +msgstr "" +"Anmerkungen:\n" +"Versende Ausrüstung zu einem Tierhautplatz oder hole sie zurück.\n" +" \n" +"Benutzte Fertigkeit: Überleben\n" +"Schwierigkeitsgrad: 1\n" +"Wirkungen:\n" +"> Gut, um Ausrüstung, die du auf dem Tierhautplatz hinterlassen hast, zurückzuholen.\n" +"> Die Ausrüstung bleibt unbewacht und könnte gestohlen werden.\n" +"> Dauer hängt vom Gewicht der transportierten Ausrüstung ab.\n" +" \n" +"Risiko: Mittel\n" +"Dauer: Minimum 1 Stunde + Reise\n" +"Positionen: %d/1\n" -#: src/field.cpp -msgid "tear gas" -msgstr "Tränengas" +#: src/faction_camp.cpp +msgid "Relay Hide Site" +msgstr "Tierhautplatz-Transport" -#: src/field.cpp -msgid "thick tear gas" -msgstr "dickes Tränengas" +#: src/faction_camp.cpp +msgid "Transfering gear to a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "radioactive gas" -msgstr "radioaktives Gas" +#: src/faction_camp.cpp +msgid "Recover Hide Relay" +msgstr "" -#: src/field.cpp -msgid "thick radioactive gas" -msgstr "dickes radioaktives Gas" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to edible plans.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Foraging Possibilities:\n" +"> wild vegetables\n" +"> fruits and nuts dependening on season\n" +"May produce less food than consumed!\n" +"Risk: Very Low\n" +"Time: 4 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "gas vent" -msgstr "Gasventil" +#: src/faction_camp.cpp +msgid "Forage for plants" +msgstr "" -#: src/field.cpp -msgid "electric cloud" -msgstr "elektrische Wolke" +#: src/faction_camp.cpp +msgid "Foraging for edible plants.\n" +msgstr "" -#: src/field.cpp -msgid "electric crackle" -msgstr "elektisches Knistern" +#: src/faction_camp.cpp +msgid "Recover Foragers" +msgstr "" -#: src/field.cpp -msgid "sparks" -msgstr "Funken" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to set traps for small game.\n" +" \n" +"Skill used: trapping\n" +"Difficulty: N/A \n" +"Trappinng Possibilities:\n" +"> small and tiny animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Low\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/2\n" +msgstr "" -#: src/field.cpp -msgid "odd ripple" -msgstr "seltsames Kräuseln" +#: src/faction_camp.cpp +msgid "Trap Small Game" +msgstr "" -#: src/field.cpp -msgid "swirling air" -msgstr "Luftwirbel" +#: src/faction_camp.cpp +msgid "Trapping Small Game.\n" +msgstr "" -#: src/field.cpp -msgid "tear in reality" -msgstr "Realitätsriss" +#: src/faction_camp.cpp +msgid "Recover Trappers" +msgstr "" -#: src/field.cpp -msgid "faint plasma" -msgstr "schwaches Plasma" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to hunt large animals.\n" +" \n" +"Skill used: marksmanship\n" +"Difficulty: N/A \n" +"Hunting Possibilities:\n" +"> small, medium, or large animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Medium\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "glaring plasma" -msgstr "grelles Plasma" +#: src/faction_camp.cpp +msgid "Hunt Large Animals" +msgstr "" -#: src/field.cpp -msgid "glowing plasma" -msgstr "glühendes Plasma" +#: src/faction_camp.cpp +msgid "Hunting large animals.\n" +msgstr "" -#: src/field.cpp -msgid "beam of light" -msgstr "Lichtstrahl" +#: src/faction_camp.cpp +msgid "Recover Hunter" +msgstr "" -#: src/field.cpp -msgid "faint glimmer" -msgstr "schwaches Glimmern" +#: src/faction_camp.cpp +msgid "Construct Map Fortifications" +msgstr "Kartenbefestigungen bauen" -#: src/field.cpp -msgid "intense beam of light" -msgstr "intensiver Lichtstrahl" +#: src/faction_camp.cpp +msgid "Construct Spiked Trench" +msgstr "Stachelgraben bauen" -#: src/field.cpp -msgid "spotlight" -msgstr "Scheinwerfer" +#: src/faction_camp.cpp +msgid "Constructing fortifications...\n" +msgstr "Baut Befestigungen …\n" -#: src/field.cpp -msgid "dazzling" -msgstr "Lichtblitz" +#: src/faction_camp.cpp +msgid "Finish Map Fortifications" +msgstr "Kartenbefestigungen fertigstellen" -#: src/field.cpp -msgid "plant sap splatter" -msgstr "Pflanzensaftspritzer" +#: src/faction_camp.cpp +msgid "Recruit Companions" +msgstr "Begleiter ausbilden" -#: src/field.cpp -msgid "plant sap stain" -msgstr "Pflanzensaftpfütze" +#: src/faction_camp.cpp +msgid "Searching for recruits.\n" +msgstr "Sucht nach Rekruten.\n" -#: src/field.cpp -msgid "puddle of resin" -msgstr "Baumharzpfuhl" +#: src/faction_camp.cpp +msgid "Recover Recruiter" +msgstr "Ausbilder zurückrufen" -#: src/field.cpp -msgid "bug blood splatter" -msgstr "Käferblutspritzer" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Select checkpoints to customize path.\n" +"> Reveals terrain around the path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" +"Anmerkungen:\n" +"Entsende einen Begleiter in die große unbekannte Welt. Hohe Überlebensfertigkeiten werden benötigt, um Kämpfe zu vermeiden, aber du solltest mit einer oder zwei Begegnungen rechnen.\n" +" \n" +"Benutzte Fertigkeit: Überleben\n" +"Schwierigkeitsgrad: 3\n" +"Wirkungen:\n" +"> Wähle Kontrollpunkte, um den Pfad anzupassen.\n" +"> Deckt Gelände um den Pfad auf.\n" +"> Kann von Tierhautplätzen abprallen, um die Reichweite zu erhöhen.\n" +" \n" +"Risiko: Hoch\n" +"Dauer: Reise\n" +"Positionen: %d/3\n" -#: src/field.cpp -msgid "bug blood stain" -msgstr "Käferblutpfütze" +#: src/faction_camp.cpp +msgid "Scout Mission" +msgstr "Pfadfindermission" -#: src/field.cpp -msgid "puddle of bug blood" -msgstr "Käferblutpfuhl" +#: src/faction_camp.cpp +msgid "Scouting the region.\n" +msgstr "Erkundet die Region.\n" -#: src/field.cpp -msgid "hemolymph splatter" -msgstr "Hämolymphenspritzer" +#: src/faction_camp.cpp +msgid "Recover Scout" +msgstr "Pfadfinder zurückrufen" -#: src/field.cpp -msgid "hemolymph stain" -msgstr "Hämolymphenpfütze" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 4\n" +"Effects:\n" +"> Pulls creatures encountered into combat instead of fleeing.\n" +"> Select checkpoints to customize path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: Very High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" +"Anmerkungen:\n" +"Entsende einen Begleiter, um das Ödland zu säubern. Sein Ziel ist es, alle feindlichen Kreaturen, denen er begegnet, zu töten und zurückkehren, wenn seine Wunden zu zahlreich sind oder die Situation zu gefährlich ist.\n" +" \n" +"Benutzte Fertigkeit: Überleben\n" +"Schwierigkeitsgrad: 4\n" +"Wirkungen:\n" +"> Zieht Kreaturen, denen begegnet wird, in den Kampf statt sie in die Flucht zu schlagen.\n" +"> Wähle Kontrollpunkte, um den Pfad anzupassen.\n" +"> Kann von Tierhautplätzen abprallen, um die Reichweite zu erhöhen.\n" +" \n" +"Risiko: Hoch\n" +"Dauer: Reise\n" +"Positionen: %d/3\n" -#: src/field.cpp -msgid "puddle of hemolymph" -msgstr "Hämolymphenpfuhl" +#: src/faction_camp.cpp +msgid "Combat Patrol" +msgstr "Kampfpatrouille" -#: src/field.cpp -msgid "shards of chitin" -msgstr "Chitinfetzen" +#: src/faction_camp.cpp +msgid "Patrolling the region.\n" +msgstr "Patroulliert die Region.\n" -#: src/field.cpp -msgid "shattered bug leg" -msgstr "erschüttertes Käferbein" +#: src/faction_camp.cpp +msgid "Recover Combat Patrol" +msgstr "Kampfpatroullie" -#: src/field.cpp -msgid "torn insect organs" -msgstr "zerrissene Insektenorgane" +#: src/faction_camp.cpp +msgid " Expansion Upgrade" +msgstr " Expansionsverbesserung" -#: src/field.cpp -msgid "gooey scraps" -msgstr "klebrige Fetzen" +#: src/faction_camp.cpp +msgid "Working to upgrade your expansions!\n" +msgstr "Bei der Arbeit, deine Expansionen zu aufzuwerten!\n" -#: src/field.cpp -msgid "heap of squishy gore" -msgstr "matschiger Gedärmehaufen" +#: src/faction_camp.cpp +msgid " Expansion" +msgstr "Expansion" -#: src/field.cpp -msgid "icky mess" -msgstr "widerliche Sauerei" +#: src/faction_camp.cpp +msgid "Recover Ally, " +msgstr "Rufe zurück Verbündeten, " -#: src/field.cpp -msgid "swirl of tobacco smoke" -msgstr "Tabaksrauchwirbel" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Have a companion attempt to completely dissemble a vehicle into components.\n" +" \n" +"Skill used: mechanics\n" +"Difficulty: 2 \n" +"Effects:\n" +"> Removed parts placed on the furniture in the garage.\n" +"> Skill plays a huge role to determine what is salvaged.\n" +" \n" +"Risk: None\n" +"Time: Skill Based \n" +msgstr "" +"Anmerkungen:\n" +"Lass einen Begleiter dir helfen, ein Fahrzeug vollständig in dessen Einzelteile zu zerlegen.\n" +"\n" +"Benutzte Fertigkeit: Mechanik\n" +"Schwierigkeitsgrad: 2\n" +"Wirkungen:\n" +"> Entfernte Teile landen auf den Möbeln in der Garage.\n" +"> Fertigkeit spielt eine riesige Rolle dabei, welche Teile geborgen werden.\n" +"\n" +"Risiko: Keins\n" +"Dauer: Abhängig von Fertigkeit\n" -#: src/field.cpp -msgid "thick tobacco smoke" -msgstr "dicker Tabaksrauch" +#: src/faction_camp.cpp +msgid " Chop Shop" +msgstr "Ausschlacht-Autowerkstatt" -#: src/field.cpp -msgid "tobacco smoke" -msgstr "Tabaksrauch" +#: src/faction_camp.cpp +msgid "Working at the chop shop...\n" +msgstr "Bei der Arbeit an der Ausschlacht-Autowerkstatt …\n" -#: src/field.cpp -msgid "pot smoke" -msgstr "Marihuanarauch" +#: src/faction_camp.cpp +msgid " (Finish) Chop Shop" +msgstr " (Fertig) Ausschlacht-Autowerkstatt" -#: src/field.cpp -msgid "swirl of pot smoke" -msgstr "Marihuanarauchwirbel" +#: src/faction_camp.cpp +msgid "Working in your kitchen!\n" +msgstr "Arbeitet in deiner Küche!\n" -#: src/field.cpp -msgid "thick pot smoke" -msgstr "dicker Marihuanarauch" +#: src/faction_camp.cpp +msgid " (Finish) Cooking" +msgstr " (Fertig) Kochen" -#: src/field.cpp -msgid "crack smoke" -msgstr "Crack-Rauch" +#: src/faction_camp.cpp +msgid "Working in your blacksmith shop!\n" +msgstr "Arbeitet in deiner Schmiede!\n" -#: src/field.cpp -msgid "swirl of crack smoke" -msgstr "Crack-Rauchwirbel" +#: src/faction_camp.cpp +msgid " (Finish) Smithing" +msgstr " (Fertig) Schmieden" -#: src/field.cpp -msgid "thick crack smoke" -msgstr "dicker Crack-Rauch" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plow any spaces that have reverted to dirt or grass.\n" +" \n" +msgstr "" +"Anmerkungen:\n" +"Pflüge alle Felder, die wieder zu Erde oder Gras geworden sind.\n" +" \n" -#: src/field.cpp -msgid "meth smoke" -msgstr "Meth-Rauch" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Restores only the plots created in the last expansion upgrade.\n" +"> Does not damage existing crops.\n" +" \n" +"Risk: None\n" +"Time: 5 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"Benutzte Fertigkeit: Herstellung\n" +"Schwierigkeitsgrad: Entfällt\n" +"Wirkungen:\n" +"> Stellt nur die Parzellen, die in der letzten Expansions-Aufwertung erstellt wurden, wieder her.\n" +"> Beschädigt bestehende Nutzpflanzen nicht.\n" +"\n" +"Risiko: Keins\n" +"Dauer: 5 Min. / Parzelle\n" +"Positionen: 0/1\n" -#: src/field.cpp -msgid "swirl of meth smoke" -msgstr "Meth-Rauchwirbel" +#: src/faction_camp.cpp +msgid " Plow Fields" +msgstr "Felder bestellen" -#: src/field.cpp -msgid "thick meth smoke" -msgstr "dicker Meth-Rauch" +#: src/faction_camp.cpp +msgid "Working to plow your fields!\n" +msgstr "Bei der Arbeit, deine Felder zu bestellen!\n" -#: src/field.cpp -msgid "angry swarm of bees" -msgstr "wütender Bienenschwarm" +#: src/faction_camp.cpp +msgid " (Finish) Plow Fields" +msgstr " (Fertig) Felder bestellen" -#: src/field.cpp -msgid "some bees" -msgstr "einige Bienen" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plant designated seeds in the spaces that have already been tilled.\n" +" \n" +msgstr "" +"Anmerkungen:\n" +"Pflanze ausgewählte Samen in die Felder, die bereits bestellt wurden, ein.\n" +" \n" -#: src/field.cpp -msgid "swarm of bees" -msgstr "Bienenschwarm" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose which seed type or all of your seeds.\n" +"> Stops when out of seeds or planting locations.\n" +"> Will plant in ALL dirt mounds in the expansion.\n" +" \n" +"Risk: None\n" +"Time: 1 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"Benutzte Fertigkeit: Überleben\n" +"Schwierigkeitsgrad: Entfällt\n" +"Wirkungen:\n" +"> Wähle einen Samentyp oder all deine Samen.\n" +"> Stoppt, wenn Samen alle sind oder kein Platz zum Pflanzen mehr da ist.\n" +"> Wird in ALLEN Erdhügeln in der Expansion pflanzen.\n" +"\n" +"Risiko: Keins\n" +"Dauer: 1 Min. / Parzelle\n" +"Positionen: 0/1\n" -#: src/field.cpp -msgid "airborne incendiary" -msgstr "Luftlandebrandbombe" +#: src/faction_camp.cpp +msgid " Plant Fields" +msgstr "Felder bepflanzen" -#: src/field.cpp -msgid "relaxation gas" -msgstr "Entspannungsgas" +#: src/faction_camp.cpp +msgid "Working to plant your fields!\n" +msgstr "Bei der Arbeit, deine Felder zu bepflanzen!\n" -#: src/field.cpp -msgid "sedative gas" -msgstr "Beruhigungsgas" +#: src/faction_camp.cpp +msgid " (Finish) Plant Fields" +msgstr " (Finish) Felder bepflanzen" -#: src/field.cpp -msgid "fungal haze" -msgstr "Fungusdunst" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Harvest any plants that are ripe and bring the produce back.\n" +" \n" +msgstr "" +"Anmerkungen:\n" +"Ernte alle reifen Pflanzen und bring den Ertrag zurück.\n" +" \n" -#: src/field.cpp -msgid "thick fungal haze" -msgstr "dicker Fungusdunst" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Will dump all harvesting products onto your location.\n" +" \n" +"Risk: None\n" +"Time: 3 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"Benutzte Fertigkeit: Überleben\n" +"Schwierigkeitsgrad: Entfällt\n" +"Wirkungen:\n" +"> Wird alle Ernteprodukte zu deinem Ort bringen.\n" +"\n" +"Risiko: Keins\n" +"Dauer: 3 Min. / Parzelle\n" +"Positionen: 0/1\n" -#: src/field.cpp -msgid "fungicidal gas" -msgstr "Fungusgas" +#: src/faction_camp.cpp +msgid " Harvest Fields" +msgstr "Felder abernten" -#: src/field.cpp -msgid "thick fungicidal gas" -msgstr "dickes Fungusgas" +#: src/faction_camp.cpp +msgid "Working to harvest your fields!\n" +msgstr "Bei der Arbeit, deine Felder abzuernten!\n" -#: src/field.cpp -msgid "smoke vent" -msgstr "Rauchventil" +#: src/faction_camp.cpp +msgid " (Finish) Harvest Fields" +msgstr " (Fertig) Felder abernten" -#: src/field.cpp -msgid "Whew... smells like skunk!" -msgstr "Ieeh! Das riecht wie Stinktier!" +#: src/faction_camp.cpp +msgid "Working on your farm!\n" +msgstr "Arbeitet auf deinem Bauernhof!\n" -#: src/field.cpp -msgid "Man, that smells like some good shit!" -msgstr "Mann, das riecht wie echt gutes Zeug!" +#: src/faction_camp.cpp +msgid "departs to search for materials..." +msgstr "zieht los auf der Suche nach Materialien …" -#: src/field.cpp -msgid "I don't know... should you really be smoking that stuff?" -msgstr "Ich weiß nicht … solltest du dieses Zeug wirklich rauchen?" +#: src/faction_camp.cpp +msgid "There are too many companions working on this mission!" +msgstr "Es gibt zu viele Begleiter, die an dieser Mission arbeiten!" -#: src/field.cpp -msgid "Ew, smells like burning rubber!" -msgstr "Ieh, das riecht wie verbranntes Gummi!" +#: src/faction_camp.cpp +msgid "departs to search for firewood..." +msgstr "zieht los, um Feuerholz zu suchen …" -#: src/field.cpp -msgid "Ugh, that smells rancid!" -msgstr "Pfui, das riecht widerlich!" +#: src/faction_camp.cpp +msgid "You don't have enough food stored to feed your companion." +msgstr "" +"Du hast nicht genügend Nahrung eingelagert, um deinen Begleiter zu ernähren." -#: src/field.cpp -#, c-format -msgid "A %s hits you!" -msgstr "1 %s trifft dich." +#: src/faction_camp.cpp +msgid "departs to dig ditches and scrub toilets..." +msgstr "geht weg, um Gruben zu graben und Toiletten zu putzen …" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits %2$s!" -msgstr "%1$s trifft %2$s!" +msgid "%s returns from working in the woods..." +msgstr "%s kehrt von der Arbeit in den Wäldern zurück …" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits the %2$s!" -msgstr "%1$s trifft %2$s!" +msgid "%s returns from working on the hide site..." +msgstr "%s kehrt von der Arbeit am Tierhautplatz zurück …" -#: src/field.cpp -msgid "The acid burns your body!" -msgstr "Die Säure frisst deinen Körper an!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from shuttling gear between the hide site..." +msgstr "" +"%s kehrt vom Transport der Ausrüstung zwischen dem Tierhautplatz zurück …" -#: src/field.cpp -msgid "The acid burns s body!" -msgstr "Die Säure frisst den Körper von an!" +#: src/faction_camp.cpp +msgid "departs to search for edible plants..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your legs and feet!" -msgstr "Die Säure frisst deine Beine und Füße an!" +#: src/faction_camp.cpp +msgid "departs to set traps for small animals..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s legs and feet!" -msgstr "Die Säure frisst die Beine und Füße von an!" +#: src/faction_camp.cpp +msgid "departs to hunt for meat..." +msgstr "" -#: src/field.cpp -msgid "You're lying in a pool of acid" -msgstr "Du liegst in einem Säurepfuhl" +#: src/faction_camp.cpp +msgid "departs to search for recruits..." +msgstr "zieht los auf der Suche nach Rekruten …" -#: src/field.cpp -msgid "You're standing in a pool of acid" -msgstr "Du stehst in einem Säurepfuhl" +#: src/faction_camp.cpp +msgid "departs to survey land..." +msgstr "reist ab, um Land auszukundschaften …" -#: src/field.cpp -msgid "The sap sticks to you!" -msgstr "Der Saft klebt an dir!" +#: src/faction_camp.cpp +msgid "You have already selected a surveyor!" +msgstr "Du hast bereits einen Kundschafter ausgewählt!" -#: src/field.cpp -msgid "The sap sticks to !" -msgstr "Der Saft klebt an !" +#: src/faction_camp.cpp +msgid "begins to upgrade the expansion..." +msgstr "fängt mit der Aufwertung der Expansion an …" -#: src/field.cpp -msgid "The sludge is thick and sticky. You struggle to pull free." -msgstr "Der Schlamm ist dick und klebrig. Du versuchst, dich freizukämpfen." +#: src/faction_camp.cpp +msgid "You already have a worker upgrading that expansion!" +msgstr "Du hast bereits einen Arbeiter, der diese Expansion verbessert!" -#: src/field.cpp -msgid "You burn your legs and feet!" -msgstr "Du verbrennst deine Beine und Füße." +#: src/faction_camp.cpp +msgid "You don't have the materials for the upgrade." +msgstr "Du hast nicht die Materialien für die Aufwertung." -#: src/field.cpp -msgid "You're burning up!" -msgstr "Du verglühst!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your farm with something..." +msgstr "%s kehrt von deinem Bauernhof mit etwas zurück …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns to you with something..." +msgstr "%s kehrt zu dir mit etwas zurück …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your kitchen with something..." +msgstr "%s kehrt aus deiner Küche mit etwas zurück …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your blacksmith shop with something..." +msgstr "%s kehrt aus deiner Schmiede mit etwas zurück …" + +#: src/faction_camp.cpp +msgid "begins plowing the field..." +msgstr "fängt mit der Bestellung des Feldes an …" + +#: src/faction_camp.cpp +msgid "You already have someone plowing that field." +msgstr "Du hast bereits jemanden, der dieses Feld bestellt." + +#: src/faction_camp.cpp +msgid "You have no additional seeds to give your companions..." +msgstr "Du hast keine weiteren Samen, die du deinen Begleitern geben kannst …" + +#: src/faction_camp.cpp +msgid "begins planting the field..." +msgstr "fängt mit der Bepflanzung des Feldes an …" + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Which seeds do you wish to have planted?" +msgstr "Welche Samen möchtest du eingepflanzt haben?" + +#: src/faction_camp.cpp +msgid "You already have someone planting that field." +msgstr "Du hast bereits jemanden, der dieses Feld bepflanzt." + +#: src/faction_camp.cpp +msgid "begins to harvest the field..." +msgstr "fängt mit dem Abernten des Feldes an …" + +#: src/faction_camp.cpp +msgid "You already have someone harvesting that field." +msgstr "Du hast bereits jemanden, der dieses Feld aberntet." + +#: src/faction_camp.cpp +msgid "You already have someone working in that garage." +msgstr "Du hast bereits jemanden, der in dieser Garage arbeitet." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your garage..." +msgstr "%s kehrt aus deiner Garage zurück …" + +#: src/faction_camp.cpp +msgid "You already have a companion upgrading the camp." +msgstr "Du hast bereits einen Begleiter, der das Lager verbessert." + +#: src/faction_camp.cpp +msgid "begins to upgrade the camp..." +msgstr "fängt mit der Aufwertung des Lagers an …" + +#: src/faction_camp.cpp +msgid "Forests and swamps are the only valid cutting locations." +msgstr "Wälder und Sümpfe sind die einzigen gültigen Plätze zum Bäumefällen." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Trip Estimate:\n" +"%s" +msgstr "" +"Reiseabschätzung:\n" +"%s" + +#: src/faction_camp.cpp +msgid "departs to cut logs..." +msgstr "geht weg, um Holz zu hacken …" + +#: src/faction_camp.cpp +msgid "Forests, swamps, and fields are valid hide site locations." +msgstr "Wälder, Sümpfe und Felder sind gültige Orte für Tierhautplätze." + +#: src/faction_camp.cpp +msgid "departs to build a hide site..." +msgstr "zieht los, um einen Tierhautplatz zu bauen …" + +#: src/faction_camp.cpp +msgid "You need equipment to setup a hide site..." +msgstr "Du brauchst Equipment, um einen Tierhautplatz aufzusetzen …" + +#: src/faction_camp.cpp +msgid "You must select an existing hide site." +msgstr "Du musst einen bestehenden Tierhautplatz auswählen." + +#: src/faction_camp.cpp +msgid "Bring gear back?" +msgstr "Ausrüstung zurück bringen?" + +#: src/faction_camp.cpp +msgid "departs for the hide site..." +msgstr "geht für den Tierhautplatz weg …" + +#: src/faction_camp.cpp +msgid "You need equipment to transport between the hide site..." +msgstr "Du brauchst Equipment für den Transport zwischen dem Tierhautplatz …" + +#: src/faction_camp.cpp +msgid "" +"Select a start and end point. Line must be straight. Fields, forests, and " +"swamps are valid fortification locations. In addition to existing " +"fortification constructions." +msgstr "" +"Wähle einen Start- und Endpunkt. Die Linie muss gerade sein. Felder, Wälder " +"und Sümpfe sind gültige Befestigungsorte. Zusätzlich zu bestehenden " +"Befestigungsbauten." + +#: src/faction_camp.cpp +msgid "Select an end point." +msgstr "Wähle einen Endpunkt." + +#: src/faction_camp.cpp +msgid "Invalid terrain in construction path." +msgstr "Ungültiges Gelände im Baupfad." + +#: src/faction_camp.cpp +msgid "You don't have the material to build the fortification." +msgstr "Du hast nicht das Material, um die Befestigung zu bauen." + +#: src/faction_camp.cpp +msgid "begins constructing fortifications..." +msgstr "fängt mit dem Bau von Befestigungen an …" + +#: src/faction_camp.cpp +msgid "" +"Select checkpoints until you reach maximum range or select the last point " +"again to end." +msgstr "" +"Wähle Kontrollpunkte, bis du die maximale Reichweite erreichst oder wähle " +"den letzten Punkt erneut zur Fertigstellung." + +#: src/faction_camp.cpp +msgid "departs on patrol..." +msgstr "reist für eine Patrouille ab …" + +#: src/faction_camp.cpp +msgid "You don't have the materials to craft that" +msgstr "Du hast nicht die Materialien, um das zu fertigen" + +#: src/faction_camp.cpp +#, c-format +msgid "Batch crafting %s [MAX: %d]: " +msgstr "Stapelfertigung: %s (Max.: %d): " + +#: src/faction_camp.cpp +msgid "Your batch is too large!" +msgstr "Dein Stapel ist zu groß!" + +#: src/faction_camp.cpp +msgid "You already have someone working in that expansion." +msgstr "Du hast bereits jemanden, der in dieser Expansion arbeitet." + +#: src/faction_camp.cpp +msgid "begins to work..." +msgstr "fängt mit der Arbeit an …" + +#: src/faction_camp.cpp +#, c-format +msgid "" +" Chopping this vehicle:\n" +"%s" +msgstr "" +" Ausschlachten des Fahrzeugs:\n" +"%s" + +#: src/faction_camp.cpp +msgid "begins working in the garage..." +msgstr "fängt mit der Arbeit in der Garage an …" + +#: src/faction_camp.cpp +msgid "Your companion seems disappointed that your pantry is empty..." +msgstr "" +"Dein Begleiter scheint enttäuscht zu sein, dass dein Vorratslager leer ist …" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s returns from upgrading the camp having earned a bit of experience..." +msgstr "" +"%s kehrt von der Verbesserung des Lagers zurück und erhielt etwas Erfahrung " +"dabei …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from doing the dirty work to keep the camp running..." +msgstr "" +"%s kehrt von der Drecksarbeit, die dein Lager am Leben erhält, zurück …" + +#: src/faction_camp.cpp +msgid "Sorting points have changed, forcing reset." +msgstr "Sortierpunkte wurden geändert, Zurücksetzen erzwungen." + +#: src/faction_camp.cpp +msgid "gathering materials" +msgstr "" + +#: src/faction_camp.cpp +msgid "foraging for edible plants" +msgstr "" + +#: src/faction_camp.cpp +msgid "trapping small animals" +msgstr "" + +#: src/faction_camp.cpp +msgid "hunting for meat" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from %s carrying supplies and has a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from constructing fortifications..." +msgstr "%s kehrt vom Bau von Befestigungen zurück …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from searching for recruits with a bit more experience..." +msgstr "" +"%s kehrt von der Suche nach Rekruten und mit etwas mehr Erfahrung zurück …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s encountered %s..." +msgstr "%s begegnete %s …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't find anyone to recruit..." +msgstr "%s hat niemanden zum Rekrutieren gefunden …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s convinced %s to hear a recruitment offer from you..." +msgstr "%s überzeugte %s, ein Rekrutierungsangebot von dir zu hören …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested in anything %s had to offer..." +msgstr "%s war in nichts, was %s zu bieten hatte, interessiert …" + +#: src/faction_camp.cpp +msgid "" +"NPC Overview:\n" +" \n" +msgstr "" +"NPC-Überblick:\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Name: %20s\n" +" \n" +msgstr "" +"Name: %20s\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "Strength: %10d\n" +msgstr "Stärke: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Dexterity: %10d\n" +msgstr "Geschicklichkeit: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Intelligence: %10d\n" +msgstr "Intelligenz: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Perception: %10d\n" +" \n" +msgstr "" +"Wahrnehmung: %10d\n" +" \n" + +#: src/faction_camp.cpp +msgid "Top 3 Skills:\n" +msgstr "Beste 3 Fertigkeiten:\n" + +#: src/faction_camp.cpp +msgid "Asking for:\n" +msgstr "Bittet um:\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"> Food: %10d days\n" +" \n" +msgstr "" +"> Nahrung: %10d Tage\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Faction Food:%9d days\n" +" \n" +msgstr "" +"Fraktionsnahrung:%9d Tage\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Recruit Chance: %10d%%\n" +" \n" +msgstr "" +"Rekrutierungschance: %10d%%\n" +" \n" + +#: src/faction_camp.cpp +msgid "Select an option:" +msgstr "Wähle eine Option:" + +#: src/faction_camp.cpp +msgid "Increase Food" +msgstr "Mehr Nahrung" + +#: src/faction_camp.cpp +msgid "Decrease Food" +msgstr "Weniger Nahrung" + +#: src/faction_camp.cpp +msgid "Make Offer" +msgstr "Angebot machen" + +#: src/faction_camp.cpp +msgid "Not Interested" +msgstr "Nicht interessiert" + +#: src/faction_camp.cpp +msgid "You decide you aren't interested..." +msgstr "Du meinst, dass du nicht interessiert bist …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s has been convinced to join!" +msgstr "%s wurde überzeugt, beizutreten!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested..." +msgstr "%s war nicht interessiert …" + +#: src/faction_camp.cpp +msgid "Your companion hit a river and didn't know how to swim..." +msgstr "" +"Dein Begleiter erreichte einen Fluss und wusste nicht, wie man schwimmt …" + +#: src/faction_camp.cpp +msgid "" +"Your companion hit a river and didn't know how to swim well enough to " +"cross..." +msgstr "" +"Dein Begleiter erreichte einen Fluss und konnte nicht gut genug schwimmen, " +"um ihn zu überqueren …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't return from patrol..." +msgstr "%s kam von der Patrouille nicht zurück …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from patrol..." +msgstr "%s kam von der Patrouille zurück …" + +#: src/faction_camp.cpp +msgid "Select an expansion:" +msgstr "Expansion wählen:" + +#: src/faction_camp.cpp +msgid "You choose to wait..." +msgstr "Du wartest …" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from surveying for the expansion." +msgstr "%s kehrt von der Auskundschaftung für die Expansion zurück." + +#: src/faction_camp.cpp +msgid "No seeds to plant!" +msgstr "Keine Samen zum Pflanzen!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from working your fields..." +msgstr "%s kehrt von der Arbeit auf deinen Feldern zurück …" + +#: src/faction_camp.cpp +msgid "MAIN" +msgstr "HAUPT" + +#: src/faction_camp.cpp +msgid " [N] " +msgstr "[N]" + +#: src/faction_camp.cpp +msgid " [NE] " +msgstr "[NO]" + +#: src/faction_camp.cpp +msgid " [E] " +msgstr "[O]" + +#: src/faction_camp.cpp +msgid " [SE] " +msgstr "[SO]" + +#: src/faction_camp.cpp +msgid " [S] " +msgstr "[S]" + +#: src/faction_camp.cpp +msgid " [SW] " +msgstr "[SW]" + +#: src/faction_camp.cpp +msgid " [W] " +msgstr "[W]" + +#: src/faction_camp.cpp +msgid " [NW] " +msgstr "[NW]" + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Base Missions" +msgstr "Basismissionen" + +#: src/faction_camp.cpp +msgid "Farm Expansion" +msgstr "Bauernhofexpansion" + +#: src/faction_camp.cpp +msgid "Garage Expansion" +msgstr "Garagenexpansion" + +#: src/faction_camp.cpp +msgid "Kitchen Expansion" +msgstr "Küchenexpansion" + +#: src/faction_camp.cpp +msgid "Blacksmith Expansion" +msgstr "Schimeden-Expansion" + +#: src/faction_camp.cpp +msgid "Empty Expansion" +msgstr "Leere Expansion" + +#: src/faction_camp.cpp +#, c-format +msgid "Select a location between %d and %d tiles away." +msgstr "Wähle einen Ort, der zwischen %d und %d Feldern entfernt ist." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"You must select a target between %d and %d range from the base. Range: %d" +msgstr "" +"Du musst ein Ziel in einer Entfernung zwischen %d und %d von der Basis aus " +"auswählen: Entfernung: %d" + +#: src/faction_camp.cpp +msgid "You must be able to see the target that you select." +msgstr "Du musst das Ziel, das du auswählst, sehen können." + +#: src/faction_camp.cpp +msgid "Do you want to bounce off this location to extend range?" +msgstr "" +"Möchtest du an diesem Ort einen Zwischenstopp einlegen, um die Reichweite zu" +" erhöhen?" + +#: src/faction_camp.cpp +msgid "food for you" +msgstr "Nahrung für dich" + +#: src/faction_camp.cpp +msgid "food for companions" +msgstr "Nahrung für Begeiter" + +#: src/faction_camp.cpp +msgid "weapons" +msgstr "Waffen" + +#: src/faction_camp.cpp +msgid "clothing" +msgstr "Kleidung" + +#: src/faction_camp.cpp +msgid "bionics" +msgstr "Bioniken" + +#: src/faction_camp.cpp +msgid "all kinds of tools" +msgstr "allerlei Werkzeuge" + +#: src/faction_camp.cpp +msgid "wood of various sorts" +msgstr "Holz verschiedener Arten" + +#: src/faction_camp.cpp +msgid "trash and rotting food" +msgstr "Müll und verderbendes Fleisch" + +#: src/faction_camp.cpp +msgid "books" +msgstr "Bücher" + +#: src/faction_camp.cpp +msgid "medication" +msgstr "Medizin" + +#: src/faction_camp.cpp +msgid "ammo" +msgstr "Munition" + +#: src/faction_camp.cpp +#, c-format +msgid "Reset point: %s?" +msgstr "Punkt zurücksetzen: %s?" + +#: src/faction_camp.cpp +msgid "" +" Items New Point Old Point\n" +" \n" +msgstr "" +"  Gegenstände Neuer Punkt Alter Punkt\n" +" \n" + +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +" Save Points?" +msgstr "" +"\n" +" \n" +" Punkte speichern?" + +#: src/faction_camp.cpp +msgid "Revert to default points?" +msgstr "Auf Standardpunkte zurücksetzen?" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15.2f (km)\n" +msgstr ">Entfernung:%15.2f (km)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">One Way: %15d (trips)\n" +msgstr ">Einweg: %15d (Reisen)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15.2f (km)\n" +msgstr ">Fertig: %15.2f (km)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15d (m)\n" +msgstr ">Entfernung:%15d (m)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15d (m)\n" +msgstr ">Fertig: %15d (m)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Travel: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Working: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Total: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Food: %15d (kcal)\n" +" \n" +msgstr "" +"Nahrung: %15d (kcal)\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"%s\n" +" \n" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s \n" +"Risk: None\n" +"Time: %s\n" +msgstr "" +"Anmerkungen:\n" +"%s\n" +" \n" +"Benutzte Fertigkeit: %s\n" +"Schwierigkeitsgrad: %d\n" +"%s\n" +"Risiko: Keins\n" +"Dauer: %s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s\n" +"Time: %s\n" +msgstr "" +"Benutzte Fertigkeit: %s\n" +"Schwierigkeitsgrad: %d\n" +"%s\n" +"Dauer: %s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" +" \n" +"Skill used: speech\n" +"Difficulty: 2 \n" +"Base Score: +%3d%%\n" +"> Expansion Bonus: +%3d%%\n" +"> Faction Bonus: +%3d%%\n" +"> Special Bonus: +%3d%%\n" +" \n" +"Total: Skill +%3d%%\n" +" \n" +"Risk: High\n" +"Time: 4 Days\n" +"Positions: %d/1\n" +msgstr "" +"Anmerkungen:\n" +"Die Rekrutierung neuer Gefährten ist sehr gefährlich und teuer. Das Ergebnis hängt stark von der Fertigkeit des entsendeten Begleiters und der Attraktivität deiner Basis ab.\n" +" \n" +"Benutzte Fertigkeit: Redekunst\n" +"Schwierigkeitsgrad: 2\n" +"Basiswertung: +%3d%%\n" +"> Expansionsbonus: +%3d%%\n" +"> Fraktionsbonus: +%3d%%\n" +"> Sonderbonus: +%3d%%\n" +" \n" +"Gesamt: Fertigkeit: +%3d%%\n" +" \n" +"Risiko: Hoch\n" +"Dauer: 4 Tage\n" +"Positionen: %d/1\n" + +#: src/faction_camp.cpp +msgid "" +"Notes: \n" +"Send a companion to gather materials for the next camp upgrade.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +msgstr "" +"Anmerkungen:\n" +"Schicke einen Begleiter los, um Materialien für die nächste Lageraufwertung zu sammeln.\n" +"\n" +"Benutzte Fertigkeit: Überleben\n" +"Schwierigkeitsgrad: Entfällt\n" +"Sammelmöglichkeiten:\n" + +#: src/faction_camp.cpp +msgid "" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: " +msgstr "" +" \n" +"Risiko: Sehr niedrig\n" +"Time: 3 Stunden, wiederholt\n" +"Positionen: " + +#: src/faction_camp.cpp +msgid "Harvestable: " +msgstr "Erntbar: " + +#: src/faction_camp.cpp +msgid "Ready for Planting: " +msgstr "Bereit zum Pflanzen: " + +#: src/faction_camp.cpp +msgid "Needs Plowing: " +msgstr "Pflügen notwendig: " + +#: src/faction_camp.cpp +#, c-format +msgid "Name: %25s\n" +msgstr "Name: %25s\n" + +#: src/faction_camp.cpp +msgid "---- Engines ----\n" +msgstr "---- Motoren ----\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Engine: %25s\n" +msgstr "Motor: %25s\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Status: %24d%%\n" +msgstr ">Zustand: %24d%%\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Fuel: %25s\n" +msgstr ">Treibstoff: %25s\n" + +#: src/faction_camp.cpp +msgid "---- Fuel Storage & Battery ----\n" +msgstr "-- Treibsofflagerung u. Batterie --\n" + +#: src/faction_camp.cpp +msgid "Estimated Chop Time: 5 Days\n" +msgstr "Geschätzte Ausschlachtdauer: 5 Tage\n" + +#: src/faction_camp.cpp +msgid "No items are located at the drop point..." +msgstr "Keine Gegenstände befinden sich am Abwurfpunkt …" + +#: src/faction_camp.cpp +#, c-format +msgid "You distribute %d kcal worth of food to your companions." +msgstr "Du verteilst Nahrung mit insgesamt %d kcal an deine Begleiter." + +#: src/faction_camp.cpp +#, c-format +msgid "While %s, a silent specter approaches %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s notices the antlered horror and slips away before it gets too close." +msgstr "" +"%s bemerkt den Geweihschrecken und schnellt davon, bevor er zu nah kam." + +#: src/faction_camp.cpp +#, c-format +msgid "Another survivor approaches %s asking for directions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Fearful that he may be an agent of some hostile faction, %s doesn't mention " +"the camp." +msgstr "" +"Aus Angst, dass er ein Agent einer feindlichen Fraktion sein könnte, " +"erwähnte %s das Lager nicht." + +#: src/faction_camp.cpp +msgid "The two part on friendly terms and the survivor isn't seen again." +msgstr "" +"Die Beiden trennten sich freundlich und der Überlebende wurde nicht mehr " +"gesehen." + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't detect the ambush until it was too late!" +msgstr "%s hat den Hinterhalt nicht bemerkt, bevor es zu spät war!" + +#: src/faction_camp.cpp +#, c-format +msgid "The bull moose charged %s from the tree line..." +msgstr "Der Elchbulle schnellte von der Baumreihe aus auf %s zu …" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Despite being caught off guard %s was able to run away until the moose gave " +"up pursuit." +msgstr "" +"Trotz der bösen Überraschung konnte %s weglaufen, bis der Elch aufgegeben " +"hat." + +#: src/faction_camp.cpp +#, c-format +msgid "The jabberwock grabbed %s by the arm from behind and began to scream." +msgstr "Der Jabberwock ergriff %s am Arm von hinten und fing an, zu schreien." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Terrified, %s spun around and delivered a massive kick to the creature's " +"torso..." +msgstr "" +"Voller Angst drehte sich %s um und verpasste einen gewaltigen Tritt in den " +"Torso der Kreatur …" + +#: src/faction_camp.cpp +#, c-format +msgid "Collapsing into a pile of gore, %s walked away unscathed..." +msgstr "Nachdem sie in einen Gedärmehaufen zerfiel, ging %s unversehrt fort." + +#: src/faction_camp.cpp +msgid "(Sounds like bullshit, you wonder what really happened.)" +msgstr "" +"(Hört sich nach groben Unfug an, du fragst dich, was wirklich passierte.)" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s turned to find the hideous black eyes of a giant wasp staring back from " +"only a few feet away..." +msgstr "" +"%s drehte sich um, und sah die bösartig schwarzen Augen einer Riesenwespe, " +"die nur in einem Meter Entfernung zurückstarrte …" + +#: src/faction_camp.cpp +msgid "The screams were terrifying, there was nothing anyone could do." +msgstr "Die Schreie waren fürchterlich, man konnte nichts tun." + +#: src/faction_camp.cpp +#, c-format +msgid "Pieces of %s were found strewn across a few bushes." +msgstr "Teile von %s wurden über ein paar Büsche verteilt gefunden." + +#: src/faction_camp.cpp +msgid "(You wonder if your companions are fit to work on their own...)" +msgstr "" +"(Du fragst dich, ob deine Begleiter in der Lage sind, selbstständig zu " +"arbeiten …)" + +#: src/field.cpp +msgid "blood splatter" +msgstr "Blutspritzer" + +#: src/field.cpp +msgid "blood stain" +msgstr "Blutfleck" + +#: src/field.cpp +msgid "puddle of blood" +msgstr "Blutpfütze" + +#: src/field.cpp +msgid "bile splatter" +msgstr "Gallenspritzer" + +#: src/field.cpp +msgid "bile stain" +msgstr "Gallenfleck" + +#: src/field.cpp +msgid "puddle of bile" +msgstr "Gallenpfütze" + +#: src/field.cpp +msgid "bloody meat chunks" +msgstr "blutige Fleischstücke" + +#: src/field.cpp +msgid "heap of gore" +msgstr "Gedärmehaufen" + +#: src/field.cpp +msgid "scraps of flesh" +msgstr "Fleischfetzen" + +#: src/field.cpp +msgid "broken vegetation tangle" +msgstr "kaputter Wildwuchs" + +#: src/field.cpp +msgid "shattered branches and leaves" +msgstr "geborstene Äste und Blätter" + +#: src/field.cpp +msgid "shredded leaves and twigs" +msgstr "zerfetzte Blätter und Äste" + +#: src/field.cpp +msgid "cobwebs" +msgstr "Spinnenweben" + +#: src/field.cpp +msgid "thick webs" +msgstr "dicke Spinnenweben" + +#: src/field.cpp +msgid "webs" +msgstr "Spinnenweben" + +#: src/field.cpp +msgid "puddle of slime" +msgstr "Schleimpfütze" + +#: src/field.cpp +msgid "slime stain" +msgstr "Schleimfleck" + +#: src/field.cpp +msgid "slime trail" +msgstr "Schleimspur" + +#: src/field.cpp +msgid "acid splatter" +msgstr "Säurespritzer" + +#: src/field.cpp +msgid "acid streak" +msgstr "Säurepfütze" + +#: src/field.cpp +msgid "pool of acid" +msgstr "Säurepfuhl" + +#: src/field.cpp +msgid "glob of sap" +msgstr "Saftpfütze" + +#: src/field.cpp +msgid "pool of sap" +msgstr "Saftpfuhl" + +#: src/field.cpp +msgid "sap splatter" +msgstr "Saftfleck" + +#: src/field.cpp +msgid "sludge trail" +msgstr "Schlammspur" + +#: src/field.cpp +msgid "thick sludge trail" +msgstr "dicke Schlammspur" + +#: src/field.cpp +msgid "thin sludge trail" +msgstr "dünne Schlammspur" + +#: src/field.cpp +msgid "raging fire" +msgstr "wütendes Feuer" + +#: src/field.cpp +msgid "small fire" +msgstr "kleines Feuer" + +#: src/field.cpp +msgid "legacy rubble" +msgstr "Altschotter" + +#: src/field.cpp +msgid "smoke" +msgstr "Rauch" + +#: src/field.cpp +msgid "thick smoke" +msgstr "dicker Rauch" + +#: src/field.cpp +msgid "thin smoke" +msgstr "dünner Rauch" + +#: src/field.cpp +msgid "hazy cloud" +msgstr "Dunstwolke" + +#: src/field.cpp +msgid "thick toxic gas" +msgstr "dickes Giftgas" + +#: src/field.cpp +msgid "toxic gas" +msgstr "Giftgas" + +#: src/field.cpp +msgid "tear gas" +msgstr "Tränengas" + +#: src/field.cpp +msgid "thick tear gas" +msgstr "dickes Tränengas" + +#: src/field.cpp +msgid "radioactive gas" +msgstr "radioaktives Gas" + +#: src/field.cpp +msgid "thick radioactive gas" +msgstr "dickes radioaktives Gas" + +#: src/field.cpp +msgid "gas vent" +msgstr "Gasventil" + +#: src/field.cpp +msgid "electric cloud" +msgstr "elektrische Wolke" + +#: src/field.cpp +msgid "electric crackle" +msgstr "elektisches Knistern" + +#: src/field.cpp +msgid "sparks" +msgstr "Funken" + +#: src/field.cpp +msgid "odd ripple" +msgstr "seltsames Kräuseln" + +#: src/field.cpp +msgid "swirling air" +msgstr "Luftwirbel" + +#: src/field.cpp +msgid "tear in reality" +msgstr "Realitätsriss" + +#: src/field.cpp +msgid "faint plasma" +msgstr "schwaches Plasma" + +#: src/field.cpp +msgid "glaring plasma" +msgstr "grelles Plasma" + +#: src/field.cpp +msgid "glowing plasma" +msgstr "glühendes Plasma" + +#: src/field.cpp +msgid "beam of light" +msgstr "Lichtstrahl" + +#: src/field.cpp +msgid "faint glimmer" +msgstr "schwaches Glimmern" + +#: src/field.cpp +msgid "intense beam of light" +msgstr "intensiver Lichtstrahl" + +#: src/field.cpp +msgid "spotlight" +msgstr "Scheinwerfer" + +#: src/field.cpp +msgid "dazzling" +msgstr "Lichtblitz" + +#: src/field.cpp +msgid "plant sap splatter" +msgstr "Pflanzensaftspritzer" + +#: src/field.cpp +msgid "plant sap stain" +msgstr "Pflanzensaftpfütze" + +#: src/field.cpp +msgid "puddle of resin" +msgstr "Baumharzpfuhl" + +#: src/field.cpp +msgid "bug blood splatter" +msgstr "Käferblutspritzer" + +#: src/field.cpp +msgid "bug blood stain" +msgstr "Käferblutpfütze" + +#: src/field.cpp +msgid "puddle of bug blood" +msgstr "Käferblutpfuhl" + +#: src/field.cpp +msgid "hemolymph splatter" +msgstr "Hämolymphenspritzer" + +#: src/field.cpp +msgid "hemolymph stain" +msgstr "Hämolymphenpfütze" + +#: src/field.cpp +msgid "puddle of hemolymph" +msgstr "Hämolymphenpfuhl" + +#: src/field.cpp +msgid "shards of chitin" +msgstr "Chitinfetzen" + +#: src/field.cpp +msgid "shattered bug leg" +msgstr "erschüttertes Käferbein" + +#: src/field.cpp +msgid "torn insect organs" +msgstr "zerrissene Insektenorgane" + +#: src/field.cpp +msgid "gooey scraps" +msgstr "klebrige Fetzen" + +#: src/field.cpp +msgid "heap of squishy gore" +msgstr "matschiger Gedärmehaufen" + +#: src/field.cpp +msgid "icky mess" +msgstr "widerliche Sauerei" + +#: src/field.cpp +msgid "swirl of tobacco smoke" +msgstr "Tabaksrauchwirbel" + +#: src/field.cpp +msgid "thick tobacco smoke" +msgstr "dicker Tabaksrauch" + +#: src/field.cpp +msgid "tobacco smoke" +msgstr "Tabaksrauch" + +#: src/field.cpp +msgid "pot smoke" +msgstr "Marihuanarauch" + +#: src/field.cpp +msgid "swirl of pot smoke" +msgstr "Marihuanarauchwirbel" + +#: src/field.cpp +msgid "thick pot smoke" +msgstr "dicker Marihuanarauch" + +#: src/field.cpp +msgid "crack smoke" +msgstr "Crack-Rauch" + +#: src/field.cpp +msgid "swirl of crack smoke" +msgstr "Crack-Rauchwirbel" + +#: src/field.cpp +msgid "thick crack smoke" +msgstr "dicker Crack-Rauch" + +#: src/field.cpp +msgid "meth smoke" +msgstr "Meth-Rauch" + +#: src/field.cpp +msgid "swirl of meth smoke" +msgstr "Meth-Rauchwirbel" + +#: src/field.cpp +msgid "thick meth smoke" +msgstr "dicker Meth-Rauch" + +#: src/field.cpp +msgid "angry swarm of bees" +msgstr "wütender Bienenschwarm" + +#: src/field.cpp +msgid "some bees" +msgstr "einige Bienen" + +#: src/field.cpp +msgid "swarm of bees" +msgstr "Bienenschwarm" + +#: src/field.cpp +msgid "airborne incendiary" +msgstr "Luftlandebrandbombe" + +#: src/field.cpp +msgid "relaxation gas" +msgstr "Entspannungsgas" + +#: src/field.cpp +msgid "sedative gas" +msgstr "Beruhigungsgas" + +#: src/field.cpp +msgid "fungal haze" +msgstr "Fungusdunst" + +#: src/field.cpp +msgid "thick fungal haze" +msgstr "dicker Fungusdunst" + +#: src/field.cpp +msgid "fungicidal gas" +msgstr "Fungusgas" + +#: src/field.cpp +msgid "thick fungicidal gas" +msgstr "dickes Fungusgas" + +#: src/field.cpp +msgid "smoke vent" +msgstr "Rauchventil" + +#: src/field.cpp +msgid "Whew... smells like skunk!" +msgstr "Ieeh! Das riecht wie Stinktier!" + +#: src/field.cpp +msgid "Man, that smells like some good shit!" +msgstr "Mann, das riecht wie echt gutes Zeug!" + +#: src/field.cpp +msgid "I don't know... should you really be smoking that stuff?" +msgstr "Ich weiß nicht … solltest du dieses Zeug wirklich rauchen?" + +#: src/field.cpp +msgid "Ew, smells like burning rubber!" +msgstr "Ieh, das riecht wie verbranntes Gummi!" + +#: src/field.cpp +msgid "Ugh, that smells rancid!" +msgstr "Pfui, das riecht widerlich!" + +#: src/field.cpp +#, c-format +msgid "A %s hits you!" +msgstr "1 %s trifft dich." + +#: src/field.cpp +#, c-format +msgid "A %1$s hits %2$s!" +msgstr "%1$s trifft %2$s!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits the %2$s!" +msgstr "%1$s trifft %2$s!" + +#: src/field.cpp +msgid "The acid burns your body!" +msgstr "Die Säure frisst deinen Körper an!" + +#: src/field.cpp +msgid "The acid burns s body!" +msgstr "Die Säure frisst den Körper von an!" + +#: src/field.cpp +msgid "The acid burns your legs and feet!" +msgstr "Die Säure frisst deine Beine und Füße an!" + +#: src/field.cpp +msgid "The acid burns s legs and feet!" +msgstr "Die Säure frisst die Beine und Füße von an!" + +#: src/field.cpp +msgid "You're lying in a pool of acid" +msgstr "Du liegst in einem Säurepfuhl" + +#: src/field.cpp +msgid "You're standing in a pool of acid" +msgstr "Du stehst in einem Säurepfuhl" + +#: src/field.cpp +msgid "The sap sticks to you!" +msgstr "Der Saft klebt an dir!" + +#: src/field.cpp +msgid "The sap sticks to !" +msgstr "Der Saft klebt an !" + +#: src/field.cpp +msgid "The sludge is thick and sticky. You struggle to pull free." +msgstr "Der Schlamm ist dick und klebrig. Du versuchst, dich freizukämpfen." + +#: src/field.cpp +msgid "You burn your legs and feet!" +msgstr "Du verbrennst deine Beine und Füße." + +#: src/field.cpp +msgid "You're burning up!" +msgstr "Du verglühst!" #: src/field.cpp msgid "You're set ablaze!" @@ -138178,6 +141675,14 @@ msgstr "Teleportieren – Benachbarte Oberkarte" msgid "Test trait group" msgstr "Wesenszuggruppe testen" +#: src/game.cpp +msgid "Show debug message" +msgstr "Debug-Nachricht anzeigen" + +#: src/game.cpp +msgid "Crash game (test crash handling)" +msgstr "Spiel-Absturz (Test-Absturz-Handhabung)" + #: src/game.cpp msgid "Quit to Main Menu" msgstr "Zurück zum Hauptmenü" @@ -138303,9 +141808,11 @@ msgstr "Stunde" msgid "minute" msgstr "Minute" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp src/martialarts.cpp msgid "turn" -msgstr "Zug" +msgid_plural "turns" +msgstr[0] "Zug" +msgstr[1] "Züge" #: src/game.cpp msgid "Set year to?" @@ -138958,7 +142465,7 @@ msgstr "Gegenstand benutzen auf" msgid "Sort armor" msgstr "Kleidung sortieren" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "Angreifen" @@ -138983,13 +142490,13 @@ msgstr "%s kann nirgendwo hingehen!" #: src/game.cpp msgid "Limbs of: " -msgstr "Körperglied von:" +msgstr "Körperteile von: " #: src/game.cpp msgid "Use which item?" msgstr "Welchen Gegenstand benutzen?" -#: src/game.cpp src/iuse.cpp src/veh_interact.cpp +#: src/game.cpp src/iuse.cpp msgid "Never mind" msgstr "Vergiss es" @@ -139031,7 +142538,7 @@ msgstr "" "bisschen weiterbrennen." #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." +msgid "It looks solid, and will burn for a few hours without extra fuel." msgstr "" "Sieht solide aus und wird ohne zusätzlichen Brennstoff für einige Stunden " "weiterbrennen." @@ -139041,6 +142548,8 @@ msgid "" "It's very well supplied and even without extra fuel might burn for at least " "a part of a day." msgstr "" +"Es ist sehr gut versorgt und könnte auch ohne zusätzlichen Brennstoff für " +"mehrere Stunden weiterbrennen." #: src/game.cpp #, c-format @@ -139197,7 +142706,7 @@ msgstr "Typ bearbeiten" #: src/game.cpp msgid "Edit options" -msgstr "" +msgstr "Optionen bearbeiten" #: src/game.cpp msgid "Edit position" @@ -139320,11 +142829,11 @@ msgstr "Zur usschlussliste hinzufügen" #: src/game.cpp msgid "to look around" -msgstr ", um dich umzusehen" +msgstr "zum Umsehen" #: src/game.cpp msgid "to shoot" -msgstr ", um zu schießen" +msgstr "zum Schießen" #: src/game.cpp #, c-format @@ -139493,7 +143002,7 @@ msgctxt "butchery menu" msgid "Cut up %s (%d)" msgstr "Aufschneiden %s (%d)" -#. ~ Name and number of items listed for disassembling +#. ~ Name, number of items and time to complete disassembling #: src/game.cpp #, c-format msgctxt "butchery menu" @@ -139532,8 +143041,8 @@ msgid "Choose corpse to butcher / item to disassemble" msgstr "Leiche zum Schlachten bzw. Gegenstand zum Demontieren auswählen" #: src/game.cpp -msgid "Butcher everything" -msgstr "Alles schlachten" +msgid "Quick butcher everything" +msgstr "Alles schnell-schlachten" #: src/game.cpp msgid "Disassemble everything once" @@ -139544,8 +143053,8 @@ msgid "Disassemble everything" msgstr "Alles demontieren" #: src/game.cpp -msgid "Cut up all you can" -msgstr "Alles aufschneiden, was du kannst" +msgid "Cut up everything" +msgstr "Alles aufschneiden" #: src/game.cpp msgid "" @@ -139572,7 +143081,7 @@ msgstr "Schnellschlachtung" #: src/game.cpp msgid "" -"This techinque is used when you are in a hurry, but still want to harvest " +"This technique is used when you are in a hurry, but still want to harvest " "something from the corpse. Yields are lower as you don't try to be precise," " but it's useful if you don't want to set up a workshop. Prevents zombies " "from raising." @@ -139581,7 +143090,7 @@ msgstr "" " der Leiche erbeuten willst. Die Ausbeute ist geringer als bei der " "Vollschlachtung, da du nicht versuchst, besonders präzise zu sein, aber sie " "ist dennoch brauchbar, besonders dann, wenn du keine Schlachtstation " -"einrichten möchtest. Verhindert das Wiederbeleben von Zombies." +"einrichten möchtest. Verhindert auch das Wiederbeleben von Zombies." #: src/game.cpp msgid "Full butchery" @@ -139606,14 +143115,15 @@ msgstr "Leiche ausnehmen" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "" -"Technik, welche die Entfernung innerer Organe und Eingeweide umfasst, um dem" -" Verwesen der Leiche im Inneren zu verhindern. Bringt innere Organe hervor. " -"Kadaver werden leichter sein und länger frisch bleiben. Kann mit anderen " -"Methoden für bessere Ergebnisse kombiniert werden." +"Technik, bei der die inneren Organe und Eingeweide entfernt werden, um die " +"Leiche vor der Verrottung zu schützen. Der Kadaver wird dadurch leichter und" +" bleibt auch länger frisch. Am Ende der Schlachtung erhält man die inneren " +"Organe. Diese Technik kann auch mit anderen Methoden kombiniert werden, um " +"bessere Ergebnisse zu erzielen." #: src/game.cpp msgid "Quarter corpse" @@ -139621,16 +143131,15 @@ msgstr "Leiche vierteilen" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." msgstr "" -"Durch die Vierteilung einer bereits ausgenommenen Leiche wirst du vier Teile" -" mit verringertem Gewicht und Volumen erhalten. Es kann dabei helfen, " -"Großwild zu transportieren. Diese Aktion zerstört Haut, Tierhaut, Fell, " -"usw., also wende diese Technik nicht an, wenn du diese Dinge später " -"brauchst." +"Durch Vierteilung einer bereits ausgenommenen Leiche erhältst du vier Teile " +"mit reduziertem Volumen und Gewicht. Was natürlich beim Transport von " +"Großwild helfen kann. Diese Technik zerstört allerdings Haut, Fell usw., " +"verwenden sie also nicht, wenn genau darauf aus bist." #: src/game.cpp msgid "Dissect corpse" @@ -139667,7 +143176,7 @@ msgstr "Du frisst das Gras." #: src/game.cpp #, c-format msgid "You leave the empty %s." -msgstr "Du hinterlässt das leere %s." +msgstr "Du hinterlässt: %s (leer)" #: src/game.cpp msgid "Change side for item" @@ -140124,7 +143633,7 @@ msgstr "%s ist zu schwer für dich, um es zu schieben." #: src/game.cpp #, c-format msgid "Moving the heavy %s is taking a lot of time!" -msgstr "Es kostet viel Zeit, das schwere %s zu bewegen!" +msgstr "Es kostet viel Zeit, um das schwere %s zu bewegen!" #: src/game.cpp #, c-format @@ -140532,6 +144041,10 @@ msgstr "Du spürst deinen Körper verwesen." msgid "You feel fatigue seeping into your body." msgstr "Du spürst Müdigkeit in deinem Körper eindringen." +#: src/game.cpp +msgid "The portal collapses!" +msgstr "Das Portal bricht in sich zusammen!" + #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." @@ -140775,6 +144288,19 @@ msgstr "DURSTLÖSCHUNG" msgid "JOY" msgstr "FREUDE" +#. ~ Used for permafood shelf life in the Eat menu +#: src/game_inventory.cpp +msgid "indefinite" +msgstr "unbegrenzt" + +#: src/game_inventory.cpp +msgid "SHELF LIFE" +msgstr "HALTBARKEIT" + +#: src/game_inventory.cpp +msgid "FRESHNESS" +msgstr "FRISCHE" + #: src/game_inventory.cpp msgid "SPOILS IN" msgstr "VERDIRBT IN" @@ -140807,6 +144333,38 @@ msgstr "Verschüttete Flüssigkeiten können nicht getrunken werden" msgid "You're fully charged" msgstr "Du bist voll aufgeladen" +#: src/game_inventory.cpp +msgid "soon!" +msgstr "bald!" + +#: src/game_inventory.cpp +msgid "fresh" +msgstr "frisch" + +#: src/game_inventory.cpp +msgid "quite fresh" +msgstr "ziemlich frisch" + +#: src/game_inventory.cpp +msgid "near midlife" +msgstr "halbfrisch" + +#: src/game_inventory.cpp +msgid "past midlife" +msgstr "nicht mehr halbfrisch" + +#: src/game_inventory.cpp +msgid "getting older" +msgstr "wird langsam alt" + +#: src/game_inventory.cpp +msgid "old" +msgstr "alt" + +#: src/game_inventory.cpp +msgid "rotten" +msgstr "verdorben" + #: src/game_inventory.cpp msgid "Consume item" msgstr "Gegenstand konsumieren" @@ -140950,6 +144508,14 @@ msgstr "Wähle eine Waffe, die du in %s stecken möchtest" msgid "You have no weapons you could put into your %s." msgstr "Du hast keine Waffen, die du in %s stecken könntest." +#: src/game_inventory.cpp src/iuse.cpp +msgid "Cut up what?" +msgstr "Was aufschneiden?" + +#: src/game_inventory.cpp +msgid "You have nothing to cut up." +msgstr "Du hast nichts zum aufschneiden." + #: src/game_inventory.cpp msgid "Saw barrel" msgstr "Lauf absägen" @@ -141265,7 +144831,7 @@ msgstr "Wie lange willst du warten?" msgid "Are you sure you want to sleep?" msgstr "Willst du wirklich schlafen?" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "Ja." @@ -141561,8 +145127,8 @@ msgid "" "Please press one of the following for help on that topic:\n" "Press ESC to return to the game." msgstr "" -"Bitte drücke eine der folgenden Tasten, um Hilfe zum entsprechenden Thema zu erhalten:\n" -"Drücke ESC, um zum Spiel zurückzukehren." +"Bitte drücke eine der folgenden Tasten, um zum entsprechenden Hilfe-Thema zu" +" gelangen. Drücke »ESC«, um zum Spiel zurückzukehren." #: src/help.cpp msgid "Note colors: " @@ -141582,6 +145148,11 @@ msgstr "" "Du hast keinen geeigneten Gegenstand, den du mit einer Diamantbeschichtung " "überziehen könntest" +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "Du versiehst »%s« mit einer Diamantbeschichtung." + #: src/iexamine.cpp #, c-format msgid "Use the %s?" @@ -141636,7 +145207,7 @@ msgstr "" #: src/iexamine.cpp msgid "Transfer All Money" -msgstr "Alles Geld überweisen" +msgstr "Das gesamte Geld auf eine einzige Karte übertragen" #: src/iexamine.cpp #, c-format @@ -142332,7 +145903,7 @@ msgstr "Du füllst %1$s mit %2$s auf." #: src/iexamine.cpp #, c-format msgid "Dispense or dump %s" -msgstr "%s umfüllen oder ausschütten " +msgstr "%s umfüllen oder ausschütten" #: src/iexamine.cpp src/pickup.cpp msgid "Have a drink" @@ -143134,6 +146705,10 @@ msgstr "Hier ist ein Räuchergestell." msgid "You inspect its contents and find: " msgstr "Du begutachtest den Inhalt und findest: " +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "..., dass es leer ist." + #: src/iexamine.cpp msgid "You see some smoldering embers there." msgstr "Hier siehst du etwas schwelende Glut." @@ -143375,11 +146950,11 @@ msgstr "Nicht zugewiesene Tasten" #: src/input.cpp msgid "Keybinding active only on this screen" -msgstr "Tastenbelegung nur auf diesem Bildschirm aktiv" +msgstr "Diese Tastenbelegung ist nur auf diesem Bildschirm aktiv" #: src/input.cpp msgid "Keybinding active globally" -msgstr "Zuweisung global aktiv" +msgstr "Diese Tastenbelegung ist global aktiv" #: src/input.cpp msgid "" @@ -143552,10 +147127,100 @@ msgstr "orange" msgid "black" msgstr "schwarz" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks as fresh as it can be. It still has " +"%s until it spoils." +msgstr "" +"* Dieses Lebensmittel sieht so frisch aus, wie es nur sein " +"kann. Es hat noch %s bis es verdirbt." + +#: src/item.cpp +msgid "* This food looks as fresh as it can be." +msgstr "" +"* Dieses Lebensmittel sieht so frisch aus, wie es nur sein " +"kann." + +#: src/item.cpp +#, c-format +msgid "" +"* This food looks old. It's just %s from becoming " +"inedible." +msgstr "" +"* Dieses Lebensmittel sieht recht alt aus und in %s " +"wird es ungenießbar sein." + +#: src/item.cpp +msgid "" +"* This food looks old. It's on the brink of becoming inedible." +msgstr "" +"* Dieses Lebensmittel sieht alt aus. Es ist an der Schwelle zur " +"Ungenießbarkeit." + +#: src/item.cpp +msgid "" +"* This food looks fine. If you were more skilled in cooking or" +" survival, you might be able to make a better estimation." +msgstr "" +"* Dieses Lebensmittel sieht gut aus. Wärst du im Kochen oder " +"Überleben erfahrener, könntest du möglicherweise eine bessere Einschätzung " +"seiner Haltbarkeit abgeben." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks quite fresh. It has %s until it" +" spoils." +msgstr "" +"* Dieses Lebensmittel sieht ziemlich frisch aus. Es hat " +"%s bis es verdirbt." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it is reaching its midlife. " +"There's %s before it spoils." +msgstr "" +"* Dieses Lebensmittel sieht so aus, als erreiche es die Hälfte " +"seiner Haltbarkeit. Es bleiben %s bis es verdirbt." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it has passed its midlife. " +"Edible, but will go bad in %s." +msgstr "" +"* Dieses Lebensmittel sieht aus, als hätte es die Hälfte seiner " +"Haltbarkeit überschritten. Essbar, aber es wird in %s" +" verderben." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it will be old soon. It has " +"%s, so if you plan to use it, it's now or never." +msgstr "" +"* Dieses Lebensmittel sieht so aus, als würde es langsam alt " +"werden. Es bleiben %s, wenn du es benutzen willst, dann " +"mach es jetzt oder nie." + #: src/item.cpp msgid "Category: " msgstr "Kategorie: " +#: src/item.cpp +msgid "$" +msgstr " €" + #: src/item.cpp msgid "Price: " msgstr "Preis: " @@ -143640,7 +147305,7 @@ msgstr "last rot: " #: src/item.cpp msgid "last temp: " -msgstr "" +msgstr "last temp: " #: src/item.cpp msgid "HOT: " @@ -143684,7 +147349,7 @@ msgstr "Portionen: " #: src/item.cpp msgid "* Consuming this item is addicting." -msgstr "* Der Konsum dieses Gegenstands macht süchtig." +msgstr "* Kann süchtig machen." #: src/item.cpp msgid "Calories (kcal): " @@ -143726,65 +147391,19 @@ msgstr "" #: src/item.cpp #, c-format msgid "" -"* This food is perishable, and takes %s to " -"rot from full freshness, at room temperature." -msgstr "" -"* Dieses Lebensmittel ist verderblich, und bei " -"Zimmertemperatur dauert es %s von voller Frische zu verderben." - -#: src/item.cpp -msgid "* This food looks as fresh as it can be." -msgstr "" -"* Dieses Lebensmittel sieht so frisch aus, wie es nur sein " -"kann." - -#: src/item.cpp -msgid "" -"* This food looks still quite fresh. It's far from becoming " -"old." -msgstr "" -"* Dieses Lebensmittel sieht noch ziemlich frisch aus. Es ist " -"noch lange nicht alt." - -#: src/item.cpp -msgid "" -"* This food looks like it is reaching its midlife. It has" -" some time ahead before spoiling." +"* This food is perishable, and at room temperature has an" +" estimated nominal shelf life of %s." msgstr "" -"* Dieses Lebensmittel sieht so aus, als erreiche es die Mitte der " -"Lebensdauer. Es bleibt noch etwas Zeit, bevor es verdirbt." - -#: src/item.cpp -msgid "" -"* This food looks like it has passed its midlife. Edible," -" but will go old sooner rather then later." -msgstr "" -"* Dieses Lebensmittel sieht aus, als hätte es die Hälfte der " -"Lebensdauer überschritten. Essbar, aber es wird früher oder später" -" alt." - -#: src/item.cpp -msgid "" -"* This food looks like it will be old soon. It's now or never, if" -" you plan to use it." -msgstr "" -"* Dieses Lebensmittel sieht so als, als würde es langsam alt " -"werden. Wenn du es benutzen willst, mach es jetzt oder nie." - -#: src/item.cpp -msgid "" -"* This food looks old. It's on a brink of becoming inedible." -msgstr "" -"* Dieses Lebensmittel sieht alt aus. Es ist an der Schwelle der " -"Ungenießbarkeit." +"* Verderbliches Lebensmittel. Die geschätzte " +"Mindesthaltbarkeit bei Raumtemperatur beträgt %s." #: src/item.cpp msgid "" "* Quality of this food suffers when it's frozen, and it will become" " mushy after thawing out.." msgstr "" -"* Die Qualität leidet, wenn es eingefroren ist und nach dem " -"Auftauen wird es matschig." +"* Die Qualität leidet, wenn es gefroren ist und nach dem Auftauen " +"wird es matschig." #: src/item.cpp msgid "" @@ -143823,10 +147442,6 @@ msgstr "" "Dieses Lebensmittel fing an, zu verderben. Es wäre eine sehr" " schlechte Idee, es zu essen." -#: src/item.cpp -msgid "Capacity: " -msgstr "Kapazität: " - #: src/item.cpp #, c-format msgid " round of %s" @@ -143834,6 +147449,10 @@ msgid_plural " rounds of %s" msgstr[0] " Schuss %s" msgstr[1] " Schuss %s" +#: src/item.cpp +msgid "Capacity: " +msgstr "Kapazität: " + #: src/item.cpp msgid " per round" msgstr " pro Schuss" @@ -143921,7 +147540,7 @@ msgstr "Grund-Zielgeschwindigkeit: " #: src/item.cpp msgid "Even chance of good hit at range: " -msgstr "Gleiche Chance, auf die Ferne zu treffen: " +msgstr "Gleiche Chance für guten Fernschuss: " #: src/item.cpp msgid "" @@ -143933,7 +147552,7 @@ msgstr " Sekunden" #: src/item.cpp msgid "Time to reach aim level: " -msgstr "Zeit, um Zielhöhe zu erreichen: " +msgstr "Zielgeschwindigkeitsmalus: " #: src/item.cpp msgid "Damage: " @@ -144000,7 +147619,7 @@ msgid "" "attacks with it." msgstr "" "Wenn an einer Feuerwaffe befestigt, ermöglicht es dir, " -"Streckangriffe damit vorzunehmen." +"Distanzangriffe damit vorzunehmen." #: src/item.cpp msgid "Dispersion modifier: " @@ -144019,6 +147638,18 @@ msgstr "Handhabungsmodifikator: " msgid "Ammo: %s" msgstr "Munition: %s" +#: src/item.cpp +msgid "%" +msgstr "%" + +#: src/item.cpp +msgid "Reload modifier: " +msgstr "Nachlademodifikator: " + +#: src/item.cpp +msgid "Minimum strength required modifier: " +msgstr "Benötigte-Mindeststärke-Modifikator: " + #: src/item.cpp msgid "Used on: " msgstr "Benutzt mit: " @@ -144185,17 +147816,17 @@ msgstr "Ein Kampfkunst-Handbuch." #: src/item.cpp msgid "It can be understood by beginners." -msgstr "Es kann von Anfängern verstanden werden." +msgstr "Kann von Anfängern verstanden werden." #: src/item.cpp #, c-format msgid "Can bring your %s skill to " -msgstr "Bringt %s bis zu " +msgstr "Kann die Fertigkeit %s bis zur Stufe erhöhen." #: src/item.cpp #, c-format msgid "Requires %s level to understand." -msgstr "Benötigt Fertigkeit %s in Stufe zum Verstehen." +msgstr "Benötigt zum Verstehen %s auf Stufe ." #: src/item.cpp msgid "Requires intelligence of to easily read." @@ -144277,7 +147908,7 @@ msgstr[1] "Maximal Ladungen." #: src/item.cpp #, c-format msgid "Made from: %s" -msgstr "Gemacht aus Material: %s" +msgstr "Hergestellt aus: %s" #: src/item.cpp #, c-format @@ -144310,13 +147941,13 @@ msgstr "Techniken, wenn getragen: " msgid "* This item can be used to make long reach attacks." msgstr "" "* Dieser Gegenstand kann benutzt werden, um weite " -"Streckangriffe vorzunehmen." +"Distanzangriffe auszuüben." #: src/item.cpp msgid "* This item can be used to make reach attacks." msgstr "" -"* Dieser Gegenstand kann benutzt werden, um Streckangriffe " -"vorzunehmen." +"* Dieser Gegenstand kann benutzt werden, um Distanzangriffe " +"auszuüben." #: src/item.cpp msgid "Average melee damage:" @@ -144392,17 +148023,23 @@ msgstr "* Dieses Kleidungsstück kann passend genäht werden." msgid "" "* These clothes are too large but can be undersized." msgstr "" +"* Diese Kleidung ist zu groß, könnte aber angepasst " +"werden." #: src/item.cpp msgid "" "* These clothes are undersized enough to accommodate " "abnormally small mutated anatomy." msgstr "" +"* Dieses Kleidungsstück ist klein genug für ungewöhnlich " +"kleine mutierte Anatomie." #: src/item.cpp msgid "" "* These clothes are undersized but can be refitted." msgstr "" +"* Diese Kleidung ist zu klein, könnte aber angepasst" +" werden." #: src/item.cpp msgid "* This item can be worn on either side of the body." @@ -144597,17 +148234,17 @@ msgstr "Du könntest es zum Fertigen davon verwenden: %s" #: src/item.cpp #, c-format msgid "It takes you an extremely long time to wield your %s." -msgstr "Es kostet extrem viel Zeit, %s zu halten." +msgstr "Es kostet extrem viel Zeit, um %s zu halten." #: src/item.cpp #, c-format msgid "It takes you a very long time to wield your %s." -msgstr "Es kostet sehr viel Zeit, %s zu halten." +msgstr "Es kostet sehr viel Zeit, um %s zu halten." #: src/item.cpp #, c-format msgid "It takes you a long time to wield your %s." -msgstr "Es kostet viel Zeit, %s zu halten." +msgstr "Es kostet viel Zeit, um %s zu halten." #: src/item.cpp #, c-format @@ -144713,7 +148350,7 @@ msgstr " (verdorben)" #: src/item.cpp msgid " (mushy)" -msgstr "(matschig)" +msgstr " (matschig)" #: src/item.cpp msgid " (old)" @@ -144733,11 +148370,11 @@ msgstr " (kalt)" #: src/item.cpp src/veh_interact.cpp msgid " (frozen)" -msgstr "(gefroren)" +msgstr " (gefroren)" #: src/item.cpp msgid " (melted)" -msgstr "(geschmolzen)" +msgstr " (geschmolzen)" #: src/item.cpp msgid " (oversize)" @@ -144745,7 +148382,7 @@ msgstr " (übergroß)" #: src/item.cpp msgid " (undersize)" -msgstr "" +msgstr " (zu klein)" #: src/item.cpp msgid " (fits)" @@ -144761,7 +148398,7 @@ msgstr " (Esz.)" #: src/item.cpp msgid " (radio:" -msgstr "(Funk:" +msgstr " (Funk:" #: src/item.cpp msgctxt "The radio mod is associated with the [R]ed button." @@ -145122,7 +148759,7 @@ msgstr "Inventar" #: src/itype.h msgid "click." -msgstr "»Klick.«" +msgstr "»Klick«." #: src/iuse.cpp #, c-format @@ -146453,7 +150090,7 @@ msgstr "Du kannst hier nicht bohren." #: src/iuse.cpp msgid "There's a vehicle in the way!" -msgstr "" +msgstr "Ein Fahrzeug steht im Weg!" #: src/iuse.cpp msgid "Mine where?" @@ -146464,6 +150101,9 @@ msgid "" "Mining the depths of your experience, you realize that it's best not to dig " "yourself into a hole. You stop digging." msgstr "" +"Die Tiefen deiner Erfahrung durchgrabend, stellst du fest, dass es besser " +"ist, sich nicht selbst in ein Loch einzubuddeln. Also hörst du in deiner " +"unendlichen Weisheit auf zu graben." #: src/iuse.cpp msgid "You can't mine there." @@ -146803,8 +150443,12 @@ msgstr "" "benutzen." #: src/iuse.cpp -msgid "You unfold solar array from the pack and plug it in." -msgstr "Du klappst das Solarmodul aus dem Rucksack aus und stöpselst es ein." +msgid "" +"You unfold solar array from the pack. You still need to connect it with a " +"cable." +msgstr "" +"Du klappst das Solarmodul des Rucksacks auf und musst jetzt aber noch ein " +"Kabel daran anbringen." #: src/iuse.cpp msgid "You fold your portable solar array into the pack." @@ -146959,10 +150603,6 @@ msgstr "Du produzierst %d Splitter." msgid "You waste a lot of the wood." msgstr "Zu verschwendest viel vom Holz." -#: src/iuse.cpp src/iuse_actor.cpp -msgid "Cut up what?" -msgstr "Was aufschneiden?" - #: src/iuse.cpp msgid "Chop down which tree?" msgstr "Welchen Baum fällen?" @@ -147854,7 +151494,7 @@ msgstr "%s war im Weg für dein Foto." #: src/iuse.cpp #, c-format msgid "This is a photo of %1$s. It was taken on %2$s." -msgstr "" +msgstr "Das ist ein Foto von %1$s. Es wurde am %2$s aufgenommen." #: src/iuse.cpp msgid "You can't see the camera screen, you're blind." @@ -148247,14 +151887,26 @@ msgstr "" "funktioniert er noch, aber es ist am besten, nicht mehr daran " "herumzubasteln." -#: src/iuse.cpp -msgid "Attach cable to vehicle where?" -msgstr "Wo soll das Kabel ans Fahrzeug angebracht werden?" - #: src/iuse.cpp msgid "Using cable:" msgstr "Kabel benutzen:" +#: src/iuse.cpp +msgid "Attach cable to vehicle" +msgstr "Kabel an Fahrzeug anbringen" + +#: src/iuse.cpp +msgid "Attach cable to self" +msgstr "Kabel an dir anbringen" + +#: src/iuse.cpp +msgid "Attach cable to solar pack" +msgstr "Kabel an Solarrucksack anbringen" + +#: src/iuse.cpp +msgid "Attach cable to vehicle where?" +msgstr "Wo soll das Kabel ans Fahrzeug angebracht werden?" + #: src/iuse.cpp msgid "Attach loose end of the cable" msgstr "Loses Ende des Kabels anschließen" @@ -148440,6 +152092,105 @@ msgstr "" "Einfach mehr Magnesium zu nehmen, wird nicht helfen. Du musst schlafen " "gehen, damit es wirken kann." +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "Du wirfst eine %s." + +#: src/iuse.cpp +msgid "Heads!" +msgstr "Kopf!" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "Zahl!" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "Mit Sicherheit." + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "Ich sehe es ganz deutlich." + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "Ohne Zweifel." + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "Ja, auf jeden Fall." + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "Verlass dich drauf!" + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "So, wie ich es sehe, ja." + +#: src/iuse.cpp +msgid "Most likely." +msgstr "Höchstwahrscheinlich." + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "Die Aussichten sehen gut aus." + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "Die Zeichen stehen auf ja." + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "In Nebel gehüllt erscheint die Antwort: »Versuchs noch einmal.«" + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "Frag später noch einmal." + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "Das sollte ich dir jetzt besser noch nicht sagen." + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "Das kann ich jetzt nicht vorhersagen." + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "Konzentriere dich und frag noch einmal." + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "Ich würde nicht darauf wetten." + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "Meine Antwort ist nein." + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "Meine Quellen sagen »Nein«." + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "Sieht nicht so gut aus." + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "Sehr zweifelhaft." + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "Du fragst den %s, dann schüttelst du ihn." + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "Der %s sagt: %s" + #: src/iuse_actor.cpp #, c-format msgid "The %s is empty!" @@ -148995,7 +152746,7 @@ msgstr[1] "Kann aktiviert werden, um geeignete Gegenstände einzulagern." #: src/iuse_actor.cpp msgid "Num items: " -msgstr "Ggst. Anzahl:" +msgstr "Ggst. Anzahl: " #: src/iuse_actor.cpp msgid "Item volume: Min: " @@ -149215,12 +152966,12 @@ msgstr "" #: src/iuse_actor.cpp msgid "Select a body part for: " -msgstr "Wähle ein Körperteil für:" +msgstr "Wähle ein Körperteil für: " #: src/iuse_actor.cpp #, c-format msgid "Select a body part of %s for %s:" -msgstr "Wähle ein Körperteil von %s für %s:" +msgstr "Wähle ein Körperteil von %s für %s: " #: src/iuse_actor.cpp msgid "Base healing: " @@ -150939,7 +154690,7 @@ msgstr "%2$s von %1$s kollidiert mit %4$s von %3$s." #: src/map.cpp src/monster.cpp src/vehicle_display.cpp #, c-format msgid "the %s" -msgstr "das %s" +msgstr "%s" #: src/map.cpp #, c-format @@ -151197,6 +154948,225 @@ msgstr "Vorratsraum öffnen" msgid "Open Evidence Locker" msgstr "Beweisschrank öffnen" +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "Benötigte %s: " + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "Fertigkeit" +msgstr[1] "Fertigkeiten" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "" + +#: src/martialarts.cpp +msgid "activate" +msgstr "aktiviert" + +#: src/martialarts.cpp +msgid "be used" +msgstr "verwendet" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "* Kann bewaffnet oder unbewaffnet %s werden" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "" +"* Kann nur solange du unbewaffnet bist %s werden" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "" +"* Kann nur solange du bewaffnet bist %s werden" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "* Wird bis zu %d mal gestapelt" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] "pro Stapel" +msgstr[1] "pro Stapel" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "* Angriffe sind völlig lautlos" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "Art: %s" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "defensiv" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "offensiv" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "Bonus: " + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "* Wird nur bei einem kritischen Treffer aktiviert" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "" +"* Wird nach erfolgreichem Ausweichen einen " +"Gegenangriff ausführen" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "" +"* Wird bei erfolgreichem Block einen Gegenangriff " +"ausführen" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "" +"* Wird sofortige Erholung von einem Fehlangriff " +"gewähren" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "* Wird dich aus einem Griff freibrechen" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "* Wird in einem weiten Bogen vor dir angreifen" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "* Wird benachbarte Gegner angreifen" + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind " +"it" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "* Wird Gegner %d %s zurückschlagen" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "Feld" +msgstr[1] "Felder" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "* Schlägt Gegner für %d %s nieder" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "* Betäubt Ziel für %d %s" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "* Wird das Ziel entwaffnen" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "" +"Dieser Stil zwingt dich, unbewaffnet zuzuschlagen, auch dann, wenn du " +"gerade eine Waffe hälst." + +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" +msgstr "" + +#: src/martialarts.cpp +msgid "Passive" +msgstr "Passiv" + +#: src/martialarts.cpp +msgid "Hit" +msgstr "Treffer" + +#: src/martialarts.cpp +msgid "Get hit" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "
Technik:
%s " + +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "Waffe:" +msgstr[1] "Waffen:" + +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr " Stil: %s " + #: src/material.cpp msgid "damages" msgstr "Schäden" @@ -151644,1104 +155614,382 @@ msgstr "Du schlägst %s" #: src/melee.cpp #, c-format -msgid " clobbers %s" -msgstr " haut %s" - -#: src/melee.cpp -#, c-format -msgid " smashes %s" -msgstr " schmettert %s nieder" - -#: src/melee.cpp -#, c-format -msgid " thrashes %s" -msgstr " demoliert %s" - -#: src/melee.cpp -#, c-format -msgid " batters %s" -msgstr " schlägt stark auf %s ein" - -#: src/melee.cpp -#, c-format -msgid " hits %s" -msgstr " trifft %s" - -#: src/melee.cpp -#, c-format -msgid " whacks %s" -msgstr " schlägt %s" - -#: src/melee.cpp -#, c-format -msgid "The bugs attack %s" -msgstr "Die Bugs greifen %s an" - -#. ~ NPC hits something but does no damage -#: src/melee.cpp -#, c-format -msgid "%s but does no damage." -msgstr "%s, aber richtet keinen Schaden an." - -#. ~ someone hits something but do no damage -#: src/melee.cpp -#, c-format -msgid "%s but do no damage." -msgstr "%s, aber du richtest keinen Schaden an." - -#. ~ NPC hits something (critical) -#: src/melee.cpp -#, c-format -msgid "%s. Critical!" -msgstr "%s. Kritisch!" - -#. ~ someone hits something for %d damage (critical) -#: src/melee.cpp -#, c-format -msgid "%s for %d damage. Critical!" -msgstr "%s für %d Schaden. Kritisch!" - -#. ~ NPC hits something -#: src/melee.cpp -#, c-format -msgid "%s." -msgstr "%s." - -#. ~ someone hits something for %d damage -#: src/melee.cpp -#, c-format -msgid "%s for %d damage." -msgstr "%s für %d Schaden." - -#: src/melee.cpp -#, c-format -msgid "You lunge for the %s, but miss!" -msgstr "Du schnappst nach %s, aber verfehlst!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force!" -msgstr "Du greifst nach %s und ziehst mit all deiner Kraft!" - -#: src/melee.cpp -#, c-format -msgid "You forcefully take %s from %s!" -msgstr "Mit Gewalt nimmst du dir %s von %s!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but it drops nearby!" -msgstr "" -"Du greifst nach %s und ziehst mit all deiner Kraft, aber es fällt in der " -"Nähe hin!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but in vain!" -msgstr "Du greifst nach %s und ziehst mit all deiner Kraft, aber vergebens!" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might forcing their %s to drop down nearby!" -msgstr "Mir aller Machst schlägst du auf %s zu, dabei fällt %s in die Nähe!" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might but %s remains in their hands!" -msgstr "" -"Mir aller Machst schlägst du auf %s zu, jedoch bleibt %s in den Händen!" - -#: src/melee.cpp src/npctalk.cpp -#, c-format -msgid "%s is hostile!" -msgstr "%s ist feindlich!" - -#: src/melee.cpp -#, c-format -msgid "You sneakily steal %1$s from %2$s!" -msgstr "Heimlich stiehlst du %1$s von %2$s!" - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s, but did not attract attention." -msgstr "" -"Du hast es nicht geschafft, %1$s von %2$s zu stehlen, du hast aber keine " -"Aufmerksamkeit auf dich gelenkt." - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s." -msgstr "Du hast es nicht geschafft, %1$s von %2$s zu stehlen." - -#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a -#. whack! x 12" -#: src/messages.cpp -#, c-format -msgid "%s x %d" -msgstr "%s (×%d)" - -#: src/messages.cpp -msgctxt "message type" -msgid "good" -msgstr "Gut" - -#: src/messages.cpp -msgctxt "message type" -msgid "bad" -msgstr "Schlecht" - -#: src/messages.cpp -msgctxt "message type" -msgid "mixed" -msgstr "Verschiedenes" - -#: src/messages.cpp -msgctxt "message type" -msgid "warning" -msgstr "Warnung" - -#: src/messages.cpp -msgctxt "message type" -msgid "info" -msgstr "Info" - -#: src/messages.cpp -msgctxt "message type" -msgid "neutral" -msgstr "Neutral" - -#: src/messages.cpp -msgctxt "message type" -msgid "debug" -msgstr "Debug" - -#: src/messages.cpp -#, c-format -msgid "< Press %s to filter, %s to reset >" -msgstr "< Drücke %s zum Filtern, %s zum Zurücksetzen >" - -#: src/messages.cpp -#, c-format -msgid "" -"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" -"Examples:\n" -" good:mutation\n" -" :you pick up: 1\n" -" crash!\n" -msgstr "" -"Format »TYP:SUCHTEXT«. Mögliche TYP-Werte: %s\n" -"Beispiele:\n" -" Gut:Mutation\n" -" Du nimmst: 1\n" -" Warnung:\n" - -#. ~ the 2nd %s is a type name, this is used to format a list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s, " -msgstr "%s, " - -#. ~ the 2nd %s is a type name, this is used to format the last type name in a -#. list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s." -msgstr "%s." - -#: src/mission_companion.cpp -msgid "Outpost Missions" -msgstr "Außenpostenmissionen" - -#: src/mission_companion.cpp -msgid "Base Missions" -msgstr "Basismissionen" - -#: src/mission_companion.cpp -msgid "Junk Shop Missions" -msgstr "Ramschladenmissionen" - -#: src/mission_companion.cpp -msgid "Agricultural Missions" -msgstr "Landwirtschaftsmissionen" - -#: src/mission_companion.cpp -msgid "Construction Missions" -msgstr "Baumissionen" - -#: src/mission_companion.cpp -msgid "Free Merchant Missions" -msgstr "Missionen des freien Handels" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." -msgstr "" -"Profit: 25$-500$\n" -"Gefahr: Niedrig\n" -"Dauer: 10 stündige Missionen\n" -"\n" -"Indem du einen deiner Verbündeten die Aufgabe erteilst, die Wildnis und isolierte Gebäude zu patroullieren, eröffnest ihm die Möglichkeit, sich Überlebensfähigkeiten anzueignen, während er sich in relativ sicheren Kämpfen gegen isolierte Kreaturen behauptet." - -#: src/mission_companion.cpp -msgid "Assign Scavenging Patrol" -msgstr "Sammelpatroille zuweisen" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Patrol Roster:\n" -msgstr "" -"Profit: 25$-500$\n" -"Gefahr: Niedrig\n" -"Dauer: 10 stündige Missionen\n" -"\n" -"Patrouillenliste:\n" - -#: src/mission_companion.cpp -msgid " hours] \n" -msgstr " Stunden] \n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?" -msgstr "" -"\n" -" \n" -"Willst du deine Verbündeten zurück in deine Gruppe bringen?" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Patrol" -msgstr "Sammelpatroille zurückrufen" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." -msgstr "" -"Profit: 200$-1000$\n" -"Gefahr: Mittel\n" -"Dauer: 10 stündige Missionen\n" -" \n" -"Plündermissionen zielen auf ehemals bewohnte Gebiete, um so viele wertvolle Gegenstände wie möglich zu ergattern, bevor man von den Untoten umzingelt ist. Mit Kämpfen ist zu rechnen und eine Unterstützung vom Rest der Gruppe kann nicht gewährleistet werden. Die Belohnungen sind größer und es gibt eine Channce, dass der Begleiter Gegenstände mitbringt." - -#: src/mission_companion.cpp -msgid "Assign Scavenging Raid" -msgstr "Plündermission zuweisen" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Raid Roster:\n" -msgstr "" -"Profit: 25$-500$\n" -"Gefahr: Mittel\n" -"Dauer: 10 stündige Missionen\n" -"\n" -"Plündererliste:\n" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Raid" -msgstr "Plündermission zurückrufen" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." -msgstr "" -"Profit: 8$/Stunde\n" -"Gefahr: Minimal\n" -"Dauer: Mindestens 1 Stunde\n" -"\n" -"Einen deiner Verbündeten eine niedere Arbeit zuzuweisen ist eine sichere Möglichkeit, ihnen grundlegende Fähigkeiten beizubringen und dabei zu helfen, eine Reputation mit dem Außenposten aufzubauen. Erwarte jedoch keine allzugroße Belohnung." - -#: src/mission_companion.cpp -msgid "Assign Ally to Menial Labor" -msgstr "Verbündeten niedere Arbeiten zuweisen" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"Profit: 8$/Stunde\n" -"Gefahr: Minimal\n" -"Dauer: Mindestens 1 Stunde\n" -" \n" -"Arbeitsliste:\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Menial Labor" -msgstr "Verbündeten von niederen Arbeiten zurückrufen" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." -msgstr "" -"Profit: 12$/Stunde\n" -"Gefahr: Minimal\n" -"Dauer: Mindestens 1 Stunde\n" -"\n" -"Das Zimmerhandwerk erfordert mehr Fertigkeiten als niedere Arbeiten und bietet eine mittelmäßig verbesserte Bezahlung. Es ist unwahrscheinlich, dass deine Begleiter in Kämpfe verwickelt werden, aber es gibt Gefahren, an selbstgebauten Gebäuen zu arbeiten." - -#: src/mission_companion.cpp -msgid "Assign Ally to Carpentry Work" -msgstr "Verbündeten Zimmerhandwerk zuweisen" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"Profit: 12$/Stunde\n" -"Gefahr: Minimal\n" -"Dauer: Mindestens 1 Stunde\n" -" \n" -"Arbeitsliste:\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Carpentry Work" -msgstr "Verbindeten von Zimmerhandwerk zurückrufen" - -#: src/mission_companion.cpp -msgid "Upgrade Camp" -msgstr "Lager aufwerten" - -#: src/mission_companion.cpp -msgid "Gather Materials" -msgstr "Materialien sammeln" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" -" \n" -"Effects:\n" -"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" -" \n" -"Must have enjoyability >= -6\n" -"Perishable food liquidated at penalty depending on upgrades and rot time:\n" -"> Rotten: 0%%\n" -"> Rots in < 2 days: 60%%\n" -"> Rots in < 5 days: 80%%\n" -" \n" -"Total faction food stock: %d kcal or %d day's rations" -msgstr "" -"Anmerkungen:\n" -"Verteile Lebensmittel an deine Gefährten und fülle deine Speisekammern. Platziere die Lebensmittel, die du verteilen möchtest, auf der anderen Seite des Zelteingangs zwischen dem Lagerleiter und der Wand.\n" -" \n" -"Wirkungen:\n" -"> Erhöht den Essensversorgungswert deiner Fraktion, welcher im Gegenzug benutzt wird, Arbeiter für ihre Zeit zu bezahlen.\n" -" \n" -"Minimale Genießbarkeit: -6\n" -"Verderbliche Lebensmittel:\n" -"> Verdorben: 0%%\n" -"> Verdirbt in < 2 Tagen: 60%%\n" -"> Verdirbt in < 5 Tagen: 80%%\n" -" \n" -"Gesamte Nahrungsvorräte der Fraktion: %d kcal oder %d Tagesrationen" - -#: src/mission_companion.cpp -msgid "Distribute Food" -msgstr "Nahrung verteilen" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" -" \n" -"Effects:\n" -"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" -"> Items sitting on any type of furniture will not be moved.\n" -"> Items that are not listed in one of the categories are defaulted to the tools group." -msgstr "" -"Anmerkungen:\n" -"Setzt die Punkte, an denen Gegenstände in der »Niedere Arbeiten«-Mission sortiert werden, zurück.\n" -" \n" -"Wirkungen:\n" -"> Zuweisbare Punkte: Nahrung, Nahrung zum Verteilen, Samen, Waffen, Kleidung, Bioniken, alle Arten von Werkzeugen, Holz, Müll, Bücher, Medizin und Munition.\n" -"> Gegenstände, die sich auf einem Möbelstück befinden, werden nicht bewegt.\n" -"> Gegenstände, die nicht in eine der genannten Kategorien passt, werden standardmäßig als Werkzeuge behandelt." - -#: src/mission_companion.cpp -msgid "Reset Sort Points" -msgstr "Sortierungspunkte zurücksetzen" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to gather light brush and heavy sticks.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -"> heavy sticks\n" -"> withered plants\n" -"> splintered wood\n" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: %d/3\n" -msgstr "" -"Anmerkungen:\n" -"Entsende einen Begleiter, um nach leichtem Unterholz und schweren Stöcken zu suchen.\n" -" \n" -"Benutzte Fertigkeit: Überleben\n" -"Schwierigkeitsgrad: Entfällt\n" -"Sammelmöglichkeiten:\n" -"> Schwere Stöcke\n" -"> Verdorrte Pflanzen\n" -"> Zersplittertes Holz\n" -" \n" -"Risiko: Sehr niedrig\n" -"Dauer: 3 Stunden, wiederholt\n" -"Positionen: %d/3\n" - -#: src/mission_companion.cpp -msgid "Collect Firewood" -msgstr "Feuerholz sammeln" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to do low level chores and sort supplies.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" -"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours\n" -"Positions: %d/1\n" -msgstr "" -"Anmerkungen:\n" -"Entsende einen Begleiter, um einfache Tätigkeiten durchzuführen und Vorräte zu sortieren.\n" -" \n" -"Benutzte Fertigkeit: Herstellung\n" -"Schwierigkeitsgrad: Entfällt\n" -"Wirkungen:\n" -"> Material, dass sich außen auf dem Boden befindet, wird in die vier Kisten vor dem Zelt einsortiert\n" -"Standard, von oben nach unten: Kleidung, Nahrung, Bücher/Bioniken, Werkzeuge. Holz wird nach Süden aufgestapelt, Müll nach Norden.\n" -" \n" -"Risiko: Keins\n" -"Dauer: 3 Stunden\n" -"Positionen: %d/1\n" - -#: src/mission_companion.cpp -msgid "Menial Labor" -msgstr "Niedere Arbeiten" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours \n" -"Positions: %d/1\n" -msgstr "" -"Anmerkungen:\n" -"Deine Basis ist groß genug geworden, um eine Expansion zu unterstützen. Expansionen eröffnen neue Möglichkeiten, aber können teuer und zeitraubend sein. Wähle mit Bedacht, nur 8 können für jedes Lager gebaut werden.\n" -"\n" -"Benutzte Fertigkeit: Herstellung\n" -"Schwierigkeitsgrad: Entfällt\n" -"Wirkungen:\n" -"> Wähle eine beliebige der verfügbaren Expansionen. Es ist eine gute Wahl, mit einem Bauernhof oder Holzlager anzufangen, da Nahrung benutzt wird, um Begleitermissionen zu unterstützen und Holz dein primäres Baumaterial ist.\n" -" \n" -"Risiko: Keins\n" -"Dauer: 3 Stunden\n" -"Positionen: %d/1\n" - -#: src/mission_companion.cpp -msgid "Expand Base" -msgstr "Basis expandieren" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to a nearby forest to cut logs.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: 1 \n" -"Effects:\n" -"> 50%% of trees/trunks at the forest position will be cut down.\n" -"> 50%% of total material will be brought back.\n" -"> Repeatable with diminishing returns.\n" -" \n" -"Risk: Low-Medium\n" -"Time: 6 Hour Base + Travel Time + Cutting Time\n" -"Positions: %d/1\n" -msgstr "" -"Anmerkungen:\n" -"Entsende einen Begleiter zu einem Wald in der Nähe, um Holz zu hacken.\n" -" \n" -"Benutzte Fertigkeit: Herstellung\n" -"Schwierigkeitsgrad: 1 \n" -"Wirkungen:\n" -"> 50%% der Bäume/Baumstümpfe an der Waldstelle werden gefällt bzw. zerhackt.\n" -"> 50%% des gesamten Materials wird zurückgebracht.\n" -"> Wiederholbar mit sinkenden Erträgen.\n" -" \n" -"Risiko: Niedrig bis mittel\n" -"Dauer: Minimum 6 Stunden + Reisezeit + Zeit fürs Holzhacken\n" -"Positionen: %d/1\n" - -#: src/mission_companion.cpp -msgid "Cut Logs" -msgstr "Holz hacken" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Good for setting up resupply or contingency points.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward.\n" -" \n" -"Risk: Medium\n" -"Time: 6 Hour Construction + Travel\n" -"Positions: %d/1\n" -msgstr "" -"Anmerkungen:\n" -"Entsende einen Begleiter, um an einem entfernten Ort einen improvisierten Unterschlupf zu bauen und ihn mit Ausrüstung zu bestücken.\n" -" \n" -"Benutzte Fertigkeit: Überleben\n" -"Schwierigkeitsgrad: 3\n" -"Wirkungen:\n" -"> Gut zum Aufsetzen von Versorgungs- oder Notvorratspunkten.\n" -"> Die Ausrüstung bleibt unbewacht und könnte gestohlen werden.\n" -"> Dauer hängt vom Gewicht der verschickten Ausrüstung ab.\n" -" \n" -"Risiko: Mittel\n" -"Dauer: 6 Stunden Bauzeit + Reise\n" -"Positionen: %d/1\n" - -#: src/mission_companion.cpp -msgid "Setup Hide Site" -msgstr "Tierhautplatz aufsetzen" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Push gear out to a hide site or bring gear back from one.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 1\n" -"Effects:\n" -"> Good for returning equipment you left in the hide site shelter.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward or back.\n" -" \n" -"Risk: Medium\n" -"Time: 1 Hour Base + Travel\n" -"Positions: %d/1\n" -msgstr "" -"Anmerkungen:\n" -"Versende Ausrüstung zu einem Tierhautplatz oder hole sie zurück.\n" -" \n" -"Benutzte Fertigkeit: Überleben\n" -"Schwierigkeitsgrad: 1\n" -"Wirkungen:\n" -"> Gut, um Ausrüstung, die du auf dem Tierhautplatz hinterlassen hast, zurückzuholen.\n" -"> Die Ausrüstung bleibt unbewacht und könnte gestohlen werden.\n" -"> Dauer hängt vom Gewicht der transportierten Ausrüstung ab.\n" -" \n" -"Risiko: Mittel\n" -"Dauer: Minimum 1 Stunde + Reise\n" -"Positionen: %d/1\n" - -#: src/mission_companion.cpp -msgid "Relay Hide Site" -msgstr "Tierhautplatz-Transport" - -#: src/mission_companion.cpp -msgid "Construct Map Fortifications" -msgstr "Kartenbefestigungen bauen" - -#: src/mission_companion.cpp -msgid "Construct Spiked Trench" -msgstr "Stachelgraben bauen" - -#: src/mission_companion.cpp -msgid "Recruit Companions" -msgstr "Begleiter ausbilden" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Select checkpoints to customize path.\n" -"> Reveals terrain around the path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" -"Anmerkungen:\n" -"Entsende einen Begleiter in die große unbekannte Welt. Hohe Überlebensfertigkeiten werden benötigt, um Kämpfe zu vermeiden, aber du solltest mit einer oder zwei Begegnungen rechnen.\n" -" \n" -"Benutzte Fertigkeit: Überleben\n" -"Schwierigkeitsgrad: 3\n" -"Wirkungen:\n" -"> Wähle Kontrollpunkte, um den Pfad anzupassen.\n" -"> Deckt Gelände um den Pfad auf.\n" -"> Kann von Tierhautplätzen abprallen, um die Reichweite zu erhöhen.\n" -" \n" -"Risiko: Hoch\n" -"Dauer: Reise\n" -"Positionen: %d/3\n" - -#: src/mission_companion.cpp -msgid "Scout Mission" -msgstr "Pfadfindermission" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 4\n" -"Effects:\n" -"> Pulls creatures encountered into combat instead of fleeing.\n" -"> Select checkpoints to customize path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: Very High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" -"Anmerkungen:\n" -"Entsende einen Begleiter, um das Ödland zu säubern. Sein Ziel ist es, alle feindlichen Kreaturen, denen er begegnet, zu töten und zurückkehren, wenn seine Wunden zu zahlreich sind oder die Situation zu gefährlich ist.\n" -" \n" -"Benutzte Fertigkeit: Überleben\n" -"Schwierigkeitsgrad: 4\n" -"Wirkungen:\n" -"> Zieht Kreaturen, denen begegnet wird, in den Kampf statt sie in die Flucht zu schlagen.\n" -"> Wähle Kontrollpunkte, um den Pfad anzupassen.\n" -"> Kann von Tierhautplätzen abprallen, um die Reichweite zu erhöhen.\n" -" \n" -"Risiko: Hoch\n" -"Dauer: Reise\n" -"Positionen: %d/3\n" - -#: src/mission_companion.cpp -msgid "Combat Patrol" -msgstr "Kampfpatrouille" - -#: src/mission_companion.cpp -msgid " Expansion Upgrade" -msgstr " Expansionsverbesserung" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Have a companion attempt to completely dissemble a vehicle into components.\n" -" \n" -"Skill used: mechanics\n" -"Difficulty: 2 \n" -"Effects:\n" -"> Removed parts placed on the furniture in the garage.\n" -"> Skill plays a huge role to determine what is salvaged.\n" -" \n" -"Risk: None\n" -"Time: Skill Based \n" -msgstr "" -"Anmerkungen:\n" -"Lass einen Begleiter dir helfen, ein Fahrzeug vollständig in dessen Einzelteile zu zerlegen.\n" -"\n" -"Benutzte Fertigkeit: Mechanik\n" -"Schwierigkeitsgrad: 2\n" -"Wirkungen:\n" -"> Entfernte Teile landen auf den Möbeln in der Garage.\n" -"> Fertigkeit spielt eine riesige Rolle dabei, welche Teile geborgen werden.\n" -"\n" -"Risiko: Keins\n" -"Dauer: Abhängig von Fertigkeit\n" - -#: src/mission_companion.cpp -msgid " Chop Shop" -msgstr "Ausschlacht-Autowerkstatt" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plow any spaces that have reverted to dirt or grass.\n" -" \n" -msgstr "" -"Anmerkungen:\n" -"Pflüge alle Felder, die wieder zu Erde oder Gras geworden sind.\n" -" \n" +msgid " clobbers %s" +msgstr " haut %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Restores only the plots created in the last expansion upgrade.\n" -"> Does not damage existing crops.\n" -" \n" -"Risk: None\n" -"Time: 5 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"Benutzte Fertigkeit: Herstellung\n" -"Schwierigkeitsgrad: Entfällt\n" -"Wirkungen:\n" -"> Stellt nur die Parzellen, die in der letzten Expansions-Aufwertung erstellt wurden, wieder her.\n" -"> Beschädigt bestehende Nutzpflanzen nicht.\n" -"\n" -"Risiko: Keins\n" -"Dauer: 5 Min. / Parzelle\n" -"Positionen: 0/1\n" +#: src/melee.cpp +#, c-format +msgid " smashes %s" +msgstr " schmettert %s nieder" -#: src/mission_companion.cpp -msgid " Plow Fields" -msgstr "Felder bestellen" +#: src/melee.cpp +#, c-format +msgid " thrashes %s" +msgstr " demoliert %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plant designated seeds in the spaces that have already been tilled.\n" -" \n" -msgstr "" -"Anmerkungen:\n" -"Pflanze ausgewählte Samen in die Felder, die bereits bestellt wurden, ein.\n" -" \n" +#: src/melee.cpp +#, c-format +msgid " batters %s" +msgstr " schlägt stark auf %s ein" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose which seed type or all of your seeds.\n" -"> Stops when out of seeds or planting locations.\n" -"> Will plant in ALL dirt mounds in the expansion.\n" -" \n" -"Risk: None\n" -"Time: 1 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"Benutzte Fertigkeit: Überleben\n" -"Schwierigkeitsgrad: Entfällt\n" -"Wirkungen:\n" -"> Wähle einen Samentyp oder all deine Samen.\n" -"> Stoppt, wenn Samen alle sind oder kein Platz zum Pflanzen mehr da ist.\n" -"> Wird in ALLEN Erdhügeln in der Expansion pflanzen.\n" -"\n" -"Risiko: Keins\n" -"Dauer: 1 Min. / Parzelle\n" -"Positionen: 0/1\n" +#: src/melee.cpp +#, c-format +msgid " hits %s" +msgstr " trifft %s" -#: src/mission_companion.cpp -msgid " Plant Fields" -msgstr "Felder bepflanzen" +#: src/melee.cpp +#, c-format +msgid " whacks %s" +msgstr " schlägt %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Harvest any plants that are ripe and bring the produce back.\n" -" \n" -msgstr "" -"Anmerkungen:\n" -"Ernte alle reifen Pflanzen und bring den Ertrag zurück.\n" -" \n" +#: src/melee.cpp +#, c-format +msgid "The bugs attack %s" +msgstr "Die Bugs greifen %s an" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Will dump all harvesting products onto your location.\n" -" \n" -"Risk: None\n" -"Time: 3 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"Benutzte Fertigkeit: Überleben\n" -"Schwierigkeitsgrad: Entfällt\n" -"Wirkungen:\n" -"> Wird alle Ernteprodukte zu deinem Ort bringen.\n" -"\n" -"Risiko: Keins\n" -"Dauer: 3 Min. / Parzelle\n" -"Positionen: 0/1\n" +#. ~ NPC hits something but does no damage +#: src/melee.cpp +#, c-format +msgid "%s but does no damage." +msgstr "%s, aber richtet keinen Schaden an." -#: src/mission_companion.cpp -msgid " Harvest Fields" -msgstr "Felder abernten" +#. ~ someone hits something but do no damage +#: src/melee.cpp +#, c-format +msgid "%s but do no damage." +msgstr "%s, aber du richtest keinen Schaden an." -#: src/mission_companion.cpp -msgid "Working to expand your camp!\n" -msgstr "Bei der Arbeit, dein Lager auszubauen!\n" +#. ~ NPC hits something (critical) +#: src/melee.cpp +#, c-format +msgid "%s. Critical!" +msgstr "%s. Kritisch!" -#: src/mission_companion.cpp -msgid " hours left] \n" -msgstr " Stunden verbleibend] \n" +#. ~ someone hits something for %d damage (critical) +#: src/melee.cpp +#, c-format +msgid "%s for %d damage. Critical!" +msgstr "%s für %d Schaden. Kritisch!" -#: src/mission_companion.cpp -msgid " minutes left] \n" -msgstr " Minuten verbleibend] \n" +#. ~ NPC hits something +#: src/melee.cpp +#, c-format +msgid "%s." +msgstr "%s." -#: src/mission_companion.cpp -msgid " [DONE]\n" -msgstr " [FERTIG]\n" +#. ~ someone hits something for %d damage +#: src/melee.cpp +#, c-format +msgid "%s for %d damage." +msgstr "%s für %d Schaden." -#: src/mission_companion.cpp -msgid "Recover Ally from Upgrading" -msgstr "Verbündeten von Aufwertung zurückrufen" +#: src/melee.cpp +#, c-format +msgid "You lunge for the %s, but miss!" +msgstr "Du schnappst nach %s, aber verfehlst!" -#: src/mission_companion.cpp -msgid "Working to upgrade your expansions!\n" -msgstr "Bei der Arbeit, deine Expansionen zu aufzuwerten!\n" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force!" +msgstr "Du greifst nach %s und ziehst mit all deiner Kraft!" -#: src/mission_companion.cpp -msgid " Expansion" -msgstr "Expansion" +#: src/melee.cpp +#, c-format +msgid "You forcefully take %s from %s!" +msgstr "Mit Gewalt nimmst du dir %s von %s!" -#: src/mission_companion.cpp -msgid "Recover Ally, " -msgstr "Rufe zurück Verbündeten, " +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but it drops nearby!" +msgstr "" +"Du greifst nach %s und ziehst mit all deiner Kraft, aber es fällt in der " +"Nähe hin!" -#: src/mission_companion.cpp -msgid "Working at the chop shop...\n" -msgstr "Bei der Arbeit an der Ausschlacht-Autowerkstatt …\n" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but in vain!" +msgstr "Du greifst nach %s und ziehst mit all deiner Kraft, aber vergebens!" -#: src/mission_companion.cpp -msgid "/120 hours] \n" -msgstr "/120 Stunden] \n" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might forcing their %s to drop down nearby!" +msgstr "Mir aller Machst schlägst du auf %s zu, dabei fällt %s in die Nähe!" -#: src/mission_companion.cpp -msgid " (Finish) Chop Shop" -msgstr " (Fertig) Ausschlacht-Autowerkstatt" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might but %s remains in their hands!" +msgstr "" +"Mir aller Machst schlägst du auf %s zu, jedoch bleibt %s in den Händen!" -#: src/mission_companion.cpp -msgid "Working in your kitchen!\n" -msgstr "Arbeitet in deiner Küche!\n" +#: src/melee.cpp src/npctalk.cpp +#, c-format +msgid "%s is hostile!" +msgstr "%s ist feindlich!" -#: src/mission_companion.cpp -msgid " [ALMOST DONE]\n" -msgstr " [FAST FERTIG]\n" +#: src/melee.cpp +#, c-format +msgid "You sneakily steal %1$s from %2$s!" +msgstr "Heimlich stiehlst du %1$s von %2$s!" -#: src/mission_companion.cpp -msgid " (Finish) Cooking" -msgstr " (Fertig) Kochen" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s, but did not attract attention." +msgstr "" +"Du hast es nicht geschafft, %1$s von %2$s zu stehlen, du hast aber keine " +"Aufmerksamkeit auf dich gelenkt." -#: src/mission_companion.cpp -msgid "Working in your blacksmith shop!\n" -msgstr "Arbeitet in deiner Schmiede!\n" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s." +msgstr "Du hast es nicht geschafft, %1$s von %2$s zu stehlen." -#: src/mission_companion.cpp -msgid " (Finish) Smithing" -msgstr " (Fertig) Schmieden" +#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a +#. whack! x 12" +#: src/messages.cpp +#, c-format +msgid "%s x %d" +msgstr "%s (×%d)" -#: src/mission_companion.cpp -msgid "Working to plow your fields!\n" -msgstr "Bei der Arbeit, deine Felder zu bestellen!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "good" +msgstr "Gut" -#: src/mission_companion.cpp -msgid "/~48 hours] \n" -msgstr "/ca. 48 Stunden] \n" +#: src/messages.cpp +msgctxt "message type" +msgid "bad" +msgstr "Schlecht" -#: src/mission_companion.cpp -msgid " (Finish) Plow Fields" -msgstr " (Fertig) Felder bestellen" +#: src/messages.cpp +msgctxt "message type" +msgid "mixed" +msgstr "Verschiedenes" -#: src/mission_companion.cpp -msgid "Working to plant your fields!\n" -msgstr "Bei der Arbeit, deine Felder zu bepflanzen!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "warning" +msgstr "Warnung" -#: src/mission_companion.cpp -msgid "/4 hours] \n" -msgstr "/4 Stunden] \n" +#: src/messages.cpp +msgctxt "message type" +msgid "info" +msgstr "Info" -#: src/mission_companion.cpp -msgid " (Finish) Plant Fields" -msgstr " (Finish) Felder bepflanzen" +#: src/messages.cpp +msgctxt "message type" +msgid "neutral" +msgstr "Neutral" -#: src/mission_companion.cpp -msgid "Working to harvest your fields!\n" -msgstr "Bei der Arbeit, deine Felder abzuernten!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "debug" +msgstr "Debug" -#: src/mission_companion.cpp -msgid "/~10 hours] \n" -msgstr "/ca. 10 Stunden] \n" +#: src/messages.cpp +#, c-format +msgid "< Press %s to filter, %s to reset >" +msgstr "< Drücke %s zum Filtern, %s zum Zurücksetzen >" -#: src/mission_companion.cpp -msgid " (Finish) Harvest Fields" -msgstr " (Fertig) Felder abernten" +#: src/messages.cpp +#, c-format +msgid "" +"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" +"Examples:\n" +" good:mutation\n" +" :you pick up: 1\n" +" crash!\n" +msgstr "" +"Format: »TYP:SUCHTEXT«.\n" +"Mögliche TYP-Werte: %s\n" +" \n" +"Beispiele:\n" +" Gut:Mutation\n" +" Du nimmst: 1\n" +" Warnung:\n" +" \n" -#: src/mission_companion.cpp -msgid "Working on your farm!\n" -msgstr "Arbeitet auf deinem Bauernhof!\n" +#. ~ the 2nd %s is a type name, this is used to format a list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s, " +msgstr "%s, " -#: src/mission_companion.cpp -msgid " (Finish) Crafting" -msgstr " (Fertig) Fertigen" +#. ~ the 2nd %s is a type name, this is used to format the last type name in a +#. list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s." +msgstr "%s." #: src/mission_companion.cpp -msgid "Busy crafting!\n" -msgstr "Ist beschäftigt mit der Fertigung!\n" +msgid "Outpost Missions" +msgstr "Außenpostenmissionen" #: src/mission_companion.cpp -msgid "Searching for materials to upgrade the camp.\n" -msgstr "Auf der Suche nach Materialien, um das Lager aufzuwerten.\n" +msgid "Junk Shop Missions" +msgstr "Ramschladenmissionen" #: src/mission_companion.cpp -msgid "/3 hours] \n" -msgstr "/3 Stunden] \n" +msgid "Agricultural Missions" +msgstr "Landwirtschaftsmissionen" #: src/mission_companion.cpp -msgid "Recover Ally from Gathering" -msgstr "Verbündeten vom Sammeln zurückrufen" +msgid "Construction Missions" +msgstr "Baumissionen" #: src/mission_companion.cpp -msgid "Searching for firewood.\n" -msgstr "Auf der Suche nach Feuerholz.\n" +msgid "Free Merchant Missions" +msgstr "Missionen des freien Handels" #: src/mission_companion.cpp -msgid "Recover Firewood Gatherers" -msgstr "Feuerholzsammler zurückrufen" +msgid "" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" +" \n" +"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." +msgstr "" +"Profit: 25$-500$\n" +"Gefahr: Niedrig\n" +"Dauer: 10 stündige Missionen\n" +"\n" +"Indem du einen deiner Verbündeten die Aufgabe erteilst, die Wildnis und isolierte Gebäude zu patroullieren, eröffnest ihm die Möglichkeit, sich Überlebensfähigkeiten anzueignen, während er sich in relativ sicheren Kämpfen gegen isolierte Kreaturen behauptet." #: src/mission_companion.cpp -msgid "Performing menial labor...\n" -msgstr "Übt niedere Arbeiten aus …\n" +msgid "Assign Scavenging Patrol" +msgstr "Sammelpatroille zuweisen" #: src/mission_companion.cpp msgid "" -"\n" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" " \n" -"Do you wish to bring your allies back into your party?\n" +"Patrol Roster:\n" msgstr "" +"Profit: 25$-500$\n" +"Gefahr: Niedrig\n" +"Dauer: 10 stündige Missionen\n" "\n" -" \n" -"Möchtest du deine Verbündeten zurück in deine Gruppe bringen?\n" - -#: src/mission_companion.cpp -msgid "Recover Menial Laborer" -msgstr "Niederen Arbeiter zurückrufen" +"Patrouillenliste:\n" #: src/mission_companion.cpp -msgid "Surveying for expansion...\n" -msgstr "Auf der Auskundschaftung für Expansionen …\n" +msgid " hours] \n" +msgstr " Stunden] \n" #: src/mission_companion.cpp -msgid "Recover Surveyor" -msgstr "Kundschafter zurückrufen" +msgid "Retrieve Scavenging Patrol" +msgstr "Sammelpatroille zurückrufen" #: src/mission_companion.cpp -msgid "Cutting logs in the woods...\n" -msgstr "Zerhackt Baumstämme in den Wäldern …\n" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." +msgstr "" +"Profit: 200$-1000$\n" +"Gefahr: Mittel\n" +"Dauer: 10 stündige Missionen\n" +" \n" +"Plündermissionen zielen auf ehemals bewohnte Gebiete, um so viele wertvolle Gegenstände wie möglich zu ergattern, bevor man von den Untoten umzingelt ist. Mit Kämpfen ist zu rechnen und eine Unterstützung vom Rest der Gruppe kann nicht gewährleistet werden. Die Belohnungen sind größer und es gibt eine Channce, dass der Begleiter Gegenstände mitbringt." #: src/mission_companion.cpp -msgid "Recover Log Cutter" -msgstr "Holzhacker zurückrufen" +msgid "Assign Scavenging Raid" +msgstr "Plündermission zuweisen" #: src/mission_companion.cpp -msgid "Setting up a hide site...\n" -msgstr "Setzt einen Tierhautplatz auf …\n" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Raid Roster:\n" +msgstr "" +"Profit: 25$-500$\n" +"Gefahr: Mittel\n" +"Dauer: 10 stündige Missionen\n" +"\n" +"Plündererliste:\n" #: src/mission_companion.cpp -msgid "Recover Hide Setup" -msgstr "Tierhausplatzaufsetzung zurückrufen" +msgid "Retrieve Scavenging Raid" +msgstr "Plündermission zurückrufen" #: src/mission_companion.cpp -msgid "Constructing fortifications...\n" -msgstr "Baut Befestigungen …\n" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." +msgstr "" +"Profit: 8$/Stunde\n" +"Gefahr: Minimal\n" +"Dauer: Mindestens 1 Stunde\n" +"\n" +"Einen deiner Verbündeten eine niedere Arbeit zuzuweisen ist eine sichere Möglichkeit, ihnen grundlegende Fähigkeiten beizubringen und dabei zu helfen, eine Reputation mit dem Außenposten aufzubauen. Erwarte jedoch keine allzugroße Belohnung." #: src/mission_companion.cpp -msgid "Finish Map Fortifications" -msgstr "Kartenbefestigungen fertigstellen" +msgid "Assign Ally to Menial Labor" +msgstr "Verbündeten niedere Arbeiten zuweisen" #: src/mission_companion.cpp -msgid "Searching for recruits.\n" -msgstr "Sucht nach Rekruten.\n" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" +msgstr "" +"Profit: 8$/Stunde\n" +"Gefahr: Minimal\n" +"Dauer: Mindestens 1 Stunde\n" +" \n" +"Arbeitsliste:\n" #: src/mission_companion.cpp -msgid "Recover Recruiter" -msgstr "Ausbilder zurückrufen" +msgid "Recover Ally from Menial Labor" +msgstr "Verbündeten von niederen Arbeiten zurückrufen" #: src/mission_companion.cpp -msgid "Scouting the region.\n" -msgstr "Erkundet die Region.\n" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." +msgstr "" +"Profit: 12$/Stunde\n" +"Gefahr: Minimal\n" +"Dauer: Mindestens 1 Stunde\n" +"\n" +"Das Zimmerhandwerk erfordert mehr Fertigkeiten als niedere Arbeiten und bietet eine mittelmäßig verbesserte Bezahlung. Es ist unwahrscheinlich, dass deine Begleiter in Kämpfe verwickelt werden, aber es gibt Gefahren, an selbstgebauten Gebäuen zu arbeiten." #: src/mission_companion.cpp -msgid "Recover Scout" -msgstr "Pfadfinder zurückrufen" +msgid "Assign Ally to Carpentry Work" +msgstr "Verbündeten Zimmerhandwerk zuweisen" #: src/mission_companion.cpp -msgid "Patrolling the region.\n" -msgstr "Patroulliert die Region.\n" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" +msgstr "" +"Profit: 12$/Stunde\n" +"Gefahr: Minimal\n" +"Dauer: Mindestens 1 Stunde\n" +" \n" +"Arbeitsliste:\n" #: src/mission_companion.cpp -msgid "Recover Combat Patrol" -msgstr "Kampfpatroullie" +msgid "Recover Ally from Carpentry Work" +msgstr "Verbindeten von Zimmerhandwerk zurückrufen" #: src/mission_companion.cpp msgid "" @@ -153011,247 +156259,6 @@ msgstr "reist für die Plündermission ab …" msgid "departs to work as a laborer..." msgstr "geht weg, um als Arbeiter zu arbeiten …" -#: src/mission_companion.cpp -msgid "You don't have enough food stored to feed your companion." -msgstr "" -"Du hast nicht genügend Nahrung eingelagert, um deinen Begleiter zu ernähren." - -#: src/mission_companion.cpp -msgid "begins to upgrade the camp..." -msgstr "fängt mit der Aufwertung des Lagers an …" - -#: src/mission_companion.cpp -msgid "You already have a companion upgrading the camp." -msgstr "Du hast bereits einen Begleiter, der das Lager verbessert." - -#: src/mission_companion.cpp -msgid "You don't have the materials for the upgrade." -msgstr "Du hast nicht die Materialien für die Aufwertung." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your garage..." -msgstr "%s kehrt aus deiner Garage zurück …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your kitchen with something..." -msgstr "%s kehrt aus deiner Küche mit etwas zurück …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your blacksmith shop with something..." -msgstr "%s kehrt aus deiner Schmiede mit etwas zurück …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your farm with something..." -msgstr "%s kehrt von deinem Bauernhof mit etwas zurück …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns to you with something..." -msgstr "%s kehrt zu dir mit etwas zurück …" - -#: src/mission_companion.cpp -msgid "departs to search for materials..." -msgstr "zieht los auf der Suche nach Materialien …" - -#: src/mission_companion.cpp -msgid "There are too many companions working on this mission!" -msgstr "Es gibt zu viele Begleiter, die an dieser Mission arbeiten!" - -#: src/mission_companion.cpp -msgid "departs to search for firewood..." -msgstr "zieht los, um Feuerholz zu suchen …" - -#: src/mission_companion.cpp -msgid "departs to dig ditches and scrub toilets..." -msgstr "geht weg, um Gruben zu graben und Toiletten zu putzen …" - -#: src/mission_companion.cpp -msgid "departs to survey land..." -msgstr "reist ab, um Land auszukundschaften …" - -#: src/mission_companion.cpp -msgid "You have already selected a surveyor!" -msgstr "Du hast bereits einen Kundschafter ausgewählt!" - -#: src/mission_companion.cpp -msgid "begins to upgrade the expansion..." -msgstr "fängt mit der Aufwertung der Expansion an …" - -#: src/mission_companion.cpp -msgid "You already have a worker upgrading that expansion!" -msgstr "Du hast bereits einen Arbeiter, der diese Expansion verbessert!" - -#: src/mission_companion.cpp -msgid "Forests and swamps are the only valid cutting locations." -msgstr "Wälder und Sümpfe sind die einzigen gültigen Plätze zum Bäumefällen." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Trip Estimate:\n" -"%s" -msgstr "" -"Reiseabschätzung:\n" -"%s" - -#: src/mission_companion.cpp -msgid "departs to cut logs..." -msgstr "geht weg, um Holz zu hacken …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working in the woods..." -msgstr "%s kehrt von der Arbeit in den Wäldern zurück …" - -#: src/mission_companion.cpp -msgid "Forests, swamps, and fields are valid hide site locations." -msgstr "Wälder, Sümpfe und Felder sind gültige Orte für Tierhautplätze." - -#: src/mission_companion.cpp -msgid "departs to build a hide site..." -msgstr "zieht los, um einen Tierhautplatz zu bauen …" - -#: src/mission_companion.cpp -msgid "You need equipment to setup a hide site..." -msgstr "Du brauchst Equipment, um einen Tierhautplatz aufzusetzen …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working on the hide site..." -msgstr "%s kehrt von der Arbeit am Tierhautplatz zurück …" - -#: src/mission_companion.cpp -msgid "You must select an existing hide site." -msgstr "Du musst einen bestehenden Tierhautplatz auswählen." - -#: src/mission_companion.cpp -msgid "Bring gear back?" -msgstr "Ausrüstung zurück bringen?" - -#: src/mission_companion.cpp -msgid "departs for the hide site..." -msgstr "geht für den Tierhautplatz weg …" - -#: src/mission_companion.cpp -msgid "You need equipment to transport between the hide site..." -msgstr "Du brauchst Equipment für den Transport zwischen dem Tierhautplatz …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from shuttling gear between the hide site..." -msgstr "" -"%s kehrt vom Transport der Ausrüstung zwischen dem Tierhautplatz zurück …" - -#: src/mission_companion.cpp -msgid "" -"Select a start and end point. Line must be straight. Fields, forests, and " -"swamps are valid fortification locations. In addition to existing " -"fortification constructions." -msgstr "" -"Wähle einen Start- und Endpunkt. Die Linie muss gerade sein. Felder, Wälder " -"und Sümpfe sind gültige Befestigungsorte. Zusätzlich zu bestehenden " -"Befestigungsbauten." - -#: src/mission_companion.cpp -msgid "Select an end point." -msgstr "Wähle einen Endpunkt." - -#: src/mission_companion.cpp -msgid "Invalid terrain in construction path." -msgstr "Ungültiges Gelände im Baupfad." - -#: src/mission_companion.cpp -msgid "You don't have the material to build the fortification." -msgstr "Du hast nicht das Material, um die Befestigung zu bauen." - -#: src/mission_companion.cpp -msgid "begins constructing fortifications..." -msgstr "fängt mit dem Bau von Befestigungen an …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from constructing fortifications..." -msgstr "%s kehrt vom Bau von Befestigungen zurück …" - -#: src/mission_companion.cpp -msgid "departs to search for recruits..." -msgstr "zieht los auf der Suche nach Rekruten …" - -#: src/mission_companion.cpp -msgid "" -"Select checkpoints until you reach maximum range or select the last point " -"again to end." -msgstr "" -"Wähle Kontrollpunkte, bis du die maximale Reichweite erreichst oder wähle " -"den letzten Punkt erneut zur Fertigstellung." - -#: src/mission_companion.cpp -msgid "departs on patrol..." -msgstr "reist für eine Patrouille ab …" - -#: src/mission_companion.cpp -msgid "Your companion hit a river and didn't know how to swim..." -msgstr "" -"Dein Begleiter erreichte einen Fluss und wusste nicht, wie man schwimmt …" - -#: src/mission_companion.cpp -msgid "" -"Your companion hit a river and didn't know how to swim well enough to " -"cross..." -msgstr "" -"Dein Begleiter erreichte einen Fluss und konnte nicht gut genug schwimmen, " -"um ihn zu überqueren …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't return from patrol..." -msgstr "%s kam von der Patrouille nicht zurück …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from patrol..." -msgstr "%s kam von der Patrouille zurück …" - -#: src/mission_companion.cpp -msgid "You already have someone working in that garage." -msgstr "Du hast bereits jemanden, der in dieser Garage arbeitet." - -#: src/mission_companion.cpp -msgid "begins plowing the field..." -msgstr "fängt mit der Bestellung des Feldes an …" - -#: src/mission_companion.cpp -msgid "You already have someone plowing that field." -msgstr "Du hast bereits jemanden, der dieses Feld bestellt." - -#: src/mission_companion.cpp -msgid "You have no additional seeds to give your companions..." -msgstr "Du hast keine weiteren Samen, die du deinen Begleitern geben kannst …" - -#: src/mission_companion.cpp -msgid "begins planting the field..." -msgstr "fängt mit der Bepflanzung des Feldes an …" - -#: src/mission_companion.cpp -msgid "Which seeds do you wish to have planted?" -msgstr "Welche Samen möchtest du eingepflanzt haben?" - -#: src/mission_companion.cpp -msgid "You already have someone planting that field." -msgstr "Du hast bereits jemanden, der dieses Feld bepflanzt." - -#: src/mission_companion.cpp -msgid "begins to harvest the field..." -msgstr "fängt mit dem Abernten des Feldes an …" - -#: src/mission_companion.cpp -msgid "You already have someone harvesting that field." -msgstr "Du hast bereits jemanden, der dieses Feld aberntet." - #: src/mission_companion.cpp msgid "departs to work as a carpenter..." msgstr "geht, um als Schreiner zu arbeiten …" @@ -153475,288 +156482,6 @@ msgstr "" "%s fühlt sich zuversichtlicher in deinen Begleitern und ist bereit, sie an " "fortgeschrittenere Aufgaben teilnehmen zu lassen." -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"%s\n" -" \n" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s \n" -"Risk: None\n" -"Time: %s\n" -msgstr "" -"Anmerkungen:\n" -"%s\n" -" \n" -"Benutzte Fertigkeit: %s\n" -"Schwierigkeitsgrad: %d\n" -"%s\n" -"Risiko: Keins\n" -"Dauer: %s\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s\n" -"Time: %s\n" -msgstr "" -"Benutzte Fertigkeit: %s\n" -"Schwierigkeitsgrad: %d\n" -"%s\n" -"Dauer: %s\n" - -#: src/mission_companion.cpp -msgid "" -"Notes: \n" -"Send a companion to gather materials for the next camp upgrade.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -msgstr "" -"Anmerkungen:\n" -"Schicke einen Begleiter los, um Materialien für die nächste Lageraufwertung zu sammeln.\n" -"\n" -"Benutzte Fertigkeit: Überleben\n" -"Schwierigkeitsgrad: Entfällt\n" -"Sammelmöglichkeiten:\n" - -#: src/mission_companion.cpp -msgid "" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: " -msgstr "" -" \n" -"Risiko: Sehr niedrig\n" -"Time: 3 Stunden, wiederholt\n" -"Positionen: " - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from upgrading the camp having earned a bit of experience..." -msgstr "" -"%s kehrt von der Verbesserung des Lagers zurück und erhielt etwas Erfahrung " -"dabei …" - -#: src/mission_companion.cpp -#, c-format -msgid "While gathering supplies, a silent specter approaches %s..." -msgstr "" -"Beim Sammeln von Vorräten bewegte sich ein lautloser Geist auf %s zu …" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s notices the antlered horror and slips away before it gets too close." -msgstr "" -"%s bemerkt den Geweihschrecken und schnellt davon, bevor er zu nah kam." - -#: src/mission_companion.cpp -#, c-format -msgid "The survivor approaches %s asking for directions." -msgstr "Der Überlebende ging auf %s zu, um nach den Weg zu fragen." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Fearful that he may be an agent of some hostile faction, %s doesn't mention " -"the camp." -msgstr "" -"Aus Angst, dass er ein Agent einer feindlichen Fraktion sein könnte, " -"erwähnte %s das Lager nicht." - -#: src/mission_companion.cpp -msgid "The two part on friendly terms and the survivor isn't seen again." -msgstr "" -"Die Beiden trennten sich freundlich und der Überlebende wurde nicht mehr " -"gesehen." - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't detect the ambush until it was too late!" -msgstr "%s hat den Hinterhalt nicht bemerkt, bevor es zu spät war!" - -#: src/mission_companion.cpp -#, c-format -msgid "The bull moose charged %s from the tree line..." -msgstr "Der Elchbulle schnellte von der Baumreihe aus auf %s zu …" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Despite being caught off guard %s was able to run away until the moose gave " -"up pursuit." -msgstr "" -"Trotz der bösen Überraschung konnte %s weglaufen, bis der Elch aufgegeben " -"hat." - -#: src/mission_companion.cpp -#, c-format -msgid "The jabberwock grabbed %s by the arm from behind and began to scream." -msgstr "Der Jabberwock ergriff %s am Arm von hinten und fing an, zu schreien." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Terrified, %s spun around and delivered a massive kick to the creature's " -"torso..." -msgstr "" -"Voller Angst drehte sich %s um und verpasste einen gewaltigen Tritt in den " -"Torso der Kreatur …" - -#: src/mission_companion.cpp -#, c-format -msgid "Collapsing into a pile of gore, %s walked away unscathed..." -msgstr "Nachdem sie in einen Gedärmehaufen zerfiel, ging %s unversehrt fort." - -#: src/mission_companion.cpp -msgid "(Sounds like bullshit, you wonder what really happened.)" -msgstr "" -"(Hört sich nach groben Unfug an, du fragst dich, was wirklich passierte.)" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s turned to find the hideous black eyes of a giant wasp staring back from " -"only a few feet away..." -msgstr "" -"%s drehte sich um, und sah die bösartig schwarzen Augen einer Riesenwespe, " -"die nur in einem Meter Entfernung zurückstarrte …" - -#: src/mission_companion.cpp -msgid "The screams were terrifying, there was nothing anyone could do." -msgstr "Die Schreie waren fürchterlich, man konnte nichts tun." - -#: src/mission_companion.cpp -#, c-format -msgid "Pieces of %s were found strewn across a few bushes." -msgstr "Teile von %s wurden über ein paar Büsche verteilt gefunden." - -#: src/mission_companion.cpp -msgid "(You wonder if your companions are fit to work on their own...)" -msgstr "" -"(Du fragst dich, ob deine Begleiter in der Lage sind, selbstständig zu " -"arbeiten …)" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from gathering materials carrying supplies and has a bit more " -"experience..." -msgstr "" -"%s kehrt von der Materialbeschaffung mit ein paar Vorräten und etwas mehr " -"Erfahrung zurück …" - -#: src/mission_companion.cpp -msgid "Your companion seems disappointed that your pantry is empty..." -msgstr "" -"Dein Begleiter scheint enttäuscht zu sein, dass dein Vorratslager leer ist …" - -#: src/mission_companion.cpp -#, c-format -msgid "" -" Chopping this vehicle:\n" -"%s" -msgstr "" -" Ausschlachten des Fahrzeugs:\n" -"%s" - -#: src/mission_companion.cpp -msgid "begins working in the garage..." -msgstr "fängt mit der Arbeit in der Garage an …" - -#: src/mission_companion.cpp -msgid "No seeds to plant!" -msgstr "Keine Samen zum Pflanzen!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working your fields..." -msgstr "%s kehrt von der Arbeit auf deinen Feldern zurück …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from doing the dirty work to keep the camp running..." -msgstr "" -"%s kehrt von der Drecksarbeit, die dein Lager am Leben erhält, zurück …" - -#: src/mission_companion.cpp -msgid "Sorting points have changed, forcing reset." -msgstr "Sortierpunkte wurden geändert, Zurücksetzen erzwungen." - -#: src/mission_companion.cpp -msgid "Select an expansion:" -msgstr "Expansion wählen:" - -#: src/mission_companion.cpp -msgid "You choose to wait..." -msgstr "Du wartest …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from surveying for the expansion." -msgstr "%s kehrt von der Auskundschaftung für die Expansion zurück." - -#: src/mission_companion.cpp -msgid "No items are located at the drop point..." -msgstr "Keine Gegenstände befinden sich am Abwurfpunkt …" - -#: src/mission_companion.cpp -#, c-format -msgid "You distribute %d kcal worth of food to your companions." -msgstr "Du verteilst Nahrung mit insgesamt %d kcal an deine Begleiter." - -#: src/mission_companion.cpp -msgid "Harvestable: " -msgstr "Erntbar: " - -#: src/mission_companion.cpp -msgid "Ready for Planting: " -msgstr "Bereit zum Pflanzen: " - -#: src/mission_companion.cpp -msgid "Needs Plowing: " -msgstr "Pflügen notwendig: " - -#: src/mission_companion.cpp -#, c-format -msgid "Name: %25s\n" -msgstr "Name: %25s\n" - -#: src/mission_companion.cpp -msgid "---- Engines ----\n" -msgstr "---- Motoren ----\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Engine: %25s\n" -msgstr "Motor: %25s\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Status: %24d%%\n" -msgstr ">Zustand: %24d%%\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Fuel: %25s\n" -msgstr ">Treibstoff: %25s\n" - -#: src/mission_companion.cpp -msgid "---- Fuel Storage & Battery ----\n" -msgstr "-- Treibsofflagerung u. Batterie --\n" - -#: src/mission_companion.cpp -msgid "Estimated Chop Time: 5 Days\n" -msgstr "Geschätzte Ausschlachtdauer: 5 Tage\n" - #: src/mission_companion.cpp #, c-format msgid "While %s was framing a building one of the walls began to collapse..." @@ -153932,409 +156657,6 @@ msgstr "Wer sollte zurückkehren?" msgid "No one returns to your party..." msgstr "Niemand kehrt zu deiner Gruppe zurück." -#: src/mission_companion.cpp -msgid "MAIN" -msgstr "HAUPT" - -#: src/mission_companion.cpp -msgid " [N] " -msgstr "[N]" - -#: src/mission_companion.cpp -msgid " [NE] " -msgstr "[NO]" - -#: src/mission_companion.cpp -msgid " [E] " -msgstr "[O]" - -#: src/mission_companion.cpp -msgid " [SE] " -msgstr "[SO]" - -#: src/mission_companion.cpp -msgid " [S] " -msgstr "[S]" - -#: src/mission_companion.cpp -msgid " [SW] " -msgstr "[SW]" - -#: src/mission_companion.cpp -msgid " [W] " -msgstr "[W]" - -#: src/mission_companion.cpp -msgid " [NW] " -msgstr "[NW]" - -#: src/mission_companion.cpp -msgid "Farm Expansion" -msgstr "Bauernhofexpansion" - -#: src/mission_companion.cpp -msgid "Garage Expansion" -msgstr "Garagenexpansion" - -#: src/mission_companion.cpp -msgid "Kitchen Expansion" -msgstr "Küchenexpansion" - -#: src/mission_companion.cpp -msgid "Blacksmith Expansion" -msgstr "Schimeden-Expansion" - -#: src/mission_companion.cpp -msgid "Empty Expansion" -msgstr "Leere Expansion" - -#: src/mission_companion.cpp -#, c-format -msgid "Select a location between %d and %d tiles away." -msgstr "Wähle einen Ort, der zwischen %d und %d Feldern entfernt ist." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"You must select a target between %d and %d range from the base. Range: %d" -msgstr "" -"Du musst ein Ziel in einer Entfernung zwischen %d und %d von der Basis aus " -"auswählen: Entfernung: %d" - -#: src/mission_companion.cpp -msgid "You must be able to see the target that you select." -msgstr "Du musst das Ziel, das du auswählst, sehen können." - -#: src/mission_companion.cpp -msgid "Do you want to bounce off this location to extend range?" -msgstr "" -"Möchtest du an diesem Ort einen Zwischenstopp einlegen, um die Reichweite zu" -" erhöhen?" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15.2f (km)\n" -msgstr ">Entfernung:%15.2f (km)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">One Way: %15d (trips)\n" -msgstr ">Einweg: %15d (Reisen)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15.2f (km)\n" -msgstr ">Fertig: %15.2f (km)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15d (m)\n" -msgstr ">Entfernung:%15d (m)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15d (m)\n" -msgstr ">Fertig: %15d (m)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Travel: %15d (hours)\n" -msgstr ">Reise: %15d (Stunden)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Working: %15d (hours)\n" -msgstr ">Arbeit: %15d (Stunden)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (days)\n" -msgstr "Gesamt: %15d (Tage)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (hours)\n" -msgstr "" -"Gesamt: %15d (Stunden)\n" -"\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (minutes)\n" -msgstr "Gesamt: %15d (Minuten)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Food: %15d (kcal)\n" -" \n" -msgstr "" -"Nahrung: %15d (kcal)\n" -" \n" - -#: src/mission_companion.cpp -msgid "food for you" -msgstr "Nahrung für dich" - -#: src/mission_companion.cpp -msgid "food for companions" -msgstr "Nahrung für Begeiter" - -#: src/mission_companion.cpp -msgid "weapons" -msgstr "Waffen" - -#: src/mission_companion.cpp -msgid "clothing" -msgstr "Kleidung" - -#: src/mission_companion.cpp -msgid "bionics" -msgstr "Bioniken" - -#: src/mission_companion.cpp -msgid "all kinds of tools" -msgstr "allerlei Werkzeuge" - -#: src/mission_companion.cpp -msgid "wood of various sorts" -msgstr "Holz verschiedener Arten" - -#: src/mission_companion.cpp -msgid "trash and rotting food" -msgstr "Müll und verderbendes Fleisch" - -#: src/mission_companion.cpp -msgid "books" -msgstr "Bücher" - -#: src/mission_companion.cpp -msgid "medication" -msgstr "Medizin" - -#: src/mission_companion.cpp -msgid "ammo" -msgstr "Munition" - -#: src/mission_companion.cpp -#, c-format -msgid "Reset point: %s?" -msgstr "Punkt zurücksetzen: %s?" - -#: src/mission_companion.cpp -msgid "" -" Items New Point Old Point\n" -" \n" -msgstr "" -"  Gegenstände Neuer Punkt Alter Punkt\n" -" \n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -" Save Points?" -msgstr "" -"\n" -" \n" -" Punkte speichern?" - -#: src/mission_companion.cpp -msgid "Revert to default points?" -msgstr "Auf Standardpunkte zurücksetzen?" - -#: src/mission_companion.cpp -msgid "You don't have the materials to craft that" -msgstr "Du hast nicht die Materialien, um das zu fertigen" - -#: src/mission_companion.cpp -#, c-format -msgid "Batch crafting %s [MAX: %d]: " -msgstr "Stapelfertigung: %s (Max.: %d): " - -#: src/mission_companion.cpp -msgid "Your batch is too large!" -msgstr "Dein Stapel ist zu groß!" - -#: src/mission_companion.cpp -msgid "You already have someone working in that expansion." -msgstr "Du hast bereits jemanden, der in dieser Expansion arbeitet." - -#: src/mission_companion.cpp -msgid "begins to work..." -msgstr "fängt mit der Arbeit an …" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" -" \n" -"Skill used: speech\n" -"Difficulty: 2 \n" -"Base Score: +%3d%%\n" -"> Expansion Bonus: +%3d%%\n" -"> Faction Bonus: +%3d%%\n" -"> Special Bonus: +%3d%%\n" -" \n" -"Total: Skill +%3d%%\n" -" \n" -"Risk: High\n" -"Time: 4 Days\n" -"Positions: %d/1\n" -msgstr "" -"Anmerkungen:\n" -"Die Rekrutierung neuer Gefährten ist sehr gefährlich und teuer. Das Ergebnis hängt stark von der Fertigkeit des entsendeten Begleiters und der Attraktivität deiner Basis ab.\n" -" \n" -"Benutzte Fertigkeit: Redekunst\n" -"Schwierigkeitsgrad: 2\n" -"Basiswertung: +%3d%%\n" -"> Expansionsbonus: +%3d%%\n" -"> Fraktionsbonus: +%3d%%\n" -"> Sonderbonus: +%3d%%\n" -" \n" -"Gesamt: Fertigkeit: +%3d%%\n" -" \n" -"Risiko: Hoch\n" -"Dauer: 4 Tage\n" -"Positionen: %d/1\n" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from searching for recruits with a bit more experience..." -msgstr "" -"%s kehrt von der Suche nach Rekruten und mit etwas mehr Erfahrung zurück …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s encountered %s..." -msgstr "%s begegnete %s …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't find anyone to recruit..." -msgstr "%s hat niemanden zum Rekrutieren gefunden …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s convinced %s to hear a recruitment offer from you..." -msgstr "%s überzeugte %s, ein Rekrutierungsangebot von dir zu hören …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested in anything %s had to offer..." -msgstr "%s war in nichts, was %s zu bieten hatte, interessiert …" - -#: src/mission_companion.cpp -msgid "" -"NPC Overview:\n" -" \n" -msgstr "" -"NPC-Überblick:\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Name: %20s\n" -" \n" -msgstr "" -"Name: %20s\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "Strength: %10d\n" -msgstr "Stärke: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Dexterity: %10d\n" -msgstr "Geschicklichkeit: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Intelligence: %10d\n" -msgstr "Intelligenz: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Perception: %10d\n" -" \n" -msgstr "" -"Wahrnehmung: %10d\n" -" \n" - -#: src/mission_companion.cpp -msgid "Top 3 Skills:\n" -msgstr "Beste 3 Fertigkeiten:\n" - -#: src/mission_companion.cpp -msgid "Asking for:\n" -msgstr "Bittet um:\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"> Food: %10d days\n" -" \n" -msgstr "" -"> Nahrung: %10d Tage\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Faction Food:%9d days\n" -" \n" -msgstr "" -"Fraktionsnahrung:%9d Tage\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Recruit Chance: %10d%%\n" -" \n" -msgstr "" -"Rekrutierungschance: %10d%%\n" -" \n" - -#: src/mission_companion.cpp -msgid "Select an option:" -msgstr "Wähle eine Option:" - -#: src/mission_companion.cpp -msgid "Increase Food" -msgstr "Mehr Nahrung" - -#: src/mission_companion.cpp -msgid "Decrease Food" -msgstr "Weniger Nahrung" - -#: src/mission_companion.cpp -msgid "Make Offer" -msgstr "Angebot machen" - -#: src/mission_companion.cpp -msgid "Not Interested" -msgstr "Nicht interessiert" - -#: src/mission_companion.cpp -msgid "You decide you aren't interested..." -msgstr "Du meinst, dass du nicht interessiert bist …" - -#: src/mission_companion.cpp -#, c-format -msgid "%s has been convinced to join!" -msgstr "%s wurde überzeugt, beizutreten!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested..." -msgstr "%s war nicht interessiert …" - #: src/mission_companion.h msgid "Do you wish to give your companion additional items?" msgstr "Möchtest du deinem Begleiter zusätzliche Gegenstände geben?" @@ -157102,9 +159424,10 @@ msgstr "Restpunkte: %4d" msgid "Freeform" msgstr "Freie Wahl" -#: src/newcharacter.cpp -msgid "Pick your style:" -msgstr "Wähl deinen Kampfstil:" +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" +msgstr "Stil wählen. (%s drücken für mehr Infos)" #: src/newcharacter.cpp msgid "Use this style?" @@ -158368,53 +160691,6 @@ msgid " If you are interested, I have another job for you." msgstr "" " Falls du daran interessiert bist, hab ich eine andere Aufgabe für dich." -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "Es war mir ein Vergnügen, Geschäfte zu machen!" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "Also, ich glaub, es gibt nur noch uns." - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "Wenigstens haben wir eine Unterkunft." - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "" -"Keine Ahnung, uns nach Vorräten und anderen Überlebenden umsehen, vermute " -"ich." - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "" -"Vielleicht sollten wir damit anfangen, diesen Ort zu verbarrikadieren." - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to" -" disappear quickly from here." -msgstr "" -"Ich denke, es könnte wirklich nützlich sein, wenn man ein fahrtüchtiges Auto" -" hat, wenn wir schnell von hier verschwinden wollen." - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "" -"Wir könnten uns nach einen dieser Bauernhöfe da draußen umsehen. Sie können " -"viel Nahrung bieten und sie sind nicht in der Nähe der Städte." - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "" -"Wir sollten wahrscheinlich fern vor den Städten bleiben, selbst, wenn es " -"dort Unmengen nützliches Zeugs gibt." - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." msgstr "Du hast mich gerade eben um etwas gefragt, frag später nach." @@ -158423,10 +160699,6 @@ msgstr "Du hast mich gerade eben um etwas gefragt, frag später nach." msgid "Why should I share my equipment with you?" msgstr "Warum sollte ich dir etwas abgeben?" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "In Ordnung. Hier." - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr ", und wenn du nochmal fragst, !" @@ -158449,46 +160721,6 @@ msgstr "" msgid "Here's what I can teach you..." msgstr "Das kann ich dir beibringen:" -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "In Ordnung, lass uns anfangen!" - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "Nicht, bevor ich ein paar Antibiotika kriege." - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "Du hast mich erst kürzlich gefragt; frag später nach." - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "Warum sollte ich mit dir reisen?" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "Alles klar, ich komme mit." - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "Hmm … Ich glaube nicht." - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "Was gibt’s?" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "Willst du wirklich gehen?" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "In Ordnung. Du übernimmst die Führung." - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "Nichts da, ich bin hier der Führer." - #: src/npctalk.cpp #, c-format msgid "%d.%d miles." @@ -158501,22 +160733,6 @@ msgid_plural "%d feet." msgstr[0] "%d Fuß." msgstr[1] "%d Fuß." -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "Ich bin auf Wache." - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "Auf keinen Fall! Ich würde alleine zurückgelassen werden." - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "Ich behalte das lieber für mich." - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "Damit fühl ich mich nicht so ganz wohl …" - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "*greift keine Feinde an." @@ -158824,30 +161040,6 @@ msgstr "Du könntest mich eventuell öfters sehen …" msgid "Delivering bandages." msgstr "Bandagen ausliefern." -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "Was sollten wir nun tun?" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "Irgendwelche Tipps?" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "Willst du mit mir reisen?" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "Lass uns handeln!" - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "Ich kann diese Unterkunft ohne Equipment nicht verlassen." - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "Hmm, okay." - #: src/npctalk.cpp msgid "Okay, fine." msgstr "In Ordnung." @@ -158880,30 +161072,6 @@ msgstr "Eh, vergiss es." msgid "Never mind, I'll do without. Bye." msgstr "Schon gut. Ich mach’s ohne. Tschüss." -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "Danke!" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "Danke! Aber kann ich noch mehr haben?" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "Danke, bis später!" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "In Ordnung, in Ordnung. Tschuldigung." - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "Ernsthaft, gib mir mehr Zeug!" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "Okay. Tschüss." - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "Ja, lasst uns weiter trainieren mit " @@ -158925,94 +161093,6 @@ msgstr "%s: %d -> %d" msgid "%s: %d -> %d (cost $%d)" msgstr "%s: %d -> %d (Kosten: %d $)" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "Klingt gut." - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "Wenn ich darüber nachdenke, vergiss es." - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "Gut, übernimm die Führung." - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "Nein, wir sind hier okay." - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "Verstanden. Ich hol diese Antibiotika." - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "Richtig, richtig. Ich frag später nochmal." - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "Ich kann dich beschützen." - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "Du kannst mich beschützen." - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "Wir sind Freunde, oder?" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "Wenn du es nicht tust, werd ich dich töten." - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "Großartig!" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "In Ordnung, los geht’s!" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "Wie weit noch?" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "Für eine Weile werde ich meinen eigenen Weg gehen." - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "Ich will für eine Weile die Führung übernehmen." - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "Geh zur Seite! Ich führe nun." - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "Los geht’s!" - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "Ach was, ich mach nur Scherze." - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "Ja, ich bin mir sicher. Tschüss." - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "Gut. Noch etwas …" - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "In Ordnung, lass uns gehen." - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "Okay, okay." - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "Okay, danke." @@ -159021,10 +161101,6 @@ msgstr "Okay, danke." msgid "Let's keep moving." msgstr "Lass uns weitergehen." -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "Ich möchte, dass du mich begleitest." - #: src/npctalk.cpp msgid "Combat commands..." msgstr "Kampfbefehle…" @@ -159082,16 +161158,12 @@ msgid "Miscellaneous rules..." msgstr "Sonstige Regeln…" #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "Lass uns über Fraktionslager sprechen." - -#: src/npctalk.cpp -msgid "I'll give you some space." -msgstr "Ich lass dir deinen Freiraum." +msgid "I'm going to go my own way for a while." +msgstr "Für eine Weile werde ich meinen eigenen Weg gehen." #: src/npctalk.cpp -msgid "I understand..." -msgstr "Ich verstehe …" +msgid "Let's talk about faction camps." +msgstr "Lass uns über Fraktionslager sprechen." #: src/npctalk.cpp msgid "Change your engagement rules..." @@ -159834,6 +161906,11 @@ msgstr "" "Zermalme Leichen unter dir; Nachbarn zerm.: Zermalme auch die benachbarten " "Leichen; Schlachten: Schlachte Leichen unter dir." +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "Deaktiviert" + #: src/options.cpp msgid "Pulp" msgstr "Zermalmen" @@ -160059,10 +162136,6 @@ msgstr "" msgid "Always" msgstr "Immer" -#: src/options.cpp -msgid "Ask" -msgstr "Fragen" - #: src/options.cpp msgid "Never" msgstr "Niemals" @@ -161819,7 +163892,7 @@ msgstr "Beispiel: »-Rohr,-stück,-blech«" #: src/output.cpp msgid "Search [c]ategory, [m]aterial, or [q]uality:" -msgstr "Nach [c] Kategorie, [m] Material oder [q] Qualität suchen." +msgstr "Nach [c]:Kategorie, [m]:Material oder [q]:Qualität suchen." #. ~ An example of how to filter items based on category or material. #: src/output.cpp @@ -162266,7 +164339,7 @@ msgstr "Gib 2 Zeichen ein (Groß-/Kleinschreibung wichtig):" #: src/pickup.cpp msgid "Your filter returned no results" -msgstr "Dein Filter lieferte keine Ergebnisse" +msgstr "Dein Filter hat kein Ergebnis geliefert" #: src/pickup.cpp #, c-format @@ -162641,9 +164714,7 @@ msgstr "Energie %d/%d" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "Waffe:" -msgstr[1] "Waffen:" +msgstr "Waffe:" #: src/player.cpp msgid "Equipment:" @@ -162739,7 +164810,7 @@ msgstr "Du bist zu müde zum Laufen." #: src/player.cpp msgid "You slow to a walk." -msgstr "Du gehst jetzt." +msgstr "Du gehst jetzt in normalem Tempo." #: src/player.cpp #, c-format @@ -163652,6 +165723,8 @@ msgstr "Du hast einen Asthmaanfall!" #: src/player.cpp msgid "You use your Oxygenator to clear it up, then go back to sleep." msgstr "" +"Du verwendest deine Oxygenierer-KBM um deine Atemwege zu befreien und legst " +"dich dann wieder schlafen" #: src/player.cpp msgid "You use your inhaler and go back to sleep." @@ -163822,11 +165895,11 @@ msgstr "Deine Sicht verschwimmt ein wenig." #: src/player.cpp msgid "Your mind lapses into unawareness briefly." -msgstr "" +msgstr "Für einen Augenblick verlierst du all dein Wissen." #: src/player.cpp msgid "Your muscles ache in stressfully unpredictable ways." -msgstr "" +msgstr "Deine Muskeln schmerzen auf eine nervende und unvorhersehbare Weise." #: src/player.cpp msgid "You have a distractingly painful headache." @@ -163835,6 +165908,7 @@ msgstr "Du hast ablenkende Kopfschmerzen." #: src/player.cpp msgid "You feel heartburn and an acid taste in your mouth." msgstr "" +"Du hast Sodbrennen und dadurch auch einen üblen, sauren Geschmack im Mund." #: src/player.cpp msgid "Your mind is so tired that you feel you can't trust your eyes anymore." @@ -164074,7 +166148,7 @@ msgstr "Du kannst das nicht tragen, es ist total versifft!" #: src/player.cpp #, c-format msgid "Your %s mutation prevents you from wearing your %s." -msgstr "" +msgstr "Deine Mutation %s hindert dich am Tragen von %s." #: src/player.cpp #, c-format @@ -164126,24 +166200,6 @@ msgstr "%s aus %s ziehen?" msgid "Stop wielding %s?" msgstr "%s nicht mehr halten?" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "Technik:" -msgstr[1] "Techniken:" - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "" -"Dieser Stil zwingt dich, unbewaffnet zuzuschlagen, auch dann, wenn du eine " -"Waffe hälst." - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "Stil wählen. (%s drücken für mehr Infos)" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "Hände freihalten (aus)" @@ -164201,6 +166257,11 @@ msgstr "Kaputt machen" msgid "Mend" msgstr "Beheben" +#: src/player.cpp +#, c-format +msgid "The %s doesn't have any faults to toggle." +msgstr "" + #: src/player.cpp #, c-format msgid "The %s doesn't have any faults to mend." @@ -164240,7 +166301,7 @@ msgstr " hat diesen Gegenstand nicht." #: src/player.cpp #, c-format msgid "You put on your %s." -msgstr "Du zieht dein %s an." +msgstr "Du ziehst %s an." #: src/player.cpp #, c-format @@ -164265,12 +166326,16 @@ msgstr "Du kannst nichts mehr hören!" #, c-format msgid "This %s is too big to wear comfortably! Maybe it could be refitted..." msgstr "" +"%s ist zu groß um bequem getragen zu werden! Vielleicht kann es ja angepasst" +" werden..." #: src/player.cpp #, c-format msgid "" "This %s is too small to wear comfortably! Maybe it could be refitted..." msgstr "" +"%s ist zu klein um bequem getragen zu werden! Vielleicht kann es ja " +"angepasst werden..." #: src/player.cpp #, c-format @@ -164327,7 +166392,7 @@ msgstr "Kein Platz im Inventar für %s. Fallen lassen?" #: src/player.cpp #, c-format msgid "You take off your %s." -msgstr "Du nimmst dein %s ab." +msgstr "Du ziehst %s aus." #: src/player.cpp #, c-format @@ -164462,15 +166527,15 @@ msgstr " (nicht interessiert)" #: src/player.cpp msgid " (deaf)" -msgstr "(taub)" +msgstr " (taub)" #: src/player.cpp msgid " (too sad)" -msgstr "(zu traurig)" +msgstr " (zu traurig)" #: src/player.cpp msgid " (reading aloud to you)" -msgstr "(liest dir laut vor)" +msgstr " (liest dir laut vor)" #: src/player.cpp #, c-format @@ -164567,12 +166632,12 @@ msgstr "Du überfliegst %s, um herauszufinden, was darinsteht." #: src/player.cpp #, c-format msgid "Can bring your %s skill to %d." -msgstr "Kann deine Fertigkeit in %s auf %d bringen." +msgstr "Kann deine Fertigkeit »%s« auf die Stufe %d erhöhen." #: src/player.cpp #, c-format msgid "Requires %s level %d to understand." -msgstr "Erfordert %s in Stufe %d zum Verstehen." +msgstr "Benötigt zum Verstehen die Fertigkeit »%s« auf der Stufe %d." #: src/player.cpp #, c-format @@ -164610,7 +166675,7 @@ msgstr "%s erhöht sich auf Stufe %d." #: src/player.cpp #, c-format msgid "%s increases their %s level." -msgstr "%s erhöht die Stufe von %s." +msgstr "%s hat eine neue Stufe in der Fertigkeit »%s« erreicht." #: src/player.cpp #, c-format @@ -164620,7 +166685,9 @@ msgstr "Du lernst ein bisschen was über %s. (%d%%)" #: src/player.cpp #, c-format msgid "You can no longer learn from %s." -msgstr "Du kannst aus %s nicht mehr lernen." +msgstr "" +"Du hast bereits alles gelernt, was du durch die Lektüre von »%s« hättest " +"lernen können." #: src/player.cpp #, c-format @@ -164669,6 +166736,9 @@ msgid "" "Our fibers meld with the ground beneath us. The gills on our neck begin to " "seed the air with spores as our awareness fades." msgstr "" +"Unsere Fasern verschmelzen mit dem Boden unter uns. Die Kiemen an unserem " +"Hals beginnen Sporen in die Luft zu sprühen, während unser Bewusstsein " +"schwindet." #: src/player.cpp msgid "These thick webs support your weight, and are strangely comfortable..." @@ -164702,10 +166772,12 @@ msgstr "" msgid "" "You lay beneath the waves' embrace, gazing up through the water's surface..." msgstr "" +"Du liegst unter der Umarmung der Wellen und blickst durch die " +"Wasseroberfläche nach oben..." #: src/player.cpp msgid "You settle into the water and begin to drowse..." -msgstr "" +msgstr "Du gewöhnst dich ans Wasser und beginnst zu schlummern..." #: src/player.cpp msgid "This is a comfortable place to sleep." @@ -164714,7 +166786,9 @@ msgstr "Dies ist ein komfortabler Schlafplatz." #: src/player.cpp #, c-format msgid "It's a little hard to get to sleep on this %s." -msgstr "Es ist ein bisschen schwer, darauf zu schlafen: %s." +msgstr "" +"Das ist nicht gerade bequem. Es gestaltet sich recht schwierig auf »%s« zu " +"schlafen." #: src/player.cpp #, c-format @@ -164736,7 +166810,7 @@ msgstr "Du benutzt deinen Kleiderhaufen für Wärme." #: src/player.cpp #, c-format msgid "You snuggle your %s to keep warm." -msgstr "Du kuschelst dich an dein %s, um warm zu bleiben." +msgstr "Um warm zu bleiben, kuschelst du dich an »%s«." #: src/player.cpp #, c-format @@ -164803,7 +166877,9 @@ msgstr "zerstört" #: src/player.cpp #, c-format msgid "This task is too simple to train your %s beyond %d." -msgstr "Diese Tätigkeit ist zu simpel, um dein %s über %d zu trainieren." +msgstr "" +"Diese Tätigkeit ist zu simpel, um deine Fertigkeit »%s« über den Wert »%d« " +"hinaus zu trainieren." #: src/player.cpp #, c-format @@ -164987,10 +167063,6 @@ msgstr "Intelligenz" msgid "Perception" msgstr "Wahrnehmung" -#: src/player_display.cpp -msgid "Speed" -msgstr "Geschwindigkeit" - #: src/player_display.cpp msgid "Severely Malnourished" msgstr "Stark unterernährt" @@ -166111,6 +168183,10 @@ msgstr "»Krawumm!«" msgid "kerblam!" msgstr "»KRAWENG!«." +#: src/recipe.cpp +msgid "none" +msgstr "keine" + #: src/requirements.cpp #, c-format msgid "%d tool with %s of %d or more." @@ -166210,7 +168286,7 @@ msgid "" "AcI*zO*iE case insensitive search" msgstr "" "»*« wird als Wildcard benutzt. Einige Beispiele:\n" -"\n" +" \n" "mensch passt auf jeden NPC\n" "zombie passt exakt auf den Monsternamen\n" "gift* passt auf Monster, die mit »gift« anfangen\n" @@ -167215,7 +169291,7 @@ msgstr "Teil wählen" #: src/veh_interact.cpp msgid "Skills required:\n" -msgstr "Benötigte Fähigkeiten:\n" +msgstr "Benötigte Fertigkeiten:\n" #: src/veh_interact.cpp #, c-format @@ -167256,7 +169332,9 @@ msgstr "" #: src/veh_interact.cpp msgid "Your morale is too low to construct..." -msgstr "Deine Moral ist zu niedrig zum Bauen." +msgstr "" +"Deine Moral ist derzeit zu niedrig, um am Fahrzeug Veränderungen " +"vorzunehmen." #: src/veh_interact.cpp msgid "Cannot install any part here." @@ -167464,6 +169542,23 @@ msgstr "»{«: hochscrollen" msgid "'}' to scroll down" msgstr "»{«: runterscrollen" +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "" +"Das Entfernen dieses beschädigten Bauteils »%1$s« kann " +"lediglich einige Fragmente hervorbringen.\n" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" +msgstr "" +"Das Entfrenen von %1$s wird hervorbringen:\n" +"> %2$s\n" + #: src/veh_interact.cpp #, c-format msgid "> %2$s" @@ -168192,26 +170287,26 @@ msgstr "Der Motor von %s macht ein spotzendes Geräusch." #: src/vehicle_move.cpp #, c-format msgid "Your %1$s's %2$s rams into %3$s and stuns it!" -msgstr "Das %2$s deines %1$s rammt in %3$s und betäubt es!" +msgstr "%2$s von %1$s kollidiert mit %3$s (wird dadurch betäubt)!" #. ~ 1$s - vehicle name, 2$s - part name, 3$s - NPC or monster #: src/vehicle_move.cpp #, c-format msgid "Your %1$s's %2$s rams into %3$s!" -msgstr "Das %2$s deines %1$s rammt in %3$s!" +msgstr "%2$s von %1$s kollidiert mit %3$s!" #. ~ 1$s - vehicle name, 2$s - part name, 3$s - collision object name, 4$s - #. sound message #: src/vehicle_move.cpp #, c-format msgid "Your %1$s's %2$s rams into %3$s with a %4$s" -msgstr "Das %2$s deines %1$s rammt in %3$s mit %4$s." +msgstr "%2$s von %1$s kollidiert mit %3$s mit %4$s." #. ~ 1$s - vehicle name, 2$s - part name, 3$s - collision object name #: src/vehicle_move.cpp #, c-format msgid "Your %1$s's %2$s rams into %3$s." -msgstr "Das %2$s deines %1$s rammt in ein %3$s." +msgstr "%2$s von %1$s kollidiert mit %3$s." #: src/vehicle_move.cpp msgid "Swinnng!" @@ -168338,13 +170433,13 @@ msgstr "Zu wenig Strom, um %s zu aktivieren" #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" -msgstr "%s ausschalten" +msgid "Turn on %s" +msgstr "%s einschalten" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" -msgstr "%s einschalten" +msgid "Turn off %s" +msgstr "%s ausschalten" #: src/vehicle_use.cpp #, c-format @@ -168440,10 +170535,6 @@ msgstr "Kamerasystem aktiviert" msgid "Camera system won't turn on" msgstr "Kamerasystem wird nicht angehen" -#: src/vehicle_use.cpp -msgid "Quit controlling electronics" -msgstr "Mit Elektroniksteuerung aufhören" - #: src/vehicle_use.cpp msgid "Electronics controls" msgstr "Elektroniksteuerung" diff --git a/lang/po/es_AR.po b/lang/po/es_AR.po index 8be27d3a6e23c..7c2888fc25f40 100644 --- a/lang/po/es_AR.po +++ b/lang/po/es_AR.po @@ -1,13 +1,13 @@ # Translators: -# Brett Dong , 2018 # Vlasov Vitaly , 2018 +# Brett Dong , 2018 # Noctivagante , 2018 # msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-26 22:02+0800\n" +"POT-Creation-Date: 2018-11-16 22:24+0800\n" "PO-Revision-Date: 2018-04-26 14:47+0000\n" "Last-Translator: Noctivagante , 2018\n" "Language-Team: Spanish (Argentina) (https://www.transifex.com/cataclysm-dda-translators/teams/2217/es_AR/)\n" @@ -1017,7 +1017,7 @@ msgid "" "produce acidic smoke, that is deadly to bacteria and humans alike, or " "oxidized to make paper-bleaching agents." msgstr "" -"Un puñado de granos amarillos de azufre puro. Principalmente usado para " +"Es un puñado de granos amarillos de azufre puro. Principalmente usado para " "hacer ácido de batería, el azufre a veces se usa como combustible para " "explosivos. Puede quemarse para producir humo ácido, que es mortal para las " "bacterias y también para los humanos, o puede ser oxidado para hacer agentes" @@ -1134,10 +1134,10 @@ msgid "" "for paints, hobbyists used to mix it with sulfur to make basic rocket fuel /" " smokescreen. When treated with a strong acid, it will produce hydrogen." msgstr "" -"Un puñado de polvo de cinc. Aunque comercialmente es usado más que nada en " -"cosméticos y pinturas, algunos aficionados lo mezclan con azufre para hacer " -"combustible básico para misiles y cortinas de humo. Cuando se lo trata con " -"un ácido fuerte, produce hidrógeno." +"Es un puñado de polvo de cinc. Aunque comercialmente es usado más que nada " +"en cosméticos y pinturas, algunos aficionados lo mezclan con azufre para " +"hacer combustible básico para misiles y cortinas de humo. Cuando se lo trata" +" con un ácido fuerte, produce hidrógeno." #: lang/json/AMMO_from_json.py msgid "sulfuric acid" @@ -2541,8 +2541,8 @@ msgid "" "A 40mm signal flare. It will burn brightly for up to a minute, and will " "also leave a streak of smoke cover in its wake." msgstr "" -"Una bengala de señalización 40mm. Arderá brillantemente durante un minuto, y" -" también creará una cortina de humo con su estela." +"Es una bengala de señalización 40mm. Arderá brillantemente durante un " +"minuto, y también creará una cortina de humo con su estela." #: lang/json/AMMO_from_json.py msgid "40mm flashbang" @@ -3201,7 +3201,7 @@ msgid "" "Commonly used for signaling, target designation, and for screening troop " "movements." msgstr "" -"Cartucho 84x246mm de humo para el rifle sin retroceso Carl Gustav M3. " +"Es un cartucho 84x246mm de humo para el rifle sin retroceso Carl Gustav M3. " "Generalmente se utiliza para señalizar, marcar un objetivo, y para ocultar " "los movimientos de las tropas." @@ -4195,8 +4195,8 @@ msgid "" "A 84x246mm smoke marker round for the recoilless rifle. Commonly used for " "signaling, target designation, and for screening troop movements." msgstr "" -"Cartucho 84x246mm de humo para el rifle sin retroceso. Generalmente se " -"utiliza para señalizar, marcar un objetivo, y para ocultar los movimientos " +"Es un cartucho 84x246mm de humo para el rifle sin retroceso. Generalmente se" +" utiliza para señalizar, marcar un objetivo, y para ocultar los movimientos " "de las tropas." #: lang/json/AMMO_from_json.py lang/json/ammunition_type_from_json.py @@ -5016,6 +5016,7 @@ msgstr "" "que un blobo necesita para estar sano. Eso te parece..." #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "piedra" @@ -6132,6 +6133,17 @@ msgid_plural "bondage masks" msgstr[0] "máscara de bondage" msgstr[1] "máscaras de bondage" +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "Cerrar el cierre" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "" +"Cerrás el cierre que cubre los ojos y la boca de la máscara de bondage." + #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" @@ -6141,6 +6153,32 @@ msgstr "" "Una máscara muy ajustada hecha de cuero negro. Los agujeros de los ojos y la" " boca pueden ser cerrados con los cierres." +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "máscara de bondage (cerrada)" +msgstr[1] "máscaras de bondage (cerradas)" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "Abrir el cierre" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "" +"Abrís el cierre que cubre los ojos y la boca de la máscara de bondage." + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "" +"Es una máscara muy ajustada hecha de cuero negro. Los cierres de los ojos y " +"la boca están cerrados." + #: lang/json/ARMOR_from_json.py msgid "bondage suit" msgid_plural "bondage suits" @@ -6705,7 +6743,7 @@ msgstr[1] "camperas de piel artificial" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." msgstr "" "Es una campera de colores estridentes hecha con piel sintética, con un par " @@ -7124,6 +7162,21 @@ msgstr[1] "gabardinas de piel" msgid "A thick fur full-length duster. Has many pockets for storage." msgstr "Es una campera robusta y larga de piel, con muchos bolsillos." +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "gabardina de piel artificial" +msgstr[1] "gabardinas de piel artificial" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." +msgstr "" +"Es una gabardina gruesa de piel sintética, que te llega hasta las rodillas. " +"Tiene muchos bolsillos." + #: lang/json/ARMOR_from_json.py msgid "leather duster" msgid_plural "leather dusters" @@ -8330,6 +8383,21 @@ msgstr[1] "gorras de piel" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "Una gorra hecha con piel de animal. Extremadamente abrigada." +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "sombrero de piel artificial" +msgstr[1] "sombreros de piel artificial" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "" +"Es un sombrero muy elegante hecho de piel sintética. Es como la piel real " +"pero sin el sufrimiento, si la etiqueta dice la verdad. Muy abrigado." + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -8695,17 +8763,6 @@ msgstr "" "Un yelmo medieval que brinda excelente protección para toda la cabeza, pero " "también es muy incómodo de usar." -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "casco antidisturbios" -msgstr[1] "cascos antidisturbios" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "Un casco con una protección plástica que cubre la cara entera." - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" @@ -10393,7 +10450,8 @@ msgstr[1] "pantalones militares" #: lang/json/ARMOR_from_json.py msgid "A tough pair of pants lined with pockets. Favored by the military." msgstr "" -"Unos pantalones resistentes con bolsillos. De los favoritos de los soldados." +"Son unos pantalones resistentes con bolsillos. De los favoritos de los " +"soldados." #: lang/json/ARMOR_from_json.py msgid "cargo pants" @@ -10428,7 +10486,20 @@ msgstr[1] "pantalones de piel" #. ~ Description for fur pants #: lang/json/ARMOR_from_json.py msgid "A hefty pair of fur-lined pants." -msgstr "Unos pantalones pesados, recubiertos de piel." +msgstr "Son unos pantalones pesados, recubiertos de piel." + +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "par de pantalones de piel artificial" +msgstr[1] "pares de pantalones de piel artificial" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "" +"Es un par de pantalones largos y abigados de algodón forrado con piel " +"sintética." #: lang/json/ARMOR_from_json.py msgid "leather pants" @@ -11055,7 +11126,7 @@ msgstr[1] "bermudas cargo" #: lang/json/ARMOR_from_json.py msgid "A pair of shorts lined with pockets, offering decent storage." msgstr "" -"Unas bermudas con bolsillos que ofrecen una capacidad de almacenamiento " +"Son unas bermudas con bolsillos que ofrecen una capacidad de almacenamiento " "aceptable." #: lang/json/ARMOR_from_json.py @@ -11149,23 +11220,88 @@ msgid_plural "sleeping bags" msgstr[0] "bolsa de dormir" msgstr[1] "bolsas de dormir" +#. ~ Use action menu_text for sleeping bag. +#. ~ Use action menu_text for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Roll up" +msgstr "Enrollar" + +#. ~ Use action msg for sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the sleeping bag, preparing it for transport." +msgstr "" +"Enrollás la bolsa de dormir, y queda preparada para transportar cómodamente." + #. ~ Description for sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag that covers you head to toe." msgstr "" "Una bolsa de dormir grande que te cubre desde la cabeza hasta los pies." +#: lang/json/ARMOR_from_json.py +msgid "rolled sleeping bag" +msgid_plural "rolled sleeping bags" +msgstr[0] "bolsa de dormir enrollada" +msgstr[1] "bolsas de dormir enrolladas" + +#. ~ Use action menu_text for rolled sleeping bag. +#. ~ Use action menu_text for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Unroll" +msgstr "Desenrollar" + +#. ~ Use action msg for rolled sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll the sleeping bag." +msgstr "Desenrollás la bolsa de dormir." + +#. ~ Description for rolled sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag rolled up for transport. It has a strap to carry it " +"with." +msgstr "" +"Es un bolsa de dormir grande enrollada para transportar cómodamente. Tiene " +"una correa para llevarla." + #: lang/json/ARMOR_from_json.py msgid "fur sleeping bag" msgid_plural "fur sleeping bags" msgstr[0] "bolsa de dormir de piel" msgstr[1] "bolsas de dormir de piel" +#. ~ Use action msg for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the fur sleeping bag, preparing it for transport." +msgstr "" +"Enrollás la bolsa de dormir de piel, y queda preparada para transportar " +"cómodamente." + #. ~ Description for fur sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag lined with fur. Who needs a tent?" msgstr "" -"Una bolsa de dormir grande forrada de piel. ¿Quién necesita una carpa?" +"Es una bolsa de dormir grande forrada de piel. ¿Quién necesita una carpa?" + +#: lang/json/ARMOR_from_json.py +msgid "rolled fur sleeping bag" +msgid_plural "rolled fur sleeping bags" +msgstr[0] "bolsa de dormir de piel enrollada" +msgstr[1] "bolsas de dormir de piel enrolladas" + +#. ~ Use action msg for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll up the fur sleeping bag." +msgstr "Desenrollás la bolsa de dormir de piel." + +#. ~ Description for rolled fur sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag lined with fur, rolled for transport. It has a strap " +"to carry it with." +msgstr "" +"Es un bolsa de dormir grande forrada de piel, enrollada para transportar " +"cómodamente. Tiene una correa para llevarla." #: lang/json/ARMOR_from_json.py msgid "sleeveless duster" @@ -11197,6 +11333,21 @@ msgstr "" "Es una gabardina robusta y larga de piel, sin mangas por lo que deja tus " "brazos liberados. Mucha capacidad de almacenamiento." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "gabardina de piel sintética sin mangas" +msgstr[1] "gabardinas de piel sintética sin mangas" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "" +"Es una gabardina gruesa sin mangas, de piel sintética, que te llega hasta " +"las rodillas. Tiene muchos bolsillos." + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" msgid_plural "sleeveless leather dusters" @@ -11258,6 +11409,21 @@ msgstr "" "Un sobretodo sin mangas resistente de piel, que te deja los brazos libres. " "Tiene mucha capacidad de almacenamiento debido a sus numerosos bolsillos." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "sobretodo de piel artificial sin mangas" +msgstr[1] "sobretodos de piel artificial sin mangas" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "" +"Es un sobretodo grueso de piel sintética, sin mangas. Tiene mucha capacidad " +"de almacenamiento, y está bastante bueno." + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -12019,8 +12185,24 @@ msgstr[1] "sobretodos de piel" #: lang/json/ARMOR_from_json.py msgid "A thick fur trenchcoat, lined with pockets. Great for storage." msgstr "" -"Un sobretodo grueso de piel, con varios bolsillos. Tiene muy buena capacidad" -" de almacenamiento." +"Es un sobretodo grueso de piel, con varios bolsillos. Tiene muy buena " +"capacidad de almacenamiento." + +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "sobretodo de piel artificial" +msgstr[1] "sobretodos de piel artificial" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "" +"Es un sobretodo grueso de piel sintética, con varios bolsillos. Tiene muy " +"buena capacidad de almacenamiento y te convierte en el tema de conversación " +"del pueblo." #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" @@ -12032,7 +12214,7 @@ msgstr[1] "sobretodos de cuero" #: lang/json/ARMOR_from_json.py msgid "A thick leather trenchcoat, lined with pockets. Great for storage." msgstr "" -"Un sobretodo grueso de cuero, con varios bolsillos. Tiene muy buena " +"Es un sobretodo grueso de cuero, con varios bolsillos. Tiene muy buena " "capacidad de almacenamiento." #: lang/json/ARMOR_from_json.py @@ -12383,8 +12565,8 @@ msgid "" "A tough pair of pants lined with pockets, thickly padded for warmth. " "Favored by the military." msgstr "" -"Unos pantalones resistentes con bolsillos, y forrados con almohadillas que " -"lo hacen más abrigado. De los favoritos de los soldados." +"Son unos pantalones resistentes con bolsillos, y forrados con almohadillas " +"que lo hacen más abrigado. De los favoritos de los soldados." #: lang/json/ARMOR_from_json.py msgid "wolf suit" @@ -13100,7 +13282,7 @@ msgstr[1] "pares de botas de piel" #. ~ Description for pair of fur boots #: lang/json/ARMOR_from_json.py msgid "Boots lined with fur for warmth." -msgstr "Botas forradas con piel que las hace abrigadas." +msgstr "Son unas botas forradas con piel que las hace abrigadas." #: lang/json/ARMOR_from_json.py msgid "pair of survivor wetsuit boots" @@ -15808,11 +15990,12 @@ msgstr[0] "MCB Generador de Sobrecarga Iónica" msgstr[1] "MCB Generador de Sobrecarga Iónica" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" "Es un poderoso generador de energía iónica que está implantado en tu pecho. " @@ -15868,26 +16051,6 @@ msgstr "" "incendia oxígeno creando fuego mientras se va moviendo y explotando al " "impactar. No se recomienda utilizarlo a poca distancia del objetivo." -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "MCB Navajas Quirúrgicas Autónomas" -msgstr[1] "MCB Navajas Quirúrgicas Autónomas" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While" -" activated, they will continously drain power to make automated precise cuts" -" but you will be unable to wield anything." -msgstr "" -"Es un sistema de navajas de grado quirúrgico que se implanta en los dedos " -"del usuario. Cuando están activadas, usan energía para realizar cortes " -"precisos automáticos, aunque no podés empuñar nada, claro." - #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" msgid_plural "Lessons for the Novice Bowhunter" @@ -17119,7 +17282,7 @@ msgid "" "A massive book that details virtually every aspect of remodeling and " "repairing a home, with concise terminology aimed at experienced carpenters." msgstr "" -"Un libro masivo que detalla casi todos los aspectos de remodelación y " +"Es un libro masivo que detalla casi todos los aspectos de remodelación y " "reparación de una casa, con terminología concisa dirigida a los carpinteros " "experimentados." @@ -18871,6 +19034,25 @@ msgstr "" "diseñador de ropa. Lleno de bocetos y notas, un sastre habilidoso podría " "aprender mucho de este volumen." +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "Moda Humana, Amigable" +msgstr[1] "Moda Humana, Amigable" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon" +" Animal Rights Organization." +msgstr "" +"Es un libro educativo que detallo los usos de la piel sintética, y también " +"sus beneficios y desventajas. La prosa es bastante pasional, y una " +"declaración en la tapa establece orgullosamente que el libro fue impreso y " +"distribuido por la Organización de Derechos Animales Gryphon." + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -20173,8 +20355,8 @@ msgstr "El trago favorito del mecánico borracho subrepticio." #: lang/json/COMESTIBLE_from_json.py msgid "wild apple" msgid_plural "wild apple" -msgstr[0] "manzana silvestre" -msgstr[1] "manzana silvestre" +msgstr[0] "manzana salvaje" +msgstr[1] "manzana salvaje" #. ~ Description for wild apple #: lang/json/COMESTIBLE_from_json.py @@ -20792,7 +20974,7 @@ msgstr[1] "tés de diente de león" #: lang/json/COMESTIBLE_from_json.py msgid "A healthy beverage made from dandelion roots steeped in boiling water." msgstr "" -"Una bebida saludable hecha con las raíces de diente de león, pisadas y " +"Es una bebida saludable hecha con las raíces de diente de león, pisadas y " "hervidas en agua." #: lang/json/COMESTIBLE_from_json.py @@ -21150,7 +21332,7 @@ msgstr "manzana" #. ~ Description for apple #: lang/json/COMESTIBLE_from_json.py msgid "An apple a day keeps the doctor away." -msgstr "Cada día una manzana y tendrás una vida sana." +msgstr "Cada día una manzana te dará una vida sana." #: lang/json/COMESTIBLE_from_json.py msgid "banana" @@ -22206,7 +22388,7 @@ msgstr[1] "piñones" #. ~ Description for pine nuts #: lang/json/COMESTIBLE_from_json.py msgid "Tasty crunchy nuts from a pinecone." -msgstr "Semillas sabrosas y crujientes de una piña." +msgstr "Son semillas sabrosas y crujientes de una piña." #: lang/json/COMESTIBLE_from_json.py msgid "handful of shelled pistachios" @@ -23505,7 +23687,8 @@ msgstr[1] "té de hierbas" #. ~ Description for herbal tea #: lang/json/COMESTIBLE_from_json.py msgid "A healthy beverage made from herbs steeped in boiling water." -msgstr "Una bebida saludable hecha con hierbas sumergidas en agua hirviendo." +msgstr "" +"Es una bebida saludable hecha con hierbas sumergidas en agua hirviendo." #: lang/json/COMESTIBLE_from_json.py msgid "pine needle tea" @@ -23519,7 +23702,8 @@ msgid "" "A fragrant and healthy beverage made from pine needles steeped in boiling " "water." msgstr "" -"Una bebida saludable hecha con agujas de pino sumergidas en agua hirviendo." +"Es una bebida saludable hecha con agujas de pino sumergidas en agua " +"hirviendo." #: lang/json/COMESTIBLE_from_json.py msgid "handful of acorns" @@ -26930,8 +27114,8 @@ msgstr "huevo de reptil" #: lang/json/COMESTIBLE_from_json.py msgid "An egg belonging to one of reptile species found in New England." msgstr "" -"Un huevo perteneciente a alguna de las especies reptiles que se encuentran " -"en New England." +"Es un huevo perteneciente a alguna de las especies reptiles que se " +"encuentran en New England." #: lang/json/COMESTIBLE_from_json.py msgid "ant egg" @@ -28039,7 +28223,7 @@ msgstr "pastilla de harina de hueso" #. ~ Description for bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Tastes horribly and is " +"Homemade calcium supplement made out of bone meal. Tastes horrible and is " "hard to swallow but it does its job." msgstr "" "Es un suplemento de calcio casero, hecho con harina de hueso. Tiene un gusto" @@ -28052,9 +28236,9 @@ msgstr "pastilla de harina de hueso con sabor" #. ~ Description for flavored bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Due to some sweetness " -"mixed in to counteract the powdery texture and the taste of ash, almost as " -"palatable as the pre-cataclysm tablets." +"Homemade calcium supplement made out of bone meal. Due to some sweetness " +"mixed in to counteract the powdery texture and the taste of ash, it's almost" +" as palatable as the pre-cataclysm tablets." msgstr "" "Es un suplemento de calcio casero, hecho de harina de hueso. Debido a algo " "dulce que ha sido mezclado contrarrestar la textura de polvo y el gusto a " @@ -28693,7 +28877,7 @@ msgstr "" "Una bebida sabrosa y espesa hecha con proteína refinada y alguna fruta " "nutritiva. Ha sido suplementada con más vitaminas y minerales." -#: lang/json/COMESTIBLE_from_json.py src/mission_companion.cpp +#: lang/json/COMESTIBLE_from_json.py src/faction_camp.cpp msgid "seeds" msgid_plural "seeds" msgstr[0] "semillas" @@ -31674,6 +31858,36 @@ msgid "" msgstr "" "Es un puñado de brasas ardiente de las que sale humo. Se van apagando." +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "Bola 8 Mágica" +msgstr[1] "Bolas 8 Mágicas" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "" +"Es un dispositivo adivinador de la suerte de los años '50. El apoyo moral " +"que no sabías que necesitabas." + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "moneda" +msgstr[1] "monedas" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "" +"Esto ya es parte de una antigua economía. Ya despojada de su propósito " +"original, ahora sirve, fielmente, para el cara o cruz." + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -34586,7 +34800,7 @@ msgstr "" " El arma resultante es difícil de manejar y lenta pero con un golpe muy " "pesado." -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "tabla de madera" @@ -36587,12 +36801,10 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." +"spike." msgstr "" -"Es un arma medieval que consiste en un palo de madera con una punta de " -"hierro. Aunque es más larga y pesada que otras lanzas, su precisión y daño " -"no tienen comparación alguna." +"Es un arma medieval que consiste en un palo de madera con una púa de hierro " +"en la punta. " #: lang/json/GENERIC_from_json.py msgid "pot" @@ -36697,7 +36909,7 @@ msgstr[1] "ollas de piedra" #. ~ Description for stone pot #: lang/json/GENERIC_from_json.py msgid "A large stone, roughly hollowed out into a pot." -msgstr "Una piedra grande ahuecada para usarla como olla." +msgstr "Es una piedra grande ahuecada para usarla como olla." #: lang/json/GENERIC_from_json.py msgid "fermenting sauerkraut jar" @@ -36766,7 +36978,7 @@ msgid "" "A telescoping umbrella which collapses down for easy storage, useful for " "keeping dry when wielded." msgstr "" -"Un paraguas telescópico que se cierra sobre sí mismo para ser fácil de " +"Es un paraguas telescópico que se cierra sobre sí mismo para ser fácil de " "guardar. Si lo empuñás, te va a mantener seco." #: lang/json/GENERIC_from_json.py @@ -36799,7 +37011,8 @@ msgstr[1] "paraguas" #: lang/json/GENERIC_from_json.py msgid "An umbrella with a pointy end, useful for keeping dry when wielded." msgstr "" -"Un paraguas con la punta puntiaguda, y si lo empuñás te va a mantener seco." +"Es un paraguas con la punta puntiaguda, y si lo empuñás te va a mantener " +"seco." #: lang/json/GENERIC_from_json.py msgid "waffle iron" @@ -37889,7 +38102,7 @@ msgstr[1] "El Ciempiés Lu Feng" #. ~ Description for The Centipede Lu Feng #: lang/json/GENERIC_from_json.py msgid "A complete guide to Centipede Kung Fu." -msgstr "Una guía completa para el Kung Fu Ciempiés." +msgstr "Es la guía completa para el Kung Fu Ciempiés." #: lang/json/GENERIC_from_json.py msgid "The Red Crane" @@ -44109,19 +44322,6 @@ msgstr "" "ecolocación para orientarse por el aire a gran velocidad a través de terreno" " complicado." -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "oso Smoky" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "" -"Una cáscara humeante es todo lo que queda de lo que debe haber sido un " -"presuntuoso oso. Sus ojos negros te contemplan con malicia... y con hambre." - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "zombi cicatrizal" @@ -44348,7 +44548,7 @@ msgstr "C.H.U.D." #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "" "El H.H.S.C., o Habitante Humanoide Subterráneo Canibalesco. Un humano que se" @@ -44397,9 +44597,9 @@ msgid "" "lined with dagger-like teeth, and its flesh is slick with bubbling blue " "slime." msgstr "" -"Un enorme gusano mutado, de las profundidades subterráneas. Tiene una boca " -"muy grande y redonda llena de dientes como dagas, y su carne es resbaladiza " -"por una baba azul burbujeante que la cubre." +"Es un enorme gusano mutado, de las profundidades subterráneas. Tiene una " +"boca muy grande y redonda llena de dientes como dagas, y su carne es " +"resbaladiza por una baba azul burbujeante que la cubre." #: lang/json/MONSTER_from_json.py msgid "wraith" @@ -45473,8 +45673,8 @@ msgstr "zombi policía" msgid "" "A human body covered by a weather-beaten and badly damaged set of riot gear." msgstr "" -"Un cadáver humano cubierto con un equipo policial anti-disturbios muy dañado" -" y gastado por el clima." +"Es un cadáver humano cubierto con un equipo policial anti-disturbios muy " +"dañado y gastado por el clima." #: lang/json/MONSTER_from_json.py msgid "corrosive zombie" @@ -45586,8 +45786,9 @@ msgid "" "A decaying human body clad in tattered firefighting gear. It staggers " "aimlessly, reeking of smoke and decay." msgstr "" -"Un cadáver humano en descomposición, vestido con ropa harapienta de bombero." -" Se va tambaleando sin dirección alguna, apestando a humo y putrefacción." +"Es un cadáver humano en descomposición, vestido con ropa harapienta de " +"bombero. Se va tambaleando sin dirección alguna, apestando a humo y " +"putrefacción." #: lang/json/MONSTER_from_json.py msgid "fungal zombie" @@ -45814,7 +46015,7 @@ msgid "" "A once-dead human corpse. Its discolored swollen flesh is riddled with " "festering wounds and open sores." msgstr "" -"Un cadáver humano que alguna vez estuvo muerto. Su carne hinchada y " +"Es un cadáver humano que alguna vez estuvo muerto. Su carne hinchada y " "descolorida está llena de heridas infectadas y llagas abiertas." #: lang/json/MONSTER_from_json.py @@ -45897,7 +46098,7 @@ msgid "" "An elongated human body with a swollen chest and a gaping hole where its jaw" " used to be." msgstr "" -"Un cadáver humano estirado con el pecho hinchado y un agujero grande en " +"Es un cadáver humano estirado con el pecho hinchado y un agujero grande en " "donde antes estaba la mandíbula." #: lang/json/MONSTER_from_json.py @@ -46617,8 +46818,8 @@ msgid "" "A large mutant variety of carp. It has shimmering green scales and a mouth " "lined with three jagged rows of razor-sharp teeth." msgstr "" -"Una variedad mutada de una carpa grande. Tiene escamas verdes relucientes y " -"una boca con tres filas dentadas con dientes filosos como navajas." +"Es una variedad mutada de una carpa grande. Tiene escamas verdes relucientes" +" y una boca con tres filas dentadas con dientes filosos como navajas." #: lang/json/MONSTER_from_json.py msgid "skittering plague" @@ -46709,8 +46910,8 @@ msgid "" "A meter-long centipede with a menacing pair of pincers, moving swiftly on " "dozens of spindly legs." msgstr "" -"Un ciempiés de un metro de largo con un par de pinzas amenazantes, que se " -"mueve rápidamente con sus docenas de patas largas y delgadas." +"Es un ciempiés de un metro de largo con un par de pinzas amenazantes, que se" +" mueve rápidamente con sus docenas de patas largas y delgadas." #: lang/json/MONSTER_from_json.py msgid "giant dragonfly" @@ -46739,7 +46940,7 @@ msgid "" "A tremendous housefly the size of a small dog, predictably accompanied by a " "loud, incessant buzzing sound." msgstr "" -"Una tremenda mosca común del tamaño de un perro pequeño, y como era de " +"Es una tremenda mosca común del tamaño de un perro pequeño, y como era de " "esperar, la acompaña un zumbido incesante y fuerte." #: lang/json/MONSTER_from_json.py @@ -47267,10 +47468,10 @@ msgstr "" "mutantes gigantes." #: lang/json/MONSTER_from_json.py -msgid "labrador mutt" -msgstr "labrador cruzado" +msgid "Labrador mutt" +msgstr "Labrador cruza" -#. ~ Description for labrador mutt +#. ~ Description for Labrador mutt #: lang/json/MONSTER_from_json.py msgid "" "This once average Labrador mixed breed dog has clearly gone feral. You can " @@ -47282,10 +47483,10 @@ msgstr "" "mirada hambrienta en sus ojos. No tenés duda de que te mordería si pudiera." #: lang/json/MONSTER_from_json.py -msgid "labrador puppy" -msgstr "cachorro labrador" +msgid "Labrador puppy" +msgstr "cachorro Labrador" -#. ~ Description for labrador puppy +#. ~ Description for Labrador puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Labrador puppy. Much safer to tame than adult " @@ -47301,7 +47502,7 @@ msgstr "bulldog" #. ~ Description for bulldog #: lang/json/MONSTER_from_json.py msgid "" -"The American Bulldog is a hardy, well built dog, that seems suited for " +"The American bulldog is a hardy, well built dog, that seems suited for " "surviving the apocalypse." msgstr "" "El bulldog americano es un perro fuerte de buena complexión, que parece " @@ -47314,7 +47515,7 @@ msgstr "cachorro bulldog" #. ~ Description for bulldog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless American Bulldog puppy. Much safer to tame than " +"An adorable, defenseless American bulldog puppy. Much safer to tame than " "adult counterparts." msgstr "" "Es un cachorrito de bulldog americano, adorable e indefenso. Mucho más fácil" @@ -47327,13 +47528,13 @@ msgstr "pit bull mezcla" #. ~ Description for pit bull mix #: lang/json/MONSTER_from_json.py msgid "" -"The oft-misunderstood Pit Bull is not actually a single breed but a label " -"for several such as American Pit Bull Terrier and American Staffordshire " -"Terrier. Average abilities and well-known for their 'lock jaw' which isn't " -"real but their incredible determination is." +"The oft-misunderstood pit bull is not actually a single breed but a label " +"for several such as the American pit bull terrier and American Staffordshire" +" terrier. Average abilities and well-known for their 'lock jaw' which isn't" +" real but their incredible determination is." msgstr "" "El pit bull en realidad no es una sola raza, como se cree, si no el nombre " -"que se le da a varias como el pit bull terrier americano y el staffordshire " +"que se le da a varias como el pit bull terrier americano y el Staffordshire " "terrier americano. Es bastante habilidoso y es famoso por poder trabar su " "mandíbula, que no es verdad pero su increíble determinación sí lo es." @@ -47344,7 +47545,7 @@ msgstr "cachorro pit bull" #. ~ Description for pit bull puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Pit Bull puppy. Much safer to tame than adult " +"An adorable, defenseless pit bull puppy. Much safer to tame than adult " "counterparts." msgstr "" "Es un cachorrito de pit bull, adorable e indefenso. Mucho más fácil de " @@ -47357,7 +47558,7 @@ msgstr "beagle" #. ~ Description for beagle #: lang/json/MONSTER_from_json.py msgid "" -"An adorable Beagle that has managed to survive the apocalypse. Being agile " +"An adorable beagle that has managed to survive the apocalypse. Being agile " "and small, they are difficult to shoot at. Generally attacks in packs." msgstr "" "Es un adorable beagle que ha logrado sobrevivir en el apocalipsis. Siendo " @@ -47371,7 +47572,7 @@ msgstr "cachorro beagle" #. ~ Description for beagle puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Beagle puppy. Much safer to tame than adult " +"An adorable, defenseless beagle puppy. Much safer to tame than adult " "counterparts." msgstr "" "Es un cachorrito de beagle, adorable e indefenso. Mucho más fácil de " @@ -47385,7 +47586,7 @@ msgstr "border collie" #: lang/json/MONSTER_from_json.py msgid "" "An athletic and hyperactive dog that loves to herd animals and jump, the " -"Border Collie is an agile attacker. Although they can be easy to train, " +"border collie is an agile attacker. Although they can be easy to train, " "they don't work well in packs." msgstr "" "Es un perro atlético e hiperactivo que ama arrear animales y saltar, el " @@ -47399,7 +47600,7 @@ msgstr "cachorro border collie" #. ~ Description for border collie puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Border Collie puppy. Much safer to tame than adult" +"An adorable, defenseless border collie puppy. Much safer to tame than adult" " counterparts." msgstr "" "Es un cachorrito de border collie, adorable e indefenso. Mucho más fácil de " @@ -47412,7 +47613,7 @@ msgstr "mastín boxer" #. ~ Description for boxer mastiff #: lang/json/MONSTER_from_json.py msgid "" -"An ordinary breed full of affection, the Boxer Mastiff doesn't otherwise " +"An ordinary breed full of affection, the boxer mastiff doesn't otherwise " "stand out amongst other dogs with its capabilities." msgstr "" "Es una raza común llena de cariño, el mastín boxer no sobresale entre los " @@ -47425,17 +47626,17 @@ msgstr "cachorro boxer" #. ~ Description for boxer puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Boxer puppy. Much safer to tame than adult " +"An adorable, defenseless boxer puppy. Much safer to tame than adult " "counterparts." msgstr "" "Es un cachorrito de boxer, adorable e indefenso. Mucho más fácil de " "domesticar que uno adulto." #: lang/json/MONSTER_from_json.py -msgid "chihuahua" -msgstr "chihuahua" +msgid "Chihuahua" +msgstr "Chihuahua" -#. ~ Description for chihuahua +#. ~ Description for Chihuahua #: lang/json/MONSTER_from_json.py msgid "" "It's a tiny Chihuahua. How it has managed to survive is a miracle; although" @@ -47445,10 +47646,10 @@ msgstr "" " naturaleza agresiva y su pequeño tamaño pueden haberle servido." #: lang/json/MONSTER_from_json.py -msgid "chihuahua puppy" -msgstr "cachorro chihuahua" +msgid "Chihuahua puppy" +msgstr "cachorro Chihuahua" -#. ~ Description for chihuahua puppy +#. ~ Description for Chihuahua puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Chihuahua puppy. Much safer to tame than adult " @@ -47459,7 +47660,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "dachshund" -msgstr "dachshund" +msgstr "perro salchicha" #. ~ Description for dachshund #: lang/json/MONSTER_from_json.py @@ -47473,22 +47674,22 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "dachshund puppy" -msgstr "cachorro dachshund" +msgstr "cachorro perro salchicha" #. ~ Description for dachshund puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Dachshund puppy. Much safer to tame than adult " +"An adorable, defenseless dachshund puppy. Much safer to tame than adult " "counterparts." msgstr "" "Es un cachorrito de perro salchicha, adorable e indefenso. Mucho más fácil " "de domesticar que uno adulto." #: lang/json/MONSTER_from_json.py -msgid "german shepherd" +msgid "German shepherd" msgstr "pastor alemán" -#. ~ Description for german shepherd +#. ~ Description for German shepherd #: lang/json/MONSTER_from_json.py msgid "" "The original K-9 breed. An easy to train and great attack dog that will " @@ -47499,23 +47700,23 @@ msgstr "" "bien en manada." #: lang/json/MONSTER_from_json.py -msgid "german shepherd puppy" +msgid "German shepherd puppy" msgstr "cachorro pastor alemán" -#. ~ Description for german shepherd puppy +#. ~ Description for German shepherd puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless German Shepherd puppy. Much safer to tame than " +"An adorable, defenseless German shepherd puppy. Much safer to tame than " "adult counterparts." msgstr "" "Es un cachorrito de pastor alemán, adorable e indefenso. Mucho más fácil de " "domesticar que uno adulto." #: lang/json/MONSTER_from_json.py -msgid "great pyrenees" -msgstr "gran pirineo" +msgid "Great Pyrenees" +msgstr "Gran Pirineo" -#. ~ Description for great pyrenees +#. ~ Description for Great Pyrenees #: lang/json/MONSTER_from_json.py msgid "" "A large and powerful breed, the Great Pyrenees has a beautiful, thick white " @@ -47528,10 +47729,10 @@ msgstr "" "muertos vivientes." #: lang/json/MONSTER_from_json.py -msgid "great pyrenees puppy" -msgstr "cachorro gran pirineo" +msgid "Great Pyrenees puppy" +msgstr "cachorro Gran Pirineo" -#. ~ Description for great pyrenees puppy +#. ~ Description for Great Pyrenees puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Great Pyrenees puppy. Much safer to tame than " @@ -47547,13 +47748,13 @@ msgstr "rottweiler" #. ~ Description for rottweiler #: lang/json/MONSTER_from_json.py msgid "" -"Terrifying breed to face feral, as the Rottweiler breed is descended from " +"Terrifying breed to face feral, as the rottweiler breed is descended from " "Roman legion mastiffs. Robust and vicious, quite capable of mauling a human" " to death." msgstr "" -"Es una raza terrible para enfrentar cuando es salvaje, el rottweiler " -"desciende del mastín de la legión romana. Robusto y despiadado, es bastante " -"capaz de destrozar a un humano." +"Una raza terrible de enfrentar cuando es salvaje, el rottweiler desciende " +"del mastín de la legión romana. Robusto y despiadado, es bastante capaz de " +"destrozar a un humano." #: lang/json/MONSTER_from_json.py msgid "rottweiler puppy" @@ -47562,7 +47763,7 @@ msgstr "cachorro rottweiler" #. ~ Description for rottweiler puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Rottweiler puppy. Much safer to tame than adult " +"An adorable, defenseless rottweiler puppy. Much safer to tame than adult " "counterparts." msgstr "" "Es un cachorrito de rottweiler, adorable e indefenso. Mucho más fácil de " @@ -47575,8 +47776,8 @@ msgstr "perro pastor" #. ~ Description for cattle dog #: lang/json/MONSTER_from_json.py msgid "" -"An agile and sturdy breed that is welcome on any farm, the Australian Cattle" -" Dog is adept at leaping fences and herding livestock." +"An agile and sturdy breed that is welcome on any farm, the Australian cattle" +" dog is adept at leaping fences and herding livestock." msgstr "" "Es una raza resistente y ágil, bienvenida en cualquier granja. El perro " "pastor australiano es capaz de saltar sobre cercos y arrear ganado." @@ -47588,7 +47789,7 @@ msgstr "cachorro perro pastor" #. ~ Description for cattle dog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Australian Cattle Dog puppy. Much safer to tame " +"An adorable, defenseless Australian cattle dog puppy. Much safer to tame " "than adult counterparts." msgstr "" "Es un cachorrito de perro pastor australiano, adorable e indefenso. Mucho " @@ -47606,7 +47807,7 @@ msgid "" "A small omnivorous canine with an almost cat-like manner. It is a solitary " "hunter, and one of the only canids able to climb trees." msgstr "" -"Un pequeño canino omnívoro con maneras casi de gato. Es un cazador " +"Es un pequeño canino omnívoro con maneras casi de gato. Es un cazador " "solitario, y uno de los únicos cánidos capaz de trepar árboles" #. ~ Description for fox @@ -48584,10 +48785,10 @@ msgid "" "cute, even though it's trying to kill you. Its outer layer is made of " "reinforced plastic. It looks to be high tech, and in good shape." msgstr "" -"Un conejo bípedo animatrónico, casi del doble de tu tamaño. En realidad, es " -"bastante lindo, incluso aunque parezca que te quiere matar. Su capa exterior" -" está hecha de plástico reforzado. Parece de alta tecnología y en buen " -"estado." +"Es un conejo bípedo animatrónico, casi del doble de tu tamaño. En realidad, " +"es bastante lindo, incluso aunque parezca que te quiere matar. Su capa " +"exterior está hecha de plástico reforzado. Parece de alta tecnología y en " +"buen estado." #: lang/json/MONSTER_from_json.py msgid "old animatronic bunny" @@ -48646,8 +48847,8 @@ msgid "" "microphone, and wearing a top hat. Though it is a robot, it stinks like " "death. It looks heavily worn and degraded." msgstr "" -"Un oso bípedo animatrónico, casi del doble de tu tamaño. Tiene agarrado un " -"micrófono y una galera puesta. Aunque es un robot, tiene una baranda " +"Es un oso bípedo animatrónico, casi del doble de tu tamaño. Tiene agarrado " +"un micrófono y una galera puesta. Aunque es un robot, tiene una baranda " "apestosa. Parece estar muy gastado y deteriorado." #: lang/json/MONSTER_from_json.py @@ -48719,9 +48920,9 @@ msgid "" "cute if it wasn't charging you down right now. Though it is a robot, it " "stinks like death." msgstr "" -"Una tamia bípeda animatrónica, casi del doble de tu tamaño. Podría parecerte" -" linda si no fuera porque viene dispuestas a atacarte. Aunque es un robot, " -"tiene una baranda apestosa." +"Es una tamia bípeda animatrónica, casi del doble de tu tamaño. Podría " +"parecerte linda si no fuera porque viene dispuestas a atacarte. Aunque es un" +" robot, tiene una baranda apestosa." #: lang/json/MONSTER_from_json.py msgid "animatronic cow" @@ -48734,8 +48935,8 @@ msgid "" " making it emit shrill, eerie moos. Though it is a robot, it stinks like " "death." msgstr "" -"Una vaca bípeda animatrónica, casi del doble de tu tamaño. Su dispositivo de" -" voz está roto, lo que la hace emitir unos mugidos chillantes y " +"Es una vaca bípeda animatrónica, casi del doble de tu tamaño. Su dispositivo" +" de voz está roto, lo que la hace emitir unos mugidos chillantes y " "estremecedores. Aunque es un robot, tiene una baranda apestosa." #: lang/json/MONSTER_from_json.py @@ -48789,7 +48990,7 @@ msgid "" "A bipedal animatronic pig, nearly twice your size. Little piggy go home, " "little piggy no no. Though it is a robot, it stinks like death." msgstr "" -"Un chancho bípedo animatrónico, casi del doble de tu tamaño. Chanchito, " +"Es un chancho bípedo animatrónico, casi del doble de tu tamaño. Chanchito, " "andate a tu casa, chanchito, no, no. Aunque es un robot, tiene una baranda " "apestosa." @@ -48805,7 +49006,7 @@ msgid "" "A bipedal animatronic sheep, nearly twice your size. Its wool is mangy and " "gross. Though it is a robot, it stinks like death." msgstr "" -"Una oveja bípeda animatrónica, casi del doble de tu tamaño. Su lana está " +"Es una oveja bípeda animatrónica, casi del doble de tu tamaño. Su lana está " "sarnosa y desagradable. Aunque es un robot, tiene una baranda apestosa." #: lang/json/MONSTER_from_json.py @@ -48819,9 +49020,9 @@ msgid "" "sharp teeth, you hope it does not like nuts. Though it is a robot, it " "stinks like death." msgstr "" -"Una ardilla bípeda animatrónica, casi del doble de tu tamaño. A juzgar por " -"sus afilados dientes, parece que no le interesan las nueces. Aunque es un " -"robot, tiene una baranda apestosa." +"Es una ardilla bípeda animatrónica, casi del doble de tu tamaño. A juzgar " +"por sus afilados dientes, parece que no le interesan las nueces. Aunque es " +"un robot, tiene una baranda apestosa." #: lang/json/MONSTER_from_json.py msgid "animatronic child" @@ -48897,6 +49098,19 @@ msgstr "secuaz de esqueletal" msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "Es un esqueleto menor, criado por el triste sonido de una trompeta." +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "oso Smoky" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "" +"Una cáscara humeante es todo lo que queda de lo que debe haber sido un " +"presuntuoso oso. Sus ojos negros te contemplan con malicia... y con hambre." + #: lang/json/MONSTER_from_json.py msgid "Compsognathus" msgstr "Compsognathus" @@ -48968,7 +49182,7 @@ msgid "" "A massive rhino-like dinosaur with a bony crest from which three large horns" " emerge." msgstr "" -"Un dinosaurio enorme con similitudes al rinoceronte, con una cresta de " +"Es un dinosaurio enorme con similitudes al rinoceronte, con una cresta de " "huesos de la que le salen tres cuernos grandes." #: lang/json/MONSTER_from_json.py @@ -48979,7 +49193,8 @@ msgstr "Stegosaurus" #: lang/json/MONSTER_from_json.py msgid "A large quadruped dinosaur with plates on its back, and a spiked tail." msgstr "" -"Un gran dinosaurio cuadrúpedo con placas en su espalda, y una cola con púas." +"Es un gran dinosaurio cuadrúpedo con placas en su espalda, y una cola con " +"púas." #: lang/json/MONSTER_from_json.py msgid "Ankylosaurus" @@ -49004,8 +49219,8 @@ msgid "" "A large predatory bipedal dinosaur, with tiger-like stripes on its broad " "back." msgstr "" -"Un gran dinosaurio bípedo depredador, con rayas como las de un tigre en su " -"ancha espalda." +"Es un gran dinosaurio bípedo depredador, con rayas como las de un tigre en " +"su ancha espalda." #: lang/json/MONSTER_from_json.py msgid "Eoraptor" @@ -49043,7 +49258,7 @@ msgid "" "A medium-sized bipedal dinosaur covered with feathers. At the end of each " "foot is a large sickle-like claw." msgstr "" -"Un dinosaurio bípedo de tamaño medio cubierto con plumas. En la punta de " +"Es un dinosaurio bípedo de tamaño medio cubierto con plumas. En la punta de " "cada pata tiene una garra grande como una hoz." #: lang/json/MONSTER_from_json.py @@ -49056,7 +49271,7 @@ msgid "" "A large bipedal dinosaur with feathered arms, a long tail, and scythe-like " "claws." msgstr "" -"Un gran dinosaurio bípedo con plumas en las patas superiores, una cola " +"Es un gran dinosaurio bípedo con plumas en las patas superiores, una cola " "larga, y garras como hoces." #: lang/json/MONSTER_from_json.py @@ -51153,7 +51368,7 @@ msgstr[1] "máscaras ignífugas de supervivencia XL" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from" -" heat, smoke, teargas, and shrapnel. It must be prepared before use." +" heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" "Es una máscara de gas aislada con nomex, que cubre la cara y los ojos, sin " "importar las mutaciones que tengas. Provee excelente protección contra el " @@ -52171,6 +52386,46 @@ msgstr "" "Son varios paneles solares de quántum portátiles desplegados, listos para " "generar energía para algún sistema de recarga." +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "casco antidisturbios" +msgstr[1] "cascos antidisturbios" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "Levantás tu visor." + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "" +"Es un casco con una protección plástica que cubre la cara entera. Hay que " +"usarlo para levantar el visor protector." + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "casco antidisturbio (visor levantado)" +msgstr[1] "cascos antidisturbio (visor levantado)" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "Bajás el visor." + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." +msgstr "" +"Es un casco antidisturbio con el cobertor facial levantado. Hay que usarlo " +"para bajar el visor." + #: lang/json/TOOL_from_json.py msgid "integrated toolset" msgid_plural "integrated toolsets" @@ -54909,7 +55164,7 @@ msgid "" "for bait, but can't get out. Not humane, prohibited by law, but there are " "no cops left to care." msgstr "" -"Es una trampa improvisada para peces , hecha con botellas plásticas. Es " +"Es una trampa improvisada para peces, hecha con botellas plásticas. Es " "simple, incluso diríamos primitiva, pero fácil de usar. El principio de " "acción: el pez se mete buscando la carnada, pero no puede salir. No es muy " "humano, está prohibido por ley, pero ya no hay policías de los que " @@ -57831,7 +58086,7 @@ msgstr "" "inmediato para ataques de asma o inhalación de humo, y puede brindar una " "pequeña inyección de energía." -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" msgstr[0] "soldadora de mano" @@ -59773,17 +60028,6 @@ msgstr "" "Parece ser una especie de Forma de Vida Genética y Sistema Operativo, " "puestos en una papa." -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "" -"Es un gato hidráulico compacto, usado para levantar vehículos. Está equipado" -" con tecnología patentada por Aperture Science(tm) que permite levantar " -"motores luego de teletransportarse a sí mismo debajo." - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" @@ -61270,6 +61514,18 @@ msgid_plural "autonomous surgical razors" msgstr[0] "navaja quirúrgica autónoma" msgstr[1] "navajas quirúrgicas autónomas" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While" +" activated, they will continously drain power to make automated precise cuts" +" but you will be unable to wield anything." +msgstr "" +"Es un sistema de navajas de grado quirúrgico que se implanta en los dedos " +"del usuario. Cuando están activadas, usan energía para realizar cortes " +"precisos automáticos, aunque no podés empuñar nada, claro." + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -62927,8 +63183,8 @@ msgid "" "A malfunctioning bionic which occasionally discharges electricity through " "your body, causing pain and brief paralysis but no damage." msgstr "" -"Un biónico que funciona mal y ocasionalmente descarga electricidad por tu " -"cuerpo, lo que te causa dolor y una breve parálisis, pero no te causa daña." +"Es un biónico que funciona mal y ocasionalmente descarga electricidad por tu" +" cuerpo, lo que te causa dolor y una breve parálisis, pero no te causa daña." #: lang/json/bionic_from_json.py msgid "Electrical Drain" @@ -62940,7 +63196,7 @@ msgid "" "A malfunctioning bionic. It doesn't perform any useful function, but will " "occasionally draw power from your batteries." msgstr "" -"Un biónico que funciona mal. No tiene ninguna función útil, pero " +"Es un biónico que funciona mal. No tiene ninguna función útil, pero " "ocasionalmente te va a drenar energía de tus baterías." #: lang/json/bionic_from_json.py @@ -63763,6 +64019,12 @@ msgstr "" "activos, los amortiguadores hidráulicos evitan que tu cuerpo reciba daño de " "impactos severos, pero tu movimiento queda perjudicado." +#: lang/json/bionic_from_json.py lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "Generador de Sobrecarga Iónica" +msgstr[1] "Generadores de Sobrecarga Iónica" + #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" msgstr "Sistema de Regeneración Sináptica" @@ -63780,13 +64042,6 @@ msgstr "" "activado, no vas a sentir que te falta dormir; y si ya estás cansado por " "falta de sueño, acelerará la velocidad de recuperación mientras dormís." -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "Generador de Sobrecarga Iónica" -msgstr[1] "Generadores de Sobrecarga Iónica" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "Navajas Quirúrgicas Autónomas" @@ -65983,7 +66238,7 @@ msgstr "Intox. por Comida" #. ~ Description of effect 'Food Poisoning'. #: lang/json/effects_from_json.py msgid "Your stomach is extremely upset, and you are quite nauseous." -msgstr "Tu estómago se siente mal, y tenés náuseas continuas." +msgstr "Tu estómago se siente mal y tenés náuseas continuamente." #. ~ Miss message for effect(s) 'Food Poisoning'. #: lang/json/effects_from_json.py @@ -66072,12 +66327,12 @@ msgstr "Apuntado con láser" msgid "A laser sight is targeting you!" msgstr "¡Te está apuntando una mira láser!" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" msgstr "Humo" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "Inhalaste mucha cantidad de humo espeso." @@ -66986,11 +67241,11 @@ msgstr "Gas relajante" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" -"You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort." +"You are thoroughly relaxed and don't feel like moving. Fighting? Too much " +"effort." msgstr "" -"Fuerza - 3; Destreza - 3; Inteligencia - 2; Percepción - 4\n" -"Estás completamente relajado y no tenés ganas de moverte. ¿Pelear? Demasiado esfuerzo." +"Estás completamente relajado y no tenés ganas de moverte. ¿Pelear? Demasiado" +" esfuerzo." #. ~ Apply message for effect(s) 'Relaxation gas'. #: lang/json/effects_from_json.py @@ -67338,11 +67593,12 @@ msgstr "Casi recuperado" msgid "This damaged limb is slowly regaining its functions." msgstr "Este miembro dañado está recuperando sus funciones lentamente." -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" -msgstr "Discapacitado" +msgstr "Desactivado" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "" @@ -70202,8 +70458,7 @@ msgstr "" "arma tienen una gran probabilidad de no romperse." #: lang/json/gun_from_json.py lang/json/gun_from_json.py -#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py -#: lang/json/gunmod_from_json.py src/item.cpp +#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" msgid "pistol" msgstr "pistola" @@ -70617,9 +70872,9 @@ msgid "" "type of spear using a hand-pump pressure system. While highly effective " "when used underwater, it is nearly useless on dry land." msgstr "" -"Una herramienta sofisticada de pesca submarina, diseñada para disparar un " -"tipo especial de lanza usando un sistema de presión bombeada a mano. Aunque " -"es muy efectiva debajo del agua, es casi inútil usarla en tierra." +"Es una herramienta sofisticada de pesca submarina, diseñada para disparar un" +" tipo especial de lanza usando un sistema de presión bombeada a mano. Aunque" +" es muy efectiva debajo del agua, es casi inútil usarla en tierra." #: lang/json/gun_from_json.py msgid "combination gun" @@ -71188,10 +71443,10 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" "La plataforma bullpup L523 de Leadworks SRL utiliza la popular bala 5.56 en " "múltiples aplicaciones, y está diseñada para cambiar de manera segura, " @@ -72044,7 +72299,7 @@ msgstr[1] "revólveres LeMat" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those" " who wander the \"Earth-that-was\"." msgstr "" @@ -74680,9 +74935,9 @@ msgid "" "gunpowder. While it has an extremely short range, it gives a powerful edge " "in close combat." msgstr "" -"Una antigua lanza china, con un pequeño caño agregado para cargarle pólvora." -" Aunque tiene un alcance extremadamente corto, aporta una ventaja poderosa " -"en el combate de cerca." +"Es una antigua lanza china, con un pequeño caño agregado para cargarle " +"pólvora. Aunque tiene un alcance extremadamente corto, aporta una ventaja " +"poderosa en el combate de cerca." #: lang/json/gun_from_json.py msgctxt "gun_type_type" @@ -76055,6 +76310,39 @@ msgstr "" ".40, .44 o .45, la convierte en una 9x19mm. Esta conversión reduce un poco " "la precisión." +#: lang/json/gunmod_from_json.py +msgid "belt feed adapter" +msgid_plural "belt feed adapters" +msgstr[0] "adaptador de cinta cargadora" +msgstr[1] "adaptadores de cinta cargadora" + +#: lang/json/gunmod_from_json.py +msgid "" +"A kit providing the necessary parts for permanently converting a firearm " +"from magazine to belt-feed. Guaranteed to void your warranty." +msgstr "" +"Es un equipo que provee las partes necesarias para convertir de manera " +"permanente la alimentación por cargador de un arma de fuego, al sistema de " +"cinta cargadora. Se garantiza la nulidad de la garantía." + +#: lang/json/gunmod_from_json.py +msgid "magazine" +msgstr "cargador" + +#: lang/json/gunmod_from_json.py +msgid "tuned mechanism" +msgid_plural "tuned mechanisms" +msgstr[0] "mecanismo calibrado" +msgstr[1] "mecanismos calibrados" + +#: lang/json/gunmod_from_json.py +msgid "" +"A set of finely tuned internal components which increase the precision and " +"reliably of a firearm." +msgstr "" +"Un conjunto de componentes internos calibrados que incrementan la precisión " +"y fiabilidad de un arma de fuego." + #: lang/json/gunmod_from_json.py msgid "arrow rest" msgid_plural "arrow rests" @@ -76205,11 +76493,10 @@ msgstr[1] "extensores de cañón LW" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." +"firearm, contributing to both accuracy and damage." msgstr "" "Es un cañón Leadworks más largo que incrementa la velocidad inicial del arma" -" de fuego, contribuyendo tanto a la precisión como al daño, pero reduciendo " -"su la velocidad para apuntar." +" de fuego, contribuyendo tanto a la precisión como al daño." #: lang/json/gunmod_from_json.py msgid "LW shortened barrel" @@ -76236,11 +76523,10 @@ msgstr[1] "cañones reforzados LW" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." +"shooting. Increases damage output and weapon range." msgstr "" "Es un cañón reforzado integrado de Leadworks, especialmente diseñado para el" -" disparo constante. Reduce la precisión pero incrementa el daño y el alcance" -" del arma." +" disparo constante. Incrementa el daño y el alcance del arma." #: lang/json/gunmod_from_json.py msgid "lightweight replacement furniture" @@ -76269,11 +76555,10 @@ msgstr[1] "mangos ergonómicos" #: lang/json/gunmod_from_json.py msgid "" -"A set of ergonomic replacement furniture for a firearm improving handling " -"and accuracy." +"A set of ergonomic replacement furniture for a firearm improving handling." msgstr "" "Es un conjunto de accesorios ergonómicos para las armas de fuego, que mejora" -" su manejo y precisión." +" su manejo." #: lang/json/gunmod_from_json.py msgid "beam scatterer" @@ -76329,25 +76614,6 @@ msgstr "" msgid "emitter" msgstr "emisor" -#: lang/json/gunmod_from_json.py -msgid "belt feed adapter" -msgid_plural "belt feed adapters" -msgstr[0] "adaptador de cinta cargadora" -msgstr[1] "adaptadores de cinta cargadora" - -#: lang/json/gunmod_from_json.py -msgid "" -"A kit providing the necessary parts for permanently converting a firearm " -"from magazine to belt-feed. Guaranteed to void your warranty." -msgstr "" -"Es un equipo que provee las partes necesarias para convertir de manera " -"permanente la alimentación por cargador de un arma de fuego, al sistema de " -"cinta cargadora. Se garantiza la nulidad de la garantía." - -#: lang/json/gunmod_from_json.py -msgid "magazine" -msgstr "cargador" - #: lang/json/gunmod_from_json.py msgid "leadworks magazine adapter" msgid_plural "leadworks magazine adapters" @@ -76371,24 +76637,11 @@ msgstr[1] "gatillos balanceados" #: lang/json/gunmod_from_json.py msgid "" -"A precision weighted trigger assembly that improves a firearm's accuracy." +"A precision weighted trigger assembly that slightly improves a firearm's " +"accuracy." msgstr "" -"Un gatillo de precisión balanceado que mejora la precisión del arma de " -"fuego." - -#: lang/json/gunmod_from_json.py -msgid "tuned mechanism" -msgid_plural "tuned mechanisms" -msgstr[0] "mecanismo calibrado" -msgstr[1] "mecanismos calibrados" - -#: lang/json/gunmod_from_json.py -msgid "" -"A set of finely tuned internal components which increase the precision and " -"reliably of a firearm." -msgstr "" -"Un conjunto de componentes internos calibrados que incrementan la precisión " -"y fiabilidad de un arma de fuego." +"Es un gatillo de precisión balanceado que mejora levemente la precisión del " +"arma de fuego." #: lang/json/gunmod_from_json.py msgid "firearm waterproofing" @@ -76583,11 +76836,11 @@ msgstr[1] "estabilizadores giroscópicos" #: lang/json/gunmod_from_json.py msgid "" "An advanced unit that straps onto the side of your firearm and reduces " -"vibration, greatly reducing recoil and increasing accuracy." +"vibration, greatly reducing recoil and slightly increasing accuracy." msgstr "" "Es una unidad avanzada que se ata con una correa al costado del arma de " "fuego y reduce la vibración, lo que reduce mucho el retroceso e incrementa " -"la precisión." +"levemente la precisión." #: lang/json/gunmod_from_json.py msgid "LW gyroscopic stabilizer" @@ -78317,12 +78570,12 @@ msgstr "" msgid "" "Note that while several ammo types exist for a given caliber and magazine " "type, you can't mix and match these types into a single magazine. You can't " -"for example load 9x19mm JHP and 9x19 FMJ ammo into the same magazine, since " -"a magazine always requires identical rounds to be loaded in it." +"for example load 9x19mm JHP and 9x19mm FMJ ammo into the same magazine, " +"since a magazine always requires identical rounds to be loaded in it." msgstr "" "Fijate que aunque hay varios tipos de munición para cada calibre y clase de " "cargador, no podés mezclar esos tipos en un mismo cargador. Por ejemplo, no " -"podés cargar munición 9x19mm JHP y 9x19 FMJ en el mismo cargador, porque " +"podés cargar munición 9x19mm JHP y 9x19mm FMJ en el mismo cargador, porque " "siempre requiere que esté cargado con balas idénticas." #: lang/json/help_from_json.py @@ -78642,7 +78895,7 @@ msgstr "" #: lang/json/help_from_json.py msgid "<1>: List of item types and data" -msgstr "<1>: Lista de clases de objetos e información" +msgstr "<1>: Clases de objetos e información" #: lang/json/help_from_json.py #, no-python-format @@ -78719,7 +78972,7 @@ msgstr "" #: lang/json/help_from_json.py msgid "<2>: Description of map symbols" -msgstr "<2>: Descripción de los símbolos del mapa" +msgstr "<2>: Descripción de símbolos del mapa" #: lang/json/help_from_json.py msgid "MAP SYMBOLS:" @@ -78872,7 +79125,7 @@ msgstr "" #: lang/json/help_from_json.py msgid "<3>: Description of gun types" -msgstr "<3>: Descripción de las clases de armas" +msgstr "<3>: Descripción de clases de armas" #: lang/json/help_from_json.py msgid "" @@ -78958,7 +79211,7 @@ msgstr "" #: lang/json/help_from_json.py msgid "<4>: FAQ (contains spoilers!)" -msgstr "<4>: Preguntas frecuentes (¡tiene spoilers!)" +msgstr "<4>: Preguntas frecuentes (¡spoilers!)" #: lang/json/help_from_json.py msgid "" @@ -79215,7 +79468,7 @@ msgstr "Beber" #: lang/json/item_action_from_json.py msgid "Take" -msgstr "Agarrar" +msgstr "Tomar" #: lang/json/item_action_from_json.py msgid "Use" @@ -79257,6 +79510,10 @@ msgstr "Masticar" msgid "Clear rubble" msgstr "Limpiar escombro" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "Cara o cruz" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "Esnifar cocaína" @@ -79285,6 +79542,11 @@ msgstr "Soplar" msgid "Make it talk" msgstr "Hacerlo hablar" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "Fumar" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "Sacar" @@ -79326,6 +79588,10 @@ msgstr "Inhalar" msgid "Drill" msgstr "Agujerear" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "Preguntar" + #: lang/json/item_action_from_json.py lang/json/item_action_from_json.py #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Read" @@ -79368,6 +79634,7 @@ msgid "Squeeze" msgstr "Apretar" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" msgstr "Poner play" @@ -79405,6 +79672,11 @@ msgstr "Afeitarse" msgid "Siphon" msgstr "Chupar" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "Fumar" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "Escribir algo" @@ -79457,6 +79729,11 @@ msgstr "Guardar/descargar munición" msgid "Make some noise" msgstr "Hacer un poco de ruido" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "Poner play" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "Activar/desactivar" @@ -80372,11 +80649,11 @@ msgstr "Desplazarse abajo" #: lang/json/keybinding_from_json.py msgid "Pan up" -msgstr "Panear arriba" +msgstr "Mover arriba" #: lang/json/keybinding_from_json.py msgid "Pan down" -msgstr "Panear abajo" +msgstr "Mover abajo" #: lang/json/keybinding_from_json.py src/construction.cpp src/veh_interact.cpp msgid "Filter" @@ -80392,27 +80669,27 @@ msgstr "Mostrar descripción de estilo de cuerpo a cuerpo" #: lang/json/keybinding_from_json.py msgid "Pan left" -msgstr "Panear izquierda" +msgstr "Mover izquierda" #: lang/json/keybinding_from_json.py msgid "Pan right" -msgstr "Panear derecha" +msgstr "Mover derecha" #: lang/json/keybinding_from_json.py msgid "Pan up-left" -msgstr "Panear izquierda-arriba" +msgstr "Mover izquierda-arriba" #: lang/json/keybinding_from_json.py msgid "Pan up-right" -msgstr "Panear derecha-arriba" +msgstr "Mover derecha-arriba" #: lang/json/keybinding_from_json.py msgid "Pan down-left" -msgstr "Panear izquierda-abajo" +msgstr "Mover izquierda-abajo" #: lang/json/keybinding_from_json.py msgid "Pan down-right" -msgstr "Panear derecha-abajo" +msgstr "Mover derecha-abajo" #: lang/json/keybinding_from_json.py src/inventory_ui.cpp msgid "Page up" @@ -80514,10 +80791,18 @@ msgstr "Cambiar lado donde está la armadura" msgid "Assign invlets to armor" msgstr "Asignar invlets a armadura" +#: lang/json/keybinding_from_json.py +msgid "Sort armor into natural layer order" +msgstr "Ordenar ropa de manera lógica" + #: lang/json/keybinding_from_json.py msgid "Equip armor from inventory" msgstr "Ponerse armadura del inventario" +#: lang/json/keybinding_from_json.py +msgid "Equip armor from inventory at this position" +msgstr "Ponerse ropa del inventario en este lugar" + #: lang/json/keybinding_from_json.py msgid "Unequip selected armor" msgstr "Sacarse armadura seleccionada" @@ -81363,6 +81648,22 @@ msgstr "Disminuir prioridad" msgid "Change sort order" msgstr "Cambiar orden" +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "Agregar a lista negra de modo seguro" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "Quitar de lista negra de modo seguro" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "mirar alrededor" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "fuego" + #: lang/json/keybinding_from_json.py msgid "List items and monsters" msgstr "Mostrar objetos y monstruos" @@ -81545,13 +81846,11 @@ msgstr "Quitar color usado" msgid "Load color template" msgstr "Cargar plantilla de color" -#: lang/json/keybinding_from_json.py src/craft_command.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/veh_interact.cpp msgid "Yes" msgstr "Sí" -#: lang/json/keybinding_from_json.py src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/options.cpp src/veh_interact.cpp msgid "No" msgstr "No" @@ -81561,7 +81860,7 @@ msgstr "Ignorar otras distracciones y terminar" #: lang/json/keybinding_from_json.py msgid "Cancel popup" -msgstr "" +msgstr "Cancelar" #: lang/json/keybinding_from_json.py src/pickup.cpp src/vehicle_use.cpp msgid "Control multiple electronics" @@ -81701,6 +82000,11 @@ msgstr "Banco Computarizado Consolidad de Hacienda" msgid "Open Vault" msgstr "Abrir Bóveda" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "Banco Computarizado Consolidado de Hacienda de Alta Seguridad" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -81915,22 +82219,22 @@ msgstr "MORA AZUL" #. ~ Sign #: lang/json/mapgen_from_json.py msgid " Community Garden" -msgstr "Jardín Comunitario de" +msgstr "Jardín Comunitario de " #. ~ Sign #: lang/json/mapgen_from_json.py msgid " Community Garden. Grow your own food!" -msgstr "Jardín Comunitario de. ¡Cultivá tu propia comida!" +msgstr "Jardín Comunitario de . ¡Cultivá tu propia comida!" #. ~ Sign #: lang/json/mapgen_from_json.py msgid " Community Garden, sign up for your own plot!" -msgstr "Jardín Comunitario de, ¡solicitá tu propia parcela!" +msgstr "Jardín Comunitario de , ¡solicitá tu propia parcela!" #. ~ Sign #: lang/json/mapgen_from_json.py msgid " Community Garden, grow your own vegtable!" -msgstr "Jardín Comunitario de. ¡Cultivá tus propias verduras!" +msgstr "Jardín Comunitario de . ¡Cultivá tus propias verduras!" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -82403,7 +82707,8 @@ msgid "Emergency Message" msgstr "Mensaje de Emergencia" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py lang/json/mapgen_from_json.py +#: lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "Desactivar Energía Externa" @@ -82466,7 +82771,6 @@ msgstr "ERROR: DESCONECTAR SEÑAL" #. ~ Computer option #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py -#: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "Instalar Modificación de Repetidor" @@ -83889,7 +84193,8 @@ msgstr "Fijate en una biblioteca." msgid "Got that book for me?" msgstr "¿Me conseguiste el libro?" -#: lang/json/mission_def_from_json.py src/npctalk.cpp src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Thanks!" msgstr "¡Gracias!" @@ -84814,7 +85119,7 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." +"prophesied events accurately before concerning the Church of Starry Wisdom." msgstr "" "Tengo otra tarea si tenés ganas. Hay un prisionero sobre el que el cura hace" " especial mención. Me pregunto si podrías revisar qué puede haber pasado con" @@ -85225,7 +85530,7 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels" " is boosted so we can pick it up at much longer ranges. I really need you " @@ -88975,8 +89280,8 @@ msgid "" "You recover barely any health through sleeping - it will heal only one tenth" " of usual HP over time." msgstr "" -"Casi que no recuperás nada de salud mientras dormís - sanarás solol un " -"décimo de PV con el tiempo." +"Casi no recuperás nada de salud mientras dormís - sanarás solo un décimo de " +"PV con el tiempo." #: lang/json/mutation_from_json.py msgid "Far-Sighted" @@ -94956,7 +95261,7 @@ msgstr "río" msgid "river bank" msgstr "orilla" -#: lang/json/overmap_terrain_from_json.py +#: lang/json/overmap_terrain_from_json.py lang/json/snippet_from_json.py msgid "house" msgstr "casa" @@ -96013,7 +96318,7 @@ msgstr "sala de juegos" #: lang/json/overmap_terrain_from_json.py msgid "homeless camp" -msgstr "campamento para vegabundos" +msgstr "campamento para vagabundos" #: lang/json/overmap_terrain_from_json.py msgid "small scrap yard" @@ -96031,6 +96336,14 @@ msgstr "camping para casas rodantes" msgid "mass grave" msgstr "fosa común" +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "estación de tren" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "estacionamiento de estación de tren" + #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" msgstr "ventanilla de autoservicio abandonada" @@ -102018,6 +102331,140 @@ msgstr "" "disfrutar de un tiempo libre para hacer lo que querías, ahora ves que tus " "habilidades son necesarias para sobrevivir." +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "Despertado" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" +"Te despertó un ruido en mitad de la noche. Armado solamente con una " +"linterna, fuiste a investigar, y ahora te enfrentás al cataclismo." + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "Despertada" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" +"Te despertó un ruido en mitad de la noche. Armada solamente con una " +"linterna, fuiste a investigar, y ahora te enfrentás al cataclismo." + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "Ciclista Biónico" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" +"Tu entrenamiento y tus mejoras para la competición de ciclismo de las Ciber-" +"Olimpiadas te dieron una ventaja para escapar al comienzo del cataclismo. " +"¿Vas a poder seguir corriendo para siempre?" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "Ciclista Biónica" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" +"Tu entrenamiento y tus mejoras para la competición de ciclismo de las Ciber-" +"Olimpiadas te dieron una ventaja para escapar al comienzo del cataclismo. " +"¿Vas a poder seguir corriendo para siempre?" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "Soldador" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" +"Trabajabas como soldador en una compañía en un paraíso fiscal antes del " +"cataclismo. Estabas volviendo a tu casa cuando llegó. Por lo menos tenés las" +" herramientas encima." + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "Soldadora" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" +"Trabajabas como soldadora en una compañía en un paraíso fiscal antes del " +"cataclismo. Estabas volviendo a tu casa cuando llegó. Por lo menos tenés las" +" herramientas encima." + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "Survivalista Primitivo" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"Sabías que llegaría el día, el día que se iba todo a la mierda. Te " +"preparaste pero no con equipamiento sino con habilidades. Todos esos días en" +" el bosque ahora servirán. Si tus ancestros sobreviveron sin tecnología, por" +" qué vos no?" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "Sobreviviente Primitiva" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"Sabías que llegaría el día, el día que se iba todo a la mierda. Te " +"preparaste pero no con equipamiento sino con habilidades. Todos esos días en" +" el bosque ahora servirán. Si tus ancestros sobreviveron sin tecnología, por" +" qué vos no?" + #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "WEAPON" @@ -103268,21 +103715,21 @@ msgstr "Desafío-Laboratorio" #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" -"Estabas encerrado en una celda de laboratorio hasta que un monstruo rompió " -"el vidrio. ¡El laboratorio está cerrado! Encontrá una manera de escapar." +"¡Fuiste encerrado en un laboratorio y no tenés manera (obvia) de salir! " +"Encontrá la manera de escaparte o te vas a morir de hambre." #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" -"Estabas encerrada en una celda de laboratorio hasta que un monstruo rompió " -"el vidrio. ¡El laboratorio está cerrado! Encontrá una manera de escapar." +"¡Fuiste encerrado en un laboratorio y no tenés manera (obvia) de salir! " +"Encontrá la manera de escaparte o te vas a morir de hambre." #. ~ Starting location for scenario 'Challenge-Lab'. #: lang/json/scenario_from_json.py @@ -104134,6 +104581,48 @@ msgstr "" "robots esperando que los robots te protegieran, pero parece que son más " "peligrosos que los zombis." +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "Evacuado en Búnker" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "Evacuada en Búnker" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" +"Tenías contactos, o sabías algo de alguna manera... y por eso encontraste " +"este refugio LMOE. Ahora es verano y ya sobreviviste lo peor, ya debería ser" +" más fácil." + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" +"Tenías contactos, o sabías algo de alguna manera... y por eso encontraste " +"este refugio LMOE. Ahora es verano y ya sobreviviste lo peor, ya debería ser" +" más fácil." + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "Refugio LMOE" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" @@ -104305,7 +104794,7 @@ msgstr "" "altos te permite navegar por los sistemas complejos e incluso burlar su " "seguridad." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "cocinar" @@ -104443,7 +104932,7 @@ msgstr "" " evita que te ahogues, afecta tu eficacia en el combate y tu velocidad en " "aguas profundas, y determina la dificultad del nado con equipamiento pesado." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "sastrería" @@ -105048,6 +105537,51 @@ msgstr "" "No tengas miedo de hacer el juego un poco más fácil para vos. Los mundos " "pueden ser creados con más recursos." +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "" +"Que no te agarren con los pantalones bajos. Ya no queda papel higiénico." + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "" +"El terreno difícil de transitar puede usarse como ventaja si tenés la " +"movilidad reducida." + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best" +" friend." +msgstr "" +"Cuando todo el pueblo es un gran supermercado, un changuito se convierte en " +"tu mejor amigo." + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "" +"Probá con diferentes personajes, profesiones y escenarios para condimentar " +"el juego. ¡Juego de rol!" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "Un superviviente ayudado es un amigo ganado. Casi siempre...." + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "" +"¿Estás aprendiendo a jugar? Fijate los atajos de teclado y agarrales la " +"mano." + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "Esperá lo inesperable, incluso si es la Inquisición Española." + #: lang/json/snippet_from_json.py msgid "" "You feel great! It doesn't seem like wounds could even slow you down for " @@ -106062,6 +106596,566 @@ msgstr "" "propuesto una redistribución estratégica en el complejo subterráneo conocido" " como la BÓVEDA, y allí continuar la producción de PE062." +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "popular " + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "cuarenta principales " + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "corporativa " + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "comercial " + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "alternativa " + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "colegial " + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "independiente " + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "under " + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "experimental " + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "olvidada " + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "tradicional " + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "histórica " + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "clásica " + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "moderna " + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "adulta " + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "contemporánea " + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "cristiana " + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "pagana " + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "británica " + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "continental " + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "tropical " + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "isleña " + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "New York " + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "Hollywood " + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "trans-pacífica " + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "latina " + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "instrumental " + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "fusión " + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "visual " + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "líquida " + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "digital " + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "generada procedimentalmente " + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "melódica " + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "armónica " + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "discordante " + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "contextual " + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "conceptual " + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "colaborativa " + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "rítmica " + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "neo" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "retro" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "post" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "anti" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "hard " + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "soft " + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "speed " + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "slow " + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "hi-fi " + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "lo-fi " + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "mid-fi " + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "ambiente " + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "dance " + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "chill " + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "psycho" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "turbo" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "prog " + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "glam " + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "outsider " + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "indie " + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "dark " + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "death " + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "electro" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "acid " + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "espacial " + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "ghetto " + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "callejera " + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "urbana " + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "world " + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "Euro" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "Afro" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "grunge " + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "brass " + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "splatter " + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "swamp " + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "ghost " + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "shadow " + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "neuro " + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "hyper" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "carnival" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "meta" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "techno" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "synth" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "robo" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "skate " + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "freak " + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "surf " + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "mutante " + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "Jurásica " + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "free " + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "garage " + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "basura " + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "break " + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "laser " + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "porno " + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "hypno" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "lunar " + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "thunder " + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "clown " + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "murder " + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "narco " + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "gangster " + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "-tune" + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "-core" + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "-wave" + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "-beat" + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "-step" + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "-pop" + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "-hop" + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "-drums" + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "-style" + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "-chant" + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "folk" + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "country" + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "jazz" + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "blues" + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "soul" + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "R&B" + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "hip-hop" + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "swing" + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "funk" + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "disco" + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "polka" + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "tango" + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "salsa" + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "mambo" + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "electronic" + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "metal" + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "reaggae" + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "ska" + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "mocoso/a" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "thrash" + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "goth" + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "industrial" + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "psychedelic" + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "ruido" + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "sound" + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "revival" + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "gospel" + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "ópera" + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "shanties" + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -106309,7 +107403,7 @@ msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " "a man carrying a somewhat confused horse on his shoulders. He is flanked by" " two scantily clad nurses who hold bloody chainsaws and give approving " -"thumbs up. His bulging knees and elbows are stiched and seem to be the " +"thumbs up. His bulging knees and elbows are stitched and seem to be the " "source of his ability. The caption reads: \"Brand new! Horse power at " "hand!\"" msgstr "" @@ -106323,7 +107417,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " -"a man smiling while being relentlesly punched by a boxer. He doesn't even " +"a man smiling while being relentlessly punched by a boxer. He doesn't even " "sweat as punches have no effect on him. Two scantily clad nurses give " "approving thumbs up from the background. The caption reads: \"Bouncy as " "never before! Absorb those shocks!\"" @@ -110085,6 +111179,260 @@ msgstr "" " podés encontrar alguno! Sin embargo, dicen que no funcionan si no tenés " "anestésicos para dormirte." +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "" +"Tené cuidado con las cosas más profundas que un sótano común. Algunos " +"escucharon gritos aterradores por las ventilaciones de las minas o de los " +"laboratorios. Gritos muy escalofriantes." + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "¡Un destornillador por día mantendrá el escorbuto en la lejanía!" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "" +"¿Más hambriento que lo normal? Los aceites naturales pueden ayudar. No son " +"sabrosos pero a quién le importa cuando tu segunda opción es comerte una " +"pierna." + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "" +"El terreno puede definir una batalla, asegurate de usarlo contra tus " +"enemigos, y no dejes que sea usado en tu contra." + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "" +"Los que anduvieron cerca de la mina dijeron algo sobre un olor nauseabundo. " +"Si pensás ir por ahí, considerá llevarte una máscara de gas." + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "El conocimiento es poder. De en serio, agarrá un libro." + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "" +"Nada te puede matar si ya está todo muerto. Bueno, excepto el frío, el " +"hambre y.... no, olvidate." + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "" +"Conocí una mina que insistía en haber visto un tiburón de tierra atravesando" +" rocas, paredes y tierra. Lo considero una fábula, pero yo también he visto " +"cosas, y no puedo decir que es mentira." + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "" +"Hervir primero, tomar después. Una vez, una caravana de diez hombres tomaron" +" de un manantial y ahora se los conoce como la caravana de tres hombres." + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "" +"Una vez vi un bolso lleno pasar de mano en mano cinco veces en una semana. " +"Tener un montón de cosas es una ventaja discutible si no podés salir " +"corriendo." + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "" +"Juan dice que podés manejar un auto a través de las hordas de zombis. Juan " +"ahora es un zombi. ¿Alguna pregunta?" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no" +" environment to save now, but one can still save thyself I guess." +msgstr "" +"Dicen: poné cosas solares, cuida al planeta y a vos mismo. Bueno... ya no " +"hay planeta que cuidar, pero todavía te podés cuidar vos." + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "" +"Si no podés encontrar un cuchillo probá rompiendo macetas. Puede que te dé " +"los materiales que necesitás para hacer uno." + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "" +"¿Cuál es la diferencia entre un cuello de botella útil y uno malo? El útil " +"tiene una puerta trasera." + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "" +"Así que estaba pensando que si podés convencer a los robots policía de que " +"sos su superior..." + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their components." +" This guy around here, McSomething whatever his name is, is a master at " +"this." +msgstr "" +"Te sorprendería saber cuántos objetos se pueden desarmar. Ese tipo ahí, " +"McAlgo o como se llame, es un capo haciendo eso." + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "" +"Una soldadora puede ser la mejor amiga de un aspirante a mecánico. También " +"podés cauterizar una herida con ella, pero han muerto tantos como han vivido" +" haciendo eso, así que tomalo como último recurso." + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "" +"Vi algunos tipos corriendo con MCB recién instalados. Eso significa que hay " +"alguna manera de conseguirlos además de los negocios saqueados. Eso podría " +"explicar los cadáveres con agujeros que vi por ahí." + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "" +"Ya estoy harto de la carne ahumada, pero aguanta mucho. Bueno... si pongo un" +" poco más de ganas en aprender a cocinar podría diversificar mi comida sin " +"sacrificar su vida útil." + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" +"Juan el mañoso fue ahorcado por sus maneras creativas de matar zombis. Sí, " +"quemar un edificio para matar algunas hordas está bien, pero quemar un " +"pueblo entero con todas las cosas adentro definitivamente no estuvo bien." + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "" +"El Señor Lápida siempre decía: no lleves nada cuando salgas a cartonear, " +"dejá el espacio para la que puedas conseguir. Era conocido como José hasta " +"que se ganó su sobrenombre por ser el primer 'dueño' de una lápida en este " +"lugar." + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are" +" always better than two." +msgstr "" +"Un amigo es una segunda boca que alimentar, pero al momento de trabajar, " +"cuatro manos son mejor que dos." + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my" +" sorry ass away from the horde, with nothing more but some white powder I " +"got from that zombie. Saved me that time." +msgstr "" +"Yo estaba en contra de las drogas hasta que casi me mata un zombi y tuve que" +" salir cagando de esa horda, sin tener nada más que un poco de polvo blanco." +" Esa vez me salvó." + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "" +"No estoy seguro si Mike está bien de la cabeza. Tuvo la suficiente mala " +"suerte para que lo lleven a la escuela una vez. Esa experiencia le rompió " +"más que las costillas." + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "" +"Unas palabras acerca de los explosivos. Si podés correr y todavía no " +"explotó, seguí corriendo. No existe eso de exceso de espacio entre vos y la " +"dinamita." + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "Evitá usar lanzadores en pasillos angostos, podrías errarle." + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it " +"lemon?" +msgstr "" +"Una vez conocí a una científica loca. Hizo una batería con una papa... ¿o " +"era un limón?" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "" +"No tengo idea por qué los zombis granaderos siempre tienen una granada en la" +" mano. ¿Memoria muscular? De todas maneras, nunca te pongas demasiado cerca " +"cuando caen." + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "" +"¿Ya está muerto? ¿Cómo te podés dar cuenta si estaba muerto antes y si está " +"muerto ahora? Yo prefiero preguntar: está? *aplastar*? *aplastar* hasta " +"morir? *aplastar* más? *aplastar aplastar aplastar*" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "" +"Escuché que hay unas extrañas frutas por acá, pero ¿por qué no mejor probar " +"si están buenas o no?" + #: lang/json/snippet_from_json.py msgid " " msgstr " " @@ -110189,10 +111537,6 @@ msgstr "pedazo de forro/a" msgid "piece of shit" msgstr "pedazo de mierda" -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "mocoso/a" - #: lang/json/snippet_from_json.py msgid "scumbag" msgstr "basura" @@ -110470,7 +111814,7 @@ msgstr "Holis " msgid "never" msgstr "nunca" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" msgstr "no" @@ -111367,7 +112711,7 @@ msgstr "¡Listo manos arriba!" msgid "Hands in the air, !" msgstr "¡Las manos en el aire, !" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" msgstr "Correte" @@ -114535,10 +115879,26 @@ msgstr "Último hombre de la muerte" msgid "Middle of Nowhere" msgstr "El medio de la nada" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "Celda de Experimentos" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "Laboratorio" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "Sótano de laboratorio" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "Laboratorio congelado" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "Laboratorio ultracongelado" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "Área de carga del shopping" @@ -114635,6 +115995,14 @@ msgstr "Mansión" msgid "Gas Station" msgstr "Estación de Servicio" +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "Negocio de Electrónica" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" +msgstr "Negocio de Ropa" + #: lang/json/talk_topic_from_json.py msgid "That sure is a shiny badge you got there!" msgstr "¡Esa placa que tenés es bien brillante!" @@ -114667,8 +116035,7 @@ msgstr "¿Qué te pasa en las orejas?" msgid "Anything I can help with?" msgstr "¿Puedo ayudar en algo?" -#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Well, bye." msgstr "Bueno, chau." @@ -114862,7 +116229,7 @@ msgstr "&Levanta las manos." #: lang/json/talk_topic_from_json.py msgid "*drops his weapon." -msgstr "" +msgstr "*suelta su arma." #: lang/json/talk_topic_from_json.py msgid "*drops_her_weapon." @@ -114900,7 +116267,8 @@ msgstr "No me importa." msgid "I see." msgstr "Entiendo." -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Oh, okay." msgstr "Ah, bueno." @@ -114977,6 +116345,259 @@ msgstr "Gracias. " msgid "Thanks, bye." msgstr "Gracias, chau." +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "Bueno, supongo que solo quedamos nosotros." + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "Por lo menos tenemos un refugio." + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "¿Qué hacemos ahora?" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "¿Algún consejo?" + +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "¿Puedo hacer algo por vos?" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "¿Querés viajar conmigo?" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's trade items." +msgstr "Vamos a intercambiar objetos." + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "No puedo salir del refugio sin equipamiento." + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "No sé, buscar suministros o a otros supervivientes, supongo." + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "Tal vez deberíamos empezar por poner tablas en las aberturas." + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to" +" disappear quickly from here." +msgstr "" +"Supongo que conseguir un auto que funcione va a ser útil si tenemos que " +"salir rápido de acá." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "" +"Podemos buscar una de esas granjas de por acá. Están alejadas de las " +"ciudades y podemos conseguir mucha comida." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "" +"Probablemente, deberíamos mantenernos lejos de esas ciudades, incluso aunque" +" haya un montón de cosas útiles ahí." + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "Hmm, bueno." + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "Hasta que no tenga algún antibiótico, no..." + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "Recién me preguntaste; preguntame de nuevo después." + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "¿Por qué tendría que viajar con vos?" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "Entendido. Voy a conseguir esos antibióticos." + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "Bueno, bueno, pregunto más tarde." + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "Te puedo mantener a salvo." + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "Me podés mantener a salvo." + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "Somos amigos, ¿o no?" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "Te voy a matar si no lo hacés." + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "¡No hay problema, estoy con vos!" + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "¡Copado!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "¡Bueno, vamos!" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "Sí... no me parece." + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "¿Te vas de en serio?" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "Sí, estoy seguro. Chau." + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "Nah, te estaba boludeando." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp +msgid "What is it?" +msgstr "¿Qué es?" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "¿Cuánto más falta?" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "Me gustaría guiar por un rato." + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "Hacete a un lado. Ahora yo soy el líder." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "Vamos." + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "Bueno. Ahora podés guiarme." + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "Bieno. Algo más..." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "Bueno, vamos." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "Bueno, bueno." + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "¡No hay ninguna chance, me van a dejar atrás!" + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "Bien." + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "Estoy de guardia." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "Necesito que vengas conmigo." + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "Nos vemos por ahí." + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "Realmente no me siento cómodo haciendo eso..." + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "Te voy a dar un poco de espacio." + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "Prefiero quedarme con eso para mí." + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "Entiendo..." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "Bueno, acá tenés." + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "¡Gracias!" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "¡Gracias! ¿Pero me podés dar más?" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "¡Gracias, nos vemos después!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "Bueno, bueno, perdón." + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "¡En serio, dame alguna cosa!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "Bueno, está bien, chau." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "Bueno, comencemos." + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "Suena bien." + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "Bueno. Guiá el camino." + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "No, vamos a estar bien acá." + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "Pensandolo bien, olvidate." + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "Hola, alguacil." @@ -115834,10 +117455,6 @@ msgstr "¿Que es necesario hacer?" msgid "We're abandoning this camp." msgstr "Vamos a abandonar este campamento." -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "Nos vemos por ahí." - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "Espero que hayas venido a comerciar." @@ -115881,7 +117498,7 @@ msgstr "" msgid "Are you looking to buy anything else?" msgstr "¿Querés comprar algo más?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." msgstr "Muy bien..." @@ -116020,7 +117637,7 @@ msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of" " operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " @@ -116836,10 +118453,6 @@ msgstr "" msgid "I can't imagine what I'd need your assistance with." msgstr "No puedo ni imaginar para qué necesitaría tu ayuda." -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "Bien." - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "Quedate quieto mientras busco mis tijeras..." @@ -116912,10 +118525,6 @@ msgstr "Me alegra tenerte en el equipo." msgid "Can I trade for supplies?" msgstr "¿Podemos comerciar recursos?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "¿Puedo hacer algo por vos?" - #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " @@ -117218,7 +118827,7 @@ msgstr "Armá las valijas, . Nos vamos de viaje." msgid "Not at technique at all" msgstr "Sin ninguna técnica" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp src/martialarts.cpp msgid "Block" msgstr "Bloquear" @@ -117377,8 +118986,6 @@ msgid "Rapid Strike" msgstr "Golpe Rápido" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "50% movimientos, 66% daño" @@ -117493,11 +119100,6 @@ msgstr " desarma al %s usando su látigo" msgid "Counterattack" msgstr "Contrataque" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "Contrataque en bloqueo, contrataque en finta" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -117512,22 +119114,10 @@ msgstr " contrataca al %s" msgid "Feint" msgstr "Amague" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "Recuperación libre después de un fallo" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "Romper Agarre" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "Romper un agarre" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -117542,11 +119132,6 @@ msgstr " le da un hábil jab al %s" msgid "Cross" msgstr "Cross" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "x1.2 en daño golpeante, mínimo 2 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -117561,12 +119146,6 @@ msgstr " le tira un fuerte cross al %s" msgid "Jab" msgstr "Jab" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "50% movimiento, 66% daño, mínimo 3 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -117581,11 +119160,6 @@ msgstr " le da un rápido jab al %s" msgid "Uppercut" msgstr "Gancho" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "Aturdir 2 turnos, x1.4 daño golpeante, mínimo 4 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -117600,13 +119174,6 @@ msgstr " le da un gancho al %s" msgid "Cross Counter" msgstr "Golpe Cruzado" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "" -"Aturdir 2 turnos, hacer retroceder 1 espacio, solamente crítico, mínimo 5 " -"desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -117635,14 +119202,6 @@ msgstr " le pega un piña rápida al %s" msgid "karate chop" msgstr "golpe de karate" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "Aturdir 2 turnos, solamente crítico, mínimo 4 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -117657,11 +119216,6 @@ msgstr " le da un golpe de karate al %s" msgid "throw" msgstr "tirar" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "Tirado 1 turno, hacer retroceder 1 espacio, mínimo 2 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -117676,13 +119230,6 @@ msgstr " tira al suelo al %s" msgid "dodge throw" msgstr "tirar esquivando" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "" -"Tirado 1 turno, hacer retroceder 1 espacio, contrataque en finta, mínimo 6 " -"desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -117697,12 +119244,6 @@ msgstr " tira suavemente al suelo al %s" msgid "feint at" msgstr "amagar a" -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "Recuperación libre después de un fallo, mínimo 2 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -117713,11 +119254,6 @@ msgstr "Le amagás al %s" msgid " feints at %s" msgstr " le amaga al %s" -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "Desarmar oponente, mínimo 3 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -117728,21 +119264,11 @@ msgstr "Desarmás a %s" msgid " disarms %s" msgstr " desarma a %s" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "Tirado 1 turno, hacer retroceder 1 espacio, mínimo 3 desarmado" - #: lang/json/technique_from_json.py lang/json/technique_from_json.py #: src/monster.cpp msgid "grab" msgstr "agarrar" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "Tirado 2 turnos, mínimo 2 desarmado" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "golpe preciso" @@ -117757,20 +119283,10 @@ msgstr "Golpeás %s" msgid " strikes %s" msgstr " golpea %s" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "Recuperación libre después de un fallo, mínimo 1 desarmado" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "codazo" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "50% movimiento, solamente crítico, mínimo 2 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -117785,11 +119301,6 @@ msgstr " le da un codazo al %s" msgid "kick" msgstr "patear" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "Aturdir 1 turno, mínimo 3 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -117814,19 +119325,6 @@ msgstr "Le tirás un rodillazo volador al %s" msgid " flying knees %s" msgstr " le tira un rodillazo volador al %s" -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "50% movimiento, 66% daño, mínimo 2 desarmado" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "Aturdir 2 turnos, solamente crítico, mínimo 3 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -117837,34 +119335,14 @@ msgstr "Le das un jab al %s" msgid " jabs %s" msgstr " le da un jab al %s" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "Tirado 1 turno, mínimo 4 desarmado" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "romper agarre" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "Romper un agarre, mínimo 4 desarmado" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "ataque sorpresa" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min" -" 3 melee" -msgstr "" -"Aturdir 2 turnos, x1.4 daño golpeante, x2 daño cortante, solamente crítico, " -"mínimo 3 desarmado, mínimo 3 cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -117879,11 +119357,6 @@ msgstr " le da un ataque sorpresa al %s" msgid "axe-kick" msgstr "patada descendente" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "Aturdir 2 turnos, solamente crítico, mínimo 2 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -117898,11 +119371,6 @@ msgstr " le da una patada descendente al %s" msgid "side kick" msgstr "patada lateral" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "Aturdir 1 turno, hacer retroceder 1 espacio, mínimo 3 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -117917,11 +119385,6 @@ msgstr " le da una patada lateral al %s" msgid "sweep kick" msgstr "zancadilla" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "Tirado 2 turnos, mínimo 4 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -117936,11 +119399,6 @@ msgstr " le hace una zancadilla al %s" msgid "biojutsu counter" msgstr "contra biojutsu" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "Contrataque en bloqueo, mínimo 4 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -117969,13 +119427,6 @@ msgstr " le da un rápido golpe tajante al %s" msgid "biojutsu impale" msgstr "empalamiento biojutsu" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "" -"Aturdir 1 turno, x1.5 daño cortante, x1.5 daño golpeante, solamente crítico," -" mínimo 3 cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -117986,20 +119437,10 @@ msgstr "Empalás brutalmente al %s" msgid " brutally impales %s" msgstr " empala brutalmente al %s" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "Tirado 2 turnos, mínimo 2 cuerpo a cuerpo" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "golpe abierto" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "Atacar en arco amplio, solamente crítico, mínimo 3 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -118014,13 +119455,6 @@ msgstr " atraviesa al %s" msgid "Drunk feint" msgstr "Amague de borracho" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "Recuperación libre después de un fallo, mínimo 3 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -118035,11 +119469,6 @@ msgstr " tropieza y mira maliciosamente al %s" msgid "Drunk counter" msgstr "Cotnrataque de borracho" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "x1.25 en daño golpeante, contrataque en finta, mínimo 4 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -118054,12 +119483,6 @@ msgstr " tambalea, y golpea %s" msgid "Fencing lunge" msgstr "Golpe de esgrima" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "75% movimiento, mínimo 2 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -118074,11 +119497,6 @@ msgstr " le da un golpe de esgrima al %s" msgid "Fencing thrust" msgstr "Estocada de esgrima" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "90% movimiento, x1.25 daño punzante, mínimo 1 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -118093,13 +119511,6 @@ msgstr " le da una estocada al %s" msgid "Fencing stop thrust" msgstr "Parada de estocada" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "" -"x1.5 daño punzante, aturdir 1 turno, contrataque en bloqueo, mínimo 3 en " -"cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -118114,11 +119525,6 @@ msgstr " le hace una parada de estocada perfecta al %s" msgid "Round strike" msgstr "Golpe circular" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "60% movimiento, mínimo 4 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -118147,11 +119553,6 @@ msgstr " le da un golpe en abanico al %s" msgid "Snap strike" msgstr "Golpe seco" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "80% movimiento" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -118166,11 +119567,6 @@ msgstr " le da un golpe seco al %s" msgid "Combination strike" msgstr "Golpe combinado" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "80% movimiento, 150% daño, mínimo 2 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -118185,11 +119581,6 @@ msgstr " le da un golpe combinado al %s" msgid "free strike" msgstr "golpe franco" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "Golpe libre, mínimo 4 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -118204,15 +119595,6 @@ msgstr " le da un golpe franco al %s" msgid "puño strike" msgstr "golpe de empuñadura" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "" -"Convierte todo el daño en x4 daño golpeante, aturdir 1 turno, mínimo 3 en " -"cuerpo a cuerpo, mínimo 2 puntos de daño golpeante" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -118227,11 +119609,6 @@ msgstr " le da un golpe con la empuñadura al %s" msgid "knee strike" msgstr "rodillazo" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "Tirado 2 turnos, solamente crítico, mínimo 3 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -118246,11 +119623,6 @@ msgstr " le pega un rodillazo al %s" msgid "hamstring" msgstr "incapacitar" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "Tirado 3 turnos, solamente crítico, mínimo 2 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -118265,12 +119637,6 @@ msgstr " deja tirado al %s con un golpe bajo" msgid "Vicious Precision" msgstr "Precisión Feroz" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "150% daño, solamente crítico, mínimo 4 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -118285,13 +119651,6 @@ msgstr " hiere ferozmente al %s" msgid "Silat Brutality" msgstr "Brutalidad Silat" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "" -"Aturdir 1 turno, hacer retroceder 1 espacio, solamente crítico, mínimo 3 en " -"cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -118301,11 +119660,6 @@ msgstr "Mandás al %s dando vueltas hacia atrás" msgid "Dirty Hit" msgstr "Golpe Sucio" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "Aturdir 2 turnos, solamente crítico, mínimo 1 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -118348,11 +119702,6 @@ msgstr " golpea rápidamente %s" msgid "Viper Bite" msgstr "Mordida de Víbora" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "Aturdir 2 turnos, x1.5 daño golpeante, 2 turnos de duración" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -118367,11 +119716,6 @@ msgstr " usa su mordida de víbora con %s" msgid "Viper Strike" msgstr "Golpe de Víbora" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "x3 daño golpeante, 2 turnos de duración" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -118390,13 +119734,6 @@ msgstr "Retorcimiento de Víbora" msgid "Stinger Strike" msgstr "Golpe de Aguijón" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "" -"Aturdir 3 turnos, hacer retroceder 3 espacios, x2 daño golpeante, solamente " -"crítico" - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -118411,11 +119748,6 @@ msgstr "La patada de aguijón de hace salir volando al %s" msgid "Pincer Strike" msgstr "Golpe de Pinzas" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "x1.25 daño golpeante, aturdir 2 turnos, mínimo 4 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -118430,11 +119762,6 @@ msgstr " golpea %s con una Pinza Puño!" msgid "Toad's Tongue" msgstr "Lengua de Sapo" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "50% movimiento, tirado 1 turno, mínimo 4 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -118513,11 +119840,6 @@ msgstr " le da un golpe de serpiente al %s" msgid "Tiger Takedown" msgstr "Derribo de Tigre" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "Tirado 1 turno, mínimo 4 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -118532,11 +119854,6 @@ msgstr " agarra y tira al suelo al %s" msgid "Leopard Fist" msgstr "Puño de Leopardo" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "Aturdir 2 turnos, solamente crítico, mínimo 5 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -118565,11 +119882,6 @@ msgstr " le da un puñetazo rápido al %s" msgid "Leopard Foresight" msgstr "Presagio de Leopardo" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "x1.5 daño golpeante, contrataque en finta, mínimo 4 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -118584,11 +119896,6 @@ msgstr " esquiva el ataque y golpea %s con la guardia baja" msgid "Dragon Snatch" msgstr "Agarre de Dragón" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "Aturdir 2 turnos, x1.2 daño golpeante, mínimo 4 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -118603,14 +119910,6 @@ msgstr " agarra y le pega un rodillazo al %s" msgid "Dragon's Vortex" msgstr "Vórtice de Dragón" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "" -"Aturdir 2 turnos, contrataque en finta, contrataque en bloqueo, mínimo 4 " -"desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -118625,12 +119924,6 @@ msgstr " agarra el ataque del %s y lo hace girar" msgid "Dragon Sweeper" msgstr "Barrida de Dragón" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "Tirado 2 turnos, mínimo 5 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -118645,13 +119938,6 @@ msgstr " le da una patada giratoria al %s en las piernas" msgid "Dragon Strike" msgstr "Golpe de Dragón" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "" -"Aturdir 1 turno, hacer retroceder 1 espacio, solamente crítico, mínimo 6 " -"desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -118678,11 +119964,6 @@ msgstr " hace las Alas de Grulla" msgid "Crane Flap" msgstr "Aleteo de Grulla" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "Romper agarre, mínimo 3 desarmado" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "Movés tus brazos y te liberás" @@ -118695,11 +119976,6 @@ msgstr " aletea y se libera" msgid "Crane Strike" msgstr "Golpe de Grulla" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "Aturdir 3 turnos, solamente crítico, mínimo 4 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -118719,22 +119995,10 @@ msgstr "Amagás un golpe contra el %s" msgid "Power Hit" msgstr "Golpe Potente" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "" -"Aturdir 1 turno, hacer retroceder 1 espacio, solamente crítico, mínimo 4 " -"desarmado" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "Devolución de Golpe" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "Contrataque en bloqueo, mínimo 5 desarmado" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -118763,13 +120027,6 @@ msgstr " hace tropezar al %s" msgid "Flowing Water Cut" msgstr "Golpe de Agua Fluyente" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "" -"175% movimiento, x2 daño golpeante, x2 daño cortante, mínimo 4 en cuerpo a " -"cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -118784,11 +120041,6 @@ msgstr " golpea %s con el lento poder del agua que fluye" msgid "Red Leaf's Cut" msgstr "Corte de la Hoja Roja" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "Tirado 2 turnos, mínimo 5 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -118803,14 +120055,6 @@ msgstr "El golpe de saca de balance al %s" msgid "Fire and Stone's Cut" msgstr "Corte de Fuego y Piedra" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "" -"Aturdir 2 turnos, x1.5 daño golpeante, x1.5 daño cortante, solamente " -"crítico, mínimo 6 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -118825,14 +120069,6 @@ msgstr " atonta al %s con la fuerza de su golpe" msgid "In-One Timing" msgstr "En Un Tiempo" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "" -"50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "" -"50% movimiento, x1.5 daño golpeante, x1.5 daño cortante, aturdir 2 turnos, " -"mínimo 5 en cuerpo a cuerpo" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -118843,13 +120079,6 @@ msgstr "Golpeas los puntos débiles del/a %s" msgid " strikes %s's weaknesses" msgstr " golpea los puntos débiles del/a %s" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "" -"80% movimiento, recuperación libre después de un fallo, mínimo 2 en cuerpo a" -" cuerpo" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "golpe lento" @@ -122510,7 +123739,7 @@ msgstr "Martillar bien" msgid "wood sawing" msgstr "Serruchar madera" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "Serruchar metal" @@ -122554,7 +123783,7 @@ msgstr "Cavar" msgid "bolt turning" msgstr "Abulonar" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "Abulonar bien" @@ -123409,6 +124638,14 @@ msgstr "" msgid "Circle Split" msgstr "" +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "Prueba de reactor" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "Prueba solar" + #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" msgstr "Camión de Plataforma" @@ -127187,6 +128424,10 @@ msgstr "Terminaste la madriguera." msgid "You discover a %s!" msgstr "¡Te encontraste un %s!" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "Ninguna de tus herramientas son adecuadas para carnear." + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "" @@ -127266,6 +128507,10 @@ msgstr "Esto ya está descuartizado." msgid "You need to perform field dressing before quartering." msgstr "Necesitás preparar el cadáver antes de descuartizarlo." +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "¿Te vas a animar a profanar los restos mortales de otro ser humano?" + #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." msgstr "Apretás los dientes pensando en este desagradable trabajo." @@ -127440,7 +128685,7 @@ msgstr "Terminaste de carnear el %s." #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." msgstr "" "Cortás el cadáver con muy poca habilidad y sacás algunas partes de sobra. Te" @@ -127448,7 +128693,7 @@ msgstr "" #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." msgstr "" "Tus torpes manos resbalan y dañás el cadáver. Tenés esperanza de que quede " @@ -127456,7 +128701,7 @@ msgstr "" #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." msgstr "" "Hiciste algo mal y cortaste mal el cadáver. Tal vez todavía se pueda sacar " @@ -127610,7 +128855,7 @@ msgstr "No pudiste recargar el/a %s." #: src/activity_handlers.cpp src/iexamine.cpp #, c-format msgid "You reload the %s." -msgstr "Recargás el %s." +msgstr "Recargás el/a %s." #: src/activity_handlers.cpp #, c-format @@ -127632,7 +128877,7 @@ msgid "You have lost the item you were using to start the fire." msgstr "Perdiste el objeto que estabas usando para encender el fuego." #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." +msgid "There is not enough sunlight to start a fire now. You stop trying." msgstr "" "Ahora no hay suficiente luz solar para encender un fuego. Dejás de " "intentarlo." @@ -127919,7 +129164,11 @@ msgid_plural "" "There's no room in your inventory for the %s, so you drop them into the %s's" " %s." msgstr[0] "" +"No hay lugar en tu inventario para el/a %s, así que lo/a pusiste en el %s de" +" %s." msgstr[1] "" +"No hay lugar en tu inventario para los/as %s, así que los/as pusiste en el " +"%s de %s." #: src/activity_item_handling.cpp #, c-format @@ -127927,7 +129176,11 @@ msgid "The %s is too heavy to carry, so you drop it into the %s's %s." msgid_plural "" "The %s are too heavy to carry, so you drop them into the %s's %s." msgstr[0] "" +"El/a %s es demasiado pesado/a para llevarlo/a encima, así que lo/a dejás en " +"el %s de %s." msgstr[1] "" +"Los/as %s son demasiado pesados/as para llevarlos/as encima, así que los/as " +"dejás en el %s de %s." #: src/activity_item_handling.cpp #, c-format @@ -128486,7 +129739,7 @@ msgstr "cargas" msgid "category" msgstr "categoría" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp src/effect.cpp msgid "damage" msgstr "daño" @@ -128715,6 +129968,71 @@ msgstr "Todo/as" msgid "Hang on a bit..." msgstr "Esperá un segundo..." +#: src/armor_layers.cpp +msgid "close to your skin" +msgstr "contra tu piel" + +#: src/armor_layers.cpp +msgid "of normal clothing" +msgstr "de ropa normal" + +#: src/armor_layers.cpp +msgid "on your waist" +msgstr "en tu cintura" + +#: src/armor_layers.cpp +msgid "of outer clothing" +msgstr "de ropa externa" + +#: src/armor_layers.cpp +msgid "strapped to you" +msgstr "atado a tu cuerpo" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgid_plural "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgstr[0] "" +"Ponerse varios objetos %s en tu %s agrega " +"incomodidad en ese lugar." +msgstr[1] "" +"Ponerse varios objetos %s en tu %s agrega " +"incomodidad en ese lugar." + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgid_plural "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgstr[0] "" +"Ponerse estos objetos sobre otros cuando normalmente irían debajo, agrega " +"incomodidad en tu %s." +msgstr[1] "" +"Ponerse estos objetos sobre otros cuando normalmente irían debajo, agrega " +"incomodidad en tu %s." + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgid_plural "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgstr[0] "" +"Ponerse esto sobre tu %s agrega incomodidad en tu " +"%s." +msgstr[1] "" +"Ponerse esto sobre tu %s agrega incomodidad en tu " +"%s." + #: src/armor_layers.cpp msgid "This is worn next to the skin." msgstr "Esto se pone contra la piel." @@ -128886,29 +130204,33 @@ msgstr "¿Reasignar invlets para armadura?" #, c-format msgid "" "Use the arrow- or keypad keys to navigate the left list.\n" -"Press [%s] to select highlighted armor for reordering.\n" -"Use [%s] / [%s] to scroll the right list.\n" -"Press [%s] to assign special inventory letters to clothing.\n" -"Press [%s] to change the side on which item is worn.\n" -"Use [%s] to equip an armor item from the inventory.\n" -"Press [%s] to remove selected armor from oneself.\n" +"[%s] to select highlighted armor for reordering.\n" +"[%s] / [%s] to scroll the right list.\n" +"[%s] to assign special inventory letters to clothing.\n" +"[%s] to change the side on which item is worn.\n" +"[%s] to sort armor into natural layer order.\n" +"[%s] to equip a new item.\n" +"[%s] to equip a new item at the currently selected position.\n" +"[%s] to remove selected armor from oneself.\n" " \n" "[Encumbrance and Warmth] explanation:\n" "The first number is the summed encumbrance from all clothing on that bodypart.\n" -"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers.\n" +"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers or wearing items outside of other items they would normally be work beneath (e.g. a shirt over a backpack).\n" "The sum of these values is the effective encumbrance value your character has for that bodypart." msgstr "" "Usá las teclas de cursor o el teclado numérico para moverte por la lista izquierda.\n" -"Apretá [%s] para elegir la armadura a reordenar.\n" -"Usá [%s] / [%s] para moverte por la lista derecha.\n" -"Apretá [%s] para asignar una letra específica a la ropa.\n" -"Apretá [%s] para cambiar el lugar donde está una ropa.\n" -"Usá [%s] para ponerte un ropa del inventario.\n" -"Apretá [%s] para sacarte la ropa seleccionada.\n" +"[%s] elegir ropa para ordenar.\n" +"[%s] / [%s] desplazar lista de la derecha.\n" +"[%s] asignar letra específica a la ropa.\n" +"[%s] cambiar lado del cuerpo en el que está puesto.\n" +"[%s] ordenar ropa de manera lógica.\n" +"[%s] equipar objeto.\n" +"[%s] equipar objeto en el lugar seleccionado.\n" +"[%s] sacarse ropa seleccionada.\n" " \n" "[Incomodidad y Abrigo] explicación:\n" "El primer número es la incomodidad sumada de toda la ropa en esa parte del cuerpo.\n" -"El segundo número es la incomodidad adicional causada por tener varias prendas en la misma capa de las partes del cuerpo.\n" +"El segundo número es la incomodidad adicional causada por tener varias prendas en la misma capa de la parte del cuerpo, o tener ropa debajo de otra cuando tendría que ir sobre (ej.: una remera por encima de una mochila).\n" "La suma de estos valores es la incomodidad efectiva que tiene tu personaje en esa parte del cuerpo." #: src/artifact.cpp @@ -130023,6 +131345,14 @@ msgstr "" msgid "Your plugged-in solar pack is now able to charge your system." msgstr "Tu equipo solar conectado ahora es capaz de cargar tu sistema." +#: src/bionics.cpp +msgid "" +"You need to connect the cable to yourself and the solar pack before your " +"solar pack can charge your system." +msgstr "" +"Necesitás conectarte el cable a vos mismo/a y al equipo solar antes de que " +"este pueda cargar tu sistema." + #: src/bionics.cpp msgid "" "You might plug in your solar pack to the cable charging system, if you " @@ -130409,8 +131739,8 @@ msgstr "" #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out" -" when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "" "Te quedas bien, bien quietito, concentrado en un ladrillo interesante del " "techo, mientras el Autodoc se abre paso dentro tuyo. Por suerte, quedas " @@ -130535,6 +131865,55 @@ msgstr "" "¡No podés activar %s!\n" "Para leer la descripción de %s, apretá '!', y después '%c'." +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "Precisión" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "Esquivar" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "Velocidad" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "Costo de movimiento" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "Armadura" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "Penalidad de armadura" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "Multiplicador armadura enemigo" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "fuerza" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "destreza" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "inteligencia" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "percepción" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr " de " + #: src/calendar.cpp msgid "forever" msgstr "para siempre" @@ -130567,6 +131946,13 @@ msgid_plural "%d days" msgstr[0] "%d día" msgstr[1] "%d días" +#: src/calendar.cpp +#, c-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d semana" +msgstr[1] "%d semanas" + #: src/calendar.cpp #, c-format msgid "%d season" @@ -130623,6 +132009,15 @@ msgid_plural "%3d days" msgstr[0] "%3d día" msgstr[1] "%3d días" +#. ~ Right-aligned time string. should right-align with other strings with +#. this same comment +#: src/calendar.cpp +#, c-format +msgid "%3d week" +msgid_plural "%3d weeks" +msgstr[0] "%3d semana" +msgstr[1] "%3d semanas" + #. ~ Right-aligned time string. should right-align with other strings with #. this same comment #: src/calendar.cpp @@ -130952,22 +132347,6 @@ msgstr "" msgid "Liquid from your inventory has leaked onto the ground." msgstr "El líquido de tu inventario se ha chorreado al suelo." -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "fuerza" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "destreza" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "inteligencia" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "percepción" - #: src/character.cpp msgid "Left Arm" msgstr "Brazo Izq." @@ -131067,9 +132446,7 @@ msgstr "No esperás ningún efecto usando esto." msgid "No limb would benefit from it." msgstr "Ningún miembro será beneficiado con esto." -#: src/character.cpp src/game.cpp src/game.cpp src/iexamine.cpp -#: src/inventory_ui.cpp src/npctalk_funcs.cpp src/pickup.cpp src/turret.cpp -#: src/vehicle_use.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp src/pickup.cpp msgid "Cancel" msgstr "Cancelar" @@ -131157,7 +132534,7 @@ msgstr "" "va toda acá." #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" msgstr "Cosas: P.Comida" @@ -131182,7 +132559,7 @@ msgstr "" "específica para ellas." #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" msgstr "Cosas: P.Bebidas" @@ -131199,7 +132576,7 @@ msgid "Destination for guns, bows and similar weapons." msgstr "Lugar para armas de fuego, arcos y similares." #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" msgstr "Cosas: Cargadores" @@ -131244,7 +132621,7 @@ msgstr "" "ella." #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" msgstr "Cosas: Ropa Sucia" @@ -131293,7 +132670,7 @@ msgid "Destination for Compact Bionics Modules aka CBMs." msgstr "Lugar para Módulos Compactos de Biónicos, también conocidos como MCB." #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" msgstr "Cosas: Partes de Vehículos" @@ -131338,7 +132715,7 @@ msgid "Destination for chemicals." msgstr "Lugar para químicos." #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" msgstr "Cosas: S.Partes" @@ -131367,7 +132744,7 @@ msgstr "" " para ella." #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" msgstr "Cosas: Armadura Sucia" @@ -131394,7 +132771,7 @@ msgstr "" "cosas\"." #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" msgstr "Granja: Terreno" @@ -132614,7 +133991,7 @@ msgstr "Etapa/Variante #" msgid "Result: " msgstr "Resultado: " -#: src/construction.cpp src/crafting_gui.cpp src/recipe.cpp +#: src/construction.cpp src/crafting_gui.cpp msgid "N/A" msgstr "N/D" @@ -132730,13 +134107,17 @@ msgstr "" "Luego de poner tablas en la ventana, sobran las cortinas y la barra para " "colgarlas." +#: src/construction.cpp +msgid "You gather some clay." +msgstr "Juntás un poco de arcilla." + #: src/construction.cpp msgid "You gather some sand." msgstr "Juntás un poco de arena." #: src/construction.cpp -msgid "You gather some clay." -msgstr "Juntás un poco de arcilla." +msgid "You gather some materials." +msgstr "Juntás algunos materiales." #: src/construction.cpp msgid "You cannot build there!" @@ -133226,6 +134607,16 @@ msgstr "%s (%d/%d cerca y encima)" msgid "Use which component?" msgstr "¿Qué componente usar?" +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "%s (%d/%d cargas cercanas)" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "%s (%d/%d cargas encima)" + #: src/crafting.cpp msgid "Use which tool?" msgstr "¿Qué herramienta usar?" @@ -133397,37 +134788,37 @@ msgstr "Escrito en: %s" #: src/crafting_gui.cpp #, c-format -msgid "Skills used: %s" -msgstr "Habilidades usadas: %s" +msgid "Primary skill used: %s" +msgstr "Habilidad usada: %s" #: src/crafting_gui.cpp #, c-format -msgid "Required skills: %s" -msgstr "Habilidades requeridas: %s" +msgid "Difficulty: %d" +msgstr "Dificultad: %d" #: src/crafting_gui.cpp #, c-format -msgid "Difficulty: %d" -msgstr "Dificultad: %d" +msgid "Your skill level: %d" +msgstr "Tu nivel de habilidad: %d" #: src/crafting_gui.cpp -msgid "Your skill level: N/A" -msgstr "Tu nivel de habilidad: N/D" +msgid "Your skill level: N/A" +msgstr "Tu nivel de habilidad: N/A" #: src/crafting_gui.cpp #, c-format -msgid "Your skill level: %d" -msgstr "Tu nivel de habilidad: %d" +msgid "Other skills used: %s" +msgstr "Otras habilidades usadas: %s" #: src/crafting_gui.cpp #, c-format -msgid "Time to complete: %s" -msgstr "Tiempo para terminar: %s" +msgid "Time to complete: %s" +msgstr "Tiempo para terminar: %s" #: src/crafting_gui.cpp #, c-format -msgid "Dark craftable? %s" -msgstr "¿Hacer sin luz? %s" +msgid "Dark craftable? %s" +msgstr "¿Hacer sin luz? %s" #: src/crafting_gui.cpp src/defense.cpp msgid "Easy" @@ -133453,49 +134844,83 @@ msgstr "¡No podés hacer eso!" msgid "Nothing selected!" msgstr "¡No elegiste nada!" -#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp -msgid "Search:" -msgstr "Buscar:" +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "calidad del objeto resultante" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "" +"descripción completa del objeto resultante (lento)" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "ataque de contacto" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "componente necesario para fabricar" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "habilidad principal usada para fabricar" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "cualquier habilidad usada para fabricar" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "calidad necesaria para fabricar" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "herramienta necesaria para fabricar" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "recetas que están ocultas o no" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "si" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" +msgstr "recetas que están memorizadas o no" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" -msgstr "" -"Prefijos especiales para requisitos:\n" -" [t] buscar herramienta\n" -" [c] buscar componente\n" -" [q] buscar cualidad\n" -" [s] buscar habilidad\n" -"Prefijos especiales para resultados:\n" -" [Q] buscar calidades\n" -"Otros:\n" -" [h] buscar ocultos\n" -" [m] buscar por memorizado o no\n" -"Ejemplos:\n" -" t:soldadora de mano\n" -" c:tabla de madera\n" -" q:cortar metal\n" -" s:cocinar\n" -" Q:abulonar de calidad\n" -" h:si\n" -" m:no" +"The default is to search result names. Some single-character prefixes can be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" +msgstr "" +"Se busca por nombres por defecto. Algunos prefijos de un caracter se pueden usar con dos puntos (:) para buscar de otras maneras.\n" +"\n" +"Ejemplos:\n" + +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "remera" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" +msgstr " %s%.*s %s\n" + +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "nombre del objeto resultante" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" +msgstr " %c:%s%.*s %s\n" + +#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp +msgid "Search:" +msgstr "Buscar:" #: src/crafting_gui.cpp msgid "RESULTS" @@ -133527,10 +134952,6 @@ msgstr "demasiado triste" msgid "slow %d%%" msgstr "despacio %d%%" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "si" - #: src/crafting_gui.cpp msgid "Searched" msgstr "Búsqueda" @@ -133675,6 +135096,11 @@ msgstr "Amistoso" msgid "BUG: Behavior unnamed. (Creature::get_attitude_ui_data)" msgstr "BUG: Comportamiento sin nombre. (Creature::get_attitude_ui_data)" +#: src/debug.cpp +#, c-format +msgid "See %s for a full stack backtrace" +msgstr "" + #: src/debug.cpp msgid "An error has occurred! Written below is the error report:" msgstr "¡Hubo un error! Abajo está escrito el detalle:" @@ -134913,7 +136339,7 @@ msgstr "Tenés que elegir un espacio dentro de los %d de rango del campamento" msgid "You must construct expansions in fields." msgstr "Tenés que construir expansiones en los campos." -#: src/editmap.cpp src/mission_companion.cpp +#: src/editmap.cpp src/faction_camp.cpp msgid "" "Engine cannot support merging vehicles from two overmaps, please remove them" " from the OM tile." @@ -136944,475 +138370,2227 @@ msgstr "Suministro de Comida: %s" msgid "Combat Ability: %s" msgstr "Habilidad de Combate: %s" -#: src/field.cpp -msgid "blood splatter" -msgstr "salpicadura de sangre" +#: src/faction_camp.cpp +msgid " [DONE]\n" +msgstr " [LISTO]\n" -#: src/field.cpp -msgid "blood stain" -msgstr "mancha de sangre" +#: src/faction_camp.cpp +msgid " left]\n" +msgstr "quedan]\n" -#: src/field.cpp -msgid "puddle of blood" -msgstr "charco de sangre" +#: src/faction_camp.cpp +msgid "Upgrade Camp" +msgstr "Mejorar Campamento" -#: src/field.cpp -msgid "bile splatter" -msgstr "salpicadura de bilis" +#: src/faction_camp.cpp +msgid "Working to expand your camp!\n" +msgstr "¡Trabajando para expandir tu campamento!\n" -#: src/field.cpp -msgid "bile stain" -msgstr "mancha de bilis" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?" +msgstr "" +"\n" +" \n" +"¿Querés que vuelvan tus compañeros a tu grupo?" -#: src/field.cpp -msgid "puddle of bile" -msgstr "charco de bilis" +#: src/faction_camp.cpp +msgid "Recover Ally from Upgrading" +msgstr "Recuperar Aliado de Mejoras" -#: src/field.cpp -msgid "bloody meat chunks" -msgstr "pedazos sangrientos de carne" +#: src/faction_camp.cpp +msgid "Busy crafting!\n" +msgstr "¡Ocupado fabricando!\n" -#: src/field.cpp -msgid "heap of gore" -msgstr "montón de tripas" +#: src/faction_camp.cpp +msgid " (Finish) Crafting" +msgstr " (Terminar) Fabricación" -#: src/field.cpp -msgid "scraps of flesh" -msgstr "restos de carne" +#: src/faction_camp.cpp +msgid "Gather Materials" +msgstr "Recolectar Materiales" -#: src/field.cpp -msgid "broken vegetation tangle" -msgstr "enredo de vegetación rota" +#: src/faction_camp.cpp +msgid "Searching for materials to upgrade the camp.\n" +msgstr "Buscando materiales para mejorar el campamento.\n" -#: src/field.cpp -msgid "shattered branches and leaves" -msgstr "ramas y hojas destrozadas" +#: src/faction_camp.cpp +msgid "Recover Ally from Gathering" +msgstr "Recuperar Aliado de Recolección" -#: src/field.cpp -msgid "shredded leaves and twigs" -msgstr "hojas y ramitas destruidas" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" +" \n" +"Effects:\n" +"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" +" \n" +"Must have enjoyability >= -6\n" +"Perishable food liquidated at penalty depending on upgrades and rot time:\n" +"> Rotten: 0%%\n" +"> Rots in < 2 days: 60%%\n" +"> Rots in < 5 days: 80%%\n" +" \n" +"Total faction food stock: %d kcal or %d day's rations" +msgstr "" +"Notas:\n" +"Distribuir comida con tus seguidores y llenar las alacenas. Poner la comida que querés distribuir en el lado opuesto a la puerta, entre el director y la pared.\n" +" \n" +"Efectos:\n" +"> Incrementa la comida de tu bando que será usada para pagar a los trabajadores por su tiempo\n" +" \n" +"Debe tener Disfrute >= -6\n" +"La comida perecedera liquidada en penalidad depende de las mejoras y tiempo podrida:\n" +"> Podrida: 0%%\n" +"> Se pudre en < 2 días: 60%%\n" +"> Se pudre en < 5 días: 80%%\n" +" \n" +"Suministro total del bando: %d kcal o %d días con raciones" -#: src/field.cpp -msgid "cobwebs" -msgstr "telarañas" +#: src/faction_camp.cpp +msgid "Distribute Food" +msgstr "Distribuir Comida" -#: src/field.cpp -msgid "thick webs" -msgstr "telarañas gruesas" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" +" \n" +"Effects:\n" +"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" +"> Items sitting on any type of furniture will not be moved.\n" +"> Items that are not listed in one of the categories are defaulted to the tools group." +msgstr "" +"Notas:\n" +"Resetear los puntos en que los objetos son ordenados usando la misión [ Labor Menor ] .\n" +" \n" +"Efectos:\n" +"> Puntos Asignables: comida, comida para distribuir, semillas, armas, ropa, biónicos, herramientas, madera, basura, libros, medicamentos y munición.\n" +"> Los objetos en los muebles no serán movidos.\n" +"> Los objetos que no están listados en las categorías van al grupo de herramientas." -#: src/field.cpp -msgid "webs" -msgstr "telarañas" +#: src/faction_camp.cpp +msgid "Reset Sort Points" +msgstr "Resetear Puntos de Orden" -#: src/field.cpp -msgid "puddle of slime" -msgstr "charco de slime" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to gather light brush and heavy sticks.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +"> heavy sticks\n" +"> withered plants\n" +"> splintered wood\n" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" +"Notas:\n" +"Enviar un compañero a recolectar arbustos y palos grandes.\n" +" \n" +"Habilidad usada: supervivencia\n" +"Dificultad: N/D \n" +"Posibilidad de Recolectar:\n" +"> palos grandes\n" +"> plantas marchitas\n" +"> astillas de madera\n" +" \n" +"Riesgo: Muy Bajo\n" +"Tiempo: 3 Horas, Repetir\n" +"Posiciones: %d/3\n" -#: src/field.cpp -msgid "slime stain" -msgstr "mancha de slime" +#: src/faction_camp.cpp +msgid "Collect Firewood" +msgstr "Recolectar Leña" -#: src/field.cpp -msgid "slime trail" -msgstr "rastro de slime" +#: src/faction_camp.cpp +msgid "Searching for firewood.\n" +msgstr "Buscando leña.\n" -#: src/field.cpp -msgid "acid splatter" -msgstr "salpicadura de ácido" +#: src/faction_camp.cpp +msgid "Recover Firewood Gatherers" +msgstr "Recuperar Recolectores de Leña" -#: src/field.cpp -msgid "acid streak" -msgstr "mancha de ácido" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to do low level chores and sort supplies.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" +"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours\n" +"Positions: %d/1\n" +msgstr "" +"Notas:\n" +"Enviar compañero a hacer tareas rutinarias y ordenar cosas.\n" +" \n" +"Habilidad usada: fabricación\n" +"Dificultad: N/D \n" +"Efectos:\n" +"> Los materiales dejados afuera en el piso serán ordenados en cuatro cajas en la puerta de la carpa.\n" +"Por defecto, de arriba a abajo: Ropa, Comida, Libros/Biónicos y Herramientas. La madera será apilada en el sur. La basura, en el norte.\n" +" \n" +"Riesgo: Ninguno\n" +"Tiempo: 3 Horas\n" +"Posiciones: %d/1\n" -#: src/field.cpp -msgid "pool of acid" -msgstr "charco de ácido" +#: src/faction_camp.cpp +msgid "Menial Labor" +msgstr "Labores Menores" -#: src/field.cpp -msgid "glob of sap" -msgstr "pegote de savia" +#: src/faction_camp.cpp +msgid "Performing menial labor...\n" +msgstr "Haciendo tarea menor...\n" -#: src/field.cpp -msgid "pool of sap" -msgstr "charco de savia" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?\n" +msgstr "" +"\n" +" \n" +"¿Querés intentar traer a tus aliados de nuevo a tu grupo?\n" -#: src/field.cpp -msgid "sap splatter" -msgstr "salpicadura de savia" +#: src/faction_camp.cpp +msgid "Recover Menial Laborer" +msgstr "Recuperar Trabajador en Tareas Menores" -#: src/field.cpp -msgid "sludge trail" -msgstr "rastro de barro" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours \n" +"Positions: %d/1\n" +msgstr "" +"Notas:\n" +"Tu base se hizo lo suficientemente grande como para agrandarla. Las expansiones abren nuevas posibilidades pero pueden ser costosas y llevan tiempo. Elegí la expansión con cuidado, solamente se pueden construir 8 por campamento.\n" +" \n" +"Habilidad usada: fabricación\n" +"Dificultad: N/D \n" +"Efectos:\n" +"> Elegí cualquiera de las expansiones disponibles. Empezar por la granja o la maderera son siempre las mejores opciones ya que la comida es necesaria para las misiones de los compañeros y la madera es el principal material.\n" +" \n" +"Riesgo: Ninguno\n" +"Tiempo: 3 Horas \n" +"Posiciones: %d/1\n" -#: src/field.cpp -msgid "thick sludge trail" -msgstr "rastro grueso de barro" +#: src/faction_camp.cpp +msgid "Expand Base" +msgstr "Expandir Base" -#: src/field.cpp -msgid "thin sludge trail" -msgstr "rastro fino de barro" +#: src/faction_camp.cpp +msgid "Surveying for expansion...\n" +msgstr "Inspeccionando el terreno para expandir...\n" -#: src/field.cpp -msgid "fire" -msgstr "fuego" +#: src/faction_camp.cpp +msgid "Recover Surveyor" +msgstr "Recuperar Topógrafo" -#: src/field.cpp -msgid "raging fire" -msgstr "fuego intenso" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to a nearby forest to cut logs.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: 1 \n" +"Effects:\n" +"> 50%% of trees/trunks at the forest position will be cut down.\n" +"> 100%% of total material will be brought back.\n" +"> Repeatable with diminishing returns.\n" +" \n" +"Risk: None\n" +"Time: 6 Hour Base + Travel Time + Cutting Time\n" +"Positions: %d/1\n" +msgstr "" +"Notas:\n" +"Enviar compañero a un bosque cercano a cortar troncos.\n" +" \n" +"Habilidad usada: fabricación\n" +"Dificultad: 1 \n" +"Efectos:\n" +"> 50%% de los árboles/troncos en el bosque serán cortados.\n" +"> 50%% del material total será traído.\n" +"> Se puede repetir con resultados menores.\n" +" \n" +"Riesgo: Ninguno\n" +"Tiempo: 6 Horas en Base + Tiempo de Traslado + Tiempo de Tala\n" +"Posiciones: %d/1\n" -#: src/field.cpp -msgid "small fire" -msgstr "fuego chico" +#: src/faction_camp.cpp +msgid "Cut Logs" +msgstr "Cortar Troncos" -#: src/field.cpp -msgid "legacy rubble" -msgstr "escombro antiguo" +#: src/faction_camp.cpp +msgid "Cutting logs in the woods...\n" +msgstr "Cortando árboles en el bosque...\n" -#: src/field.cpp -msgid "smoke" -msgstr "humo" +#: src/faction_camp.cpp +msgid "Recover Log Cutter" +msgstr "Recuperar Talador" -#: src/field.cpp -msgid "thick smoke" -msgstr "humo denso" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Good for setting up resupply or contingency points.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward.\n" +" \n" +"Risk: Medium\n" +"Time: 6 Hour Construction + Travel\n" +"Positions: %d/1\n" +msgstr "" +"Notas:\n" +"Enviar un compañero a construir un refugio improvisado y llenarlo con equipamiento en un lugar del mapa.\n" +" \n" +"Habilidad usada: supervivencia\n" +"Dificultad: 3\n" +"Efectos:\n" +"> Sirve para establecer puntos de contingencia o de suministros.\n" +"> El equipo queda sin supervisión y puede ser robado.\n" +"> El tiempo depende del peso del equipo enviado.\n" +" \n" +"Riesgo: Medio\n" +"Tiempo: 6 Horas de Construcción + Traslado\n" +"Posiciones: %d/1\n" -#: src/field.cpp -msgid "thin smoke" -msgstr "humo fino" +#: src/faction_camp.cpp +msgid "Setup Hide Site" +msgstr "Establecer Escondite" -#: src/field.cpp -msgid "hazy cloud" -msgstr "nube brumosa" +#: src/faction_camp.cpp +msgid "Setting up a hide site...\n" +msgstr "Estableciendo escondite...\n" -#: src/field.cpp -msgid "thick toxic gas" -msgstr "gas tóxico denso" +#: src/faction_camp.cpp +msgid "Recover Hide Setup" +msgstr "Recuperar Establecedor de Escondite" -#: src/field.cpp -msgid "toxic gas" -msgstr "gas tóxico" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Push gear out to a hide site or bring gear back from one.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 1\n" +"Effects:\n" +"> Good for returning equipment you left in the hide site shelter.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward or back.\n" +" \n" +"Risk: Medium\n" +"Time: 1 Hour Base + Travel\n" +"Positions: %d/1\n" +msgstr "" +"Notas:\n" +"Enviar equipamiento a escondite o traerlo de nuevo a la base.\n" +" \n" +"Habilidad usada: supervivencia\n" +"Dificultad: 1\n" +"Efectos:\n" +"> Sirve para recuperar equipo que dejaste en el refugio de escondite.\n" +"> El equipo queda sin supervisión y puede ser rebado.\n" +"> El tiempo depende del peso del equipo trasladado.\n" +" \n" +"Riesgo: Medio\n" +"Tiempo: 1 Hora en Base + Traslado\n" +"Posiciones: %d/1\n" -#: src/field.cpp -msgid "tear gas" -msgstr "gas lacrimógeno" +#: src/faction_camp.cpp +msgid "Relay Hide Site" +msgstr "Equipar Escondite" -#: src/field.cpp -msgid "thick tear gas" -msgstr "gas lacrimógeno denso" +#: src/faction_camp.cpp +msgid "Transfering gear to a hide site...\n" +msgstr "Transportando equipo a escondite...\n" -#: src/field.cpp -msgid "radioactive gas" -msgstr "gas radiactivo" +#: src/faction_camp.cpp +msgid "Recover Hide Relay" +msgstr "Recuperar Transporte a Escondite" -#: src/field.cpp -msgid "thick radioactive gas" -msgstr "gas radiactivo denso" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to edible plans.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Foraging Possibilities:\n" +"> wild vegetables\n" +"> fruits and nuts dependening on season\n" +"May produce less food than consumed!\n" +"Risk: Very Low\n" +"Time: 4 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" +"Notas:\n" +"Enviar compañero a buscar plantas comestibles.\n" +" \n" +"Habilidad usada: supervivencia\n" +"Dificultad: N/D \n" +"Posibilidad de Recolección:\n" +"> verduras silvestres\n" +"> frutas y nueces dependiendo la temporada\n" +"¡Puede producir menos comida que la consumida!\n" +"Riesgo: Muy Bajo\n" +"Tiempo: 4 Horas, Repetir\n" +"Posiciones: %d/3\n" -#: src/field.cpp -msgid "gas vent" -msgstr "conducto de gas" +#: src/faction_camp.cpp +msgid "Forage for plants" +msgstr "Buscar comida en plantas" -#: src/field.cpp -msgid "electric cloud" -msgstr "nube eléctrica" +#: src/faction_camp.cpp +msgid "Foraging for edible plants.\n" +msgstr "Buscando plantas comestibles.\n" -#: src/field.cpp -msgid "electric crackle" -msgstr "chisporroteo eléctrico" +#: src/faction_camp.cpp +msgid "Recover Foragers" +msgstr "Recuperar Cosechadores" -#: src/field.cpp -msgid "sparks" -msgstr "chispas" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to set traps for small game.\n" +" \n" +"Skill used: trapping\n" +"Difficulty: N/A \n" +"Trappinng Possibilities:\n" +"> small and tiny animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Low\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/2\n" +msgstr "" +"Notas:\n" +"Enviar compañero a poner trampas para caza menor.\n" +" \n" +"Habilidad usada: trampas\n" +"Dificultad: N/D \n" +"Posibilidad de atrapar:\n" +"> cadáveres de animales chicos y pequeños\n" +"¡Puede producir menos comida que la consumida!\n" +"Riesgo: Bajo\n" +"Tiempo: 6 Horas, Repetir\n" +"Posiciones: %d/2\n" -#: src/field.cpp -msgid "odd ripple" -msgstr "onda extraña" +#: src/faction_camp.cpp +msgid "Trap Small Game" +msgstr "Atrapar Caza Menor" -#: src/field.cpp -msgid "swirling air" -msgstr "aire turbulento" +#: src/faction_camp.cpp +msgid "Trapping Small Game.\n" +msgstr "Atrapando Caza Menor.\n" -#: src/field.cpp -msgid "tear in reality" -msgstr "tajo en la realidad" +#: src/faction_camp.cpp +msgid "Recover Trappers" +msgstr "Recuperar Tramperos" -#: src/field.cpp -msgid "faint plasma" -msgstr "plasma leve" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to hunt large animals.\n" +" \n" +"Skill used: marksmanship\n" +"Difficulty: N/A \n" +"Hunting Possibilities:\n" +"> small, medium, or large animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Medium\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/1\n" +msgstr "" +"Notas:\n" +"Enviar compañero a cazar animales grandes.\n" +" \n" +"Habilidad usada: puntería\n" +"Dificultad: N/D \n" +"Posibilidad de cazar:\n" +"> cadáveres de animales grandes, chicos o pequeños\n" +"¡Puede producir menos comida que la consumida!\n" +"Riesgo: Medio\n" +"Tiempo: 6 Horas, Repetir\n" +"Posiciones: %d/1\n" -#: src/field.cpp -msgid "glaring plasma" -msgstr "plasma deslumbrante" +#: src/faction_camp.cpp +msgid "Hunt Large Animals" +msgstr "Cazar Animales Grandes" -#: src/field.cpp -msgid "glowing plasma" -msgstr "plasma brillante" +#: src/faction_camp.cpp +msgid "Hunting large animals.\n" +msgstr "Cazando animales grandes.\n" -#: src/field.cpp -msgid "beam of light" -msgstr "rayo de luz" +#: src/faction_camp.cpp +msgid "Recover Hunter" +msgstr "Recuperar Cazador" -#: src/field.cpp -msgid "faint glimmer" -msgstr "destello leve" +#: src/faction_camp.cpp +msgid "Construct Map Fortifications" +msgstr "Construir Fortificaciones" -#: src/field.cpp -msgid "intense beam of light" -msgstr "rayo intenso de luz" +#: src/faction_camp.cpp +msgid "Construct Spiked Trench" +msgstr "Construir Trinchera con Púas" -#: src/field.cpp -msgid "spotlight" -msgstr "foco" +#: src/faction_camp.cpp +msgid "Constructing fortifications...\n" +msgstr "Construyendo fortificaciones...\n" -#: src/field.cpp -msgid "dazzling" -msgstr "cegador" +#: src/faction_camp.cpp +msgid "Finish Map Fortifications" +msgstr "Terminar Fortificaciones" -#: src/field.cpp -msgid "plant sap splatter" -msgstr "salpicadura de savia de planta" +#: src/faction_camp.cpp +msgid "Recruit Companions" +msgstr "Reclutar Compañeros" -#: src/field.cpp -msgid "plant sap stain" -msgstr "mancha de savia de planta" +#: src/faction_camp.cpp +msgid "Searching for recruits.\n" +msgstr "Buscando reclutas.\n" -#: src/field.cpp -msgid "puddle of resin" -msgstr "charco de resina" +#: src/faction_camp.cpp +msgid "Recover Recruiter" +msgstr "Recuperar Reclutador" -#: src/field.cpp -msgid "bug blood splatter" -msgstr "salpicadura de sangre de insecto" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Select checkpoints to customize path.\n" +"> Reveals terrain around the path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" +"Notas:\n" +"Enviar compañero a territorio desconocido. Se necesita habilidad en supervivencia para evitar las luchas pero igual deberías prepararte para algunas.\n" +" \n" +"Habilidad usada: supervivencia\n" +"Dificultad: 3\n" +"Efectos:\n" +"> Elegir puntos específicos para trazar el camino.\n" +"> Revela terreno alrededor del camino.\n" +"> Puede pasar por escondites para extender su alcance.\n" +" \n" +"Riesgo: Alto\n" +"Tiempo: Traslado\n" +"Posiciones: %d/3\n" -#: src/field.cpp -msgid "bug blood stain" -msgstr "mancha de sangre de insecto" +#: src/faction_camp.cpp +msgid "Scout Mission" +msgstr "Misión de Exploración" -#: src/field.cpp -msgid "puddle of bug blood" -msgstr "charco de sangre de insecto" +#: src/faction_camp.cpp +msgid "Scouting the region.\n" +msgstr "Inspeccionando la región.\n" -#: src/field.cpp -msgid "hemolymph splatter" -msgstr "salpicadura de hemolinfa" +#: src/faction_camp.cpp +msgid "Recover Scout" +msgstr "Recuperar Explorador" -#: src/field.cpp -msgid "hemolymph stain" -msgstr "mancha de hemolinfa" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 4\n" +"Effects:\n" +"> Pulls creatures encountered into combat instead of fleeing.\n" +"> Select checkpoints to customize path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: Very High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" +"Notas:\n" +"Enviar compañero a purgar las tierras baldías. Su objetivo es eliminar cualquier cosa hostil que encuentre y regresar cuando esté muy herido o se haya complicado mucho su misión.\n" +" \n" +"Habilidad usada: supervivencia\n" +"Dificultad: 4\n" +"Efectos:\n" +"> Hace que las criaturas luchen en lugar de que huyan.\n" +"> Elegir puntos específicos para trazar el camino.\n" +"> Puede pasar por escondites para extender su alcance.\n" +" \n" +"Riesgo: Muy Alto\n" +"Tiempo: Traslado\n" +"Posiciones: %d/3\n" -#: src/field.cpp -msgid "puddle of hemolymph" -msgstr "charco de hemolinfa" +#: src/faction_camp.cpp +msgid "Combat Patrol" +msgstr "Patrulla de Combate" -#: src/field.cpp -msgid "shards of chitin" -msgstr "esquirlas de quitina" +#: src/faction_camp.cpp +msgid "Patrolling the region.\n" +msgstr "Patrullando la región.\n" -#: src/field.cpp -msgid "shattered bug leg" -msgstr "pata destrozada de insecto" +#: src/faction_camp.cpp +msgid "Recover Combat Patrol" +msgstr "Recuperar Patrulla de Combate" -#: src/field.cpp -msgid "torn insect organs" -msgstr "órganos desgarrados de insecto" +#: src/faction_camp.cpp +msgid " Expansion Upgrade" +msgstr "Mejora de Expansión" -#: src/field.cpp -msgid "gooey scraps" -msgstr "pedazos pegajosos" +#: src/faction_camp.cpp +msgid "Working to upgrade your expansions!\n" +msgstr "¡Trabajando para mejorar tus expansiones!\n" -#: src/field.cpp -msgid "heap of squishy gore" -msgstr "montón blando de tripas" +#: src/faction_camp.cpp +msgid " Expansion" +msgstr "Expansión" -#: src/field.cpp -msgid "icky mess" -msgstr "quilombo asqueroso" +#: src/faction_camp.cpp +msgid "Recover Ally, " +msgstr "Recuperar Aliado" -#: src/field.cpp -msgid "swirl of tobacco smoke" -msgstr "espiral de humo de tabaco" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Have a companion attempt to completely dissemble a vehicle into components.\n" +" \n" +"Skill used: mechanics\n" +"Difficulty: 2 \n" +"Effects:\n" +"> Removed parts placed on the furniture in the garage.\n" +"> Skill plays a huge role to determine what is salvaged.\n" +" \n" +"Risk: None\n" +"Time: Skill Based \n" +msgstr "" +"Notas:\n" +"Enviar un compañero a intentar desarmar completamente un vehiculo.\n" +" \n" +"Habilidad usada: mecánica\n" +"Dificultad: 2 \n" +"Efectos:\n" +"> Las partes quitadas serán puestas en muebles en el garage.\n" +"> La habilidad determina qué puede ser recuperado.\n" +" \n" +"Riesgo: Ninguno\n" +"Tiempo: Depende de la Habilidad \n" -#: src/field.cpp -msgid "thick tobacco smoke" -msgstr "humo denso de tabaco" +#: src/faction_camp.cpp +msgid " Chop Shop" +msgstr "Desarmadero" -#: src/field.cpp -msgid "tobacco smoke" -msgstr "humo de tabaco" +#: src/faction_camp.cpp +msgid "Working at the chop shop...\n" +msgstr "Trabajando en el desarmadero...\n" -#: src/field.cpp -msgid "pot smoke" -msgstr "humo de porro" +#: src/faction_camp.cpp +msgid " (Finish) Chop Shop" +msgstr " (Terminar) Desarmadero" -#: src/field.cpp -msgid "swirl of pot smoke" -msgstr "espiral de humo de porro" +#: src/faction_camp.cpp +msgid "Working in your kitchen!\n" +msgstr "¡Trabajando en tu cocina!\n" -#: src/field.cpp -msgid "thick pot smoke" -msgstr "humo denso de porro" +#: src/faction_camp.cpp +msgid " (Finish) Cooking" +msgstr " (Terminar) Cocinar" -#: src/field.cpp -msgid "crack smoke" -msgstr "humo de crack" +#: src/faction_camp.cpp +msgid "Working in your blacksmith shop!\n" +msgstr "¡Trabajando en tu herrería!\n" -#: src/field.cpp -msgid "swirl of crack smoke" -msgstr "espiral de humo de crack" +#: src/faction_camp.cpp +msgid " (Finish) Smithing" +msgstr " (Terminar) Herrería" -#: src/field.cpp -msgid "thick crack smoke" -msgstr "humo denso de crack" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plow any spaces that have reverted to dirt or grass.\n" +" \n" +msgstr "" +"Notas:\n" +"Arar cualquier espacio que haya vuelto a ser tierra normal o pasto.\n" +" \n" -#: src/field.cpp -msgid "meth smoke" -msgstr "humo de metanfetaminas" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Restores only the plots created in the last expansion upgrade.\n" +"> Does not damage existing crops.\n" +" \n" +"Risk: None\n" +"Time: 5 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"Habilidad usada: fabricación\n" +"Dificultad: N/D \n" +"Efectos:\n" +"> Recupera solo los espacios creados en la última expansión.\n" +"> No daña los cultivos que haya.\n" +" \n" +"Riesgo: Ninguno\n" +"Tiempo: 5 Min / Lote \n" +"Posiciones: 0/1 \n" -#: src/field.cpp -msgid "swirl of meth smoke" -msgstr "espiral de humo de metanfetaminas" +#: src/faction_camp.cpp +msgid " Plow Fields" +msgstr "Arar Campos" -#: src/field.cpp -msgid "thick meth smoke" -msgstr "humo denso de metanfetaminas" +#: src/faction_camp.cpp +msgid "Working to plow your fields!\n" +msgstr "¡Trabajando en arar tus campos!\n" -#: src/field.cpp -msgid "angry swarm of bees" -msgstr "enjambre enojado de abejas" +#: src/faction_camp.cpp +msgid " (Finish) Plow Fields" +msgstr " (Terminar) Arar Campos" -#: src/field.cpp -msgid "some bees" -msgstr "algunas abejas" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plant designated seeds in the spaces that have already been tilled.\n" +" \n" +msgstr "" +"Notas:\n" +"Planta las semillas designadas en los lugares que hayan sido arados.\n" +" \n" -#: src/field.cpp -msgid "swarm of bees" -msgstr "enjambre de abejas" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose which seed type or all of your seeds.\n" +"> Stops when out of seeds or planting locations.\n" +"> Will plant in ALL dirt mounds in the expansion.\n" +" \n" +"Risk: None\n" +"Time: 1 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"Habilidad usada: supervivencia\n" +"Dificultad: N/D \n" +"Efectos:\n" +"> Elegir cuáles semilla o si usarás todas las semillas.\n" +"> Detenerse cuando se quede sin semillas o sin lotes.\n" +"> Plantará en todos los montículos de tierra de la expansión.\n" +" \n" +"Riesgo: Ninguno\n" +"Tiempo: 1 Min / Lote \n" +"Posiciones: 0/1 \n" -#: src/field.cpp -msgid "airborne incendiary" -msgstr "incendiario aéreo" +#: src/faction_camp.cpp +msgid " Plant Fields" +msgstr "Plantar Campos" -#: src/field.cpp -msgid "relaxation gas" -msgstr "gas relajante" +#: src/faction_camp.cpp +msgid "Working to plant your fields!\n" +msgstr "¡Trabajando en plantar en tus campos!\n" -#: src/field.cpp -msgid "sedative gas" -msgstr "gas sedante" +#: src/faction_camp.cpp +msgid " (Finish) Plant Fields" +msgstr " (Terminar) Plantar Campos" -#: src/field.cpp -msgid "fungal haze" -msgstr "neblina fúngica" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Harvest any plants that are ripe and bring the produce back.\n" +" \n" +msgstr "" +"Notas:\n" +"Cosechar cualquier planta que esté madura y traer el producto.\n" +" \n" -#: src/field.cpp -msgid "thick fungal haze" -msgstr "neblina densa fúngica" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Will dump all harvesting products onto your location.\n" +" \n" +"Risk: None\n" +"Time: 3 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"Habilidad usada: supervivencia\n" +"Dificultad: N/D \n" +"Efectos:\n" +"> Dejará todos los productos cosechados en tu lugar.\n" +" \n" +"Riesgo: Ninguno\n" +"Tiempo: 3 Min / Lote \n" +"Posiciones: 0/1 \n" -#: src/field.cpp -msgid "fungicidal gas" -msgstr "gas fungicida" +#: src/faction_camp.cpp +msgid " Harvest Fields" +msgstr "Cosechar Campos" -#: src/field.cpp -msgid "thick fungicidal gas" -msgstr "gas denso fungicida" +#: src/faction_camp.cpp +msgid "Working to harvest your fields!\n" +msgstr "¡Trabajando en cosechar tus campos!\n" -#: src/field.cpp -msgid "smoke vent" -msgstr "salida de humo" +#: src/faction_camp.cpp +msgid " (Finish) Harvest Fields" +msgstr " (Terminar) Cosechar Campos" -#: src/field.cpp -msgid "Whew... smells like skunk!" -msgstr "Puaj... ¡qué baranda a zorrino!" +#: src/faction_camp.cpp +msgid "Working on your farm!\n" +msgstr "¡Trabajando en tu granja!\n" -#: src/field.cpp -msgid "Man, that smells like some good shit!" -msgstr "¡Chabón, que bien que huele eso!" +#: src/faction_camp.cpp +msgid "departs to search for materials..." +msgstr "se va a buscar materiales..." -#: src/field.cpp -msgid "I don't know... should you really be smoking that stuff?" -msgstr "No sé... ¿te parece que tenés que estar fumando esa cosa?" +#: src/faction_camp.cpp +msgid "There are too many companions working on this mission!" +msgstr "¡Hay demasiados compañeros trabajando en esta misión!" -#: src/field.cpp -msgid "Ew, smells like burning rubber!" -msgstr "¡Puaj, qué baranda a goma quemada!" +#: src/faction_camp.cpp +msgid "departs to search for firewood..." +msgstr "se va a buscar leña..." -#: src/field.cpp -msgid "Ugh, that smells rancid!" -msgstr "¡Uh, qué olor rancio!" +#: src/faction_camp.cpp +msgid "You don't have enough food stored to feed your companion." +msgstr "No tenés suficiente comida almacenada para alimentar a tu compañero." -#: src/field.cpp +#: src/faction_camp.cpp +msgid "departs to dig ditches and scrub toilets..." +msgstr "se va a cavar trincheras y limpiar inodoros..." + +#: src/faction_camp.cpp #, c-format -msgid "A %s hits you!" -msgstr "¡Un/a %s te golpea!" +msgid "%s returns from working in the woods..." +msgstr "%s vuelve de trabajar en el bosque..." -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits %2$s!" -msgstr "¡Un/a %1$s golpea %2$s!" +msgid "%s returns from working on the hide site..." +msgstr "%s vuelve de trabajar en el escondite..." -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits the %2$s!" -msgstr "¡Un/a %1$s golpea al %2$s!" +msgid "%s returns from shuttling gear between the hide site..." +msgstr "%s vuelve de transportar equipamiento al escondite..." -#: src/field.cpp -msgid "The acid burns your body!" -msgstr "¡El ácido te quema el cuerpo!" +#: src/faction_camp.cpp +msgid "departs to search for edible plants..." +msgstr "se va a buscar plantas comestibles..." -#: src/field.cpp -msgid "The acid burns s body!" -msgstr "¡El ácido quema le quema el cuerpo a !" +#: src/faction_camp.cpp +msgid "departs to set traps for small animals..." +msgstr "se va a poner trampas para animales chicos..." -#: src/field.cpp -msgid "The acid burns your legs and feet!" -msgstr "¡El ácido te quema los pies y las piernas!" +#: src/faction_camp.cpp +msgid "departs to hunt for meat..." +msgstr "se va a cazar animales..." -#: src/field.cpp -msgid "The acid burns s legs and feet!" -msgstr "¡El ácido le quema las piernas y los pies a !" +#: src/faction_camp.cpp +msgid "departs to search for recruits..." +msgstr "se va a buscar reclutas..." -#: src/field.cpp -msgid "You're lying in a pool of acid" -msgstr "Estás tirado en un charco de ácido" +#: src/faction_camp.cpp +msgid "departs to survey land..." +msgstr "se va a inspeccionar la zona..." -#: src/field.cpp -msgid "You're standing in a pool of acid" -msgstr "Estás parado en un charco de ácido." +#: src/faction_camp.cpp +msgid "You have already selected a surveyor!" +msgstr "¡Ya seleccionaste un topógrafo!" -#: src/field.cpp -msgid "The sap sticks to you!" -msgstr "¡La savia se te pega!" +#: src/faction_camp.cpp +msgid "begins to upgrade the expansion..." +msgstr "empieza a mejorar la expansión..." -#: src/field.cpp -msgid "The sap sticks to !" -msgstr "¡La savia se pega a !" +#: src/faction_camp.cpp +msgid "You already have a worker upgrading that expansion!" +msgstr "¡Ya tenés un trabajador mejorando la expansión!" -#: src/field.cpp -msgid "The sludge is thick and sticky. You struggle to pull free." -msgstr "El barro es espeso y pegajoso. Luchás para liberarte." +#: src/faction_camp.cpp +msgid "You don't have the materials for the upgrade." +msgstr "No tenés los materiales para la mejora." -#: src/field.cpp -msgid "You burn your legs and feet!" -msgstr "¡Te quemás los pies y las piernas!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your farm with something..." +msgstr "%s vuelve de tu granja con algo..." -#: src/field.cpp -msgid "You're burning up!" -msgstr "¡Te estás quemando!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns to you with something..." +msgstr "%s vuelve con algo..." -#: src/field.cpp -msgid "You're set ablaze!" -msgstr "¡Quedás encendido en llamas!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your kitchen with something..." +msgstr "%s vuelve de tu cocina con algo..." -#: src/field.cpp -msgid "Your whole body is burning!" -msgstr "¡Se te está quemando todo el cuerpo!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your blacksmith shop with something..." +msgstr "%s vuelve de tu herrería con algo..." -#: src/field.cpp -msgid " burns their legs and feet!" -msgstr "¡ se quema los pies y las piernas!" +#: src/faction_camp.cpp +msgid "begins plowing the field..." +msgstr "empieza a arar el campo..." -#: src/field.cpp -msgid " is burning up!" +#: src/faction_camp.cpp +msgid "You already have someone plowing that field." +msgstr "Ya tenés a alguien arando ese campo." + +#: src/faction_camp.cpp +msgid "You have no additional seeds to give your companions..." +msgstr "No tenés más semillas para darle a tus compañeros..." + +#: src/faction_camp.cpp +msgid "begins planting the field..." +msgstr "empieza a plantar el campo..." + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Which seeds do you wish to have planted?" +msgstr "¿Qué semilla querés plantar?" + +#: src/faction_camp.cpp +msgid "You already have someone planting that field." +msgstr "Ya tenés a alguien plantando semillas en ese campo." + +#: src/faction_camp.cpp +msgid "begins to harvest the field..." +msgstr "empieza a cosechar el campo..." + +#: src/faction_camp.cpp +msgid "You already have someone harvesting that field." +msgstr "Ya tenés a alguien cosechando ese campo." + +#: src/faction_camp.cpp +msgid "You already have someone working in that garage." +msgstr "Ya tenés a alguien trabajando en el garage." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your garage..." +msgstr "%s vuelve de tu garage..." + +#: src/faction_camp.cpp +msgid "You already have a companion upgrading the camp." +msgstr "Ya tenés un compañero mejorando el campamento." + +#: src/faction_camp.cpp +msgid "begins to upgrade the camp..." +msgstr "comienza a mejorar el campamento..." + +#: src/faction_camp.cpp +msgid "Forests and swamps are the only valid cutting locations." +msgstr "" +"Los únicos lugares válidos para cortar árboles son los bosques y los " +"pantanos." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Trip Estimate:\n" +"%s" +msgstr "" +"Estimación de Viaje:\n" +"%s" + +#: src/faction_camp.cpp +msgid "departs to cut logs..." +msgstr "se va a cortar troncos..." + +#: src/faction_camp.cpp +msgid "Forests, swamps, and fields are valid hide site locations." +msgstr "" +"Los lugares válidos para escondites son los bosques, pantanos y campos." + +#: src/faction_camp.cpp +msgid "departs to build a hide site..." +msgstr "se va a construir un escondite..." + +#: src/faction_camp.cpp +msgid "You need equipment to setup a hide site..." +msgstr "Necesitás equipamiento para establecer un escondite..." + +#: src/faction_camp.cpp +msgid "You must select an existing hide site." +msgstr "Tenés que seleccionar un escondite ya existente." + +#: src/faction_camp.cpp +msgid "Bring gear back?" +msgstr "¿Querés traer de vuelta el equipo?" + +#: src/faction_camp.cpp +msgid "departs for the hide site..." +msgstr "se va al escondite..." + +#: src/faction_camp.cpp +msgid "You need equipment to transport between the hide site..." +msgstr "Necesitás equipamiento para trasladar al escondite..." + +#: src/faction_camp.cpp +msgid "" +"Select a start and end point. Line must be straight. Fields, forests, and " +"swamps are valid fortification locations. In addition to existing " +"fortification constructions." +msgstr "" +"Elegí un punto de inicio y uno final. La línea tiene que ser derecho. " +"Campos, bosques y pantanos son lugares válidos para fortificaciones. Se " +"agregan a las fortificaciones existentes." + +#: src/faction_camp.cpp +msgid "Select an end point." +msgstr "Elegí un punto final." + +#: src/faction_camp.cpp +msgid "Invalid terrain in construction path." +msgstr "No es un terreno válido para construir un camino." + +#: src/faction_camp.cpp +msgid "You don't have the material to build the fortification." +msgstr "No tenés el material para construir la fortificación." + +#: src/faction_camp.cpp +msgid "begins constructing fortifications..." +msgstr "comienza a construir fortificaciones..." + +#: src/faction_camp.cpp +msgid "" +"Select checkpoints until you reach maximum range or select the last point " +"again to end." +msgstr "" +"Elegí los puntos hasta que alcances el rango máximo o elegí el último punto " +"otra vez para terminar." + +#: src/faction_camp.cpp +msgid "departs on patrol..." +msgstr "se va a patrullar..." + +#: src/faction_camp.cpp +msgid "You don't have the materials to craft that" +msgstr "No tenés los materiales para fabricar eso" + +#: src/faction_camp.cpp +#, c-format +msgid "Batch crafting %s [MAX: %d]: " +msgstr "Fabricar en grupo %s [MAX: %d]: " + +#: src/faction_camp.cpp +msgid "Your batch is too large!" +msgstr "¡Ese grupo es demasiado grande!" + +#: src/faction_camp.cpp +msgid "You already have someone working in that expansion." +msgstr "Ya tenés a alguien trabajando en esa expansión." + +#: src/faction_camp.cpp +msgid "begins to work..." +msgstr "comienza a trabajar..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +" Chopping this vehicle:\n" +"%s" +msgstr "" +" Desarmando este vehículo:\n" +"%s" + +#: src/faction_camp.cpp +msgid "begins working in the garage..." +msgstr "empieza a trabajar en el garage..." + +#: src/faction_camp.cpp +msgid "Your companion seems disappointed that your pantry is empty..." +msgstr "Tu compañero parece decepcionado porque tu despensa está vacía..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s returns from upgrading the camp having earned a bit of experience..." +msgstr "" +"%s vuelve de mejorar el campamento habiendo ganado un poco de experiencia..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from doing the dirty work to keep the camp running..." +msgstr "" +"%s vuelve de hacer el trabajo sucio para que el campamento siga " +"funcionando..." + +#: src/faction_camp.cpp +msgid "Sorting points have changed, forcing reset." +msgstr "Los puntos de orden fueron cambiados, forzando el reajuste." + +#: src/faction_camp.cpp +msgid "gathering materials" +msgstr "recolectando materiales" + +#: src/faction_camp.cpp +msgid "foraging for edible plants" +msgstr "recolectando plantas comestibles" + +#: src/faction_camp.cpp +msgid "trapping small animals" +msgstr "atrapando animales pequeños" + +#: src/faction_camp.cpp +msgid "hunting for meat" +msgstr "cazando animales" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from %s carrying supplies and has a bit more experience..." +msgstr "" +"%s vuelve de %s trayendo suministros y tiene un poco más de experiencia..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from constructing fortifications..." +msgstr "%s vuelve de construir fortificaciones..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from searching for recruits with a bit more experience..." +msgstr "" +"%s vuelve de buscar por nuevos reclutas con un poco más de experiencia..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s encountered %s..." +msgstr "%s encontró %s..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't find anyone to recruit..." +msgstr "%s no encontró nadie para reclutar..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s convinced %s to hear a recruitment offer from you..." +msgstr "%s convenció %s a que te escuche hablar a vos por el reclutamiento..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested in anything %s had to offer..." +msgstr "%s no tenía ningún interés en lo que le podía ofrecer %s..." + +#: src/faction_camp.cpp +msgid "" +"NPC Overview:\n" +" \n" +msgstr "" +"Vista general de PNJ:\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Name: %20s\n" +" \n" +msgstr "" +"Nombre: %20s\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "Strength: %10d\n" +msgstr "Fuerza: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Dexterity: %10d\n" +msgstr "Destreza: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Intelligence: %10d\n" +msgstr "Inteligencia: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Perception: %10d\n" +" \n" +msgstr "" +"Percepción: %10d\n" +" \n" + +#: src/faction_camp.cpp +msgid "Top 3 Skills:\n" +msgstr "3 Mejores Habilidades:\n" + +#: src/faction_camp.cpp +msgid "Asking for:\n" +msgstr "Pide:\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"> Food: %10d days\n" +" \n" +msgstr "" +"> Comida: %10d días\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Faction Food:%9d days\n" +" \n" +msgstr "" +"Comida de Bando:%9d días\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Recruit Chance: %10d%%\n" +" \n" +msgstr "" +"Probabilidad de Reclutamiento: %10d%%\n" +" \n" + +#: src/faction_camp.cpp +msgid "Select an option:" +msgstr "Elegir una opción:" + +#: src/faction_camp.cpp +msgid "Increase Food" +msgstr "Incrementar Comida" + +#: src/faction_camp.cpp +msgid "Decrease Food" +msgstr "Disminuir Comida" + +#: src/faction_camp.cpp +msgid "Make Offer" +msgstr "Hacer Oferta" + +#: src/faction_camp.cpp +msgid "Not Interested" +msgstr "No Estás Interesado" + +#: src/faction_camp.cpp +msgid "You decide you aren't interested..." +msgstr "Decidiste que no estás interesado..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s has been convinced to join!" +msgstr "¡%s ha sido convencido de unirse!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested..." +msgstr "%s no estaba interesado..." + +#: src/faction_camp.cpp +msgid "Your companion hit a river and didn't know how to swim..." +msgstr "Tu compañera llega a un río y no sabe nadar..." + +#: src/faction_camp.cpp +msgid "" +"Your companion hit a river and didn't know how to swim well enough to " +"cross..." +msgstr "" +"Tu compañero llega a un río y no sabe nadar bien como para cruzarlo " +"nadando..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't return from patrol..." +msgstr "%s no volvió de patrullar..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from patrol..." +msgstr "%s vuelve de patrullar..." + +#: src/faction_camp.cpp +msgid "Select an expansion:" +msgstr "Elegí una expansión:" + +#: src/faction_camp.cpp +msgid "You choose to wait..." +msgstr "Elegís esperar..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from surveying for the expansion." +msgstr "%s vuelve de inspeccionar la zona para una expansión." + +#: src/faction_camp.cpp +msgid "No seeds to plant!" +msgstr "¡No hay semillas para plantar!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from working your fields..." +msgstr "%s vuelve de trabajar en tus campos..." + +#: src/faction_camp.cpp +msgid "MAIN" +msgstr "PRINCIPAL" + +#: src/faction_camp.cpp +msgid " [N] " +msgstr " [N] " + +#: src/faction_camp.cpp +msgid " [NE] " +msgstr " [NE] " + +#: src/faction_camp.cpp +msgid " [E] " +msgstr " [E] " + +#: src/faction_camp.cpp +msgid " [SE] " +msgstr " [SE] " + +#: src/faction_camp.cpp +msgid " [S] " +msgstr " [S] " + +#: src/faction_camp.cpp +msgid " [SW] " +msgstr " [SO] " + +#: src/faction_camp.cpp +msgid " [W] " +msgstr " [O] " + +#: src/faction_camp.cpp +msgid " [NW] " +msgstr " [NO] " + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Base Missions" +msgstr "Misiones de Base" + +#: src/faction_camp.cpp +msgid "Farm Expansion" +msgstr "Expansión de Granja" + +#: src/faction_camp.cpp +msgid "Garage Expansion" +msgstr "Expansión de Garage" + +#: src/faction_camp.cpp +msgid "Kitchen Expansion" +msgstr "Expansión de Cocina" + +#: src/faction_camp.cpp +msgid "Blacksmith Expansion" +msgstr "Expansión de Herrería" + +#: src/faction_camp.cpp +msgid "Empty Expansion" +msgstr "Expansión Vacía" + +#: src/faction_camp.cpp +#, c-format +msgid "Select a location between %d and %d tiles away." +msgstr "Elegí un lugar entre %d y %d espacios de distancia." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"You must select a target between %d and %d range from the base. Range: %d" +msgstr "" +"Tenés que seleccionar un objetivo entre %d y %d de rango de la base. Rango: " +"%d" + +#: src/faction_camp.cpp +msgid "You must be able to see the target that you select." +msgstr "Tenés que poder ver el objetivo que seleccionaste." + +#: src/faction_camp.cpp +msgid "Do you want to bounce off this location to extend range?" +msgstr "¿Querés parar en este lugar para extender el alcance?" + +#: src/faction_camp.cpp +msgid "food for you" +msgstr "comida para vos" + +#: src/faction_camp.cpp +msgid "food for companions" +msgstr "comida para compañeros" + +#: src/faction_camp.cpp +msgid "weapons" +msgstr "armas" + +#: src/faction_camp.cpp +msgid "clothing" +msgstr "ropa" + +#: src/faction_camp.cpp +msgid "bionics" +msgstr "biónicos" + +#: src/faction_camp.cpp +msgid "all kinds of tools" +msgstr "toda clase de herramientas" + +#: src/faction_camp.cpp +msgid "wood of various sorts" +msgstr "maderas de distintos tipos" + +#: src/faction_camp.cpp +msgid "trash and rotting food" +msgstr "basura y comida podrida" + +#: src/faction_camp.cpp +msgid "books" +msgstr "libros" + +#: src/faction_camp.cpp +msgid "medication" +msgstr "medicamentos" + +#: src/faction_camp.cpp +msgid "ammo" +msgstr "munición" + +#: src/faction_camp.cpp +#, c-format +msgid "Reset point: %s?" +msgstr "¿Querés resetear los puntos: %s?" + +#: src/faction_camp.cpp +msgid "" +" Items New Point Old Point\n" +" \n" +msgstr "" +" Objetos Punto Nuevo Punto Viejo\n" +" \n" + +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +" Save Points?" +msgstr "" +"\n" +" \n" +" ¿Guardar Puntos?" + +#: src/faction_camp.cpp +msgid "Revert to default points?" +msgstr "¿Revertir a puntos por defecto?" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15.2f (km)\n" +msgstr ">Distancia:%15.2f (km)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">One Way: %15d (trips)\n" +msgstr ">Una Dirección: %15d (viajes)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15.2f (km)\n" +msgstr ">Recorridos: %15.2f (km)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15d (m)\n" +msgstr ">Distancia:%15d (m)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15d (m)\n" +msgstr ">Recorridos: %15d (m)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Travel: %23s\n" +msgstr ">Viaje: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Working: %23s\n" +msgstr ">Trabajo: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Total: %23s\n" +msgstr "Total: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Food: %15d (kcal)\n" +" \n" +msgstr "" +"Comida: %15d (kcal)\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"%s\n" +" \n" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s \n" +"Risk: None\n" +"Time: %s\n" +msgstr "" +"Notas:\n" +"%s\n" +" \n" +"Habilidad usada: %s\n" +"Dificultad: %d\n" +"%s \n" +"Riesgo: Ninguno\n" +"Tiempo: %s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s\n" +"Time: %s\n" +msgstr "" +"Habilidad usada: %s\n" +"Dificultad: %d\n" +"%s\n" +"Tiempo: %s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" +" \n" +"Skill used: speech\n" +"Difficulty: 2 \n" +"Base Score: +%3d%%\n" +"> Expansion Bonus: +%3d%%\n" +"> Faction Bonus: +%3d%%\n" +"> Special Bonus: +%3d%%\n" +" \n" +"Total: Skill +%3d%%\n" +" \n" +"Risk: High\n" +"Time: 4 Days\n" +"Positions: %d/1\n" +msgstr "" +"Notas:\n" +"Reclutar seguidores adicionales es muy caro y peligroso. El resultado dependerá mucho de la habilidad del compañero enviado y del atractivo de tu base.\n" +" \n" +"Habilidad usada: hablar\n" +"Dificultad: 2 \n" +"Puntuación de Base: +%3d%%\n" +"> Bonus por Expansión: +%3d%%\n" +"> Bonus por Bando: +%3d%%\n" +"> Bonus Especial: +%3d%%\n" +" \n" +"Total: Habilidad +%3d%%\n" +" \n" +"Riesgo: Alto\n" +"Tiempo: 4 Días\n" +"Posiciones: %d/1\n" + +#: src/faction_camp.cpp +msgid "" +"Notes: \n" +"Send a companion to gather materials for the next camp upgrade.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +msgstr "" +"Notas: \n" +"Enviar compañero a recoger materiales para la próxima mejora del campamento.\n" +" \n" +"Habilidad usada: supervivencia\n" +"Dificultad: N/D \n" +"Posibilidad de Recolectar:\n" + +#: src/faction_camp.cpp +msgid "" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: " +msgstr "" +" \n" +"Riesgo: Muy Poco\n" +"Tiempo: 3 Horas, Repetir\n" +"Posiciones: " + +#: src/faction_camp.cpp +msgid "Harvestable: " +msgstr "Cosechable: " + +#: src/faction_camp.cpp +msgid "Ready for Planting: " +msgstr "Listo para Plantar: " + +#: src/faction_camp.cpp +msgid "Needs Plowing: " +msgstr "Necesita Arar: " + +#: src/faction_camp.cpp +#, c-format +msgid "Name: %25s\n" +msgstr "Nombre: %25s\n" + +#: src/faction_camp.cpp +msgid "---- Engines ----\n" +msgstr "---- Motores ----\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Engine: %25s\n" +msgstr "Motor: %25s\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Status: %24d%%\n" +msgstr ">Estado: %24d%%\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Fuel: %25s\n" +msgstr ">Combustible: %25s\n" + +#: src/faction_camp.cpp +msgid "---- Fuel Storage & Battery ----\n" +msgstr "---- Almacenamiento de combustible & Batería ----\n" + +#: src/faction_camp.cpp +msgid "Estimated Chop Time: 5 Days\n" +msgstr "Tiempo Estimado de Tala: 5 Días\n" + +#: src/faction_camp.cpp +msgid "No items are located at the drop point..." +msgstr "No hay objetos ubicados en el punto de entrega..." + +#: src/faction_camp.cpp +#, c-format +msgid "You distribute %d kcal worth of food to your companions." +msgstr "Distribuís los %d kcal de comida entre tus compañeros." + +#: src/faction_camp.cpp +#, c-format +msgid "While %s, a silent specter approaches %s..." +msgstr "Mientras %s, se acerca un espectador silencioso a %s..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s notices the antlered horror and slips away before it gets too close." +msgstr "" +"%s ve un horror con cuernos y se escabulle antes de que se le acerque " +"demasiado." + +#: src/faction_camp.cpp +#, c-format +msgid "Another survivor approaches %s asking for directions." +msgstr "Otro sobreviviente se acerca a %s preguntando direcciones." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Fearful that he may be an agent of some hostile faction, %s doesn't mention " +"the camp." +msgstr "" +"Por temor a que pertenezca a un bando hostil, %s no menciona el campamento." + +#: src/faction_camp.cpp +msgid "The two part on friendly terms and the survivor isn't seen again." +msgstr "" +"Los dos se separan en buenos términos y el sobreviviente no es vuelto a ver." + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't detect the ambush until it was too late!" +msgstr "¡%s no se dio cuenta de la emboscada hasta que fue demasiado tarde!" + +#: src/faction_camp.cpp +#, c-format +msgid "The bull moose charged %s from the tree line..." +msgstr "El alce macho ataca a %s desde los árboles..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Despite being caught off guard %s was able to run away until the moose gave " +"up pursuit." +msgstr "" +"A pesar de ser agarrado/a por sorpresa, %s pudo escaparse del alce hasta " +"que dejó de perseguirlo/a." + +#: src/faction_camp.cpp +#, c-format +msgid "The jabberwock grabbed %s by the arm from behind and began to scream." +msgstr "El jabberwock agarró a %s por el brazo desde atrás y empezó a gritar." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Terrified, %s spun around and delivered a massive kick to the creature's " +"torso..." +msgstr "" +"Horrorizado/a, %s giró y le dió una tremenda patada a la criatura en el " +"torso..." + +#: src/faction_camp.cpp +#, c-format +msgid "Collapsing into a pile of gore, %s walked away unscathed..." +msgstr "Cayendo en una pila de tripas, %s se retiró ileso/a..." + +#: src/faction_camp.cpp +msgid "(Sounds like bullshit, you wonder what really happened.)" +msgstr "(Parece todo mentira, te preguntás qué habrá pasado.)" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s turned to find the hideous black eyes of a giant wasp staring back from " +"only a few feet away..." +msgstr "" +"%s se dió vuelta y encontró los horribles ojos negros de una avispa gigante " +"mirandolo/a desde unos pocos metros..." + +#: src/faction_camp.cpp +msgid "The screams were terrifying, there was nothing anyone could do." +msgstr "Los gritos eran terroríficos, nadie podía hacer nada." + +#: src/faction_camp.cpp +#, c-format +msgid "Pieces of %s were found strewn across a few bushes." +msgstr "Se encontraron pedazos de %s desparramados entre los arbustos." + +#: src/faction_camp.cpp +msgid "(You wonder if your companions are fit to work on their own...)" +msgstr "" +"(Te preguntás si tus compañeros están preparados para trabajar solos...)" + +#: src/field.cpp +msgid "blood splatter" +msgstr "salpicadura de sangre" + +#: src/field.cpp +msgid "blood stain" +msgstr "mancha de sangre" + +#: src/field.cpp +msgid "puddle of blood" +msgstr "charco de sangre" + +#: src/field.cpp +msgid "bile splatter" +msgstr "salpicadura de bilis" + +#: src/field.cpp +msgid "bile stain" +msgstr "mancha de bilis" + +#: src/field.cpp +msgid "puddle of bile" +msgstr "charco de bilis" + +#: src/field.cpp +msgid "bloody meat chunks" +msgstr "pedazos sangrientos de carne" + +#: src/field.cpp +msgid "heap of gore" +msgstr "montón de tripas" + +#: src/field.cpp +msgid "scraps of flesh" +msgstr "restos de carne" + +#: src/field.cpp +msgid "broken vegetation tangle" +msgstr "enredo de vegetación rota" + +#: src/field.cpp +msgid "shattered branches and leaves" +msgstr "ramas y hojas destrozadas" + +#: src/field.cpp +msgid "shredded leaves and twigs" +msgstr "hojas y ramitas destruidas" + +#: src/field.cpp +msgid "cobwebs" +msgstr "telarañas" + +#: src/field.cpp +msgid "thick webs" +msgstr "telarañas gruesas" + +#: src/field.cpp +msgid "webs" +msgstr "telarañas" + +#: src/field.cpp +msgid "puddle of slime" +msgstr "charco de slime" + +#: src/field.cpp +msgid "slime stain" +msgstr "mancha de slime" + +#: src/field.cpp +msgid "slime trail" +msgstr "rastro de slime" + +#: src/field.cpp +msgid "acid splatter" +msgstr "salpicadura de ácido" + +#: src/field.cpp +msgid "acid streak" +msgstr "mancha de ácido" + +#: src/field.cpp +msgid "pool of acid" +msgstr "charco de ácido" + +#: src/field.cpp +msgid "glob of sap" +msgstr "pegote de savia" + +#: src/field.cpp +msgid "pool of sap" +msgstr "charco de savia" + +#: src/field.cpp +msgid "sap splatter" +msgstr "salpicadura de savia" + +#: src/field.cpp +msgid "sludge trail" +msgstr "rastro de barro" + +#: src/field.cpp +msgid "thick sludge trail" +msgstr "rastro grueso de barro" + +#: src/field.cpp +msgid "thin sludge trail" +msgstr "rastro fino de barro" + +#: src/field.cpp +msgid "raging fire" +msgstr "fuego intenso" + +#: src/field.cpp +msgid "small fire" +msgstr "fuego chico" + +#: src/field.cpp +msgid "legacy rubble" +msgstr "escombro antiguo" + +#: src/field.cpp +msgid "smoke" +msgstr "humo" + +#: src/field.cpp +msgid "thick smoke" +msgstr "humo denso" + +#: src/field.cpp +msgid "thin smoke" +msgstr "humo fino" + +#: src/field.cpp +msgid "hazy cloud" +msgstr "nube brumosa" + +#: src/field.cpp +msgid "thick toxic gas" +msgstr "gas tóxico denso" + +#: src/field.cpp +msgid "toxic gas" +msgstr "gas tóxico" + +#: src/field.cpp +msgid "tear gas" +msgstr "gas lacrimógeno" + +#: src/field.cpp +msgid "thick tear gas" +msgstr "gas lacrimógeno denso" + +#: src/field.cpp +msgid "radioactive gas" +msgstr "gas radiactivo" + +#: src/field.cpp +msgid "thick radioactive gas" +msgstr "gas radiactivo denso" + +#: src/field.cpp +msgid "gas vent" +msgstr "conducto de gas" + +#: src/field.cpp +msgid "electric cloud" +msgstr "nube eléctrica" + +#: src/field.cpp +msgid "electric crackle" +msgstr "chisporroteo eléctrico" + +#: src/field.cpp +msgid "sparks" +msgstr "chispas" + +#: src/field.cpp +msgid "odd ripple" +msgstr "onda extraña" + +#: src/field.cpp +msgid "swirling air" +msgstr "aire turbulento" + +#: src/field.cpp +msgid "tear in reality" +msgstr "tajo en la realidad" + +#: src/field.cpp +msgid "faint plasma" +msgstr "plasma leve" + +#: src/field.cpp +msgid "glaring plasma" +msgstr "plasma deslumbrante" + +#: src/field.cpp +msgid "glowing plasma" +msgstr "plasma brillante" + +#: src/field.cpp +msgid "beam of light" +msgstr "rayo de luz" + +#: src/field.cpp +msgid "faint glimmer" +msgstr "destello leve" + +#: src/field.cpp +msgid "intense beam of light" +msgstr "rayo intenso de luz" + +#: src/field.cpp +msgid "spotlight" +msgstr "foco" + +#: src/field.cpp +msgid "dazzling" +msgstr "cegador" + +#: src/field.cpp +msgid "plant sap splatter" +msgstr "salpicadura de savia de planta" + +#: src/field.cpp +msgid "plant sap stain" +msgstr "mancha de savia de planta" + +#: src/field.cpp +msgid "puddle of resin" +msgstr "charco de resina" + +#: src/field.cpp +msgid "bug blood splatter" +msgstr "salpicadura de sangre de insecto" + +#: src/field.cpp +msgid "bug blood stain" +msgstr "mancha de sangre de insecto" + +#: src/field.cpp +msgid "puddle of bug blood" +msgstr "charco de sangre de insecto" + +#: src/field.cpp +msgid "hemolymph splatter" +msgstr "salpicadura de hemolinfa" + +#: src/field.cpp +msgid "hemolymph stain" +msgstr "mancha de hemolinfa" + +#: src/field.cpp +msgid "puddle of hemolymph" +msgstr "charco de hemolinfa" + +#: src/field.cpp +msgid "shards of chitin" +msgstr "esquirlas de quitina" + +#: src/field.cpp +msgid "shattered bug leg" +msgstr "pata destrozada de insecto" + +#: src/field.cpp +msgid "torn insect organs" +msgstr "órganos desgarrados de insecto" + +#: src/field.cpp +msgid "gooey scraps" +msgstr "pedazos pegajosos" + +#: src/field.cpp +msgid "heap of squishy gore" +msgstr "montón blando de tripas" + +#: src/field.cpp +msgid "icky mess" +msgstr "quilombo asqueroso" + +#: src/field.cpp +msgid "swirl of tobacco smoke" +msgstr "espiral de humo de tabaco" + +#: src/field.cpp +msgid "thick tobacco smoke" +msgstr "humo denso de tabaco" + +#: src/field.cpp +msgid "tobacco smoke" +msgstr "humo de tabaco" + +#: src/field.cpp +msgid "pot smoke" +msgstr "humo de porro" + +#: src/field.cpp +msgid "swirl of pot smoke" +msgstr "espiral de humo de porro" + +#: src/field.cpp +msgid "thick pot smoke" +msgstr "humo denso de porro" + +#: src/field.cpp +msgid "crack smoke" +msgstr "humo de crack" + +#: src/field.cpp +msgid "swirl of crack smoke" +msgstr "espiral de humo de crack" + +#: src/field.cpp +msgid "thick crack smoke" +msgstr "humo denso de crack" + +#: src/field.cpp +msgid "meth smoke" +msgstr "humo de metanfetaminas" + +#: src/field.cpp +msgid "swirl of meth smoke" +msgstr "espiral de humo de metanfetaminas" + +#: src/field.cpp +msgid "thick meth smoke" +msgstr "humo denso de metanfetaminas" + +#: src/field.cpp +msgid "angry swarm of bees" +msgstr "enjambre enojado de abejas" + +#: src/field.cpp +msgid "some bees" +msgstr "algunas abejas" + +#: src/field.cpp +msgid "swarm of bees" +msgstr "enjambre de abejas" + +#: src/field.cpp +msgid "airborne incendiary" +msgstr "incendiario aéreo" + +#: src/field.cpp +msgid "relaxation gas" +msgstr "gas relajante" + +#: src/field.cpp +msgid "sedative gas" +msgstr "gas sedante" + +#: src/field.cpp +msgid "fungal haze" +msgstr "neblina fúngica" + +#: src/field.cpp +msgid "thick fungal haze" +msgstr "neblina densa fúngica" + +#: src/field.cpp +msgid "fungicidal gas" +msgstr "gas fungicida" + +#: src/field.cpp +msgid "thick fungicidal gas" +msgstr "gas denso fungicida" + +#: src/field.cpp +msgid "smoke vent" +msgstr "salida de humo" + +#: src/field.cpp +msgid "Whew... smells like skunk!" +msgstr "Puaj... ¡qué baranda a zorrino!" + +#: src/field.cpp +msgid "Man, that smells like some good shit!" +msgstr "¡Chabón, que bien que huele eso!" + +#: src/field.cpp +msgid "I don't know... should you really be smoking that stuff?" +msgstr "No sé... ¿te parece que tenés que estar fumando esa cosa?" + +#: src/field.cpp +msgid "Ew, smells like burning rubber!" +msgstr "¡Puaj, qué baranda a goma quemada!" + +#: src/field.cpp +msgid "Ugh, that smells rancid!" +msgstr "¡Uh, qué olor rancio!" + +#: src/field.cpp +#, c-format +msgid "A %s hits you!" +msgstr "¡Un/a %s te golpea!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits %2$s!" +msgstr "¡Un/a %1$s golpea %2$s!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits the %2$s!" +msgstr "¡Un/a %1$s golpea al %2$s!" + +#: src/field.cpp +msgid "The acid burns your body!" +msgstr "¡El ácido te quema el cuerpo!" + +#: src/field.cpp +msgid "The acid burns s body!" +msgstr "¡El ácido quema le quema el cuerpo a !" + +#: src/field.cpp +msgid "The acid burns your legs and feet!" +msgstr "¡El ácido te quema los pies y las piernas!" + +#: src/field.cpp +msgid "The acid burns s legs and feet!" +msgstr "¡El ácido le quema las piernas y los pies a !" + +#: src/field.cpp +msgid "You're lying in a pool of acid" +msgstr "Estás tirado en un charco de ácido" + +#: src/field.cpp +msgid "You're standing in a pool of acid" +msgstr "Estás parado en un charco de ácido." + +#: src/field.cpp +msgid "The sap sticks to you!" +msgstr "¡La savia se te pega!" + +#: src/field.cpp +msgid "The sap sticks to !" +msgstr "¡La savia se pega a !" + +#: src/field.cpp +msgid "The sludge is thick and sticky. You struggle to pull free." +msgstr "El barro es espeso y pegajoso. Luchás para liberarte." + +#: src/field.cpp +msgid "You burn your legs and feet!" +msgstr "¡Te quemás los pies y las piernas!" + +#: src/field.cpp +msgid "You're burning up!" +msgstr "¡Te estás quemando!" + +#: src/field.cpp +msgid "You're set ablaze!" +msgstr "¡Quedás encendido en llamas!" + +#: src/field.cpp +msgid "Your whole body is burning!" +msgstr "¡Se te está quemando todo el cuerpo!" + +#: src/field.cpp +msgid " burns their legs and feet!" +msgstr "¡ se quema los pies y las piernas!" + +#: src/field.cpp +msgid " is burning up!" msgstr "¡ se está quemando!" #: src/field.cpp @@ -137670,7 +140848,7 @@ msgstr "%s. Auto-moverse cancelado" #, c-format msgctxt "cancel_activity_or_ignore_query" msgid "%s %s (Case Sensitive)" -msgstr "%s %s (Sensible a Mayúsculas)" +msgstr "%s %s (Usá Mayúscula)" #: src/game.cpp #, c-format @@ -138011,6 +141189,14 @@ msgstr "Teletransportarse - Mapa general adyacente" msgid "Test trait group" msgstr "Probar grupo de peculiaridades" +#: src/game.cpp +msgid "Show debug message" +msgstr "Mostrar mensaje debug" + +#: src/game.cpp +msgid "Crash game (test crash handling)" +msgstr "" + #: src/game.cpp msgid "Quit to Main Menu" msgstr "Salir al Menú Principal" @@ -138137,9 +141323,11 @@ msgstr "hora" msgid "minute" msgstr "minuto" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp src/martialarts.cpp msgid "turn" -msgstr "turno" +msgid_plural "turns" +msgstr[0] "turno" +msgstr[1] "turnos" #: src/game.cpp msgid "Set year to?" @@ -138191,8 +141379,7 @@ msgstr "TOTAL DE MUERTES: %d" #: src/game.cpp msgid " You are forgotten among the billions lost in the cataclysm..." msgstr "" -" Quedás olvidado entre los miles de millones perdidos en el " -"cataclismo..." +"Quedás olvidado/a entre los miles de millones perdidos en el cataclismo..." #: src/game.cpp msgid "" @@ -138791,7 +141978,7 @@ msgstr "Usar objeto en" msgid "Sort armor" msgstr "Ordenar ropa" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "Atacar" @@ -138822,7 +142009,7 @@ msgstr "Miembros de: " msgid "Use which item?" msgstr "¿Qué objeto querés usar?" -#: src/game.cpp src/iuse.cpp src/veh_interact.cpp +#: src/game.cpp src/iuse.cpp msgid "Never mind" msgstr "No importa" @@ -138860,7 +142047,7 @@ msgstr "" "agregue más combustible." #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." +msgid "It looks solid, and will burn for a few hours without extra fuel." msgstr "" "Se ve firme y va a seguir ardiendo por unas horas aunque no se le agregue " "más combustible." @@ -139322,7 +142509,7 @@ msgctxt "butchery menu" msgid "Cut up %s (%d)" msgstr "Cortar %s (%d)" -#. ~ Name and number of items listed for disassembling +#. ~ Name, number of items and time to complete disassembling #: src/game.cpp #, c-format msgctxt "butchery menu" @@ -139359,8 +142546,8 @@ msgid "Choose corpse to butcher / item to disassemble" msgstr "Elegí un cadáver para carnear / objeto para desarmar" #: src/game.cpp -msgid "Butcher everything" -msgstr "Carnear todo" +msgid "Quick butcher everything" +msgstr "Carnear rápido todo" #: src/game.cpp msgid "Disassemble everything once" @@ -139371,8 +142558,8 @@ msgid "Disassemble everything" msgstr "Desarmar todo" #: src/game.cpp -msgid "Cut up all you can" -msgstr "Cortar todo lo que puedas" +msgid "Cut up everything" +msgstr "Cortar todo" #: src/game.cpp msgid "" @@ -139397,7 +142584,7 @@ msgstr "Carneada rápida" #: src/game.cpp msgid "" -"This techinque is used when you are in a hurry, but still want to harvest " +"This technique is used when you are in a hurry, but still want to harvest " "something from the corpse. Yields are lower as you don't try to be precise," " but it's useful if you don't want to set up a workshop. Prevents zombies " "from raising." @@ -139430,7 +142617,7 @@ msgstr "Preparar cadáver" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "" @@ -139445,7 +142632,7 @@ msgstr "Descuartizar cadáver" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." @@ -140172,11 +143359,11 @@ msgstr "A mitad de camino hay un desnivel abrupto. ¿Querés saltar?" #: src/game.cpp msgid "AUTO: goes down" -msgstr "AUTO: va hacia abajo" +msgstr "AUTO: escalera abajo" #: src/game.cpp msgid "AUTO: goes up" -msgstr "AUTO: va hacia arriba" +msgstr "AUTO: escalera arriba" #: src/game.cpp #, c-format @@ -140339,6 +143526,10 @@ msgstr "Sentís cómo se descompone tu cuerpo." msgid "You feel fatigue seeping into your body." msgstr "Sentís el cansancio metiéndose en tu cuerpo." +#: src/game.cpp +msgid "The portal collapses!" +msgstr "¡El portal se desploma!" + #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." @@ -140581,6 +143772,19 @@ msgstr "HIDRATACIÓN" msgid "JOY" msgstr "PLACER" +#. ~ Used for permafood shelf life in the Eat menu +#: src/game_inventory.cpp +msgid "indefinite" +msgstr "indefinido" + +#: src/game_inventory.cpp +msgid "SHELF LIFE" +msgstr "CADUCIDAD" + +#: src/game_inventory.cpp +msgid "FRESHNESS" +msgstr "FRESCURA" + #: src/game_inventory.cpp msgid "SPOILS IN" msgstr "SE PUDRE EN" @@ -140613,6 +143817,38 @@ msgstr "No podés tomar líquidos derramados" msgid "You're fully charged" msgstr "Ya estás completamente cargado/a" +#: src/game_inventory.cpp +msgid "soon!" +msgstr "pronto!" + +#: src/game_inventory.cpp +msgid "fresh" +msgstr "fresco" + +#: src/game_inventory.cpp +msgid "quite fresh" +msgstr "bastante fresco" + +#: src/game_inventory.cpp +msgid "near midlife" +msgstr "mitad de vida útil" + +#: src/game_inventory.cpp +msgid "past midlife" +msgstr "más de mitad de vida útil" + +#: src/game_inventory.cpp +msgid "getting older" +msgstr "haciéndose viejo" + +#: src/game_inventory.cpp +msgid "old" +msgstr "old" + +#: src/game_inventory.cpp +msgid "rotten" +msgstr "podrido" + #: src/game_inventory.cpp msgid "Consume item" msgstr "Consumir objeto" @@ -140756,6 +143992,14 @@ msgstr "Elegí un arma para poner en tu %s" msgid "You have no weapons you could put into your %s." msgstr "No tenés ningún arma que se pueda poner en tu %s." +#: src/game_inventory.cpp src/iuse.cpp +msgid "Cut up what?" +msgstr "¿Qué querés cortar?" + +#: src/game_inventory.cpp +msgid "You have nothing to cut up." +msgstr "No tenés nada para cortar." + #: src/game_inventory.cpp msgid "Saw barrel" msgstr "Cortar cañón" @@ -141075,7 +144319,7 @@ msgstr "¿Cuánto tiempo vas a esperar?" msgid "Are you sure you want to sleep?" msgstr "¿Seguro que querés dormir?" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "Sí." @@ -141385,6 +144629,11 @@ msgstr "Aplicar recubierta de diamante" msgid "You don't have a suitable item to coat with diamond" msgstr "No tenés un objeto adecuado para recubrir con diamante." +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "Le aplicás una cubierta de diamante a tu %s" + #: src/iexamine.cpp #, c-format msgid "Use the %s?" @@ -142927,6 +146176,10 @@ msgstr "Acá hay un soporte para ahumar." msgid "You inspect its contents and find: " msgstr "Inspeccionás su contenido y encontrás:" +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "... que está vacío/a." + #: src/iexamine.cpp msgid "You see some smoldering embers there." msgstr "Ves unas brasas ardientes ahí." @@ -143135,7 +146388,7 @@ msgstr "¡Sin asignar!" #: src/input.cpp msgctxt "keybinding" msgid "Disabled" -msgstr "Discapacitado" +msgstr "Desactivado" #: src/input.cpp src/output.h src/requirements.cpp msgid " or " @@ -143343,10 +146596,94 @@ msgstr "naranja" msgid "black" msgstr "negro" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks as fresh as it can be. It still has " +"%s until it spoils." +msgstr "" +"* Esta comida parece tan fresca como puede estarlo. Todavía le " +"quedan %s hasta pudrirse." + +#: src/item.cpp +msgid "* This food looks as fresh as it can be." +msgstr "* Esta comida parece tan fresca como puede estar." + +#: src/item.cpp +#, c-format +msgid "" +"* This food looks old. It's just %s from becoming " +"inedible." +msgstr "" +"* Esta comida parece vieja. Está a unos %s de " +"volverse incomible." + +#: src/item.cpp +msgid "" +"* This food looks old. It's on the brink of becoming inedible." +msgstr "" +"* Esta comida parece vieja. Está a punto de volverse incombible." + +#: src/item.cpp +msgid "" +"* This food looks fine. If you were more skilled in cooking or" +" survival, you might be able to make a better estimation." +msgstr "" +"* Esta comida parece estar bien. Si fueras más habilidoso en " +"cocinar o en supervivencia, tal vez podrías estimar mejor su estado." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks quite fresh. It has %s until it" +" spoils." +msgstr "" +"* Esta comida parece bastante fresca. Faltan %s " +"para que se pudra." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it is reaching its midlife. " +"There's %s before it spoils." +msgstr "" +"* Esta comida parece que está alcanzando la mitad de su vida " +"útil. Le quedan unos %s antes de pudrirse." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it has passed its midlife. " +"Edible, but will go bad in %s." +msgstr "" +"* Esta comida parece que pasó la mitad de su vida útil. " +"Se puede comer, pero se va a pudrir en %s." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it will be old soon. It has " +"%s, so if you plan to use it, it's now or never." +msgstr "" +"* Esta comida parece que se va a poner vieja pronto. Le quedan " +"unos %s, así que si pensás usarla, es ahora o nunca." + #: src/item.cpp msgid "Category: " msgstr "Categoría: " +#: src/item.cpp +msgid "$" +msgstr "$" + #: src/item.cpp msgid "Price: " msgstr "Precio: " @@ -143517,54 +146854,11 @@ msgstr "" #: src/item.cpp #, c-format msgid "" -"* This food is perishable, and takes %s to " -"rot from full freshness, at room temperature." +"* This food is perishable, and at room temperature has an" +" estimated nominal shelf life of %s." msgstr "" -"* Esta comida es perecedera, y tarda %s en " -"pudrirse desde su estado óptimo, a temperatura ambiente." - -#: src/item.cpp -msgid "* This food looks as fresh as it can be." -msgstr "* Esta comida parece tan fresca como puede estar." - -#: src/item.cpp -msgid "" -"* This food looks still quite fresh. It's far from becoming " -"old." -msgstr "" -"* Esta comida parece bastante fresca. Está lejos de volverse " -"vieja." - -#: src/item.cpp -msgid "" -"* This food looks like it is reaching its midlife. It has" -" some time ahead before spoiling." -msgstr "" -"* Esta comida parece que está alcanzando la mitad de su vida " -"útil. Todavía falta un tiempo para que se pudra." - -#: src/item.cpp -msgid "" -"* This food looks like it has passed its midlife. Edible," -" but will go old sooner rather then later." -msgstr "" -"* Esta comida parece que pasó la mitad de su vida útil. " -"Se puede comer, pero se va a pudrir más antes que después." - -#: src/item.cpp -msgid "" -"* This food looks like it will be old soon. It's now or never, if" -" you plan to use it." -msgstr "" -"* Esta comida parece que se va a poner vieja pronto. Es ahora o " -"nunca, si planeás comértela." - -#: src/item.cpp -msgid "" -"* This food looks old. It's on a brink of becoming inedible." -msgstr "" -"* Esta comida parece vieja. Esta a un pasito de volverse " -"incomible." +"* Esta comida es perecedera, y a temperatura ambiente " +"tiene una vida útil estimada de %s." #: src/item.cpp msgid "" @@ -143611,10 +146905,6 @@ msgstr "" "Esta comida ha empezado a pudrirse. Sería una muy mala " "idea comerla." -#: src/item.cpp -msgid "Capacity: " -msgstr "Capacidad:" - #: src/item.cpp #, c-format msgid " round of %s" @@ -143622,6 +146912,10 @@ msgid_plural " rounds of %s" msgstr[0] " bala de %s" msgstr[1] " balas de %s" +#: src/item.cpp +msgid "Capacity: " +msgstr "Capacidad:" + #: src/item.cpp msgid " per round" msgstr " por bala" @@ -143808,6 +147102,18 @@ msgstr "Modificador de manipulación: " msgid "Ammo: %s" msgstr "Munición: %s" +#: src/item.cpp +msgid "%" +msgstr "%" + +#: src/item.cpp +msgid "Reload modifier: " +msgstr "Modificador de carga:" + +#: src/item.cpp +msgid "Minimum strength required modifier: " +msgstr "Fuerza mínima requerida:" + #: src/item.cpp msgid "Used on: " msgstr "Se usa en: " @@ -144465,12 +147771,12 @@ msgstr "%d\" " #: src/item.cpp msgctxt "burnt adjective" msgid "badly burnt " -msgstr "muy quemado/a" +msgstr "muy quemado/a " #: src/item.cpp msgctxt "burnt adjective" msgid "burnt " -msgstr "quemado/a" +msgstr "quemado/a " #: src/item.cpp #, c-format @@ -144510,7 +147816,7 @@ msgstr " (podrido)" #: src/item.cpp msgid " (mushy)" -msgstr "(blando)" +msgstr " (blando)" #: src/item.cpp msgid " (old)" @@ -146576,8 +149882,11 @@ msgid "You cannot use the %1$s with another of it's kind." msgstr "No podés usar el/a %1$s con otro de su misma clase." #: src/iuse.cpp -msgid "You unfold solar array from the pack and plug it in." -msgstr "Desplegás la matriz solar de su paquete y la conectás." +msgid "" +"You unfold solar array from the pack. You still need to connect it with a " +"cable." +msgstr "" +"Desplegás la matriz solar de su paquete. Te falta conectarla con un cable." #: src/iuse.cpp msgid "You fold your portable solar array into the pack." @@ -146731,10 +150040,6 @@ msgstr "Produciste %d astillas." msgid "You waste a lot of the wood." msgstr "Desperdiciás mucha madera." -#: src/iuse.cpp src/iuse_actor.cpp -msgid "Cut up what?" -msgstr "¿Qué querés cortar?" - #: src/iuse.cpp msgid "Chop down which tree?" msgstr "¿Qué árbol querés talar?" @@ -148009,14 +151314,26 @@ msgstr "" "¡Por estar toqueteando la multicocina casi la rompés! Por suerte, todavía " "funciona, pero mejor dejá de joder con ella." -#: src/iuse.cpp -msgid "Attach cable to vehicle where?" -msgstr "¿En dónde querés conectar el cable al vehículo?" - #: src/iuse.cpp msgid "Using cable:" msgstr "Usar cable:" +#: src/iuse.cpp +msgid "Attach cable to vehicle" +msgstr "Conectar cable a vehículo" + +#: src/iuse.cpp +msgid "Attach cable to self" +msgstr "Conectar cable" + +#: src/iuse.cpp +msgid "Attach cable to solar pack" +msgstr "Conectar cable a equipo solar" + +#: src/iuse.cpp +msgid "Attach cable to vehicle where?" +msgstr "¿En dónde querés conectar el cable al vehículo?" + #: src/iuse.cpp msgid "Attach loose end of the cable" msgstr "Conectar punta suelta del cable" @@ -148200,6 +151517,105 @@ msgstr "" "Tomar más magnesio solamente no te va a ayudar. Tenés que irte a dormir para" " que funcione." +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "Tirás una %s al aire." + +#: src/iuse.cpp +msgid "Heads!" +msgstr "¡Cara!" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "¡Cruz!" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "Es innegable." + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "Decididamente, es así." + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "Sin lugar a dudas." + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "Sí - definitivamente." + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "Podías confiar en eso." + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "Como yo lo veo, sí." + +#: src/iuse.cpp +msgid "Most likely." +msgstr "Lo más probable." + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "Buena perspectiva." + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "Las señales dicen que sí." + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "La respuesta es difusa, probá otra vez." + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "Preguntá otra vez después." + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "Mejor no decirte ahora." + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "No puedo predecirlo ahora." + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "Concentrate y preguntá otra vez." + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "No cuentes con eso." + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "Mi respuesta es no." + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "Mis fuentes dicen que no." + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "La perspectiva no es muy buena." + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "Muy dudoso." + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "Le preguntás a la %s, y después la tirás." + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "La %s dice: %s" + #: src/iuse_actor.cpp #, c-format msgid "The %s is empty!" @@ -150687,7 +154103,7 @@ msgstr "Inestable. " #: src/map.cpp msgid "Sharp. " -msgstr "Afilado." +msgstr "Filoso. " #: src/map.cpp msgid "Flat. " @@ -150921,6 +154337,220 @@ msgstr "Abrir Habitación de Suministros" msgid "Open Evidence Locker" msgstr "Abrir Casillero de Evidencia" +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "%s necesita: " + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "Habilidad" +msgstr[1] "Habilidades" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "Necesita: " + +#: src/martialarts.cpp +msgid "activate" +msgstr "usar" + +#: src/martialarts.cpp +msgid "be used" +msgstr "ser usado" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "* Puede %s cuando estás armado o desarmado" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "* Puede solo %s cuando estás desarmado" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "* Puede solo %s cuando estás armado" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "Bonus" +msgstr[1] "Bonus/acumulado" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "* Se acumula hasta %d veces" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "* Va a durar por %d %s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "* Otorga un +%s de bonus a esquivar%s" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] "para acumular" +msgstr[1] "por acumulación" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "* Otorga un %s de penalidad a esquivar%s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "* Otorga un +%s de bonus a bloquear%s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "* Otorga un %s de penalidad a bloquear%s" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "* Los ataques serán completamente silenciosos" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "Tipo: %s" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "defensivo" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "ofensivo" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "Bonus: " + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "* Solo se activará en un golpe crítico" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "* Vas a contratacar cuando esquivás" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "* Vas a contratacar cuando bloqueás" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "" +"* Te va a dar una recuperación libre después de un " +"fallo" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "* Vas a romper un agarre" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "* Vas a atacar en un arco ancho delante tuyo" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "* Vas a atacar a los enemigos adyacentes " + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind " +"it" +msgstr "" +"* Vas a atacar a tu objetivo y a otro detrás de él" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "* Vas a hacer retroceder enemigos %d %s" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "espacio" +msgstr[1] "espacios" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "* Va a reducir a los enemigos por %d %s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "* Va a aturdir al enemigo por %d %s" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "* Va a desarmar al objetivo" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "" +"Este estilo te fuerza a usar golpes desarmados, incluso si estás " +"empuñando un arma." + +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" +msgstr "" + +#: src/martialarts.cpp +msgid "Passive" +msgstr "Pasivo" + +#: src/martialarts.cpp +msgid "Hit" +msgstr "Golpe" + +#: src/martialarts.cpp +msgid "Get hit" +msgstr "Recibir golpe" + +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "
Técnica:
%s " + +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "Arma:" +msgstr[1] "Armas:" + +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr " Estilo: %s " + #: src/material.cpp msgid "damages" msgstr "daños" @@ -151364,1108 +154994,383 @@ msgstr "Lastimás %s" msgid "You hit %s" msgstr "Golpeás %s" -#: src/melee.cpp -#, c-format -msgid "You whack %s" -msgstr "Lacerás %s" - -#: src/melee.cpp -#, c-format -msgid " clobbers %s" -msgstr " machaca al %s" - -#: src/melee.cpp -#, c-format -msgid " smashes %s" -msgstr " magulla al %s" - -#: src/melee.cpp -#, c-format -msgid " thrashes %s" -msgstr " apalea al %s" - -#: src/melee.cpp -#, c-format -msgid " batters %s" -msgstr " lastima al %s" - -#: src/melee.cpp -#, c-format -msgid " hits %s" -msgstr " golpea a %s" - -#: src/melee.cpp -#, c-format -msgid " whacks %s" -msgstr " lacera al %s" - -#: src/melee.cpp -#, c-format -msgid "The bugs attack %s" -msgstr "Los insectos atacan %s" - -#. ~ NPC hits something but does no damage -#: src/melee.cpp -#, c-format -msgid "%s but does no damage." -msgstr "%s pero no causa daño." - -#. ~ someone hits something but do no damage -#: src/melee.cpp -#, c-format -msgid "%s but do no damage." -msgstr "%s pero no causás daño." - -#. ~ NPC hits something (critical) -#: src/melee.cpp -#, c-format -msgid "%s. Critical!" -msgstr "%s. ¡Critico!" - -#. ~ someone hits something for %d damage (critical) -#: src/melee.cpp -#, c-format -msgid "%s for %d damage. Critical!" -msgstr "%s por %d de daño. ¡Crítico!" - -#. ~ NPC hits something -#: src/melee.cpp -#, c-format -msgid "%s." -msgstr "%s." - -#. ~ someone hits something for %d damage -#: src/melee.cpp -#, c-format -msgid "%s for %d damage." -msgstr "%s por %d de daño." - -#: src/melee.cpp -#, c-format -msgid "You lunge for the %s, but miss!" -msgstr "¡intentás darle un golpe de esgrima al %s, pero le errás!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force!" -msgstr "¡Agarrás el %s y tirás con toda tu fuerza!" - -#: src/melee.cpp -#, c-format -msgid "You forcefully take %s from %s!" -msgstr "¡Con fuerza, agarrás el %s del %s!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but it drops nearby!" -msgstr "¡Agarrás el %s y tirás con toda tu fuerza, pero cae cerca!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but in vain!" -msgstr "¡Agarrás el %s y tirás con toda tu fuerza, pero no conseguís nada!" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might forcing their %s to drop down nearby!" -msgstr "" -"¡Golpeás el %s con toda tu fuerza haciendo que su %s caiga en un lugar " -"cercano!" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might but %s remains in their hands!" -msgstr "¡Golpeás el %s con toda tu fuerza pero su %s sigue en sus manos!" - -#: src/melee.cpp src/npctalk.cpp -#, c-format -msgid "%s is hostile!" -msgstr "¡%s es hostil!" - -#: src/melee.cpp -#, c-format -msgid "You sneakily steal %1$s from %2$s!" -msgstr "¡Sigilosamente, le robás %1$s a %2$s!" - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s, but did not attract attention." -msgstr "No pudiste robarle %1$s a %2$s, pero no despertaste ninguna sospecha." - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s." -msgstr "No pudiste robarle %1$s a %2$s." - -#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a -#. whack! x 12" -#: src/messages.cpp -#, c-format -msgid "%s x %d" -msgstr "%s %d veces" - -#: src/messages.cpp -msgctxt "message type" -msgid "good" -msgstr "bueno" - -#: src/messages.cpp -msgctxt "message type" -msgid "bad" -msgstr "malo" - -#: src/messages.cpp -msgctxt "message type" -msgid "mixed" -msgstr "mezclado" - -#: src/messages.cpp -msgctxt "message type" -msgid "warning" -msgstr "advertencia" - -#: src/messages.cpp -msgctxt "message type" -msgid "info" -msgstr "información" - -#: src/messages.cpp -msgctxt "message type" -msgid "neutral" -msgstr "neutral" - -#: src/messages.cpp -msgctxt "message type" -msgid "debug" -msgstr "debug" - -#: src/messages.cpp -#, c-format -msgid "< Press %s to filter, %s to reset >" -msgstr "< Apretá %s para filtrar, %s para resetear >" - -#: src/messages.cpp -#, c-format -msgid "" -"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" -"Examples:\n" -" good:mutation\n" -" :you pick up: 1\n" -" crash!\n" -msgstr "" -"El formato es [[TIPO]:]TEXTO. Los valores para TIPO son: %s\n" -"Ejemplos:\n" -" bueno:mutación\n" -" :agarrás: 1\n" -" choque!\n" - -#. ~ the 2nd %s is a type name, this is used to format a list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s, " -msgstr "%s, " - -#. ~ the 2nd %s is a type name, this is used to format the last type name in a -#. list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s." -msgstr "%s." - -#: src/mission_companion.cpp -msgid "Outpost Missions" -msgstr "Misiones del Puesto" - -#: src/mission_companion.cpp -msgid "Base Missions" -msgstr "Misiones de Base" - -#: src/mission_companion.cpp -msgid "Junk Shop Missions" -msgstr "Misiones de Negocio de objetos usados" - -#: src/mission_companion.cpp -msgid "Agricultural Missions" -msgstr "Misiones Agrícolas" - -#: src/mission_companion.cpp -msgid "Construction Missions" -msgstr "Misiones de Construcción" - -#: src/mission_companion.cpp -msgid "Free Merchant Missions" -msgstr "Misiones de Los Mercaderes Libres" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." -msgstr "" -"Ganancia: $25-$500\n" -"Peligro: Bajo\n" -"Tiempo: 10 horas misiones\n" -" \n" -"Asignar uno de tus compañeros a patrullar los alrededores y los edificios aislados le da la oportunidad de mejorar las habilidades en supervivencia mientras combate relativamente a salvo contra criaturas aisladas." - -#: src/mission_companion.cpp -msgid "Assign Scavenging Patrol" -msgstr "Asignar Patrulla de Cartoneo" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Patrol Roster:\n" -msgstr "" -"Ganancia: $25-$500\n" -"Peligro: Bajo\n" -"Tiempo: 10 horas misiones\n" -" \n" -"Equipo de Patrulla:\n" - -#: src/mission_companion.cpp -msgid " hours] \n" -msgstr " horas] \n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?" -msgstr "" -"\n" -" \n" -"¿Querés que vuelvan tus compañeros a tu grupo?" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Patrol" -msgstr "Retirar Patrulla de Cartoneo" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." -msgstr "" -"Ganancia: $200-$1000\n" -"Peligro: Medio\n" -"Tiempo: 10 horas misiones\n" -" \n" -"Los grupos de cartoneros al principio buscaban en las áreas pobladas para conseguir la mayor cantidad posible de objetos de valor, pero comenzaron a verse rodeados por los muertos vivientes. Se espera que haya combate y no puede garantizarse la ayuda del resto del equipo. La recompensa es mayor y existe la posibilidad de que el compañero pueda conseguir objetos." - -#: src/mission_companion.cpp -msgid "Assign Scavenging Raid" -msgstr "Asignar Grupo de Saqueo" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Raid Roster:\n" -msgstr "" -"Ganancia: $200-$1000\n" -"Peligro: Medio\n" -"Tiempo: 10 horas misiones\n" -" \n" -"Equipo de Cartoneo:\n" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Raid" -msgstr "Retirar Grupo de Saqueo" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." -msgstr "" -"Ganancia: $8/hora\n" -"Peligro: Mínimo\n" -"Tiempo: 1 hora mínimo\n" -" \n" -"Asigar a uno de tus aliados a trabajo doméstico es una manera segura de enseñarle las habilidades básicas y de generar reputación en el puesto. Eso sí, no esperes mucha recompensa a cambio." - -#: src/mission_companion.cpp -msgid "Assign Ally to Menial Labor" -msgstr "Asignar Aliado a Labores Menores" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"Ganancia: $8/hora\n" -"Peligro: Mínimo\n" -"Tiempo: 1 hora mínimo\n" -" \n" -"Equipo de Trabajo:\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Menial Labor" -msgstr "Retirar Aliado de Labores Menores" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." -msgstr "" -"Ganancia: $12/hora\n" -"Peligro: Mínimo\n" -"Tiempo: 1 hora mínimo\n" -" \n" -"El trabajo de carpintería requiere más habilidad que el trabajo doméstico, y además ofrece una mejor paga. Es raro que tus compañeros sean atacados pero hay algunos peligros en trabajar con edificios improvisados." - -#: src/mission_companion.cpp -msgid "Assign Ally to Carpentry Work" -msgstr "Asignar Aliado a Carpintería" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"Ganancia: $12/hora\n" -"Peligro: Mínimo\n" -"Tiempo: 1 hora mínimo\n" -" \n" -"Equipo de Trabajo:\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Carpentry Work" -msgstr "Retirar Aliado de Carpintería" - -#: src/mission_companion.cpp -msgid "Upgrade Camp" -msgstr "Mejorar Campamento" - -#: src/mission_companion.cpp -msgid "Gather Materials" -msgstr "Recolectar Materiales" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" -" \n" -"Effects:\n" -"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" -" \n" -"Must have enjoyability >= -6\n" -"Perishable food liquidated at penalty depending on upgrades and rot time:\n" -"> Rotten: 0%%\n" -"> Rots in < 2 days: 60%%\n" -"> Rots in < 5 days: 80%%\n" -" \n" -"Total faction food stock: %d kcal or %d day's rations" -msgstr "" -"Notas:\n" -"Distribuir comida con tus seguidores y llenar las alacenas. Poner la comida que querés distribuir en el lado opuesto a la puerta, entre el director y la pared.\n" -" \n" -"Efectos:\n" -"> Incrementa la comida de tu bando que será usada para pagar a los trabajadores por su tiempo\n" -" \n" -"Debe tener Disfrute >= -6\n" -"La comida perecedera liquidada en penalidad depende de las mejoras y tiempo podrida:\n" -"> Podrida: 0%%\n" -"> Se pudre en < 2 días: 60%%\n" -"> Se pudre en < 5 días: 80%%\n" -" \n" -"Suministro total del bando: %d kcal o %d días con raciones" - -#: src/mission_companion.cpp -msgid "Distribute Food" -msgstr "Distribuir Comida" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" -" \n" -"Effects:\n" -"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" -"> Items sitting on any type of furniture will not be moved.\n" -"> Items that are not listed in one of the categories are defaulted to the tools group." -msgstr "" -"Notas:\n" -"Resetear los puntos en que los objetos son ordenados usando la misión [ Labor Menor ] .\n" -" \n" -"Efectos:\n" -"> Puntos Asignables: comida, comida para distribuir, semillas, armas, ropa, biónicos, herramientas, madera, basura, libros, medicamentos y munición.\n" -"> Los objetos en los muebles no serán movidos.\n" -"> Los objetos que no están listados en las categorías van al grupo de herramientas." - -#: src/mission_companion.cpp -msgid "Reset Sort Points" -msgstr "Resetear Puntos de Orden" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to gather light brush and heavy sticks.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -"> heavy sticks\n" -"> withered plants\n" -"> splintered wood\n" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: %d/3\n" -msgstr "" -"Notas:\n" -"Enviar un compañero a recolectar arbustos y palos grandes.\n" -" \n" -"Habilidad usada: supervivencia\n" -"Dificultad: N/D \n" -"Posibilidad de Recolectar:\n" -"> palos grandes\n" -"> plantas marchitas\n" -"> astillas de madera\n" -" \n" -"Riesgo: Muy Bajo\n" -"Tiempo: 3 Horas, Repetir\n" -"Posiciones: %d/3\n" - -#: src/mission_companion.cpp -msgid "Collect Firewood" -msgstr "Recolectar Leña" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to do low level chores and sort supplies.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" -"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours\n" -"Positions: %d/1\n" -msgstr "" -"Notas:\n" -"Enviar compañero a hacer tareas rutinarias y ordenar cosas.\n" -" \n" -"Habilidad usada: fabricación\n" -"Dificultad: N/D \n" -"Efectos:\n" -"> Los materiales dejados afuera en el piso serán ordenados en cuatro cajas en la puerta de la carpa.\n" -"Por defecto, de arriba a abajo: Ropa, Comida, Libros/Biónicos y Herramientas. La madera será apilada en el sur. La basura, en el norte.\n" -" \n" -"Riesgo: Ninguno\n" -"Tiempo: 3 Horas\n" -"Posiciones: %d/1\n" - -#: src/mission_companion.cpp -msgid "Menial Labor" -msgstr "Labores Menores" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours \n" -"Positions: %d/1\n" -msgstr "" -"Notas:\n" -"Tu base se hizo lo suficientemente grande como para agrandarla. Las expansiones abren nuevas posibilidades pero pueden ser costosas y llevan tiempo. Elegí la expansión con cuidado, solamente se pueden construir 8 por campamento.\n" -" \n" -"Habilidad usada: fabricación\n" -"Dificultad: N/D \n" -"Efectos:\n" -"> Elegí cualquiera de las expansiones disponibles. Empezar por la granja o la maderera son siempre las mejores opciones ya que la comida es necesaria para las misiones de los compañeros y la madera es el principal material.\n" -" \n" -"Riesgo: Ninguno\n" -"Tiempo: 3 Horas \n" -"Posiciones: %d/1\n" - -#: src/mission_companion.cpp -msgid "Expand Base" -msgstr "Expandir Base" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to a nearby forest to cut logs.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: 1 \n" -"Effects:\n" -"> 50%% of trees/trunks at the forest position will be cut down.\n" -"> 50%% of total material will be brought back.\n" -"> Repeatable with diminishing returns.\n" -" \n" -"Risk: Low-Medium\n" -"Time: 6 Hour Base + Travel Time + Cutting Time\n" -"Positions: %d/1\n" -msgstr "" -"Notas:\n" -"Enviar compañero a un bosque cercano a cortar troncos.\n" -" \n" -"Habilidad usada: fabricación\n" -"Dificultad: 1 \n" -"Efectos:\n" -"> 50%% de los árboles/troncos en el bosque serán cortados.\n" -"> 50%% del material total será traído.\n" -"> Se puede repetir con resultados menores.\n" -" \n" -"Riesgo: Bajo-Medio\n" -"Tiempo: 6 Horas en Base + Tiempo de Traslado + Tiempo de Tala\n" -"Posiciones: %d/1\n" - -#: src/mission_companion.cpp -msgid "Cut Logs" -msgstr "Cortar Troncos" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Good for setting up resupply or contingency points.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward.\n" -" \n" -"Risk: Medium\n" -"Time: 6 Hour Construction + Travel\n" -"Positions: %d/1\n" -msgstr "" -"Notas:\n" -"Enviar un compañero a construir un refugio improvisado y llenarlo con equipamiento en un lugar del mapa.\n" -" \n" -"Habilidad usada: supervivencia\n" -"Dificultad: 3\n" -"Efectos:\n" -"> Sirve para establecer puntos de contingencia o de suministros.\n" -"> El equipo queda sin supervisión y puede ser robado.\n" -"> El tiempo depende del peso del equipo enviado.\n" -" \n" -"Riesgo: Medio\n" -"Tiempo: 6 Horas de Construcción + Traslado\n" -"Posiciones: %d/1\n" - -#: src/mission_companion.cpp -msgid "Setup Hide Site" -msgstr "Establecer Escondite" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Push gear out to a hide site or bring gear back from one.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 1\n" -"Effects:\n" -"> Good for returning equipment you left in the hide site shelter.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward or back.\n" -" \n" -"Risk: Medium\n" -"Time: 1 Hour Base + Travel\n" -"Positions: %d/1\n" -msgstr "" -"Notas:\n" -"Enviar equipamiento a escondite o traerlo de nuevo a la base.\n" -" \n" -"Habilidad usada: supervivencia\n" -"Dificultad: 1\n" -"Efectos:\n" -"> Sirve para recuperar equipo que dejaste en el refugio de escondite.\n" -"> El equipo queda sin supervisión y puede ser rebado.\n" -"> El tiempo depende del peso del equipo trasladado.\n" -" \n" -"Riesgo: Medio\n" -"Tiempo: 1 Hora en Base + Traslado\n" -"Posiciones: %d/1\n" - -#: src/mission_companion.cpp -msgid "Relay Hide Site" -msgstr "Equipar Escondite" - -#: src/mission_companion.cpp -msgid "Construct Map Fortifications" -msgstr "Construir Fortificaciones" - -#: src/mission_companion.cpp -msgid "Construct Spiked Trench" -msgstr "Construir Trinchera con Púas" - -#: src/mission_companion.cpp -msgid "Recruit Companions" -msgstr "Reclutar Compañeros" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Select checkpoints to customize path.\n" -"> Reveals terrain around the path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" -"Notas:\n" -"Enviar compañero a territorio desconocido. Se necesita habilidad en supervivencia para evitar las luchas pero igual deberías prepararte para algunas.\n" -" \n" -"Habilidad usada: supervivencia\n" -"Dificultad: 3\n" -"Efectos:\n" -"> Elegir puntos específicos para trazar el camino.\n" -"> Revela terreno alrededor del camino.\n" -"> Puede pasar por escondites para extender su alcance.\n" -" \n" -"Riesgo: Alto\n" -"Tiempo: Traslado\n" -"Posiciones: %d/3\n" - -#: src/mission_companion.cpp -msgid "Scout Mission" -msgstr "Misión de Exploración" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 4\n" -"Effects:\n" -"> Pulls creatures encountered into combat instead of fleeing.\n" -"> Select checkpoints to customize path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: Very High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" -"Notas:\n" -"Enviar compañero a purgar las tierras baldías. Su objetivo es eliminar cualquier cosa hostil que encuentre y regresar cuando esté muy herido o se haya complicado mucho su misión.\n" -" \n" -"Habilidad usada: supervivencia\n" -"Dificultad: 4\n" -"Efectos:\n" -"> Hace que las criaturas luchen en lugar de que huyan.\n" -"> Elegir puntos específicos para trazar el camino.\n" -"> Puede pasar por escondites para extender su alcance.\n" -" \n" -"Riesgo: Muy Alto\n" -"Tiempo: Traslado\n" -"Posiciones: %d/3\n" - -#: src/mission_companion.cpp -msgid "Combat Patrol" -msgstr "Patrulla de Combate" - -#: src/mission_companion.cpp -msgid " Expansion Upgrade" -msgstr "Mejora de Expansión" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Have a companion attempt to completely dissemble a vehicle into components.\n" -" \n" -"Skill used: mechanics\n" -"Difficulty: 2 \n" -"Effects:\n" -"> Removed parts placed on the furniture in the garage.\n" -"> Skill plays a huge role to determine what is salvaged.\n" -" \n" -"Risk: None\n" -"Time: Skill Based \n" -msgstr "" -"Notas:\n" -"Enviar un compañero a intentar desarmar completamente un vehiculo.\n" -" \n" -"Habilidad usada: mecánica\n" -"Dificultad: 2 \n" -"Efectos:\n" -"> Las partes quitadas serán puestas en muebles en el garage.\n" -"> La habilidad determina qué puede ser recuperado.\n" -" \n" -"Riesgo: Ninguno\n" -"Tiempo: Depende de la Habilidad \n" - -#: src/mission_companion.cpp -msgid " Chop Shop" -msgstr "Desarmadero" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plow any spaces that have reverted to dirt or grass.\n" -" \n" -msgstr "" -"Notas:\n" -"Arar cualquier espacio que haya vuelto a ser tierra normal o pasto.\n" -" \n" +#: src/melee.cpp +#, c-format +msgid "You whack %s" +msgstr "Lacerás %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Restores only the plots created in the last expansion upgrade.\n" -"> Does not damage existing crops.\n" -" \n" -"Risk: None\n" -"Time: 5 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"Habilidad usada: fabricación\n" -"Dificultad: N/D \n" -"Efectos:\n" -"> Recupera solo los espacios creados en la última expansión.\n" -"> No daña los cultivos que haya.\n" -" \n" -"Riesgo: Ninguno\n" -"Tiempo: 5 Min / Lote \n" -"Posiciones: 0/1 \n" +#: src/melee.cpp +#, c-format +msgid " clobbers %s" +msgstr " machaca al %s" -#: src/mission_companion.cpp -msgid " Plow Fields" -msgstr "Arar Campos" +#: src/melee.cpp +#, c-format +msgid " smashes %s" +msgstr " magulla al %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plant designated seeds in the spaces that have already been tilled.\n" -" \n" -msgstr "" -"Notas:\n" -"Planta las semillas designadas en los lugares que hayan sido arados.\n" -" \n" +#: src/melee.cpp +#, c-format +msgid " thrashes %s" +msgstr " apalea al %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose which seed type or all of your seeds.\n" -"> Stops when out of seeds or planting locations.\n" -"> Will plant in ALL dirt mounds in the expansion.\n" -" \n" -"Risk: None\n" -"Time: 1 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"Habilidad usada: supervivencia\n" -"Dificultad: N/D \n" -"Efectos:\n" -"> Elegir cuáles semilla o si usarás todas las semillas.\n" -"> Detenerse cuando se quede sin semillas o sin lotes.\n" -"> Plantará en todos los montículos de tierra de la expansión.\n" -" \n" -"Riesgo: Ninguno\n" -"Tiempo: 1 Min / Lote \n" -"Posiciones: 0/1 \n" +#: src/melee.cpp +#, c-format +msgid " batters %s" +msgstr " lastima al %s" -#: src/mission_companion.cpp -msgid " Plant Fields" -msgstr "Plantar Campos" +#: src/melee.cpp +#, c-format +msgid " hits %s" +msgstr " golpea a %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Harvest any plants that are ripe and bring the produce back.\n" -" \n" -msgstr "" -"Notas:\n" -"Cosechar cualquier planta que esté madura y traer el producto.\n" -" \n" +#: src/melee.cpp +#, c-format +msgid " whacks %s" +msgstr " lacera al %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Will dump all harvesting products onto your location.\n" -" \n" -"Risk: None\n" -"Time: 3 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"Habilidad usada: supervivencia\n" -"Dificultad: N/D \n" -"Efectos:\n" -"> Dejará todos los productos cosechados en tu lugar.\n" -" \n" -"Riesgo: Ninguno\n" -"Tiempo: 3 Min / Lote \n" -"Posiciones: 0/1 \n" +#: src/melee.cpp +#, c-format +msgid "The bugs attack %s" +msgstr "Los insectos atacan %s" -#: src/mission_companion.cpp -msgid " Harvest Fields" -msgstr "Cosechar Campos" +#. ~ NPC hits something but does no damage +#: src/melee.cpp +#, c-format +msgid "%s but does no damage." +msgstr "%s pero no causa daño." -#: src/mission_companion.cpp -msgid "Working to expand your camp!\n" -msgstr "¡Trabajando para expandir tu campamento!\n" +#. ~ someone hits something but do no damage +#: src/melee.cpp +#, c-format +msgid "%s but do no damage." +msgstr "%s pero no causás daño." -#: src/mission_companion.cpp -msgid " hours left] \n" -msgstr " horas que faltan] \n" +#. ~ NPC hits something (critical) +#: src/melee.cpp +#, c-format +msgid "%s. Critical!" +msgstr "%s. ¡Critico!" -#: src/mission_companion.cpp -msgid " minutes left] \n" -msgstr " minutos que faltan] \n" +#. ~ someone hits something for %d damage (critical) +#: src/melee.cpp +#, c-format +msgid "%s for %d damage. Critical!" +msgstr "%s por %d de daño. ¡Crítico!" -#: src/mission_companion.cpp -msgid " [DONE]\n" -msgstr " [LISTO]\n" +#. ~ NPC hits something +#: src/melee.cpp +#, c-format +msgid "%s." +msgstr "%s." -#: src/mission_companion.cpp -msgid "Recover Ally from Upgrading" -msgstr "Recuperar Aliado de Mejoras" +#. ~ someone hits something for %d damage +#: src/melee.cpp +#, c-format +msgid "%s for %d damage." +msgstr "%s por %d de daño." -#: src/mission_companion.cpp -msgid "Working to upgrade your expansions!\n" -msgstr "¡Trabajando para mejorar tus expansiones!\n" +#: src/melee.cpp +#, c-format +msgid "You lunge for the %s, but miss!" +msgstr "¡intentás darle un golpe de esgrima al %s, pero le errás!" -#: src/mission_companion.cpp -msgid " Expansion" -msgstr "Expansión" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force!" +msgstr "¡Agarrás el %s y tirás con toda tu fuerza!" -#: src/mission_companion.cpp -msgid "Recover Ally, " -msgstr "Recuperar Aliado" +#: src/melee.cpp +#, c-format +msgid "You forcefully take %s from %s!" +msgstr "¡Con fuerza, agarrás el %s del %s!" -#: src/mission_companion.cpp -msgid "Working at the chop shop...\n" -msgstr "Trabajando en el desarmadero...\n" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but it drops nearby!" +msgstr "¡Agarrás el %s y tirás con toda tu fuerza, pero cae cerca!" -#: src/mission_companion.cpp -msgid "/120 hours] \n" -msgstr "/120 horas] \n" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but in vain!" +msgstr "¡Agarrás el %s y tirás con toda tu fuerza, pero no conseguís nada!" -#: src/mission_companion.cpp -msgid " (Finish) Chop Shop" -msgstr " (Terminar) Desarmadero" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might forcing their %s to drop down nearby!" +msgstr "" +"¡Golpeás el %s con toda tu fuerza haciendo que su %s caiga en un lugar " +"cercano!" -#: src/mission_companion.cpp -msgid "Working in your kitchen!\n" -msgstr "¡Trabajando en tu cocina!\n" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might but %s remains in their hands!" +msgstr "¡Golpeás el %s con toda tu fuerza pero su %s sigue en sus manos!" -#: src/mission_companion.cpp -msgid " [ALMOST DONE]\n" -msgstr " [CASI LISTO]\n" +#: src/melee.cpp src/npctalk.cpp +#, c-format +msgid "%s is hostile!" +msgstr "¡%s es hostil!" -#: src/mission_companion.cpp -msgid " (Finish) Cooking" -msgstr " (Terminar) Cocinar" +#: src/melee.cpp +#, c-format +msgid "You sneakily steal %1$s from %2$s!" +msgstr "¡Sigilosamente, le robás %1$s a %2$s!" -#: src/mission_companion.cpp -msgid "Working in your blacksmith shop!\n" -msgstr "¡Trabajando en tu herrería!\n" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s, but did not attract attention." +msgstr "No pudiste robarle %1$s a %2$s, pero no despertaste ninguna sospecha." -#: src/mission_companion.cpp -msgid " (Finish) Smithing" -msgstr " (Terminar) Herrería" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s." +msgstr "No pudiste robarle %1$s a %2$s." -#: src/mission_companion.cpp -msgid "Working to plow your fields!\n" -msgstr "¡Trabajando en arar tus campos!\n" +#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a +#. whack! x 12" +#: src/messages.cpp +#, c-format +msgid "%s x %d" +msgstr "%s %d veces" -#: src/mission_companion.cpp -msgid "/~48 hours] \n" -msgstr "/~48 horas] \n" +#: src/messages.cpp +msgctxt "message type" +msgid "good" +msgstr "bueno" -#: src/mission_companion.cpp -msgid " (Finish) Plow Fields" -msgstr " (Terminar) Arar Campos" +#: src/messages.cpp +msgctxt "message type" +msgid "bad" +msgstr "malo" -#: src/mission_companion.cpp -msgid "Working to plant your fields!\n" -msgstr "¡Trabajando en plantar en tus campos!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "mixed" +msgstr "mezclado" -#: src/mission_companion.cpp -msgid "/4 hours] \n" -msgstr "/4 horas] \n" +#: src/messages.cpp +msgctxt "message type" +msgid "warning" +msgstr "advertencia" -#: src/mission_companion.cpp -msgid " (Finish) Plant Fields" -msgstr " (Terminar) Plantar Campos" +#: src/messages.cpp +msgctxt "message type" +msgid "info" +msgstr "información" -#: src/mission_companion.cpp -msgid "Working to harvest your fields!\n" -msgstr "¡Trabajando en cosechar tus campos!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "neutral" +msgstr "neutral" -#: src/mission_companion.cpp -msgid "/~10 hours] \n" -msgstr "/~10 horas] \n" +#: src/messages.cpp +msgctxt "message type" +msgid "debug" +msgstr "debug" -#: src/mission_companion.cpp -msgid " (Finish) Harvest Fields" -msgstr " (Terminar) Cosechar Campos" +#: src/messages.cpp +#, c-format +msgid "< Press %s to filter, %s to reset >" +msgstr "< Apretá %s para filtrar, %s para resetear >" -#: src/mission_companion.cpp -msgid "Working on your farm!\n" -msgstr "¡Trabajando en tu granja!\n" +#: src/messages.cpp +#, c-format +msgid "" +"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" +"Examples:\n" +" good:mutation\n" +" :you pick up: 1\n" +" crash!\n" +msgstr "" +"El formato es [[TIPO]:]TEXTO. Los valores para TIPO son: %s\n" +"Ejemplos:\n" +" bueno:mutación\n" +" :agarrás: 1\n" +" choque!\n" -#: src/mission_companion.cpp -msgid " (Finish) Crafting" -msgstr " (Terminar) Fabricación" +#. ~ the 2nd %s is a type name, this is used to format a list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s, " +msgstr "%s, " + +#. ~ the 2nd %s is a type name, this is used to format the last type name in a +#. list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s." +msgstr "%s." #: src/mission_companion.cpp -msgid "Busy crafting!\n" -msgstr "¡Ocupado fabricando!\n" +msgid "Outpost Missions" +msgstr "Misiones del Puesto" #: src/mission_companion.cpp -msgid "Searching for materials to upgrade the camp.\n" -msgstr "Buscando materiales para mejorar el campamento.\n" +msgid "Junk Shop Missions" +msgstr "Misiones de Negocio de objetos usados" #: src/mission_companion.cpp -msgid "/3 hours] \n" -msgstr "/3 horas] \n" +msgid "Agricultural Missions" +msgstr "Misiones Agrícolas" #: src/mission_companion.cpp -msgid "Recover Ally from Gathering" -msgstr "Recuperar Aliado de Recolección" +msgid "Construction Missions" +msgstr "Misiones de Construcción" #: src/mission_companion.cpp -msgid "Searching for firewood.\n" -msgstr "Buscando leña.\n" +msgid "Free Merchant Missions" +msgstr "Misiones de Los Mercaderes Libres" #: src/mission_companion.cpp -msgid "Recover Firewood Gatherers" -msgstr "Recuperar Recolectores de Leña" +msgid "" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" +" \n" +"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." +msgstr "" +"Ganancia: $25-$500\n" +"Peligro: Bajo\n" +"Tiempo: 10 horas misiones\n" +" \n" +"Asignar uno de tus compañeros a patrullar los alrededores y los edificios aislados le da la oportunidad de mejorar las habilidades en supervivencia mientras combate relativamente a salvo contra criaturas aisladas." #: src/mission_companion.cpp -msgid "Performing menial labor...\n" -msgstr "Haciendo tarea menor...\n" +msgid "Assign Scavenging Patrol" +msgstr "Asignar Patrulla de Cartoneo" #: src/mission_companion.cpp msgid "" -"\n" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" " \n" -"Do you wish to bring your allies back into your party?\n" +"Patrol Roster:\n" msgstr "" -"\n" +"Ganancia: $25-$500\n" +"Peligro: Bajo\n" +"Tiempo: 10 horas misiones\n" " \n" -"¿Querés intentar traer a tus aliados de nuevo a tu grupo?\n" - -#: src/mission_companion.cpp -msgid "Recover Menial Laborer" -msgstr "Recuperar Trabajador en Tareas Menores" +"Equipo de Patrulla:\n" #: src/mission_companion.cpp -msgid "Surveying for expansion...\n" -msgstr "Inspeccionando el terreno para expandir...\n" +msgid " hours] \n" +msgstr " horas] \n" #: src/mission_companion.cpp -msgid "Recover Surveyor" -msgstr "Recuperar Topógrafo" +msgid "Retrieve Scavenging Patrol" +msgstr "Retirar Patrulla de Cartoneo" #: src/mission_companion.cpp -msgid "Cutting logs in the woods...\n" -msgstr "Cortando árboles en el bosque...\n" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." +msgstr "" +"Ganancia: $200-$1000\n" +"Peligro: Medio\n" +"Tiempo: 10 horas misiones\n" +" \n" +"Los grupos de cartoneros al principio buscaban en las áreas pobladas para conseguir la mayor cantidad posible de objetos de valor, pero comenzaron a verse rodeados por los muertos vivientes. Se espera que haya combate y no puede garantizarse la ayuda del resto del equipo. La recompensa es mayor y existe la posibilidad de que el compañero pueda conseguir objetos." #: src/mission_companion.cpp -msgid "Recover Log Cutter" -msgstr "Recuperar Talador" +msgid "Assign Scavenging Raid" +msgstr "Asignar Grupo de Saqueo" #: src/mission_companion.cpp -msgid "Setting up a hide site...\n" -msgstr "Estableciendo escondite...\n" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Raid Roster:\n" +msgstr "" +"Ganancia: $200-$1000\n" +"Peligro: Medio\n" +"Tiempo: 10 horas misiones\n" +" \n" +"Equipo de Cartoneo:\n" #: src/mission_companion.cpp -msgid "Recover Hide Setup" -msgstr "Recuperar Establecedor de Escondite" +msgid "Retrieve Scavenging Raid" +msgstr "Retirar Grupo de Saqueo" #: src/mission_companion.cpp -msgid "Constructing fortifications...\n" -msgstr "Construyendo fortificaciones...\n" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." +msgstr "" +"Ganancia: $8/hora\n" +"Peligro: Mínimo\n" +"Tiempo: 1 hora mínimo\n" +" \n" +"Asigar a uno de tus aliados a trabajo doméstico es una manera segura de enseñarle las habilidades básicas y de generar reputación en el puesto. Eso sí, no esperes mucha recompensa a cambio." #: src/mission_companion.cpp -msgid "Finish Map Fortifications" -msgstr "Terminar Fortificaciones" +msgid "Assign Ally to Menial Labor" +msgstr "Asignar Aliado a Labores Menores" #: src/mission_companion.cpp -msgid "Searching for recruits.\n" -msgstr "Buscando reclutas.\n" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" +msgstr "" +"Ganancia: $8/hora\n" +"Peligro: Mínimo\n" +"Tiempo: 1 hora mínimo\n" +" \n" +"Equipo de Trabajo:\n" #: src/mission_companion.cpp -msgid "Recover Recruiter" -msgstr "Recuperar Reclutador" +msgid "Recover Ally from Menial Labor" +msgstr "Retirar Aliado de Labores Menores" #: src/mission_companion.cpp -msgid "Scouting the region.\n" -msgstr "Inspeccionando la región.\n" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." +msgstr "" +"Ganancia: $12/hora\n" +"Peligro: Mínimo\n" +"Tiempo: 1 hora mínimo\n" +" \n" +"El trabajo de carpintería requiere más habilidad que el trabajo doméstico, y además ofrece una mejor paga. Es raro que tus compañeros sean atacados pero hay algunos peligros en trabajar con edificios improvisados." #: src/mission_companion.cpp -msgid "Recover Scout" -msgstr "Recuperar Explorador" +msgid "Assign Ally to Carpentry Work" +msgstr "Asignar Aliado a Carpintería" #: src/mission_companion.cpp -msgid "Patrolling the region.\n" -msgstr "Patrullando la región.\n" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" +msgstr "" +"Ganancia: $12/hora\n" +"Peligro: Mínimo\n" +"Tiempo: 1 hora mínimo\n" +" \n" +"Equipo de Trabajo:\n" #: src/mission_companion.cpp -msgid "Recover Combat Patrol" -msgstr "Recuperar Patrulla de Combate" +msgid "Recover Ally from Carpentry Work" +msgstr "Retirar Aliado de Carpintería" #: src/mission_companion.cpp msgid "" @@ -152735,247 +155640,6 @@ msgstr "se va a cartonear..." msgid "departs to work as a laborer..." msgstr "se va a trabajar como obrero..." -#: src/mission_companion.cpp -msgid "You don't have enough food stored to feed your companion." -msgstr "No tenés suficiente comida almacenada para alimentar a tu compañero." - -#: src/mission_companion.cpp -msgid "begins to upgrade the camp..." -msgstr "comienza a mejorar el campamento..." - -#: src/mission_companion.cpp -msgid "You already have a companion upgrading the camp." -msgstr "Ya tenés un compañero mejorando el campamento." - -#: src/mission_companion.cpp -msgid "You don't have the materials for the upgrade." -msgstr "No tenés los materiales para la mejora." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your garage..." -msgstr "%s vuelve de tu garage..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your kitchen with something..." -msgstr "%s vuelve de tu cocina con algo..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your blacksmith shop with something..." -msgstr "%s vuelve de tu herrería con algo..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your farm with something..." -msgstr "%s vuelve de tu granja con algo..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns to you with something..." -msgstr "%s vuelve con algo..." - -#: src/mission_companion.cpp -msgid "departs to search for materials..." -msgstr "se va a buscar materiales..." - -#: src/mission_companion.cpp -msgid "There are too many companions working on this mission!" -msgstr "¡Hay demasiados compañeros trabajando en esta misión!" - -#: src/mission_companion.cpp -msgid "departs to search for firewood..." -msgstr "se va a buscar leña..." - -#: src/mission_companion.cpp -msgid "departs to dig ditches and scrub toilets..." -msgstr "se va a cavar trincheras y limpiar inodoros..." - -#: src/mission_companion.cpp -msgid "departs to survey land..." -msgstr "se va a inspeccionar la zona..." - -#: src/mission_companion.cpp -msgid "You have already selected a surveyor!" -msgstr "¡Ya seleccionaste un topógrafo!" - -#: src/mission_companion.cpp -msgid "begins to upgrade the expansion..." -msgstr "empieza a mejorar la expansión..." - -#: src/mission_companion.cpp -msgid "You already have a worker upgrading that expansion!" -msgstr "¡Ya tenés un trabajador mejorando la expansión!" - -#: src/mission_companion.cpp -msgid "Forests and swamps are the only valid cutting locations." -msgstr "" -"Los únicos lugares válidos para cortar árboles son los bosques y los " -"pantanos." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Trip Estimate:\n" -"%s" -msgstr "" -"Estimación de Viaje:\n" -"%s" - -#: src/mission_companion.cpp -msgid "departs to cut logs..." -msgstr "se va a cortar troncos..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working in the woods..." -msgstr "%s vuelve de trabajar en el bosque..." - -#: src/mission_companion.cpp -msgid "Forests, swamps, and fields are valid hide site locations." -msgstr "" -"Los lugares válidos para escondites son los bosques, pantanos y campos." - -#: src/mission_companion.cpp -msgid "departs to build a hide site..." -msgstr "se va a construir un escondite..." - -#: src/mission_companion.cpp -msgid "You need equipment to setup a hide site..." -msgstr "Necesitás equipamiento para establecer un escondite..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working on the hide site..." -msgstr "%s vuelve de trabajar en el escondite..." - -#: src/mission_companion.cpp -msgid "You must select an existing hide site." -msgstr "Tenés que seleccionar un escondite ya existente." - -#: src/mission_companion.cpp -msgid "Bring gear back?" -msgstr "¿Querés traer de vuelta el equipo?" - -#: src/mission_companion.cpp -msgid "departs for the hide site..." -msgstr "se va al escondite..." - -#: src/mission_companion.cpp -msgid "You need equipment to transport between the hide site..." -msgstr "Necesitás equipamiento para trasladar al escondite..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from shuttling gear between the hide site..." -msgstr "%s vuelve de transportar equipamiento al escondite..." - -#: src/mission_companion.cpp -msgid "" -"Select a start and end point. Line must be straight. Fields, forests, and " -"swamps are valid fortification locations. In addition to existing " -"fortification constructions." -msgstr "" -"Elegí un punto de inicio y uno final. La línea tiene que ser derecho. " -"Campos, bosques y pantanos son lugares válidos para fortificaciones. Se " -"agregan a las fortificaciones existentes." - -#: src/mission_companion.cpp -msgid "Select an end point." -msgstr "Elegí un punto final." - -#: src/mission_companion.cpp -msgid "Invalid terrain in construction path." -msgstr "No es un terreno válido para construir un camino." - -#: src/mission_companion.cpp -msgid "You don't have the material to build the fortification." -msgstr "No tenés el material para construir la fortificación." - -#: src/mission_companion.cpp -msgid "begins constructing fortifications..." -msgstr "comienza a construir fortificaciones..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from constructing fortifications..." -msgstr "%s vuelve de construir fortificaciones..." - -#: src/mission_companion.cpp -msgid "departs to search for recruits..." -msgstr "se va a buscar reclutas..." - -#: src/mission_companion.cpp -msgid "" -"Select checkpoints until you reach maximum range or select the last point " -"again to end." -msgstr "" -"Elegí los puntos hasta que alcances el rango máximo o elegí el último punto " -"otra vez para terminar." - -#: src/mission_companion.cpp -msgid "departs on patrol..." -msgstr "se va a patrullar..." - -#: src/mission_companion.cpp -msgid "Your companion hit a river and didn't know how to swim..." -msgstr "Tu compañera llega a un río y no sabe nadar..." - -#: src/mission_companion.cpp -msgid "" -"Your companion hit a river and didn't know how to swim well enough to " -"cross..." -msgstr "" -"Tu compañero llega a un río y no sabe nadar bien como para cruzarlo " -"nadando..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't return from patrol..." -msgstr "%s no volvió de patrullar..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from patrol..." -msgstr "%s vuelve de patrullar..." - -#: src/mission_companion.cpp -msgid "You already have someone working in that garage." -msgstr "Ya tenés a alguien trabajando en el garage." - -#: src/mission_companion.cpp -msgid "begins plowing the field..." -msgstr "empieza a arar el campo..." - -#: src/mission_companion.cpp -msgid "You already have someone plowing that field." -msgstr "Ya tenés a alguien arando ese campo." - -#: src/mission_companion.cpp -msgid "You have no additional seeds to give your companions..." -msgstr "No tenés más semillas para darle a tus compañeros..." - -#: src/mission_companion.cpp -msgid "begins planting the field..." -msgstr "empieza a plantar el campo..." - -#: src/mission_companion.cpp -msgid "Which seeds do you wish to have planted?" -msgstr "¿Qué semilla querés plantar?" - -#: src/mission_companion.cpp -msgid "You already have someone planting that field." -msgstr "Ya tenés a alguien plantando semillas en ese campo." - -#: src/mission_companion.cpp -msgid "begins to harvest the field..." -msgstr "empieza a cosechar el campo..." - -#: src/mission_companion.cpp -msgid "You already have someone harvesting that field." -msgstr "Ya tenés a alguien cosechando ese campo." - #: src/mission_companion.cpp msgid "departs to work as a carpenter..." msgstr "se va a trabajar como carpintero..." @@ -153194,284 +155858,6 @@ msgstr "" "%s se siente más confiado en tus compañeros y está deseoso de dejarlos " "participar de tareas más importantes." -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"%s\n" -" \n" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s \n" -"Risk: None\n" -"Time: %s\n" -msgstr "" -"Notas:\n" -"%s\n" -" \n" -"Habilidad usada: %s\n" -"Dificultad: %d\n" -"%s \n" -"Riesgo: Ninguno\n" -"Tiempo: %s\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s\n" -"Time: %s\n" -msgstr "" -"Habilidad usada: %s\n" -"Dificultad: %d\n" -"%s\n" -"Tiempo: %s\n" - -#: src/mission_companion.cpp -msgid "" -"Notes: \n" -"Send a companion to gather materials for the next camp upgrade.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -msgstr "" -"Notas: \n" -"Enviar compañero a recoger materiales para la próxima mejora del campamento.\n" -" \n" -"Habilidad usada: supervivencia\n" -"Dificultad: N/D \n" -"Posibilidad de Recolectar:\n" - -#: src/mission_companion.cpp -msgid "" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: " -msgstr "" -" \n" -"Riesgo: Muy Poco\n" -"Tiempo: 3 Horas, Repetir\n" -"Posiciones: " - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from upgrading the camp having earned a bit of experience..." -msgstr "" -"%s vuelve de mejorar el campamento habiendo ganado un poco de experiencia..." - -#: src/mission_companion.cpp -#, c-format -msgid "While gathering supplies, a silent specter approaches %s..." -msgstr "" -"Mientras recolectaba suministros, un espectador silencioso se acerca a %s..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s notices the antlered horror and slips away before it gets too close." -msgstr "" -"%s ve un horror con cuernos y se escabulle antes de que se le acerque " -"demasiado." - -#: src/mission_companion.cpp -#, c-format -msgid "The survivor approaches %s asking for directions." -msgstr "El sobreviviente se acerca a %s preguntando direcciones." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Fearful that he may be an agent of some hostile faction, %s doesn't mention " -"the camp." -msgstr "" -"Por temor a que pertenezca a un bando hostil, %s no menciona el campamento." - -#: src/mission_companion.cpp -msgid "The two part on friendly terms and the survivor isn't seen again." -msgstr "" -"Los dos se separan en buenos términos y el sobreviviente no es vuelto a ver." - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't detect the ambush until it was too late!" -msgstr "¡%s no se dio cuenta de la emboscada hasta que fue demasiado tarde!" - -#: src/mission_companion.cpp -#, c-format -msgid "The bull moose charged %s from the tree line..." -msgstr "El alce macho ataca a %s desde los árboles..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Despite being caught off guard %s was able to run away until the moose gave " -"up pursuit." -msgstr "" -"A pesar de ser agarrado/a por sorpresa, %s pudo escaparse del alce hasta " -"que dejó de perseguirlo/a." - -#: src/mission_companion.cpp -#, c-format -msgid "The jabberwock grabbed %s by the arm from behind and began to scream." -msgstr "El jabberwock agarró a %s por el brazo desde atrás y empezó a gritar." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Terrified, %s spun around and delivered a massive kick to the creature's " -"torso..." -msgstr "" -"Horrorizado/a, %s giró y le dió una tremenda patada a la criatura en el " -"torso..." - -#: src/mission_companion.cpp -#, c-format -msgid "Collapsing into a pile of gore, %s walked away unscathed..." -msgstr "Cayendo en una pila de tripas, %s se retiró ileso/a..." - -#: src/mission_companion.cpp -msgid "(Sounds like bullshit, you wonder what really happened.)" -msgstr "(Parece todo mentira, te preguntás qué habrá pasado.)" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s turned to find the hideous black eyes of a giant wasp staring back from " -"only a few feet away..." -msgstr "" -"%s se dió vuelta y encontró los horribles ojos negros de una avispa gigante " -"mirandolo/a desde unos pocos metros..." - -#: src/mission_companion.cpp -msgid "The screams were terrifying, there was nothing anyone could do." -msgstr "Los gritos eran terroríficos, nadie podía hacer nada." - -#: src/mission_companion.cpp -#, c-format -msgid "Pieces of %s were found strewn across a few bushes." -msgstr "Se encontraron pedazos de %s desparramados entre los arbustos." - -#: src/mission_companion.cpp -msgid "(You wonder if your companions are fit to work on their own...)" -msgstr "" -"(Te preguntás si tus compañeros están preparados para trabajar solos...)" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from gathering materials carrying supplies and has a bit more " -"experience..." -msgstr "" -"%s vuelve de recolectar materiales cargando suministros, y tiene un poco más" -" de experiencia..." - -#: src/mission_companion.cpp -msgid "Your companion seems disappointed that your pantry is empty..." -msgstr "Tu compañero parece decepcionado porque tu despensa está vacía..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -" Chopping this vehicle:\n" -"%s" -msgstr "" -" Desarmando este vehículo:\n" -"%s" - -#: src/mission_companion.cpp -msgid "begins working in the garage..." -msgstr "empieza a trabajar en el garage..." - -#: src/mission_companion.cpp -msgid "No seeds to plant!" -msgstr "¡No hay semillas para plantar!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working your fields..." -msgstr "%s vuelve de trabajar en tus campos..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from doing the dirty work to keep the camp running..." -msgstr "" -"%s vuelve de hacer el trabajo sucio para que el campamento siga " -"funcionando..." - -#: src/mission_companion.cpp -msgid "Sorting points have changed, forcing reset." -msgstr "Los puntos de orden fueron cambiados, forzando el reajuste." - -#: src/mission_companion.cpp -msgid "Select an expansion:" -msgstr "Elegí una expansión:" - -#: src/mission_companion.cpp -msgid "You choose to wait..." -msgstr "Elegís esperar..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from surveying for the expansion." -msgstr "%s vuelve de inspeccionar la zona para una expansión." - -#: src/mission_companion.cpp -msgid "No items are located at the drop point..." -msgstr "No hay objetos ubicados en el punto de entrega..." - -#: src/mission_companion.cpp -#, c-format -msgid "You distribute %d kcal worth of food to your companions." -msgstr "Distribuís los %d kcal de comida entre tus compañeros." - -#: src/mission_companion.cpp -msgid "Harvestable: " -msgstr "Cosechable: " - -#: src/mission_companion.cpp -msgid "Ready for Planting: " -msgstr "Listo para Plantar: " - -#: src/mission_companion.cpp -msgid "Needs Plowing: " -msgstr "Necesita Arar: " - -#: src/mission_companion.cpp -#, c-format -msgid "Name: %25s\n" -msgstr "Nombre: %25s\n" - -#: src/mission_companion.cpp -msgid "---- Engines ----\n" -msgstr "---- Motores ----\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Engine: %25s\n" -msgstr "Motor: %25s\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Status: %24d%%\n" -msgstr ">Estado: %24d%%\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Fuel: %25s\n" -msgstr ">Combustible: %25s\n" - -#: src/mission_companion.cpp -msgid "---- Fuel Storage & Battery ----\n" -msgstr "---- Almacenamiento de combustible & Batería ----\n" - -#: src/mission_companion.cpp -msgid "Estimated Chop Time: 5 Days\n" -msgstr "Tiempo Estimado de Tala: 5 Días\n" - #: src/mission_companion.cpp #, c-format msgid "While %s was framing a building one of the walls began to collapse..." @@ -153646,405 +156032,6 @@ msgstr "¿Quién debería regresar?" msgid "No one returns to your party..." msgstr "Nadie regresa a tu grupo..." -#: src/mission_companion.cpp -msgid "MAIN" -msgstr "PRINCIPAL" - -#: src/mission_companion.cpp -msgid " [N] " -msgstr " [N] " - -#: src/mission_companion.cpp -msgid " [NE] " -msgstr " [NE] " - -#: src/mission_companion.cpp -msgid " [E] " -msgstr " [E] " - -#: src/mission_companion.cpp -msgid " [SE] " -msgstr " [SE] " - -#: src/mission_companion.cpp -msgid " [S] " -msgstr " [S] " - -#: src/mission_companion.cpp -msgid " [SW] " -msgstr " [SO] " - -#: src/mission_companion.cpp -msgid " [W] " -msgstr " [O] " - -#: src/mission_companion.cpp -msgid " [NW] " -msgstr " [NO] " - -#: src/mission_companion.cpp -msgid "Farm Expansion" -msgstr "Expansión de Granja" - -#: src/mission_companion.cpp -msgid "Garage Expansion" -msgstr "Expansión de Garage" - -#: src/mission_companion.cpp -msgid "Kitchen Expansion" -msgstr "Expansión de Cocina" - -#: src/mission_companion.cpp -msgid "Blacksmith Expansion" -msgstr "Expansión de Herrería" - -#: src/mission_companion.cpp -msgid "Empty Expansion" -msgstr "Expansión Vacía" - -#: src/mission_companion.cpp -#, c-format -msgid "Select a location between %d and %d tiles away." -msgstr "Elegí un lugar entre %d y %d espacios de distancia." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"You must select a target between %d and %d range from the base. Range: %d" -msgstr "" -"Tenés que seleccionar un objetivo entre %d y %d de rango de la base. Rango: " -"%d" - -#: src/mission_companion.cpp -msgid "You must be able to see the target that you select." -msgstr "Tenés que poder ver el objetivo que seleccionaste." - -#: src/mission_companion.cpp -msgid "Do you want to bounce off this location to extend range?" -msgstr "¿Querés parar en este lugar para extender el alcance?" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15.2f (km)\n" -msgstr ">Distancia:%15.2f (km)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">One Way: %15d (trips)\n" -msgstr ">Una Dirección: %15d (viajes)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15.2f (km)\n" -msgstr ">Recorridos: %15.2f (km)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15d (m)\n" -msgstr ">Distancia:%15d (m)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15d (m)\n" -msgstr ">Recorridos: %15d (m)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Travel: %15d (hours)\n" -msgstr ">Viaje: %15d (horas)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Working: %15d (hours)\n" -msgstr ">Trabajo: %15d (horas)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (days)\n" -msgstr "Total: %15d (días)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (hours)\n" -msgstr "Total: %15d (horas)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (minutes)\n" -msgstr "Total: %15d (minutos)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Food: %15d (kcal)\n" -" \n" -msgstr "" -"Comida: %15d (kcal)\n" -" \n" - -#: src/mission_companion.cpp -msgid "food for you" -msgstr "comida para vos" - -#: src/mission_companion.cpp -msgid "food for companions" -msgstr "comida para compañeros" - -#: src/mission_companion.cpp -msgid "weapons" -msgstr "armas" - -#: src/mission_companion.cpp -msgid "clothing" -msgstr "ropa" - -#: src/mission_companion.cpp -msgid "bionics" -msgstr "biónicos" - -#: src/mission_companion.cpp -msgid "all kinds of tools" -msgstr "toda clase de herramientas" - -#: src/mission_companion.cpp -msgid "wood of various sorts" -msgstr "maderas de distintos tipos" - -#: src/mission_companion.cpp -msgid "trash and rotting food" -msgstr "basura y comida podrida" - -#: src/mission_companion.cpp -msgid "books" -msgstr "libros" - -#: src/mission_companion.cpp -msgid "medication" -msgstr "medicamentos" - -#: src/mission_companion.cpp -msgid "ammo" -msgstr "munición" - -#: src/mission_companion.cpp -#, c-format -msgid "Reset point: %s?" -msgstr "¿Querés resetear los puntos: %s?" - -#: src/mission_companion.cpp -msgid "" -" Items New Point Old Point\n" -" \n" -msgstr "" -" Objetos Punto Nuevo Punto Viejo\n" -" \n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -" Save Points?" -msgstr "" -"\n" -" \n" -" ¿Guardar Puntos?" - -#: src/mission_companion.cpp -msgid "Revert to default points?" -msgstr "¿Revertir a puntos por defecto?" - -#: src/mission_companion.cpp -msgid "You don't have the materials to craft that" -msgstr "No tenés los materiales para fabricar eso" - -#: src/mission_companion.cpp -#, c-format -msgid "Batch crafting %s [MAX: %d]: " -msgstr "Fabricar en grupo %s [MAX: %d]: " - -#: src/mission_companion.cpp -msgid "Your batch is too large!" -msgstr "¡Ese grupo es demasiado grande!" - -#: src/mission_companion.cpp -msgid "You already have someone working in that expansion." -msgstr "Ya tenés a alguien trabajando en esa expansión." - -#: src/mission_companion.cpp -msgid "begins to work..." -msgstr "comienza a trabajar..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" -" \n" -"Skill used: speech\n" -"Difficulty: 2 \n" -"Base Score: +%3d%%\n" -"> Expansion Bonus: +%3d%%\n" -"> Faction Bonus: +%3d%%\n" -"> Special Bonus: +%3d%%\n" -" \n" -"Total: Skill +%3d%%\n" -" \n" -"Risk: High\n" -"Time: 4 Days\n" -"Positions: %d/1\n" -msgstr "" -"Notas:\n" -"Reclutar seguidores adicionales es muy caro y peligroso. El resultado dependerá mucho de la habilidad del compañero enviado y del atractivo de tu base.\n" -" \n" -"Habilidad usada: hablar\n" -"Dificultad: 2 \n" -"Puntuación de Base: +%3d%%\n" -"> Bonus por Expansión: +%3d%%\n" -"> Bonus por Bando: +%3d%%\n" -"> Bonus Especial: +%3d%%\n" -" \n" -"Total: Habilidad +%3d%%\n" -" \n" -"Riesgo: Alto\n" -"Tiempo: 4 Días\n" -"Posiciones: %d/1\n" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from searching for recruits with a bit more experience..." -msgstr "" -"%s vuelve de buscar por nuevos reclutas con un poco más de experiencia..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s encountered %s..." -msgstr "%s encontró %s..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't find anyone to recruit..." -msgstr "%s no encontró nadie para reclutar..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s convinced %s to hear a recruitment offer from you..." -msgstr "%s convenció %s a que te escuche hablar a vos por el reclutamiento..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested in anything %s had to offer..." -msgstr "%s no tenía ningún interés en lo que le podía ofrecer %s..." - -#: src/mission_companion.cpp -msgid "" -"NPC Overview:\n" -" \n" -msgstr "" -"Vista general de PNJ:\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Name: %20s\n" -" \n" -msgstr "" -"Nombre: %20s\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "Strength: %10d\n" -msgstr "Fuerza: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Dexterity: %10d\n" -msgstr "Destreza: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Intelligence: %10d\n" -msgstr "Inteligencia: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Perception: %10d\n" -" \n" -msgstr "" -"Percepción: %10d\n" -" \n" - -#: src/mission_companion.cpp -msgid "Top 3 Skills:\n" -msgstr "3 Mejores Habilidades:\n" - -#: src/mission_companion.cpp -msgid "Asking for:\n" -msgstr "Pide:\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"> Food: %10d days\n" -" \n" -msgstr "" -"> Comida: %10d días\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Faction Food:%9d days\n" -" \n" -msgstr "" -"Comida de Bando:%9d días\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Recruit Chance: %10d%%\n" -" \n" -msgstr "" -"Probabilidad de Reclutamiento: %10d%%\n" -" \n" - -#: src/mission_companion.cpp -msgid "Select an option:" -msgstr "Elegir una opción:" - -#: src/mission_companion.cpp -msgid "Increase Food" -msgstr "Incrementar Comida" - -#: src/mission_companion.cpp -msgid "Decrease Food" -msgstr "Disminuir Comida" - -#: src/mission_companion.cpp -msgid "Make Offer" -msgstr "Hacer Oferta" - -#: src/mission_companion.cpp -msgid "Not Interested" -msgstr "No Estás Interesado" - -#: src/mission_companion.cpp -msgid "You decide you aren't interested..." -msgstr "Decidiste que no estás interesado..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s has been convinced to join!" -msgstr "¡%s ha sido convencido de unirse!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested..." -msgstr "%s no estaba interesado..." - #: src/mission_companion.h msgid "Do you wish to give your companion additional items?" msgstr "¿Querés darle más objetos a tu compañero?" @@ -156782,9 +158769,10 @@ msgstr "Puntos para usar: %4d" msgid "Freeform" msgstr "Formalibre" -#: src/newcharacter.cpp -msgid "Pick your style:" -msgstr "Elegí tu estilo:" +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" +msgstr "Elegí un estilo. (apretá %s para más información)" #: src/newcharacter.cpp msgid "Use this style?" @@ -156858,8 +158846,8 @@ msgid "" "Putting stat points into traits and skills is allowed and putting trait points into skills is allowed.\n" "Scenarios and professions affect skill point pool" msgstr "" -"Las características, peculiaridades y habilidades tienen grupos de puntos separados.\n" -"Se pueden usar puntos de características en las peculiaridades o habilidades, y también de peculiaridades en habilidades.\n" +"Las características, peculiaridades y habilidades tienen puntos separados.\n" +"Se pueden usar puntos de características en peculiaridades y habilidades, y también de peculiaridades en habilidades.\n" "Los escenarios y las profesiones afectan el grupo de puntos de habilidades." #: src/newcharacter.cpp @@ -156874,7 +158862,7 @@ msgstr "" #: src/newcharacter.cpp msgid "No point limits are enforced" -msgstr "No hay límites de puntos obligatorios" +msgstr "No hay límites de puntos obligatorios." #: src/newcharacter.cpp msgid "Return to main menu?" @@ -158031,50 +160019,6 @@ msgstr "Me podrías dar una mano con otra cosa si estás interesado." msgid " If you are interested, I have another job for you." msgstr "Si estás interesado, tengo otro trabajo para vos." -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "¡Un placer hacer negocios!" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "Bueno, supongo que solo quedamos nosotros." - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "Por lo menos tenemos un refugio." - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "No sé, buscar suministros o a otros supervivientes, supongo." - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "Tal vez deberíamos empezar por poner tablas en las aberturas." - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to" -" disappear quickly from here." -msgstr "" -"Supongo que conseguir un auto que funcione va a ser útil si tenemos que " -"salir rápido de acá." - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "" -"Podemos buscar una de esas granjas de por acá. Están alejadas de las " -"ciudades y podemos conseguir mucha comida." - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "" -"Probablemente, deberíamos mantenernos lejos de esas ciudades, incluso aunque" -" haya un montón de cosas útiles ahí." - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." msgstr "Ya me pediste cosas; preguntame en otro momento." @@ -158083,10 +160027,6 @@ msgstr "Ya me pediste cosas; preguntame en otro momento." msgid "Why should I share my equipment with you?" msgstr "¿Por qué tendría que compartir mi equipo con vos?" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "Bueno, acá tenés." - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr "¡, y si preguntás otra vez !" @@ -158107,46 +160047,6 @@ msgstr "Lo lamento, pero no parece que haya nada que te pueda enseñar." msgid "Here's what I can teach you..." msgstr "Te puedo enseñar esto..." -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "Bueno, comencemos." - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "Hasta que no tenga algún antibiótico, no..." - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "Recién me preguntaste; preguntame de nuevo después." - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "¿Por qué tendría que viajar con vos?" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "¡No hay problema, estoy con vos!" - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "Sí... no me parece." - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "¿Qué es?" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "¿Te vas de en serio?" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "Bueno. Ahora podés guiarme." - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "No. Acá yo soy el líder." - #: src/npctalk.cpp #, c-format msgid "%d.%d miles." @@ -158159,22 +160059,6 @@ msgid_plural "%d feet." msgstr[0] "%d pie." msgstr[1] "%d pies." -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "Estoy de guardia." - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "¡No hay ninguna chance, me van a dejar atrás!" - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "Prefiero quedarme con eso para mí." - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "Realmente no me siento cómodo haciendo eso..." - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "*no está enfretando enemigos." @@ -158270,7 +160154,7 @@ msgstr "Fue %d - %d" #: src/npctalk.cpp #, c-format msgid "Dex %d - %d" -msgstr "Dez %d - %d" +msgstr "Des %d - %d" #: src/npctalk.cpp #, c-format @@ -158480,30 +160364,6 @@ msgstr "Tal vez me vuelvas a ver..." msgid "Delivering bandages." msgstr "Entregando vendas." -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "¿Qué hacemos ahora?" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "¿Algún consejo?" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "¿Querés viajar conmigo?" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "Vamos a intercambiar objetos." - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "No puedo salir del refugio sin equipamiento..." - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "Hmm, bueno." - #: src/npctalk.cpp msgid "Okay, fine." msgstr "Bueno, está bien." @@ -158536,30 +160396,6 @@ msgstr "Eh, no importa." msgid "Never mind, I'll do without. Bye." msgstr "No importa, lo voy a hacer sin eso. Chau." -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "¡Gracias!" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "¡Gracias! ¿Pero me podés dar más?" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "¡Gracias, nos vemos después!" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "Bueno, bueno, perdón." - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "¡En serio, dame alguna cosa!" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "Bueno, está bien, chau." - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "Sí, sigamos entrenando." @@ -158581,94 +160417,6 @@ msgstr "%s: %d -> %d" msgid "%s: %d -> %d (cost $%d)" msgstr "%s: %d -> %d (cuesta $%d)" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "Suena bien." - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "Pensandolo bien, olvidate." - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "Bueno. Guiá el camino." - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "No, vamos a estar bien acá." - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "Entendido. Voy a conseguir esos antibióticos." - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "Bueno, bueno, pregunto más tarde." - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "Te puedo mantener a salvo." - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "Me podés mantener a salvo." - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "Somos amigos, ¿o no?" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "Te voy a matar si no lo hacés." - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "¡Copado!" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "¡Bueno, vamos!" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "¿Cuánto más falta?" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "Voy a seguir mi propio camino por un tiempo." - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "Me gustaría guiar por un rato." - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "Hacete a un lado. Ahora yo soy el líder." - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "Vamos." - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "Nah, te estaba boludeando." - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "Sí, estoy seguro. Chau." - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "Bieno. Algo más..." - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "Bueno, vamos." - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "Bueno, bueno." - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "Bueno, gracias. " @@ -158677,10 +160425,6 @@ msgstr "Bueno, gracias. " msgid "Let's keep moving." msgstr "Sigamos andando." -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "Necesito que vengas conmigo." - #: src/npctalk.cpp msgid "Combat commands..." msgstr "Comandos de combate..." @@ -158739,16 +160483,12 @@ msgid "Miscellaneous rules..." msgstr "Reglas varias..." #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "Hablemos de los campamentos de bandos." - -#: src/npctalk.cpp -msgid "I'll give you some space." -msgstr "Te voy a dar un poco de espacio." +msgid "I'm going to go my own way for a while." +msgstr "Voy a seguir mi propio camino por un tiempo." #: src/npctalk.cpp -msgid "I understand..." -msgstr "Entiendo..." +msgid "Let's talk about faction camps." +msgstr "Hablemos de los campamentos de bandos." #: src/npctalk.cpp msgid "Change your engagement rules..." @@ -159493,6 +161233,11 @@ msgstr "" "también destroza los cadáveres cercanos. - Carnear: carnea el cadáver sobre " "el que estás parado." +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "Desactivado" + #: src/options.cpp msgid "Pulp" msgstr "Destrozar" @@ -159718,10 +161463,6 @@ msgstr "" msgid "Always" msgstr "Siempre" -#: src/options.cpp -msgid "Ask" -msgstr "Preguntar" - #: src/options.cpp msgid "Never" msgstr "Nunca" @@ -161422,7 +163163,7 @@ msgstr "Apretá una tecla para continuar..." #, c-format msgctxt "query_yn" msgid "%s (Case Sensitive)" -msgstr "%s (Sensible a Mayúscula)" +msgstr "%s (Usá Mayúscula)" #: src/output.cpp #, c-format @@ -162291,9 +164032,7 @@ msgstr "Energía: %d/%d" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "Arma:" -msgstr[1] "Armas:" +msgstr "Arma:" #: src/player.cpp msgid "Equipment:" @@ -163769,24 +165508,6 @@ msgstr "¿Extraer %s deñ/a %s?" msgid "Stop wielding %s?" msgstr "¿Querés dejar de empuñar el/a %s?" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "Técnica:" -msgstr[1] "Técnicas:" - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "" -"Este estilo te fuerza a usar golpes desarmados, incluso si estás empuñando " -"un arma." - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "Elegí un estilo. (apretá %s para más información)" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "Manos libres (no)" @@ -163844,6 +165565,11 @@ msgstr "Romper" msgid "Mend" msgstr "Arreglar" +#: src/player.cpp +#, c-format +msgid "The %s doesn't have any faults to toggle." +msgstr "El/a %s no tiene ningún desperfecto para solucionar." + #: src/player.cpp #, c-format msgid "The %s doesn't have any faults to mend." @@ -164044,7 +165770,7 @@ msgstr "¿Para qué sirve estudiar? (¡Tu moral es demasiado baja!)" #: src/player.cpp #, c-format msgid "You need %s %d to understand the jargon!" -msgstr "¡Necesitás %s en %d para entender la jerga!" +msgstr "¡Necesitás %s en %d para entender la terminología técnica!" #: src/player.cpp msgid "Your eyes won't focus without reading glasses." @@ -164066,7 +165792,7 @@ msgstr "¡%s es analfabeto!" #: src/player.cpp #, c-format msgid "%s needs %s %d to understand the jargon!" -msgstr "¡%s necesita %s en %d para entender la jerga!" +msgstr "¡%s necesita %s en %d para entender la terminología técnica!" #: src/player.cpp #, c-format @@ -164631,10 +166357,6 @@ msgstr "Inteligencia" msgid "Perception" msgstr "Percepción" -#: src/player_display.cpp -msgid "Speed" -msgstr "Velocidad" - #: src/player_display.cpp msgid "Severely Malnourished" msgstr "Severamente Malnutrido/a" @@ -165758,6 +167480,10 @@ msgstr "¡Kabum!" msgid "kerblam!" msgstr "¡kerblam!" +#: src/recipe.cpp +msgid "none" +msgstr "nada" + #: src/requirements.cpp #, c-format msgid "%d tool with %s of %d or more." @@ -167096,6 +168822,23 @@ msgstr "'{' para desplazar arriba" msgid "'}' to scroll down" msgstr "'}' para desplazar abajo" +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "" +"Al quitar los %1$s rotos podrías conseguir algunos fragmentos " +".\n" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" +msgstr "" +"Al quitar los %1$s podrías conseguir:\n" +"> %2$s\n" + #: src/veh_interact.cpp #, c-format msgid "> %2$s" @@ -167960,13 +169703,13 @@ msgstr "No hay suficiente energía para activar el/a %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" -msgstr "Apagar %s" +msgid "Turn on %s" +msgstr "Encender %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" -msgstr "Encender %s" +msgid "Turn off %s" +msgstr "Apagar %s" #: src/vehicle_use.cpp #, c-format @@ -168062,10 +169805,6 @@ msgstr "Sistema de cámaras activado" msgid "Camera system won't turn on" msgstr "El sistema de cámaras no enciende" -#: src/vehicle_use.cpp -msgid "Quit controlling electronics" -msgstr "Dejar de controlar electrónicos" - #: src/vehicle_use.cpp msgid "Electronics controls" msgstr "Controles de electrónicos" diff --git a/lang/po/es_ES.po b/lang/po/es_ES.po index 88380cce4e1d4..8c57ccaae02c7 100644 --- a/lang/po/es_ES.po +++ b/lang/po/es_ES.po @@ -2,19 +2,19 @@ # Da WhatTheFox , 2018 # keno xite , 2018 # Luis Ortega , 2018 -# Brett Dong , 2018 # Víctor Arias , 2018 # Vlasov Vitaly , 2018 -# Miguel de Dios Matias , 2018 # Toni López , 2018 +# Brett Dong , 2018 +# Miguel de Dios Matias , 2018 # msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-26 22:02+0800\n" +"POT-Creation-Date: 2018-11-16 22:24+0800\n" "PO-Revision-Date: 2018-04-26 14:47+0000\n" -"Last-Translator: Toni López , 2018\n" +"Last-Translator: Miguel de Dios Matias , 2018\n" "Language-Team: Spanish (Spain) (https://www.transifex.com/cataclysm-dda-translators/teams/2217/es_ES/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -226,7 +226,7 @@ msgstr "plumón" #. ~ Description for down feather #: lang/json/AMMO_from_json.py msgid "Fluffy down feathers from a bird. Useful for making cozy bedclothes." -msgstr "" +msgstr "Suaves plumones de ave. Útiles para hacer un cubrecamas calentito." #: lang/json/AMMO_from_json.py msgid "fusion pack" @@ -4897,6 +4897,7 @@ msgstr "" "parece..." #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "piedra" @@ -5977,6 +5978,16 @@ msgid_plural "bondage masks" msgstr[0] "máscara de bondage" msgstr[1] "máscaras de bondage" +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "" + #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" @@ -5986,6 +5997,29 @@ msgstr "" "Una máscara muy ajustada hecha de cuero negro. Los agujeros de los ojos y la" " boca pueden ser cerrados con los cierres." +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "" + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "bondage suit" msgid_plural "bondage suits" @@ -6532,7 +6566,7 @@ msgstr[1] "" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." msgstr "" @@ -6933,6 +6967,19 @@ msgstr[1] "gabardinas de piel" msgid "A thick fur full-length duster. Has many pockets for storage." msgstr "" +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather duster" msgid_plural "leather dusters" @@ -8074,6 +8121,19 @@ msgstr[1] "gorras de piel" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "Una gorra hecha con piel de animal. Extremadamente abrigada." +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -8435,17 +8495,6 @@ msgstr "" "Un yelmo medieval que brinda excelente protección para toda la cabeza, pero " "también es muy incómodo de usar." -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "casco antidisturbios" -msgstr[1] "cascos antidisturbios" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "Un casco con una protección plástica que cubre la cara entera." - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" @@ -10125,6 +10174,17 @@ msgstr[1] "pantalones de piel" msgid "A hefty pair of fur-lined pants." msgstr "Unos pantalones pesados, recubiertos de piel." +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather pants" msgid_plural "leather pants" @@ -10815,17 +10875,57 @@ msgid_plural "sleeping bags" msgstr[0] "saco de dormir" msgstr[1] "sacos de dormir" +#. ~ Use action menu_text for sleeping bag. +#. ~ Use action menu_text for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Roll up" +msgstr "" + +#. ~ Use action msg for sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the sleeping bag, preparing it for transport." +msgstr "" + #. ~ Description for sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag that covers you head to toe." msgstr "Un saco de dormir grande que te cubre desde la cabeza hasta los pies." +#: lang/json/ARMOR_from_json.py +msgid "rolled sleeping bag" +msgid_plural "rolled sleeping bags" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action menu_text for rolled sleeping bag. +#. ~ Use action menu_text for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Unroll" +msgstr "" + +#. ~ Use action msg for rolled sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll the sleeping bag." +msgstr "" + +#. ~ Description for rolled sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag rolled up for transport. It has a strap to carry it " +"with." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "fur sleeping bag" msgid_plural "fur sleeping bags" msgstr[0] "saco de dormir de piel" msgstr[1] "sacos de dormir de piel" +#. ~ Use action msg for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the fur sleeping bag, preparing it for transport." +msgstr "" + #. ~ Description for fur sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag lined with fur. Who needs a tent?" @@ -10833,6 +10933,24 @@ msgstr "" "Un saco de dormir grande forrado de piel. ¿Quién necesita una tienda de " "campaña?" +#: lang/json/ARMOR_from_json.py +msgid "rolled fur sleeping bag" +msgid_plural "rolled fur sleeping bags" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action msg for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll up the fur sleeping bag." +msgstr "" + +#. ~ Description for rolled fur sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag lined with fur, rolled for transport. It has a strap " +"to carry it with." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless duster" msgid_plural "sleeveless dusters" @@ -10863,6 +10981,19 @@ msgstr "" "Es una gabardina robusta y larga de piel, sin mangas por lo que deja tus " "brazos liberados. Mucha capacidad de almacenamiento." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" msgid_plural "sleeveless leather dusters" @@ -10924,6 +11055,19 @@ msgstr "" "Una gabardina sin mangas resistente de piel, que te deja los brazos libres. " "Tiene mucha capacidad de almacenamiento debido a sus numerosos bolsillos." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -11681,6 +11825,19 @@ msgstr "" "Una gabardina gruesa de piel, con varios bolsillos. Tiene muy buena " "capacidad de almacenamiento." +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" msgid_plural "leather trenchcoats" @@ -12276,8 +12433,8 @@ msgstr "" #: lang/json/ARMOR_from_json.py msgid "XL pot helmet" msgid_plural "XL pot helmets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "casco de olla XL" +msgstr[1] "cascos de olla XL" #. ~ Description for XL pot helmet #: lang/json/ARMOR_from_json.py @@ -15372,11 +15529,12 @@ msgstr[0] "" msgstr[1] "" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" @@ -15416,23 +15574,6 @@ msgid "" "highly discouraged." msgstr "" -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "" -msgstr[1] "" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While" -" activated, they will continously drain power to make automated precise cuts" -" but you will be unable to wield anything." -msgstr "" - #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" msgid_plural "Lessons for the Novice Bowhunter" @@ -18402,6 +18543,21 @@ msgstr "" "diseñador de ropa. Lleno de bocetos y notas, un sastre habilidoso podría " "aprender mucho de este volumen." +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon" +" Animal Rights Organization." +msgstr "" + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -18591,8 +18747,8 @@ msgstr "" #: lang/json/BOOK_from_json.py msgid "chess set" msgid_plural "chess sets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "juego de ajedrez" +msgstr[1] "juegos de ajedrez" #. ~ Description for chess set #: lang/json/BOOK_from_json.py @@ -18603,8 +18759,8 @@ msgstr "" #: lang/json/BOOK_from_json.py msgid "checkers set" msgid_plural "checkers sets" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "juego de damas" +msgstr[1] "juegos de damas" #. ~ Description for checkers set #: lang/json/BOOK_from_json.py @@ -18614,8 +18770,8 @@ msgstr "" #: lang/json/BOOK_from_json.py msgid "deck of cards" msgid_plural "deck of cardss" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "baraja de cartas" +msgstr[1] "barajas de cartas" #. ~ Description for deck of cards #: lang/json/BOOK_from_json.py @@ -18625,8 +18781,8 @@ msgstr "" #: lang/json/BOOK_from_json.py msgid "deck of Sorcery cards" msgid_plural "deck of Sorcery cardss" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "baraja de cartas de Encantamiento" +msgstr[1] "barajas de cartas de Encantamiento" #. ~ Description for deck of Sorcery cards #: lang/json/BOOK_from_json.py @@ -18650,8 +18806,8 @@ msgstr "" #: lang/json/BOOK_from_json.py msgid "Capitalism" msgid_plural "Capitalisms" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Capitalista" +msgstr[1] "Capitalistas" #. ~ Description for Capitalism #: lang/json/BOOK_from_json.py @@ -25826,7 +25982,7 @@ msgstr "Definitivamente, no es la misma receta que hacía la abuela." #: lang/json/COMESTIBLE_from_json.py msgid "putrid heart" -msgstr "" +msgstr "corazón putrefacto" #. ~ Description for putrid heart #: lang/json/COMESTIBLE_from_json.py @@ -26322,7 +26478,7 @@ msgstr "Es un nutritivo huevo, puesto por algún pájaro." #: lang/json/COMESTIBLE_from_json.py msgid "chicken egg" -msgstr "" +msgstr "huevo de gallina" #: lang/json/COMESTIBLE_from_json.py msgid "grouse egg" @@ -26334,7 +26490,7 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "duck egg" -msgstr "" +msgstr "huevo de pato" #: lang/json/COMESTIBLE_from_json.py msgid "goose egg" @@ -26342,7 +26498,7 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "turkey egg" -msgstr "" +msgstr "huevo de pavo" #: lang/json/COMESTIBLE_from_json.py msgid "pheasant egg" @@ -26387,7 +26543,7 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "roach egg" -msgstr "" +msgstr "huevo de cucaracha" #. ~ Description for roach egg #: lang/json/COMESTIBLE_from_json.py @@ -26396,7 +26552,7 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "insect egg" -msgstr "" +msgstr "huevo de insecto" #. ~ Description for insect egg #: lang/json/COMESTIBLE_from_json.py @@ -26425,8 +26581,8 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "milkshake" msgid_plural "milkshakes" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "batido" +msgstr[1] "batidos" #. ~ Description for milkshake #: lang/json/COMESTIBLE_from_json.py @@ -26528,8 +26684,8 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "frozen yogurt" msgid_plural "frozen yogurt" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "yogur congelado" +msgstr[1] "yogures congelados" #. ~ Description for frozen yogurt #: lang/json/COMESTIBLE_from_json.py @@ -27398,7 +27554,7 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "multivitamin" -msgstr "" +msgstr "multivitaminas" #. ~ Use action activation_message for multivitamin. #. ~ Use action activation_message for calcium tablet. @@ -27422,7 +27578,7 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "calcium tablet" -msgstr "" +msgstr "pastilla de calcio" #. ~ Description for calcium tablet #: lang/json/COMESTIBLE_from_json.py @@ -27438,7 +27594,7 @@ msgstr "" #. ~ Description for bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Tastes horribly and is " +"Homemade calcium supplement made out of bone meal. Tastes horrible and is " "hard to swallow but it does its job." msgstr "" @@ -27449,9 +27605,9 @@ msgstr "" #. ~ Description for flavored bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Due to some sweetness " -"mixed in to counteract the powdery texture and the taste of ash, almost as " -"palatable as the pre-cataclysm tablets." +"Homemade calcium supplement made out of bone meal. Due to some sweetness " +"mixed in to counteract the powdery texture and the taste of ash, it's almost" +" as palatable as the pre-cataclysm tablets." msgstr "" #: lang/json/COMESTIBLE_from_json.py @@ -27903,7 +28059,7 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "spider mutagen" -msgstr "" +msgstr "mutágeno de araña" #: lang/json/COMESTIBLE_from_json.py msgid "troglobite mutagen" @@ -28060,7 +28216,7 @@ msgstr "" "Una bebida sabrosa y espesa hecha con proteína refinada y alguna fruta " "nutritiva. Ha sido suplementada con más vitaminas y minerales." -#: lang/json/COMESTIBLE_from_json.py src/mission_companion.cpp +#: lang/json/COMESTIBLE_from_json.py src/faction_camp.cpp msgid "seeds" msgid_plural "seeds" msgstr[0] "" @@ -30870,6 +31026,32 @@ msgid "" "when you look at them." msgstr "" +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "" + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "" + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -33723,7 +33905,7 @@ msgstr "" " El arma resultante es difícil de manejar y lenta pero con un golpe muy " "pesado." -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "tabla de madera" @@ -35665,12 +35847,8 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." +"spike." msgstr "" -"Es un arma medieval que consiste en un palo de madera con una punta de " -"hierro. Aunque es más larga y pesada que otras lanzas, su precisión y daño " -"no tienen comparación alguna." #: lang/json/GENERIC_from_json.py msgid "pot" @@ -40019,8 +40197,8 @@ msgstr[1] "" #: lang/json/GENERIC_from_json.py msgid "AI core" msgid_plural "AI cores" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "núcleo de IA" +msgstr[1] "núcleos de IA" #. ~ Description for AI core #: lang/json/GENERIC_from_json.py @@ -40030,8 +40208,8 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "surgery module" msgid_plural "surgery modules" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "módulo de cirugía" +msgstr[1] "módulos de cirugía" #. ~ Description for surgery module #: lang/json/GENERIC_from_json.py @@ -42721,7 +42899,7 @@ msgstr "Añade más variación de objetos improvisados y retoca los existentes." #: lang/json/MOD_INFO_from_json.py msgid "Mapgen Demo" -msgstr "" +msgstr "Demo de Generación de mapa" #. ~ Description for Mapgen Demo #: lang/json/MOD_INFO_from_json.py @@ -42840,19 +43018,6 @@ msgstr "" "ecolocación para orientarse por el aire a gran velocidad a través de terreno" " complicado." -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "oso Smoky" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "" -"Una cáscara humeante es todo lo que queda de lo que debe haber sido un " -"presuntuoso oso. Sus ojos negros te contemplan con malicia... y con hambre." - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "zombi cicatrizado" @@ -43071,11 +43236,9 @@ msgstr "C.H.U.D." #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "" -"El H.H.S.C., o Habitante Humanoide Subterráneo Canibalesco. Un humano que se" -" volvió pálido y loco por los años que pasó aislado y bajo tierra." #: lang/json/MONSTER_from_json.py msgid "police bot" @@ -43534,7 +43697,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "hologram" -msgstr "" +msgstr "holograma" #. ~ Description for hologram #: lang/json/MONSTER_from_json.py @@ -45539,7 +45702,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "giant acidic ant" -msgstr "" +msgstr "hormiga gigante ácida" #. ~ Description for giant acidic ant #: lang/json/MONSTER_from_json.py @@ -45849,10 +46012,10 @@ msgstr "" "mutantes gigantes." #: lang/json/MONSTER_from_json.py -msgid "labrador mutt" +msgid "Labrador mutt" msgstr "" -#. ~ Description for labrador mutt +#. ~ Description for Labrador mutt #: lang/json/MONSTER_from_json.py msgid "" "This once average Labrador mixed breed dog has clearly gone feral. You can " @@ -45861,10 +46024,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "labrador puppy" +msgid "Labrador puppy" msgstr "" -#. ~ Description for labrador puppy +#. ~ Description for Labrador puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Labrador puppy. Much safer to tame than adult " @@ -45878,7 +46041,7 @@ msgstr "" #. ~ Description for bulldog #: lang/json/MONSTER_from_json.py msgid "" -"The American Bulldog is a hardy, well built dog, that seems suited for " +"The American bulldog is a hardy, well built dog, that seems suited for " "surviving the apocalypse." msgstr "" @@ -45889,7 +46052,7 @@ msgstr "" #. ~ Description for bulldog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless American Bulldog puppy. Much safer to tame than " +"An adorable, defenseless American bulldog puppy. Much safer to tame than " "adult counterparts." msgstr "" @@ -45900,10 +46063,10 @@ msgstr "" #. ~ Description for pit bull mix #: lang/json/MONSTER_from_json.py msgid "" -"The oft-misunderstood Pit Bull is not actually a single breed but a label " -"for several such as American Pit Bull Terrier and American Staffordshire " -"Terrier. Average abilities and well-known for their 'lock jaw' which isn't " -"real but their incredible determination is." +"The oft-misunderstood pit bull is not actually a single breed but a label " +"for several such as the American pit bull terrier and American Staffordshire" +" terrier. Average abilities and well-known for their 'lock jaw' which isn't" +" real but their incredible determination is." msgstr "" #: lang/json/MONSTER_from_json.py @@ -45913,7 +46076,7 @@ msgstr "" #. ~ Description for pit bull puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Pit Bull puppy. Much safer to tame than adult " +"An adorable, defenseless pit bull puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -45924,7 +46087,7 @@ msgstr "" #. ~ Description for beagle #: lang/json/MONSTER_from_json.py msgid "" -"An adorable Beagle that has managed to survive the apocalypse. Being agile " +"An adorable beagle that has managed to survive the apocalypse. Being agile " "and small, they are difficult to shoot at. Generally attacks in packs." msgstr "" @@ -45935,7 +46098,7 @@ msgstr "" #. ~ Description for beagle puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Beagle puppy. Much safer to tame than adult " +"An adorable, defenseless beagle puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -45947,7 +46110,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "" "An athletic and hyperactive dog that loves to herd animals and jump, the " -"Border Collie is an agile attacker. Although they can be easy to train, " +"border collie is an agile attacker. Although they can be easy to train, " "they don't work well in packs." msgstr "" @@ -45958,7 +46121,7 @@ msgstr "" #. ~ Description for border collie puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Border Collie puppy. Much safer to tame than adult" +"An adorable, defenseless border collie puppy. Much safer to tame than adult" " counterparts." msgstr "" @@ -45969,7 +46132,7 @@ msgstr "" #. ~ Description for boxer mastiff #: lang/json/MONSTER_from_json.py msgid "" -"An ordinary breed full of affection, the Boxer Mastiff doesn't otherwise " +"An ordinary breed full of affection, the boxer mastiff doesn't otherwise " "stand out amongst other dogs with its capabilities." msgstr "" @@ -45980,15 +46143,15 @@ msgstr "" #. ~ Description for boxer puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Boxer puppy. Much safer to tame than adult " +"An adorable, defenseless boxer puppy. Much safer to tame than adult " "counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "chihuahua" +msgid "Chihuahua" msgstr "" -#. ~ Description for chihuahua +#. ~ Description for Chihuahua #: lang/json/MONSTER_from_json.py msgid "" "It's a tiny Chihuahua. How it has managed to survive is a miracle; although" @@ -45996,10 +46159,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "chihuahua puppy" +msgid "Chihuahua puppy" msgstr "" -#. ~ Description for chihuahua puppy +#. ~ Description for Chihuahua puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Chihuahua puppy. Much safer to tame than adult " @@ -46024,15 +46187,15 @@ msgstr "" #. ~ Description for dachshund puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Dachshund puppy. Much safer to tame than adult " +"An adorable, defenseless dachshund puppy. Much safer to tame than adult " "counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "german shepherd" +msgid "German shepherd" msgstr "" -#. ~ Description for german shepherd +#. ~ Description for German shepherd #: lang/json/MONSTER_from_json.py msgid "" "The original K-9 breed. An easy to train and great attack dog that will " @@ -46040,21 +46203,21 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "german shepherd puppy" +msgid "German shepherd puppy" msgstr "" -#. ~ Description for german shepherd puppy +#. ~ Description for German shepherd puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless German Shepherd puppy. Much safer to tame than " +"An adorable, defenseless German shepherd puppy. Much safer to tame than " "adult counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees" +msgid "Great Pyrenees" msgstr "" -#. ~ Description for great pyrenees +#. ~ Description for Great Pyrenees #: lang/json/MONSTER_from_json.py msgid "" "A large and powerful breed, the Great Pyrenees has a beautiful, thick white " @@ -46063,10 +46226,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees puppy" +msgid "Great Pyrenees puppy" msgstr "" -#. ~ Description for great pyrenees puppy +#. ~ Description for Great Pyrenees puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Great Pyrenees puppy. Much safer to tame than " @@ -46080,7 +46243,7 @@ msgstr "" #. ~ Description for rottweiler #: lang/json/MONSTER_from_json.py msgid "" -"Terrifying breed to face feral, as the Rottweiler breed is descended from " +"Terrifying breed to face feral, as the rottweiler breed is descended from " "Roman legion mastiffs. Robust and vicious, quite capable of mauling a human" " to death." msgstr "" @@ -46092,7 +46255,7 @@ msgstr "" #. ~ Description for rottweiler puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Rottweiler puppy. Much safer to tame than adult " +"An adorable, defenseless rottweiler puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -46103,8 +46266,8 @@ msgstr "" #. ~ Description for cattle dog #: lang/json/MONSTER_from_json.py msgid "" -"An agile and sturdy breed that is welcome on any farm, the Australian Cattle" -" Dog is adept at leaping fences and herding livestock." +"An agile and sturdy breed that is welcome on any farm, the Australian cattle" +" dog is adept at leaping fences and herding livestock." msgstr "" #: lang/json/MONSTER_from_json.py @@ -46114,7 +46277,7 @@ msgstr "" #. ~ Description for cattle dog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Australian Cattle Dog puppy. Much safer to tame " +"An adorable, defenseless Australian cattle dog puppy. Much safer to tame " "than adult counterparts." msgstr "" @@ -47394,6 +47557,19 @@ msgstr "" msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "" +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "oso Smoky" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "" +"Una cáscara humeante es todo lo que queda de lo que debe haber sido un " +"presuntuoso oso. Sus ojos negros te contemplan con malicia... y con hambre." + #: lang/json/MONSTER_from_json.py msgid "Compsognathus" msgstr "Compsognathus" @@ -49340,7 +49516,7 @@ msgstr[1] "máscaras ignífugas de supervivencia XL" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from" -" heat, smoke, teargas, and shrapnel. It must be prepared before use." +" heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" #: lang/json/TOOL_ARMOR_from_json.py @@ -50319,6 +50495,42 @@ msgid "" "into an active cable charger system." msgstr "" +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "casco antidisturbios" +msgstr[1] "cascos antidisturbios" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "" + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "" + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "" + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." +msgstr "" + #: lang/json/TOOL_from_json.py msgid "integrated toolset" msgid_plural "integrated toolsets" @@ -55856,7 +56068,7 @@ msgstr "" "inmediato para ataques de asma o inhalación de humo, y puede brindar una " "pequeña inyección de energía." -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" msgstr[0] "soldadora de mano" @@ -57735,14 +57947,6 @@ msgid "" " to a potato." msgstr "" -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "" - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" @@ -59046,6 +59250,15 @@ msgid_plural "autonomous surgical razors" msgstr[0] "" msgstr[1] "" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While" +" activated, they will continously drain power to make automated precise cuts" +" but you will be unable to wield anything." +msgstr "" + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -59757,7 +59970,7 @@ msgstr "" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "Gray track" -msgstr "" +msgstr "Camino gris" #: lang/json/WHEEL_from_json.py msgid "gelacier wheel" @@ -61381,6 +61594,12 @@ msgid "" "of impaired movement." msgstr "" +#: lang/json/bionic_from_json.py lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "" +msgstr[1] "" + #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" msgstr "" @@ -61394,13 +61613,6 @@ msgid "" "already, it will boost the rate of recovery while you sleep." msgstr "" -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "" -msgstr[1] "" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "" @@ -63668,12 +63880,12 @@ msgstr "Apuntado con láser" msgid "A laser sight is targeting you!" msgstr "¡Te está apuntando una mira láser!" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" msgstr "Humo" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "Inhalaste mucha cantidad de humo espeso." @@ -64568,11 +64780,9 @@ msgstr "Gas relajante" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" -"You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort." +"You are thoroughly relaxed and don't feel like moving. Fighting? Too much " +"effort." msgstr "" -"Fuerza - 3; Destreza - 3; Inteligencia - 2; Percepción - 4\n" -"Estás totalmente relajado/a y no tienes ganas de moverte. ¿Luchar? Demasiado esfuerzo." #. ~ Apply message for effect(s) 'Relaxation gas'. #: lang/json/effects_from_json.py @@ -64920,11 +65130,12 @@ msgstr "" msgid "This damaged limb is slowly regaining its functions." msgstr "" -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" -msgstr "Discapacitado" +msgstr "Desactivado" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "" @@ -65111,7 +65322,7 @@ msgstr "" #: lang/json/effects_from_json.py msgid "Discharge" -msgstr "" +msgstr "Descarga" #. ~ Description of effect 'Discharge'. #: lang/json/effects_from_json.py @@ -65143,7 +65354,7 @@ msgstr "Atrapado en una trampa pesada de lazo" #: lang/json/effects_from_json.py msgid "Sleep Deprived" -msgstr "" +msgstr "Privación del sueño" #. ~ Description of effect 'Sleep Deprived'. #: lang/json/effects_from_json.py @@ -66128,7 +66339,7 @@ msgstr "" #: lang/json/furniture_from_json.py msgid "recycle bin" -msgstr "" +msgstr "papelera de reciclaje" #. ~ Description for recycle bin #: lang/json/furniture_from_json.py @@ -66998,7 +67209,7 @@ msgstr "armario" #: lang/json/furniture_from_json.py msgid "piano" -msgstr "" +msgstr "piano" #: lang/json/furniture_from_json.py msgid "a suffering piano!" @@ -67332,8 +67543,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "longbow" msgid_plural "longbows" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "arco largo" +msgstr[1] "arcos largos" #: lang/json/gun_from_json.py msgid "" @@ -67401,8 +67612,7 @@ msgstr "" "arma tienen una gran probabilidad de no romperse." #: lang/json/gun_from_json.py lang/json/gun_from_json.py -#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py -#: lang/json/gunmod_from_json.py src/item.cpp +#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" msgid "pistol" msgstr "pistola" @@ -68349,17 +68559,17 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" #: lang/json/gun_from_json.py msgid "M249" msgid_plural "M249s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "M249" +msgstr[1] "M249s" #: lang/json/gun_from_json.py msgid "" @@ -68389,8 +68599,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "M4A1" msgid_plural "M4A1s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "M4A1" +msgstr[1] "M4A1s" #: lang/json/gun_from_json.py msgid "" @@ -68672,8 +68882,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "H&K G3" msgid_plural "H&K G3" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "H&K G3" +msgstr[1] "H&K G3" #: lang/json/gun_from_json.py msgid "" @@ -68811,8 +69021,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "M24" msgid_plural "M24" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "M24" +msgstr[1] "M24" #: lang/json/gun_from_json.py msgid "" @@ -69180,14 +69390,10 @@ msgstr[1] "" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those" " who wander the \"Earth-that-was\"." msgstr "" -"Una versión modernizada del reólver LeMat original, un arma rara y cara " -"producida durante la guerra civil estadounidense. Con capacidad para 9 balas" -" .44 y un solo cartucho 12 gauge, es una gran compañero para aquellos que " -"caminan por la \"Tierra-que-era\"." #: lang/json/gun_from_json.py msgid "Ruger Redhawk" @@ -70151,8 +70357,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Uzi 9mm" msgid_plural "Uzi 9mm" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Uzi 9mm" +msgstr[1] "Uzi 9mm" #: lang/json/gun_from_json.py msgid "" @@ -70164,8 +70370,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Glock 17" msgid_plural "Glock 17s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Glock 17" +msgstr[1] "Glock 17s" #: lang/json/gun_from_json.py msgid "" @@ -70412,8 +70618,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "nail gun" msgid_plural "nail guns" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "pistola de clavos" +msgstr[1] "pistolas de clavos" #: lang/json/gun_from_json.py msgid "" @@ -70442,8 +70648,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Paintball gun" msgid_plural "Paintball guns" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Pistola de paintball" +msgstr[1] "Pistolas de paintball" #: lang/json/gun_from_json.py msgid "A fairly harmless gun that shoots small paintballs." @@ -70512,8 +70718,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "M1014 shotgun" msgid_plural "M1014 shotguns" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "escopeta M1014" +msgstr[1] "escopetas M1014" #: lang/json/gun_from_json.py msgid "" @@ -70901,8 +71107,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "SVS-24" msgid_plural "SVS-24" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "SVS-24" +msgstr[1] "SVS-24" #: lang/json/gun_from_json.py msgid "" @@ -70915,8 +71121,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "SVS-24C" msgid_plural "SVS-24C" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "SVS-24C" +msgstr[1] "SVS-24C" #: lang/json/gun_from_json.py msgid "" @@ -70931,8 +71137,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "CW-24" msgid_plural "CW-24" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "CW-24" +msgstr[1] "CW-24" #: lang/json/gun_from_json.py msgid "" @@ -70947,8 +71153,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "CW-24M" msgid_plural "CW-24M" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "CW-24M" +msgstr[1] "CW-24M" #: lang/json/gun_from_json.py msgid "" @@ -71056,8 +71262,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "gunsword" msgid_plural "gunswords" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "espadarma" +msgstr[1] "espadarmas" #: lang/json/gun_from_json.py msgid "" @@ -71072,8 +71278,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "gunknife" msgid_plural "gunknives" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "pistolanavaja" +msgstr[1] "pistolanavajas" #: lang/json/gun_from_json.py msgid "" @@ -71394,8 +71600,8 @@ msgstr "" #: lang/json/gun_from_json.py msgid "minigun" msgid_plural "miniguns" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "minigun" +msgstr[1] "miniguns" #: lang/json/gun_from_json.py msgid "" @@ -72998,6 +73204,39 @@ msgid "" "reduction to accuracy." msgstr "" +#: lang/json/gunmod_from_json.py +msgid "belt feed adapter" +msgid_plural "belt feed adapters" +msgstr[0] "" +msgstr[1] "" + +#: lang/json/gunmod_from_json.py +msgid "" +"A kit providing the necessary parts for permanently converting a firearm " +"from magazine to belt-feed. Guaranteed to void your warranty." +msgstr "" +"Es un equipo que provee las partes necesarias para convertir de manera " +"permanente la alimentación por cargador de un arma de fuego, al sistema de " +"cinta cargadora. Se garantiza la nulidad de la garantía." + +#: lang/json/gunmod_from_json.py +msgid "magazine" +msgstr "cargador" + +#: lang/json/gunmod_from_json.py +msgid "tuned mechanism" +msgid_plural "tuned mechanisms" +msgstr[0] "" +msgstr[1] "" + +#: lang/json/gunmod_from_json.py +msgid "" +"A set of finely tuned internal components which increase the precision and " +"reliably of a firearm." +msgstr "" +"Un conjunto de componentes internos calibrados que incrementan la precisión " +"y fiabilidad de un arma de fuego." + #: lang/json/gunmod_from_json.py msgid "arrow rest" msgid_plural "arrow rests" @@ -73141,7 +73380,7 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." +"firearm, contributing to both accuracy and damage." msgstr "" #: lang/json/gunmod_from_json.py @@ -73166,7 +73405,7 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." +"shooting. Increases damage output and weapon range." msgstr "" #: lang/json/gunmod_from_json.py @@ -73196,11 +73435,8 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" -"A set of ergonomic replacement furniture for a firearm improving handling " -"and accuracy." +"A set of ergonomic replacement furniture for a firearm improving handling." msgstr "" -"Un conjunto de muebles de reemplazo ergonómico para un arma de fuego que " -"mejora el manejo y la precisión." #: lang/json/gunmod_from_json.py msgid "beam scatterer" @@ -73248,25 +73484,6 @@ msgstr "" msgid "emitter" msgstr "" -#: lang/json/gunmod_from_json.py -msgid "belt feed adapter" -msgid_plural "belt feed adapters" -msgstr[0] "" -msgstr[1] "" - -#: lang/json/gunmod_from_json.py -msgid "" -"A kit providing the necessary parts for permanently converting a firearm " -"from magazine to belt-feed. Guaranteed to void your warranty." -msgstr "" -"Es un equipo que provee las partes necesarias para convertir de manera " -"permanente la alimentación por cargador de un arma de fuego, al sistema de " -"cinta cargadora. Se garantiza la nulidad de la garantía." - -#: lang/json/gunmod_from_json.py -msgid "magazine" -msgstr "cargador" - #: lang/json/gunmod_from_json.py msgid "leadworks magazine adapter" msgid_plural "leadworks magazine adapters" @@ -73290,24 +73507,9 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" -"A precision weighted trigger assembly that improves a firearm's accuracy." -msgstr "" -"Un gatillo de precisión balanceado que mejora la precisión del arma de " -"fuego." - -#: lang/json/gunmod_from_json.py -msgid "tuned mechanism" -msgid_plural "tuned mechanisms" -msgstr[0] "" -msgstr[1] "" - -#: lang/json/gunmod_from_json.py -msgid "" -"A set of finely tuned internal components which increase the precision and " -"reliably of a firearm." +"A precision weighted trigger assembly that slightly improves a firearm's " +"accuracy." msgstr "" -"Un conjunto de componentes internos calibrados que incrementan la precisión " -"y fiabilidad de un arma de fuego." #: lang/json/gunmod_from_json.py msgid "firearm waterproofing" @@ -73467,8 +73669,8 @@ msgstr "" #: lang/json/gunmod_from_json.py msgid "rail laser sight" msgid_plural "rail laser sights" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "mira láser de riel" +msgstr[1] "miras láser de riel" #: lang/json/gunmod_from_json.py msgid "" @@ -73489,11 +73691,8 @@ msgstr[1] "estabilizadores giroscópicos" #: lang/json/gunmod_from_json.py msgid "" "An advanced unit that straps onto the side of your firearm and reduces " -"vibration, greatly reducing recoil and increasing accuracy." +"vibration, greatly reducing recoil and slightly increasing accuracy." msgstr "" -"Es una unidad avanzada que se ata con una correa al costado del arma de " -"fuego y reduce la vibración, lo que reduce mucho el retroceso e incrementa " -"la precisión." #: lang/json/gunmod_from_json.py msgid "LW gyroscopic stabilizer" @@ -74386,7 +74585,7 @@ msgstr "Para moverse se usa el teclado numérico, o las vikeys." #: lang/json/help_from_json.py msgid "" -msgstr "" +msgstr "" #: lang/json/help_from_json.py msgid "" @@ -74734,7 +74933,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Bionics" -msgstr "" +msgstr ": Biónicos" #: lang/json/help_from_json.py msgid "" @@ -74785,7 +74984,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Crafting" -msgstr "" +msgstr ": Fabricación" #: lang/json/help_from_json.py msgid "" @@ -75050,8 +75249,8 @@ msgstr "" msgid "" "Note that while several ammo types exist for a given caliber and magazine " "type, you can't mix and match these types into a single magazine. You can't " -"for example load 9x19mm JHP and 9x19 FMJ ammo into the same magazine, since " -"a magazine always requires identical rounds to be loaded in it." +"for example load 9x19mm JHP and 9x19mm FMJ ammo into the same magazine, " +"since a magazine always requires identical rounds to be loaded in it." msgstr "" #: lang/json/help_from_json.py @@ -75868,6 +76067,10 @@ msgstr "Masticar" msgid "Clear rubble" msgstr "Limpiar escombro" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "" @@ -75896,6 +76099,11 @@ msgstr "Soplar" msgid "Make it talk" msgstr "Hacer hablar" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "Humo" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "Quitar" @@ -75937,6 +76145,10 @@ msgstr "Inhalar" msgid "Drill" msgstr "Agujerear" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "Preguntar" + #: lang/json/item_action_from_json.py lang/json/item_action_from_json.py #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Read" @@ -75979,6 +76191,7 @@ msgid "Squeeze" msgstr "Estrujar" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" msgstr "Jugar" @@ -76016,6 +76229,11 @@ msgstr "Afeitar" msgid "Siphon" msgstr "Sifón" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "Humo" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "Escribir algo" @@ -76068,6 +76286,11 @@ msgstr "Almacenar/descargar munición" msgid "Make some noise" msgstr "Hacer un poco de ruido" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "Jugar" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "Activar/Desactivar" @@ -76753,7 +76976,7 @@ msgstr "" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "You can store items here." -msgstr "" +msgstr "Puedes guardar objetos aquí." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -77031,10 +77254,18 @@ msgstr "Cambiar lado donde está la armadura" msgid "Assign invlets to armor" msgstr "Asignar invlets a armadura" +#: lang/json/keybinding_from_json.py +msgid "Sort armor into natural layer order" +msgstr "" + #: lang/json/keybinding_from_json.py msgid "Equip armor from inventory" msgstr "Ponerse armadura del inventario" +#: lang/json/keybinding_from_json.py +msgid "Equip armor from inventory at this position" +msgstr "" + #: lang/json/keybinding_from_json.py msgid "Unequip selected armor" msgstr "Sacarse armadura seleccionada" @@ -77057,7 +77288,7 @@ msgstr "Mostrar resultado de receta" #: lang/json/keybinding_from_json.py msgid "Hide/show recipe" -msgstr "" +msgstr "Ocultar/Mostrar receta" #: lang/json/keybinding_from_json.py msgid "Batch crafting" @@ -77065,7 +77296,7 @@ msgstr "Fabricar en grupo" #: lang/json/keybinding_from_json.py msgid "Related recipes" -msgstr "" +msgstr "Recetas relacionadas" #: lang/json/keybinding_from_json.py msgid "Center On Character" @@ -77105,7 +77336,7 @@ msgstr "Activar/Desactivar luces" #: lang/json/keybinding_from_json.py msgid "Reset level" -msgstr "" +msgstr "Reiniciar nivel" #: lang/json/keybinding_from_json.py msgid "Confirm Choice" @@ -77477,7 +77708,7 @@ msgstr "Activar/Desactivar Modo de selección de categoría" #: lang/json/keybinding_from_json.py msgid "Set item filter" -msgstr "" +msgstr "Aplicar filtro de objeto" #: lang/json/keybinding_from_json.py msgid "Toggle activate/examine" @@ -77489,7 +77720,7 @@ msgstr "Esperar" #: lang/json/keybinding_from_json.py msgid "Toggle Map Memory" -msgstr "" +msgstr "Activar/desactivar Mapa de Memoria" #: lang/json/keybinding_from_json.py msgid "Center View" @@ -77762,7 +77993,7 @@ msgstr "Activar/Desactivar Minimapa" #: lang/json/keybinding_from_json.py msgid "Reload Tileset" -msgstr "" +msgstr "Recargar Tileset" #: lang/json/keybinding_from_json.py msgid "Toggle Auto Features" @@ -77880,6 +78111,22 @@ msgstr "Disminuir prioridad" msgid "Change sort order" msgstr "Cambiar orden" +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "mirar alrededor" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "fuego" + #: lang/json/keybinding_from_json.py msgid "List items and monsters" msgstr "Mostrar objetos y monstruos" @@ -78062,13 +78309,11 @@ msgstr "Quitar color usado" msgid "Load color template" msgstr "Cargar plantilla de color" -#: lang/json/keybinding_from_json.py src/craft_command.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/veh_interact.cpp msgid "Yes" msgstr "Sí" -#: lang/json/keybinding_from_json.py src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/options.cpp src/veh_interact.cpp msgid "No" msgstr "No" @@ -78218,6 +78463,11 @@ msgstr "Banco Computarizado Consolidad de Hacienda" msgid "Open Vault" msgstr "Abrir Bóveda" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -78231,12 +78481,12 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid " Cemetery" -msgstr "" +msgstr " Cementerio" #. ~ Sign #: lang/json/mapgen_from_json.py msgid " Cemetery" -msgstr "" +msgstr " Cementerio" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -78251,7 +78501,7 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid " Family Cemetery" -msgstr "" +msgstr " Cementerio Familiar" #. ~ Computer name #: lang/json/mapgen_from_json.py @@ -78281,7 +78531,7 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "OPEN 24/7!" -msgstr "" +msgstr "ABIERTO 24/7!" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -78471,77 +78721,77 @@ msgstr "HOYO #15" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #10" -msgstr "" +msgstr "HOYO #10" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #17" -msgstr "" +msgstr "HOYO #17" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #12" -msgstr "" +msgstr "HOYO #12" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #8" -msgstr "" +msgstr "HOYO #8" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #11" -msgstr "" +msgstr "HOYO #11" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #9" -msgstr "" +msgstr "HOYO #9" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #4" -msgstr "" +msgstr "HOYO #4" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #18" -msgstr "" +msgstr "HOYO #18" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #13" -msgstr "" +msgstr "HOYO #13" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #7" -msgstr "" +msgstr "HOYO #7" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #5" -msgstr "" +msgstr "HOYO #5" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #6" -msgstr "" +msgstr "HOYO #6" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #2" -msgstr "" +msgstr "HOYO #2" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #1" -msgstr "" +msgstr "HOYO #1" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "HOLE #3" -msgstr "" +msgstr "HOYO #3" #. ~ Computer name #: lang/json/mapgen_from_json.py @@ -78571,7 +78821,7 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "SAND" -msgstr "" +msgstr "ARENA" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -78616,12 +78866,12 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "FERTILIZER" -msgstr "" +msgstr "FERTILIZANTE" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "ROCKS" -msgstr "" +msgstr "ROCAS" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -78647,7 +78897,7 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "SOLD!" -msgstr "" +msgstr "¡VENDIDO!" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -78782,12 +79032,12 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "MEN" -msgstr "" +msgstr "HOMBRES" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "WOMEN" -msgstr "" +msgstr "MUJERES" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -78797,7 +79047,7 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Women" -msgstr "" +msgstr "Mujeres" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -78822,27 +79072,27 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "ALUMINUM" -msgstr "" +msgstr "ALUMINIO" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "PAPER" -msgstr "" +msgstr "PAPEL" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "PLASTIC" -msgstr "" +msgstr "PLÁSTICO" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "ELECTRONICS" -msgstr "" +msgstr "ELECTRONICOS" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "COPPER" -msgstr "" +msgstr "COBRE" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -78852,7 +79102,7 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "BATTERIES" -msgstr "" +msgstr "BATERÍAS" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -78913,7 +79163,8 @@ msgid "Emergency Message" msgstr "Mensaje de Emergencia" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py lang/json/mapgen_from_json.py +#: lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "Desactivar Energía Externa" @@ -78935,32 +79186,32 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "5 YARDS" -msgstr "" +msgstr "5 YARDAS" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "10 YARDS" -msgstr "" +msgstr "10 YARDAS" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "15 YARDS" -msgstr "" +msgstr "15 YARDAS" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "20 YARDS" -msgstr "" +msgstr "20 YARDAS" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "25 YARDS" -msgstr "" +msgstr "25 YARDAS" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "30 YARDS" -msgstr "" +msgstr "30 YARDAS" #. ~ Computer name #: lang/json/mapgen_from_json.py @@ -78974,7 +79225,6 @@ msgstr "ERROR: DESCONECTAR SEÑAL" #. ~ Computer option #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py -#: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "Instalar Modificación de Repetidor" @@ -79136,7 +79386,7 @@ msgstr "" #. ~ Computer name #: lang/json/mapgen_from_json.py msgid "Missile Control" -msgstr "" +msgstr "Control de misil" #. ~ Computer option #: lang/json/mapgen_from_json.py src/mapgen.cpp @@ -80370,7 +80620,8 @@ msgstr "Mira en una librería" msgid "Got that book for me?" msgstr "¿Tienes ese libro para mí?" -#: lang/json/mission_def_from_json.py src/npctalk.cpp src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Thanks!" msgstr "¡Gracias!" @@ -81146,7 +81397,7 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." +"prophesied events accurately before concerning the Church of Starry Wisdom." msgstr "" #: lang/json/mission_def_from_json.py @@ -81471,7 +81722,7 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels" " is boosted so we can pick it up at much longer ranges. I really need you " @@ -81776,7 +82027,7 @@ msgstr "" #: lang/json/mission_def_from_json.py msgid "Do you have the yeast?" -msgstr "" +msgstr "¿Tienes la levadura?" #: lang/json/mission_def_from_json.py msgid "Find 10 Sugar Beet Seeds" @@ -89545,7 +89796,7 @@ msgstr "" #: lang/json/mutation_from_json.py msgid "Toxic Flesh" -msgstr "" +msgstr "Carne tóxica" #. ~ Description for Toxic Flesh #: lang/json/mutation_from_json.py @@ -90543,7 +90794,7 @@ msgstr "río" msgid "river bank" msgstr "orilla" -#: lang/json/overmap_terrain_from_json.py +#: lang/json/overmap_terrain_from_json.py lang/json/snippet_from_json.py msgid "house" msgstr "casa" @@ -91552,11 +91803,11 @@ msgstr "estadio" #: lang/json/overmap_terrain_from_json.py msgid "stadium entrance" -msgstr "" +msgstr "estadio entrada" #: lang/json/overmap_terrain_from_json.py msgid "stadium field" -msgstr "" +msgstr "estadio cancha" #: lang/json/overmap_terrain_from_json.py msgid "stadium garage" @@ -91564,7 +91815,7 @@ msgstr "estadio garaje" #: lang/json/overmap_terrain_from_json.py msgid "stadium bar" -msgstr "" +msgstr "estadio bar" #: lang/json/overmap_terrain_from_json.py msgid "Head Shop" @@ -91584,7 +91835,7 @@ msgstr "entrada del cine" #: lang/json/overmap_terrain_from_json.py msgid "paintball field" -msgstr "" +msgstr "campo de juego de paintball" #: lang/json/overmap_terrain_from_json.py msgid "smoking lounge" @@ -91618,6 +91869,14 @@ msgstr "" msgid "mass grave" msgstr "" +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "" + #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" msgstr "ventanilla de autoservicio abandonada" @@ -91880,11 +92139,11 @@ msgstr "" #: lang/json/overmap_terrain_from_json.py msgid "helipad" -msgstr "" +msgstr "helipuerto" #: lang/json/overmap_terrain_from_json.py msgid "Military Complex" -msgstr "" +msgstr "Complejo Militar" #: lang/json/overmap_terrain_from_json.py #: lang/json/overmap_terrain_from_json.py src/vehicle_use.cpp @@ -91977,7 +92236,7 @@ msgstr "" #: lang/json/overmap_terrain_from_json.py msgid "megastore roof" -msgstr "" +msgstr "tejado del supermercado" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -97497,6 +97756,116 @@ msgid "" "find yourself needing those skills to survive. " msgstr "" +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "WEAPON" @@ -97699,17 +98068,17 @@ msgstr "VEHÍCULO" #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "BUILDING" -msgstr "" +msgstr "EDIFICIO" #. ~ Crafting recipes subcategory of 'BUILDING' category #: lang/json/recipe_category_from_json.py msgid "BASES" -msgstr "" +msgstr "BASES" #. ~ Crafting recipes subcategory of 'BUILDING' category #: lang/json/recipe_category_from_json.py msgid "EXPANSIONS" -msgstr "" +msgstr "EXPANSIONES" #: lang/json/recipe_from_json.py msgid "Stuff THE MAN doesn't want you to know" @@ -98065,7 +98434,7 @@ msgstr "" #: lang/json/recipe_group_from_json.py msgid " Cook: Fish, Smoked" -msgstr "" +msgstr "Cocinar: Pescado, Ahumado" #: lang/json/recipe_group_from_json.py msgid " Cook: Sugar" @@ -98277,7 +98646,7 @@ msgstr "" #: lang/json/recipe_group_from_json.py msgid " Craft: Wrench" -msgstr "" +msgstr "Fabricar: Llave inglesa" #: lang/json/recipe_group_from_json.py msgid " Craft: Hatchet" @@ -98673,17 +99042,21 @@ msgstr "Desafío-Laboratorio" #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" +"¡Fuiste encerrado en un laboratorio y no tienes manera (obvia) de salir! " +"Encuentra la manera de escaparte o vas a morir de hambre." #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" +"¡Fuiste encerrado en un laboratorio y no tienes manera (obvia) de salir! " +"Encuentra la manera de escaparte o vas a morir de hambre." #. ~ Starting location for scenario 'Challenge-Lab'. #: lang/json/scenario_from_json.py @@ -99481,6 +99854,42 @@ msgid "" "zombies." msgstr "" +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" @@ -99640,7 +100049,7 @@ msgstr "" "altos te permite navegar por los sistemas complejos e incluso burlar su " "seguridad." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "cocinar" @@ -99779,7 +100188,7 @@ msgstr "" " evita que te ahogues, afecta tu eficacia en el combate y tu velocidad en " "aguas profundas, y determina la dificultad del nado con equipamiento pesado." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "sastrería" @@ -100299,6 +100708,42 @@ msgid "" "spawn with more resources." msgstr "" +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best" +" friend." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "You feel great! It doesn't seem like wounds could even slow you down for " @@ -101307,6 +101752,566 @@ msgstr "" "propuesto una redistribución estratégica en el complejo subterráneo conocido" " como la BÓVEDA, y allí continuar la producción de PE062." +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "popular " + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "experimental " + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "clásico " + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "Cristiano " + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "Británico " + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "isla " + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "New York " + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "Hollywood " + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "visual " + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "liquido " + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "digital " + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "neo" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "retro" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "post" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "anti" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "duro " + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "blando " + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "rápido " + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "lento " + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "turbo" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "glam " + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "indie " + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "oscuro " + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "mortal " + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "ácido " + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "calle " + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "urbano " + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "mundial " + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "fantasmal " + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "meta" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "mutante " + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "Jurásico " + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "libre " + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "laser " + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "porno " + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "narco " + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "folk" + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "country" + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "jazz" + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "blues" + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "soul" + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "R&B" + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "hip-hop" + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "swing" + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "funk" + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "disco" + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "polka" + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "tango" + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "salsa" + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "mambo" + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "electronic" + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "metal" + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "reaggae" + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "ska" + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "punk" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "thrash" + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "goth" + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "industrial" + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "psychedelic" + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "noise" + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "sound" + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "revival" + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "gospel" + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "opera" + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "shanties" + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -101547,7 +102552,7 @@ msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " "a man carrying a somewhat confused horse on his shoulders. He is flanked by" " two scantily clad nurses who hold bloody chainsaws and give approving " -"thumbs up. His bulging knees and elbows are stiched and seem to be the " +"thumbs up. His bulging knees and elbows are stitched and seem to be the " "source of his ability. The caption reads: \"Brand new! Horse power at " "hand!\"" msgstr "" @@ -101555,7 +102560,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " -"a man smiling while being relentlesly punched by a boxer. He doesn't even " +"a man smiling while being relentlessly punched by a boxer. He doesn't even " "sweat as punches have no effect on him. Two scantily clad nurses give " "approving thumbs up from the background. The caption reads: \"Bouncy as " "never before! Absorb those shocks!\"" @@ -105236,6 +106241,191 @@ msgid "" " you in a sleep." msgstr "" +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no" +" environment to save now, but one can still save thyself I guess." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their components." +" This guy around here, McSomething whatever his name is, is a master at " +"this." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are" +" always better than two." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my" +" sorry ass away from the horde, with nothing more but some white powder I " +"got from that zombie. Saved me that time." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it " +"lemon?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "" + #: lang/json/snippet_from_json.py msgid " " msgstr " " @@ -105340,10 +106530,6 @@ msgstr "" msgid "piece of shit" msgstr "" -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "punk" - #: lang/json/snippet_from_json.py msgid "scumbag" msgstr "" @@ -105621,7 +106807,7 @@ msgstr "Hola " msgid "never" msgstr "" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" msgstr "no" @@ -106518,7 +107704,7 @@ msgstr "¡Listo manos arriba!" msgid "Hands in the air, !" msgstr "¡Las manos en el aire, !" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" msgstr "Muévete" @@ -107047,7 +108233,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "cupcake" -msgstr "" +msgstr "magdalena" #: lang/json/snippet_from_json.py msgid "junior" @@ -107300,7 +108486,7 @@ msgstr "Nos vemos... ¡EN EL INFIERNO!" #: lang/json/speech_from_json.py msgid "AAAIEEEEEEE!" -msgstr "" +msgstr "¡AAAIEEEEEEE!" #: lang/json/speech_from_json.py msgid "FUCK YOU!" @@ -108952,7 +110138,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Hello friend.\"" -msgstr "" +msgstr "\"Hola amigo.\"" #: lang/json/speech_from_json.py msgid "\"Gotcha.\"" @@ -108980,7 +110166,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Ohh.\"" -msgstr "" +msgstr "\"Ohh.\"" #: lang/json/speech_from_json.py msgid "\"Critical error.\"" @@ -109012,7 +110198,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Who are you?\"" -msgstr "" +msgstr "\"¿Quién eres?\"" #: lang/json/speech_from_json.py msgid "\"Help.\"" @@ -109020,7 +110206,7 @@ msgstr "\"Ayuda.\"" #: lang/json/speech_from_json.py msgid "\"Uh oh.\"" -msgstr "" +msgstr "\"Uh oh.\"" #: lang/json/speech_from_json.py msgid "\"Illegal operation.\"" @@ -109028,7 +110214,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Goodbye.\"" -msgstr "" +msgstr "\"Adiós.\"" #: lang/json/speech_from_json.py msgid "\"Sleep mode activated.\"" @@ -109052,7 +110238,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Nap time.\"" -msgstr "" +msgstr "\"Tiempo de siesta.\"" #: lang/json/speech_from_json.py msgid "\"Are you still there?\"" @@ -109068,7 +110254,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"\"" -msgstr "" +msgstr "\"\"" #: lang/json/speech_from_json.py msgid "\"Stop shooting!\"" @@ -109100,7 +110286,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Why?\"" -msgstr "" +msgstr "\"¿Por qué?\"" #: lang/json/speech_from_json.py msgid "\"I did everything you asked!\"" @@ -109112,7 +110298,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"I'm fine!\"" -msgstr "" +msgstr "\"¡Estoy bien!\"" #: lang/json/speech_from_json.py msgid "\"Wheeeeee-OH NO!\"" @@ -109144,7 +110330,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"This is not good.\"" -msgstr "" +msgstr "\"Esto no es bueno.\"" #: lang/json/speech_from_json.py msgid "\"Excuse me?\"" @@ -109402,27 +110588,27 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"bzzzzzz.\"" -msgstr "" +msgstr "\"bzzzzzz.\"" #: lang/json/speech_from_json.py msgid "\"Beep.\"" -msgstr "" +msgstr "\"Bip.\"" #: lang/json/speech_from_json.py msgid "\"Beep?\"" -msgstr "" +msgstr "\"Bip?\"" #: lang/json/speech_from_json.py msgid "\"Beep!\"" -msgstr "" +msgstr "\"Bip!\"" #: lang/json/speech_from_json.py msgid "\"Beeeeep beep.\"" -msgstr "" +msgstr "\"Biiiiip bip.\"" #: lang/json/speech_from_json.py msgid "\"Bebebeeeep.\"" -msgstr "" +msgstr "\"Bibibiiiip.\"" #: lang/json/speech_from_json.py msgid "\"Beep boop beep?\"" @@ -109494,7 +110680,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Bzzzt. Bzzzzt!\"" -msgstr "" +msgstr "\"Bzzzt. Bzzzzt!\"" #: lang/json/speech_from_json.py msgid "\"Bedeep. Whurrrrrmmmm.\"" @@ -109617,10 +110803,26 @@ msgstr "Último hombre de la muerte" msgid "Middle of Nowhere" msgstr "El medio de la nada" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "Laboratorio" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "Sótano de laboratorio" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "Laboratorio congelado" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "Laboratorio ultracongelado" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "Área de carga del supermercado" @@ -109717,6 +110919,14 @@ msgstr "Mansión" msgid "Gas Station" msgstr "Gasolinera" +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "Tienda de Electrónica" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" +msgstr "Tienda de Ropa" + #: lang/json/talk_topic_from_json.py msgid "That sure is a shiny badge you got there!" msgstr "¡Esa placa que tienes es bien brillante!" @@ -109749,8 +110959,7 @@ msgstr "¿Qué te pasa en las orejas?" msgid "Anything I can help with?" msgstr "¿Puedo ayudar en algo?" -#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Well, bye." msgstr "Bueno, adiós." @@ -109983,7 +111192,8 @@ msgstr "No me importa." msgid "I see." msgstr "Entiendo." -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Oh, okay." msgstr "Ah, bueno." @@ -110060,6 +111270,259 @@ msgstr "Gracias. " msgid "Thanks, bye." msgstr "Gracias, adiós." +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "Bueno, supongo que solo quedamos nosotros." + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "Por lo menos tenemos un refugio." + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "¿Qué hacemos ahora?" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "¿Algún consejo?" + +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "¿Puedo hacer algo por ti?" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "¿Quieres viajar conmigo?" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's trade items." +msgstr "Vamos a intercambiar objetos." + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "No sé, buscar suministros o a otros supervivientes, supongo." + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "Tal vez deberíamos empezar por poner tablas en las aberturas." + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to" +" disappear quickly from here." +msgstr "" +"Supongo que conseguir un coche que funcione va a ser útil si tenemos que " +"salir rápido de aquí." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "" +"Podemos buscar una de esas granjas de por aquí. Nos pueden brindar mucha " +"comida y están alejadas de las ciudades." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "" +"Probablemente, deberíamos mantenernos lejos de esas ciudades, incluso aunque" +" haya un montón de cosas útiles ahí." + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "Hmm, bueno." + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "Hasta que no tenga algún antibiótico, no..." + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "Recién me preguntaste; preguntame de nuevo después." + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "¿Por qué tendría que viajar contigo?" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "Entendido. Voy a conseguir esos antibióticos." + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "Bueno, bueno, pregunto más tarde." + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "Te puedo mantener a salvo." + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "Me puedes mantener a salvo." + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "Somos amigos, ¿o no?" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "¡No hay problema, estoy contigo!" + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "¡Estupendo!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "¡Bueno, vamos!" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "No... no lo creo." + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "¿Realmente te vas?" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "Sí, estoy seguro. Chao." + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "Nah, te estaba tomando el pelo." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp +msgid "What is it?" +msgstr "¿Qué pasa?" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "¿Cuánto más falta?" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "Me gustaría guiar por un rato." + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "Hacete a un lado. Ahora yo soy el líder." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "Vamos." + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "Bueno. Ahora puedes guiarme." + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "Bieno. Algo más..." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "Bueno, vamos." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "Bueno, bueno." + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "¡No hay ninguna oportunidad, me van a dejar atrás!" + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "Bien." + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "Estoy de guardia." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "Necesito que vengas conmigo." + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "Nos vemos por ahí." + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "Realmente no me siento cómodo haciendo eso..." + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "Te voy a dar un poco de espacio." + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "Prefiero quedarme con eso para mí." + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "Entiendo..." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "Bueno, aquí tienes." + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "¡Gracias!" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "¡Gracias! ¿Pero me puedes dar más?" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "¡Gracias, nos vemos después!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "Bueno, bueno, perdón." + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "¡En serio, dame alguna cosa!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "Bueno, está bien, chao." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "Bueno, comencemos." + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "Suena bien." + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "Bueno. Guiá el camino." + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "No, vamos a estar bien aquí." + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "Pensandolo bien, olvidate." + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "Hola, alguacil." @@ -110375,7 +111838,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Sorry." -msgstr "" +msgstr "Perdón." #: lang/json/talk_topic_from_json.py msgid "That's it, you're dead!" @@ -110852,10 +112315,6 @@ msgstr "" msgid "We're abandoning this camp." msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "Nos vemos por ahí." - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "Espero que hayas venido a comerciar." @@ -110899,7 +112358,7 @@ msgstr "" msgid "Are you looking to buy anything else?" msgstr "¿Quieres comprar algo más?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." msgstr "Muy bien..." @@ -111036,21 +112495,12 @@ msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of" " operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " "forces to conduct recovery operations." msgstr "" -"Estoy liderando lo que queda de mi compañía en una misión para reasegurar " -"estas instalaciones. Entramos en el complejo con dos docenas de hombre e " -"inmediatamente vinimos a asegurar esta habitación de control. Desde aquí, " -"envié a mis hombres a asegurar los sistemas vitales localizados en este piso" -" y en los de abajo. Si tenemos éxito, estas instalaciones pueden ser usadas " -"como base de operaciones permanente en la región. Y más importante, nos " -"permitirá redirigir el tráfico de refugiados desde los puestos superpoblados" -" y liberar algunas de nuestras fuerzas para conducir operaciones de " -"recuperación." #: lang/json/talk_topic_from_json.py msgid "Seems like a decent plan..." @@ -111583,7 +113033,7 @@ msgstr "No sé qué puedes hacer. Yo probé de todo. Dame un poco de tiempo..." #: lang/json/talk_topic_from_json.py msgid "OK." -msgstr "" +msgstr "OK." #: lang/json/talk_topic_from_json.py msgid "" @@ -111628,7 +113078,7 @@ msgstr "¿Qué tipo de trabajo tienen para mí?" #: lang/json/talk_topic_from_json.py msgid "Not now." -msgstr "" +msgstr "No ahora." #: lang/json/talk_topic_from_json.py msgid "I can take a look at you or your companions if you are injured." @@ -111644,7 +113094,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "I should be fine." -msgstr "" +msgstr "Voy a estar bien." #: lang/json/talk_topic_from_json.py msgid "That's the best I can do on short notice." @@ -111737,7 +113187,7 @@ msgstr "¿Qué tipo de tareas tienen para mí?" #: lang/json/talk_topic_from_json.py msgid "No, thanks." -msgstr "" +msgstr "No, gracias." #: lang/json/talk_topic_from_json.py msgid "Want a drink?" @@ -111780,7 +113230,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Thanks for nothing." -msgstr "" +msgstr "Gracias por nada." #: lang/json/talk_topic_from_json.py msgid "Our selection is a bit limited at the moment." @@ -111834,10 +113284,6 @@ msgstr "" msgid "I can't imagine what I'd need your assistance with." msgstr "No puedo ni imaginar para qué necesitaría tu ayuda." -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "Quedate quieto mientras busco mis tijeras..." @@ -111906,10 +113352,6 @@ msgstr "Me alegra tenerte en el equipo." msgid "Can I trade for supplies?" msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "¿Puedo hacer algo por ti?" - #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " @@ -112128,7 +113570,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "I see..." -msgstr "" +msgstr "Entiendo..." #: lang/json/talk_topic_from_json.py msgid "" @@ -112156,7 +113598,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Sure..." -msgstr "" +msgstr "Seguro..." #: lang/json/talk_topic_from_json.py msgid "Are you part of the rescue team?" @@ -112186,7 +113628,7 @@ msgstr "" msgid "Not at technique at all" msgstr "Sin ninguna técnica" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp src/martialarts.cpp msgid "Block" msgstr "Bloquear" @@ -112344,8 +113786,6 @@ msgid "Rapid Strike" msgstr "Golpe Rápido" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "50% movimiento, 66% daño" @@ -112457,11 +113897,6 @@ msgstr "" msgid "Counterattack" msgstr "Contrataque" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -112476,22 +113911,10 @@ msgstr " contraataca al %s" msgid "Feint" msgstr "Amague" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "Romper Agarre" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "Romper un agarre" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -112506,11 +113929,6 @@ msgstr " le da un hábil puñetazo al %s" msgid "Cross" msgstr "Golpe cruzado" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -112525,12 +113943,6 @@ msgstr " le tira un fuerte golpe cruzado al %s" msgid "Jab" msgstr "Puñetazo" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -112545,11 +113957,6 @@ msgstr " le da un rápido puñetazo al %s" msgid "Uppercut" msgstr "Gancho" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -112564,11 +113971,6 @@ msgstr " le da un gancho al %s" msgid "Cross Counter" msgstr "Contragolpe Cruzado" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -112597,14 +113999,6 @@ msgstr " le pega un puñetazo rápido a %s" msgid "karate chop" msgstr "golpe de karate" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -112619,11 +114013,6 @@ msgstr " le da un golpe de karate al %s" msgid "throw" msgstr "tirar" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -112638,11 +114027,6 @@ msgstr " tira al suelo al %s" msgid "dodge throw" msgstr "tirar esquivando" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -112657,12 +114041,6 @@ msgstr " tira suavemente al suelo al %s" msgid "feint at" msgstr "amagar a" -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -112673,11 +114051,6 @@ msgstr "Le amagas al %s" msgid " feints at %s" msgstr " le amaga al %s" -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -112688,21 +114061,11 @@ msgstr "Desarmas a %s" msgid " disarms %s" msgstr " desarma a %s" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py lang/json/technique_from_json.py #: src/monster.cpp msgid "grab" msgstr "agarrar" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "golpe preciso" @@ -112717,20 +114080,10 @@ msgstr "Golpeas %s" msgid " strikes %s" msgstr " golpea %s" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "codazo" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -112745,11 +114098,6 @@ msgstr " le da un codazo al %s" msgid "kick" msgstr "patear" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -112774,19 +114122,6 @@ msgstr "Le tiras un rodillazo volador al %s" msgid " flying knees %s" msgstr " le tira un rodillazo volador al %s" -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -112797,32 +114132,14 @@ msgstr "Le das un puñetazo al %s" msgid " jabs %s" msgstr " le da un puñetazo al %s" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "romper agarre" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "ataque sorpresa" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min" -" 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -112837,11 +114154,6 @@ msgstr " le da un ataque sorpresa al %s" msgid "axe-kick" msgstr "patada descendente" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -112856,11 +114168,6 @@ msgstr " le da una patada descendente al %s" msgid "side kick" msgstr "patada lateral" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -112875,11 +114182,6 @@ msgstr " le da una patada lateral al %s" msgid "sweep kick" msgstr "zancadilla" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -112894,11 +114196,6 @@ msgstr " le hace una zancadilla al %s" msgid "biojutsu counter" msgstr "contra biojutsu" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -112927,11 +114224,6 @@ msgstr " le da un rápido golpe tajante al %s" msgid "biojutsu impale" msgstr "empalamiento biojutsu" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -112942,20 +114234,10 @@ msgstr "Empalas brutalmente a %s" msgid " brutally impales %s" msgstr " empala brutalmente a %s" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "golpe abierto" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -112970,13 +114252,6 @@ msgstr " atraviesa a %s" msgid "Drunk feint" msgstr "Amague de borracho" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -112991,11 +114266,6 @@ msgstr " tropieza y mira fijamente al %s" msgid "Drunk counter" msgstr "Contraataque de borracho" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -113010,12 +114280,6 @@ msgstr " tambalea, y golpea %s" msgid "Fencing lunge" msgstr "Golpe de esgrima" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -113030,11 +114294,6 @@ msgstr " le da un golpe de esgrima al %s" msgid "Fencing thrust" msgstr "Estocada de esgrima" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -113049,11 +114308,6 @@ msgstr " le da una estocada al %s" msgid "Fencing stop thrust" msgstr "Parada de estocada" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -113068,11 +114322,6 @@ msgstr " le hace una parada de estocada perfecta al %s" msgid "Round strike" msgstr "Golpe circular" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -113101,11 +114350,6 @@ msgstr " le da un golpe en abanico al %s" msgid "Snap strike" msgstr "Golpe seco" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "80% movimientos" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -113120,11 +114364,6 @@ msgstr " le da un golpe seco al %s" msgid "Combination strike" msgstr "Golpe combinado" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -113139,11 +114378,6 @@ msgstr " le da un golpe combinado al %s" msgid "free strike" msgstr "golpe franco" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -113158,13 +114392,6 @@ msgstr " le da un golpe franco al %s" msgid "puño strike" msgstr "golpe de empuñadura" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -113179,11 +114406,6 @@ msgstr " le da un golpe con la empuñadura al %s" msgid "knee strike" msgstr "rodillazo" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -113198,11 +114420,6 @@ msgstr " le pega un rodillazo al %s" msgid "hamstring" msgstr "incapacitar" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -113217,12 +114434,6 @@ msgstr " deja tirado al %s con un golpe bajo" msgid "Vicious Precision" msgstr "Precisión Feroz" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -113237,11 +114448,6 @@ msgstr " hiere ferozmente al %s" msgid "Silat Brutality" msgstr "Brutalidad Silat" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -113251,11 +114457,6 @@ msgstr "" msgid "Dirty Hit" msgstr "Golpe Sucio" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -113298,11 +114499,6 @@ msgstr " golpea rápidamente %s" msgid "Viper Bite" msgstr "Mordida de Víbora" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -113317,11 +114513,6 @@ msgstr " usa su mordida de víbora con %s" msgid "Viper Strike" msgstr "Golpe de Víbora" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -113340,11 +114531,6 @@ msgstr "Retorcimiento de Víbora" msgid "Stinger Strike" msgstr "Golpe de Aguijón" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -113359,11 +114545,6 @@ msgstr "" msgid "Pincer Strike" msgstr "Golpe de Pinzas" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -113378,11 +114559,6 @@ msgstr "" msgid "Toad's Tongue" msgstr "Lengua de Sapo" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -113461,11 +114637,6 @@ msgstr " le da un golpe de serpiente al %s" msgid "Tiger Takedown" msgstr "Derribo de Tigre" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -113480,11 +114651,6 @@ msgstr "" msgid "Leopard Fist" msgstr "Puño de Leopardo" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -113513,11 +114679,6 @@ msgstr " le da un puñetazo rápido al %s" msgid "Leopard Foresight" msgstr "Presagio de Leopardo" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -113532,11 +114693,6 @@ msgstr "" msgid "Dragon Snatch" msgstr "Agarre de Dragón" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -113551,12 +114707,6 @@ msgstr "" msgid "Dragon's Vortex" msgstr "Vórtice de Dragón" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -113571,12 +114721,6 @@ msgstr "" msgid "Dragon Sweeper" msgstr "Barrida de Dragón" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -113591,11 +114735,6 @@ msgstr "" msgid "Dragon Strike" msgstr "Golpe de Dragón" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -113622,11 +114761,6 @@ msgstr "" msgid "Crane Flap" msgstr "Aleteo de Grulla" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "" @@ -113639,11 +114773,6 @@ msgstr "" msgid "Crane Strike" msgstr "Golpe de Grulla" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -113663,20 +114792,10 @@ msgstr "Amagás un golpe contra el %s" msgid "Power Hit" msgstr "Golpe Potente" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "Devolución de Golpe" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -113705,11 +114824,6 @@ msgstr " hace tropezar al %s" msgid "Flowing Water Cut" msgstr "Golpe de Agua Fluyente" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -113724,11 +114838,6 @@ msgstr " golpea %s con el lento poder del agua que fluye" msgid "Red Leaf's Cut" msgstr "Corte de la Hoja Roja" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -113743,12 +114852,6 @@ msgstr "El golpe de saca de balance al %s" msgid "Fire and Stone's Cut" msgstr "Corte de Fuego y Piedra" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -113763,12 +114866,6 @@ msgstr "" msgid "In-One Timing" msgstr "En Un Tiempo" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "" -"50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -113779,11 +114876,6 @@ msgstr "" msgid " strikes %s's weaknesses" msgstr "" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "golpe lento" @@ -114335,7 +115427,7 @@ msgstr "" #: lang/json/terrain_from_json.py msgid "golf hole" -msgstr "" +msgstr "hoyo de golf" #. ~ Description for golf hole #: lang/json/terrain_from_json.py @@ -116485,7 +117577,7 @@ msgstr "pared roja" #. ~ Description for red wall #: lang/json/terrain_from_json.py msgid "Wall painted red." -msgstr "" +msgstr "Pared pintada de rojo." #: lang/json/terrain_from_json.py msgid "white wall" @@ -116494,7 +117586,7 @@ msgstr "pared blanca" #. ~ Description for white wall #: lang/json/terrain_from_json.py msgid "Wall painted white." -msgstr "" +msgstr "Pared pintada de blanco." #: lang/json/terrain_from_json.py msgid "blue wall" @@ -116503,7 +117595,7 @@ msgstr "pared azul" #. ~ Description for blue wall #: lang/json/terrain_from_json.py msgid "Wall painted blue." -msgstr "" +msgstr "Pared pintada de azul." #: lang/json/terrain_from_json.py msgid "green wall" @@ -116512,7 +117604,7 @@ msgstr "pared verde" #. ~ Description for green wall #: lang/json/terrain_from_json.py msgid "Wall painted green." -msgstr "" +msgstr "Pared pintada de verde." #: lang/json/terrain_from_json.py msgid "yellow wall" @@ -116521,7 +117613,7 @@ msgstr "pared amarilla" #. ~ Description for yellow wall #: lang/json/terrain_from_json.py msgid "Wall painted yellow." -msgstr "" +msgstr "Pared pintada de amarillo." #: lang/json/terrain_from_json.py msgid "purple wall" @@ -116530,7 +117622,7 @@ msgstr "pared púrpura" #. ~ Description for purple wall #: lang/json/terrain_from_json.py msgid "Wall painted purple." -msgstr "" +msgstr "Pared pintada de morado." #: lang/json/terrain_from_json.py msgid "stone wall" @@ -116924,7 +118016,7 @@ msgstr "Martillar bien" msgid "wood sawing" msgstr "Serrar madera" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "Serrar metal" @@ -116968,7 +118060,7 @@ msgstr "Cavar" msgid "bolt turning" msgstr "Apretar tornillo" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "Apretar tornillo finamente" @@ -117815,6 +118907,14 @@ msgstr "" msgid "Circle Split" msgstr "" +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "" + #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" msgstr "Camión de Plataforma" @@ -117917,7 +119017,7 @@ msgstr "personalizad_vacío" #: lang/json/vehicle_from_json.py msgid "canoe" -msgstr "" +msgstr "canoa" #: lang/json/vehicle_from_json.py msgid "raft" @@ -118028,7 +119128,7 @@ msgstr "" #. ~ Description for bed #: lang/json/vehicle_part_from_json.py msgid "A small but comfortable bed." -msgstr "" +msgstr "Una cama pequeña pero cómoda" #: lang/json/vehicle_part_from_json.py msgid "handle" @@ -119531,7 +120631,7 @@ msgstr "rueda ancha (maniobrable)" #. ~ Description for wooden cart wheel #: lang/json/vehicle_part_from_json.py msgid "A wooden wheel." -msgstr "" +msgstr "Una rueda de madera." #: lang/json/vehicle_part_from_json.py msgid "hand paddles" @@ -120597,7 +121697,7 @@ msgstr "" #: lang/json/vehicle_part_from_json.py msgid "gray tank (100L)" -msgstr "" +msgstr "tanque gris (100L)" #: lang/json/vehicle_part_from_json.py msgid "gray frame" @@ -121103,11 +122203,11 @@ msgstr "Intentar" #: src/action.cpp msgid "Look" -msgstr "" +msgstr "Mirar" #: src/action.cpp msgid "Interact" -msgstr "" +msgstr "interactuar" #: src/action.cpp src/advanced_inv.cpp src/game_inventory.cpp msgid "Inventory" @@ -121115,15 +122215,15 @@ msgstr "Inventario" #: src/action.cpp msgid "Combat" -msgstr "" +msgstr "Combatir" #: src/action.cpp msgid "Craft" -msgstr "" +msgstr "Fabricar" #: src/action.cpp msgid "Info" -msgstr "" +msgstr "Info" #: src/action.cpp msgid "Misc" @@ -121177,13 +122277,17 @@ msgstr "ScratchCrunchScrabbleScurry." #: src/activity_handlers.cpp msgid "You finish burrowing." -msgstr "" +msgstr "Terminaste de excavar." #: src/activity_handlers.cpp #, c-format msgid "You discover a %s!" msgstr "¡Te encontraste un %s!" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "" + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "" @@ -121251,6 +122355,10 @@ msgstr "" msgid "You need to perform field dressing before quartering." msgstr "" +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "" + #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." msgstr "" @@ -121406,19 +122514,19 @@ msgstr "Terminaste de descuartizar el %s." #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." msgstr "" #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." msgstr "" #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." msgstr "" @@ -121586,10 +122694,8 @@ msgid "You have lost the item you were using to start the fire." msgstr "" #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." +msgid "There is not enough sunlight to start a fire now. You stop trying." msgstr "" -"Ahora no hay suficiente luz solar para encender un fuego. Dejas de " -"intentarlo." #: src/activity_handlers.cpp #, c-format @@ -121791,7 +122897,7 @@ msgstr "" #. ~ Sound of a wood chopping tool at work! #: src/activity_handlers.cpp msgid "CHK!" -msgstr "" +msgstr "¡CHK!" #: src/activity_handlers.cpp msgid "Select a direction for the tree to fall in." @@ -121818,7 +122924,7 @@ msgstr "Has terminado de taladrar ." #. ~ Sound of a shovel filling a pit or mound at work! #: src/activity_handlers.cpp msgid "hsh!" -msgstr "" +msgstr "¡hsh!" #: src/activity_handlers.cpp #, c-format @@ -122429,7 +123535,7 @@ msgstr "cargas" msgid "category" msgstr "categoría" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp src/effect.cpp msgid "damage" msgstr "daño" @@ -122658,6 +123764,59 @@ msgstr "Todo/as" msgid "Hang on a bit..." msgstr "" +#: src/armor_layers.cpp +msgid "close to your skin" +msgstr "" + +#: src/armor_layers.cpp +msgid "of normal clothing" +msgstr "" + +#: src/armor_layers.cpp +msgid "on your waist" +msgstr "" + +#: src/armor_layers.cpp +msgid "of outer clothing" +msgstr "" + +#: src/armor_layers.cpp +msgid "strapped to you" +msgstr "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgid_plural "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgstr[0] "" +msgstr[1] "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgid_plural "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgstr[0] "" +msgstr[1] "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgid_plural "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgstr[0] "" +msgstr[1] "" + #: src/armor_layers.cpp msgid "This is worn next to the skin." msgstr "Esto se pone contra la piel." @@ -122829,16 +123988,18 @@ msgstr "¿Reasignar invlets para armadura?" #, c-format msgid "" "Use the arrow- or keypad keys to navigate the left list.\n" -"Press [%s] to select highlighted armor for reordering.\n" -"Use [%s] / [%s] to scroll the right list.\n" -"Press [%s] to assign special inventory letters to clothing.\n" -"Press [%s] to change the side on which item is worn.\n" -"Use [%s] to equip an armor item from the inventory.\n" -"Press [%s] to remove selected armor from oneself.\n" +"[%s] to select highlighted armor for reordering.\n" +"[%s] / [%s] to scroll the right list.\n" +"[%s] to assign special inventory letters to clothing.\n" +"[%s] to change the side on which item is worn.\n" +"[%s] to sort armor into natural layer order.\n" +"[%s] to equip a new item.\n" +"[%s] to equip a new item at the currently selected position.\n" +"[%s] to remove selected armor from oneself.\n" " \n" "[Encumbrance and Warmth] explanation:\n" "The first number is the summed encumbrance from all clothing on that bodypart.\n" -"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers.\n" +"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers or wearing items outside of other items they would normally be work beneath (e.g. a shirt over a backpack).\n" "The sum of these values is the effective encumbrance value your character has for that bodypart." msgstr "" @@ -123936,6 +125097,12 @@ msgstr "" msgid "Your plugged-in solar pack is now able to charge your system." msgstr "" +#: src/bionics.cpp +msgid "" +"You need to connect the cable to yourself and the solar pack before your " +"solar pack can charge your system." +msgstr "" + #: src/bionics.cpp msgid "" "You might plug in your solar pack to the cable charging system, if you " @@ -124302,8 +125469,8 @@ msgstr "" #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out" -" when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "" #: src/bionics_ui.cpp @@ -124417,57 +125584,113 @@ msgstr "" "¡No puedes activar %s!\n" "Para leer la descripción de %s, pulsa '!', y después '%c'." +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "Velocidad" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "fuerza" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "destreza" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "inteligencia" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "percepción" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr " de " + #: src/calendar.cpp msgid "forever" -msgstr "" +msgstr "para siempre" #: src/calendar.cpp #, c-format msgid "%d second" msgid_plural "%d seconds" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d segundo" +msgstr[1] "%d segundos" #: src/calendar.cpp #, c-format msgid "%d minute" msgid_plural "%d minutes" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d minuto" +msgstr[1] "%d minutos" #: src/calendar.cpp #, c-format msgid "%d hour" msgid_plural "%d hours" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d hora" +msgstr[1] "%d horas" #: src/calendar.cpp #, c-format msgid "%d day" msgid_plural "%d days" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d día" +msgstr[1] "%d días" + +#: src/calendar.cpp +#, c-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d semana" +msgstr[1] "%d semanas" #: src/calendar.cpp #, c-format msgid "%d season" msgid_plural "%d seasons" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d estación" +msgstr[1] "%d estaciones" #: src/calendar.cpp #, c-format msgid "%d year" msgid_plural "%d years" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d año" +msgstr[1] "%d años" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment #: src/calendar.cpp msgid " forever" -msgstr "" +msgstr " para siempre" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -124475,8 +125698,8 @@ msgstr "" #, c-format msgid "%3d second" msgid_plural "%3d seconds" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%3d segundo" +msgstr[1] "%3d segundos" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -124484,8 +125707,8 @@ msgstr[1] "" #, c-format msgid "%3d minute" msgid_plural "%3d minutes" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%3d minuto" +msgstr[1] "%3d minutos" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -124493,8 +125716,8 @@ msgstr[1] "" #, c-format msgid "%3d hour" msgid_plural "%3d hours" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%3d hora" +msgstr[1] "%3d horas" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -124502,8 +125725,17 @@ msgstr[1] "" #, c-format msgid "%3d day" msgid_plural "%3d days" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%3d día" +msgstr[1] "%3d días" + +#. ~ Right-aligned time string. should right-align with other strings with +#. this same comment +#: src/calendar.cpp +#, c-format +msgid "%3d week" +msgid_plural "%3d weeks" +msgstr[0] "%3d semana" +msgstr[1] "%3d semanas" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -124511,8 +125743,8 @@ msgstr[1] "" #, c-format msgid "%3d season" msgid_plural "%3d seasons" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%3d estación" +msgstr[1] "%3d estaciones" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -124520,8 +125752,8 @@ msgstr[1] "" #, c-format msgid "%3d year" msgid_plural "%3d years" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%3d año" +msgstr[1] "%3d años" #. ~ %1$s - greater units of time (e.g. 3 hours), %2$s - lesser units of time #. (e.g. 11 minutes). @@ -124534,13 +125766,13 @@ msgstr "%1$s y %2$s" #: src/calendar.cpp #, c-format msgid "more than %s" -msgstr "" +msgstr "mas que%s" #. ~ %s - time (e.g. 2 hours). #: src/calendar.cpp #, c-format msgid "less than %s" -msgstr "" +msgstr "menos que %s" #. ~ %s - time (e.g. 2 hours). #: src/calendar.cpp @@ -124586,21 +125818,21 @@ msgstr "Invier." #: src/calendar.cpp msgid "End times" -msgstr "" +msgstr "Fin de los tiempos" #. ~ 1 is the year, 2 is the day (of the *year*), 3 is the time of the day in #. its usual format #: src/calendar.cpp #, c-format msgid "Year %1$d, day %2$d %3$s" -msgstr "" +msgstr "Año %1$d, día %2$d %3$s" #. ~ 1 is the year, 2 is the season name, 3 is the day (of the season), 4 is #. the time of the day in its usual format #: src/calendar.cpp #, c-format msgid "Year %1$d, %2$s, day %3$d %4$s" -msgstr "" +msgstr "Año %1$d, %2$s, día %3$d %4$s" #: src/cata_utility.cpp src/options.cpp msgid "mph" @@ -124609,7 +125841,7 @@ msgstr "mph" #. ~ vehicle speed tiles per turn #: src/cata_utility.cpp msgid "t/t" -msgstr "" +msgstr "t/t" #: src/cata_utility.cpp src/options.cpp msgid "km/h" @@ -124833,22 +126065,6 @@ msgstr " necesita al menos %1$s para usar %2$s con su %3$s." msgid "Liquid from your inventory has leaked onto the ground." msgstr "" -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "fuerza" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "destreza" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "inteligencia" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "percepción" - #: src/character.cpp msgid "Left Arm" msgstr "Brazo Izq." @@ -124927,7 +126143,7 @@ msgstr "" #: src/character.cpp #, c-format msgid "Disinfected [%s]" -msgstr "" +msgstr "Desinfectado [%s]" #: src/character.cpp #, c-format @@ -124946,9 +126162,7 @@ msgstr "" msgid "No limb would benefit from it." msgstr "" -#: src/character.cpp src/game.cpp src/game.cpp src/iexamine.cpp -#: src/inventory_ui.cpp src/npctalk_funcs.cpp src/pickup.cpp src/turret.cpp -#: src/vehicle_use.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp src/pickup.cpp msgid "Cancel" msgstr "Cancelar" @@ -125031,7 +126245,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" msgstr "" @@ -125052,7 +126266,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" msgstr "" @@ -125069,7 +126283,7 @@ msgid "Destination for guns, bows and similar weapons." msgstr "" #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" msgstr "" @@ -125112,7 +126326,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" msgstr "" @@ -125161,7 +126375,7 @@ msgid "Destination for Compact Bionics Modules aka CBMs." msgstr "" #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" msgstr "" @@ -125204,7 +126418,7 @@ msgid "Destination for chemicals." msgstr "" #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" msgstr "" @@ -125231,7 +126445,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" msgstr "" @@ -125256,7 +126470,7 @@ msgid "Items inside of this zone are ignored by \"sort out loot\" zone-action." msgstr "" #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" msgstr "" @@ -126442,7 +127656,7 @@ msgstr "" msgid "Result: " msgstr "Resultado:" -#: src/construction.cpp src/crafting_gui.cpp src/recipe.cpp +#: src/construction.cpp src/crafting_gui.cpp msgid "N/A" msgstr "N/D" @@ -126558,13 +127772,17 @@ msgstr "" "Luego de poner tablas en la ventana, sobran las cortinas y la barra para " "colgarlas." +#: src/construction.cpp +msgid "You gather some clay." +msgstr "Recoges algo de arcilla." + #: src/construction.cpp msgid "You gather some sand." msgstr "Recoges algo de arena." #: src/construction.cpp -msgid "You gather some clay." -msgstr "Recoges algo de arcilla." +msgid "You gather some materials." +msgstr "" #: src/construction.cpp msgid "You cannot build there!" @@ -127043,12 +128261,22 @@ msgstr "%s (%d/%d en persona)" #: src/crafting.cpp #, c-format msgid "%s (%d/%d nearby & on person)" -msgstr "" +msgstr "%s (%d/%d cercano & en persona)" #: src/crafting.cpp msgid "Use which component?" msgstr "¿Qué componente usar?" +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "" + #: src/crafting.cpp msgid "Use which tool?" msgstr "¿Qué herramienta usar?" @@ -127065,8 +128293,8 @@ msgstr "Está podrido, no voy a desmontar eso." #, c-format msgid "You need at least %d charge of %s." msgid_plural "You need at least %d charges of %s." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Necesitas al menos %d cargas de %s." +msgstr[1] "Necesitas al menos %d cargas de %s." #: src/crafting.cpp #, c-format @@ -127205,37 +128433,37 @@ msgstr "Escrito en: %s" #: src/crafting_gui.cpp #, c-format -msgid "Skills used: %s" -msgstr "Habilidades usadas: %s" +msgid "Primary skill used: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Required skills: %s" -msgstr "Habilidades requeridas: %s" +msgid "Difficulty: %d" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Difficulty: %d" -msgstr "Dificultad: %d" +msgid "Your skill level: %d" +msgstr "" #: src/crafting_gui.cpp -msgid "Your skill level: N/A" -msgstr "Tu nivel de habilidad: N/D" +msgid "Your skill level: N/A" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Your skill level: %d" -msgstr "Tu nivel de habilidad: %d" +msgid "Other skills used: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Time to complete: %s" -msgstr "Tiempo para terminar: %s" +msgid "Time to complete: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Dark craftable? %s" -msgstr "¿Hacer sin luz? %s" +msgid "Dark craftable? %s" +msgstr "" #: src/crafting_gui.cpp src/defense.cpp msgid "Easy" @@ -127261,39 +128489,87 @@ msgstr "¡No puedes hacer eso!" msgid "Nothing selected!" msgstr "¡No elegiste nada!" -#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp -msgid "Search:" -msgstr "Buscar:" +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "si" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" +msgstr "" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" +"The default is to search result names. Some single-character prefixes can be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" msgstr "" +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "camiseta" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" +msgstr " %s%.*s %s\n" + +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "nombre es el resultado del objeto" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" +msgstr " %c:%s%.*s %s\n" + +#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp +msgid "Search:" +msgstr "Buscar:" + #: src/crafting_gui.cpp msgid "RESULTS" msgstr "RESULTADOS" #: src/crafting_gui.cpp msgid "Related recipes:" -msgstr "Recetas relativas:" +msgstr "Recetas relacionadas:" #: src/crafting_gui.cpp #, c-format @@ -127317,10 +128593,6 @@ msgstr "demasiado triste" msgid "slow %d%%" msgstr "despacio %d%%" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "si" - #: src/crafting_gui.cpp msgid "Searched" msgstr "Búsqueda" @@ -127465,6 +128737,11 @@ msgstr "Amistoso" msgid "BUG: Behavior unnamed. (Creature::get_attitude_ui_data)" msgstr "ERROR: Comportamiento sin nombre. (Creature::get_attitude_ui_data)" +#: src/debug.cpp +#, c-format +msgid "See %s for a full stack backtrace" +msgstr "" + #: src/debug.cpp msgid "An error has occurred! Written below is the error report:" msgstr "" @@ -127472,6 +128749,7 @@ msgstr "" #: src/debug.cpp msgid "Press space bar to continue the game." msgstr "" +"Pulsa barra espaciadora para continuar con el juego." #: src/debug.cpp msgid "" @@ -127675,7 +128953,7 @@ msgstr "" #: src/debug_menu.cpp msgid "Delete all items from the target?" -msgstr "" +msgstr "¿Borrar todos los objetos del objetivo?" #: src/debug_menu.cpp msgid "Make target equip" @@ -127731,7 +129009,7 @@ msgstr "Hambre" #: src/debug_menu.cpp msgid "Starvation" -msgstr "" +msgstr "Hambre" #: src/debug_menu.cpp msgid "Thirst" @@ -128216,7 +129494,7 @@ msgstr "Armas de Cuerpo a cuerpo" #: src/defense.cpp msgid "Ranged Weapons" -msgstr "" +msgstr "Armas a distancia" #: src/defense.cpp msgid "Ammuniton" @@ -128692,7 +129970,7 @@ msgstr "" msgid "You must construct expansions in fields." msgstr "" -#: src/editmap.cpp src/mission_companion.cpp +#: src/editmap.cpp src/faction_camp.cpp msgid "" "Engine cannot support merging vehicles from two overmaps, please remove them" " from the OM tile." @@ -129010,11 +130288,11 @@ msgstr "Raro: " #: src/effect.cpp msgid "very poor" -msgstr "" +msgstr "muy pobre" #: src/effect.cpp msgid "poor" -msgstr "" +msgstr "pobre" #: src/effect.cpp msgid "decent" @@ -129026,7 +130304,7 @@ msgstr "bueno" #: src/effect.cpp msgid "great" -msgstr "" +msgstr "genial" #: src/effect.cpp msgid "average" @@ -129034,7 +130312,7 @@ msgstr "" #: src/effect.cpp msgid "very good" -msgstr "" +msgstr "muy bien" #: src/effect.cpp msgid "outstanding" @@ -129042,7 +130320,7 @@ msgstr "" #: src/effect.cpp msgid "perfect" -msgstr "" +msgstr "perfecto" #: src/event.cpp msgctxt "memorial_male" @@ -129181,7 +130459,7 @@ msgstr "varios" #: src/explosion.cpp msgid "several" -msgstr "" +msgstr "varios" #: src/explosion.cpp msgid "a huge number of" @@ -130721,499 +131999,1967 @@ msgstr "Suministro de Comida: %s" msgid "Combat Ability: %s" msgstr "Habilidad de Combate: %s" -#: src/field.cpp -msgid "blood splatter" -msgstr "salpicadura de sangre" +#: src/faction_camp.cpp +msgid " [DONE]\n" +msgstr " [HECHO]\n" -#: src/field.cpp -msgid "blood stain" -msgstr "mancha de sangre" +#: src/faction_camp.cpp +msgid " left]\n" +msgstr " izquierda]\n" -#: src/field.cpp -msgid "puddle of blood" -msgstr "charco de sangre" +#: src/faction_camp.cpp +msgid "Upgrade Camp" +msgstr "" -#: src/field.cpp -msgid "bile splatter" -msgstr "salpicadura de bilis" +#: src/faction_camp.cpp +msgid "Working to expand your camp!\n" +msgstr "" -#: src/field.cpp -msgid "bile stain" -msgstr "mancha de bilis" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?" +msgstr "" +"\n" +" \n" +"¿Quieres que vuelvan tus compañeros a tu grupo?" -#: src/field.cpp -msgid "puddle of bile" -msgstr "charco de bilis" +#: src/faction_camp.cpp +msgid "Recover Ally from Upgrading" +msgstr "" -#: src/field.cpp -msgid "bloody meat chunks" -msgstr "pedazos sangrientos de carne" +#: src/faction_camp.cpp +msgid "Busy crafting!\n" +msgstr "" -#: src/field.cpp -msgid "heap of gore" -msgstr "montón de tripas" +#: src/faction_camp.cpp +msgid " (Finish) Crafting" +msgstr "" -#: src/field.cpp -msgid "scraps of flesh" -msgstr "restos de carne" +#: src/faction_camp.cpp +msgid "Gather Materials" +msgstr "" -#: src/field.cpp -msgid "broken vegetation tangle" -msgstr "enredo de vegetación rota" +#: src/faction_camp.cpp +msgid "Searching for materials to upgrade the camp.\n" +msgstr "" -#: src/field.cpp -msgid "shattered branches and leaves" -msgstr "ramas y hojas destrozadas" +#: src/faction_camp.cpp +msgid "Recover Ally from Gathering" +msgstr "" -#: src/field.cpp -msgid "shredded leaves and twigs" -msgstr "hojas y ramitas destruidas" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" +" \n" +"Effects:\n" +"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" +" \n" +"Must have enjoyability >= -6\n" +"Perishable food liquidated at penalty depending on upgrades and rot time:\n" +"> Rotten: 0%%\n" +"> Rots in < 2 days: 60%%\n" +"> Rots in < 5 days: 80%%\n" +" \n" +"Total faction food stock: %d kcal or %d day's rations" +msgstr "" -#: src/field.cpp -msgid "cobwebs" -msgstr "telarañas" +#: src/faction_camp.cpp +msgid "Distribute Food" +msgstr "" -#: src/field.cpp -msgid "thick webs" -msgstr "telarañas gruesas" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" +" \n" +"Effects:\n" +"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" +"> Items sitting on any type of furniture will not be moved.\n" +"> Items that are not listed in one of the categories are defaulted to the tools group." +msgstr "" -#: src/field.cpp -msgid "webs" -msgstr "telarañas" +#: src/faction_camp.cpp +msgid "Reset Sort Points" +msgstr "" -#: src/field.cpp -msgid "puddle of slime" -msgstr "charco de slime" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to gather light brush and heavy sticks.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +"> heavy sticks\n" +"> withered plants\n" +"> splintered wood\n" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "slime stain" -msgstr "mancha de slime" +#: src/faction_camp.cpp +msgid "Collect Firewood" +msgstr "Recolectar Leña" -#: src/field.cpp -msgid "slime trail" -msgstr "rastro de slime" +#: src/faction_camp.cpp +msgid "Searching for firewood.\n" +msgstr "Buscando leña.\n" -#: src/field.cpp -msgid "acid splatter" -msgstr "salpicadura de ácido" +#: src/faction_camp.cpp +msgid "Recover Firewood Gatherers" +msgstr "" -#: src/field.cpp -msgid "acid streak" -msgstr "mancha de ácido" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to do low level chores and sort supplies.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" +"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "pool of acid" -msgstr "charco de ácido" +#: src/faction_camp.cpp +msgid "Menial Labor" +msgstr "" -#: src/field.cpp -msgid "glob of sap" -msgstr "pegote de savia" +#: src/faction_camp.cpp +msgid "Performing menial labor...\n" +msgstr "" -#: src/field.cpp -msgid "pool of sap" -msgstr "charco de savia" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?\n" +msgstr "" -#: src/field.cpp -msgid "sap splatter" -msgstr "salpicadura de savia" +#: src/faction_camp.cpp +msgid "Recover Menial Laborer" +msgstr "" -#: src/field.cpp -msgid "sludge trail" -msgstr "rastro de barro" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours \n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thick sludge trail" -msgstr "rastro grueso de barro" +#: src/faction_camp.cpp +msgid "Expand Base" +msgstr "Expandir Base" -#: src/field.cpp -msgid "thin sludge trail" -msgstr "rastro fino de barro" +#: src/faction_camp.cpp +msgid "Surveying for expansion...\n" +msgstr "" -#: src/field.cpp -msgid "fire" -msgstr "fuego" +#: src/faction_camp.cpp +msgid "Recover Surveyor" +msgstr "" -#: src/field.cpp -msgid "raging fire" -msgstr "fuego intenso" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to a nearby forest to cut logs.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: 1 \n" +"Effects:\n" +"> 50%% of trees/trunks at the forest position will be cut down.\n" +"> 100%% of total material will be brought back.\n" +"> Repeatable with diminishing returns.\n" +" \n" +"Risk: None\n" +"Time: 6 Hour Base + Travel Time + Cutting Time\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "small fire" -msgstr "fuego chico" +#: src/faction_camp.cpp +msgid "Cut Logs" +msgstr "Cortar Troncos" -#: src/field.cpp -msgid "legacy rubble" -msgstr "escombro antiguo" +#: src/faction_camp.cpp +msgid "Cutting logs in the woods...\n" +msgstr "" -#: src/field.cpp -msgid "smoke" -msgstr "humo" +#: src/faction_camp.cpp +msgid "Recover Log Cutter" +msgstr "" -#: src/field.cpp -msgid "thick smoke" -msgstr "humo denso" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Good for setting up resupply or contingency points.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward.\n" +" \n" +"Risk: Medium\n" +"Time: 6 Hour Construction + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thin smoke" -msgstr "humo fino" +#: src/faction_camp.cpp +msgid "Setup Hide Site" +msgstr "" -#: src/field.cpp -msgid "hazy cloud" -msgstr "nube brumosa" +#: src/faction_camp.cpp +msgid "Setting up a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "thick toxic gas" -msgstr "gas tóxico denso" +#: src/faction_camp.cpp +msgid "Recover Hide Setup" +msgstr "" -#: src/field.cpp -msgid "toxic gas" -msgstr "gas tóxico" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Push gear out to a hide site or bring gear back from one.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 1\n" +"Effects:\n" +"> Good for returning equipment you left in the hide site shelter.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward or back.\n" +" \n" +"Risk: Medium\n" +"Time: 1 Hour Base + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "tear gas" -msgstr "gas lacrimógeno" +#: src/faction_camp.cpp +msgid "Relay Hide Site" +msgstr "" -#: src/field.cpp -msgid "thick tear gas" -msgstr "gas lacrimógeno denso" +#: src/faction_camp.cpp +msgid "Transfering gear to a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "radioactive gas" -msgstr "gas radiactivo" +#: src/faction_camp.cpp +msgid "Recover Hide Relay" +msgstr "" -#: src/field.cpp -msgid "thick radioactive gas" -msgstr "gas radiactivo denso" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to edible plans.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Foraging Possibilities:\n" +"> wild vegetables\n" +"> fruits and nuts dependening on season\n" +"May produce less food than consumed!\n" +"Risk: Very Low\n" +"Time: 4 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "gas vent" -msgstr "conducto de gas" +#: src/faction_camp.cpp +msgid "Forage for plants" +msgstr "" -#: src/field.cpp -msgid "electric cloud" -msgstr "nube eléctrica" +#: src/faction_camp.cpp +msgid "Foraging for edible plants.\n" +msgstr "" -#: src/field.cpp -msgid "electric crackle" -msgstr "chisporroteo eléctrico" +#: src/faction_camp.cpp +msgid "Recover Foragers" +msgstr "" -#: src/field.cpp -msgid "sparks" -msgstr "chispas" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to set traps for small game.\n" +" \n" +"Skill used: trapping\n" +"Difficulty: N/A \n" +"Trappinng Possibilities:\n" +"> small and tiny animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Low\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/2\n" +msgstr "" -#: src/field.cpp -msgid "odd ripple" -msgstr "onda extraña" +#: src/faction_camp.cpp +msgid "Trap Small Game" +msgstr "" -#: src/field.cpp -msgid "swirling air" -msgstr "aire turbulento" +#: src/faction_camp.cpp +msgid "Trapping Small Game.\n" +msgstr "" -#: src/field.cpp -msgid "tear in reality" -msgstr "desgarro en la realidad " +#: src/faction_camp.cpp +msgid "Recover Trappers" +msgstr "" -#: src/field.cpp -msgid "faint plasma" -msgstr "plasma leve" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to hunt large animals.\n" +" \n" +"Skill used: marksmanship\n" +"Difficulty: N/A \n" +"Hunting Possibilities:\n" +"> small, medium, or large animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Medium\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "glaring plasma" -msgstr "plasma deslumbrante" +#: src/faction_camp.cpp +msgid "Hunt Large Animals" +msgstr "" -#: src/field.cpp -msgid "glowing plasma" -msgstr "plasma brillante" +#: src/faction_camp.cpp +msgid "Hunting large animals.\n" +msgstr "" -#: src/field.cpp -msgid "beam of light" -msgstr "rayo de luz" +#: src/faction_camp.cpp +msgid "Recover Hunter" +msgstr "" -#: src/field.cpp -msgid "faint glimmer" -msgstr "destello leve" +#: src/faction_camp.cpp +msgid "Construct Map Fortifications" +msgstr "" -#: src/field.cpp -msgid "intense beam of light" -msgstr "rayo intenso de luz" +#: src/faction_camp.cpp +msgid "Construct Spiked Trench" +msgstr "" -#: src/field.cpp -msgid "spotlight" -msgstr "foco" +#: src/faction_camp.cpp +msgid "Constructing fortifications...\n" +msgstr "" -#: src/field.cpp -msgid "dazzling" -msgstr "cegador" +#: src/faction_camp.cpp +msgid "Finish Map Fortifications" +msgstr "" -#: src/field.cpp -msgid "plant sap splatter" -msgstr "salpicadura de savia de planta" +#: src/faction_camp.cpp +msgid "Recruit Companions" +msgstr "" -#: src/field.cpp -msgid "plant sap stain" -msgstr "mancha de savia de planta" +#: src/faction_camp.cpp +msgid "Searching for recruits.\n" +msgstr "" -#: src/field.cpp -msgid "puddle of resin" -msgstr "charco de resina" +#: src/faction_camp.cpp +msgid "Recover Recruiter" +msgstr "" -#: src/field.cpp -msgid "bug blood splatter" -msgstr "salpicadura de sangre de insecto" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Select checkpoints to customize path.\n" +"> Reveals terrain around the path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "bug blood stain" -msgstr "mancha de sangre de insecto" +#: src/faction_camp.cpp +msgid "Scout Mission" +msgstr "" -#: src/field.cpp -msgid "puddle of bug blood" -msgstr "charco de sangre de insecto" +#: src/faction_camp.cpp +msgid "Scouting the region.\n" +msgstr "" -#: src/field.cpp -msgid "hemolymph splatter" -msgstr "salpicadura de hemolinfa" +#: src/faction_camp.cpp +msgid "Recover Scout" +msgstr "" -#: src/field.cpp -msgid "hemolymph stain" -msgstr "mancha de hemolinfa" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 4\n" +"Effects:\n" +"> Pulls creatures encountered into combat instead of fleeing.\n" +"> Select checkpoints to customize path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: Very High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "puddle of hemolymph" -msgstr "charco de hemolinfa" +#: src/faction_camp.cpp +msgid "Combat Patrol" +msgstr "" -#: src/field.cpp -msgid "shards of chitin" -msgstr "esquirlas de quitina" +#: src/faction_camp.cpp +msgid "Patrolling the region.\n" +msgstr "" -#: src/field.cpp -msgid "shattered bug leg" -msgstr "pata destrozada de insecto" +#: src/faction_camp.cpp +msgid "Recover Combat Patrol" +msgstr "" -#: src/field.cpp -msgid "torn insect organs" -msgstr "órganos desgarrados de insecto" +#: src/faction_camp.cpp +msgid " Expansion Upgrade" +msgstr "" -#: src/field.cpp -msgid "gooey scraps" -msgstr "pedazos pegajosos" +#: src/faction_camp.cpp +msgid "Working to upgrade your expansions!\n" +msgstr "" -#: src/field.cpp -msgid "heap of squishy gore" -msgstr "montón blando de tripas" +#: src/faction_camp.cpp +msgid " Expansion" +msgstr " Expansión" -#: src/field.cpp -msgid "icky mess" -msgstr "barullo asqueroso" +#: src/faction_camp.cpp +msgid "Recover Ally, " +msgstr "" -#: src/field.cpp -msgid "swirl of tobacco smoke" -msgstr "espiral de humo de tabaco" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Have a companion attempt to completely dissemble a vehicle into components.\n" +" \n" +"Skill used: mechanics\n" +"Difficulty: 2 \n" +"Effects:\n" +"> Removed parts placed on the furniture in the garage.\n" +"> Skill plays a huge role to determine what is salvaged.\n" +" \n" +"Risk: None\n" +"Time: Skill Based \n" +msgstr "" -#: src/field.cpp -msgid "thick tobacco smoke" -msgstr "humo denso de tabaco" +#: src/faction_camp.cpp +msgid " Chop Shop" +msgstr "" -#: src/field.cpp -msgid "tobacco smoke" -msgstr "humo de tabaco" +#: src/faction_camp.cpp +msgid "Working at the chop shop...\n" +msgstr "" -#: src/field.cpp -msgid "pot smoke" -msgstr "humo de porro" +#: src/faction_camp.cpp +msgid " (Finish) Chop Shop" +msgstr "" -#: src/field.cpp -msgid "swirl of pot smoke" -msgstr "espiral de humo de porro" +#: src/faction_camp.cpp +msgid "Working in your kitchen!\n" +msgstr "" -#: src/field.cpp -msgid "thick pot smoke" -msgstr "humo denso de porro" +#: src/faction_camp.cpp +msgid " (Finish) Cooking" +msgstr " (Finalizado) Cocinar" -#: src/field.cpp -msgid "crack smoke" -msgstr "humo de crack" +#: src/faction_camp.cpp +msgid "Working in your blacksmith shop!\n" +msgstr "" -#: src/field.cpp -msgid "swirl of crack smoke" -msgstr "espiral de humo de crack" +#: src/faction_camp.cpp +msgid " (Finish) Smithing" +msgstr "" -#: src/field.cpp -msgid "thick crack smoke" -msgstr "humo denso de crack" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plow any spaces that have reverted to dirt or grass.\n" +" \n" +msgstr "" +"Notas:\n" +"Arar cualquier espacio que se haya revertido a tierra o césped.\n" +" \n" -#: src/field.cpp -msgid "meth smoke" -msgstr "humo de metanfetaminas" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Restores only the plots created in the last expansion upgrade.\n" +"> Does not damage existing crops.\n" +" \n" +"Risk: None\n" +"Time: 5 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "swirl of meth smoke" -msgstr "espiral de humo de metanfetaminas" +#: src/faction_camp.cpp +msgid " Plow Fields" +msgstr "" -#: src/field.cpp -msgid "thick meth smoke" -msgstr "humo denso de metanfetaminas" +#: src/faction_camp.cpp +msgid "Working to plow your fields!\n" +msgstr "" -#: src/field.cpp -msgid "angry swarm of bees" -msgstr "enjambre enojado de abejas" +#: src/faction_camp.cpp +msgid " (Finish) Plow Fields" +msgstr "" -#: src/field.cpp -msgid "some bees" -msgstr "algunas abejas" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plant designated seeds in the spaces that have already been tilled.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "swarm of bees" -msgstr "enjambre de abejas" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose which seed type or all of your seeds.\n" +"> Stops when out of seeds or planting locations.\n" +"> Will plant in ALL dirt mounds in the expansion.\n" +" \n" +"Risk: None\n" +"Time: 1 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "airborne incendiary" -msgstr "incendiario aéreo" +#: src/faction_camp.cpp +msgid " Plant Fields" +msgstr "" -#: src/field.cpp -msgid "relaxation gas" -msgstr "gas relajante" +#: src/faction_camp.cpp +msgid "Working to plant your fields!\n" +msgstr "" -#: src/field.cpp -msgid "sedative gas" -msgstr "gas sedante" +#: src/faction_camp.cpp +msgid " (Finish) Plant Fields" +msgstr "" -#: src/field.cpp -msgid "fungal haze" -msgstr "neblina fúngica" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Harvest any plants that are ripe and bring the produce back.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "thick fungal haze" -msgstr "neblina densa fúngica" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Will dump all harvesting products onto your location.\n" +" \n" +"Risk: None\n" +"Time: 3 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "fungicidal gas" -msgstr "gas fungicida" +#: src/faction_camp.cpp +msgid " Harvest Fields" +msgstr "" -#: src/field.cpp -msgid "thick fungicidal gas" -msgstr "gas denso fungicida" +#: src/faction_camp.cpp +msgid "Working to harvest your fields!\n" +msgstr "" -#: src/field.cpp -msgid "smoke vent" +#: src/faction_camp.cpp +msgid " (Finish) Harvest Fields" msgstr "" -#: src/field.cpp -msgid "Whew... smells like skunk!" -msgstr "Puaj... ¡Huele a mofeta!" +#: src/faction_camp.cpp +msgid "Working on your farm!\n" +msgstr "" -#: src/field.cpp -msgid "Man, that smells like some good shit!" -msgstr "¡Tío, que bien que huele eso!" +#: src/faction_camp.cpp +msgid "departs to search for materials..." +msgstr "" -#: src/field.cpp -msgid "I don't know... should you really be smoking that stuff?" -msgstr "No lo sé... ¿Deberías estar fumando esas cosas?" +#: src/faction_camp.cpp +msgid "There are too many companions working on this mission!" +msgstr "" -#: src/field.cpp -msgid "Ew, smells like burning rubber!" -msgstr "¡Puaj, qué baranda a goma quemada!" +#: src/faction_camp.cpp +msgid "departs to search for firewood..." +msgstr "" -#: src/field.cpp -msgid "Ugh, that smells rancid!" -msgstr "¡Uh, qué olor rancio!" +#: src/faction_camp.cpp +msgid "You don't have enough food stored to feed your companion." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp +msgid "departs to dig ditches and scrub toilets..." +msgstr "" + +#: src/faction_camp.cpp #, c-format -msgid "A %s hits you!" -msgstr "¡Un/a %s te golpea!" +msgid "%s returns from working in the woods..." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits %2$s!" -msgstr "¡Un/a %1$s golpea %2$s!" +msgid "%s returns from working on the hide site..." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits the %2$s!" -msgstr "¡Un/a %1$s golpea a %2$s!" +msgid "%s returns from shuttling gear between the hide site..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your body!" -msgstr "¡El ácido te quema el cuerpo!" +#: src/faction_camp.cpp +msgid "departs to search for edible plants..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s body!" -msgstr "¡El ácido quema le quema el cuerpo a !" +#: src/faction_camp.cpp +msgid "departs to set traps for small animals..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your legs and feet!" -msgstr "¡El ácido te quema los pies y las piernas!" +#: src/faction_camp.cpp +msgid "departs to hunt for meat..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s legs and feet!" -msgstr "¡El ácido le quema las piernas y los pies a !" +#: src/faction_camp.cpp +msgid "departs to search for recruits..." +msgstr "" -#: src/field.cpp -msgid "You're lying in a pool of acid" -msgstr "Estás tirado en un charco de ácido" +#: src/faction_camp.cpp +msgid "departs to survey land..." +msgstr "" -#: src/field.cpp -msgid "You're standing in a pool of acid" -msgstr "Estás parado en un charco de ácido." +#: src/faction_camp.cpp +msgid "You have already selected a surveyor!" +msgstr "" -#: src/field.cpp -msgid "The sap sticks to you!" -msgstr "¡La savia se te pega!" +#: src/faction_camp.cpp +msgid "begins to upgrade the expansion..." +msgstr "" -#: src/field.cpp -msgid "The sap sticks to !" -msgstr "¡La savia se pega a !" +#: src/faction_camp.cpp +msgid "You already have a worker upgrading that expansion!" +msgstr "" -#: src/field.cpp -msgid "The sludge is thick and sticky. You struggle to pull free." -msgstr "El barro es espeso y pegajoso. Luchás para liberarte." +#: src/faction_camp.cpp +msgid "You don't have the materials for the upgrade." +msgstr "" -#: src/field.cpp -msgid "You burn your legs and feet!" -msgstr "¡Te quemas los pies y las piernas!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your farm with something..." +msgstr "" -#: src/field.cpp -msgid "You're burning up!" -msgstr "¡Te estás quemando!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns to you with something..." +msgstr "" -#: src/field.cpp -msgid "You're set ablaze!" -msgstr "¡Quedás encendido en llamas!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your kitchen with something..." +msgstr "" -#: src/field.cpp -msgid "Your whole body is burning!" -msgstr "¡Se te está quemando todo el cuerpo!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your blacksmith shop with something..." +msgstr "" -#: src/field.cpp -msgid " burns their legs and feet!" -msgstr "¡ se quema los pies y las piernas!" +#: src/faction_camp.cpp +msgid "begins plowing the field..." +msgstr "" -#: src/field.cpp -msgid " is burning up!" -msgstr "¡ se está quemando!" +#: src/faction_camp.cpp +msgid "You already have someone plowing that field." +msgstr "" -#: src/field.cpp -msgid " is set ablaze!" -msgstr "¡ queda encendido en llamas!" +#: src/faction_camp.cpp +msgid "You have no additional seeds to give your companions..." +msgstr "" -#: src/field.cpp -msgid "s whole body is burning!" -msgstr "¡A se le está quemando todo el cuerpo!" +#: src/faction_camp.cpp +msgid "begins planting the field..." +msgstr "" -#: src/field.cpp -msgid "You're standing in a fire!" -msgstr "¡Estás parado arriba de un fuego!" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Which seeds do you wish to have planted?" +msgstr "¿Qué semilla quieres plantar?" -#: src/field.cpp -msgid "You're waist-deep in a fire!" -msgstr "¡Estás en un fuego que te llega a la cintura!" +#: src/faction_camp.cpp +msgid "You already have someone planting that field." +msgstr "" -#: src/field.cpp -msgid "You're surrounded by raging fire!" -msgstr "¡Estás rodeado por un fuego arrasador!" +#: src/faction_camp.cpp +msgid "begins to harvest the field..." +msgstr "" -#: src/field.cpp -msgid "You're lying in fire!" +#: src/faction_camp.cpp +msgid "You already have someone harvesting that field." +msgstr "" + +#: src/faction_camp.cpp +msgid "You already have someone working in that garage." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your garage..." +msgstr "" + +#: src/faction_camp.cpp +msgid "You already have a companion upgrading the camp." +msgstr "" + +#: src/faction_camp.cpp +msgid "begins to upgrade the camp..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Forests and swamps are the only valid cutting locations." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Trip Estimate:\n" +"%s" +msgstr "" + +#: src/faction_camp.cpp +msgid "departs to cut logs..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Forests, swamps, and fields are valid hide site locations." +msgstr "" + +#: src/faction_camp.cpp +msgid "departs to build a hide site..." +msgstr "" + +#: src/faction_camp.cpp +msgid "You need equipment to setup a hide site..." +msgstr "" + +#: src/faction_camp.cpp +msgid "You must select an existing hide site." +msgstr "" + +#: src/faction_camp.cpp +msgid "Bring gear back?" +msgstr "" + +#: src/faction_camp.cpp +msgid "departs for the hide site..." +msgstr "" + +#: src/faction_camp.cpp +msgid "You need equipment to transport between the hide site..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Select a start and end point. Line must be straight. Fields, forests, and " +"swamps are valid fortification locations. In addition to existing " +"fortification constructions." +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an end point." +msgstr "" + +#: src/faction_camp.cpp +msgid "Invalid terrain in construction path." +msgstr "" + +#: src/faction_camp.cpp +msgid "You don't have the material to build the fortification." +msgstr "" + +#: src/faction_camp.cpp +msgid "begins constructing fortifications..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Select checkpoints until you reach maximum range or select the last point " +"again to end." +msgstr "" + +#: src/faction_camp.cpp +msgid "departs on patrol..." +msgstr "" + +#: src/faction_camp.cpp +msgid "You don't have the materials to craft that" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Batch crafting %s [MAX: %d]: " +msgstr "Fabricar en grupo %s [MAX: %d]: " + +#: src/faction_camp.cpp +msgid "Your batch is too large!" +msgstr "" + +#: src/faction_camp.cpp +msgid "You already have someone working in that expansion." +msgstr "" + +#: src/faction_camp.cpp +msgid "begins to work..." +msgstr "comenzando a trabajar..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +" Chopping this vehicle:\n" +"%s" +msgstr "" + +#: src/faction_camp.cpp +msgid "begins working in the garage..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Your companion seems disappointed that your pantry is empty..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s returns from upgrading the camp having earned a bit of experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from doing the dirty work to keep the camp running..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Sorting points have changed, forcing reset." +msgstr "" + +#: src/faction_camp.cpp +msgid "gathering materials" +msgstr "" + +#: src/faction_camp.cpp +msgid "foraging for edible plants" +msgstr "" + +#: src/faction_camp.cpp +msgid "trapping small animals" +msgstr "" + +#: src/faction_camp.cpp +msgid "hunting for meat" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from %s carrying supplies and has a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from constructing fortifications..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from searching for recruits with a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s encountered %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't find anyone to recruit..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s convinced %s to hear a recruitment offer from you..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested in anything %s had to offer..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"NPC Overview:\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Name: %20s\n" +" \n" +msgstr "" +"Nombre: %20s\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "Strength: %10d\n" +msgstr "Fuerza: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Dexterity: %10d\n" +msgstr "Destreza: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Intelligence: %10d\n" +msgstr "Inteligencia: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Perception: %10d\n" +" \n" +msgstr "" +"Percepción: %10d\n" +" \n" + +#: src/faction_camp.cpp +msgid "Top 3 Skills:\n" +msgstr "Top 3 Habilidades:\n" + +#: src/faction_camp.cpp +msgid "Asking for:\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"> Food: %10d days\n" +" \n" +msgstr "" +"> Comida: %10d días\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Faction Food:%9d days\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Recruit Chance: %10d%%\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an option:" +msgstr "" + +#: src/faction_camp.cpp +msgid "Increase Food" +msgstr "Incrementar Comida" + +#: src/faction_camp.cpp +msgid "Decrease Food" +msgstr "Disminuir Comida" + +#: src/faction_camp.cpp +msgid "Make Offer" +msgstr "" + +#: src/faction_camp.cpp +msgid "Not Interested" +msgstr "No estoy interesado." + +#: src/faction_camp.cpp +msgid "You decide you aren't interested..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s has been convinced to join!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Your companion hit a river and didn't know how to swim..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Your companion hit a river and didn't know how to swim well enough to " +"cross..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't return from patrol..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from patrol..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an expansion:" +msgstr "" + +#: src/faction_camp.cpp +msgid "You choose to wait..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from surveying for the expansion." +msgstr "" + +#: src/faction_camp.cpp +msgid "No seeds to plant!" +msgstr "¡No hay semillas para plantar!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from working your fields..." +msgstr "" + +#: src/faction_camp.cpp +msgid "MAIN" +msgstr "PRINCIPAL" + +#: src/faction_camp.cpp +msgid " [N] " +msgstr " [N] " + +#: src/faction_camp.cpp +msgid " [NE] " +msgstr " [NE] " + +#: src/faction_camp.cpp +msgid " [E] " +msgstr " [E] " + +#: src/faction_camp.cpp +msgid " [SE] " +msgstr " [SE] " + +#: src/faction_camp.cpp +msgid " [S] " +msgstr " [S] " + +#: src/faction_camp.cpp +msgid " [SW] " +msgstr " [SO] " + +#: src/faction_camp.cpp +msgid " [W] " +msgstr " [O] " + +#: src/faction_camp.cpp +msgid " [NW] " +msgstr " [NO] " + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Base Missions" +msgstr "" + +#: src/faction_camp.cpp +msgid "Farm Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Garage Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Kitchen Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Blacksmith Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Empty Expansion" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Select a location between %d and %d tiles away." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"You must select a target between %d and %d range from the base. Range: %d" +msgstr "" + +#: src/faction_camp.cpp +msgid "You must be able to see the target that you select." +msgstr "" + +#: src/faction_camp.cpp +msgid "Do you want to bounce off this location to extend range?" +msgstr "" + +#: src/faction_camp.cpp +msgid "food for you" +msgstr "" + +#: src/faction_camp.cpp +msgid "food for companions" +msgstr "" + +#: src/faction_camp.cpp +msgid "weapons" +msgstr "armas" + +#: src/faction_camp.cpp +msgid "clothing" +msgstr "prendas de vestir" + +#: src/faction_camp.cpp +msgid "bionics" +msgstr "biónicos" + +#: src/faction_camp.cpp +msgid "all kinds of tools" +msgstr "" + +#: src/faction_camp.cpp +msgid "wood of various sorts" +msgstr "" + +#: src/faction_camp.cpp +msgid "trash and rotting food" +msgstr "" + +#: src/faction_camp.cpp +msgid "books" +msgstr "libros" + +#: src/faction_camp.cpp +msgid "medication" +msgstr "medicación" + +#: src/faction_camp.cpp +msgid "ammo" +msgstr "munición" + +#: src/faction_camp.cpp +#, c-format +msgid "Reset point: %s?" +msgstr "Resetear punto: %s?" + +#: src/faction_camp.cpp +msgid "" +" Items New Point Old Point\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +" Save Points?" +msgstr "" + +#: src/faction_camp.cpp +msgid "Revert to default points?" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15.2f (km)\n" +msgstr ">Distancia:%15.2f (km)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">One Way: %15d (trips)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15.2f (km)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15d (m)\n" +msgstr ">Distancia:%15d (m)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15d (m)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Travel: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Working: %23s\n" +msgstr ">Trabajando: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Total: %23s\n" +msgstr "Total: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Food: %15d (kcal)\n" +" \n" +msgstr "" +"Comida: %15d (kcal)\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"%s\n" +" \n" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s \n" +"Risk: None\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" +" \n" +"Skill used: speech\n" +"Difficulty: 2 \n" +"Base Score: +%3d%%\n" +"> Expansion Bonus: +%3d%%\n" +"> Faction Bonus: +%3d%%\n" +"> Special Bonus: +%3d%%\n" +" \n" +"Total: Skill +%3d%%\n" +" \n" +"Risk: High\n" +"Time: 4 Days\n" +"Positions: %d/1\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Notes: \n" +"Send a companion to gather materials for the next camp upgrade.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: " +msgstr "" +" \n" +"Peligro: Muy bajo\n" +"Tiempo: 3 Horas, Repetidas\n" +"Posiciones: " + +#: src/faction_camp.cpp +msgid "Harvestable: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Ready for Planting: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Needs Plowing: " +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Name: %25s\n" +msgstr "Nombre: %25s\n" + +#: src/faction_camp.cpp +msgid "---- Engines ----\n" +msgstr "---- Motores ----\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Engine: %25s\n" +msgstr "Motor: %25s\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Status: %24d%%\n" +msgstr ">Estado: %24d%%\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Fuel: %25s\n" +msgstr ">Combustible: %25s\n" + +#: src/faction_camp.cpp +msgid "---- Fuel Storage & Battery ----\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Estimated Chop Time: 5 Days\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "No items are located at the drop point..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "You distribute %d kcal worth of food to your companions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "While %s, a silent specter approaches %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s notices the antlered horror and slips away before it gets too close." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Another survivor approaches %s asking for directions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Fearful that he may be an agent of some hostile faction, %s doesn't mention " +"the camp." +msgstr "" + +#: src/faction_camp.cpp +msgid "The two part on friendly terms and the survivor isn't seen again." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't detect the ambush until it was too late!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The bull moose charged %s from the tree line..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Despite being caught off guard %s was able to run away until the moose gave " +"up pursuit." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The jabberwock grabbed %s by the arm from behind and began to scream." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Terrified, %s spun around and delivered a massive kick to the creature's " +"torso..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Collapsing into a pile of gore, %s walked away unscathed..." +msgstr "" + +#: src/faction_camp.cpp +msgid "(Sounds like bullshit, you wonder what really happened.)" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s turned to find the hideous black eyes of a giant wasp staring back from " +"only a few feet away..." +msgstr "" + +#: src/faction_camp.cpp +msgid "The screams were terrifying, there was nothing anyone could do." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Pieces of %s were found strewn across a few bushes." +msgstr "" + +#: src/faction_camp.cpp +msgid "(You wonder if your companions are fit to work on their own...)" +msgstr "" + +#: src/field.cpp +msgid "blood splatter" +msgstr "salpicadura de sangre" + +#: src/field.cpp +msgid "blood stain" +msgstr "mancha de sangre" + +#: src/field.cpp +msgid "puddle of blood" +msgstr "charco de sangre" + +#: src/field.cpp +msgid "bile splatter" +msgstr "salpicadura de bilis" + +#: src/field.cpp +msgid "bile stain" +msgstr "mancha de bilis" + +#: src/field.cpp +msgid "puddle of bile" +msgstr "charco de bilis" + +#: src/field.cpp +msgid "bloody meat chunks" +msgstr "pedazos sangrientos de carne" + +#: src/field.cpp +msgid "heap of gore" +msgstr "montón de tripas" + +#: src/field.cpp +msgid "scraps of flesh" +msgstr "restos de carne" + +#: src/field.cpp +msgid "broken vegetation tangle" +msgstr "enredo de vegetación rota" + +#: src/field.cpp +msgid "shattered branches and leaves" +msgstr "ramas y hojas destrozadas" + +#: src/field.cpp +msgid "shredded leaves and twigs" +msgstr "hojas y ramitas destruidas" + +#: src/field.cpp +msgid "cobwebs" +msgstr "telarañas" + +#: src/field.cpp +msgid "thick webs" +msgstr "telarañas gruesas" + +#: src/field.cpp +msgid "webs" +msgstr "telarañas" + +#: src/field.cpp +msgid "puddle of slime" +msgstr "charco de slime" + +#: src/field.cpp +msgid "slime stain" +msgstr "mancha de slime" + +#: src/field.cpp +msgid "slime trail" +msgstr "rastro de slime" + +#: src/field.cpp +msgid "acid splatter" +msgstr "salpicadura de ácido" + +#: src/field.cpp +msgid "acid streak" +msgstr "mancha de ácido" + +#: src/field.cpp +msgid "pool of acid" +msgstr "charco de ácido" + +#: src/field.cpp +msgid "glob of sap" +msgstr "pegote de savia" + +#: src/field.cpp +msgid "pool of sap" +msgstr "charco de savia" + +#: src/field.cpp +msgid "sap splatter" +msgstr "salpicadura de savia" + +#: src/field.cpp +msgid "sludge trail" +msgstr "rastro de barro" + +#: src/field.cpp +msgid "thick sludge trail" +msgstr "rastro grueso de barro" + +#: src/field.cpp +msgid "thin sludge trail" +msgstr "rastro fino de barro" + +#: src/field.cpp +msgid "raging fire" +msgstr "fuego intenso" + +#: src/field.cpp +msgid "small fire" +msgstr "fuego chico" + +#: src/field.cpp +msgid "legacy rubble" +msgstr "escombro antiguo" + +#: src/field.cpp +msgid "smoke" +msgstr "humo" + +#: src/field.cpp +msgid "thick smoke" +msgstr "humo denso" + +#: src/field.cpp +msgid "thin smoke" +msgstr "humo fino" + +#: src/field.cpp +msgid "hazy cloud" +msgstr "nube brumosa" + +#: src/field.cpp +msgid "thick toxic gas" +msgstr "gas tóxico denso" + +#: src/field.cpp +msgid "toxic gas" +msgstr "gas tóxico" + +#: src/field.cpp +msgid "tear gas" +msgstr "gas lacrimógeno" + +#: src/field.cpp +msgid "thick tear gas" +msgstr "gas lacrimógeno denso" + +#: src/field.cpp +msgid "radioactive gas" +msgstr "gas radiactivo" + +#: src/field.cpp +msgid "thick radioactive gas" +msgstr "gas radiactivo denso" + +#: src/field.cpp +msgid "gas vent" +msgstr "conducto de gas" + +#: src/field.cpp +msgid "electric cloud" +msgstr "nube eléctrica" + +#: src/field.cpp +msgid "electric crackle" +msgstr "chisporroteo eléctrico" + +#: src/field.cpp +msgid "sparks" +msgstr "chispas" + +#: src/field.cpp +msgid "odd ripple" +msgstr "onda extraña" + +#: src/field.cpp +msgid "swirling air" +msgstr "aire turbulento" + +#: src/field.cpp +msgid "tear in reality" +msgstr "desgarro en la realidad " + +#: src/field.cpp +msgid "faint plasma" +msgstr "plasma leve" + +#: src/field.cpp +msgid "glaring plasma" +msgstr "plasma deslumbrante" + +#: src/field.cpp +msgid "glowing plasma" +msgstr "plasma brillante" + +#: src/field.cpp +msgid "beam of light" +msgstr "rayo de luz" + +#: src/field.cpp +msgid "faint glimmer" +msgstr "destello leve" + +#: src/field.cpp +msgid "intense beam of light" +msgstr "rayo intenso de luz" + +#: src/field.cpp +msgid "spotlight" +msgstr "foco" + +#: src/field.cpp +msgid "dazzling" +msgstr "cegador" + +#: src/field.cpp +msgid "plant sap splatter" +msgstr "salpicadura de savia de planta" + +#: src/field.cpp +msgid "plant sap stain" +msgstr "mancha de savia de planta" + +#: src/field.cpp +msgid "puddle of resin" +msgstr "charco de resina" + +#: src/field.cpp +msgid "bug blood splatter" +msgstr "salpicadura de sangre de insecto" + +#: src/field.cpp +msgid "bug blood stain" +msgstr "mancha de sangre de insecto" + +#: src/field.cpp +msgid "puddle of bug blood" +msgstr "charco de sangre de insecto" + +#: src/field.cpp +msgid "hemolymph splatter" +msgstr "salpicadura de hemolinfa" + +#: src/field.cpp +msgid "hemolymph stain" +msgstr "mancha de hemolinfa" + +#: src/field.cpp +msgid "puddle of hemolymph" +msgstr "charco de hemolinfa" + +#: src/field.cpp +msgid "shards of chitin" +msgstr "esquirlas de quitina" + +#: src/field.cpp +msgid "shattered bug leg" +msgstr "pata destrozada de insecto" + +#: src/field.cpp +msgid "torn insect organs" +msgstr "órganos desgarrados de insecto" + +#: src/field.cpp +msgid "gooey scraps" +msgstr "pedazos pegajosos" + +#: src/field.cpp +msgid "heap of squishy gore" +msgstr "montón blando de tripas" + +#: src/field.cpp +msgid "icky mess" +msgstr "barullo asqueroso" + +#: src/field.cpp +msgid "swirl of tobacco smoke" +msgstr "espiral de humo de tabaco" + +#: src/field.cpp +msgid "thick tobacco smoke" +msgstr "humo denso de tabaco" + +#: src/field.cpp +msgid "tobacco smoke" +msgstr "humo de tabaco" + +#: src/field.cpp +msgid "pot smoke" +msgstr "humo de porro" + +#: src/field.cpp +msgid "swirl of pot smoke" +msgstr "espiral de humo de porro" + +#: src/field.cpp +msgid "thick pot smoke" +msgstr "humo denso de porro" + +#: src/field.cpp +msgid "crack smoke" +msgstr "humo de crack" + +#: src/field.cpp +msgid "swirl of crack smoke" +msgstr "espiral de humo de crack" + +#: src/field.cpp +msgid "thick crack smoke" +msgstr "humo denso de crack" + +#: src/field.cpp +msgid "meth smoke" +msgstr "humo de metanfetaminas" + +#: src/field.cpp +msgid "swirl of meth smoke" +msgstr "espiral de humo de metanfetaminas" + +#: src/field.cpp +msgid "thick meth smoke" +msgstr "humo denso de metanfetaminas" + +#: src/field.cpp +msgid "angry swarm of bees" +msgstr "enjambre enojado de abejas" + +#: src/field.cpp +msgid "some bees" +msgstr "algunas abejas" + +#: src/field.cpp +msgid "swarm of bees" +msgstr "enjambre de abejas" + +#: src/field.cpp +msgid "airborne incendiary" +msgstr "incendiario aéreo" + +#: src/field.cpp +msgid "relaxation gas" +msgstr "gas relajante" + +#: src/field.cpp +msgid "sedative gas" +msgstr "gas sedante" + +#: src/field.cpp +msgid "fungal haze" +msgstr "neblina fúngica" + +#: src/field.cpp +msgid "thick fungal haze" +msgstr "neblina densa fúngica" + +#: src/field.cpp +msgid "fungicidal gas" +msgstr "gas fungicida" + +#: src/field.cpp +msgid "thick fungicidal gas" +msgstr "gas denso fungicida" + +#: src/field.cpp +msgid "smoke vent" +msgstr "" + +#: src/field.cpp +msgid "Whew... smells like skunk!" +msgstr "Puaj... ¡Huele a mofeta!" + +#: src/field.cpp +msgid "Man, that smells like some good shit!" +msgstr "¡Tío, que bien que huele eso!" + +#: src/field.cpp +msgid "I don't know... should you really be smoking that stuff?" +msgstr "No lo sé... ¿Deberías estar fumando esas cosas?" + +#: src/field.cpp +msgid "Ew, smells like burning rubber!" +msgstr "¡Puaj, qué baranda a goma quemada!" + +#: src/field.cpp +msgid "Ugh, that smells rancid!" +msgstr "¡Uh, qué olor rancio!" + +#: src/field.cpp +#, c-format +msgid "A %s hits you!" +msgstr "¡Un/a %s te golpea!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits %2$s!" +msgstr "¡Un/a %1$s golpea %2$s!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits the %2$s!" +msgstr "¡Un/a %1$s golpea a %2$s!" + +#: src/field.cpp +msgid "The acid burns your body!" +msgstr "¡El ácido te quema el cuerpo!" + +#: src/field.cpp +msgid "The acid burns s body!" +msgstr "¡El ácido quema le quema el cuerpo a !" + +#: src/field.cpp +msgid "The acid burns your legs and feet!" +msgstr "¡El ácido te quema los pies y las piernas!" + +#: src/field.cpp +msgid "The acid burns s legs and feet!" +msgstr "¡El ácido le quema las piernas y los pies a !" + +#: src/field.cpp +msgid "You're lying in a pool of acid" +msgstr "Estás tirado en un charco de ácido" + +#: src/field.cpp +msgid "You're standing in a pool of acid" +msgstr "Estás parado en un charco de ácido." + +#: src/field.cpp +msgid "The sap sticks to you!" +msgstr "¡La savia se te pega!" + +#: src/field.cpp +msgid "The sap sticks to !" +msgstr "¡La savia se pega a !" + +#: src/field.cpp +msgid "The sludge is thick and sticky. You struggle to pull free." +msgstr "El barro es espeso y pegajoso. Luchás para liberarte." + +#: src/field.cpp +msgid "You burn your legs and feet!" +msgstr "¡Te quemas los pies y las piernas!" + +#: src/field.cpp +msgid "You're burning up!" +msgstr "¡Te estás quemando!" + +#: src/field.cpp +msgid "You're set ablaze!" +msgstr "¡Quedás encendido en llamas!" + +#: src/field.cpp +msgid "Your whole body is burning!" +msgstr "¡Se te está quemando todo el cuerpo!" + +#: src/field.cpp +msgid " burns their legs and feet!" +msgstr "¡ se quema los pies y las piernas!" + +#: src/field.cpp +msgid " is burning up!" +msgstr "¡ se está quemando!" + +#: src/field.cpp +msgid " is set ablaze!" +msgstr "¡ queda encendido en llamas!" + +#: src/field.cpp +msgid "s whole body is burning!" +msgstr "¡A se le está quemando todo el cuerpo!" + +#: src/field.cpp +msgid "You're standing in a fire!" +msgstr "¡Estás parado arriba de un fuego!" + +#: src/field.cpp +msgid "You're waist-deep in a fire!" +msgstr "¡Estás en un fuego que te llega a la cintura!" + +#: src/field.cpp +msgid "You're surrounded by raging fire!" +msgstr "¡Estás rodeado por un fuego arrasador!" + +#: src/field.cpp +msgid "You're lying in fire!" msgstr "¡Estás tirado en el fuego!" #: src/field.cpp @@ -131423,7 +134169,7 @@ msgstr "" #: src/game.cpp msgid "Reset world" -msgstr "" +msgstr "Reiniciar mundo" #: src/game.cpp msgid "Delete world" @@ -131447,13 +134193,13 @@ msgstr "%s. Auto-moverse cancelado" #, c-format msgctxt "cancel_activity_or_ignore_query" msgid "%s %s (Case Sensitive)" -msgstr "" +msgstr "%s %s (Sensible a mayúsculas)" #: src/game.cpp #, c-format msgctxt "cancel_activity_or_ignore_query" msgid "%s %s" -msgstr "" +msgstr "%s %s" #: src/game.cpp #, c-format @@ -131788,6 +134534,14 @@ msgstr "Teletransportar - Mapa adyacente" msgid "Test trait group" msgstr "" +#: src/game.cpp +msgid "Show debug message" +msgstr "" + +#: src/game.cpp +msgid "Crash game (test crash handling)" +msgstr "" + #: src/game.cpp msgid "Quit to Main Menu" msgstr "Salir al Menú Principal" @@ -131914,9 +134668,11 @@ msgstr "hora" msgid "minute" msgstr "minuto" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp src/martialarts.cpp msgid "turn" -msgstr "turno" +msgid_plural "turns" +msgstr[0] "turno" +msgstr[1] "turnos" #: src/game.cpp msgid "Set year to?" @@ -132507,7 +135263,7 @@ msgstr "Usar objeto en" msgid "Sort armor" msgstr "Ordenar ropa" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "Atacar" @@ -132538,7 +135294,7 @@ msgstr "" msgid "Use which item?" msgstr "¿Qué objeto usar?" -#: src/game.cpp src/iuse.cpp src/veh_interact.cpp +#: src/game.cpp src/iuse.cpp msgid "Never mind" msgstr "No importa" @@ -132574,7 +135330,7 @@ msgid "" msgstr "" #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." +msgid "It looks solid, and will burn for a few hours without extra fuel." msgstr "" #: src/game.cpp @@ -133029,7 +135785,7 @@ msgctxt "butchery menu" msgid "Cut up %s (%d)" msgstr "" -#. ~ Name and number of items listed for disassembling +#. ~ Name, number of items and time to complete disassembling #: src/game.cpp #, c-format msgctxt "butchery menu" @@ -133066,8 +135822,8 @@ msgid "Choose corpse to butcher / item to disassemble" msgstr "Elige un cadáver para descuartizar / objeto para desmontar" #: src/game.cpp -msgid "Butcher everything" -msgstr "Descuartizar todo" +msgid "Quick butcher everything" +msgstr "" #: src/game.cpp msgid "Disassemble everything once" @@ -133078,8 +135834,8 @@ msgid "Disassemble everything" msgstr "Desmontar todo" #: src/game.cpp -msgid "Cut up all you can" -msgstr "Cortar todo lo que puedas" +msgid "Cut up everything" +msgstr "" #: src/game.cpp msgid "" @@ -133102,7 +135858,7 @@ msgstr "" #: src/game.cpp msgid "" -"This techinque is used when you are in a hurry, but still want to harvest " +"This technique is used when you are in a hurry, but still want to harvest " "something from the corpse. Yields are lower as you don't try to be precise," " but it's useful if you don't want to set up a workshop. Prevents zombies " "from raising." @@ -133127,7 +135883,7 @@ msgstr "" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "" @@ -133138,7 +135894,7 @@ msgstr "" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." @@ -134019,6 +136775,10 @@ msgstr "Sientes cómo se descompone tu cuerpo." msgid "You feel fatigue seeping into your body." msgstr "" +#: src/game.cpp +msgid "The portal collapses!" +msgstr "" + #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." @@ -134252,7 +137012,7 @@ msgstr "" #: src/game_inventory.cpp msgid "CALORIES" -msgstr "" +msgstr "CALORÍAS" #: src/game_inventory.cpp msgid "QUENCH" @@ -134262,6 +137022,19 @@ msgstr "" msgid "JOY" msgstr "" +#. ~ Used for permafood shelf life in the Eat menu +#: src/game_inventory.cpp +msgid "indefinite" +msgstr "Indefinido" + +#: src/game_inventory.cpp +msgid "SHELF LIFE" +msgstr "" + +#: src/game_inventory.cpp +msgid "FRESHNESS" +msgstr "" + #: src/game_inventory.cpp msgid "SPOILS IN" msgstr "" @@ -134294,6 +137067,38 @@ msgstr "" msgid "You're fully charged" msgstr "" +#: src/game_inventory.cpp +msgid "soon!" +msgstr "" + +#: src/game_inventory.cpp +msgid "fresh" +msgstr "fresco" + +#: src/game_inventory.cpp +msgid "quite fresh" +msgstr "algo fresco" + +#: src/game_inventory.cpp +msgid "near midlife" +msgstr "" + +#: src/game_inventory.cpp +msgid "past midlife" +msgstr "" + +#: src/game_inventory.cpp +msgid "getting older" +msgstr "" + +#: src/game_inventory.cpp +msgid "old" +msgstr "viejo" + +#: src/game_inventory.cpp +msgid "rotten" +msgstr "podrido" + #: src/game_inventory.cpp msgid "Consume item" msgstr "Consumir objeto" @@ -134437,6 +137242,14 @@ msgstr "" msgid "You have no weapons you could put into your %s." msgstr "" +#: src/game_inventory.cpp src/iuse.cpp +msgid "Cut up what?" +msgstr "¿Qué quieres cortar?" + +#: src/game_inventory.cpp +msgid "You have nothing to cut up." +msgstr "" + #: src/game_inventory.cpp msgid "Saw barrel" msgstr "" @@ -134750,7 +137563,7 @@ msgstr "¿Cuánto tiempo vas a esperar?" msgid "Are you sure you want to sleep?" msgstr "¿Seguro que quieres dormir?" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "Sí." @@ -134827,11 +137640,11 @@ msgstr "" #: src/handle_action.cpp msgid "Plant seeds" -msgstr "" +msgstr "Plantar semillas" #: src/handle_action.cpp msgid "Plant seeds... you don't have any" -msgstr "" +msgstr "Plantar semillas...no tienes ninguna" #: src/handle_action.cpp msgid "" @@ -135008,20 +137821,20 @@ msgstr "¿Guardar y salir?" #: src/handle_action.cpp #, c-format msgid "%s are now %s." -msgstr "" +msgstr "%s es %s ahora." #. ~ Auto Pulp/Pulp Adjacent/Butcher is now set to x #. ~ Auto Foraging is now set to x #: src/handle_action.cpp #, c-format msgid "%s is now set to %s." -msgstr "" +msgstr "%s esta puesto a %s ahora." #. ~ Auto Mining is now ON/OFF #: src/handle_action.cpp #, c-format msgid "%s is now %s." -msgstr "" +msgstr "%s esta ahora %s." #: src/handle_action.cpp msgid "Debug mode ON!" @@ -135053,6 +137866,11 @@ msgstr "Aplicar armadura de diamante" msgid "You don't have a suitable item to coat with diamond" msgstr "No tienes un elemento adecuado para cubrir con diamante" +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "" + #: src/iexamine.cpp #, c-format msgid "Use the %s?" @@ -136555,6 +139373,10 @@ msgstr "" msgid "You inspect its contents and find: " msgstr "" +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "" + #: src/iexamine.cpp msgid "You see some smoldering embers there." msgstr "" @@ -136609,7 +139431,7 @@ msgstr "Trampas" #: src/init.cpp msgid "Bionics" -msgstr "" +msgstr "Biónicos" #: src/init.cpp msgid "Terrain" @@ -136673,7 +139495,7 @@ msgstr "" #: src/init.cpp msgid "Tileset" -msgstr "" +msgstr "Tileset" #: src/init.cpp msgid "Verifying" @@ -136774,14 +139596,14 @@ msgstr " o " #, c-format msgctxt "keybinding" msgid "[any] %s" -msgstr "" +msgstr "[algo] %s" #. ~ keybinding description for unbound or disabled keys #: src/input.cpp #, c-format msgctxt "keybinding" msgid "[n/a] %s" -msgstr "" +msgstr "[n/a] %s" #. ~ keybinding description for bound keys #: src/input.cpp @@ -136971,10 +139793,79 @@ msgstr "naranja" msgid "black" msgstr "negro" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks as fresh as it can be. It still has " +"%s until it spoils." +msgstr "" + +#: src/item.cpp +msgid "* This food looks as fresh as it can be." +msgstr "" + +#: src/item.cpp +#, c-format +msgid "" +"* This food looks old. It's just %s from becoming " +"inedible." +msgstr "" + +#: src/item.cpp +msgid "" +"* This food looks old. It's on the brink of becoming inedible." +msgstr "" + +#: src/item.cpp +msgid "" +"* This food looks fine. If you were more skilled in cooking or" +" survival, you might be able to make a better estimation." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks quite fresh. It has %s until it" +" spoils." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it is reaching its midlife. " +"There's %s before it spoils." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it has passed its midlife. " +"Edible, but will go bad in %s." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it will be old soon. It has " +"%s, so if you plan to use it, it's now or never." +msgstr "" + #: src/item.cpp msgid "Category: " msgstr "Categoría: " +#: src/item.cpp +msgid "$" +msgstr "$" + #: src/item.cpp msgid "Price: " msgstr "Precio: " @@ -137055,11 +139946,11 @@ msgstr "max rot: " #: src/item.cpp msgid "last rot: " -msgstr "last rot: " +msgstr "ultimo rot: " #: src/item.cpp msgid "last temp: " -msgstr "" +msgstr "ultima temp:" #: src/item.cpp msgid "HOT: " @@ -137087,7 +139978,7 @@ msgstr "Disfrute: " #: src/item.cpp msgid "Stimulation:" -msgstr "" +msgstr "Estimulación:" #: src/item.cpp msgid "Downer" @@ -137107,7 +139998,7 @@ msgstr "" #: src/item.cpp msgid "Calories (kcal): " -msgstr "" +msgstr "Calorias (kcal): " #: src/item.cpp msgid "Smells like: " @@ -137145,43 +140036,8 @@ msgstr "" #: src/item.cpp #, c-format msgid "" -"* This food is perishable, and takes %s to " -"rot from full freshness, at room temperature." -msgstr "" -"* Esta comida es perecedera, y tarda %s en " -"pudrirse desde su estado óptimo, a temperatura ambiente." - -#: src/item.cpp -msgid "* This food looks as fresh as it can be." -msgstr "" - -#: src/item.cpp -msgid "" -"* This food looks still quite fresh. It's far from becoming " -"old." -msgstr "" - -#: src/item.cpp -msgid "" -"* This food looks like it is reaching its midlife. It has" -" some time ahead before spoiling." -msgstr "" - -#: src/item.cpp -msgid "" -"* This food looks like it has passed its midlife. Edible," -" but will go old sooner rather then later." -msgstr "" - -#: src/item.cpp -msgid "" -"* This food looks like it will be old soon. It's now or never, if" -" you plan to use it." -msgstr "" - -#: src/item.cpp -msgid "" -"* This food looks old. It's on a brink of becoming inedible." +"* This food is perishable, and at room temperature has an" +" estimated nominal shelf life of %s." msgstr "" #: src/item.cpp @@ -137224,10 +140080,6 @@ msgstr "" "Esta comida ha empezado a pudrirse. Sería una muy mala " "idea comerla." -#: src/item.cpp -msgid "Capacity: " -msgstr "Capacidad:" - #: src/item.cpp #, c-format msgid " round of %s" @@ -137235,6 +140087,10 @@ msgid_plural " rounds of %s" msgstr[0] " bala de %s" msgstr[1] " balas de %s" +#: src/item.cpp +msgid "Capacity: " +msgstr "Capacidad:" + #: src/item.cpp msgid " per round" msgstr " por bala" @@ -137421,6 +140277,18 @@ msgstr "Modificador de manejo: " msgid "Ammo: %s" msgstr "Munición: %s" +#: src/item.cpp +msgid "%" +msgstr "%" + +#: src/item.cpp +msgid "Reload modifier: " +msgstr "" + +#: src/item.cpp +msgid "Minimum strength required modifier: " +msgstr "" + #: src/item.cpp msgid "Used on: " msgstr "Se usa en: " @@ -138090,8 +140958,8 @@ msgstr "%s con %s" msgctxt "item name" msgid "%s with %zd item" msgid_plural "%s with %zd items" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%s con %zd objeto" +msgstr[1] "%s con %zd objetos" #: src/item.cpp msgid " (poisonous)" @@ -138099,11 +140967,11 @@ msgstr " (venenoso)" #: src/item.cpp msgid " (hallucinogenic)" -msgstr "" +msgstr " (alucinógeno)" #: src/item.cpp msgid " (dirty)" -msgstr "" +msgstr " (sucio)" #: src/item.cpp src/veh_interact.cpp msgid " (rotten)" @@ -139922,7 +142790,7 @@ msgstr "" #: src/iuse.cpp msgid "BEES!" -msgstr "" +msgstr "¡ABEJAS!" #: src/iuse.cpp msgid "Set the timer to (0 to cancel)?" @@ -140143,7 +143011,9 @@ msgid "You cannot use the %1$s with another of it's kind." msgstr "" #: src/iuse.cpp -msgid "You unfold solar array from the pack and plug it in." +msgid "" +"You unfold solar array from the pack. You still need to connect it with a " +"cable." msgstr "" #: src/iuse.cpp @@ -140199,7 +143069,7 @@ msgstr "Buscaminas" #: src/iuse.cpp src/iuse_software_lightson.cpp msgid "Lights on!" -msgstr "" +msgstr "¡Luces!" #: src/iuse.cpp #, c-format @@ -140297,10 +143167,6 @@ msgstr "" msgid "You waste a lot of the wood." msgstr "Desperdicias mucha madera." -#: src/iuse.cpp src/iuse_actor.cpp -msgid "Cut up what?" -msgstr "¿Qué quieres cortar?" - #: src/iuse.cpp msgid "Chop down which tree?" msgstr "" @@ -141573,14 +144439,26 @@ msgstr "" "¡Por estar toqueteando la multicocina casi la rompes! Por suerte, todavía " "funciona, pero mejor deja de joder con ella." -#: src/iuse.cpp -msgid "Attach cable to vehicle where?" -msgstr "¿En dónde quieres conectar el cable al vehículo?" - #: src/iuse.cpp msgid "Using cable:" msgstr "Usar cable:" +#: src/iuse.cpp +msgid "Attach cable to vehicle" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to self" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to solar pack" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to vehicle where?" +msgstr "¿En dónde quieres conectar el cable al vehículo?" + #: src/iuse.cpp msgid "Attach loose end of the cable" msgstr "Conectar punta suelta del cable" @@ -141761,6 +144639,105 @@ msgid "" "work." msgstr "" +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "Lanzas una %s." + +#: src/iuse.cpp +msgid "Heads!" +msgstr "¡Cara!" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "¡Cruz!" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "" + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "" + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "" + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "" + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "" + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "" + +#: src/iuse.cpp +msgid "Most likely." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "" + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "" + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "" + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "" + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "" + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "" + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "" + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "" + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "Mi respuesta es no." + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "" + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "El %s dice: %s" + #: src/iuse_actor.cpp #, c-format msgid "The %s is empty!" @@ -142185,7 +145162,7 @@ msgstr "" #: src/iuse_actor.cpp #, c-format msgid "You need at least %s 1." -msgstr "" +msgstr "Necesitas al menos un %s." #: src/iuse_actor.cpp msgid "You can't play music underwater" @@ -142302,7 +145279,7 @@ msgstr[1] "" #: src/iuse_actor.cpp msgid "Num items: " -msgstr "" +msgstr "Num objetos:" #: src/iuse_actor.cpp msgid "Item volume: Min: " @@ -142310,7 +145287,7 @@ msgstr "" #: src/iuse_actor.cpp msgid " Max: " -msgstr "" +msgstr " Max: " #: src/iuse_actor.cpp #, c-format @@ -142568,15 +145545,15 @@ msgstr "Probabilidad de curar (porcentaje): " #: src/iuse_actor.cpp msgid "* Bleeding:" -msgstr "" +msgstr "* Sangrando:" #: src/iuse_actor.cpp msgid "* Bite:" -msgstr "" +msgstr "* Mordido:" #: src/iuse_actor.cpp msgid "* Infection:" -msgstr "" +msgstr "* Infección:" #: src/iuse_actor.cpp msgid "Moves to use:" @@ -143662,7 +146639,7 @@ msgstr "" #: src/iuse_software_lightson.cpp msgid "Legend: # on, - off." -msgstr "" +msgstr "Leyenda: # on, - off." #: src/iuse_software_lightson.cpp msgid "Toggle lights switches selected light and 4 its neighbors." @@ -143984,11 +146961,12 @@ msgstr "Cargando" #: src/lua_console.cpp msgid "This build does not support Lua." -msgstr "" +msgstr "Este ejecutable no tiene soporte para Lua." #: src/lua_console.cpp msgid "Welcome to the Lua console! Here you can enter Lua code." msgstr "" +"¡Bienvenido al terminal de Lua! Aquí tu puedes escribir código en Lua." #: src/lua_console.cpp msgid "Press [Esc] to close the Lua console." @@ -144466,13 +147444,222 @@ msgstr "Desviar energía hacia ascensor" msgid "PolCom OS v1.47" msgstr "PolCom OS v1.47" -#: src/mapgen_functions.cpp -msgid "Open Supply Room" -msgstr "Abrir Habitación de Suministros" +#: src/mapgen_functions.cpp +msgid "Open Supply Room" +msgstr "Abrir Habitación de Suministros" + +#: src/mapgen_functions.cpp +msgid "Open Evidence Locker" +msgstr "Abrir Armario de Evidencia" + +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "" + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "Habilidad" +msgstr[1] "Habilidades" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "Requiere: " + +#: src/martialarts.cpp +msgid "activate" +msgstr "usar" + +#: src/martialarts.cpp +msgid "be used" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "Tipo: %s" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "defensivo" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "ofensivo" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "Bonus: " + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind " +"it" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "tile" +msgstr[1] "tiles" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" +msgstr "" + +#: src/martialarts.cpp +msgid "Passive" +msgstr "Pasivo" + +#: src/martialarts.cpp +msgid "Hit" +msgstr "" + +#: src/martialarts.cpp +msgid "Get hit" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "
Técnica:
%s " -#: src/mapgen_functions.cpp -msgid "Open Evidence Locker" -msgstr "Abrir Armario de Evidencia" +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "Arma:" +msgstr[1] "Armas:" + +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr " Estilo: %s " #: src/material.cpp msgid "damages" @@ -144561,7 +147748,7 @@ msgstr "" #: src/melee.cpp #, c-format msgid "The %s is destroyed!" -msgstr "" +msgstr "¡El %s esta destruido!" #: src/melee.cpp #, c-format @@ -145076,7 +148263,7 @@ msgstr "" #: src/messages.cpp msgctxt "message type" msgid "info" -msgstr "" +msgstr "info" #: src/messages.cpp msgctxt "message type" @@ -145086,12 +148273,12 @@ msgstr "" #: src/messages.cpp msgctxt "message type" msgid "debug" -msgstr "" +msgstr "debug" #: src/messages.cpp #, c-format msgid "< Press %s to filter, %s to reset >" -msgstr "" +msgstr "< Presiona %s para filtrar, %s para reiniciar >" #: src/messages.cpp #, c-format @@ -145108,7 +148295,7 @@ msgstr "" #, c-format msgctxt "message log" msgid "%s, " -msgstr "" +msgstr "%s, " #. ~ the 2nd %s is a type name, this is used to format the last type name in a #. list of type names @@ -145116,16 +148303,12 @@ msgstr "" #, c-format msgctxt "message log" msgid "%s." -msgstr "" +msgstr "%s." #: src/mission_companion.cpp msgid "Outpost Missions" msgstr "Misiones del Puesto" -#: src/mission_companion.cpp -msgid "Base Missions" -msgstr "" - #: src/mission_companion.cpp msgid "Junk Shop Missions" msgstr "" @@ -145176,17 +148359,7 @@ msgstr "" #: src/mission_companion.cpp msgid " hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?" -msgstr "" -"\n" -" \n" -"¿Quieres que vuelvan tus compañeros a tu grupo?" +msgstr " horas] \n" #: src/mission_companion.cpp msgid "Retrieve Scavenging Patrol" @@ -145300,543 +148473,6 @@ msgstr "" msgid "Recover Ally from Carpentry Work" msgstr "" -#: src/mission_companion.cpp -msgid "Upgrade Camp" -msgstr "" - -#: src/mission_companion.cpp -msgid "Gather Materials" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" -" \n" -"Effects:\n" -"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" -" \n" -"Must have enjoyability >= -6\n" -"Perishable food liquidated at penalty depending on upgrades and rot time:\n" -"> Rotten: 0%%\n" -"> Rots in < 2 days: 60%%\n" -"> Rots in < 5 days: 80%%\n" -" \n" -"Total faction food stock: %d kcal or %d day's rations" -msgstr "" - -#: src/mission_companion.cpp -msgid "Distribute Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" -" \n" -"Effects:\n" -"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" -"> Items sitting on any type of furniture will not be moved.\n" -"> Items that are not listed in one of the categories are defaulted to the tools group." -msgstr "" - -#: src/mission_companion.cpp -msgid "Reset Sort Points" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to gather light brush and heavy sticks.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -"> heavy sticks\n" -"> withered plants\n" -"> splintered wood\n" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Collect Firewood" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to do low level chores and sort supplies.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" -"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Menial Labor" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours \n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Expand Base" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to a nearby forest to cut logs.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: 1 \n" -"Effects:\n" -"> 50%% of trees/trunks at the forest position will be cut down.\n" -"> 50%% of total material will be brought back.\n" -"> Repeatable with diminishing returns.\n" -" \n" -"Risk: Low-Medium\n" -"Time: 6 Hour Base + Travel Time + Cutting Time\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Cut Logs" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Good for setting up resupply or contingency points.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward.\n" -" \n" -"Risk: Medium\n" -"Time: 6 Hour Construction + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Setup Hide Site" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Push gear out to a hide site or bring gear back from one.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 1\n" -"Effects:\n" -"> Good for returning equipment you left in the hide site shelter.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward or back.\n" -" \n" -"Risk: Medium\n" -"Time: 1 Hour Base + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Relay Hide Site" -msgstr "" - -#: src/mission_companion.cpp -msgid "Construct Map Fortifications" -msgstr "" - -#: src/mission_companion.cpp -msgid "Construct Spiked Trench" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recruit Companions" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Select checkpoints to customize path.\n" -"> Reveals terrain around the path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Scout Mission" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 4\n" -"Effects:\n" -"> Pulls creatures encountered into combat instead of fleeing.\n" -"> Select checkpoints to customize path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: Very High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Combat Patrol" -msgstr "" - -#: src/mission_companion.cpp -msgid " Expansion Upgrade" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Have a companion attempt to completely dissemble a vehicle into components.\n" -" \n" -"Skill used: mechanics\n" -"Difficulty: 2 \n" -"Effects:\n" -"> Removed parts placed on the furniture in the garage.\n" -"> Skill plays a huge role to determine what is salvaged.\n" -" \n" -"Risk: None\n" -"Time: Skill Based \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Chop Shop" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plow any spaces that have reverted to dirt or grass.\n" -" \n" -msgstr "" -"Notas:\n" -"Arar cualquier espacio que se haya revertido a tierra o césped.\n" -" \n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Restores only the plots created in the last expansion upgrade.\n" -"> Does not damage existing crops.\n" -" \n" -"Risk: None\n" -"Time: 5 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Plow Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plant designated seeds in the spaces that have already been tilled.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose which seed type or all of your seeds.\n" -"> Stops when out of seeds or planting locations.\n" -"> Will plant in ALL dirt mounds in the expansion.\n" -" \n" -"Risk: None\n" -"Time: 1 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Plant Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Harvest any plants that are ripe and bring the produce back.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Will dump all harvesting products onto your location.\n" -" \n" -"Risk: None\n" -"Time: 3 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Harvest Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to expand your camp!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " hours left] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " minutes left] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " [DONE]\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally from Upgrading" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to upgrade your expansions!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally, " -msgstr "" - -#: src/mission_companion.cpp -msgid "Working at the chop shop...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/120 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Chop Shop" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working in your kitchen!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " [ALMOST DONE]\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Cooking" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working in your blacksmith shop!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Smithing" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to plow your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/~48 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Plow Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to plant your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/4 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Plant Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to harvest your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/~10 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Harvest Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working on your farm!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Crafting" -msgstr "" - -#: src/mission_companion.cpp -msgid "Busy crafting!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for materials to upgrade the camp.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/3 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally from Gathering" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for firewood.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Firewood Gatherers" -msgstr "" - -#: src/mission_companion.cpp -msgid "Performing menial labor...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Menial Laborer" -msgstr "" - -#: src/mission_companion.cpp -msgid "Surveying for expansion...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Surveyor" -msgstr "" - -#: src/mission_companion.cpp -msgid "Cutting logs in the woods...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Log Cutter" -msgstr "" - -#: src/mission_companion.cpp -msgid "Setting up a hide site...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Hide Setup" -msgstr "" - -#: src/mission_companion.cpp -msgid "Constructing fortifications...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Finish Map Fortifications" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for recruits.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Recruiter" -msgstr "" - -#: src/mission_companion.cpp -msgid "Scouting the region.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Scout" -msgstr "" - -#: src/mission_companion.cpp -msgid "Patrolling the region.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Combat Patrol" -msgstr "" - #: src/mission_companion.cpp msgid "" "Cost: $1000\n" @@ -146105,235 +148741,6 @@ msgstr "se va a buscar basura..." msgid "departs to work as a laborer..." msgstr "se va a trabajar como obrero..." -#: src/mission_companion.cpp -msgid "You don't have enough food stored to feed your companion." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to upgrade the camp..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have a companion upgrading the camp." -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the materials for the upgrade." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your garage..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your kitchen with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your blacksmith shop with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your farm with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns to you with something..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for materials..." -msgstr "" - -#: src/mission_companion.cpp -msgid "There are too many companions working on this mission!" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for firewood..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to dig ditches and scrub toilets..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to survey land..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You have already selected a surveyor!" -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to upgrade the expansion..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have a worker upgrading that expansion!" -msgstr "" - -#: src/mission_companion.cpp -msgid "Forests and swamps are the only valid cutting locations." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Trip Estimate:\n" -"%s" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to cut logs..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working in the woods..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Forests, swamps, and fields are valid hide site locations." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to build a hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You need equipment to setup a hide site..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working on the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You must select an existing hide site." -msgstr "" - -#: src/mission_companion.cpp -msgid "Bring gear back?" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs for the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You need equipment to transport between the hide site..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from shuttling gear between the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Select a start and end point. Line must be straight. Fields, forests, and " -"swamps are valid fortification locations. In addition to existing " -"fortification constructions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an end point." -msgstr "" - -#: src/mission_companion.cpp -msgid "Invalid terrain in construction path." -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the material to build the fortification." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for recruits..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Select checkpoints until you reach maximum range or select the last point " -"again to end." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs on patrol..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Your companion hit a river and didn't know how to swim..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Your companion hit a river and didn't know how to swim well enough to " -"cross..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't return from patrol..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from patrol..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that garage." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins plowing the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone plowing that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "You have no additional seeds to give your companions..." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins planting the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Which seeds do you wish to have planted?" -msgstr "¿Qué semilla quieres plantar?" - -#: src/mission_companion.cpp -msgid "You already have someone planting that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to harvest the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone harvesting that field." -msgstr "" - #: src/mission_companion.cpp msgid "departs to work as a carpenter..." msgstr "se va a trabajar como carpintero..." @@ -146550,247 +148957,6 @@ msgstr "" "%s se siente más confiado en tus compañeros y está deseoso de dejarlos " "participar de tareas más importantes." -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"%s\n" -" \n" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s \n" -"Risk: None\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes: \n" -"Send a companion to gather materials for the next camp upgrade.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: " -msgstr "" -" \n" -"Peligro: Muy bajo\n" -"Tiempo: 3 Horas, Repetidas\n" -"Posiciones: " - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from upgrading the camp having earned a bit of experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "While gathering supplies, a silent specter approaches %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s notices the antlered horror and slips away before it gets too close." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The survivor approaches %s asking for directions." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Fearful that he may be an agent of some hostile faction, %s doesn't mention " -"the camp." -msgstr "" - -#: src/mission_companion.cpp -msgid "The two part on friendly terms and the survivor isn't seen again." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't detect the ambush until it was too late!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The bull moose charged %s from the tree line..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Despite being caught off guard %s was able to run away until the moose gave " -"up pursuit." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The jabberwock grabbed %s by the arm from behind and began to scream." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Terrified, %s spun around and delivered a massive kick to the creature's " -"torso..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Collapsing into a pile of gore, %s walked away unscathed..." -msgstr "" - -#: src/mission_companion.cpp -msgid "(Sounds like bullshit, you wonder what really happened.)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s turned to find the hideous black eyes of a giant wasp staring back from " -"only a few feet away..." -msgstr "" - -#: src/mission_companion.cpp -msgid "The screams were terrifying, there was nothing anyone could do." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Pieces of %s were found strewn across a few bushes." -msgstr "" - -#: src/mission_companion.cpp -msgid "(You wonder if your companions are fit to work on their own...)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from gathering materials carrying supplies and has a bit more " -"experience..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Your companion seems disappointed that your pantry is empty..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -" Chopping this vehicle:\n" -"%s" -msgstr "" - -#: src/mission_companion.cpp -msgid "begins working in the garage..." -msgstr "" - -#: src/mission_companion.cpp -msgid "No seeds to plant!" -msgstr "¡No hay semillas para plantar!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working your fields..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from doing the dirty work to keep the camp running..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Sorting points have changed, forcing reset." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an expansion:" -msgstr "" - -#: src/mission_companion.cpp -msgid "You choose to wait..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from surveying for the expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "No items are located at the drop point..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "You distribute %d kcal worth of food to your companions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Harvestable: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Ready for Planting: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Needs Plowing: " -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Name: %25s\n" -msgstr "Nombre: %25s\n" - -#: src/mission_companion.cpp -msgid "---- Engines ----\n" -msgstr "---- Motores ----\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Engine: %25s\n" -msgstr "Motor: %25s\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Status: %24d%%\n" -msgstr ">Estado: %24d%%\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Fuel: %25s\n" -msgstr ">Combustible: %25s\n" - -#: src/mission_companion.cpp -msgid "---- Fuel Storage & Battery ----\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Estimated Chop Time: 5 Days\n" -msgstr "" - #: src/mission_companion.cpp #, c-format msgid "While %s was framing a building one of the walls began to collapse..." @@ -146963,368 +149129,6 @@ msgstr "¿Quién debería regresar?" msgid "No one returns to your party..." msgstr "Nadie regresa a tu grupo..." -#: src/mission_companion.cpp -msgid "MAIN" -msgstr "PRINCIPAL" - -#: src/mission_companion.cpp -msgid " [N] " -msgstr " [N] " - -#: src/mission_companion.cpp -msgid " [NE] " -msgstr " [NE] " - -#: src/mission_companion.cpp -msgid " [E] " -msgstr " [E] " - -#: src/mission_companion.cpp -msgid " [SE] " -msgstr " [SE] " - -#: src/mission_companion.cpp -msgid " [S] " -msgstr " [S] " - -#: src/mission_companion.cpp -msgid " [SW] " -msgstr " [SO] " - -#: src/mission_companion.cpp -msgid " [W] " -msgstr " [O] " - -#: src/mission_companion.cpp -msgid " [NW] " -msgstr " [NO] " - -#: src/mission_companion.cpp -msgid "Farm Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Garage Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Kitchen Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Blacksmith Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Empty Expansion" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Select a location between %d and %d tiles away." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"You must select a target between %d and %d range from the base. Range: %d" -msgstr "" - -#: src/mission_companion.cpp -msgid "You must be able to see the target that you select." -msgstr "" - -#: src/mission_companion.cpp -msgid "Do you want to bounce off this location to extend range?" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15.2f (km)\n" -msgstr ">Distancia:%15.2f (km)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">One Way: %15d (trips)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15.2f (km)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15d (m)\n" -msgstr ">Distancia:%15d (m)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15d (m)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Travel: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Working: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (days)\n" -msgstr "Total: %15d (días)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (hours)\n" -msgstr "Total: %15d (horas)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (minutes)\n" -msgstr "Total: %15d (minutos)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Food: %15d (kcal)\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "food for you" -msgstr "" - -#: src/mission_companion.cpp -msgid "food for companions" -msgstr "" - -#: src/mission_companion.cpp -msgid "weapons" -msgstr "armas" - -#: src/mission_companion.cpp -msgid "clothing" -msgstr "prendas de vestir" - -#: src/mission_companion.cpp -msgid "bionics" -msgstr "" - -#: src/mission_companion.cpp -msgid "all kinds of tools" -msgstr "" - -#: src/mission_companion.cpp -msgid "wood of various sorts" -msgstr "" - -#: src/mission_companion.cpp -msgid "trash and rotting food" -msgstr "" - -#: src/mission_companion.cpp -msgid "books" -msgstr "libros" - -#: src/mission_companion.cpp -msgid "medication" -msgstr "" - -#: src/mission_companion.cpp -msgid "ammo" -msgstr "munición" - -#: src/mission_companion.cpp -#, c-format -msgid "Reset point: %s?" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -" Items New Point Old Point\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -" Save Points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "Revert to default points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the materials to craft that" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Batch crafting %s [MAX: %d]: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Your batch is too large!" -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to work..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" -" \n" -"Skill used: speech\n" -"Difficulty: 2 \n" -"Base Score: +%3d%%\n" -"> Expansion Bonus: +%3d%%\n" -"> Faction Bonus: +%3d%%\n" -"> Special Bonus: +%3d%%\n" -" \n" -"Total: Skill +%3d%%\n" -" \n" -"Risk: High\n" -"Time: 4 Days\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from searching for recruits with a bit more experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s encountered %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't find anyone to recruit..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s convinced %s to hear a recruitment offer from you..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested in anything %s had to offer..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"NPC Overview:\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Name: %20s\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Strength: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Dexterity: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Intelligence: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Perception: %10d\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Top 3 Skills:\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Asking for:\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"> Food: %10d days\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Faction Food:%9d days\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Recruit Chance: %10d%%\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an option:" -msgstr "" - -#: src/mission_companion.cpp -msgid "Increase Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "Decrease Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "Make Offer" -msgstr "" - -#: src/mission_companion.cpp -msgid "Not Interested" -msgstr "No estoy interesado." - -#: src/mission_companion.cpp -msgid "You decide you aren't interested..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s has been convinced to join!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested..." -msgstr "" - #: src/mission_companion.h msgid "Do you wish to give your companion additional items?" msgstr "" @@ -147354,7 +149158,7 @@ msgstr "¡%s te ha establecido como alguacil!" #: src/mission_start.cpp msgid "Demonic Soul" -msgstr "" +msgstr "Alma Demoníaca" #: src/mission_start.cpp #, c-format @@ -149314,17 +151118,17 @@ msgstr "" #: src/monster.cpp #, c-format msgid "This is a %s. %s" -msgstr "" +msgstr "Esto es un %s. %s" #: src/monster.cpp #, c-format msgid "It is %s." -msgstr "" +msgstr "Es %s." #: src/monster.cpp #, c-format msgid "It is %s in size." -msgstr "" +msgstr "Es de tamaño %s." #: src/monster.cpp msgid "an animal" @@ -149536,7 +151340,7 @@ msgstr "¡El %s se libera del agarre!" #: src/monster.cpp msgid "hummmmm." -msgstr "" +msgstr "hummmmm." #: src/monster.cpp msgid "fwoosh!" @@ -149554,7 +151358,7 @@ msgstr "" #: src/monster.cpp msgid "BOOOOOOOM!!!" -msgstr "" +msgstr "¡¡¡BOOOOOOOM!!!" #: src/monster.cpp msgid "vrrrRRRUUMMMMMMMM!" @@ -150061,9 +151865,10 @@ msgstr "Puntos para usar: %4d" msgid "Freeform" msgstr "Formalibre" -#: src/newcharacter.cpp -msgid "Pick your style:" -msgstr "Elige tu estilo:" +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" +msgstr "" #: src/newcharacter.cpp msgid "Use this style?" @@ -150646,7 +152451,7 @@ msgstr "" #: src/newcharacter.cpp msgid "_______NO NAME ENTERED!_______" -msgstr "" +msgstr "_______¡NO PUSISTE NOMBRE!_______" #: src/newcharacter.cpp msgid "Are you SURE you're finished? Your name will be randomly generated." @@ -150677,7 +152482,7 @@ msgstr "plantilla de jugador" #: src/npc.cpp #, c-format msgid " wears the %s." -msgstr "" +msgstr " viste el %s." #: src/npc.cpp #, c-format @@ -151012,7 +152817,7 @@ msgstr "" #: src/npcmove.cpp msgid "" -msgstr "" +msgstr "" #: src/npcmove.cpp #, c-format @@ -151224,7 +153029,7 @@ msgstr "La herida de la mordida en mi %s tiene mal aspecto." #: src/npcmove.cpp msgid "" -msgstr "" +msgstr "" #: src/npcmove.cpp msgid "I'm suffering from radiation sickness..." @@ -151299,50 +153104,6 @@ msgstr "Me podrías dar una mano con otra cosa si estás interesado." msgid " If you are interested, I have another job for you." msgstr "Si estás interesado, tengo otro trabajo para ti." -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "¡Un placer hacer negocios!" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "Bueno, supongo que solo quedamos nosotros." - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "Por lo menos tenemos un refugio." - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "No sé, buscar suministros o a otros supervivientes, supongo." - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "Tal vez deberíamos empezar por poner tablas en las aberturas." - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to" -" disappear quickly from here." -msgstr "" -"Supongo que conseguir un coche que funcione va a ser útil si tenemos que " -"salir rápido de aquí." - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "" -"Podemos buscar una de esas granjas de por aquí. Nos pueden brindar mucha " -"comida y están alejadas de las ciudades." - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "" -"Probablemente, deberíamos mantenernos lejos de esas ciudades, incluso aunque" -" haya un montón de cosas útiles ahí." - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." msgstr "Ya me pediste cosas; pregúntame en otro momento." @@ -151351,10 +153112,6 @@ msgstr "Ya me pediste cosas; pregúntame en otro momento." msgid "Why should I share my equipment with you?" msgstr "¿Por qué tendría que compartir mi equipo contigo?" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "Bueno, aquí tienes." - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr "¡, y si preguntas otra vez !" @@ -151375,46 +153132,6 @@ msgstr "Lo lamento, pero no parece que haya nada que te pueda enseñar." msgid "Here's what I can teach you..." msgstr "Te puedo enseñar esto..." -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "Bueno, comencemos." - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "Hasta que no tenga algún antibiótico, no..." - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "Recién me preguntaste; preguntame de nuevo después." - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "¿Por qué tendría que viajar contigo?" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "¡No hay problema, estoy contigo!" - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "No... no lo creo." - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "¿Qué pasa?" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "¿Realmente te vas?" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "Bueno. Ahora puedes guiarme." - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "No. Aquí yo soy el líder." - #: src/npctalk.cpp #, c-format msgid "%d.%d miles." @@ -151427,22 +153144,6 @@ msgid_plural "%d feet." msgstr[0] "%d pie." msgstr[1] "%d pies." -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "Estoy de guardia." - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "¡No hay ninguna oportunidad, me van a dejar atrás!" - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "Prefiero quedarme con eso para mí." - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "Realmente no me siento cómodo haciendo eso..." - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "*no está enfretando a enemigos." @@ -151653,7 +153354,7 @@ msgstr " %s dejará las puertas abiertas." #: src/npctalk.cpp msgid "YES, MASTER!" -msgstr "" +msgstr "¡SI, AMO!" #: src/npctalk.cpp msgid "Tell me about it." @@ -151748,30 +153449,6 @@ msgstr "Tal vez me vuelvas a ver..." msgid "Delivering bandages." msgstr "Entregando vendas." -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "¿Qué hacemos ahora?" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "¿Algún consejo?" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "¿Quieres viajar conmigo?" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "Vamos a intercambiar objetos." - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "No puedo salir del refugio sin equipamiento..." - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "Hmm, bueno." - #: src/npctalk.cpp msgid "Okay, fine." msgstr "Bueno, está bien." @@ -151804,30 +153481,6 @@ msgstr "Eh, no importa." msgid "Never mind, I'll do without. Bye." msgstr "No importa, lo voy a hacer sin eso. Chao." -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "¡Gracias!" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "¡Gracias! ¿Pero me puedes dar más?" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "¡Gracias, nos vemos después!" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "Bueno, bueno, perdón." - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "¡En serio, dame alguna cosa!" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "Bueno, está bien, chao." - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "Sí, sigamos entrenando." @@ -151849,94 +153502,6 @@ msgstr "%s: %d -> %d" msgid "%s: %d -> %d (cost $%d)" msgstr "%s: %d -> %d (cuesta $%d)" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "Suena bien." - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "Pensandolo bien, olvidate." - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "Bueno. Guiá el camino." - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "No, vamos a estar bien aquí." - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "Entendido. Voy a conseguir esos antibióticos." - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "Bueno, bueno, pregunto más tarde." - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "Te puedo mantener a salvo." - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "Me puedes mantener a salvo." - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "Somos amigos, ¿o no?" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "" - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "¡Estupendo!" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "¡Bueno, vamos!" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "¿Cuánto más falta?" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "Voy a seguir mi propio camino por un tiempo." - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "Me gustaría guiar por un rato." - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "Hacete a un lado. Ahora yo soy el líder." - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "Vamos." - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "Nah, te estaba tomando el pelo." - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "Sí, estoy seguro. Chao." - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "Bieno. Algo más..." - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "Bueno, vamos." - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "Bueno, bueno." - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "Bueno, gracias. " @@ -151945,10 +153510,6 @@ msgstr "Bueno, gracias. " msgid "Let's keep moving." msgstr "Sigamos andando." -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "Necesito que vengas conmigo." - #: src/npctalk.cpp msgid "Combat commands..." msgstr "Comandos de combate..." @@ -152006,16 +153567,12 @@ msgid "Miscellaneous rules..." msgstr "Reglas varias..." #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "" - -#: src/npctalk.cpp -msgid "I'll give you some space." -msgstr "Te voy a dar un poco de espacio." +msgid "I'm going to go my own way for a while." +msgstr "Voy a seguir mi propio camino por un tiempo." #: src/npctalk.cpp -msgid "I understand..." -msgstr "Entiendo..." +msgid "Let's talk about faction camps." +msgstr "" #: src/npctalk.cpp msgid "Change your engagement rules..." @@ -152735,6 +154292,11 @@ msgid "" " - Butcher: Butcher corpses you stand on." msgstr "" +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "Desactivado" + #: src/options.cpp msgid "Pulp" msgstr "" @@ -152773,7 +154335,7 @@ msgstr "" #: src/options.cpp msgid "Trees" -msgstr "" +msgstr "Árboles" #: src/options.cpp msgid "Dangerous pickups" @@ -152857,7 +154419,7 @@ msgstr "" #: src/options.cpp msgid "Autosave" -msgstr "" +msgstr "Autoguardado" #: src/options.cpp msgid "" @@ -152946,21 +154508,17 @@ msgstr "" msgid "Always" msgstr "Siempre" -#: src/options.cpp -msgid "Ask" -msgstr "Preguntar" - #: src/options.cpp msgid "Never" msgstr "Nunca" #: src/options.cpp msgid "Sound Enabled" -msgstr "" +msgstr "Sonido Activado" #: src/options.cpp msgid "If true, music and sound are enabled." -msgstr "" +msgstr "Si esta activo, la música y los sonidos estarán activos." #: src/options.cpp msgid "Choose soundpack" @@ -152972,7 +154530,7 @@ msgstr "Elige el pack de sonidos que quieres usar." #: src/options.cpp msgid "Music volume" -msgstr "" +msgstr "Volumen de la música" #: src/options.cpp msgid "Adjust the volume of the music being played in the background." @@ -152980,7 +154538,7 @@ msgstr "Ajusta el volumen de la música que se reproduce de fondo." #: src/options.cpp msgid "Sound effect volume" -msgstr "" +msgstr "Volumen de los Efectos de Sonido" #: src/options.cpp msgid "Adjust the volume of sound effects being played by the game." @@ -153029,7 +154587,7 @@ msgstr "" #: src/options.cpp msgid "tiles/turn" -msgstr "" +msgstr "tiles/turno" #: src/options.cpp msgid "Mass units" @@ -153382,7 +154940,7 @@ msgstr "" #: src/options.cpp msgid "Enable joystick" -msgstr "" +msgstr "Activar joystick" #: src/options.cpp msgid "Enable input from joystick." @@ -153794,15 +155352,15 @@ msgstr "" #: src/options.cpp msgid "Keep" -msgstr "" +msgstr "Mantener" #: src/options.cpp msgid "Reset" -msgstr "" +msgstr "Reiniciar" #: src/options.cpp msgid "Delete" -msgstr "" +msgstr "Borrar" #: src/options.cpp msgid "Query" @@ -154627,7 +156185,7 @@ msgstr "" #, c-format msgctxt "query_yn" msgid "%s" -msgstr "" +msgstr "%s" #: src/output.cpp msgid "Type part of an item's name to filter it." @@ -154703,12 +156261,12 @@ msgstr ", y " #: src/output.h msgid ", or " -msgstr "" +msgstr ", o " #: src/output.h #, c-format msgid "$%.2f" -msgstr "" +msgstr "$%.2f" #: src/overmap.cpp msgid "invalid" @@ -154820,7 +156378,7 @@ msgstr "" #: src/overmap_ui.cpp msgid "Note:" -msgstr "" +msgstr "Nota:" #: src/overmap_ui.cpp msgid "Really delete note?" @@ -154836,7 +156394,7 @@ msgstr "" #: src/overmap_ui.cpp msgid "No results found." -msgstr "" +msgstr "No se encontraron resultados." #: src/overmap_ui.cpp msgid "Next target" @@ -154929,7 +156487,7 @@ msgstr "[ESCAPE/Q] Cancelar" #: src/overmapbuffer.cpp #, c-format msgid "%1$s in central %2$s" -msgstr "" +msgstr "%1$s en central %2$s" #. ~ First parameter is a terrain name, second parameter is a direction, and #. third parameter is a city name. @@ -155484,9 +157042,7 @@ msgstr "Energía: %d/%d" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "Arma:" -msgstr[1] "Armas:" +msgstr "Arma:" #: src/player.cpp msgid "Equipment:" @@ -156167,7 +157723,7 @@ msgstr "" #: src/player.cpp msgid "Don't touch me." -msgstr "" +msgstr "No me toques." #: src/player.cpp msgid "What's your name?" @@ -156195,7 +157751,7 @@ msgstr "" #: src/player.cpp msgid "Yeah, sure." -msgstr "" +msgstr "Si, seguro." #: src/player.cpp msgid "No way, man." @@ -156219,7 +157775,7 @@ msgstr "" #: src/player.cpp msgid "I know!" -msgstr "" +msgstr "¡Lo se!" #: src/player.cpp msgid "Why are you following me?" @@ -156239,11 +157795,11 @@ msgstr "" #: src/player.cpp msgid "Are you hurt?" -msgstr "" +msgstr "¿Estas herido?" #: src/player.cpp msgid "Your " -msgstr "" +msgstr "Tu" #: src/player.cpp #, c-format @@ -156429,7 +157985,7 @@ msgstr "" #: src/player.cpp msgid "\"No! Stop!\"" -msgstr "" +msgstr "\"¡No! ¡Para!\"" #: src/player.cpp msgid "\"Get the fuck away from me!\"" @@ -156461,7 +158017,7 @@ msgstr "" #: src/player.cpp msgid "\"What are you!?\"" -msgstr "" +msgstr "\"¿¡Qué eres!?\"" #: src/player.cpp msgid "\"I should never have trusted you!\"" @@ -156724,7 +158280,7 @@ msgstr "Tienes arcadas, pero tu estómago está vacío." #: src/player.cpp src/sounds.cpp #, c-format msgid "From the %1$s you hear %2$s" -msgstr "" +msgstr "Oyes %2$s desde el %1$s" #: src/player.cpp msgid "Your optical cloak flickers for a moment!" @@ -156948,22 +158504,6 @@ msgstr "" msgid "Stop wielding %s?" msgstr "¿Quieres dejar de empuñar el/la %s?" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "Técnica:" -msgstr[1] "Técnicas:" - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "" - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "Manos libres (no)" @@ -157021,6 +158561,11 @@ msgstr "Romper" msgid "Mend" msgstr "Arreglar" +#: src/player.cpp +#, c-format +msgid "The %s doesn't have any faults to toggle." +msgstr "" + #: src/player.cpp #, c-format msgid "The %s doesn't have any faults to mend." @@ -157796,10 +159341,6 @@ msgstr "Inteligencia" msgid "Perception" msgstr "Percepción" -#: src/player_display.cpp -msgid "Speed" -msgstr "Velocidad" - #: src/player_display.cpp msgid "Severely Malnourished" msgstr "" @@ -158006,7 +159547,7 @@ msgstr "Atrofia de habilid.:" #: src/player_display.cpp msgid "Crafting bonus:" -msgstr "" +msgstr "Bonus en fabricación:" #: src/player_display.cpp msgid "" @@ -158733,7 +160274,7 @@ msgstr "" #: src/ranged.cpp #, c-format msgid "%s: Moves to fire: %d" -msgstr "" +msgstr "%s: Movimientos para disparar: %d" #: src/ranged.cpp msgctxt "aim_confidence" @@ -158915,6 +160456,10 @@ msgstr "" msgid "kerblam!" msgstr "¡kerblam!" +#: src/recipe.cpp +msgid "none" +msgstr "" + #: src/requirements.cpp #, c-format msgid "%d tool with %s of %d or more." @@ -160245,10 +161790,23 @@ msgstr "Defectuoso %1$s" #: src/veh_interact.cpp msgid "'{' to scroll up" -msgstr "" +msgstr "'{' para desplazar arriba" #: src/veh_interact.cpp msgid "'}' to scroll down" +msgstr "'}' para desplazar abajo" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" msgstr "" #: src/veh_interact.cpp @@ -160572,7 +162130,7 @@ msgstr "Dia" #: src/veh_interact.cpp msgid "Wheel Diameter" -msgstr "" +msgstr "Diámetro de la rueda" #: src/veh_interact.cpp msgid "Wdt" @@ -161107,13 +162665,13 @@ msgstr "No hay suficiente energía para activar el/la %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" -msgstr "Apagar %s" +msgid "Turn on %s" +msgstr "Encender %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" -msgstr "Encender %s" +msgid "Turn off %s" +msgstr "Apagar %s" #: src/vehicle_use.cpp #, c-format @@ -161209,10 +162767,6 @@ msgstr "Sistema de cámaras activado" msgid "Camera system won't turn on" msgstr "El sistema de cámaras no enciende" -#: src/vehicle_use.cpp -msgid "Quit controlling electronics" -msgstr "" - #: src/vehicle_use.cpp msgid "Electronics controls" msgstr "" @@ -161650,7 +163204,7 @@ msgstr "%sC" #, c-format msgctxt "temperature in Kelvin" msgid "%sK" -msgstr "" +msgstr "%sK" #: src/weather.cpp #, c-format diff --git a/lang/po/fr.po b/lang/po/fr.po index 26ab01372207d..8c09e61f4481d 100644 --- a/lang/po/fr.po +++ b/lang/po/fr.po @@ -2,20 +2,20 @@ # Julien Maitre , 2018 # 0a12861a88fd8e19ef9d434658b16f47, 2018 # _hickop, 2018 -# Brett Dong , 2018 # masterzu, 2018 # Pierre de Sahb , 2018 -# Jazz , 2018 -# Mickaël Falck , 2018 # Argasm Voragz , 2018 +# Mickaël Falck , 2018 +# Jazz , 2018 +# Brett Dong , 2018 # msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-26 22:02+0800\n" +"POT-Creation-Date: 2018-11-16 22:24+0800\n" "PO-Revision-Date: 2018-04-26 14:47+0000\n" -"Last-Translator: Argasm Voragz , 2018\n" +"Last-Translator: Brett Dong , 2018\n" "Language-Team: French (https://www.transifex.com/cataclysm-dda-translators/teams/2217/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4915,6 +4915,7 @@ msgstr "" "qu'il faut pour qu'un blob reste sain et brillant. Enfin normalement..." #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "pierre" @@ -5986,6 +5987,16 @@ msgid_plural "bondage masks" msgstr[0] "masque de sm" msgstr[1] "masques de sm" +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "" + #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" @@ -5995,6 +6006,29 @@ msgstr "" "Un masque serré en cuir noir. Les yeux et la bouche peuvent être fermés avec" " des fermetures éclairs." +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "" + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "bondage suit" msgid_plural "bondage suits" @@ -6535,7 +6569,7 @@ msgstr[1] "" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." msgstr "" @@ -6940,6 +6974,19 @@ msgstr[1] "cache-poussières en fourrure" msgid "A thick fur full-length duster. Has many pockets for storage." msgstr "" +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather duster" msgid_plural "leather dusters" @@ -8079,6 +8126,19 @@ msgstr[1] "chapeaux en fourrure" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "Un chapeau fabriqué avec de la fourrure d'animaux. Très chaud." +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -8439,18 +8499,6 @@ msgstr "" "Un casque médiéval qui offre une excellente protection à toute la tête au " "prix d'un encombrant très important." -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "casque anti-émeute" -msgstr[1] "casques anti-émeute" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "" -"Un casque qui a une visière en plastique protégeant tout votre visage." - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" @@ -10108,6 +10156,17 @@ msgstr[1] "pantalons en fourrure" msgid "A hefty pair of fur-lined pants." msgstr "Un gros pantalon doublé de fourrure." +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather pants" msgid_plural "leather pants" @@ -10821,23 +10880,81 @@ msgid_plural "sleeping bags" msgstr[0] "sac de couchage" msgstr[1] "sacs de couchage" +#. ~ Use action menu_text for sleeping bag. +#. ~ Use action menu_text for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Roll up" +msgstr "" + +#. ~ Use action msg for sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the sleeping bag, preparing it for transport." +msgstr "" + #. ~ Description for sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag that covers you head to toe." msgstr "Un grand sac de couchage qui vous couvre des pieds à la tête." +#: lang/json/ARMOR_from_json.py +msgid "rolled sleeping bag" +msgid_plural "rolled sleeping bags" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action menu_text for rolled sleeping bag. +#. ~ Use action menu_text for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Unroll" +msgstr "" + +#. ~ Use action msg for rolled sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll the sleeping bag." +msgstr "" + +#. ~ Description for rolled sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag rolled up for transport. It has a strap to carry it " +"with." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "fur sleeping bag" msgid_plural "fur sleeping bags" msgstr[0] "sac de couchage en fourrure" msgstr[1] "sacs de couchage en fourrure" +#. ~ Use action msg for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the fur sleeping bag, preparing it for transport." +msgstr "" + #. ~ Description for fur sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag lined with fur. Who needs a tent?" msgstr "" "Un grand sac de couchage doublé de fourrure. Qui a besoin d'une tente?" +#: lang/json/ARMOR_from_json.py +msgid "rolled fur sleeping bag" +msgid_plural "rolled fur sleeping bags" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action msg for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll up the fur sleeping bag." +msgstr "" + +#. ~ Description for rolled fur sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag lined with fur, rolled for transport. It has a strap " +"to carry it with." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless duster" msgid_plural "sleeveless dusters" @@ -10864,6 +10981,19 @@ msgid "" "unencumbered. Has plenty of storage space due to its many pockets." msgstr "Un manteau ample en fourrure sans manches avec plein de poches." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" msgid_plural "sleeveless leather dusters" @@ -10920,6 +11050,19 @@ msgstr "" "Un trench-coat épais en fourrurre sans manches, parsemé de poches. Très " "pratique pour stocker des affaires." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -11667,6 +11810,19 @@ msgstr "" "Un trench-coat épais en fourrurre, parsemé de poches. Très pratique pour " "stocker des affaires." +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" msgid_plural "leather trenchcoats" @@ -15400,11 +15556,12 @@ msgstr[0] "MBC Générateur de Surcharge Ionique" msgstr[1] "MBC Générateur de Surcharge Ionique" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" @@ -15453,27 +15610,6 @@ msgstr "" "explosion a l'impact. L'utilisation à courte portée est grandement " "découragée." -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "MBC Rasoir Chirurgicaux Autonaumes" -msgstr[1] "MBC Rasoir Chirurgicaux Autonaumes" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While" -" activated, they will continously drain power to make automated precise cuts" -" but you will be unable to wield anything." -msgstr "" -"Implanté sous les doigts de l’utilisateur se trouve un système de rasoirs de" -" niveau chirurgical. Activé, ils consommeront continuellement de l'énergie " -"pour faire des coupes précises automatiques mais vous serez incapable de " -"manier quoi que ce soit." - #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" msgid_plural "Lessons for the Novice Bowhunter" @@ -18443,6 +18579,21 @@ msgstr "" "Un portfolio relié cuir qui appartenait à un styliste. Rempli de notes et de" " croquis, un tailleur compétent pourrait en apprendre beaucoup." +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon" +" Animal Rights Organization." +msgstr "" + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -27416,7 +27567,7 @@ msgstr "" #. ~ Description for bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Tastes horribly and is " +"Homemade calcium supplement made out of bone meal. Tastes horrible and is " "hard to swallow but it does its job." msgstr "" @@ -27427,9 +27578,9 @@ msgstr "" #. ~ Description for flavored bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Due to some sweetness " -"mixed in to counteract the powdery texture and the taste of ash, almost as " -"palatable as the pre-cataclysm tablets." +"Homemade calcium supplement made out of bone meal. Due to some sweetness " +"mixed in to counteract the powdery texture and the taste of ash, it's almost" +" as palatable as the pre-cataclysm tablets." msgstr "" #: lang/json/COMESTIBLE_from_json.py @@ -28035,7 +28186,7 @@ msgstr "" "Une boisson épaisse et gouteuse faite avec des protéines pures et des fruits" " nourrissants. Des vitamines et des minéraux on été ajoutés." -#: lang/json/COMESTIBLE_from_json.py src/mission_companion.cpp +#: lang/json/COMESTIBLE_from_json.py src/faction_camp.cpp msgid "seeds" msgid_plural "seeds" msgstr[0] "graine" @@ -30851,6 +31002,32 @@ msgid "" "when you look at them." msgstr "" +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "" + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "" + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -33702,7 +33879,7 @@ msgstr "" "Un long bâton en bois avec plusieurs bouts d'acier fermements attachés. Il " "en résulte une arme peu maniable et lente mais qui fait très mal." -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "planche" @@ -35576,8 +35753,7 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." +"spike." msgstr "" #: lang/json/GENERIC_from_json.py @@ -42362,17 +42538,6 @@ msgstr "" "utilisent une forme d'écholocation pour se diriger à vive allure dans un " "environnement accidenté." -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "" - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "zombie balafré" @@ -42566,7 +42731,7 @@ msgstr "" #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "" @@ -45142,10 +45307,10 @@ msgstr "" "coyotes et des araignées mutantes géantes." #: lang/json/MONSTER_from_json.py -msgid "labrador mutt" +msgid "Labrador mutt" msgstr "" -#. ~ Description for labrador mutt +#. ~ Description for Labrador mutt #: lang/json/MONSTER_from_json.py msgid "" "This once average Labrador mixed breed dog has clearly gone feral. You can " @@ -45154,10 +45319,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "labrador puppy" +msgid "Labrador puppy" msgstr "" -#. ~ Description for labrador puppy +#. ~ Description for Labrador puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Labrador puppy. Much safer to tame than adult " @@ -45171,7 +45336,7 @@ msgstr "" #. ~ Description for bulldog #: lang/json/MONSTER_from_json.py msgid "" -"The American Bulldog is a hardy, well built dog, that seems suited for " +"The American bulldog is a hardy, well built dog, that seems suited for " "surviving the apocalypse." msgstr "" @@ -45182,7 +45347,7 @@ msgstr "" #. ~ Description for bulldog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless American Bulldog puppy. Much safer to tame than " +"An adorable, defenseless American bulldog puppy. Much safer to tame than " "adult counterparts." msgstr "" @@ -45193,10 +45358,10 @@ msgstr "" #. ~ Description for pit bull mix #: lang/json/MONSTER_from_json.py msgid "" -"The oft-misunderstood Pit Bull is not actually a single breed but a label " -"for several such as American Pit Bull Terrier and American Staffordshire " -"Terrier. Average abilities and well-known for their 'lock jaw' which isn't " -"real but their incredible determination is." +"The oft-misunderstood pit bull is not actually a single breed but a label " +"for several such as the American pit bull terrier and American Staffordshire" +" terrier. Average abilities and well-known for their 'lock jaw' which isn't" +" real but their incredible determination is." msgstr "" #: lang/json/MONSTER_from_json.py @@ -45206,7 +45371,7 @@ msgstr "" #. ~ Description for pit bull puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Pit Bull puppy. Much safer to tame than adult " +"An adorable, defenseless pit bull puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -45217,7 +45382,7 @@ msgstr "" #. ~ Description for beagle #: lang/json/MONSTER_from_json.py msgid "" -"An adorable Beagle that has managed to survive the apocalypse. Being agile " +"An adorable beagle that has managed to survive the apocalypse. Being agile " "and small, they are difficult to shoot at. Generally attacks in packs." msgstr "" @@ -45228,7 +45393,7 @@ msgstr "" #. ~ Description for beagle puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Beagle puppy. Much safer to tame than adult " +"An adorable, defenseless beagle puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -45240,7 +45405,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "" "An athletic and hyperactive dog that loves to herd animals and jump, the " -"Border Collie is an agile attacker. Although they can be easy to train, " +"border collie is an agile attacker. Although they can be easy to train, " "they don't work well in packs." msgstr "" @@ -45251,7 +45416,7 @@ msgstr "" #. ~ Description for border collie puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Border Collie puppy. Much safer to tame than adult" +"An adorable, defenseless border collie puppy. Much safer to tame than adult" " counterparts." msgstr "" @@ -45262,7 +45427,7 @@ msgstr "" #. ~ Description for boxer mastiff #: lang/json/MONSTER_from_json.py msgid "" -"An ordinary breed full of affection, the Boxer Mastiff doesn't otherwise " +"An ordinary breed full of affection, the boxer mastiff doesn't otherwise " "stand out amongst other dogs with its capabilities." msgstr "" @@ -45273,15 +45438,15 @@ msgstr "" #. ~ Description for boxer puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Boxer puppy. Much safer to tame than adult " +"An adorable, defenseless boxer puppy. Much safer to tame than adult " "counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "chihuahua" +msgid "Chihuahua" msgstr "" -#. ~ Description for chihuahua +#. ~ Description for Chihuahua #: lang/json/MONSTER_from_json.py msgid "" "It's a tiny Chihuahua. How it has managed to survive is a miracle; although" @@ -45289,10 +45454,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "chihuahua puppy" +msgid "Chihuahua puppy" msgstr "" -#. ~ Description for chihuahua puppy +#. ~ Description for Chihuahua puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Chihuahua puppy. Much safer to tame than adult " @@ -45317,15 +45482,15 @@ msgstr "" #. ~ Description for dachshund puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Dachshund puppy. Much safer to tame than adult " +"An adorable, defenseless dachshund puppy. Much safer to tame than adult " "counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "german shepherd" +msgid "German shepherd" msgstr "" -#. ~ Description for german shepherd +#. ~ Description for German shepherd #: lang/json/MONSTER_from_json.py msgid "" "The original K-9 breed. An easy to train and great attack dog that will " @@ -45333,21 +45498,21 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "german shepherd puppy" +msgid "German shepherd puppy" msgstr "" -#. ~ Description for german shepherd puppy +#. ~ Description for German shepherd puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless German Shepherd puppy. Much safer to tame than " +"An adorable, defenseless German shepherd puppy. Much safer to tame than " "adult counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees" +msgid "Great Pyrenees" msgstr "" -#. ~ Description for great pyrenees +#. ~ Description for Great Pyrenees #: lang/json/MONSTER_from_json.py msgid "" "A large and powerful breed, the Great Pyrenees has a beautiful, thick white " @@ -45356,10 +45521,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees puppy" +msgid "Great Pyrenees puppy" msgstr "" -#. ~ Description for great pyrenees puppy +#. ~ Description for Great Pyrenees puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Great Pyrenees puppy. Much safer to tame than " @@ -45373,7 +45538,7 @@ msgstr "" #. ~ Description for rottweiler #: lang/json/MONSTER_from_json.py msgid "" -"Terrifying breed to face feral, as the Rottweiler breed is descended from " +"Terrifying breed to face feral, as the rottweiler breed is descended from " "Roman legion mastiffs. Robust and vicious, quite capable of mauling a human" " to death." msgstr "" @@ -45385,7 +45550,7 @@ msgstr "" #. ~ Description for rottweiler puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Rottweiler puppy. Much safer to tame than adult " +"An adorable, defenseless rottweiler puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -45396,8 +45561,8 @@ msgstr "" #. ~ Description for cattle dog #: lang/json/MONSTER_from_json.py msgid "" -"An agile and sturdy breed that is welcome on any farm, the Australian Cattle" -" Dog is adept at leaping fences and herding livestock." +"An agile and sturdy breed that is welcome on any farm, the Australian cattle" +" dog is adept at leaping fences and herding livestock." msgstr "" #: lang/json/MONSTER_from_json.py @@ -45407,7 +45572,7 @@ msgstr "" #. ~ Description for cattle dog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Australian Cattle Dog puppy. Much safer to tame " +"An adorable, defenseless Australian cattle dog puppy. Much safer to tame " "than adult counterparts." msgstr "" @@ -46536,6 +46701,17 @@ msgstr "" msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "" +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "" + #: lang/json/MONSTER_from_json.py msgid "Compsognathus" msgstr "" @@ -48424,7 +48600,7 @@ msgstr[1] "Masques de pompier de survivant XL" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from" -" heat, smoke, teargas, and shrapnel. It must be prepared before use." +" heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" #: lang/json/TOOL_ARMOR_from_json.py @@ -49351,6 +49527,42 @@ msgid "" "into an active cable charger system." msgstr "" +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "casque anti-émeute" +msgstr[1] "casques anti-émeute" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "" + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "" + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "" + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." +msgstr "" + #: lang/json/TOOL_from_json.py msgid "integrated toolset" msgid_plural "integrated toolsets" @@ -54578,7 +54790,7 @@ msgid "" " of energy." msgstr "" -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" msgstr[0] "fer à souder" @@ -56361,14 +56573,6 @@ msgid "" " to a potato." msgstr "" -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "" - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" @@ -57618,6 +57822,19 @@ msgid_plural "autonomous surgical razors" msgstr[0] "" msgstr[1] "" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While" +" activated, they will continously drain power to make automated precise cuts" +" but you will be unable to wield anything." +msgstr "" +"Implanté sous les doigts de l’utilisateur se trouve un système de rasoirs de" +" niveau chirurgical. Activé, ils consommeront continuellement de l'énergie " +"pour faire des coupes précises automatiques mais vous serez incapable de " +"manier quoi que ce soit." + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -59820,6 +60037,12 @@ msgid "" "of impaired movement." msgstr "" +#: lang/json/bionic_from_json.py lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "" +msgstr[1] "" + #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" msgstr "" @@ -59833,13 +60056,6 @@ msgid "" "already, it will boost the rate of recovery while you sleep." msgstr "" -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "" -msgstr[1] "" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "" @@ -62014,12 +62230,12 @@ msgstr "" msgid "A laser sight is targeting you!" msgstr "" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" msgstr "Fumée" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "Vous avez respiré à pleins poumons de la fumée épaisse." @@ -62901,8 +63117,8 @@ msgstr "" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" -"You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort." +"You are thoroughly relaxed and don't feel like moving. Fighting? Too much " +"effort." msgstr "" #. ~ Apply message for effect(s) 'Relaxation gas'. @@ -63248,11 +63464,12 @@ msgstr "" msgid "This damaged limb is slowly regaining its functions." msgstr "" -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" msgstr "" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "" @@ -65705,8 +65922,7 @@ msgid "" msgstr "" #: lang/json/gun_from_json.py lang/json/gun_from_json.py -#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py -#: lang/json/gunmod_from_json.py src/item.cpp +#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" msgid "pistol" msgstr "pistolet" @@ -66567,10 +66783,10 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" #: lang/json/gun_from_json.py @@ -67282,7 +67498,7 @@ msgstr[1] "" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those" " who wander the \"Earth-that-was\"." msgstr "" @@ -70597,6 +70813,36 @@ msgid "" "reduction to accuracy." msgstr "" +#: lang/json/gunmod_from_json.py +msgid "belt feed adapter" +msgid_plural "belt feed adapters" +msgstr[0] "" +msgstr[1] "" + +#: lang/json/gunmod_from_json.py +msgid "" +"A kit providing the necessary parts for permanently converting a firearm " +"from magazine to belt-feed. Guaranteed to void your warranty." +msgstr "" + +#: lang/json/gunmod_from_json.py +msgid "magazine" +msgstr "chargeur" + +#: lang/json/gunmod_from_json.py +msgid "tuned mechanism" +msgid_plural "tuned mechanisms" +msgstr[0] "" +msgstr[1] "" + +#: lang/json/gunmod_from_json.py +msgid "" +"A set of finely tuned internal components which increase the precision and " +"reliably of a firearm." +msgstr "" +"Des composants mieux ajustés pour augmenter la précision et la fiabilité " +"d'une arme à feu." + #: lang/json/gunmod_from_json.py msgid "arrow rest" msgid_plural "arrow rests" @@ -70733,7 +70979,7 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." +"firearm, contributing to both accuracy and damage." msgstr "" #: lang/json/gunmod_from_json.py @@ -70758,7 +71004,7 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." +"shooting. Increases damage output and weapon range." msgstr "" #: lang/json/gunmod_from_json.py @@ -70785,8 +71031,7 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" -"A set of ergonomic replacement furniture for a firearm improving handling " -"and accuracy." +"A set of ergonomic replacement furniture for a firearm improving handling." msgstr "" #: lang/json/gunmod_from_json.py @@ -70835,22 +71080,6 @@ msgstr "" msgid "emitter" msgstr "" -#: lang/json/gunmod_from_json.py -msgid "belt feed adapter" -msgid_plural "belt feed adapters" -msgstr[0] "" -msgstr[1] "" - -#: lang/json/gunmod_from_json.py -msgid "" -"A kit providing the necessary parts for permanently converting a firearm " -"from magazine to belt-feed. Guaranteed to void your warranty." -msgstr "" - -#: lang/json/gunmod_from_json.py -msgid "magazine" -msgstr "chargeur" - #: lang/json/gunmod_from_json.py msgid "leadworks magazine adapter" msgid_plural "leadworks magazine adapters" @@ -70871,22 +71100,9 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" -"A precision weighted trigger assembly that improves a firearm's accuracy." -msgstr "" - -#: lang/json/gunmod_from_json.py -msgid "tuned mechanism" -msgid_plural "tuned mechanisms" -msgstr[0] "" -msgstr[1] "" - -#: lang/json/gunmod_from_json.py -msgid "" -"A set of finely tuned internal components which increase the precision and " -"reliably of a firearm." +"A precision weighted trigger assembly that slightly improves a firearm's " +"accuracy." msgstr "" -"Des composants mieux ajustés pour augmenter la précision et la fiabilité " -"d'une arme à feu." #: lang/json/gunmod_from_json.py msgid "firearm waterproofing" @@ -71050,11 +71266,8 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" "An advanced unit that straps onto the side of your firearm and reduces " -"vibration, greatly reducing recoil and increasing accuracy." +"vibration, greatly reducing recoil and slightly increasing accuracy." msgstr "" -"Un élément perfectionné qui s'attache sur le côté de votre arme à feu pour " -"réduire les vibrations; cela diminue considérablement le recul et augmente " -"la précision." #: lang/json/gunmod_from_json.py msgid "LW gyroscopic stabilizer" @@ -72524,8 +72737,8 @@ msgstr "" msgid "" "Note that while several ammo types exist for a given caliber and magazine " "type, you can't mix and match these types into a single magazine. You can't " -"for example load 9x19mm JHP and 9x19 FMJ ammo into the same magazine, since " -"a magazine always requires identical rounds to be loaded in it." +"for example load 9x19mm JHP and 9x19mm FMJ ammo into the same magazine, " +"since a magazine always requires identical rounds to be loaded in it." msgstr "" #: lang/json/help_from_json.py @@ -73342,6 +73555,10 @@ msgstr "Mâcher" msgid "Clear rubble" msgstr "" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "Sniffer la coke" @@ -73370,6 +73587,11 @@ msgstr "" msgid "Make it talk" msgstr "" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "Fumée" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "" @@ -73411,6 +73633,10 @@ msgstr "Inhaler" msgid "Drill" msgstr "Percer" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "Demander" + #: lang/json/item_action_from_json.py lang/json/item_action_from_json.py #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Read" @@ -73453,6 +73679,7 @@ msgid "Squeeze" msgstr "" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" msgstr "Jouer" @@ -73490,6 +73717,11 @@ msgstr "Raser" msgid "Siphon" msgstr "Siphoner" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "Fumée" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "Écrire quelque chose" @@ -73542,6 +73774,11 @@ msgstr "" msgid "Make some noise" msgstr "Faire du bruit" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "Jouer" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "Activer/désactiver" @@ -74466,10 +74703,18 @@ msgstr "Changer de côté" msgid "Assign invlets to armor" msgstr "Attribuer raccourci d'inventaire" +#: lang/json/keybinding_from_json.py +msgid "Sort armor into natural layer order" +msgstr "" + #: lang/json/keybinding_from_json.py msgid "Equip armor from inventory" msgstr "Équiper à partir de l'inventaire" +#: lang/json/keybinding_from_json.py +msgid "Equip armor from inventory at this position" +msgstr "" + #: lang/json/keybinding_from_json.py msgid "Unequip selected armor" msgstr "Retirer la sélection" @@ -75315,6 +75560,22 @@ msgstr "Diminuer la priorité" msgid "Change sort order" msgstr "Changer l'ordre de tri" +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "feu" + #: lang/json/keybinding_from_json.py msgid "List items and monsters" msgstr "Lister objets et monstres" @@ -75497,13 +75758,11 @@ msgstr "Réinit. couleur" msgid "Load color template" msgstr "" -#: lang/json/keybinding_from_json.py src/craft_command.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/veh_interact.cpp msgid "Yes" msgstr "Oui" -#: lang/json/keybinding_from_json.py src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/options.cpp src/veh_interact.cpp msgid "No" msgstr "Non" @@ -75653,6 +75912,11 @@ msgstr "" msgid "Open Vault" msgstr "Ouvrir le Coffre" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -76348,7 +76612,8 @@ msgid "Emergency Message" msgstr "Message d'Alerte" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py lang/json/mapgen_from_json.py +#: lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "Désactiver Alimentation Externe" @@ -76409,7 +76674,6 @@ msgstr "" #. ~ Computer option #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py -#: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "" @@ -77767,7 +78031,8 @@ msgstr "Essaye une bibliothèque" msgid "Got that book for me?" msgstr "Tu m'a trouvé le bouquin ?" -#: lang/json/mission_def_from_json.py src/npctalk.cpp src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Thanks!" msgstr "Merci !" @@ -78607,15 +78872,8 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." +"prophesied events accurately before concerning the Church of Starry Wisdom." msgstr "" -"J'ai une autre tâche si vous voulez. Il y a un prisonnier dont parle le " -"prêtre. Je me demandais si vous pouviez voir ce qui lui est arrivé ou s'il a" -" laissé quelque chose dans sa cellule. Le prêtre précise que l'individu est " -"plutôt imprévisible, et le vois comme un visionnaire repentant. Je n'arrive " -"pas a tirer tout ça au clair encore... Il semblerait que cet individu ait " -"prophétisé les événements avant même que cela ne concerne l'église de la " -"sagesse étoilée." #: lang/json/mission_def_from_json.py msgid "" @@ -78972,7 +79230,7 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels" " is boosted so we can pick it up at much longer ranges. I really need you " @@ -87563,7 +87821,7 @@ msgstr "rivière" msgid "river bank" msgstr "rive" -#: lang/json/overmap_terrain_from_json.py +#: lang/json/overmap_terrain_from_json.py lang/json/snippet_from_json.py msgid "house" msgstr "maison" @@ -88638,6 +88896,14 @@ msgstr "" msgid "mass grave" msgstr "" +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "" + #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" msgstr "service-au-volant abandonné" @@ -94191,6 +94457,116 @@ msgid "" "find yourself needing those skills to survive. " msgstr "" +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "WEAPON" @@ -95359,17 +95735,21 @@ msgstr "Challenge-Laboratoire" #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" +"Vous êtes enfermé dans un labo sans aucune issue (évidente)! Trouvez un " +"moyen de vous échapper ou mourrez de faim." #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" +"Vous êtes enfermé dans un labo sans aucune issue (évidente)! Trouvez un " +"moyen de vous échapper ou mourrez de faim." #. ~ Starting location for scenario 'Challenge-Lab'. #: lang/json/scenario_from_json.py @@ -96155,6 +96535,42 @@ msgid "" "zombies." msgstr "" +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" @@ -96300,7 +96716,7 @@ msgstr "" "permettent d'utiliser les logiciels les plus complexes et vous pourriez même" " pirater leur sécurité." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "cuisine" @@ -96435,7 +96851,7 @@ msgstr "" "Votre compétence à flotter et nager dans l'eau. Cela vous évitera de vous " "noyer et rendra les combats en eaux profondes plus efficaces." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "couture" @@ -96958,6 +97374,42 @@ msgid "" "spawn with more resources." msgstr "" +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best" +" friend." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "You feel great! It doesn't seem like wounds could even slow you down for " @@ -97644,6 +98096,566 @@ msgid "" " continuing production of PE062 there." msgstr "" +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -97871,7 +98883,7 @@ msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " "a man carrying a somewhat confused horse on his shoulders. He is flanked by" " two scantily clad nurses who hold bloody chainsaws and give approving " -"thumbs up. His bulging knees and elbows are stiched and seem to be the " +"thumbs up. His bulging knees and elbows are stitched and seem to be the " "source of his ability. The caption reads: \"Brand new! Horse power at " "hand!\"" msgstr "" @@ -97879,7 +98891,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " -"a man smiling while being relentlesly punched by a boxer. He doesn't even " +"a man smiling while being relentlessly punched by a boxer. He doesn't even " "sweat as punches have no effect on him. Two scantily clad nurses give " "approving thumbs up from the background. The caption reads: \"Bouncy as " "never before! Absorb those shocks!\"" @@ -100920,6 +101932,191 @@ msgid "" " you in a sleep." msgstr "" +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no" +" environment to save now, but one can still save thyself I guess." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their components." +" This guy around here, McSomething whatever his name is, is a master at " +"this." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are" +" always better than two." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my" +" sorry ass away from the horde, with nothing more but some white powder I " +"got from that zombie. Saved me that time." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it " +"lemon?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "" + #: lang/json/snippet_from_json.py msgid " " msgstr "" @@ -101024,10 +102221,6 @@ msgstr "" msgid "piece of shit" msgstr "" -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "" - #: lang/json/snippet_from_json.py msgid "scumbag" msgstr "" @@ -101304,7 +102497,7 @@ msgstr "" msgid "never" msgstr "" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" msgstr "non" @@ -102202,7 +103395,7 @@ msgstr "Ok mains en l'air!" msgid "Hands in the air, !" msgstr "Les mains au ciel, !" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" msgstr "Bouge" @@ -105224,10 +106417,26 @@ msgstr "Dernier homme sur terre" msgid "Middle of Nowhere" msgstr "Au milieur de nul part" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "Labo Scientifique" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "Sous-sol d'un labo" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "Labo gelé" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "Labo sous-terrain gelé" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "zone de chargement de centre commercial" @@ -105324,6 +106533,14 @@ msgstr "Manoir" msgid "Gas Station" msgstr "" +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" +msgstr "" + #: lang/json/talk_topic_from_json.py msgid "That sure is a shiny badge you got there!" msgstr "C'est un beau badge que vous avez là!" @@ -105356,8 +106573,7 @@ msgstr "Quel est le problème avec vos oreilles?" msgid "Anything I can help with?" msgstr "Je peux aider pour quelque chose?" -#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Well, bye." msgstr "Eh bien, au revoir." @@ -105563,7 +106779,8 @@ msgstr "Je m'en fou." msgid "I see." msgstr "Je vois." -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Oh, okay." msgstr "Ah, d'accord." @@ -105640,6 +106857,261 @@ msgstr "Merci." msgid "Thanks, bye." msgstr "Merci, au revoir." +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "Eh bien, je pense que c'est seulement nous." + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "Au moins nous avons un abri." + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "Qu'est-ce qu'on fait maintenant?" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "" + +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "Je peux faire quelque chose pour vous?" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "Vous voulez voyager avec moi?" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's trade items." +msgstr "Échangeons des objets." + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "" +"Je ne sais pas trop, chercher des provisions et d'autres survivants " +"j'imagine." + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "On devrait peut-être commencer par barricader cet endroit." + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to" +" disappear quickly from here." +msgstr "" +"Je pense que trouver une voiture en état de rouler pourrait être très utile " +"si on doit partir d'ici rapidement." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "" +"On pourrait chercher une ferme. Elle procurent plein de nourriture et sont " +"loin des villes." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "" +"On devrait rester loin des villes, même s'il y a plein de choses à y " +"trouver." + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "Hum, ok." + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "Pas avant que j'ai des antibiotiques." + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "Tu m'as demandé récemment, demande plus tard." + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "Pourquoi je voyagerais avec toi?" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "C'est compris. Je rapporte les antibiotiques." + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "Oui ok, je demanderai plus tard." + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "Je peux assurer ta sécurité." + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "Tu peux assurer ma sécurité." + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "On est amis n'est-ce pas?" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "Je vous tue si vous n'obéissez pas." + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "Ok ça me va, je te suis!" + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "Super!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "Ok, allons-y!" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "Mouais... je ne crois pas non." + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "Tu es sûr de partir?" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "Oui j'en suis sûr. Salut." + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "Mais nan, c'est une blague." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp +msgid "What is it?" +msgstr "Qu'est-ce que c'est ?" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "C'est encore loin?" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "J'aimerais nous guider un moment." + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "Écarte toi. C'est moi qui mène maintenant." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "Allons-y." + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "D'accord, ouvre le chemin." + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "Cool. Autre chose..." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "D'accord, partons." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "Ok, ok." + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "Aucune chance, je vais être mis à l'écart!" + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "Je suis à la bourre." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "Je n'ai vraiment pas l'habitude de faire comme ça..." + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "Je vais vous faire de la place." + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "J'aimerais garder ça pour moi." + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "Je comprends..." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "Ok, voilà pour toi." + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "Merci!" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "Merci! Mais je peux en avoir plus?" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "Merci, à plus tard!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "Ok, ok, désolé." + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "Sérieux, donne moi plus de matos!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "Bon d'accord, salut." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "D'accord, c'est parti." + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "Ça me va." + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "D'accord ouvre le chemin." + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "Non, je suis bien ici." + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "Tout bien réfléchi, ça m'est égal." + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "Salut capitaine." @@ -106348,10 +107820,6 @@ msgstr "" msgid "We're abandoning this camp." msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "" @@ -106383,7 +107851,7 @@ msgstr "" msgid "Are you looking to buy anything else?" msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." msgstr "Très bien..." @@ -106511,7 +107979,7 @@ msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of" " operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " @@ -107166,10 +108634,6 @@ msgstr "" msgid "I can't imagine what I'd need your assistance with." msgstr "" -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "" @@ -107234,10 +108698,6 @@ msgstr "" msgid "Can I trade for supplies?" msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "Je peux faire quelque chose pour vous?" - #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " @@ -107514,7 +108974,7 @@ msgstr "" msgid "Not at technique at all" msgstr "" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp src/martialarts.cpp msgid "Block" msgstr "Bloquer" @@ -107672,8 +109132,6 @@ msgid "Rapid Strike" msgstr "Frappe rapide" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "" @@ -107785,11 +109243,6 @@ msgstr "" msgid "Counterattack" msgstr "Contre-attaque" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -107804,22 +109257,10 @@ msgstr " contre-attaque %s" msgid "Feint" msgstr "Feinte" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -107834,11 +109275,6 @@ msgstr "" msgid "Cross" msgstr "" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -107853,12 +109289,6 @@ msgstr "" msgid "Jab" msgstr "" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -107873,11 +109303,6 @@ msgstr "" msgid "Uppercut" msgstr "" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -107892,11 +109317,6 @@ msgstr "" msgid "Cross Counter" msgstr "" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -107925,14 +109345,6 @@ msgstr " coup de poing rapide %s" msgid "karate chop" msgstr "coup de karaté" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -107947,11 +109359,6 @@ msgstr " coup de karaté %s" msgid "throw" msgstr "lancer" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -107966,11 +109373,6 @@ msgstr "" msgid "dodge throw" msgstr "" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -107985,12 +109387,6 @@ msgstr "" msgid "feint at" msgstr "" -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -108001,11 +109397,6 @@ msgstr "Vous feintez %s" msgid " feints at %s" msgstr "" -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -108016,21 +109407,11 @@ msgstr "Vous désarmez %s" msgid " disarms %s" msgstr " désarme %s" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py lang/json/technique_from_json.py #: src/monster.cpp msgid "grab" msgstr "saisir" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "coup précis" @@ -108045,20 +109426,10 @@ msgstr "Vous frappez %s" msgid " strikes %s" msgstr " frappe %s" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -108073,11 +109444,6 @@ msgstr "" msgid "kick" msgstr "" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -108102,19 +109468,6 @@ msgstr "" msgid " flying knees %s" msgstr "" -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -108125,32 +109478,14 @@ msgstr "" msgid " jabs %s" msgstr "" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "attaque surprise" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min" -" 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -108165,11 +109500,6 @@ msgstr " attaque par surprise %s" msgid "axe-kick" msgstr "" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -108184,11 +109514,6 @@ msgstr "" msgid "side kick" msgstr "" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -108203,11 +109528,6 @@ msgstr "" msgid "sweep kick" msgstr "" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -108222,11 +109542,6 @@ msgstr "" msgid "biojutsu counter" msgstr "" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -108255,11 +109570,6 @@ msgstr "" msgid "biojutsu impale" msgstr "" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -108270,20 +109580,10 @@ msgstr "" msgid " brutally impales %s" msgstr "" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -108298,13 +109598,6 @@ msgstr "" msgid "Drunk feint" msgstr "" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -108319,11 +109612,6 @@ msgstr "" msgid "Drunk counter" msgstr "" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -108338,12 +109626,6 @@ msgstr "" msgid "Fencing lunge" msgstr "" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -108358,11 +109640,6 @@ msgstr "" msgid "Fencing thrust" msgstr "" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -108377,11 +109654,6 @@ msgstr "" msgid "Fencing stop thrust" msgstr "" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -108396,11 +109668,6 @@ msgstr "" msgid "Round strike" msgstr "" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -108429,11 +109696,6 @@ msgstr "" msgid "Snap strike" msgstr "" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -108448,11 +109710,6 @@ msgstr "" msgid "Combination strike" msgstr "" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -108467,11 +109724,6 @@ msgstr "" msgid "free strike" msgstr "" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -108486,13 +109738,6 @@ msgstr "" msgid "puño strike" msgstr "" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -108507,11 +109752,6 @@ msgstr "" msgid "knee strike" msgstr "" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -108526,11 +109766,6 @@ msgstr "" msgid "hamstring" msgstr "" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -108545,12 +109780,6 @@ msgstr "" msgid "Vicious Precision" msgstr "" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -108565,11 +109794,6 @@ msgstr "" msgid "Silat Brutality" msgstr "" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -108579,11 +109803,6 @@ msgstr "" msgid "Dirty Hit" msgstr "Sale Coup" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -108626,11 +109845,6 @@ msgstr "" msgid "Viper Bite" msgstr "" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -108645,11 +109859,6 @@ msgstr "" msgid "Viper Strike" msgstr "" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -108668,11 +109877,6 @@ msgstr "" msgid "Stinger Strike" msgstr "" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -108687,11 +109891,6 @@ msgstr "" msgid "Pincer Strike" msgstr "" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -108706,11 +109905,6 @@ msgstr "" msgid "Toad's Tongue" msgstr "" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -108789,11 +109983,6 @@ msgstr "" msgid "Tiger Takedown" msgstr "" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -108808,11 +109997,6 @@ msgstr "" msgid "Leopard Fist" msgstr "" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -108841,11 +110025,6 @@ msgstr "" msgid "Leopard Foresight" msgstr "" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -108860,11 +110039,6 @@ msgstr "" msgid "Dragon Snatch" msgstr "" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -108879,12 +110053,6 @@ msgstr "" msgid "Dragon's Vortex" msgstr "" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -108899,12 +110067,6 @@ msgstr "" msgid "Dragon Sweeper" msgstr "" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -108919,11 +110081,6 @@ msgstr "" msgid "Dragon Strike" msgstr "" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -108950,11 +110107,6 @@ msgstr "" msgid "Crane Flap" msgstr "" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "" @@ -108967,11 +110119,6 @@ msgstr "" msgid "Crane Strike" msgstr "" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -108991,20 +110138,10 @@ msgstr "" msgid "Power Hit" msgstr "Coup puissant" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "Coup par derrière" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -109033,11 +110170,6 @@ msgstr "" msgid "Flowing Water Cut" msgstr "" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -109052,11 +110184,6 @@ msgstr "" msgid "Red Leaf's Cut" msgstr "" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -109071,12 +110198,6 @@ msgstr "le coup de déséquilibre %s" msgid "Fire and Stone's Cut" msgstr "" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -109091,12 +110212,6 @@ msgstr "" msgid "In-One Timing" msgstr "" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "" -"50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -109107,11 +110222,6 @@ msgstr "" msgid " strikes %s's weaknesses" msgstr "" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "" @@ -112247,7 +113357,7 @@ msgstr "martelage précis" msgid "wood sawing" msgstr "sciage de bois" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "sciage de métal" @@ -112291,7 +113401,7 @@ msgstr "creusage" msgid "bolt turning" msgstr "boulonnage" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "boulonnage précis" @@ -113147,6 +114257,14 @@ msgstr "" msgid "Circle Split" msgstr "" +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "" + #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" msgstr "Camion" @@ -116516,6 +117634,10 @@ msgstr "" msgid "You discover a %s!" msgstr "Vous découvrez un(e) %s!" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "" + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "" @@ -116583,6 +117705,10 @@ msgstr "" msgid "You need to perform field dressing before quartering." msgstr "" +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "" + #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." msgstr "" @@ -116738,19 +117864,19 @@ msgstr "Vous avez terminé de dépecer %s." #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." msgstr "" #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." msgstr "" #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." msgstr "" @@ -116917,10 +118043,8 @@ msgid "You have lost the item you were using to start the fire." msgstr "" #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." +msgid "There is not enough sunlight to start a fire now. You stop trying." msgstr "" -"Il n'y a pas assez de soleil pour démarrer un feu maintenant. Vous arrêtez " -"d'essayer." #: src/activity_handlers.cpp #, c-format @@ -117751,7 +118875,7 @@ msgstr "charges" msgid "category" msgstr "catégorie" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp src/effect.cpp msgid "damage" msgstr "dommages" @@ -117976,6 +119100,59 @@ msgstr "Tous" msgid "Hang on a bit..." msgstr "" +#: src/armor_layers.cpp +msgid "close to your skin" +msgstr "" + +#: src/armor_layers.cpp +msgid "of normal clothing" +msgstr "" + +#: src/armor_layers.cpp +msgid "on your waist" +msgstr "" + +#: src/armor_layers.cpp +msgid "of outer clothing" +msgstr "" + +#: src/armor_layers.cpp +msgid "strapped to you" +msgstr "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgid_plural "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgstr[0] "" +msgstr[1] "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgid_plural "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgstr[0] "" +msgstr[1] "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgid_plural "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgstr[0] "" +msgstr[1] "" + #: src/armor_layers.cpp msgid "This is worn next to the skin." msgstr "Cela se porte en contact avec la peau." @@ -118146,16 +119323,18 @@ msgstr "Réattribuer raccourci de l'inventaire de l'armure?" #, c-format msgid "" "Use the arrow- or keypad keys to navigate the left list.\n" -"Press [%s] to select highlighted armor for reordering.\n" -"Use [%s] / [%s] to scroll the right list.\n" -"Press [%s] to assign special inventory letters to clothing.\n" -"Press [%s] to change the side on which item is worn.\n" -"Use [%s] to equip an armor item from the inventory.\n" -"Press [%s] to remove selected armor from oneself.\n" +"[%s] to select highlighted armor for reordering.\n" +"[%s] / [%s] to scroll the right list.\n" +"[%s] to assign special inventory letters to clothing.\n" +"[%s] to change the side on which item is worn.\n" +"[%s] to sort armor into natural layer order.\n" +"[%s] to equip a new item.\n" +"[%s] to equip a new item at the currently selected position.\n" +"[%s] to remove selected armor from oneself.\n" " \n" "[Encumbrance and Warmth] explanation:\n" "The first number is the summed encumbrance from all clothing on that bodypart.\n" -"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers.\n" +"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers or wearing items outside of other items they would normally be work beneath (e.g. a shirt over a backpack).\n" "The sum of these values is the effective encumbrance value your character has for that bodypart." msgstr "" @@ -119252,6 +120431,12 @@ msgstr "" msgid "Your plugged-in solar pack is now able to charge your system." msgstr "" +#: src/bionics.cpp +msgid "" +"You need to connect the cable to yourself and the solar pack before your " +"solar pack can charge your system." +msgstr "" + #: src/bionics.cpp msgid "" "You might plug in your solar pack to the cable charging system, if you " @@ -119618,8 +120803,8 @@ msgstr "" #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out" -" when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "" #: src/bionics_ui.cpp @@ -119730,6 +120915,55 @@ msgstr "" "Vous n'arrivez pas à activer %s!\n" "Pour lire une description de %s, pressez '!', puis '%c'." +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "Vitesse" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr "" + #: src/calendar.cpp msgid "forever" msgstr "" @@ -119762,6 +120996,13 @@ msgid_plural "%d days" msgstr[0] "" msgstr[1] "" +#: src/calendar.cpp +#, c-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "" +msgstr[1] "" + #: src/calendar.cpp #, c-format msgid "%d season" @@ -119818,6 +121059,15 @@ msgid_plural "%3d days" msgstr[0] "" msgstr[1] "" +#. ~ Right-aligned time string. should right-align with other strings with +#. this same comment +#: src/calendar.cpp +#, c-format +msgid "%3d week" +msgid_plural "%3d weeks" +msgstr[0] "" +msgstr[1] "" + #. ~ Right-aligned time string. should right-align with other strings with #. this same comment #: src/calendar.cpp @@ -120147,22 +121397,6 @@ msgstr "" msgid "Liquid from your inventory has leaked onto the ground." msgstr "" -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "" - #: src/character.cpp msgid "Left Arm" msgstr "Bras gauche" @@ -120260,9 +121494,7 @@ msgstr "" msgid "No limb would benefit from it." msgstr "" -#: src/character.cpp src/game.cpp src/game.cpp src/iexamine.cpp -#: src/inventory_ui.cpp src/npctalk_funcs.cpp src/pickup.cpp src/turret.cpp -#: src/vehicle_use.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp src/pickup.cpp msgid "Cancel" msgstr "Annuler" @@ -120345,7 +121577,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" msgstr "" @@ -120366,7 +121598,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" msgstr "" @@ -120383,7 +121615,7 @@ msgid "Destination for guns, bows and similar weapons." msgstr "" #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" msgstr "" @@ -120426,7 +121658,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" msgstr "" @@ -120475,7 +121707,7 @@ msgid "Destination for Compact Bionics Modules aka CBMs." msgstr "" #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" msgstr "" @@ -120518,7 +121750,7 @@ msgid "Destination for chemicals." msgstr "" #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" msgstr "" @@ -120545,7 +121777,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" msgstr "" @@ -120570,7 +121802,7 @@ msgid "Items inside of this zone are ignored by \"sort out loot\" zone-action." msgstr "" #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" msgstr "" @@ -121753,7 +122985,7 @@ msgstr "" msgid "Result: " msgstr "" -#: src/construction.cpp src/crafting_gui.cpp src/recipe.cpp +#: src/construction.cpp src/crafting_gui.cpp msgid "N/A" msgstr "aucun" @@ -121864,12 +123096,16 @@ msgstr "" "Après avoir barricadé la fenêtre les rideaux et barre de rideaux sont " "intacts." +#: src/construction.cpp +msgid "You gather some clay." +msgstr "" + #: src/construction.cpp msgid "You gather some sand." msgstr "" #: src/construction.cpp -msgid "You gather some clay." +msgid "You gather some materials." msgstr "" #: src/construction.cpp @@ -122339,6 +123575,16 @@ msgstr "" msgid "Use which component?" msgstr "Utiliser quel composant?" +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "" + #: src/crafting.cpp msgid "Use which tool?" msgstr "Utiliser quel outil?" @@ -122494,37 +123740,37 @@ msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Skills used: %s" -msgstr "Compétence utilisée: %s" +msgid "Primary skill used: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Required skills: %s" -msgstr "Compétences requises: %s" +msgid "Difficulty: %d" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Difficulty: %d" -msgstr "Difficulté: %d" +msgid "Your skill level: %d" +msgstr "" #: src/crafting_gui.cpp -msgid "Your skill level: N/A" -msgstr "Votre niveau de compétence: N/A" +msgid "Your skill level: N/A" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Your skill level: %d" -msgstr "Votre niveau de compétence: %d" +msgid "Other skills used: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Time to complete: %s" -msgstr "Temps de fabrication: %s" +msgid "Time to complete: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Dark craftable? %s" -msgstr "Fabricable dans le noir? %s" +msgid "Dark craftable? %s" +msgstr "" #: src/crafting_gui.cpp src/defense.cpp msgid "Easy" @@ -122550,32 +123796,80 @@ msgstr "Vous ne pouvez pas faire ça!" msgid "Nothing selected!" msgstr "Pas de sélection!" -#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp -msgid "Search:" -msgstr "Chercher :" +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "oui" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" +msgstr "" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" +"The default is to search result names. Some single-character prefixes can be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" +msgstr "" + +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" +msgstr "" + +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" msgstr "" +#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp +msgid "Search:" +msgstr "Chercher :" + #: src/crafting_gui.cpp msgid "RESULTS" msgstr "" @@ -122606,10 +123900,6 @@ msgstr "trop triste" msgid "slow %d%%" msgstr "lent %d%%" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "oui" - #: src/crafting_gui.cpp msgid "Searched" msgstr "Recherche" @@ -122754,6 +124044,11 @@ msgstr "" msgid "BUG: Behavior unnamed. (Creature::get_attitude_ui_data)" msgstr "" +#: src/debug.cpp +#, c-format +msgid "See %s for a full stack backtrace" +msgstr "" + #: src/debug.cpp msgid "An error has occurred! Written below is the error report:" msgstr "" @@ -123976,7 +125271,7 @@ msgstr "" msgid "You must construct expansions in fields." msgstr "" -#: src/editmap.cpp src/mission_companion.cpp +#: src/editmap.cpp src/faction_camp.cpp msgid "" "Engine cannot support merging vehicles from two overmaps, please remove them" " from the OM tile." @@ -125982,628 +127277,2078 @@ msgstr "Nourriture: %s" msgid "Combat Ability: %s" msgstr "" -#: src/field.cpp -msgid "blood splatter" -msgstr "éclaboussure de sang" +#: src/faction_camp.cpp +msgid " [DONE]\n" +msgstr "" -#: src/field.cpp -msgid "blood stain" -msgstr "tâche de sang" +#: src/faction_camp.cpp +msgid " left]\n" +msgstr "" -#: src/field.cpp -msgid "puddle of blood" -msgstr "flaque de sang" +#: src/faction_camp.cpp +msgid "Upgrade Camp" +msgstr "" -#: src/field.cpp -msgid "bile splatter" -msgstr "éclaboussure de bile" +#: src/faction_camp.cpp +msgid "Working to expand your camp!\n" +msgstr "" -#: src/field.cpp -msgid "bile stain" -msgstr "tâche de bile" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?" +msgstr "" -#: src/field.cpp -msgid "puddle of bile" -msgstr "flaque de bile" +#: src/faction_camp.cpp +msgid "Recover Ally from Upgrading" +msgstr "" -#: src/field.cpp -msgid "bloody meat chunks" -msgstr "morceau de viande ensanglanté" +#: src/faction_camp.cpp +msgid "Busy crafting!\n" +msgstr "" -#: src/field.cpp -msgid "heap of gore" -msgstr "amas de sang" +#: src/faction_camp.cpp +msgid " (Finish) Crafting" +msgstr "" -#: src/field.cpp -msgid "scraps of flesh" -msgstr "morceaux de chair" +#: src/faction_camp.cpp +msgid "Gather Materials" +msgstr "" -#: src/field.cpp -msgid "broken vegetation tangle" -msgstr "enchevêtrement de végétation brisée" +#: src/faction_camp.cpp +msgid "Searching for materials to upgrade the camp.\n" +msgstr "" -#: src/field.cpp -msgid "shattered branches and leaves" -msgstr "branches et feuilles brisées" +#: src/faction_camp.cpp +msgid "Recover Ally from Gathering" +msgstr "" -#: src/field.cpp -msgid "shredded leaves and twigs" -msgstr "des branches et des feuilles déchiquetées" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" +" \n" +"Effects:\n" +"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" +" \n" +"Must have enjoyability >= -6\n" +"Perishable food liquidated at penalty depending on upgrades and rot time:\n" +"> Rotten: 0%%\n" +"> Rots in < 2 days: 60%%\n" +"> Rots in < 5 days: 80%%\n" +" \n" +"Total faction food stock: %d kcal or %d day's rations" +msgstr "" -#: src/field.cpp -msgid "cobwebs" -msgstr "toiles d'araignée" +#: src/faction_camp.cpp +msgid "Distribute Food" +msgstr "" -#: src/field.cpp -msgid "thick webs" -msgstr "toiles denses" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" +" \n" +"Effects:\n" +"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" +"> Items sitting on any type of furniture will not be moved.\n" +"> Items that are not listed in one of the categories are defaulted to the tools group." +msgstr "" -#: src/field.cpp -msgid "webs" -msgstr "toile épaisse" +#: src/faction_camp.cpp +msgid "Reset Sort Points" +msgstr "" -#: src/field.cpp -msgid "puddle of slime" -msgstr "Flaque de slime" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to gather light brush and heavy sticks.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +"> heavy sticks\n" +"> withered plants\n" +"> splintered wood\n" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "slime stain" -msgstr "Tache de slime" +#: src/faction_camp.cpp +msgid "Collect Firewood" +msgstr "" -#: src/field.cpp -msgid "slime trail" -msgstr "Trainée de slime" +#: src/faction_camp.cpp +msgid "Searching for firewood.\n" +msgstr "" -#: src/field.cpp -msgid "acid splatter" -msgstr "éclaboussure d'acide" +#: src/faction_camp.cpp +msgid "Recover Firewood Gatherers" +msgstr "" -#: src/field.cpp -msgid "acid streak" -msgstr "trace d'acide" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to do low level chores and sort supplies.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" +"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "pool of acid" -msgstr "flaque d'acide" +#: src/faction_camp.cpp +msgid "Menial Labor" +msgstr "" -#: src/field.cpp -msgid "glob of sap" -msgstr "goutte de sève" +#: src/faction_camp.cpp +msgid "Performing menial labor...\n" +msgstr "" -#: src/field.cpp -msgid "pool of sap" -msgstr "flaque de sève" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?\n" +msgstr "" -#: src/field.cpp -msgid "sap splatter" -msgstr "éclaboussure de sève" +#: src/faction_camp.cpp +msgid "Recover Menial Laborer" +msgstr "" -#: src/field.cpp -msgid "sludge trail" -msgstr "traînée de vase" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours \n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thick sludge trail" -msgstr "traînée de vase épaisse" +#: src/faction_camp.cpp +msgid "Expand Base" +msgstr "" -#: src/field.cpp -msgid "thin sludge trail" -msgstr "traînée de vase fine" +#: src/faction_camp.cpp +msgid "Surveying for expansion...\n" +msgstr "" -#: src/field.cpp -msgid "fire" -msgstr "feu" +#: src/faction_camp.cpp +msgid "Recover Surveyor" +msgstr "" -#: src/field.cpp -msgid "raging fire" -msgstr "feu intense" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to a nearby forest to cut logs.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: 1 \n" +"Effects:\n" +"> 50%% of trees/trunks at the forest position will be cut down.\n" +"> 100%% of total material will be brought back.\n" +"> Repeatable with diminishing returns.\n" +" \n" +"Risk: None\n" +"Time: 6 Hour Base + Travel Time + Cutting Time\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "small fire" -msgstr "petit feu" +#: src/faction_camp.cpp +msgid "Cut Logs" +msgstr "" -#: src/field.cpp -msgid "legacy rubble" +#: src/faction_camp.cpp +msgid "Cutting logs in the woods...\n" msgstr "" -#: src/field.cpp -msgid "smoke" -msgstr "fumée" +#: src/faction_camp.cpp +msgid "Recover Log Cutter" +msgstr "" -#: src/field.cpp -msgid "thick smoke" -msgstr "nuage épais de fumée" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Good for setting up resupply or contingency points.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward.\n" +" \n" +"Risk: Medium\n" +"Time: 6 Hour Construction + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thin smoke" -msgstr "nuage ténu de fumée" +#: src/faction_camp.cpp +msgid "Setup Hide Site" +msgstr "" -#: src/field.cpp -msgid "hazy cloud" -msgstr "nuage brumeux" +#: src/faction_camp.cpp +msgid "Setting up a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "thick toxic gas" -msgstr "brume épaisse de gaz toxique" +#: src/faction_camp.cpp +msgid "Recover Hide Setup" +msgstr "" -#: src/field.cpp -msgid "toxic gas" -msgstr "gaz toxique" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Push gear out to a hide site or bring gear back from one.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 1\n" +"Effects:\n" +"> Good for returning equipment you left in the hide site shelter.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward or back.\n" +" \n" +"Risk: Medium\n" +"Time: 1 Hour Base + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "tear gas" -msgstr "gaz lacrymogène" +#: src/faction_camp.cpp +msgid "Relay Hide Site" +msgstr "" -#: src/field.cpp -msgid "thick tear gas" -msgstr "brume épaisse de gaz lacrymogène" +#: src/faction_camp.cpp +msgid "Transfering gear to a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "radioactive gas" -msgstr "gaz radioactif" +#: src/faction_camp.cpp +msgid "Recover Hide Relay" +msgstr "" -#: src/field.cpp -msgid "thick radioactive gas" -msgstr "épais nuage de gaz radioactif" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to edible plans.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Foraging Possibilities:\n" +"> wild vegetables\n" +"> fruits and nuts dependening on season\n" +"May produce less food than consumed!\n" +"Risk: Very Low\n" +"Time: 4 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "gas vent" -msgstr "conduit de gaz" +#: src/faction_camp.cpp +msgid "Forage for plants" +msgstr "" -#: src/field.cpp -msgid "electric cloud" -msgstr "nuage électrique" +#: src/faction_camp.cpp +msgid "Foraging for edible plants.\n" +msgstr "" -#: src/field.cpp -msgid "electric crackle" -msgstr "rayon électrique" +#: src/faction_camp.cpp +msgid "Recover Foragers" +msgstr "" -#: src/field.cpp -msgid "sparks" -msgstr "étincelles" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to set traps for small game.\n" +" \n" +"Skill used: trapping\n" +"Difficulty: N/A \n" +"Trappinng Possibilities:\n" +"> small and tiny animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Low\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/2\n" +msgstr "" -#: src/field.cpp -msgid "odd ripple" -msgstr "ondulation étrange" +#: src/faction_camp.cpp +msgid "Trap Small Game" +msgstr "" -#: src/field.cpp -msgid "swirling air" -msgstr "air tourbillonant" +#: src/faction_camp.cpp +msgid "Trapping Small Game.\n" +msgstr "" -#: src/field.cpp -msgid "tear in reality" -msgstr "Déchirure dans la réalité" +#: src/faction_camp.cpp +msgid "Recover Trappers" +msgstr "" -#: src/field.cpp -msgid "faint plasma" -msgstr "Plasma faible" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to hunt large animals.\n" +" \n" +"Skill used: marksmanship\n" +"Difficulty: N/A \n" +"Hunting Possibilities:\n" +"> small, medium, or large animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Medium\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "glaring plasma" +#: src/faction_camp.cpp +msgid "Hunt Large Animals" msgstr "" -#: src/field.cpp -msgid "glowing plasma" -msgstr "Plasma Rayonnant" +#: src/faction_camp.cpp +msgid "Hunting large animals.\n" +msgstr "" -#: src/field.cpp -msgid "beam of light" -msgstr "faisceau de lumière" +#: src/faction_camp.cpp +msgid "Recover Hunter" +msgstr "" -#: src/field.cpp -msgid "faint glimmer" -msgstr "faible lueur" +#: src/faction_camp.cpp +msgid "Construct Map Fortifications" +msgstr "" -#: src/field.cpp -msgid "intense beam of light" -msgstr "faisceau de lumière intense" +#: src/faction_camp.cpp +msgid "Construct Spiked Trench" +msgstr "" -#: src/field.cpp -msgid "spotlight" +#: src/faction_camp.cpp +msgid "Constructing fortifications...\n" msgstr "" -#: src/field.cpp -msgid "dazzling" +#: src/faction_camp.cpp +msgid "Finish Map Fortifications" msgstr "" -#: src/field.cpp -msgid "plant sap splatter" +#: src/faction_camp.cpp +msgid "Recruit Companions" msgstr "" -#: src/field.cpp -msgid "plant sap stain" +#: src/faction_camp.cpp +msgid "Searching for recruits.\n" msgstr "" -#: src/field.cpp -msgid "puddle of resin" +#: src/faction_camp.cpp +msgid "Recover Recruiter" msgstr "" -#: src/field.cpp -msgid "bug blood splatter" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Select checkpoints to customize path.\n" +"> Reveals terrain around the path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: High\n" +"Time: Travel\n" +"Positions: %d/3\n" msgstr "" -#: src/field.cpp -msgid "bug blood stain" +#: src/faction_camp.cpp +msgid "Scout Mission" msgstr "" -#: src/field.cpp -msgid "puddle of bug blood" +#: src/faction_camp.cpp +msgid "Scouting the region.\n" msgstr "" -#: src/field.cpp -msgid "hemolymph splatter" +#: src/faction_camp.cpp +msgid "Recover Scout" msgstr "" -#: src/field.cpp -msgid "hemolymph stain" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 4\n" +"Effects:\n" +"> Pulls creatures encountered into combat instead of fleeing.\n" +"> Select checkpoints to customize path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: Very High\n" +"Time: Travel\n" +"Positions: %d/3\n" msgstr "" -#: src/field.cpp -msgid "puddle of hemolymph" +#: src/faction_camp.cpp +msgid "Combat Patrol" msgstr "" -#: src/field.cpp -msgid "shards of chitin" +#: src/faction_camp.cpp +msgid "Patrolling the region.\n" msgstr "" -#: src/field.cpp -msgid "shattered bug leg" +#: src/faction_camp.cpp +msgid "Recover Combat Patrol" msgstr "" -#: src/field.cpp -msgid "torn insect organs" +#: src/faction_camp.cpp +msgid " Expansion Upgrade" msgstr "" -#: src/field.cpp -msgid "gooey scraps" +#: src/faction_camp.cpp +msgid "Working to upgrade your expansions!\n" msgstr "" -#: src/field.cpp -msgid "heap of squishy gore" +#: src/faction_camp.cpp +msgid " Expansion" msgstr "" -#: src/field.cpp -msgid "icky mess" +#: src/faction_camp.cpp +msgid "Recover Ally, " msgstr "" -#: src/field.cpp -msgid "swirl of tobacco smoke" -msgstr "tourbillon de fumée de tabac" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Have a companion attempt to completely dissemble a vehicle into components.\n" +" \n" +"Skill used: mechanics\n" +"Difficulty: 2 \n" +"Effects:\n" +"> Removed parts placed on the furniture in the garage.\n" +"> Skill plays a huge role to determine what is salvaged.\n" +" \n" +"Risk: None\n" +"Time: Skill Based \n" +msgstr "" -#: src/field.cpp -msgid "thick tobacco smoke" +#: src/faction_camp.cpp +msgid " Chop Shop" msgstr "" -#: src/field.cpp -msgid "tobacco smoke" +#: src/faction_camp.cpp +msgid "Working at the chop shop...\n" msgstr "" -#: src/field.cpp -msgid "pot smoke" +#: src/faction_camp.cpp +msgid " (Finish) Chop Shop" msgstr "" -#: src/field.cpp -msgid "swirl of pot smoke" -msgstr "tourbillon de fumée d'herbe" +#: src/faction_camp.cpp +msgid "Working in your kitchen!\n" +msgstr "" -#: src/field.cpp -msgid "thick pot smoke" +#: src/faction_camp.cpp +msgid " (Finish) Cooking" msgstr "" -#: src/field.cpp -msgid "crack smoke" +#: src/faction_camp.cpp +msgid "Working in your blacksmith shop!\n" msgstr "" -#: src/field.cpp -msgid "swirl of crack smoke" -msgstr "tourbillon de fumée de crack" +#: src/faction_camp.cpp +msgid " (Finish) Smithing" +msgstr "" -#: src/field.cpp -msgid "thick crack smoke" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plow any spaces that have reverted to dirt or grass.\n" +" \n" msgstr "" -#: src/field.cpp -msgid "meth smoke" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Restores only the plots created in the last expansion upgrade.\n" +"> Does not damage existing crops.\n" +" \n" +"Risk: None\n" +"Time: 5 Min / Plot \n" +"Positions: 0/1 \n" msgstr "" -#: src/field.cpp -msgid "swirl of meth smoke" -msgstr "tourbillon de fumée de meth" +#: src/faction_camp.cpp +msgid " Plow Fields" +msgstr "" -#: src/field.cpp -msgid "thick meth smoke" +#: src/faction_camp.cpp +msgid "Working to plow your fields!\n" msgstr "" -#: src/field.cpp -msgid "angry swarm of bees" -msgstr "essaim d'abeilles en colère" +#: src/faction_camp.cpp +msgid " (Finish) Plow Fields" +msgstr "" -#: src/field.cpp -msgid "some bees" -msgstr "quelques abeilles" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plant designated seeds in the spaces that have already been tilled.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "swarm of bees" -msgstr "essaim d'abeilles" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose which seed type or all of your seeds.\n" +"> Stops when out of seeds or planting locations.\n" +"> Will plant in ALL dirt mounds in the expansion.\n" +" \n" +"Risk: None\n" +"Time: 1 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "airborne incendiary" +#: src/faction_camp.cpp +msgid " Plant Fields" msgstr "" -#: src/field.cpp -msgid "relaxation gas" -msgstr "gaz relaxant" +#: src/faction_camp.cpp +msgid "Working to plant your fields!\n" +msgstr "" -#: src/field.cpp -msgid "sedative gas" -msgstr "gaz sédatif" +#: src/faction_camp.cpp +msgid " (Finish) Plant Fields" +msgstr "" -#: src/field.cpp -msgid "fungal haze" -msgstr "brume fongique" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Harvest any plants that are ripe and bring the produce back.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "thick fungal haze" -msgstr "brume fongique épaisse" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Will dump all harvesting products onto your location.\n" +" \n" +"Risk: None\n" +"Time: 3 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "fungicidal gas" +#: src/faction_camp.cpp +msgid " Harvest Fields" msgstr "" -#: src/field.cpp -msgid "thick fungicidal gas" +#: src/faction_camp.cpp +msgid "Working to harvest your fields!\n" msgstr "" -#: src/field.cpp -msgid "smoke vent" +#: src/faction_camp.cpp +msgid " (Finish) Harvest Fields" msgstr "" -#: src/field.cpp -msgid "Whew... smells like skunk!" -msgstr "Wow... ça sent le putois!" +#: src/faction_camp.cpp +msgid "Working on your farm!\n" +msgstr "" -#: src/field.cpp -msgid "Man, that smells like some good shit!" +#: src/faction_camp.cpp +msgid "departs to search for materials..." msgstr "" -#: src/field.cpp -msgid "I don't know... should you really be smoking that stuff?" -msgstr "Je ne sais pas... vous devez vraiment fumer ce truc?" +#: src/faction_camp.cpp +msgid "There are too many companions working on this mission!" +msgstr "" -#: src/field.cpp -msgid "Ew, smells like burning rubber!" -msgstr "Erk, ça sent comme la gomme brûlée!" +#: src/faction_camp.cpp +msgid "departs to search for firewood..." +msgstr "" -#: src/field.cpp -msgid "Ugh, that smells rancid!" -msgstr "Berk, ça sent le rance!" +#: src/faction_camp.cpp +msgid "You don't have enough food stored to feed your companion." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp +msgid "departs to dig ditches and scrub toilets..." +msgstr "" + +#: src/faction_camp.cpp #, c-format -msgid "A %s hits you!" -msgstr "Un %s vous frappe !" +msgid "%s returns from working in the woods..." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits %2$s!" -msgstr "Un %1$s touche %2$s!" +msgid "%s returns from working on the hide site..." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits the %2$s!" -msgstr "Un %1$s touche le %2$s!" +msgid "%s returns from shuttling gear between the hide site..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your body!" -msgstr "L'acide brûle votre corps!" +#: src/faction_camp.cpp +msgid "departs to search for edible plants..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s body!" -msgstr "L'acide brûle le corps de !" +#: src/faction_camp.cpp +msgid "departs to set traps for small animals..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your legs and feet!" -msgstr "L'acide brûle vos jambes et pieds!" +#: src/faction_camp.cpp +msgid "departs to hunt for meat..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s legs and feet!" -msgstr "L'acide brûle les jambes et pieds de !" +#: src/faction_camp.cpp +msgid "departs to search for recruits..." +msgstr "" -#: src/field.cpp -msgid "You're lying in a pool of acid" +#: src/faction_camp.cpp +msgid "departs to survey land..." msgstr "" -#: src/field.cpp -msgid "You're standing in a pool of acid" -msgstr "Vous vous tenez dans une mare d'acide" +#: src/faction_camp.cpp +msgid "You have already selected a surveyor!" +msgstr "" -#: src/field.cpp -msgid "The sap sticks to you!" -msgstr "La sève se colle à vous!" +#: src/faction_camp.cpp +msgid "begins to upgrade the expansion..." +msgstr "" -#: src/field.cpp -msgid "The sap sticks to !" -msgstr "La sève se colle à !" +#: src/faction_camp.cpp +msgid "You already have a worker upgrading that expansion!" +msgstr "" -#: src/field.cpp -msgid "The sludge is thick and sticky. You struggle to pull free." -msgstr "La boue est épaisse et collante. Vous luttez pour vous en libérez." +#: src/faction_camp.cpp +msgid "You don't have the materials for the upgrade." +msgstr "" -#: src/field.cpp -msgid "You burn your legs and feet!" -msgstr "Vous vous brûlez vos jambes et pieds!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your farm with something..." +msgstr "" -#: src/field.cpp -msgid "You're burning up!" -msgstr "Vous êtes en feu!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns to you with something..." +msgstr "" -#: src/field.cpp -msgid "You're set ablaze!" -msgstr "Vous vous embrasez!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your kitchen with something..." +msgstr "" -#: src/field.cpp -msgid "Your whole body is burning!" -msgstr "Votre corps tout entier est en feu!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your blacksmith shop with something..." +msgstr "" -#: src/field.cpp -msgid " burns their legs and feet!" -msgstr " brûle ses jambes et pieds!" +#: src/faction_camp.cpp +msgid "begins plowing the field..." +msgstr "" -#: src/field.cpp -msgid " is burning up!" -msgstr " est en feu!" +#: src/faction_camp.cpp +msgid "You already have someone plowing that field." +msgstr "" -#: src/field.cpp -msgid " is set ablaze!" -msgstr " s'embrase!" +#: src/faction_camp.cpp +msgid "You have no additional seeds to give your companions..." +msgstr "" -#: src/field.cpp -msgid "s whole body is burning!" -msgstr "Le corps tout entier de est en feu!" +#: src/faction_camp.cpp +msgid "begins planting the field..." +msgstr "" -#: src/field.cpp -msgid "You're standing in a fire!" -msgstr "Vous vous tenez dans un feu!" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Which seeds do you wish to have planted?" +msgstr "" -#: src/field.cpp -msgid "You're waist-deep in a fire!" +#: src/faction_camp.cpp +msgid "You already have someone planting that field." msgstr "" -#: src/field.cpp -msgid "You're surrounded by raging fire!" +#: src/faction_camp.cpp +msgid "begins to harvest the field..." msgstr "" -#: src/field.cpp -msgid "You're lying in fire!" +#: src/faction_camp.cpp +msgid "You already have someone harvesting that field." msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp +msgid "You already have someone working in that garage." +msgstr "" + +#: src/faction_camp.cpp #, c-format -msgid "You feel sick from inhaling the %s" -msgstr "Vous êtes malade d'avoir respirer %s" +msgid "%s returns from your garage..." +msgstr "" -#: src/field.cpp -msgid "This radioactive gas burns!" -msgstr "Ce gaz radioactif brûle!" +#: src/faction_camp.cpp +msgid "You already have a companion upgrading the camp." +msgstr "" -#: src/field.cpp -msgid "You're torched by flames!" -msgstr "Vous êtes une torche vivante!" +#: src/faction_camp.cpp +msgid "begins to upgrade the camp..." +msgstr "" -#: src/field.cpp -msgid " is torched by flames!" -msgstr " est une torche vivante!" +#: src/faction_camp.cpp +msgid "Forests and swamps are the only valid cutting locations." +msgstr "" -#: src/field.cpp -msgid "These flames do not burn you." -msgstr "Ces flammes ne vous brûlent pas." +#: src/faction_camp.cpp +#, c-format +msgid "" +"Trip Estimate:\n" +"%s" +msgstr "" -#: src/field.cpp -msgid "Those flames do not burn ." -msgstr "Ces flammes ne brûlent pas ." +#: src/faction_camp.cpp +msgid "departs to cut logs..." +msgstr "" -#: src/field.cpp -msgid "You're painfully electrocuted!" +#: src/faction_camp.cpp +msgid "Forests, swamps, and fields are valid hide site locations." msgstr "" -#: src/field.cpp -msgid " is shocked!" +#: src/faction_camp.cpp +msgid "departs to build a hide site..." msgstr "" -#: src/field.cpp -msgid "You're shocked!" +#: src/faction_camp.cpp +msgid "You need equipment to setup a hide site..." msgstr "" -#: src/field.cpp -msgid "The electric cloud doesn't affect you." -msgstr "Le nuage électrique ne vous fait rien." +#: src/faction_camp.cpp +msgid "You must select an existing hide site." +msgstr "" -#: src/field.cpp -msgid "The electric cloud doesn't seem to affect ." -msgstr "Le nuage électrique ne semble rien faire à ." +#: src/faction_camp.cpp +msgid "Bring gear back?" +msgstr "" -#: src/field.cpp -msgid "You're violently teleported!" -msgstr "Vous êtes brutalement téléporté !" +#: src/faction_camp.cpp +msgid "departs for the hide site..." +msgstr "" -#: src/field.cpp -msgid "The bees sting you!" -msgstr "Les abeilles vous piquent!" +#: src/faction_camp.cpp +msgid "You need equipment to transport between the hide site..." +msgstr "" -#: src/field.cpp -msgid "The bees sting you several times!" -msgstr "Les abeilles vous piquent à plusieurs reprises!" +#: src/faction_camp.cpp +msgid "" +"Select a start and end point. Line must be straight. Fields, forests, and " +"swamps are valid fortification locations. In addition to existing " +"fortification constructions." +msgstr "" -#: src/field.cpp -msgid "The bees sting you many times!" -msgstr "Les abeilles vous piquent de nombreuses fois!" +#: src/faction_camp.cpp +msgid "Select an end point." +msgstr "" -#: src/field.cpp -msgid "The bees sting you all over your body!" -msgstr "Les abeilles vous piquent sur tout le corps!" +#: src/faction_camp.cpp +msgid "Invalid terrain in construction path." +msgstr "" -#: src/field.cpp -msgid "The incendiary burns you!" +#: src/faction_camp.cpp +msgid "You don't have the material to build the fortification." msgstr "" -#: src/field.cpp -msgid "The incendiary burns !" +#: src/faction_camp.cpp +msgid "begins constructing fortifications..." msgstr "" -#: src/field.cpp -msgid "The incendiary melts into your skin!" +#: src/faction_camp.cpp +msgid "" +"Select checkpoints until you reach maximum range or select the last point " +"again to end." msgstr "" -#: src/field.cpp -msgid "The incendiary melts into s skin!" +#: src/faction_camp.cpp +msgid "departs on patrol..." msgstr "" -#: src/field.cpp -#, c-format -msgid "The %s burns your skin." +#: src/faction_camp.cpp +msgid "You don't have the materials to craft that" msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "The %s makes you feel sick." +msgid "Batch crafting %s [MAX: %d]: " msgstr "" -#: src/field.cpp src/trapfunc.cpp -#, c-format -msgid "The %1$s teleports into a %2$s, killing them both!" +#: src/faction_camp.cpp +msgid "Your batch is too large!" msgstr "" -#: src/fungal_effects.cpp src/iuse.cpp -#, c-format -msgid "The %s is covered in tiny spores!" -msgstr "Le/La %s est recouvert(e) de petites spores." +#: src/faction_camp.cpp +msgid "You already have someone working in that expansion." +msgstr "" -#: src/fungal_effects.cpp -msgid "The spores land on you, but you quickly swat them off with your tail!" +#: src/faction_camp.cpp +msgid "begins to work..." msgstr "" -"Les spores se déposent sur vous, mais vous les balayez aussitôt avec votre " -"queue!" -#: src/fungal_effects.cpp -msgid "You're covered in tiny spores!" -msgstr "Vous êtes couvert de minuscule spores!" +#: src/faction_camp.cpp +#, c-format +msgid "" +" Chopping this vehicle:\n" +"%s" +msgstr "" -#: src/fungal_effects.cpp -msgid "The young tree blooms forth into a fungal blossom!" +#: src/faction_camp.cpp +msgid "begins working in the garage..." msgstr "" -#: src/fungal_effects.cpp -msgid "The tree blooms forth into a fungal blossom!" +#: src/faction_camp.cpp +msgid "Your companion seems disappointed that your pantry is empty..." msgstr "" -#: src/game.cpp src/options.cpp +#: src/faction_camp.cpp #, c-format -msgid "Loading the tileset failed: %s" -msgstr "Échec du chargement de la collection de tuiles: %s" +msgid "" +"%s returns from upgrading the camp having earned a bit of experience..." +msgstr "" -#: src/game.cpp -msgid "Loading core data" -msgstr "Chargement des données de base" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from doing the dirty work to keep the camp running..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Sorting points have changed, forcing reset." +msgstr "" + +#: src/faction_camp.cpp +msgid "gathering materials" +msgstr "" + +#: src/faction_camp.cpp +msgid "foraging for edible plants" +msgstr "" + +#: src/faction_camp.cpp +msgid "trapping small animals" +msgstr "" + +#: src/faction_camp.cpp +msgid "hunting for meat" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from %s carrying supplies and has a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from constructing fortifications..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from searching for recruits with a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s encountered %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't find anyone to recruit..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s convinced %s to hear a recruitment offer from you..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested in anything %s had to offer..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"NPC Overview:\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Name: %20s\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Strength: %10d\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Dexterity: %10d\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Intelligence: %10d\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Perception: %10d\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Top 3 Skills:\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Asking for:\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"> Food: %10d days\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Faction Food:%9d days\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Recruit Chance: %10d%%\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an option:" +msgstr "" + +#: src/faction_camp.cpp +msgid "Increase Food" +msgstr "" + +#: src/faction_camp.cpp +msgid "Decrease Food" +msgstr "" + +#: src/faction_camp.cpp +msgid "Make Offer" +msgstr "" + +#: src/faction_camp.cpp +msgid "Not Interested" +msgstr "" + +#: src/faction_camp.cpp +msgid "You decide you aren't interested..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s has been convinced to join!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Your companion hit a river and didn't know how to swim..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Your companion hit a river and didn't know how to swim well enough to " +"cross..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't return from patrol..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from patrol..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an expansion:" +msgstr "" + +#: src/faction_camp.cpp +msgid "You choose to wait..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from surveying for the expansion." +msgstr "" + +#: src/faction_camp.cpp +msgid "No seeds to plant!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from working your fields..." +msgstr "" + +#: src/faction_camp.cpp +msgid "MAIN" +msgstr "" + +#: src/faction_camp.cpp +msgid " [N] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [NE] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [E] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [SE] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [S] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [SW] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [W] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [NW] " +msgstr "" + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Base Missions" +msgstr "" + +#: src/faction_camp.cpp +msgid "Farm Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Garage Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Kitchen Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Blacksmith Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Empty Expansion" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Select a location between %d and %d tiles away." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"You must select a target between %d and %d range from the base. Range: %d" +msgstr "" + +#: src/faction_camp.cpp +msgid "You must be able to see the target that you select." +msgstr "" + +#: src/faction_camp.cpp +msgid "Do you want to bounce off this location to extend range?" +msgstr "" + +#: src/faction_camp.cpp +msgid "food for you" +msgstr "" + +#: src/faction_camp.cpp +msgid "food for companions" +msgstr "" + +#: src/faction_camp.cpp +msgid "weapons" +msgstr "" + +#: src/faction_camp.cpp +msgid "clothing" +msgstr "" + +#: src/faction_camp.cpp +msgid "bionics" +msgstr "" + +#: src/faction_camp.cpp +msgid "all kinds of tools" +msgstr "" + +#: src/faction_camp.cpp +msgid "wood of various sorts" +msgstr "" + +#: src/faction_camp.cpp +msgid "trash and rotting food" +msgstr "" + +#: src/faction_camp.cpp +msgid "books" +msgstr "" + +#: src/faction_camp.cpp +msgid "medication" +msgstr "" + +#: src/faction_camp.cpp +msgid "ammo" +msgstr "munition" + +#: src/faction_camp.cpp +#, c-format +msgid "Reset point: %s?" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +" Items New Point Old Point\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +" Save Points?" +msgstr "" + +#: src/faction_camp.cpp +msgid "Revert to default points?" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15.2f (km)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">One Way: %15d (trips)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15.2f (km)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15d (m)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15d (m)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Travel: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Working: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Total: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Food: %15d (kcal)\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"%s\n" +" \n" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s \n" +"Risk: None\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" +" \n" +"Skill used: speech\n" +"Difficulty: 2 \n" +"Base Score: +%3d%%\n" +"> Expansion Bonus: +%3d%%\n" +"> Faction Bonus: +%3d%%\n" +"> Special Bonus: +%3d%%\n" +" \n" +"Total: Skill +%3d%%\n" +" \n" +"Risk: High\n" +"Time: 4 Days\n" +"Positions: %d/1\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Notes: \n" +"Send a companion to gather materials for the next camp upgrade.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Harvestable: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Ready for Planting: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Needs Plowing: " +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Name: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "---- Engines ----\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Engine: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Status: %24d%%\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Fuel: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "---- Fuel Storage & Battery ----\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Estimated Chop Time: 5 Days\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "No items are located at the drop point..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "You distribute %d kcal worth of food to your companions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "While %s, a silent specter approaches %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s notices the antlered horror and slips away before it gets too close." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Another survivor approaches %s asking for directions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Fearful that he may be an agent of some hostile faction, %s doesn't mention " +"the camp." +msgstr "" + +#: src/faction_camp.cpp +msgid "The two part on friendly terms and the survivor isn't seen again." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't detect the ambush until it was too late!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The bull moose charged %s from the tree line..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Despite being caught off guard %s was able to run away until the moose gave " +"up pursuit." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The jabberwock grabbed %s by the arm from behind and began to scream." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Terrified, %s spun around and delivered a massive kick to the creature's " +"torso..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Collapsing into a pile of gore, %s walked away unscathed..." +msgstr "" + +#: src/faction_camp.cpp +msgid "(Sounds like bullshit, you wonder what really happened.)" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s turned to find the hideous black eyes of a giant wasp staring back from " +"only a few feet away..." +msgstr "" + +#: src/faction_camp.cpp +msgid "The screams were terrifying, there was nothing anyone could do." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Pieces of %s were found strewn across a few bushes." +msgstr "" + +#: src/faction_camp.cpp +msgid "(You wonder if your companions are fit to work on their own...)" +msgstr "" + +#: src/field.cpp +msgid "blood splatter" +msgstr "éclaboussure de sang" + +#: src/field.cpp +msgid "blood stain" +msgstr "tâche de sang" + +#: src/field.cpp +msgid "puddle of blood" +msgstr "flaque de sang" + +#: src/field.cpp +msgid "bile splatter" +msgstr "éclaboussure de bile" + +#: src/field.cpp +msgid "bile stain" +msgstr "tâche de bile" + +#: src/field.cpp +msgid "puddle of bile" +msgstr "flaque de bile" + +#: src/field.cpp +msgid "bloody meat chunks" +msgstr "morceau de viande ensanglanté" + +#: src/field.cpp +msgid "heap of gore" +msgstr "amas de sang" + +#: src/field.cpp +msgid "scraps of flesh" +msgstr "morceaux de chair" + +#: src/field.cpp +msgid "broken vegetation tangle" +msgstr "enchevêtrement de végétation brisée" + +#: src/field.cpp +msgid "shattered branches and leaves" +msgstr "branches et feuilles brisées" + +#: src/field.cpp +msgid "shredded leaves and twigs" +msgstr "des branches et des feuilles déchiquetées" + +#: src/field.cpp +msgid "cobwebs" +msgstr "toiles d'araignée" + +#: src/field.cpp +msgid "thick webs" +msgstr "toiles denses" + +#: src/field.cpp +msgid "webs" +msgstr "toile épaisse" + +#: src/field.cpp +msgid "puddle of slime" +msgstr "Flaque de slime" + +#: src/field.cpp +msgid "slime stain" +msgstr "Tache de slime" + +#: src/field.cpp +msgid "slime trail" +msgstr "Trainée de slime" + +#: src/field.cpp +msgid "acid splatter" +msgstr "éclaboussure d'acide" + +#: src/field.cpp +msgid "acid streak" +msgstr "trace d'acide" + +#: src/field.cpp +msgid "pool of acid" +msgstr "flaque d'acide" + +#: src/field.cpp +msgid "glob of sap" +msgstr "goutte de sève" + +#: src/field.cpp +msgid "pool of sap" +msgstr "flaque de sève" + +#: src/field.cpp +msgid "sap splatter" +msgstr "éclaboussure de sève" + +#: src/field.cpp +msgid "sludge trail" +msgstr "traînée de vase" + +#: src/field.cpp +msgid "thick sludge trail" +msgstr "traînée de vase épaisse" + +#: src/field.cpp +msgid "thin sludge trail" +msgstr "traînée de vase fine" + +#: src/field.cpp +msgid "raging fire" +msgstr "feu intense" + +#: src/field.cpp +msgid "small fire" +msgstr "petit feu" + +#: src/field.cpp +msgid "legacy rubble" +msgstr "" + +#: src/field.cpp +msgid "smoke" +msgstr "fumée" + +#: src/field.cpp +msgid "thick smoke" +msgstr "nuage épais de fumée" + +#: src/field.cpp +msgid "thin smoke" +msgstr "nuage ténu de fumée" + +#: src/field.cpp +msgid "hazy cloud" +msgstr "nuage brumeux" + +#: src/field.cpp +msgid "thick toxic gas" +msgstr "brume épaisse de gaz toxique" + +#: src/field.cpp +msgid "toxic gas" +msgstr "gaz toxique" + +#: src/field.cpp +msgid "tear gas" +msgstr "gaz lacrymogène" + +#: src/field.cpp +msgid "thick tear gas" +msgstr "brume épaisse de gaz lacrymogène" + +#: src/field.cpp +msgid "radioactive gas" +msgstr "gaz radioactif" + +#: src/field.cpp +msgid "thick radioactive gas" +msgstr "épais nuage de gaz radioactif" + +#: src/field.cpp +msgid "gas vent" +msgstr "conduit de gaz" + +#: src/field.cpp +msgid "electric cloud" +msgstr "nuage électrique" + +#: src/field.cpp +msgid "electric crackle" +msgstr "rayon électrique" + +#: src/field.cpp +msgid "sparks" +msgstr "étincelles" + +#: src/field.cpp +msgid "odd ripple" +msgstr "ondulation étrange" + +#: src/field.cpp +msgid "swirling air" +msgstr "air tourbillonant" + +#: src/field.cpp +msgid "tear in reality" +msgstr "Déchirure dans la réalité" + +#: src/field.cpp +msgid "faint plasma" +msgstr "Plasma faible" + +#: src/field.cpp +msgid "glaring plasma" +msgstr "" + +#: src/field.cpp +msgid "glowing plasma" +msgstr "Plasma Rayonnant" + +#: src/field.cpp +msgid "beam of light" +msgstr "faisceau de lumière" + +#: src/field.cpp +msgid "faint glimmer" +msgstr "faible lueur" + +#: src/field.cpp +msgid "intense beam of light" +msgstr "faisceau de lumière intense" + +#: src/field.cpp +msgid "spotlight" +msgstr "" + +#: src/field.cpp +msgid "dazzling" +msgstr "" + +#: src/field.cpp +msgid "plant sap splatter" +msgstr "" + +#: src/field.cpp +msgid "plant sap stain" +msgstr "" + +#: src/field.cpp +msgid "puddle of resin" +msgstr "" + +#: src/field.cpp +msgid "bug blood splatter" +msgstr "" + +#: src/field.cpp +msgid "bug blood stain" +msgstr "" + +#: src/field.cpp +msgid "puddle of bug blood" +msgstr "" + +#: src/field.cpp +msgid "hemolymph splatter" +msgstr "" + +#: src/field.cpp +msgid "hemolymph stain" +msgstr "" + +#: src/field.cpp +msgid "puddle of hemolymph" +msgstr "" + +#: src/field.cpp +msgid "shards of chitin" +msgstr "" + +#: src/field.cpp +msgid "shattered bug leg" +msgstr "" + +#: src/field.cpp +msgid "torn insect organs" +msgstr "" + +#: src/field.cpp +msgid "gooey scraps" +msgstr "" + +#: src/field.cpp +msgid "heap of squishy gore" +msgstr "" + +#: src/field.cpp +msgid "icky mess" +msgstr "" + +#: src/field.cpp +msgid "swirl of tobacco smoke" +msgstr "tourbillon de fumée de tabac" + +#: src/field.cpp +msgid "thick tobacco smoke" +msgstr "" + +#: src/field.cpp +msgid "tobacco smoke" +msgstr "" + +#: src/field.cpp +msgid "pot smoke" +msgstr "" + +#: src/field.cpp +msgid "swirl of pot smoke" +msgstr "tourbillon de fumée d'herbe" + +#: src/field.cpp +msgid "thick pot smoke" +msgstr "" + +#: src/field.cpp +msgid "crack smoke" +msgstr "" + +#: src/field.cpp +msgid "swirl of crack smoke" +msgstr "tourbillon de fumée de crack" + +#: src/field.cpp +msgid "thick crack smoke" +msgstr "" + +#: src/field.cpp +msgid "meth smoke" +msgstr "" + +#: src/field.cpp +msgid "swirl of meth smoke" +msgstr "tourbillon de fumée de meth" + +#: src/field.cpp +msgid "thick meth smoke" +msgstr "" + +#: src/field.cpp +msgid "angry swarm of bees" +msgstr "essaim d'abeilles en colère" + +#: src/field.cpp +msgid "some bees" +msgstr "quelques abeilles" + +#: src/field.cpp +msgid "swarm of bees" +msgstr "essaim d'abeilles" + +#: src/field.cpp +msgid "airborne incendiary" +msgstr "" + +#: src/field.cpp +msgid "relaxation gas" +msgstr "gaz relaxant" + +#: src/field.cpp +msgid "sedative gas" +msgstr "gaz sédatif" + +#: src/field.cpp +msgid "fungal haze" +msgstr "brume fongique" + +#: src/field.cpp +msgid "thick fungal haze" +msgstr "brume fongique épaisse" + +#: src/field.cpp +msgid "fungicidal gas" +msgstr "" + +#: src/field.cpp +msgid "thick fungicidal gas" +msgstr "" + +#: src/field.cpp +msgid "smoke vent" +msgstr "" + +#: src/field.cpp +msgid "Whew... smells like skunk!" +msgstr "Wow... ça sent le putois!" + +#: src/field.cpp +msgid "Man, that smells like some good shit!" +msgstr "" + +#: src/field.cpp +msgid "I don't know... should you really be smoking that stuff?" +msgstr "Je ne sais pas... vous devez vraiment fumer ce truc?" + +#: src/field.cpp +msgid "Ew, smells like burning rubber!" +msgstr "Erk, ça sent comme la gomme brûlée!" + +#: src/field.cpp +msgid "Ugh, that smells rancid!" +msgstr "Berk, ça sent le rance!" + +#: src/field.cpp +#, c-format +msgid "A %s hits you!" +msgstr "Un %s vous frappe !" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits %2$s!" +msgstr "Un %1$s touche %2$s!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits the %2$s!" +msgstr "Un %1$s touche le %2$s!" + +#: src/field.cpp +msgid "The acid burns your body!" +msgstr "L'acide brûle votre corps!" + +#: src/field.cpp +msgid "The acid burns s body!" +msgstr "L'acide brûle le corps de !" + +#: src/field.cpp +msgid "The acid burns your legs and feet!" +msgstr "L'acide brûle vos jambes et pieds!" + +#: src/field.cpp +msgid "The acid burns s legs and feet!" +msgstr "L'acide brûle les jambes et pieds de !" + +#: src/field.cpp +msgid "You're lying in a pool of acid" +msgstr "" + +#: src/field.cpp +msgid "You're standing in a pool of acid" +msgstr "Vous vous tenez dans une mare d'acide" + +#: src/field.cpp +msgid "The sap sticks to you!" +msgstr "La sève se colle à vous!" + +#: src/field.cpp +msgid "The sap sticks to !" +msgstr "La sève se colle à !" + +#: src/field.cpp +msgid "The sludge is thick and sticky. You struggle to pull free." +msgstr "La boue est épaisse et collante. Vous luttez pour vous en libérez." + +#: src/field.cpp +msgid "You burn your legs and feet!" +msgstr "Vous vous brûlez vos jambes et pieds!" + +#: src/field.cpp +msgid "You're burning up!" +msgstr "Vous êtes en feu!" + +#: src/field.cpp +msgid "You're set ablaze!" +msgstr "Vous vous embrasez!" + +#: src/field.cpp +msgid "Your whole body is burning!" +msgstr "Votre corps tout entier est en feu!" + +#: src/field.cpp +msgid " burns their legs and feet!" +msgstr " brûle ses jambes et pieds!" + +#: src/field.cpp +msgid " is burning up!" +msgstr " est en feu!" + +#: src/field.cpp +msgid " is set ablaze!" +msgstr " s'embrase!" + +#: src/field.cpp +msgid "s whole body is burning!" +msgstr "Le corps tout entier de est en feu!" + +#: src/field.cpp +msgid "You're standing in a fire!" +msgstr "Vous vous tenez dans un feu!" + +#: src/field.cpp +msgid "You're waist-deep in a fire!" +msgstr "" + +#: src/field.cpp +msgid "You're surrounded by raging fire!" +msgstr "" + +#: src/field.cpp +msgid "You're lying in fire!" +msgstr "" + +#: src/field.cpp +#, c-format +msgid "You feel sick from inhaling the %s" +msgstr "Vous êtes malade d'avoir respirer %s" + +#: src/field.cpp +msgid "This radioactive gas burns!" +msgstr "Ce gaz radioactif brûle!" + +#: src/field.cpp +msgid "You're torched by flames!" +msgstr "Vous êtes une torche vivante!" + +#: src/field.cpp +msgid " is torched by flames!" +msgstr " est une torche vivante!" + +#: src/field.cpp +msgid "These flames do not burn you." +msgstr "Ces flammes ne vous brûlent pas." + +#: src/field.cpp +msgid "Those flames do not burn ." +msgstr "Ces flammes ne brûlent pas ." + +#: src/field.cpp +msgid "You're painfully electrocuted!" +msgstr "" + +#: src/field.cpp +msgid " is shocked!" +msgstr "" + +#: src/field.cpp +msgid "You're shocked!" +msgstr "" + +#: src/field.cpp +msgid "The electric cloud doesn't affect you." +msgstr "Le nuage électrique ne vous fait rien." + +#: src/field.cpp +msgid "The electric cloud doesn't seem to affect ." +msgstr "Le nuage électrique ne semble rien faire à ." + +#: src/field.cpp +msgid "You're violently teleported!" +msgstr "Vous êtes brutalement téléporté !" + +#: src/field.cpp +msgid "The bees sting you!" +msgstr "Les abeilles vous piquent!" + +#: src/field.cpp +msgid "The bees sting you several times!" +msgstr "Les abeilles vous piquent à plusieurs reprises!" + +#: src/field.cpp +msgid "The bees sting you many times!" +msgstr "Les abeilles vous piquent de nombreuses fois!" + +#: src/field.cpp +msgid "The bees sting you all over your body!" +msgstr "Les abeilles vous piquent sur tout le corps!" + +#: src/field.cpp +msgid "The incendiary burns you!" +msgstr "" + +#: src/field.cpp +msgid "The incendiary burns !" +msgstr "" + +#: src/field.cpp +msgid "The incendiary melts into your skin!" +msgstr "" + +#: src/field.cpp +msgid "The incendiary melts into s skin!" +msgstr "" + +#: src/field.cpp +#, c-format +msgid "The %s burns your skin." +msgstr "" + +#: src/field.cpp +#, c-format +msgid "The %s makes you feel sick." +msgstr "" + +#: src/field.cpp src/trapfunc.cpp +#, c-format +msgid "The %1$s teleports into a %2$s, killing them both!" +msgstr "" + +#: src/fungal_effects.cpp src/iuse.cpp +#, c-format +msgid "The %s is covered in tiny spores!" +msgstr "Le/La %s est recouvert(e) de petites spores." + +#: src/fungal_effects.cpp +msgid "The spores land on you, but you quickly swat them off with your tail!" +msgstr "" +"Les spores se déposent sur vous, mais vous les balayez aussitôt avec votre " +"queue!" + +#: src/fungal_effects.cpp +msgid "You're covered in tiny spores!" +msgstr "Vous êtes couvert de minuscule spores!" + +#: src/fungal_effects.cpp +msgid "The young tree blooms forth into a fungal blossom!" +msgstr "" + +#: src/fungal_effects.cpp +msgid "The tree blooms forth into a fungal blossom!" +msgstr "" + +#: src/game.cpp src/options.cpp +#, c-format +msgid "Loading the tileset failed: %s" +msgstr "Échec du chargement de la collection de tuiles: %s" + +#: src/game.cpp +msgid "Loading core data" +msgstr "Chargement des données de base" #: src/game.cpp msgid "Please wait while the world data loads..." @@ -127049,6 +129794,14 @@ msgstr "" msgid "Test trait group" msgstr "" +#: src/game.cpp +msgid "Show debug message" +msgstr "" + +#: src/game.cpp +msgid "Crash game (test crash handling)" +msgstr "" + #: src/game.cpp msgid "Quit to Main Menu" msgstr "" @@ -127173,9 +129926,11 @@ msgstr "" msgid "minute" msgstr "" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp src/martialarts.cpp msgid "turn" -msgstr "" +msgid_plural "turns" +msgstr[0] "" +msgstr[1] "" #: src/game.cpp msgid "Set year to?" @@ -127763,7 +130518,7 @@ msgstr "Utiliser un objet dessus" msgid "Sort armor" msgstr "Organiser les armures" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "Attaquer" @@ -127794,7 +130549,7 @@ msgstr "" msgid "Use which item?" msgstr "Utiliser quel objet?" -#: src/game.cpp src/iuse.cpp src/veh_interact.cpp +#: src/game.cpp src/iuse.cpp msgid "Never mind" msgstr "Pas la peine" @@ -127830,7 +130585,7 @@ msgid "" msgstr "" #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." +msgid "It looks solid, and will burn for a few hours without extra fuel." msgstr "" #: src/game.cpp @@ -128285,7 +131040,7 @@ msgctxt "butchery menu" msgid "Cut up %s (%d)" msgstr "" -#. ~ Name and number of items listed for disassembling +#. ~ Name, number of items and time to complete disassembling #: src/game.cpp #, c-format msgctxt "butchery menu" @@ -128324,8 +131079,8 @@ msgid "Choose corpse to butcher / item to disassemble" msgstr "Choix du corps à dépecer / de l'objet à démonter" #: src/game.cpp -msgid "Butcher everything" -msgstr "Dépecer tout" +msgid "Quick butcher everything" +msgstr "" #: src/game.cpp msgid "Disassemble everything once" @@ -128336,8 +131091,8 @@ msgid "Disassemble everything" msgstr "Démonter tout" #: src/game.cpp -msgid "Cut up all you can" -msgstr "Découper tout ce que vous pouvez" +msgid "Cut up everything" +msgstr "" #: src/game.cpp msgid "" @@ -128360,7 +131115,7 @@ msgstr "" #: src/game.cpp msgid "" -"This techinque is used when you are in a hurry, but still want to harvest " +"This technique is used when you are in a hurry, but still want to harvest " "something from the corpse. Yields are lower as you don't try to be precise," " but it's useful if you don't want to set up a workshop. Prevents zombies " "from raising." @@ -128385,7 +131140,7 @@ msgstr "" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "" @@ -128396,7 +131151,7 @@ msgstr "" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." @@ -129268,6 +132023,10 @@ msgstr "Vous sentez votre corps se flétrir." msgid "You feel fatigue seeping into your body." msgstr "" +#: src/game.cpp +msgid "The portal collapses!" +msgstr "" + #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." @@ -129509,6 +132268,19 @@ msgstr "" msgid "JOY" msgstr "" +#. ~ Used for permafood shelf life in the Eat menu +#: src/game_inventory.cpp +msgid "indefinite" +msgstr "" + +#: src/game_inventory.cpp +msgid "SHELF LIFE" +msgstr "" + +#: src/game_inventory.cpp +msgid "FRESHNESS" +msgstr "" + #: src/game_inventory.cpp msgid "SPOILS IN" msgstr "" @@ -129541,6 +132313,38 @@ msgstr "" msgid "You're fully charged" msgstr "" +#: src/game_inventory.cpp +msgid "soon!" +msgstr "" + +#: src/game_inventory.cpp +msgid "fresh" +msgstr "" + +#: src/game_inventory.cpp +msgid "quite fresh" +msgstr "" + +#: src/game_inventory.cpp +msgid "near midlife" +msgstr "" + +#: src/game_inventory.cpp +msgid "past midlife" +msgstr "" + +#: src/game_inventory.cpp +msgid "getting older" +msgstr "" + +#: src/game_inventory.cpp +msgid "old" +msgstr "" + +#: src/game_inventory.cpp +msgid "rotten" +msgstr "" + #: src/game_inventory.cpp msgid "Consume item" msgstr "Consommer" @@ -129684,6 +132488,14 @@ msgstr "" msgid "You have no weapons you could put into your %s." msgstr "" +#: src/game_inventory.cpp src/iuse.cpp +msgid "Cut up what?" +msgstr "Découper quoi?" + +#: src/game_inventory.cpp +msgid "You have nothing to cut up." +msgstr "" + #: src/game_inventory.cpp msgid "Saw barrel" msgstr "" @@ -130000,7 +132812,7 @@ msgstr "Attendre combien de temps?" msgid "Are you sure you want to sleep?" msgstr "Voulez-vous vraiment dormir?" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "Oui." @@ -130297,6 +133109,11 @@ msgstr "" msgid "You don't have a suitable item to coat with diamond" msgstr "" +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "" + #: src/iexamine.cpp #, c-format msgid "Use the %s?" @@ -131767,6 +134584,10 @@ msgstr "" msgid "You inspect its contents and find: " msgstr "" +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "" + #: src/iexamine.cpp msgid "You see some smoldering embers there." msgstr "" @@ -132185,10 +135006,79 @@ msgstr "orange" msgid "black" msgstr "noir" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks as fresh as it can be. It still has " +"%s until it spoils." +msgstr "" + +#: src/item.cpp +msgid "* This food looks as fresh as it can be." +msgstr "" + +#: src/item.cpp +#, c-format +msgid "" +"* This food looks old. It's just %s from becoming " +"inedible." +msgstr "" + +#: src/item.cpp +msgid "" +"* This food looks old. It's on the brink of becoming inedible." +msgstr "" + +#: src/item.cpp +msgid "" +"* This food looks fine. If you were more skilled in cooking or" +" survival, you might be able to make a better estimation." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks quite fresh. It has %s until it" +" spoils." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it is reaching its midlife. " +"There's %s before it spoils." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it has passed its midlife. " +"Edible, but will go bad in %s." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it will be old soon. It has " +"%s, so if you plan to use it, it's now or never." +msgstr "" + #: src/item.cpp msgid "Category: " msgstr "Catégorie: " +#: src/item.cpp +msgid "$" +msgstr "" + #: src/item.cpp msgid "Price: " msgstr "Prix: " @@ -132356,43 +135246,8 @@ msgstr "" #: src/item.cpp #, c-format msgid "" -"* This food is perishable, and takes %s to " -"rot from full freshness, at room temperature." -msgstr "" -"* Cette nourriture est périssable, il lui faut " -"%s pour pourrir à température ambiante." - -#: src/item.cpp -msgid "* This food looks as fresh as it can be." -msgstr "" - -#: src/item.cpp -msgid "" -"* This food looks still quite fresh. It's far from becoming " -"old." -msgstr "" - -#: src/item.cpp -msgid "" -"* This food looks like it is reaching its midlife. It has" -" some time ahead before spoiling." -msgstr "" - -#: src/item.cpp -msgid "" -"* This food looks like it has passed its midlife. Edible," -" but will go old sooner rather then later." -msgstr "" - -#: src/item.cpp -msgid "" -"* This food looks like it will be old soon. It's now or never, if" -" you plan to use it." -msgstr "" - -#: src/item.cpp -msgid "" -"* This food looks old. It's on a brink of becoming inedible." +"* This food is perishable, and at room temperature has an" +" estimated nominal shelf life of %s." msgstr "" #: src/item.cpp @@ -132433,10 +135288,6 @@ msgstr "" "Cette nourriture a commencé à pourrir. La manger " "serait une très mauvaise idée." -#: src/item.cpp -msgid "Capacity: " -msgstr "Capacité: " - #: src/item.cpp #, c-format msgid " round of %s" @@ -132444,6 +135295,10 @@ msgid_plural " rounds of %s" msgstr[0] " salve de %s" msgstr[1] " salves de %s" +#: src/item.cpp +msgid "Capacity: " +msgstr "Capacité: " + #: src/item.cpp msgid " per round" msgstr " par tour" @@ -132624,6 +135479,18 @@ msgstr "" msgid "Ammo: %s" msgstr "Munition: %s" +#: src/item.cpp +msgid "%" +msgstr "" + +#: src/item.cpp +msgid "Reload modifier: " +msgstr "" + +#: src/item.cpp +msgid "Minimum strength required modifier: " +msgstr "" + #: src/item.cpp msgid "Used on: " msgstr "Utilisé sur: " @@ -135291,7 +138158,9 @@ msgid "You cannot use the %1$s with another of it's kind." msgstr "" #: src/iuse.cpp -msgid "You unfold solar array from the pack and plug it in." +msgid "" +"You unfold solar array from the pack. You still need to connect it with a " +"cable." msgstr "" #: src/iuse.cpp @@ -135445,10 +138314,6 @@ msgstr "" msgid "You waste a lot of the wood." msgstr "Vous gâchez beaucoup de bois." -#: src/iuse.cpp src/iuse_actor.cpp -msgid "Cut up what?" -msgstr "Découper quoi?" - #: src/iuse.cpp msgid "Chop down which tree?" msgstr "" @@ -136695,11 +139560,23 @@ msgid "" msgstr "" #: src/iuse.cpp -msgid "Attach cable to vehicle where?" +msgid "Using cable:" msgstr "" #: src/iuse.cpp -msgid "Using cable:" +msgid "Attach cable to vehicle" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to self" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to solar pack" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to vehicle where?" msgstr "" #: src/iuse.cpp @@ -136882,6 +139759,105 @@ msgid "" "work." msgstr "" +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "" + +#: src/iuse.cpp +msgid "Heads!" +msgstr "" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "" + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "" + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "" + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "" + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "" + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "" + +#: src/iuse.cpp +msgid "Most likely." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "" + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "" + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "" + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "" + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "" + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "" + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "" + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "" + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "" + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "" + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "" + #: src/iuse_actor.cpp #, c-format msgid "The %s is empty!" @@ -139516,25 +142492,234 @@ msgstr "CONSOLE D'ARCHIVES" msgid "View Research Logs" msgstr "VOIR LES NOTES DE RECHERCHE" -#: src/mapgen.cpp -msgid "Download Map Data" -msgstr "TÉLÉCHARGER LES DONNÉES DE LA CARTE" +#: src/mapgen.cpp +msgid "Download Map Data" +msgstr "TÉLÉCHARGER LES DONNÉES DE LA CARTE" + +#: src/mapgen.cpp +msgid "Divert power to elevator" +msgstr "" + +#: src/mapgen_functions.cpp +msgid "PolCom OS v1.47" +msgstr "" + +#: src/mapgen_functions.cpp +msgid "Open Supply Room" +msgstr "" + +#: src/mapgen_functions.cpp +msgid "Open Evidence Locker" +msgstr "Ouvrir le casier des preuves" + +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "" + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "" + +#: src/martialarts.cpp +msgid "activate" +msgstr "activer" + +#: src/martialarts.cpp +msgid "be used" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "" + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "" + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind " +"it" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "" -#: src/mapgen.cpp -msgid "Divert power to elevator" +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" msgstr "" -#: src/mapgen_functions.cpp -msgid "PolCom OS v1.47" +#: src/martialarts.cpp +msgid "Passive" msgstr "" -#: src/mapgen_functions.cpp -msgid "Open Supply Room" +#: src/martialarts.cpp +msgid "Hit" +msgstr "Touché" + +#: src/martialarts.cpp +msgid "Get hit" msgstr "" -#: src/mapgen_functions.cpp -msgid "Open Evidence Locker" -msgstr "Ouvrir le casier des preuves" +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "" + +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr "" #: src/material.cpp msgid "damages" @@ -140182,10 +143367,6 @@ msgstr "" msgid "Outpost Missions" msgstr "" -#: src/mission_companion.cpp -msgid "Base Missions" -msgstr "" - #: src/mission_companion.cpp msgid "Junk Shop Missions" msgstr "" @@ -140228,13 +143409,6 @@ msgstr "" msgid " hours] \n" msgstr "" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?" -msgstr "" - #: src/mission_companion.cpp msgid "Retrieve Scavenging Patrol" msgstr "" @@ -140317,540 +143491,6 @@ msgstr "" msgid "Recover Ally from Carpentry Work" msgstr "" -#: src/mission_companion.cpp -msgid "Upgrade Camp" -msgstr "" - -#: src/mission_companion.cpp -msgid "Gather Materials" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" -" \n" -"Effects:\n" -"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" -" \n" -"Must have enjoyability >= -6\n" -"Perishable food liquidated at penalty depending on upgrades and rot time:\n" -"> Rotten: 0%%\n" -"> Rots in < 2 days: 60%%\n" -"> Rots in < 5 days: 80%%\n" -" \n" -"Total faction food stock: %d kcal or %d day's rations" -msgstr "" - -#: src/mission_companion.cpp -msgid "Distribute Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" -" \n" -"Effects:\n" -"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" -"> Items sitting on any type of furniture will not be moved.\n" -"> Items that are not listed in one of the categories are defaulted to the tools group." -msgstr "" - -#: src/mission_companion.cpp -msgid "Reset Sort Points" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to gather light brush and heavy sticks.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -"> heavy sticks\n" -"> withered plants\n" -"> splintered wood\n" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Collect Firewood" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to do low level chores and sort supplies.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" -"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Menial Labor" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours \n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Expand Base" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to a nearby forest to cut logs.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: 1 \n" -"Effects:\n" -"> 50%% of trees/trunks at the forest position will be cut down.\n" -"> 50%% of total material will be brought back.\n" -"> Repeatable with diminishing returns.\n" -" \n" -"Risk: Low-Medium\n" -"Time: 6 Hour Base + Travel Time + Cutting Time\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Cut Logs" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Good for setting up resupply or contingency points.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward.\n" -" \n" -"Risk: Medium\n" -"Time: 6 Hour Construction + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Setup Hide Site" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Push gear out to a hide site or bring gear back from one.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 1\n" -"Effects:\n" -"> Good for returning equipment you left in the hide site shelter.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward or back.\n" -" \n" -"Risk: Medium\n" -"Time: 1 Hour Base + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Relay Hide Site" -msgstr "" - -#: src/mission_companion.cpp -msgid "Construct Map Fortifications" -msgstr "" - -#: src/mission_companion.cpp -msgid "Construct Spiked Trench" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recruit Companions" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Select checkpoints to customize path.\n" -"> Reveals terrain around the path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Scout Mission" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 4\n" -"Effects:\n" -"> Pulls creatures encountered into combat instead of fleeing.\n" -"> Select checkpoints to customize path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: Very High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Combat Patrol" -msgstr "" - -#: src/mission_companion.cpp -msgid " Expansion Upgrade" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Have a companion attempt to completely dissemble a vehicle into components.\n" -" \n" -"Skill used: mechanics\n" -"Difficulty: 2 \n" -"Effects:\n" -"> Removed parts placed on the furniture in the garage.\n" -"> Skill plays a huge role to determine what is salvaged.\n" -" \n" -"Risk: None\n" -"Time: Skill Based \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Chop Shop" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plow any spaces that have reverted to dirt or grass.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Restores only the plots created in the last expansion upgrade.\n" -"> Does not damage existing crops.\n" -" \n" -"Risk: None\n" -"Time: 5 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Plow Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plant designated seeds in the spaces that have already been tilled.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose which seed type or all of your seeds.\n" -"> Stops when out of seeds or planting locations.\n" -"> Will plant in ALL dirt mounds in the expansion.\n" -" \n" -"Risk: None\n" -"Time: 1 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Plant Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Harvest any plants that are ripe and bring the produce back.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Will dump all harvesting products onto your location.\n" -" \n" -"Risk: None\n" -"Time: 3 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Harvest Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to expand your camp!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " hours left] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " minutes left] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " [DONE]\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally from Upgrading" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to upgrade your expansions!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally, " -msgstr "" - -#: src/mission_companion.cpp -msgid "Working at the chop shop...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/120 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Chop Shop" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working in your kitchen!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " [ALMOST DONE]\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Cooking" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working in your blacksmith shop!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Smithing" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to plow your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/~48 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Plow Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to plant your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/4 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Plant Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to harvest your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/~10 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Harvest Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working on your farm!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Crafting" -msgstr "" - -#: src/mission_companion.cpp -msgid "Busy crafting!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for materials to upgrade the camp.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/3 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally from Gathering" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for firewood.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Firewood Gatherers" -msgstr "" - -#: src/mission_companion.cpp -msgid "Performing menial labor...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Menial Laborer" -msgstr "" - -#: src/mission_companion.cpp -msgid "Surveying for expansion...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Surveyor" -msgstr "" - -#: src/mission_companion.cpp -msgid "Cutting logs in the woods...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Log Cutter" -msgstr "" - -#: src/mission_companion.cpp -msgid "Setting up a hide site...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Hide Setup" -msgstr "" - -#: src/mission_companion.cpp -msgid "Constructing fortifications...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Finish Map Fortifications" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for recruits.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Recruiter" -msgstr "" - -#: src/mission_companion.cpp -msgid "Scouting the region.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Scout" -msgstr "" - -#: src/mission_companion.cpp -msgid "Patrolling the region.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Combat Patrol" -msgstr "" - #: src/mission_companion.cpp msgid "" "Cost: $1000\n" @@ -141037,235 +143677,6 @@ msgstr "" msgid "departs to work as a laborer..." msgstr "" -#: src/mission_companion.cpp -msgid "You don't have enough food stored to feed your companion." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to upgrade the camp..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have a companion upgrading the camp." -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the materials for the upgrade." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your garage..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your kitchen with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your blacksmith shop with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your farm with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns to you with something..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for materials..." -msgstr "" - -#: src/mission_companion.cpp -msgid "There are too many companions working on this mission!" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for firewood..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to dig ditches and scrub toilets..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to survey land..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You have already selected a surveyor!" -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to upgrade the expansion..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have a worker upgrading that expansion!" -msgstr "" - -#: src/mission_companion.cpp -msgid "Forests and swamps are the only valid cutting locations." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Trip Estimate:\n" -"%s" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to cut logs..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working in the woods..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Forests, swamps, and fields are valid hide site locations." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to build a hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You need equipment to setup a hide site..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working on the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You must select an existing hide site." -msgstr "" - -#: src/mission_companion.cpp -msgid "Bring gear back?" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs for the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You need equipment to transport between the hide site..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from shuttling gear between the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Select a start and end point. Line must be straight. Fields, forests, and " -"swamps are valid fortification locations. In addition to existing " -"fortification constructions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an end point." -msgstr "" - -#: src/mission_companion.cpp -msgid "Invalid terrain in construction path." -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the material to build the fortification." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for recruits..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Select checkpoints until you reach maximum range or select the last point " -"again to end." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs on patrol..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Your companion hit a river and didn't know how to swim..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Your companion hit a river and didn't know how to swim well enough to " -"cross..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't return from patrol..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from patrol..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that garage." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins plowing the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone plowing that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "You have no additional seeds to give your companions..." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins planting the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Which seeds do you wish to have planted?" -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone planting that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to harvest the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone harvesting that field." -msgstr "" - #: src/mission_companion.cpp msgid "departs to work as a carpenter..." msgstr "" @@ -141460,243 +143871,6 @@ msgid "" "participate in advanced tasks." msgstr "" -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"%s\n" -" \n" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s \n" -"Risk: None\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes: \n" -"Send a companion to gather materials for the next camp upgrade.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: " -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from upgrading the camp having earned a bit of experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "While gathering supplies, a silent specter approaches %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s notices the antlered horror and slips away before it gets too close." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The survivor approaches %s asking for directions." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Fearful that he may be an agent of some hostile faction, %s doesn't mention " -"the camp." -msgstr "" - -#: src/mission_companion.cpp -msgid "The two part on friendly terms and the survivor isn't seen again." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't detect the ambush until it was too late!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The bull moose charged %s from the tree line..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Despite being caught off guard %s was able to run away until the moose gave " -"up pursuit." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The jabberwock grabbed %s by the arm from behind and began to scream." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Terrified, %s spun around and delivered a massive kick to the creature's " -"torso..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Collapsing into a pile of gore, %s walked away unscathed..." -msgstr "" - -#: src/mission_companion.cpp -msgid "(Sounds like bullshit, you wonder what really happened.)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s turned to find the hideous black eyes of a giant wasp staring back from " -"only a few feet away..." -msgstr "" - -#: src/mission_companion.cpp -msgid "The screams were terrifying, there was nothing anyone could do." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Pieces of %s were found strewn across a few bushes." -msgstr "" - -#: src/mission_companion.cpp -msgid "(You wonder if your companions are fit to work on their own...)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from gathering materials carrying supplies and has a bit more " -"experience..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Your companion seems disappointed that your pantry is empty..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -" Chopping this vehicle:\n" -"%s" -msgstr "" - -#: src/mission_companion.cpp -msgid "begins working in the garage..." -msgstr "" - -#: src/mission_companion.cpp -msgid "No seeds to plant!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working your fields..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from doing the dirty work to keep the camp running..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Sorting points have changed, forcing reset." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an expansion:" -msgstr "" - -#: src/mission_companion.cpp -msgid "You choose to wait..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from surveying for the expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "No items are located at the drop point..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "You distribute %d kcal worth of food to your companions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Harvestable: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Ready for Planting: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Needs Plowing: " -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Name: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "---- Engines ----\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Engine: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Status: %24d%%\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Fuel: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "---- Fuel Storage & Battery ----\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Estimated Chop Time: 5 Days\n" -msgstr "" - #: src/mission_companion.cpp #, c-format msgid "While %s was framing a building one of the walls began to collapse..." @@ -141854,368 +144028,6 @@ msgstr "" msgid "No one returns to your party..." msgstr "" -#: src/mission_companion.cpp -msgid "MAIN" -msgstr "" - -#: src/mission_companion.cpp -msgid " [N] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [NE] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [E] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [SE] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [S] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [SW] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [W] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [NW] " -msgstr "" - -#: src/mission_companion.cpp -msgid "Farm Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Garage Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Kitchen Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Blacksmith Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Empty Expansion" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Select a location between %d and %d tiles away." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"You must select a target between %d and %d range from the base. Range: %d" -msgstr "" - -#: src/mission_companion.cpp -msgid "You must be able to see the target that you select." -msgstr "" - -#: src/mission_companion.cpp -msgid "Do you want to bounce off this location to extend range?" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15.2f (km)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">One Way: %15d (trips)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15.2f (km)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15d (m)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15d (m)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Travel: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Working: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (days)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (minutes)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Food: %15d (kcal)\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "food for you" -msgstr "" - -#: src/mission_companion.cpp -msgid "food for companions" -msgstr "" - -#: src/mission_companion.cpp -msgid "weapons" -msgstr "" - -#: src/mission_companion.cpp -msgid "clothing" -msgstr "" - -#: src/mission_companion.cpp -msgid "bionics" -msgstr "" - -#: src/mission_companion.cpp -msgid "all kinds of tools" -msgstr "" - -#: src/mission_companion.cpp -msgid "wood of various sorts" -msgstr "" - -#: src/mission_companion.cpp -msgid "trash and rotting food" -msgstr "" - -#: src/mission_companion.cpp -msgid "books" -msgstr "" - -#: src/mission_companion.cpp -msgid "medication" -msgstr "" - -#: src/mission_companion.cpp -msgid "ammo" -msgstr "munition" - -#: src/mission_companion.cpp -#, c-format -msgid "Reset point: %s?" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -" Items New Point Old Point\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -" Save Points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "Revert to default points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the materials to craft that" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Batch crafting %s [MAX: %d]: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Your batch is too large!" -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to work..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" -" \n" -"Skill used: speech\n" -"Difficulty: 2 \n" -"Base Score: +%3d%%\n" -"> Expansion Bonus: +%3d%%\n" -"> Faction Bonus: +%3d%%\n" -"> Special Bonus: +%3d%%\n" -" \n" -"Total: Skill +%3d%%\n" -" \n" -"Risk: High\n" -"Time: 4 Days\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from searching for recruits with a bit more experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s encountered %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't find anyone to recruit..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s convinced %s to hear a recruitment offer from you..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested in anything %s had to offer..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"NPC Overview:\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Name: %20s\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Strength: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Dexterity: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Intelligence: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Perception: %10d\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Top 3 Skills:\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Asking for:\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"> Food: %10d days\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Faction Food:%9d days\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Recruit Chance: %10d%%\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an option:" -msgstr "" - -#: src/mission_companion.cpp -msgid "Increase Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "Decrease Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "Make Offer" -msgstr "" - -#: src/mission_companion.cpp -msgid "Not Interested" -msgstr "" - -#: src/mission_companion.cpp -msgid "You decide you aren't interested..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s has been convinced to join!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested..." -msgstr "" - #: src/mission_companion.h msgid "Do you wish to give your companion additional items?" msgstr "" @@ -144863,9 +146675,10 @@ msgstr "Points restants: %4d" msgid "Freeform" msgstr "Libre" -#: src/newcharacter.cpp -msgid "Pick your style:" -msgstr "Choisissez votre sytle:" +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" +msgstr "" #: src/newcharacter.cpp msgid "Use this style?" @@ -146090,52 +147903,6 @@ msgstr "" msgid " If you are interested, I have another job for you." msgstr "" -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "Un plaisir de faire affaire!" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "Eh bien, je pense que c'est seulement nous." - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "Au moins nous avons un abri." - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "" -"Je ne sais pas trop, chercher des provisions et d'autres survivants " -"j'imagine." - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "On devrait peut-être commencer par barricader cet endroit." - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to" -" disappear quickly from here." -msgstr "" -"Je pense que trouver une voiture en état de rouler pourrait être très utile " -"si on doit partir d'ici rapidement." - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "" -"On pourrait chercher une ferme. Elle procurent plein de nourriture et sont " -"loin des villes." - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "" -"On devrait rester loin des villes, même s'il y a plein de choses à y " -"trouver." - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." msgstr "Tu viens de me demander du matos, redemande moi plus tard." @@ -146144,10 +147911,6 @@ msgstr "Tu viens de me demander du matos, redemande moi plus tard." msgid "Why should I share my equipment with you?" msgstr "Pourquoi je partagerais mon équipement avec toi?" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "Ok, voilà pour toi." - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr ", et si tu demandes encore, !" @@ -146168,46 +147931,6 @@ msgstr "Désolé mais j'ai l'impression que je n'ai rien à t'apprendre." msgid "Here's what I can teach you..." msgstr "Voilà ce que je peux t'enseigner..." -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "D'accord, c'est parti." - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "Pas avant que j'ai des antibiotiques." - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "Tu m'as demandé récemment, demande plus tard." - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "Pourquoi je voyagerais avec toi?" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "Ok ça me va, je te suis!" - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "Mouais... je ne crois pas non." - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "Qu'est-ce que c'est ?" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "Tu es sûr de partir?" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "D'accord, ouvre le chemin." - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "Non c'est moi le chef ici." - #: src/npctalk.cpp #, c-format msgid "%d.%d miles." @@ -146220,22 +147943,6 @@ msgid_plural "%d feet." msgstr[0] "%d pied." msgstr[1] "%d pieds." -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "Je suis à la bourre." - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "Aucune chance, je vais être mis à l'écart!" - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "J'aimerais garder ça pour moi." - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "Je n'ai vraiment pas l'habitude de faire comme ça..." - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "* n'attaquera pas les ennemis." @@ -146542,30 +148249,6 @@ msgstr "" msgid "Delivering bandages." msgstr "" -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "Qu'est-ce qu'on fait maintenant?" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "Vous voulez voyager avec moi?" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "Échangeons des objets." - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "Je ne peux pas quitter l'abri sans équipement..." - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "Hum, ok." - #: src/npctalk.cpp msgid "Okay, fine." msgstr "D'accord." @@ -146598,30 +148281,6 @@ msgstr "Oublie ça." msgid "Never mind, I'll do without. Bye." msgstr "Oublie ça, je ferais sans. Au revoir." -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "Merci!" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "Merci! Mais je peux en avoir plus?" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "Merci, à plus tard!" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "Ok, ok, désolé." - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "Sérieux, donne moi plus de matos!" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "Bon d'accord, salut." - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "Oui, reprenons l'entraînement. " @@ -146643,94 +148302,6 @@ msgstr "" msgid "%s: %d -> %d (cost $%d)" msgstr "" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "Ça me va." - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "Tout bien réfléchi, ça m'est égal." - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "D'accord ouvre le chemin." - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "Non, je suis bien ici." - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "C'est compris. Je rapporte les antibiotiques." - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "Oui ok, je demanderai plus tard." - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "Je peux assurer ta sécurité." - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "Tu peux assurer ma sécurité." - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "On est amis n'est-ce pas?" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "Je vous tue si vous n'obéissez pas." - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "Super!" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "Ok, allons-y!" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "C'est encore loin?" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "Je vais continuer tout seul un moment." - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "J'aimerais nous guider un moment." - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "Écarte toi. C'est moi qui mène maintenant." - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "Allons-y." - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "Mais nan, c'est une blague." - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "Oui j'en suis sûr. Salut." - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "Cool. Autre chose..." - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "D'accord, partons." - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "Ok, ok." - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "Okay, merci." @@ -146739,10 +148310,6 @@ msgstr "Okay, merci." msgid "Let's keep moving." msgstr "Avançons." -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "" - #: src/npctalk.cpp msgid "Combat commands..." msgstr "Ordre de Combat..." @@ -146801,16 +148368,12 @@ msgid "Miscellaneous rules..." msgstr "Diverses règles..." #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "" - -#: src/npctalk.cpp -msgid "I'll give you some space." -msgstr "Je vais vous faire de la place." +msgid "I'm going to go my own way for a while." +msgstr "Je vais continuer tout seul un moment." #: src/npctalk.cpp -msgid "I understand..." -msgstr "Je comprends..." +msgid "Let's talk about faction camps." +msgstr "" #: src/npctalk.cpp msgid "Change your engagement rules..." @@ -147534,6 +149097,11 @@ msgid "" " - Butcher: Butcher corpses you stand on." msgstr "" +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "" + #: src/options.cpp msgid "Pulp" msgstr "Pulvériser" @@ -147748,10 +149316,6 @@ msgstr "" msgid "Always" msgstr "Toujours" -#: src/options.cpp -msgid "Ask" -msgstr "Demander" - #: src/options.cpp msgid "Never" msgstr "Jamais" @@ -150256,9 +151820,7 @@ msgstr "Allumer : %d/%d" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "Arme:" -msgstr[1] "Armes:" +msgstr "" #: src/player.cpp msgid "Equipment:" @@ -151719,22 +153281,6 @@ msgstr "" msgid "Stop wielding %s?" msgstr "Arrêter de manier %s?" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "Technique:" -msgstr[1] "Techniques:" - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "" - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "Garder les mains vides (off)" @@ -151792,6 +153338,11 @@ msgstr "" msgid "Mend" msgstr "" +#: src/player.cpp +#, c-format +msgid "The %s doesn't have any faults to toggle." +msgstr "" + #: src/player.cpp #, c-format msgid "The %s doesn't have any faults to mend." @@ -152566,10 +154117,6 @@ msgstr "Intelligence" msgid "Perception" msgstr "Perception" -#: src/player_display.cpp -msgid "Speed" -msgstr "Vitesse" - #: src/player_display.cpp msgid "Severely Malnourished" msgstr "" @@ -153681,6 +155228,10 @@ msgstr "" msgid "kerblam!" msgstr "boum!" +#: src/recipe.cpp +msgid "none" +msgstr "" + #: src/requirements.cpp #, c-format msgid "%d tool with %s of %d or more." @@ -155008,6 +156559,19 @@ msgstr "" msgid "'}' to scroll down" msgstr "" +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" +msgstr "" + #: src/veh_interact.cpp #, c-format msgid "> %2$s" @@ -155867,13 +157431,13 @@ msgstr "Pas assez d'énergie pour allumer %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" -msgstr "Éteindre %s" +msgid "Turn on %s" +msgstr "Allumer %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" -msgstr "Allumer %s" +msgid "Turn off %s" +msgstr "Éteindre %s" #: src/vehicle_use.cpp #, c-format @@ -155969,10 +157533,6 @@ msgstr "Système de caméra activé" msgid "Camera system won't turn on" msgstr "Le système de caméra ne veut pas s'allumer" -#: src/vehicle_use.cpp -msgid "Quit controlling electronics" -msgstr "" - #: src/vehicle_use.cpp msgid "Electronics controls" msgstr "" diff --git a/lang/po/hu.po b/lang/po/hu.po index 3da3d29f9eee8..e69f05afebe63 100644 --- a/lang/po/hu.po +++ b/lang/po/hu.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-26 22:02+0800\n" +"POT-Creation-Date: 2018-11-16 22:24+0800\n" "PO-Revision-Date: 2018-04-26 14:47+0000\n" "Last-Translator: Daniel Szollosi-Nagy , 2018\n" "Language-Team: Hungarian (https://www.transifex.com/cataclysm-dda-translators/teams/2217/hu/)\n" @@ -4957,6 +4957,7 @@ msgstr "" "lehet az egészséges létezéshez." #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "kő" @@ -6046,6 +6047,16 @@ msgid_plural "bondage masks" msgstr[0] "szado-mazo maszk" msgstr[1] "szado-mazo maszk" +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "" + #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" @@ -6055,6 +6066,29 @@ msgstr "" "Szorosan illeszkedő fekete bőrmaszk. A szemeket és a szájat cipzárral lehet " "lezárni." +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "" + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "bondage suit" msgid_plural "bondage suits" @@ -6614,11 +6648,9 @@ msgstr[1] "műszőrme kabát" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." msgstr "" -"Rikító színű műszőrme kabát néhány zsebbel. Bár nem olyan meleg, mint a " -"természetes szőrme, ilyet más biztosan nem hord." #: lang/json/ARMOR_from_json.py msgid "sable coat" @@ -7022,6 +7054,19 @@ msgstr[1] "szőrme duster kabát" msgid "A thick fur full-length duster. Has many pockets for storage." msgstr "Teljes hosszúságú duster kabát szőrből, számos tároló zsebbel." +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather duster" msgid_plural "leather dusters" @@ -8209,6 +8254,19 @@ msgstr[1] "szőrmesapka" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "Állatok bundájából készített sapka. Extrém mértékben melegít." +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -8563,17 +8621,6 @@ msgstr "" "Egy középkorból származó lovagi sisak. Nagyon jól védi az egész fejet, " "viszont egyben rendkívül ormótlan is." -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "rohamrendőr sisak" -msgstr[1] "rohamrendőr sisak" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "Az egész arcot védi a sisakra szerelt plexipajzs." - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" @@ -10235,6 +10282,17 @@ msgstr[1] "szőrmenadrág" msgid "A hefty pair of fur-lined pants." msgstr "Szőrmével bélelt nagy nadrág." +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather pants" msgid_plural "leather pants" @@ -10935,22 +10993,80 @@ msgid_plural "sleeping bags" msgstr[0] "hálózsák" msgstr[1] "hálózsák" +#. ~ Use action menu_text for sleeping bag. +#. ~ Use action menu_text for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Roll up" +msgstr "" + +#. ~ Use action msg for sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the sleeping bag, preparing it for transport." +msgstr "" + #. ~ Description for sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag that covers you head to toe." msgstr "Ez a nagyméretű hálózsák a fejed búbjáig betakar." +#: lang/json/ARMOR_from_json.py +msgid "rolled sleeping bag" +msgid_plural "rolled sleeping bags" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action menu_text for rolled sleeping bag. +#. ~ Use action menu_text for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Unroll" +msgstr "" + +#. ~ Use action msg for rolled sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll the sleeping bag." +msgstr "" + +#. ~ Description for rolled sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag rolled up for transport. It has a strap to carry it " +"with." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "fur sleeping bag" msgid_plural "fur sleeping bags" msgstr[0] "szőrme hálózsák" msgstr[1] "szőrme hálózsák" +#. ~ Use action msg for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the fur sleeping bag, preparing it for transport." +msgstr "" + #. ~ Description for fur sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag lined with fur. Who needs a tent?" msgstr "Nagyméretű, szőrmebélésű hálózsák. Kinek kell egyáltalán sátor?" +#: lang/json/ARMOR_from_json.py +msgid "rolled fur sleeping bag" +msgid_plural "rolled fur sleeping bags" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action msg for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll up the fur sleeping bag." +msgstr "" + +#. ~ Description for rolled fur sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag lined with fur, rolled for transport. It has a strap " +"to carry it with." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless duster" msgid_plural "sleeveless dusters" @@ -10981,6 +11097,19 @@ msgstr "" "Vastag szőr duster kabát, a könnyebb mozgás céljából levágott ujjakkal. A " "sok zsebének köszönhetően rengeteg a tárolóhelye." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" msgid_plural "sleeveless leather dusters" @@ -11041,6 +11170,19 @@ msgstr "" "Vastag szőrmekabát, a könnyebb mozgás céljából levágott ujjakkal. A sok " "zsebének köszönhetően rengeteg a tárolóhelye." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -11774,6 +11916,19 @@ msgstr[1] "szőrme viharkabát" msgid "A thick fur trenchcoat, lined with pockets. Great for storage." msgstr "Vastag szőrmekabát, számos zsebbel. Tárolásra nagyon jó." +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" msgid_plural "leather trenchcoats" @@ -15499,18 +15654,14 @@ msgstr[0] "Ionos túlterhelés generátor KBM" msgstr[1] "Ionos túlterhelés generátor KBM" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" -"A törzsedbe egy magas teljesítményű iongenerátor került beépítésre, amely " -"egy egyre jobban szétterjedő energiatöltetet vet ki. Az ebből létrejövő " -"robbanás lángra lobbantja a légköri oxigént, ezért mozgása közben tüzeket " -"gyújt, valamint becsapódáskor felrobbant. A rövid távra való alkalmazása " -"ezért nem javasolt." #: lang/json/BIONIC_ITEM_from_json.py msgid "Synaptic Regeneration System CBM" @@ -15561,26 +15712,6 @@ msgstr "" "közben tüzeket gyújt, valamint becsapódáskor felrobbant. A rövid távra való " "alkalmazása ezért nem javasolt." -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "Autonóm sebészeti penge KBM" -msgstr[1] "Autonóm sebészeti penge KBM" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While" -" activated, they will continously drain power to make automated precise cuts" -" but you will be unable to wield anything." -msgstr "" -"A felhasználó ujjbegyeibe sebészeti precizitású pengerendszer került " -"beépítésre. Aktiválásakor folyamatosan energiát használ automatikus vágások " -"ejtésére, viszont semmit sem lehet emiatt kézben tartani." - #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" msgid_plural "Lessons for the Novice Bowhunter" @@ -18535,6 +18666,21 @@ msgstr "" " olyan jegyzetekkel és skiccekkel, amelyek egy haladó szabó számára " "rendkívül sokat mondanak." +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon" +" Animal Rights Organization." +msgstr "" + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -27526,7 +27672,7 @@ msgstr "" #. ~ Description for bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Tastes horribly and is " +"Homemade calcium supplement made out of bone meal. Tastes horrible and is " "hard to swallow but it does its job." msgstr "" @@ -27537,9 +27683,9 @@ msgstr "" #. ~ Description for flavored bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Due to some sweetness " -"mixed in to counteract the powdery texture and the taste of ash, almost as " -"palatable as the pre-cataclysm tablets." +"Homemade calcium supplement made out of bone meal. Due to some sweetness " +"mixed in to counteract the powdery texture and the taste of ash, it's almost" +" as palatable as the pre-cataclysm tablets." msgstr "" #: lang/json/COMESTIBLE_from_json.py @@ -28163,7 +28309,7 @@ msgstr "" "Sűrű és ízletes ital tiszta, finomított fehérjeporból és ízletes " "gyümölcsből. További vitaminokkal és ásványi anyagokkal egészítették ki." -#: lang/json/COMESTIBLE_from_json.py src/mission_companion.cpp +#: lang/json/COMESTIBLE_from_json.py src/faction_camp.cpp msgid "seeds" msgid_plural "seeds" msgstr[0] "vetőmag" @@ -31071,6 +31217,32 @@ msgid "" msgstr "" "Néhány darab még füstölgően izzó parázs. Ahogy nézed, úgy halványul el." +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "" + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "" +msgstr[1] "" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "" + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -33912,7 +34084,7 @@ msgstr "" "Hosszú fadarab, amelyre szorosan számos acéldarabot kötöztek. Az így " "keletkezett fegyver esetlen és lassú, de ha betalál, az nagyon tud fájni." -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "fadeszka" @@ -35870,11 +36042,8 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." +"spike." msgstr "" -"Ez a középkori fegyver egy vastüskében végződő falándzsából áll. Bár a többi" -" lándzsához képest nagy és nehéz, pontossága és sebzése is páratlan." #: lang/json/GENERIC_from_json.py msgid "pot" @@ -43146,20 +43315,6 @@ msgstr "" "Éjjeli, bogárevő repülő emlősfajta. Főleg barlangokban és egyéb üregekben " "alszik, gyors repülése közben visszhang útján tájékozódik." -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "macilaci" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "" -"Ez nem a Jellystone nemzeti park, és ő sem a piknikkosarad tartalmára " -"vágyik. Az egykoron büszke medve gőzölgő maradványaiból fekete szemek " -"tekintenek rád, teli rosszindulattal... és éhséggel." - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "forradásos zombi" @@ -43371,11 +43526,9 @@ msgstr "K.F.L.H." #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "" -"K.F.L.H.: kannibalisztikus földalatt lakó humanoid. Évekig tartó föld alatt " -"lakástól elsápadt és megörült emberi lény." #: lang/json/MONSTER_from_json.py msgid "police bot" @@ -46137,10 +46290,10 @@ msgstr "" "farkasok és óriás mutáns pókok kedvenc zsákmányállata." #: lang/json/MONSTER_from_json.py -msgid "labrador mutt" -msgstr "labrador korcs" +msgid "Labrador mutt" +msgstr "" -#. ~ Description for labrador mutt +#. ~ Description for Labrador mutt #: lang/json/MONSTER_from_json.py msgid "" "This once average Labrador mixed breed dog has clearly gone feral. You can " @@ -46152,10 +46305,10 @@ msgstr "" "Biztosan megharapna, ha hagynád." #: lang/json/MONSTER_from_json.py -msgid "labrador puppy" -msgstr "labrador kölyök" +msgid "Labrador puppy" +msgstr "" -#. ~ Description for labrador puppy +#. ~ Description for Labrador puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Labrador puppy. Much safer to tame than adult " @@ -46171,11 +46324,9 @@ msgstr "bulldog" #. ~ Description for bulldog #: lang/json/MONSTER_from_json.py msgid "" -"The American Bulldog is a hardy, well built dog, that seems suited for " +"The American bulldog is a hardy, well built dog, that seems suited for " "surviving the apocalypse." msgstr "" -"Ez az amerikai bulldog egy szívós, jó felépítésű kutya, amelyet mintha " -"kifejezetten az apokalipszis túlélésére teremtettek volna." #: lang/json/MONSTER_from_json.py msgid "bulldog puppy" @@ -46184,11 +46335,9 @@ msgstr "bulldog kölyök" #. ~ Description for bulldog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless American Bulldog puppy. Much safer to tame than " +"An adorable, defenseless American bulldog puppy. Much safer to tame than " "adult counterparts." msgstr "" -"Édes, védtelen amerikai bulldog kölyök. Sokkal könnyebben megszelídíthető, " -"mint a felnőttek." #: lang/json/MONSTER_from_json.py msgid "pit bull mix" @@ -46197,15 +46346,11 @@ msgstr "pitbull keverék" #. ~ Description for pit bull mix #: lang/json/MONSTER_from_json.py msgid "" -"The oft-misunderstood Pit Bull is not actually a single breed but a label " -"for several such as American Pit Bull Terrier and American Staffordshire " -"Terrier. Average abilities and well-known for their 'lock jaw' which isn't " -"real but their incredible determination is." +"The oft-misunderstood pit bull is not actually a single breed but a label " +"for several such as the American pit bull terrier and American Staffordshire" +" terrier. Average abilities and well-known for their 'lock jaw' which isn't" +" real but their incredible determination is." msgstr "" -"A gyakran félreértett pitbull nem egy különálló fajta, hanem számos egyéb " -"fajta keveréke, például az amerikai pitbull terrieré illetve az amerikai " -"staffordshire terrieré. Átlagos képességekkel rendelkezik, és a szájzáráról" -" ismert, ami ugyan nem létezik." #: lang/json/MONSTER_from_json.py msgid "pit bull puppy" @@ -46214,11 +46359,9 @@ msgstr "pitbull kölyök" #. ~ Description for pit bull puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Pit Bull puppy. Much safer to tame than adult " +"An adorable, defenseless pit bull puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Édes, védtelen pitbull kölyök. Sokkal könnyebben megszelídíthető, mint a " -"felnőttek." #: lang/json/MONSTER_from_json.py msgid "beagle" @@ -46227,7 +46370,7 @@ msgstr "beagle" #. ~ Description for beagle #: lang/json/MONSTER_from_json.py msgid "" -"An adorable Beagle that has managed to survive the apocalypse. Being agile " +"An adorable beagle that has managed to survive the apocalypse. Being agile " "and small, they are difficult to shoot at. Generally attacks in packs." msgstr "" @@ -46238,7 +46381,7 @@ msgstr "" #. ~ Description for beagle puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Beagle puppy. Much safer to tame than adult " +"An adorable, defenseless beagle puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -46250,7 +46393,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "" "An athletic and hyperactive dog that loves to herd animals and jump, the " -"Border Collie is an agile attacker. Although they can be easy to train, " +"border collie is an agile attacker. Although they can be easy to train, " "they don't work well in packs." msgstr "" @@ -46261,7 +46404,7 @@ msgstr "" #. ~ Description for border collie puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Border Collie puppy. Much safer to tame than adult" +"An adorable, defenseless border collie puppy. Much safer to tame than adult" " counterparts." msgstr "" @@ -46272,7 +46415,7 @@ msgstr "" #. ~ Description for boxer mastiff #: lang/json/MONSTER_from_json.py msgid "" -"An ordinary breed full of affection, the Boxer Mastiff doesn't otherwise " +"An ordinary breed full of affection, the boxer mastiff doesn't otherwise " "stand out amongst other dogs with its capabilities." msgstr "" @@ -46283,15 +46426,15 @@ msgstr "" #. ~ Description for boxer puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Boxer puppy. Much safer to tame than adult " +"An adorable, defenseless boxer puppy. Much safer to tame than adult " "counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "chihuahua" +msgid "Chihuahua" msgstr "" -#. ~ Description for chihuahua +#. ~ Description for Chihuahua #: lang/json/MONSTER_from_json.py msgid "" "It's a tiny Chihuahua. How it has managed to survive is a miracle; although" @@ -46299,10 +46442,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "chihuahua puppy" +msgid "Chihuahua puppy" msgstr "" -#. ~ Description for chihuahua puppy +#. ~ Description for Chihuahua puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Chihuahua puppy. Much safer to tame than adult " @@ -46327,15 +46470,15 @@ msgstr "" #. ~ Description for dachshund puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Dachshund puppy. Much safer to tame than adult " +"An adorable, defenseless dachshund puppy. Much safer to tame than adult " "counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "german shepherd" +msgid "German shepherd" msgstr "" -#. ~ Description for german shepherd +#. ~ Description for German shepherd #: lang/json/MONSTER_from_json.py msgid "" "The original K-9 breed. An easy to train and great attack dog that will " @@ -46343,21 +46486,21 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "german shepherd puppy" +msgid "German shepherd puppy" msgstr "" -#. ~ Description for german shepherd puppy +#. ~ Description for German shepherd puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless German Shepherd puppy. Much safer to tame than " +"An adorable, defenseless German shepherd puppy. Much safer to tame than " "adult counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees" +msgid "Great Pyrenees" msgstr "" -#. ~ Description for great pyrenees +#. ~ Description for Great Pyrenees #: lang/json/MONSTER_from_json.py msgid "" "A large and powerful breed, the Great Pyrenees has a beautiful, thick white " @@ -46366,10 +46509,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees puppy" +msgid "Great Pyrenees puppy" msgstr "" -#. ~ Description for great pyrenees puppy +#. ~ Description for Great Pyrenees puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Great Pyrenees puppy. Much safer to tame than " @@ -46383,7 +46526,7 @@ msgstr "" #. ~ Description for rottweiler #: lang/json/MONSTER_from_json.py msgid "" -"Terrifying breed to face feral, as the Rottweiler breed is descended from " +"Terrifying breed to face feral, as the rottweiler breed is descended from " "Roman legion mastiffs. Robust and vicious, quite capable of mauling a human" " to death." msgstr "" @@ -46395,7 +46538,7 @@ msgstr "" #. ~ Description for rottweiler puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Rottweiler puppy. Much safer to tame than adult " +"An adorable, defenseless rottweiler puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -46406,8 +46549,8 @@ msgstr "" #. ~ Description for cattle dog #: lang/json/MONSTER_from_json.py msgid "" -"An agile and sturdy breed that is welcome on any farm, the Australian Cattle" -" Dog is adept at leaping fences and herding livestock." +"An agile and sturdy breed that is welcome on any farm, the Australian cattle" +" dog is adept at leaping fences and herding livestock." msgstr "" #: lang/json/MONSTER_from_json.py @@ -46417,7 +46560,7 @@ msgstr "" #. ~ Description for cattle dog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Australian Cattle Dog puppy. Much safer to tame " +"An adorable, defenseless Australian cattle dog puppy. Much safer to tame " "than adult counterparts." msgstr "" @@ -47632,6 +47775,20 @@ msgstr "" msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "" +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "macilaci" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "" +"Ez nem a Jellystone nemzeti park, és ő sem a piknikkosarad tartalmára " +"vágyik. Az egykoron büszke medve gőzölgő maradványaiból fekete szemek " +"tekintenek rád, teli rosszindulattal... és éhséggel." + #: lang/json/MONSTER_from_json.py msgid "Compsognathus" msgstr "Compsognathus" @@ -49636,11 +49793,8 @@ msgstr[1] "XL túlélő tűzálló maszk" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from" -" heat, smoke, teargas, and shrapnel. It must be prepared before use." +" heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" -"Egyedi készítésű, Nomex hőszigetelt, arcot és szemet befedő, megerősített " -"gázmaszk. A mutáció fokától függetlenül kiváló védelmet nyújt a hő, a füst, " -"a könnygáz és a repeszek ellen. Használatához elő kell készíteni." #: lang/json/TOOL_ARMOR_from_json.py msgid "firefighter PBA mask" @@ -50623,6 +50777,42 @@ msgid "" "into an active cable charger system." msgstr "" +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "rohamrendőr sisak" +msgstr[1] "rohamrendőr sisak" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "" + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "" + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "" +msgstr[1] "" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "" + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." +msgstr "" + #: lang/json/TOOL_from_json.py msgid "integrated toolset" msgid_plural "integrated toolsets" @@ -56199,7 +56389,7 @@ msgstr "" "megszünteti az asztmás rohamokat és a füst belégzése okozta köhögést, és még" " némi rövidtávú energiát is ad." -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" msgstr[0] "forrasztópáka" @@ -58007,14 +58197,6 @@ msgid "" " to a potato." msgstr "" -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "" - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" @@ -59274,6 +59456,18 @@ msgid_plural "autonomous surgical razors" msgstr[0] "" msgstr[1] "" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While" +" activated, they will continously drain power to make automated precise cuts" +" but you will be unable to wield anything." +msgstr "" +"A felhasználó ujjbegyeibe sebészeti precizitású pengerendszer került " +"beépítésre. Aktiválásakor folyamatosan energiát használ automatikus vágások " +"ejtésére, viszont semmit sem lehet emiatt kézben tartani." + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -61659,6 +61853,12 @@ msgstr "" "lengéscsillapítók felfogják a testedet ért erős ütéseket, ám ettől lassabban" " mozogsz." +#: lang/json/bionic_from_json.py lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "Ionos túlterhelés generátor" +msgstr[1] "Ionos túlterhelés generátor" + #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" msgstr "Szinaptikus regenerálás" @@ -61676,13 +61876,6 @@ msgstr "" "energiát használsz. Aktív állapotában nem leszel álmos. Ha már álmos vagy, " "akkor alvás közben felgyorsítja a pihenésedet." -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "Ionos túlterhelés generátor" -msgstr[1] "Ionos túlterhelés generátor" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "Autonóm sebészeti penge" @@ -63834,12 +64027,12 @@ msgstr "Lézerrel becélzott" msgid "A laser sight is targeting you!" msgstr "Egy lézer vett célba!" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" msgstr "Füst" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "A sűrű füst jó mélyen a tüdődbe hatolt." @@ -64731,11 +64924,9 @@ msgstr "Nyugtatógáz" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" -"You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort." +"You are thoroughly relaxed and don't feel like moving. Fighting? Too much " +"effort." msgstr "" -"Erő - 3; Ügyesség - 3; Intelligencia - 2; Érzékelés - 4\n" -"Nagyon lenyugodtál, és még mozdulni sincs kedved. Bunyózni meg pláne." #. ~ Apply message for effect(s) 'Relaxation gas'. #: lang/json/effects_from_json.py @@ -65074,11 +65265,12 @@ msgstr "Nagyrész begyógyult" msgid "This damaged limb is slowly regaining its functions." msgstr "Ez a sérült végtag lassan, de gyógyul." -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" msgstr "Rokkant" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "" @@ -67557,8 +67749,7 @@ msgstr "" "sértetlenül megmaradnak és újra használhatók." #: lang/json/gun_from_json.py lang/json/gun_from_json.py -#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py -#: lang/json/gunmod_from_json.py src/item.cpp +#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" msgid "pistol" msgstr "pisztoly" @@ -68515,10 +68706,10 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" #: lang/json/gun_from_json.py @@ -69346,14 +69537,10 @@ msgstr[1] "" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those" " who wander the \"Earth-that-was\"." msgstr "" -"Az amerikai polgárháború alatt gyártott ritka és drága, eredeti LeMat " -"revolver modernizált változata. 9 modern .44-es tölténnyel és egy darab 12 " -"ga-s sörétes lőszerrel felszerelve kiváló társa mindenkinek, aki a régmúlt " -"idők Földjén mászkálnak." #: lang/json/gun_from_json.py msgid "Ruger Redhawk" @@ -73107,6 +73294,39 @@ msgstr "" "részét alakítja át 9x19 mm-esre. Az átalakítás eredményeképpen egy kicsit " "csökken a fegyver pontossága." +#: lang/json/gunmod_from_json.py +msgid "belt feed adapter" +msgid_plural "belt feed adapters" +msgstr[0] "töltényhevederes átalakítás" +msgstr[1] "töltényhevederes átalakítás" + +#: lang/json/gunmod_from_json.py +msgid "" +"A kit providing the necessary parts for permanently converting a firearm " +"from magazine to belt-feed. Guaranteed to void your warranty." +msgstr "" +"A készlet az összes olyan alkatrészt tartalmazza, amely a fegyvert állandó " +"jelleggel átalakítja tölténytárasról töltényhevederesre. A gyártói jótállást" +" garantáltan megszünteti." + +#: lang/json/gunmod_from_json.py +msgid "magazine" +msgstr "tölténytár" + +#: lang/json/gunmod_from_json.py +msgid "tuned mechanism" +msgid_plural "tuned mechanisms" +msgstr[0] "finomhangolt mechanizmus" +msgstr[1] "finomhangolt mechanizmus" + +#: lang/json/gunmod_from_json.py +msgid "" +"A set of finely tuned internal components which increase the precision and " +"reliably of a firearm." +msgstr "" +"A finomhangolt belső alkatrészek növelik a fegyver pontosságát és " +"megbízhatóságát." + #: lang/json/gunmod_from_json.py msgid "arrow rest" msgid_plural "arrow rests" @@ -73248,11 +73468,8 @@ msgstr[1] "LW csőhosszabbító" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." +"firearm, contributing to both accuracy and damage." msgstr "" -"A beépített Leadworks hosszabb csőve növeli a lőfegyver torkolati " -"sebességét, így javítja a pontosságát és károkozását, viszont lassítja a " -"célzást." #: lang/json/gunmod_from_json.py msgid "LW shortened barrel" @@ -73279,7 +73496,7 @@ msgstr[1] "" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." +"shooting. Increases damage output and weapon range." msgstr "" #: lang/json/gunmod_from_json.py @@ -73308,11 +73525,8 @@ msgstr[1] "ergonomikus markolat" #: lang/json/gunmod_from_json.py msgid "" -"A set of ergonomic replacement furniture for a firearm improving handling " -"and accuracy." +"A set of ergonomic replacement furniture for a firearm improving handling." msgstr "" -"A lőfegyver kezelhetőségét és pontosságát növeli ez az ergonomikus markolat " -"csere." #: lang/json/gunmod_from_json.py msgid "beam scatterer" @@ -73369,25 +73583,6 @@ msgstr "" msgid "emitter" msgstr "kisugárzó" -#: lang/json/gunmod_from_json.py -msgid "belt feed adapter" -msgid_plural "belt feed adapters" -msgstr[0] "töltényhevederes átalakítás" -msgstr[1] "töltényhevederes átalakítás" - -#: lang/json/gunmod_from_json.py -msgid "" -"A kit providing the necessary parts for permanently converting a firearm " -"from magazine to belt-feed. Guaranteed to void your warranty." -msgstr "" -"A készlet az összes olyan alkatrészt tartalmazza, amely a fegyvert állandó " -"jelleggel átalakítja tölténytárasról töltényhevederesre. A gyártói jótállást" -" garantáltan megszünteti." - -#: lang/json/gunmod_from_json.py -msgid "magazine" -msgstr "tölténytár" - #: lang/json/gunmod_from_json.py msgid "leadworks magazine adapter" msgid_plural "leadworks magazine adapters" @@ -73411,22 +73606,9 @@ msgstr[1] "finomsúlyozott ravasz" #: lang/json/gunmod_from_json.py msgid "" -"A precision weighted trigger assembly that improves a firearm's accuracy." -msgstr "A finoman súlyozott ravasz szerkezet növeli a lőfegyver pontosságát." - -#: lang/json/gunmod_from_json.py -msgid "tuned mechanism" -msgid_plural "tuned mechanisms" -msgstr[0] "finomhangolt mechanizmus" -msgstr[1] "finomhangolt mechanizmus" - -#: lang/json/gunmod_from_json.py -msgid "" -"A set of finely tuned internal components which increase the precision and " -"reliably of a firearm." +"A precision weighted trigger assembly that slightly improves a firearm's " +"accuracy." msgstr "" -"A finomhangolt belső alkatrészek növelik a fegyver pontosságát és " -"megbízhatóságát." #: lang/json/gunmod_from_json.py msgid "firearm waterproofing" @@ -73618,11 +73800,8 @@ msgstr[1] "giroszkópos stabilizátor" #: lang/json/gunmod_from_json.py msgid "" "An advanced unit that straps onto the side of your firearm and reduces " -"vibration, greatly reducing recoil and increasing accuracy." +"vibration, greatly reducing recoil and slightly increasing accuracy." msgstr "" -"Ez a fegyver oldalára szerelhető modern berendezés csökkenti a fegyvertesten" -" átfutó rezgéseket, ezzel jelentősen csökkenti a visszarúgást és növeli a " -"pontosságot." #: lang/json/gunmod_from_json.py msgid "LW gyroscopic stabilizer" @@ -75043,8 +75222,8 @@ msgstr "" msgid "" "Note that while several ammo types exist for a given caliber and magazine " "type, you can't mix and match these types into a single magazine. You can't " -"for example load 9x19mm JHP and 9x19 FMJ ammo into the same magazine, since " -"a magazine always requires identical rounds to be loaded in it." +"for example load 9x19mm JHP and 9x19mm FMJ ammo into the same magazine, " +"since a magazine always requires identical rounds to be loaded in it." msgstr "" #: lang/json/help_from_json.py @@ -75773,6 +75952,10 @@ msgstr "Rágás" msgid "Clear rubble" msgstr "Romok eltakarítása" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "Kokain felszívása" @@ -75801,6 +75984,11 @@ msgstr "Fújás" msgid "Make it talk" msgstr "Beszéltetés" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "Füst" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "Levesz" @@ -75842,6 +76030,10 @@ msgstr "Belélegzés" msgid "Drill" msgstr "Fúrás" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "Kérdezzen" + #: lang/json/item_action_from_json.py lang/json/item_action_from_json.py #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Read" @@ -75884,6 +76076,7 @@ msgid "Squeeze" msgstr "Összenyom" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" msgstr "(Le)játszás" @@ -75921,6 +76114,11 @@ msgstr "Borotválkozás" msgid "Siphon" msgstr "Leszívás" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "Füst" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "Valamit leírni" @@ -75973,6 +76171,11 @@ msgstr "Lõszer eltárolása/kitárazása" msgid "Make some noise" msgstr "Zajkeltés" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "(Le)játszás" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "Aktiválás/deaktiválás" @@ -76936,10 +77139,18 @@ msgstr "Melyik oldalon legyen a páncél?" msgid "Assign invlets to armor" msgstr "Invlet páncélhoz rendelése" +#: lang/json/keybinding_from_json.py +msgid "Sort armor into natural layer order" +msgstr "" + #: lang/json/keybinding_from_json.py msgid "Equip armor from inventory" msgstr "Páncél felvétele leltárból" +#: lang/json/keybinding_from_json.py +msgid "Equip armor from inventory at this position" +msgstr "" + #: lang/json/keybinding_from_json.py msgid "Unequip selected armor" msgstr "Kiválasztott páncél levétele" @@ -77785,6 +77996,22 @@ msgstr "Alacsonyabb prioritás" msgid "Change sort order" msgstr "Sorrendváltás" +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "tűz" + #: lang/json/keybinding_from_json.py msgid "List items and monsters" msgstr "Tárgyak és szörnyek listázása" @@ -77967,13 +78194,11 @@ msgstr "Egyedi szín eltávolítása" msgid "Load color template" msgstr "Színsablon betöltése" -#: lang/json/keybinding_from_json.py src/craft_command.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/veh_interact.cpp msgid "Yes" msgstr "Igen" -#: lang/json/keybinding_from_json.py src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/options.cpp src/veh_interact.cpp msgid "No" msgstr "Nem" @@ -78123,6 +78348,11 @@ msgstr "" msgid "Open Vault" msgstr "" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -78818,7 +79048,8 @@ msgid "Emergency Message" msgstr "" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py lang/json/mapgen_from_json.py +#: lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "" @@ -78879,7 +79110,6 @@ msgstr "HIBA: JELKAPCSOLAT MEGSZŰNT" #. ~ Computer option #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py -#: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "" @@ -80276,7 +80506,8 @@ msgstr "Próbáld meg egy könyvtárban." msgid "Got that book for me?" msgstr "Elhoztad azt a könyvet?" -#: lang/json/mission_def_from_json.py src/npctalk.cpp src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Thanks!" msgstr "Köszi!" @@ -81033,7 +81264,7 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." +"prophesied events accurately before concerning the Church of Starry Wisdom." msgstr "" #: lang/json/mission_def_from_json.py @@ -81356,7 +81587,7 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels" " is boosted so we can pick it up at much longer ranges. I really need you " @@ -90373,7 +90604,7 @@ msgstr "folyó" msgid "river bank" msgstr "folyópart" -#: lang/json/overmap_terrain_from_json.py +#: lang/json/overmap_terrain_from_json.py lang/json/snippet_from_json.py msgid "house" msgstr "ház" @@ -91448,6 +91679,14 @@ msgstr "lakókocsis kemping" msgid "mass grave" msgstr "tömegsír" +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "" + #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" msgstr "elhagyatott drive-in" @@ -97383,6 +97622,116 @@ msgstr "" "szabadság néhány hete után a túléléshez most viszont szükséged van minden " "képességedre." +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "WEAPON" @@ -98566,17 +98915,21 @@ msgstr "Kihívás-Labor" #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" +"Bezártak egy laborba, ahonnan nincsen egyértelmű kijárat! Keresd meg a " +"menekülő útvonalat, vagy éhen pusztulsz!" #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" +"Bezártak egy laborba, ahonnan nincsen egyértelmű kijárat! Keresd meg a " +"menekülő útvonalat, vagy éhen pusztulsz!" #. ~ Starting location for scenario 'Challenge-Lab'. #: lang/json/scenario_from_json.py @@ -99366,6 +99719,42 @@ msgid "" "zombies." msgstr "" +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" @@ -99525,7 +99914,7 @@ msgstr "" " szinten komplex rendszerekben is el tudsz igazodni, és akár még a " "biztonsági védelmüket is meg tudod kerülni." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "főzés" @@ -99659,7 +100048,7 @@ msgstr "" " és mozgásra, valamint meghatározza a nehezebb úszófelszerelés úszásra " "vonatkozó teljesítmény rontását." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "varrás" @@ -100267,6 +100656,42 @@ msgid "" "spawn with more resources." msgstr "Nem számít csalásnak, ha több tárgyat tartalmazó világot hozol létre." +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best" +" friend." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "You feel great! It doesn't seem like wounds could even slow you down for " @@ -100973,6 +101398,566 @@ msgid "" " continuing production of PE062 there." msgstr "" +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -101196,7 +102181,7 @@ msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " "a man carrying a somewhat confused horse on his shoulders. He is flanked by" " two scantily clad nurses who hold bloody chainsaws and give approving " -"thumbs up. His bulging knees and elbows are stiched and seem to be the " +"thumbs up. His bulging knees and elbows are stitched and seem to be the " "source of his ability. The caption reads: \"Brand new! Horse power at " "hand!\"" msgstr "" @@ -101204,7 +102189,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " -"a man smiling while being relentlesly punched by a boxer. He doesn't even " +"a man smiling while being relentlessly punched by a boxer. He doesn't even " "sweat as punches have no effect on him. Two scantily clad nurses give " "approving thumbs up from the background. The caption reads: \"Bouncy as " "never before! Absorb those shocks!\"" @@ -104028,6 +105013,191 @@ msgstr "" "találsz egyet! Úgy hallottam azonban, hogy csak akkor hajlandó a műtétre, ha" " hozol magaddal kórházi altatószert." +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no" +" environment to save now, but one can still save thyself I guess." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their components." +" This guy around here, McSomething whatever his name is, is a master at " +"this." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are" +" always better than two." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my" +" sorry ass away from the horde, with nothing more but some white powder I " +"got from that zombie. Saved me that time." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it " +"lemon?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "" + #: lang/json/snippet_from_json.py msgid " " msgstr "" @@ -104132,10 +105302,6 @@ msgstr "" msgid "piece of shit" msgstr "" -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "" - #: lang/json/snippet_from_json.py msgid "scumbag" msgstr "" @@ -104412,7 +105578,7 @@ msgstr "" msgid "never" msgstr "" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" msgstr "" @@ -105308,7 +106474,7 @@ msgstr "" msgid "Hands in the air, !" msgstr "" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" msgstr "" @@ -108336,10 +109502,26 @@ msgstr "OEAF" msgid "Middle of Nowhere" msgstr "Semmi közepén" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "Kutatólabor" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "Kutatólabor legalján" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "Fagyos kutatólabor" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "Mélyhűtött kutatólabor" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "pláza rakodó" @@ -108436,6 +109618,14 @@ msgstr "Villa" msgid "Gas Station" msgstr "" +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" +msgstr "" + #: lang/json/talk_topic_from_json.py msgid "That sure is a shiny badge you got there!" msgstr "Milyen fényes jelvényed van!" @@ -108468,8 +109658,7 @@ msgstr "Mi van a füleddel?" msgid "Anything I can help with?" msgstr "Tudok valamiben segíteni?" -#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Well, bye." msgstr "Hát, akkor csá." @@ -108683,7 +109872,8 @@ msgstr "Nem érdekel." msgid "I see." msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Oh, okay." msgstr "" @@ -108760,6 +109950,259 @@ msgstr "Köszönöm." msgid "Thanks, bye." msgstr "Köszi, szia!" +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "Hát, szerintem akkor már csak mi maradtunk." + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "Legalább van fedél a fejünk felett." + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "" + +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's trade items." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "Nem tudom, gondolom keressünk használható cuccokat meg más túlélőket." + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "Talán azzal kéne kezdenünk, hogy bedeszkázzuk ezt a helyet." + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to" +" disappear quickly from here." +msgstr "" +"Szerintem nem ártana egy kocsit megszerelni, ha esetleg gyorsan el kell " +"innen tünnünk." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "" +"Megkereshetnénk az egyik farmot. Sok kaját lehet ott találni és messze van a" +" városoktól." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "" +"Nem ártana távol maradni azoktól a városoktól, még akkor is, ha amúgy egy " +"csomó cuccot lehet ott találni." + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "Addig nem, amíg nem kapok antibiotikumot..." + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "Nemrég kértél erre, majd később." + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "És miért pont veled utazzak?" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "Rendben, veled vagyok!" + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "Ja... szerintem nem." + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "Tényleg elmész?" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp +msgid "What is it?" +msgstr "Mi van?" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "Rendben, te vagy a főnök." + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "Dehogy is, még lemaradok!" + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "Én vagyok őrségben." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "Nem szeretném..." + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "Azt jobban szeretném magamnak megtartani." + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "Oké, tessék." + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "Rendben, akkor kezdjük." + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "" + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "" @@ -109468,10 +110911,6 @@ msgstr "" msgid "We're abandoning this camp." msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "" @@ -109503,7 +110942,7 @@ msgstr "" msgid "Are you looking to buy anything else?" msgstr "Valami mást is vásárolnál?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." msgstr "Hát..." @@ -109631,7 +111070,7 @@ msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of" " operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " @@ -110290,10 +111729,6 @@ msgstr "" msgid "I can't imagine what I'd need your assistance with." msgstr "" -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "" @@ -110358,10 +111793,6 @@ msgstr "Üdv köztünk." msgid "Can I trade for supplies?" msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " @@ -110638,7 +112069,7 @@ msgstr "" msgid "Not at technique at all" msgstr "" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp src/martialarts.cpp msgid "Block" msgstr "Blokkolás" @@ -110801,8 +112232,6 @@ msgid "Rapid Strike" msgstr "Gyors ütés" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "50% mozgás, 66% sérülés" @@ -110914,11 +112343,6 @@ msgstr "" msgid "Counterattack" msgstr "Ellentámadás" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -110933,22 +112357,10 @@ msgstr " ellentámadást mér %s testére" msgid "Feint" msgstr "Cselfogás" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "Ölelésből kiszabadulás" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -110963,11 +112375,6 @@ msgstr "ügyesen döf egyet %s testébe " msgid "Cross" msgstr "" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -110982,12 +112389,6 @@ msgstr "" msgid "Jab" msgstr "" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -111002,11 +112403,6 @@ msgstr "" msgid "Uppercut" msgstr "" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -111021,11 +112417,6 @@ msgstr "" msgid "Cross Counter" msgstr "" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -111054,14 +112445,6 @@ msgstr "" msgid "karate chop" msgstr "" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -111076,11 +112459,6 @@ msgstr "" msgid "throw" msgstr "dobás" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -111095,11 +112473,6 @@ msgstr "" msgid "dodge throw" msgstr "" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -111114,12 +112487,6 @@ msgstr "" msgid "feint at" msgstr "" -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -111130,11 +112497,6 @@ msgstr "" msgid " feints at %s" msgstr "" -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -111145,21 +112507,11 @@ msgstr "" msgid " disarms %s" msgstr "" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py lang/json/technique_from_json.py #: src/monster.cpp msgid "grab" msgstr "" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "" @@ -111174,20 +112526,10 @@ msgstr "" msgid " strikes %s" msgstr "" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -111202,11 +112544,6 @@ msgstr "" msgid "kick" msgstr "" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -111231,19 +112568,6 @@ msgstr "" msgid " flying knees %s" msgstr "" -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -111254,32 +112578,14 @@ msgstr "" msgid " jabs %s" msgstr "" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min" -" 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -111294,11 +112600,6 @@ msgstr "" msgid "axe-kick" msgstr "" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -111313,11 +112614,6 @@ msgstr "" msgid "side kick" msgstr "" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -111332,11 +112628,6 @@ msgstr "" msgid "sweep kick" msgstr "" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -111351,11 +112642,6 @@ msgstr "" msgid "biojutsu counter" msgstr "" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -111384,11 +112670,6 @@ msgstr "" msgid "biojutsu impale" msgstr "" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -111399,20 +112680,10 @@ msgstr "" msgid " brutally impales %s" msgstr "" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -111427,13 +112698,6 @@ msgstr "" msgid "Drunk feint" msgstr "" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -111448,11 +112712,6 @@ msgstr "" msgid "Drunk counter" msgstr "" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -111467,12 +112726,6 @@ msgstr "" msgid "Fencing lunge" msgstr "" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -111487,11 +112740,6 @@ msgstr "" msgid "Fencing thrust" msgstr "" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -111506,11 +112754,6 @@ msgstr "" msgid "Fencing stop thrust" msgstr "" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -111525,11 +112768,6 @@ msgstr "" msgid "Round strike" msgstr "" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -111558,11 +112796,6 @@ msgstr "" msgid "Snap strike" msgstr "" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -111577,11 +112810,6 @@ msgstr "" msgid "Combination strike" msgstr "" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -111596,11 +112824,6 @@ msgstr "" msgid "free strike" msgstr "" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -111615,13 +112838,6 @@ msgstr "" msgid "puño strike" msgstr "" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -111636,11 +112852,6 @@ msgstr "" msgid "knee strike" msgstr "" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -111655,11 +112866,6 @@ msgstr "" msgid "hamstring" msgstr "" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -111674,12 +112880,6 @@ msgstr "" msgid "Vicious Precision" msgstr "" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -111694,11 +112894,6 @@ msgstr "" msgid "Silat Brutality" msgstr "" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -111708,11 +112903,6 @@ msgstr "" msgid "Dirty Hit" msgstr "" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -111755,11 +112945,6 @@ msgstr "" msgid "Viper Bite" msgstr "" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -111774,11 +112959,6 @@ msgstr "" msgid "Viper Strike" msgstr "" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -111797,11 +112977,6 @@ msgstr "" msgid "Stinger Strike" msgstr "" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -111816,11 +112991,6 @@ msgstr "" msgid "Pincer Strike" msgstr "" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -111835,11 +113005,6 @@ msgstr "" msgid "Toad's Tongue" msgstr "" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -111918,11 +113083,6 @@ msgstr "" msgid "Tiger Takedown" msgstr "" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -111937,11 +113097,6 @@ msgstr "" msgid "Leopard Fist" msgstr "" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -111970,11 +113125,6 @@ msgstr "" msgid "Leopard Foresight" msgstr "" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -111989,11 +113139,6 @@ msgstr "" msgid "Dragon Snatch" msgstr "" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -112008,12 +113153,6 @@ msgstr "" msgid "Dragon's Vortex" msgstr "" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -112028,12 +113167,6 @@ msgstr "" msgid "Dragon Sweeper" msgstr "" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -112048,11 +113181,6 @@ msgstr "" msgid "Dragon Strike" msgstr "" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -112079,11 +113207,6 @@ msgstr "" msgid "Crane Flap" msgstr "" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "" @@ -112096,11 +113219,6 @@ msgstr "" msgid "Crane Strike" msgstr "" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -112120,20 +113238,10 @@ msgstr "" msgid "Power Hit" msgstr "" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -112162,11 +113270,6 @@ msgstr "" msgid "Flowing Water Cut" msgstr "" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -112181,11 +113284,6 @@ msgstr "" msgid "Red Leaf's Cut" msgstr "" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -112200,12 +113298,6 @@ msgstr "" msgid "Fire and Stone's Cut" msgstr "" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -112220,12 +113312,6 @@ msgstr "" msgid "In-One Timing" msgstr "" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "" -"50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -112236,11 +113322,6 @@ msgstr "" msgid " strikes %s's weaknesses" msgstr "" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "" @@ -115379,7 +116460,7 @@ msgstr "finom kalapáló" msgid "wood sawing" msgstr "fafűrészelő" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "fémfűrészelő" @@ -115423,7 +116504,7 @@ msgstr "ásó" msgid "bolt turning" msgstr "csavarozó" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "finom csavarozó" @@ -116137,6 +117218,14 @@ msgstr "" msgid "Circle Split" msgstr "" +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "" + #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" msgstr "Platós teherautó" @@ -119536,6 +120625,10 @@ msgstr "" msgid "You discover a %s!" msgstr "Ezt találtad: %s!" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "" + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "" @@ -119603,6 +120696,10 @@ msgstr "" msgid "You need to perform field dressing before quartering." msgstr "" +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "" + #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." msgstr "" @@ -119760,19 +120857,19 @@ msgstr "Befejezed a(z) %s lemészárlását." #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." msgstr "" #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." msgstr "" #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." msgstr "" @@ -119939,8 +121036,8 @@ msgid "You have lost the item you were using to start the fire." msgstr "Elvesztetted azt a tárgyat, amivel tüzet akartál gyújtani." #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." -msgstr "Nincs elég napfény ahhoz, hogy tüzet gyújts, ne is próbálkozz tovább." +msgid "There is not enough sunlight to start a fire now. You stop trying." +msgstr "" #: src/activity_handlers.cpp #, c-format @@ -120776,7 +121873,7 @@ msgstr "töltet" msgid "category" msgstr "kategória" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp src/effect.cpp msgid "damage" msgstr "sebzés" @@ -121004,6 +122101,59 @@ msgstr "Mind" msgid "Hang on a bit..." msgstr "Pillanat..." +#: src/armor_layers.cpp +msgid "close to your skin" +msgstr "" + +#: src/armor_layers.cpp +msgid "of normal clothing" +msgstr "" + +#: src/armor_layers.cpp +msgid "on your waist" +msgstr "" + +#: src/armor_layers.cpp +msgid "of outer clothing" +msgstr "" + +#: src/armor_layers.cpp +msgid "strapped to you" +msgstr "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgid_plural "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgstr[0] "" +msgstr[1] "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgid_plural "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgstr[0] "" +msgstr[1] "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgid_plural "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgstr[0] "" +msgstr[1] "" + #: src/armor_layers.cpp msgid "This is worn next to the skin." msgstr "Ezt közvetlenül a bőrön viseled." @@ -121174,16 +122324,18 @@ msgstr "" #, c-format msgid "" "Use the arrow- or keypad keys to navigate the left list.\n" -"Press [%s] to select highlighted armor for reordering.\n" -"Use [%s] / [%s] to scroll the right list.\n" -"Press [%s] to assign special inventory letters to clothing.\n" -"Press [%s] to change the side on which item is worn.\n" -"Use [%s] to equip an armor item from the inventory.\n" -"Press [%s] to remove selected armor from oneself.\n" +"[%s] to select highlighted armor for reordering.\n" +"[%s] / [%s] to scroll the right list.\n" +"[%s] to assign special inventory letters to clothing.\n" +"[%s] to change the side on which item is worn.\n" +"[%s] to sort armor into natural layer order.\n" +"[%s] to equip a new item.\n" +"[%s] to equip a new item at the currently selected position.\n" +"[%s] to remove selected armor from oneself.\n" " \n" "[Encumbrance and Warmth] explanation:\n" "The first number is the summed encumbrance from all clothing on that bodypart.\n" -"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers.\n" +"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers or wearing items outside of other items they would normally be work beneath (e.g. a shirt over a backpack).\n" "The sum of these values is the effective encumbrance value your character has for that bodypart." msgstr "" @@ -122264,6 +123416,12 @@ msgstr "" msgid "Your plugged-in solar pack is now able to charge your system." msgstr "" +#: src/bionics.cpp +msgid "" +"You need to connect the cable to yourself and the solar pack before your " +"solar pack can charge your system." +msgstr "" + #: src/bionics.cpp msgid "" "You might plug in your solar pack to the cable charging system, if you " @@ -122636,13 +123794,9 @@ msgstr "" #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out" -" when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "" -"Nagyon, nagyon mozdulatlanul fekszel, és figyelmedet a plafon egyik " -"érdekesebb sziklatömbjére fordítod, miközben a robotdoki fájdalommentesen " -"belédvág. Szerencsédre elveszted az eszméleted, amikor a pengék a " -"látómeződbe kerülnek." #: src/bionics_ui.cpp #, c-format @@ -122755,6 +123909,55 @@ msgstr "" "Nem aktiválható a(z) %s! \n" "A(z) %s leírásának elolvasásához nyomd meg a '!' majd a '%c' gombot." +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "Sebesség" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "erő" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "ügyesség" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "intelligencia" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "figyelem" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr "" + #: src/calendar.cpp msgid "forever" msgstr "örökké" @@ -122787,6 +123990,13 @@ msgid_plural "%d days" msgstr[0] "%d nap" msgstr[1] "%d nap" +#: src/calendar.cpp +#, c-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "" +msgstr[1] "" + #: src/calendar.cpp #, c-format msgid "%d season" @@ -122843,6 +124053,15 @@ msgid_plural "%3d days" msgstr[0] "%3d nap" msgstr[1] "%3d nap" +#. ~ Right-aligned time string. should right-align with other strings with +#. this same comment +#: src/calendar.cpp +#, c-format +msgid "%3d week" +msgid_plural "%3d weeks" +msgstr[0] "" +msgstr[1] "" + #. ~ Right-aligned time string. should right-align with other strings with #. this same comment #: src/calendar.cpp @@ -123171,22 +124390,6 @@ msgstr "" msgid "Liquid from your inventory has leaked onto the ground." msgstr "" -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "erő" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "ügyesség" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "intelligencia" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "figyelem" - #: src/character.cpp msgid "Left Arm" msgstr "Bal kar" @@ -123284,9 +124487,7 @@ msgstr "" msgid "No limb would benefit from it." msgstr "" -#: src/character.cpp src/game.cpp src/game.cpp src/iexamine.cpp -#: src/inventory_ui.cpp src/npctalk_funcs.cpp src/pickup.cpp src/turret.cpp -#: src/vehicle_use.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp src/pickup.cpp msgid "Cancel" msgstr "Mégse" @@ -123369,7 +124570,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" msgstr "" @@ -123390,7 +124591,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" msgstr "" @@ -123407,7 +124608,7 @@ msgid "Destination for guns, bows and similar weapons." msgstr "" #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" msgstr "" @@ -123450,7 +124651,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" msgstr "" @@ -123499,7 +124700,7 @@ msgid "Destination for Compact Bionics Modules aka CBMs." msgstr "" #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" msgstr "" @@ -123542,7 +124743,7 @@ msgid "Destination for chemicals." msgstr "" #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" msgstr "" @@ -123569,7 +124770,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" msgstr "" @@ -123594,7 +124795,7 @@ msgid "Items inside of this zone are ignored by \"sort out loot\" zone-action." msgstr "" #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" msgstr "" @@ -124810,7 +126011,7 @@ msgstr "" msgid "Result: " msgstr "" -#: src/construction.cpp src/crafting_gui.cpp src/recipe.cpp +#: src/construction.cpp src/crafting_gui.cpp msgid "N/A" msgstr "N/A" @@ -124925,13 +126126,17 @@ msgstr "A felszín felé utat vágsza magadnak." msgid "After boarding up the window the curtains and curtain rod are left." msgstr "Az ablak bedeszkázása után feleslegessé vált a karnis és a függöny." +#: src/construction.cpp +msgid "You gather some clay." +msgstr "Összeszedsz valamennyi agyagot." + #: src/construction.cpp msgid "You gather some sand." msgstr "Összeszedsz valamennyi homokot." #: src/construction.cpp -msgid "You gather some clay." -msgstr "Összeszedsz valamennyi agyagot." +msgid "You gather some materials." +msgstr "" #: src/construction.cpp msgid "You cannot build there!" @@ -125413,6 +126618,16 @@ msgstr "%s (%d/%d közel és nálad)" msgid "Use which component?" msgstr "Melyik hozzávalót használod?" +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "" + #: src/crafting.cpp msgid "Use which tool?" msgstr "Melyik szerszámot használod?" @@ -125571,37 +126786,37 @@ msgstr "Leírása: %s" #: src/crafting_gui.cpp #, c-format -msgid "Skills used: %s" -msgstr "Használt készségek: %s" +msgid "Primary skill used: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Required skills: %s" -msgstr "Szükséges készségek: %s" +msgid "Difficulty: %d" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Difficulty: %d" -msgstr "Nehézség: %d" +msgid "Your skill level: %d" +msgstr "" #: src/crafting_gui.cpp -msgid "Your skill level: N/A" -msgstr "Készségszinted: N/A" +msgid "Your skill level: N/A" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Your skill level: %d" -msgstr "Készségszinted: %d" +msgid "Other skills used: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Time to complete: %s" -msgstr "Befejezéshez szükséges idő: %s" +msgid "Time to complete: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Dark craftable? %s" -msgstr "Sötétben készíthető? %s" +msgid "Dark craftable? %s" +msgstr "" #: src/crafting_gui.cpp src/defense.cpp msgid "Easy" @@ -125627,49 +126842,79 @@ msgstr "Azt nem lehet!" msgid "Nothing selected!" msgstr "Semmit se választottál ki!" -#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp -msgid "Search:" -msgstr "Keresés:" +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "igen" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" +msgstr "" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" -msgstr "" -"Különleges előtagok a hozzávalókhoz:\n" -" [t] szerszámot keres\n" -" [c] összetevőt keres\n" -" [q] jellemzőt keres\n" -" [s] készséget keres\n" -"Különleges előtagok az eredményhez:\n" -" [Q] minőséget keres\n" -"Egyéb:\n" -" [h] rejtettet keres\n" -" [m] megtanultat keres\n" -"Példák:\n" -" t:kalapács\n" -" c:deszka\n" -" q:mészárló\n" -" s:főzés\n" -" Q:finom csavarozó\n" -" h:igen\n" -" m:nem" +"The default is to search result names. Some single-character prefixes can be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" +msgstr "" + +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" +msgstr "" + +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" +msgstr "" + +#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp +msgid "Search:" +msgstr "Keresés:" #: src/crafting_gui.cpp msgid "RESULTS" @@ -125701,10 +126946,6 @@ msgstr "túl szomorú" msgid "slow %d%%" msgstr "lassú %d%%" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "igen" - #: src/crafting_gui.cpp msgid "Searched" msgstr "Keresés" @@ -125849,6 +127090,11 @@ msgstr "Barátságos" msgid "BUG: Behavior unnamed. (Creature::get_attitude_ui_data)" msgstr "BUG: Behavior unnamed. (Creature::get_attitude_ui_data)" +#: src/debug.cpp +#, c-format +msgid "See %s for a full stack backtrace" +msgstr "" + #: src/debug.cpp msgid "An error has occurred! Written below is the error report:" msgstr "" @@ -127065,7 +128311,7 @@ msgstr "" msgid "You must construct expansions in fields." msgstr "" -#: src/editmap.cpp src/mission_companion.cpp +#: src/editmap.cpp src/faction_camp.cpp msgid "" "Engine cannot support merging vehicles from two overmaps, please remove them" " from the OM tile." @@ -129071,616 +130317,2069 @@ msgstr "Étel: %s" msgid "Combat Ability: %s" msgstr "Harckészség: %s" -#: src/field.cpp -msgid "blood splatter" -msgstr "vércseppek" +#: src/faction_camp.cpp +msgid " [DONE]\n" +msgstr "" -#: src/field.cpp -msgid "blood stain" -msgstr "vérfolt" +#: src/faction_camp.cpp +msgid " left]\n" +msgstr "" -#: src/field.cpp -msgid "puddle of blood" -msgstr "vértócsa" +#: src/faction_camp.cpp +msgid "Upgrade Camp" +msgstr "" -#: src/field.cpp -msgid "bile splatter" -msgstr "epecseppek" +#: src/faction_camp.cpp +msgid "Working to expand your camp!\n" +msgstr "" -#: src/field.cpp -msgid "bile stain" -msgstr "epefolt" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?" +msgstr "" +"\n" +" \n" +"Vissza szeretnéd hívni a szövetségeseidet a csoportba?" -#: src/field.cpp -msgid "puddle of bile" -msgstr "epetócsa" +#: src/faction_camp.cpp +msgid "Recover Ally from Upgrading" +msgstr "" -#: src/field.cpp -msgid "bloody meat chunks" -msgstr "véres húsdarabok" +#: src/faction_camp.cpp +msgid "Busy crafting!\n" +msgstr "" -#: src/field.cpp -msgid "heap of gore" -msgstr "véres húshalom" +#: src/faction_camp.cpp +msgid " (Finish) Crafting" +msgstr "" -#: src/field.cpp -msgid "scraps of flesh" -msgstr "húscafatok" +#: src/faction_camp.cpp +msgid "Gather Materials" +msgstr "" -#: src/field.cpp -msgid "broken vegetation tangle" -msgstr "átszakított növényzet" +#: src/faction_camp.cpp +msgid "Searching for materials to upgrade the camp.\n" +msgstr "" -#: src/field.cpp -msgid "shattered branches and leaves" -msgstr "szétszórt ágak és levelek" +#: src/faction_camp.cpp +msgid "Recover Ally from Gathering" +msgstr "" -#: src/field.cpp -msgid "shredded leaves and twigs" -msgstr "levél- és gallycafatok" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" +" \n" +"Effects:\n" +"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" +" \n" +"Must have enjoyability >= -6\n" +"Perishable food liquidated at penalty depending on upgrades and rot time:\n" +"> Rotten: 0%%\n" +"> Rots in < 2 days: 60%%\n" +"> Rots in < 5 days: 80%%\n" +" \n" +"Total faction food stock: %d kcal or %d day's rations" +msgstr "" -#: src/field.cpp -msgid "cobwebs" -msgstr "pókhálók" +#: src/faction_camp.cpp +msgid "Distribute Food" +msgstr "" -#: src/field.cpp -msgid "thick webs" -msgstr "sűrű hálók" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" +" \n" +"Effects:\n" +"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" +"> Items sitting on any type of furniture will not be moved.\n" +"> Items that are not listed in one of the categories are defaulted to the tools group." +msgstr "" -#: src/field.cpp -msgid "webs" -msgstr "hálók" +#: src/faction_camp.cpp +msgid "Reset Sort Points" +msgstr "" -#: src/field.cpp -msgid "puddle of slime" -msgstr "nyálkatócsa" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to gather light brush and heavy sticks.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +"> heavy sticks\n" +"> withered plants\n" +"> splintered wood\n" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "slime stain" -msgstr "nyálkafolt" +#: src/faction_camp.cpp +msgid "Collect Firewood" +msgstr "" -#: src/field.cpp -msgid "slime trail" -msgstr "nyálkacsík" +#: src/faction_camp.cpp +msgid "Searching for firewood.\n" +msgstr "" -#: src/field.cpp -msgid "acid splatter" -msgstr "savcseppek" +#: src/faction_camp.cpp +msgid "Recover Firewood Gatherers" +msgstr "" -#: src/field.cpp -msgid "acid streak" -msgstr "savcsík" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to do low level chores and sort supplies.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" +"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "pool of acid" -msgstr "savtócsa" +#: src/faction_camp.cpp +msgid "Menial Labor" +msgstr "" -#: src/field.cpp -msgid "glob of sap" -msgstr "gyanta golyóbis" +#: src/faction_camp.cpp +msgid "Performing menial labor...\n" +msgstr "" -#: src/field.cpp -msgid "pool of sap" -msgstr "gyantatócsa" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?\n" +msgstr "" -#: src/field.cpp -msgid "sap splatter" -msgstr "gyantacseppek" +#: src/faction_camp.cpp +msgid "Recover Menial Laborer" +msgstr "" -#: src/field.cpp -msgid "sludge trail" -msgstr "ipszapcsík" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours \n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thick sludge trail" -msgstr "sűrű iszapcsík" +#: src/faction_camp.cpp +msgid "Expand Base" +msgstr "" -#: src/field.cpp -msgid "thin sludge trail" -msgstr "híg iszapcsík" +#: src/faction_camp.cpp +msgid "Surveying for expansion...\n" +msgstr "" -#: src/field.cpp -msgid "fire" -msgstr "tűz" +#: src/faction_camp.cpp +msgid "Recover Surveyor" +msgstr "" -#: src/field.cpp -msgid "raging fire" -msgstr "tomboló tűz" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to a nearby forest to cut logs.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: 1 \n" +"Effects:\n" +"> 50%% of trees/trunks at the forest position will be cut down.\n" +"> 100%% of total material will be brought back.\n" +"> Repeatable with diminishing returns.\n" +" \n" +"Risk: None\n" +"Time: 6 Hour Base + Travel Time + Cutting Time\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "small fire" -msgstr "kis tűz" +#: src/faction_camp.cpp +msgid "Cut Logs" +msgstr "" -#: src/field.cpp -msgid "legacy rubble" -msgstr "korábbi romok" +#: src/faction_camp.cpp +msgid "Cutting logs in the woods...\n" +msgstr "" -#: src/field.cpp -msgid "smoke" -msgstr "füst" +#: src/faction_camp.cpp +msgid "Recover Log Cutter" +msgstr "" -#: src/field.cpp -msgid "thick smoke" -msgstr "sűrű füst" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Good for setting up resupply or contingency points.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward.\n" +" \n" +"Risk: Medium\n" +"Time: 6 Hour Construction + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thin smoke" -msgstr "enyhe füst" +#: src/faction_camp.cpp +msgid "Setup Hide Site" +msgstr "" -#: src/field.cpp -msgid "hazy cloud" -msgstr "párás köd" +#: src/faction_camp.cpp +msgid "Setting up a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "thick toxic gas" -msgstr "sűrű mérgesgáz" +#: src/faction_camp.cpp +msgid "Recover Hide Setup" +msgstr "" -#: src/field.cpp -msgid "toxic gas" -msgstr "mérgesgáz" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Push gear out to a hide site or bring gear back from one.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 1\n" +"Effects:\n" +"> Good for returning equipment you left in the hide site shelter.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward or back.\n" +" \n" +"Risk: Medium\n" +"Time: 1 Hour Base + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "tear gas" -msgstr "könnygáz" +#: src/faction_camp.cpp +msgid "Relay Hide Site" +msgstr "" -#: src/field.cpp -msgid "thick tear gas" -msgstr "sűrű könnygáz" +#: src/faction_camp.cpp +msgid "Transfering gear to a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "radioactive gas" -msgstr "radioaktív gáz" +#: src/faction_camp.cpp +msgid "Recover Hide Relay" +msgstr "" -#: src/field.cpp -msgid "thick radioactive gas" -msgstr "sűrű radioaktív gáz" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to edible plans.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Foraging Possibilities:\n" +"> wild vegetables\n" +"> fruits and nuts dependening on season\n" +"May produce less food than consumed!\n" +"Risk: Very Low\n" +"Time: 4 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "gas vent" -msgstr "gáz szellőztető" +#: src/faction_camp.cpp +msgid "Forage for plants" +msgstr "" -#: src/field.cpp -msgid "electric cloud" -msgstr "elektromos felhő" +#: src/faction_camp.cpp +msgid "Foraging for edible plants.\n" +msgstr "" -#: src/field.cpp -msgid "electric crackle" -msgstr "elektromos sercegés" +#: src/faction_camp.cpp +msgid "Recover Foragers" +msgstr "" -#: src/field.cpp -msgid "sparks" -msgstr "szikrák" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to set traps for small game.\n" +" \n" +"Skill used: trapping\n" +"Difficulty: N/A \n" +"Trappinng Possibilities:\n" +"> small and tiny animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Low\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/2\n" +msgstr "" -#: src/field.cpp -msgid "odd ripple" -msgstr "furcsa fodrozódás" +#: src/faction_camp.cpp +msgid "Trap Small Game" +msgstr "" -#: src/field.cpp -msgid "swirling air" -msgstr "örvénylő levegő" +#: src/faction_camp.cpp +msgid "Trapping Small Game.\n" +msgstr "" -#: src/field.cpp -msgid "tear in reality" -msgstr "hasadás a valóságban" +#: src/faction_camp.cpp +msgid "Recover Trappers" +msgstr "" -#: src/field.cpp -msgid "faint plasma" -msgstr "enyhe plazma" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to hunt large animals.\n" +" \n" +"Skill used: marksmanship\n" +"Difficulty: N/A \n" +"Hunting Possibilities:\n" +"> small, medium, or large animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Medium\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "glaring plasma" -msgstr "ragyogó plazma" +#: src/faction_camp.cpp +msgid "Hunt Large Animals" +msgstr "" -#: src/field.cpp -msgid "glowing plasma" -msgstr "fénylő plazma" +#: src/faction_camp.cpp +msgid "Hunting large animals.\n" +msgstr "" -#: src/field.cpp -msgid "beam of light" -msgstr "fénysugár" +#: src/faction_camp.cpp +msgid "Recover Hunter" +msgstr "" -#: src/field.cpp -msgid "faint glimmer" -msgstr "pislákoló fény" +#: src/faction_camp.cpp +msgid "Construct Map Fortifications" +msgstr "" -#: src/field.cpp -msgid "intense beam of light" -msgstr "intenzív fénysugár" +#: src/faction_camp.cpp +msgid "Construct Spiked Trench" +msgstr "" -#: src/field.cpp -msgid "spotlight" -msgstr "reflektor" +#: src/faction_camp.cpp +msgid "Constructing fortifications...\n" +msgstr "" -#: src/field.cpp -msgid "dazzling" +#: src/faction_camp.cpp +msgid "Finish Map Fortifications" msgstr "" -#: src/field.cpp -msgid "plant sap splatter" +#: src/faction_camp.cpp +msgid "Recruit Companions" msgstr "" -#: src/field.cpp -msgid "plant sap stain" +#: src/faction_camp.cpp +msgid "Searching for recruits.\n" msgstr "" -#: src/field.cpp -msgid "puddle of resin" +#: src/faction_camp.cpp +msgid "Recover Recruiter" msgstr "" -#: src/field.cpp -msgid "bug blood splatter" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Select checkpoints to customize path.\n" +"> Reveals terrain around the path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: High\n" +"Time: Travel\n" +"Positions: %d/3\n" msgstr "" -#: src/field.cpp -msgid "bug blood stain" +#: src/faction_camp.cpp +msgid "Scout Mission" msgstr "" -#: src/field.cpp -msgid "puddle of bug blood" +#: src/faction_camp.cpp +msgid "Scouting the region.\n" msgstr "" -#: src/field.cpp -msgid "hemolymph splatter" +#: src/faction_camp.cpp +msgid "Recover Scout" msgstr "" -#: src/field.cpp -msgid "hemolymph stain" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 4\n" +"Effects:\n" +"> Pulls creatures encountered into combat instead of fleeing.\n" +"> Select checkpoints to customize path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: Very High\n" +"Time: Travel\n" +"Positions: %d/3\n" msgstr "" -#: src/field.cpp -msgid "puddle of hemolymph" +#: src/faction_camp.cpp +msgid "Combat Patrol" msgstr "" -#: src/field.cpp -msgid "shards of chitin" +#: src/faction_camp.cpp +msgid "Patrolling the region.\n" msgstr "" -#: src/field.cpp -msgid "shattered bug leg" +#: src/faction_camp.cpp +msgid "Recover Combat Patrol" msgstr "" -#: src/field.cpp -msgid "torn insect organs" +#: src/faction_camp.cpp +msgid " Expansion Upgrade" msgstr "" -#: src/field.cpp -msgid "gooey scraps" +#: src/faction_camp.cpp +msgid "Working to upgrade your expansions!\n" msgstr "" -#: src/field.cpp -msgid "heap of squishy gore" +#: src/faction_camp.cpp +msgid " Expansion" msgstr "" -#: src/field.cpp -msgid "icky mess" +#: src/faction_camp.cpp +msgid "Recover Ally, " msgstr "" -#: src/field.cpp -msgid "swirl of tobacco smoke" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Have a companion attempt to completely dissemble a vehicle into components.\n" +" \n" +"Skill used: mechanics\n" +"Difficulty: 2 \n" +"Effects:\n" +"> Removed parts placed on the furniture in the garage.\n" +"> Skill plays a huge role to determine what is salvaged.\n" +" \n" +"Risk: None\n" +"Time: Skill Based \n" msgstr "" -#: src/field.cpp -msgid "thick tobacco smoke" +#: src/faction_camp.cpp +msgid " Chop Shop" msgstr "" -#: src/field.cpp -msgid "tobacco smoke" +#: src/faction_camp.cpp +msgid "Working at the chop shop...\n" msgstr "" -#: src/field.cpp -msgid "pot smoke" +#: src/faction_camp.cpp +msgid " (Finish) Chop Shop" msgstr "" -#: src/field.cpp -msgid "swirl of pot smoke" +#: src/faction_camp.cpp +msgid "Working in your kitchen!\n" msgstr "" -#: src/field.cpp -msgid "thick pot smoke" +#: src/faction_camp.cpp +msgid " (Finish) Cooking" msgstr "" -#: src/field.cpp -msgid "crack smoke" +#: src/faction_camp.cpp +msgid "Working in your blacksmith shop!\n" msgstr "" -#: src/field.cpp -msgid "swirl of crack smoke" +#: src/faction_camp.cpp +msgid " (Finish) Smithing" msgstr "" -#: src/field.cpp -msgid "thick crack smoke" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plow any spaces that have reverted to dirt or grass.\n" +" \n" msgstr "" -#: src/field.cpp -msgid "meth smoke" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Restores only the plots created in the last expansion upgrade.\n" +"> Does not damage existing crops.\n" +" \n" +"Risk: None\n" +"Time: 5 Min / Plot \n" +"Positions: 0/1 \n" msgstr "" -#: src/field.cpp -msgid "swirl of meth smoke" +#: src/faction_camp.cpp +msgid " Plow Fields" msgstr "" -#: src/field.cpp -msgid "thick meth smoke" +#: src/faction_camp.cpp +msgid "Working to plow your fields!\n" msgstr "" -#: src/field.cpp -msgid "angry swarm of bees" +#: src/faction_camp.cpp +msgid " (Finish) Plow Fields" msgstr "" -#: src/field.cpp -msgid "some bees" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plant designated seeds in the spaces that have already been tilled.\n" +" \n" msgstr "" -#: src/field.cpp -msgid "swarm of bees" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose which seed type or all of your seeds.\n" +"> Stops when out of seeds or planting locations.\n" +"> Will plant in ALL dirt mounds in the expansion.\n" +" \n" +"Risk: None\n" +"Time: 1 Min / Plot \n" +"Positions: 0/1 \n" msgstr "" -#: src/field.cpp -msgid "airborne incendiary" +#: src/faction_camp.cpp +msgid " Plant Fields" msgstr "" -#: src/field.cpp -msgid "relaxation gas" +#: src/faction_camp.cpp +msgid "Working to plant your fields!\n" msgstr "" -#: src/field.cpp -msgid "sedative gas" +#: src/faction_camp.cpp +msgid " (Finish) Plant Fields" msgstr "" -#: src/field.cpp -msgid "fungal haze" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Harvest any plants that are ripe and bring the produce back.\n" +" \n" msgstr "" -#: src/field.cpp -msgid "thick fungal haze" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Will dump all harvesting products onto your location.\n" +" \n" +"Risk: None\n" +"Time: 3 Min / Plot \n" +"Positions: 0/1 \n" msgstr "" -#: src/field.cpp -msgid "fungicidal gas" +#: src/faction_camp.cpp +msgid " Harvest Fields" msgstr "" -#: src/field.cpp -msgid "thick fungicidal gas" +#: src/faction_camp.cpp +msgid "Working to harvest your fields!\n" msgstr "" -#: src/field.cpp -msgid "smoke vent" +#: src/faction_camp.cpp +msgid " (Finish) Harvest Fields" msgstr "" -#: src/field.cpp -msgid "Whew... smells like skunk!" +#: src/faction_camp.cpp +msgid "Working on your farm!\n" msgstr "" -#: src/field.cpp -msgid "Man, that smells like some good shit!" +#: src/faction_camp.cpp +msgid "departs to search for materials..." msgstr "" -#: src/field.cpp -msgid "I don't know... should you really be smoking that stuff?" +#: src/faction_camp.cpp +msgid "There are too many companions working on this mission!" msgstr "" -#: src/field.cpp -msgid "Ew, smells like burning rubber!" +#: src/faction_camp.cpp +msgid "departs to search for firewood..." msgstr "" -#: src/field.cpp -msgid "Ugh, that smells rancid!" +#: src/faction_camp.cpp +msgid "You don't have enough food stored to feed your companion." msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp +msgid "departs to dig ditches and scrub toilets..." +msgstr "" + +#: src/faction_camp.cpp #, c-format -msgid "A %s hits you!" -msgstr "Megüt egy %s!" +msgid "%s returns from working in the woods..." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits %2$s!" -msgstr "Egy %1$s megüti %2$st!" +msgid "%s returns from working on the hide site..." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits the %2$s!" -msgstr "Egy %1$s megüti a %2$st!" +msgid "%s returns from shuttling gear between the hide site..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your body!" -msgstr "A sav égeti a tested!" +#: src/faction_camp.cpp +msgid "departs to search for edible plants..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s body!" -msgstr "A sav égeti testét!" +#: src/faction_camp.cpp +msgid "departs to set traps for small animals..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your legs and feet!" -msgstr "A sav égeti a lábadat és a lábfejedet!" +#: src/faction_camp.cpp +msgid "departs to hunt for meat..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s legs and feet!" -msgstr "A sav égeti lábát és lábfejét!" +#: src/faction_camp.cpp +msgid "departs to search for recruits..." +msgstr "" -#: src/field.cpp -msgid "You're lying in a pool of acid" -msgstr "Egy savtócsában fekszel." +#: src/faction_camp.cpp +msgid "departs to survey land..." +msgstr "" -#: src/field.cpp -msgid "You're standing in a pool of acid" -msgstr "Egy savtócsában állsz." +#: src/faction_camp.cpp +msgid "You have already selected a surveyor!" +msgstr "" -#: src/field.cpp -msgid "The sap sticks to you!" -msgstr "A gyanta rád ragad!" +#: src/faction_camp.cpp +msgid "begins to upgrade the expansion..." +msgstr "" -#: src/field.cpp -msgid "The sap sticks to !" -msgstr "A gyanta ráragad testére!" +#: src/faction_camp.cpp +msgid "You already have a worker upgrading that expansion!" +msgstr "" -#: src/field.cpp -msgid "The sludge is thick and sticky. You struggle to pull free." -msgstr "Az iszap sűrű és ragacsos. Nehezen tudod kiszabadítani magadat." +#: src/faction_camp.cpp +msgid "You don't have the materials for the upgrade." +msgstr "" -#: src/field.cpp -msgid "You burn your legs and feet!" -msgstr "Megégeted a lábadat és a lábfejedet!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your farm with something..." +msgstr "" -#: src/field.cpp -msgid "You're burning up!" -msgstr "Elégsz!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns to you with something..." +msgstr "" -#: src/field.cpp -msgid "You're set ablaze!" -msgstr "Meggyulladtál!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your kitchen with something..." +msgstr "" -#: src/field.cpp -msgid "Your whole body is burning!" -msgstr "Az egész tested ég!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your blacksmith shop with something..." +msgstr "" -#: src/field.cpp -msgid " burns their legs and feet!" -msgstr " megégeti a lábát és lábfejét!" +#: src/faction_camp.cpp +msgid "begins plowing the field..." +msgstr "" -#: src/field.cpp -msgid " is burning up!" -msgstr " megég!" +#: src/faction_camp.cpp +msgid "You already have someone plowing that field." +msgstr "" -#: src/field.cpp -msgid " is set ablaze!" -msgstr " meggyullad!" +#: src/faction_camp.cpp +msgid "You have no additional seeds to give your companions..." +msgstr "" -#: src/field.cpp -msgid "s whole body is burning!" -msgstr " egész teste ég!" +#: src/faction_camp.cpp +msgid "begins planting the field..." +msgstr "" -#: src/field.cpp -msgid "You're standing in a fire!" -msgstr "Egy tűzben állsz!" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Which seeds do you wish to have planted?" +msgstr "" -#: src/field.cpp -msgid "You're waist-deep in a fire!" -msgstr "Derékig tűzben állsz!" +#: src/faction_camp.cpp +msgid "You already have someone planting that field." +msgstr "" -#: src/field.cpp -msgid "You're surrounded by raging fire!" -msgstr "Tomboló tűz vesz körbe!" +#: src/faction_camp.cpp +msgid "begins to harvest the field..." +msgstr "" -#: src/field.cpp -msgid "You're lying in fire!" -msgstr "Tűzben fekszel!" +#: src/faction_camp.cpp +msgid "You already have someone harvesting that field." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp +msgid "You already have someone working in that garage." +msgstr "" + +#: src/faction_camp.cpp #, c-format -msgid "You feel sick from inhaling the %s" -msgstr "Émelyegsz a(z) %s belégzésétől" +msgid "%s returns from your garage..." +msgstr "" -#: src/field.cpp -msgid "This radioactive gas burns!" -msgstr "Ez a radioaktív gáz éget!" +#: src/faction_camp.cpp +msgid "You already have a companion upgrading the camp." +msgstr "" -#: src/field.cpp -msgid "You're torched by flames!" -msgstr "Testeden recsegve égnek a lángok!" +#: src/faction_camp.cpp +msgid "begins to upgrade the camp..." +msgstr "" -#: src/field.cpp -msgid " is torched by flames!" -msgstr " testén recsegve égnek a lángok!" +#: src/faction_camp.cpp +msgid "Forests and swamps are the only valid cutting locations." +msgstr "" -#: src/field.cpp -msgid "These flames do not burn you." -msgstr "Ezek a lángok téged nem égetnek meg." +#: src/faction_camp.cpp +#, c-format +msgid "" +"Trip Estimate:\n" +"%s" +msgstr "" -#: src/field.cpp -msgid "Those flames do not burn ." -msgstr "Ezek a lángok t nem égetik meg." +#: src/faction_camp.cpp +msgid "departs to cut logs..." +msgstr "" -#: src/field.cpp -msgid "You're painfully electrocuted!" +#: src/faction_camp.cpp +msgid "Forests, swamps, and fields are valid hide site locations." msgstr "" -#: src/field.cpp -msgid " is shocked!" -msgstr "t megrázta az áram!" +#: src/faction_camp.cpp +msgid "departs to build a hide site..." +msgstr "" -#: src/field.cpp -msgid "You're shocked!" -msgstr "Megrázott az áram!" +#: src/faction_camp.cpp +msgid "You need equipment to setup a hide site..." +msgstr "" -#: src/field.cpp -msgid "The electric cloud doesn't affect you." -msgstr "A villámló felhő rád nincs hatással." +#: src/faction_camp.cpp +msgid "You must select an existing hide site." +msgstr "" -#: src/field.cpp -msgid "The electric cloud doesn't seem to affect ." -msgstr "A villámló felhő testére nincs hatással." +#: src/faction_camp.cpp +msgid "Bring gear back?" +msgstr "" -#: src/field.cpp -msgid "You're violently teleported!" -msgstr "Erőszakosan teleportáltak valahova!" +#: src/faction_camp.cpp +msgid "departs for the hide site..." +msgstr "" -#: src/field.cpp -msgid "The bees sting you!" -msgstr "A méhek megszúrnak!" +#: src/faction_camp.cpp +msgid "You need equipment to transport between the hide site..." +msgstr "" -#: src/field.cpp -msgid "The bees sting you several times!" -msgstr "A méhek többször megszúrnak!" +#: src/faction_camp.cpp +msgid "" +"Select a start and end point. Line must be straight. Fields, forests, and " +"swamps are valid fortification locations. In addition to existing " +"fortification constructions." +msgstr "" -#: src/field.cpp -msgid "The bees sting you many times!" -msgstr "A méhek rengetegszer megszúrnak!" +#: src/faction_camp.cpp +msgid "Select an end point." +msgstr "" -#: src/field.cpp -msgid "The bees sting you all over your body!" -msgstr "A méhet össze-vissza szúrkálnak!" +#: src/faction_camp.cpp +msgid "Invalid terrain in construction path." +msgstr "" -#: src/field.cpp -msgid "The incendiary burns you!" -msgstr "A gyújtólövedék megéget!" +#: src/faction_camp.cpp +msgid "You don't have the material to build the fortification." +msgstr "" -#: src/field.cpp -msgid "The incendiary burns !" -msgstr "A gyújtólövedék megégeti t!" +#: src/faction_camp.cpp +msgid "begins constructing fortifications..." +msgstr "" -#: src/field.cpp -msgid "The incendiary melts into your skin!" -msgstr "A gyújtólövedék beleolvad a bőrödbe!" +#: src/faction_camp.cpp +msgid "" +"Select checkpoints until you reach maximum range or select the last point " +"again to end." +msgstr "" -#: src/field.cpp -msgid "The incendiary melts into s skin!" -msgstr "A gyújtólövedék beleolvad bőrébe!" +#: src/faction_camp.cpp +msgid "departs on patrol..." +msgstr "" -#: src/field.cpp -#, c-format -msgid "The %s burns your skin." -msgstr "A(z) %s égeti a bőrödet." +#: src/faction_camp.cpp +msgid "You don't have the materials to craft that" +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "The %s makes you feel sick." -msgstr "Rosszul vagy ettől: %s." +msgid "Batch crafting %s [MAX: %d]: " +msgstr "" -#: src/field.cpp src/trapfunc.cpp -#, c-format -msgid "The %1$s teleports into a %2$s, killing them both!" -msgstr "A(z) %1$s beleteleportál a(z) %2$s testébe, és mindketten meghalnak!" +#: src/faction_camp.cpp +msgid "Your batch is too large!" +msgstr "" -#: src/fungal_effects.cpp src/iuse.cpp -#, c-format -msgid "The %s is covered in tiny spores!" -msgstr "A(z) %s testét apró spórák fedik!" +#: src/faction_camp.cpp +msgid "You already have someone working in that expansion." +msgstr "" -#: src/fungal_effects.cpp -msgid "The spores land on you, but you quickly swat them off with your tail!" -msgstr "A spórák rád szállnak, de te a farkaddal gyorsan lesöpröd őket." +#: src/faction_camp.cpp +msgid "begins to work..." +msgstr "" -#: src/fungal_effects.cpp -msgid "You're covered in tiny spores!" -msgstr "Befednek az apró spórák!" +#: src/faction_camp.cpp +#, c-format +msgid "" +" Chopping this vehicle:\n" +"%s" +msgstr "" -#: src/fungal_effects.cpp -msgid "The young tree blooms forth into a fungal blossom!" -msgstr "A fiatal fából gombavirágzás tör elő!" +#: src/faction_camp.cpp +msgid "begins working in the garage..." +msgstr "" -#: src/fungal_effects.cpp -msgid "The tree blooms forth into a fungal blossom!" +#: src/faction_camp.cpp +msgid "Your companion seems disappointed that your pantry is empty..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s returns from upgrading the camp having earned a bit of experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from doing the dirty work to keep the camp running..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Sorting points have changed, forcing reset." +msgstr "" + +#: src/faction_camp.cpp +msgid "gathering materials" +msgstr "" + +#: src/faction_camp.cpp +msgid "foraging for edible plants" +msgstr "" + +#: src/faction_camp.cpp +msgid "trapping small animals" +msgstr "" + +#: src/faction_camp.cpp +msgid "hunting for meat" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from %s carrying supplies and has a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from constructing fortifications..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from searching for recruits with a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s encountered %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't find anyone to recruit..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s convinced %s to hear a recruitment offer from you..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested in anything %s had to offer..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"NPC Overview:\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Name: %20s\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Strength: %10d\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Dexterity: %10d\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Intelligence: %10d\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Perception: %10d\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Top 3 Skills:\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Asking for:\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"> Food: %10d days\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Faction Food:%9d days\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Recruit Chance: %10d%%\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an option:" +msgstr "" + +#: src/faction_camp.cpp +msgid "Increase Food" +msgstr "" + +#: src/faction_camp.cpp +msgid "Decrease Food" +msgstr "" + +#: src/faction_camp.cpp +msgid "Make Offer" +msgstr "" + +#: src/faction_camp.cpp +msgid "Not Interested" +msgstr "" + +#: src/faction_camp.cpp +msgid "You decide you aren't interested..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s has been convinced to join!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Your companion hit a river and didn't know how to swim..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Your companion hit a river and didn't know how to swim well enough to " +"cross..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't return from patrol..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from patrol..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an expansion:" +msgstr "" + +#: src/faction_camp.cpp +msgid "You choose to wait..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from surveying for the expansion." +msgstr "" + +#: src/faction_camp.cpp +msgid "No seeds to plant!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from working your fields..." +msgstr "" + +#: src/faction_camp.cpp +msgid "MAIN" +msgstr "" + +#: src/faction_camp.cpp +msgid " [N] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [NE] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [E] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [SE] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [S] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [SW] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [W] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [NW] " +msgstr "" + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Base Missions" +msgstr "" + +#: src/faction_camp.cpp +msgid "Farm Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Garage Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Kitchen Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Blacksmith Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Empty Expansion" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Select a location between %d and %d tiles away." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"You must select a target between %d and %d range from the base. Range: %d" +msgstr "" + +#: src/faction_camp.cpp +msgid "You must be able to see the target that you select." +msgstr "" + +#: src/faction_camp.cpp +msgid "Do you want to bounce off this location to extend range?" +msgstr "" + +#: src/faction_camp.cpp +msgid "food for you" +msgstr "" + +#: src/faction_camp.cpp +msgid "food for companions" +msgstr "" + +#: src/faction_camp.cpp +msgid "weapons" +msgstr "" + +#: src/faction_camp.cpp +msgid "clothing" +msgstr "" + +#: src/faction_camp.cpp +msgid "bionics" +msgstr "" + +#: src/faction_camp.cpp +msgid "all kinds of tools" +msgstr "" + +#: src/faction_camp.cpp +msgid "wood of various sorts" +msgstr "" + +#: src/faction_camp.cpp +msgid "trash and rotting food" +msgstr "" + +#: src/faction_camp.cpp +msgid "books" +msgstr "" + +#: src/faction_camp.cpp +msgid "medication" +msgstr "" + +#: src/faction_camp.cpp +msgid "ammo" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Reset point: %s?" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +" Items New Point Old Point\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +" Save Points?" +msgstr "" + +#: src/faction_camp.cpp +msgid "Revert to default points?" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15.2f (km)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">One Way: %15d (trips)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15.2f (km)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15d (m)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15d (m)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Travel: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Working: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Total: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Food: %15d (kcal)\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"%s\n" +" \n" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s \n" +"Risk: None\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" +" \n" +"Skill used: speech\n" +"Difficulty: 2 \n" +"Base Score: +%3d%%\n" +"> Expansion Bonus: +%3d%%\n" +"> Faction Bonus: +%3d%%\n" +"> Special Bonus: +%3d%%\n" +" \n" +"Total: Skill +%3d%%\n" +" \n" +"Risk: High\n" +"Time: 4 Days\n" +"Positions: %d/1\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Notes: \n" +"Send a companion to gather materials for the next camp upgrade.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Harvestable: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Ready for Planting: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Needs Plowing: " +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Name: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "---- Engines ----\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Engine: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Status: %24d%%\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Fuel: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "---- Fuel Storage & Battery ----\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Estimated Chop Time: 5 Days\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "No items are located at the drop point..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "You distribute %d kcal worth of food to your companions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "While %s, a silent specter approaches %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s notices the antlered horror and slips away before it gets too close." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Another survivor approaches %s asking for directions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Fearful that he may be an agent of some hostile faction, %s doesn't mention " +"the camp." +msgstr "" + +#: src/faction_camp.cpp +msgid "The two part on friendly terms and the survivor isn't seen again." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't detect the ambush until it was too late!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The bull moose charged %s from the tree line..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Despite being caught off guard %s was able to run away until the moose gave " +"up pursuit." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The jabberwock grabbed %s by the arm from behind and began to scream." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Terrified, %s spun around and delivered a massive kick to the creature's " +"torso..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Collapsing into a pile of gore, %s walked away unscathed..." +msgstr "" + +#: src/faction_camp.cpp +msgid "(Sounds like bullshit, you wonder what really happened.)" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s turned to find the hideous black eyes of a giant wasp staring back from " +"only a few feet away..." +msgstr "" + +#: src/faction_camp.cpp +msgid "The screams were terrifying, there was nothing anyone could do." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Pieces of %s were found strewn across a few bushes." +msgstr "" + +#: src/faction_camp.cpp +msgid "(You wonder if your companions are fit to work on their own...)" +msgstr "" + +#: src/field.cpp +msgid "blood splatter" +msgstr "vércseppek" + +#: src/field.cpp +msgid "blood stain" +msgstr "vérfolt" + +#: src/field.cpp +msgid "puddle of blood" +msgstr "vértócsa" + +#: src/field.cpp +msgid "bile splatter" +msgstr "epecseppek" + +#: src/field.cpp +msgid "bile stain" +msgstr "epefolt" + +#: src/field.cpp +msgid "puddle of bile" +msgstr "epetócsa" + +#: src/field.cpp +msgid "bloody meat chunks" +msgstr "véres húsdarabok" + +#: src/field.cpp +msgid "heap of gore" +msgstr "véres húshalom" + +#: src/field.cpp +msgid "scraps of flesh" +msgstr "húscafatok" + +#: src/field.cpp +msgid "broken vegetation tangle" +msgstr "átszakított növényzet" + +#: src/field.cpp +msgid "shattered branches and leaves" +msgstr "szétszórt ágak és levelek" + +#: src/field.cpp +msgid "shredded leaves and twigs" +msgstr "levél- és gallycafatok" + +#: src/field.cpp +msgid "cobwebs" +msgstr "pókhálók" + +#: src/field.cpp +msgid "thick webs" +msgstr "sűrű hálók" + +#: src/field.cpp +msgid "webs" +msgstr "hálók" + +#: src/field.cpp +msgid "puddle of slime" +msgstr "nyálkatócsa" + +#: src/field.cpp +msgid "slime stain" +msgstr "nyálkafolt" + +#: src/field.cpp +msgid "slime trail" +msgstr "nyálkacsík" + +#: src/field.cpp +msgid "acid splatter" +msgstr "savcseppek" + +#: src/field.cpp +msgid "acid streak" +msgstr "savcsík" + +#: src/field.cpp +msgid "pool of acid" +msgstr "savtócsa" + +#: src/field.cpp +msgid "glob of sap" +msgstr "gyanta golyóbis" + +#: src/field.cpp +msgid "pool of sap" +msgstr "gyantatócsa" + +#: src/field.cpp +msgid "sap splatter" +msgstr "gyantacseppek" + +#: src/field.cpp +msgid "sludge trail" +msgstr "ipszapcsík" + +#: src/field.cpp +msgid "thick sludge trail" +msgstr "sűrű iszapcsík" + +#: src/field.cpp +msgid "thin sludge trail" +msgstr "híg iszapcsík" + +#: src/field.cpp +msgid "raging fire" +msgstr "tomboló tűz" + +#: src/field.cpp +msgid "small fire" +msgstr "kis tűz" + +#: src/field.cpp +msgid "legacy rubble" +msgstr "korábbi romok" + +#: src/field.cpp +msgid "smoke" +msgstr "füst" + +#: src/field.cpp +msgid "thick smoke" +msgstr "sűrű füst" + +#: src/field.cpp +msgid "thin smoke" +msgstr "enyhe füst" + +#: src/field.cpp +msgid "hazy cloud" +msgstr "párás köd" + +#: src/field.cpp +msgid "thick toxic gas" +msgstr "sűrű mérgesgáz" + +#: src/field.cpp +msgid "toxic gas" +msgstr "mérgesgáz" + +#: src/field.cpp +msgid "tear gas" +msgstr "könnygáz" + +#: src/field.cpp +msgid "thick tear gas" +msgstr "sűrű könnygáz" + +#: src/field.cpp +msgid "radioactive gas" +msgstr "radioaktív gáz" + +#: src/field.cpp +msgid "thick radioactive gas" +msgstr "sűrű radioaktív gáz" + +#: src/field.cpp +msgid "gas vent" +msgstr "gáz szellőztető" + +#: src/field.cpp +msgid "electric cloud" +msgstr "elektromos felhő" + +#: src/field.cpp +msgid "electric crackle" +msgstr "elektromos sercegés" + +#: src/field.cpp +msgid "sparks" +msgstr "szikrák" + +#: src/field.cpp +msgid "odd ripple" +msgstr "furcsa fodrozódás" + +#: src/field.cpp +msgid "swirling air" +msgstr "örvénylő levegő" + +#: src/field.cpp +msgid "tear in reality" +msgstr "hasadás a valóságban" + +#: src/field.cpp +msgid "faint plasma" +msgstr "enyhe plazma" + +#: src/field.cpp +msgid "glaring plasma" +msgstr "ragyogó plazma" + +#: src/field.cpp +msgid "glowing plasma" +msgstr "fénylő plazma" + +#: src/field.cpp +msgid "beam of light" +msgstr "fénysugár" + +#: src/field.cpp +msgid "faint glimmer" +msgstr "pislákoló fény" + +#: src/field.cpp +msgid "intense beam of light" +msgstr "intenzív fénysugár" + +#: src/field.cpp +msgid "spotlight" +msgstr "reflektor" + +#: src/field.cpp +msgid "dazzling" +msgstr "" + +#: src/field.cpp +msgid "plant sap splatter" +msgstr "" + +#: src/field.cpp +msgid "plant sap stain" +msgstr "" + +#: src/field.cpp +msgid "puddle of resin" +msgstr "" + +#: src/field.cpp +msgid "bug blood splatter" +msgstr "" + +#: src/field.cpp +msgid "bug blood stain" +msgstr "" + +#: src/field.cpp +msgid "puddle of bug blood" +msgstr "" + +#: src/field.cpp +msgid "hemolymph splatter" +msgstr "" + +#: src/field.cpp +msgid "hemolymph stain" +msgstr "" + +#: src/field.cpp +msgid "puddle of hemolymph" +msgstr "" + +#: src/field.cpp +msgid "shards of chitin" +msgstr "" + +#: src/field.cpp +msgid "shattered bug leg" +msgstr "" + +#: src/field.cpp +msgid "torn insect organs" +msgstr "" + +#: src/field.cpp +msgid "gooey scraps" +msgstr "" + +#: src/field.cpp +msgid "heap of squishy gore" +msgstr "" + +#: src/field.cpp +msgid "icky mess" +msgstr "" + +#: src/field.cpp +msgid "swirl of tobacco smoke" +msgstr "" + +#: src/field.cpp +msgid "thick tobacco smoke" +msgstr "" + +#: src/field.cpp +msgid "tobacco smoke" +msgstr "" + +#: src/field.cpp +msgid "pot smoke" +msgstr "" + +#: src/field.cpp +msgid "swirl of pot smoke" +msgstr "" + +#: src/field.cpp +msgid "thick pot smoke" +msgstr "" + +#: src/field.cpp +msgid "crack smoke" +msgstr "" + +#: src/field.cpp +msgid "swirl of crack smoke" +msgstr "" + +#: src/field.cpp +msgid "thick crack smoke" +msgstr "" + +#: src/field.cpp +msgid "meth smoke" +msgstr "" + +#: src/field.cpp +msgid "swirl of meth smoke" +msgstr "" + +#: src/field.cpp +msgid "thick meth smoke" +msgstr "" + +#: src/field.cpp +msgid "angry swarm of bees" +msgstr "" + +#: src/field.cpp +msgid "some bees" +msgstr "" + +#: src/field.cpp +msgid "swarm of bees" +msgstr "" + +#: src/field.cpp +msgid "airborne incendiary" +msgstr "" + +#: src/field.cpp +msgid "relaxation gas" +msgstr "" + +#: src/field.cpp +msgid "sedative gas" +msgstr "" + +#: src/field.cpp +msgid "fungal haze" +msgstr "" + +#: src/field.cpp +msgid "thick fungal haze" +msgstr "" + +#: src/field.cpp +msgid "fungicidal gas" +msgstr "" + +#: src/field.cpp +msgid "thick fungicidal gas" +msgstr "" + +#: src/field.cpp +msgid "smoke vent" +msgstr "" + +#: src/field.cpp +msgid "Whew... smells like skunk!" +msgstr "" + +#: src/field.cpp +msgid "Man, that smells like some good shit!" +msgstr "" + +#: src/field.cpp +msgid "I don't know... should you really be smoking that stuff?" +msgstr "" + +#: src/field.cpp +msgid "Ew, smells like burning rubber!" +msgstr "" + +#: src/field.cpp +msgid "Ugh, that smells rancid!" +msgstr "" + +#: src/field.cpp +#, c-format +msgid "A %s hits you!" +msgstr "Megüt egy %s!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits %2$s!" +msgstr "Egy %1$s megüti %2$st!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits the %2$s!" +msgstr "Egy %1$s megüti a %2$st!" + +#: src/field.cpp +msgid "The acid burns your body!" +msgstr "A sav égeti a tested!" + +#: src/field.cpp +msgid "The acid burns s body!" +msgstr "A sav égeti testét!" + +#: src/field.cpp +msgid "The acid burns your legs and feet!" +msgstr "A sav égeti a lábadat és a lábfejedet!" + +#: src/field.cpp +msgid "The acid burns s legs and feet!" +msgstr "A sav égeti lábát és lábfejét!" + +#: src/field.cpp +msgid "You're lying in a pool of acid" +msgstr "Egy savtócsában fekszel." + +#: src/field.cpp +msgid "You're standing in a pool of acid" +msgstr "Egy savtócsában állsz." + +#: src/field.cpp +msgid "The sap sticks to you!" +msgstr "A gyanta rád ragad!" + +#: src/field.cpp +msgid "The sap sticks to !" +msgstr "A gyanta ráragad testére!" + +#: src/field.cpp +msgid "The sludge is thick and sticky. You struggle to pull free." +msgstr "Az iszap sűrű és ragacsos. Nehezen tudod kiszabadítani magadat." + +#: src/field.cpp +msgid "You burn your legs and feet!" +msgstr "Megégeted a lábadat és a lábfejedet!" + +#: src/field.cpp +msgid "You're burning up!" +msgstr "Elégsz!" + +#: src/field.cpp +msgid "You're set ablaze!" +msgstr "Meggyulladtál!" + +#: src/field.cpp +msgid "Your whole body is burning!" +msgstr "Az egész tested ég!" + +#: src/field.cpp +msgid " burns their legs and feet!" +msgstr " megégeti a lábát és lábfejét!" + +#: src/field.cpp +msgid " is burning up!" +msgstr " megég!" + +#: src/field.cpp +msgid " is set ablaze!" +msgstr " meggyullad!" + +#: src/field.cpp +msgid "s whole body is burning!" +msgstr " egész teste ég!" + +#: src/field.cpp +msgid "You're standing in a fire!" +msgstr "Egy tűzben állsz!" + +#: src/field.cpp +msgid "You're waist-deep in a fire!" +msgstr "Derékig tűzben állsz!" + +#: src/field.cpp +msgid "You're surrounded by raging fire!" +msgstr "Tomboló tűz vesz körbe!" + +#: src/field.cpp +msgid "You're lying in fire!" +msgstr "Tűzben fekszel!" + +#: src/field.cpp +#, c-format +msgid "You feel sick from inhaling the %s" +msgstr "Émelyegsz a(z) %s belégzésétől" + +#: src/field.cpp +msgid "This radioactive gas burns!" +msgstr "Ez a radioaktív gáz éget!" + +#: src/field.cpp +msgid "You're torched by flames!" +msgstr "Testeden recsegve égnek a lángok!" + +#: src/field.cpp +msgid " is torched by flames!" +msgstr " testén recsegve égnek a lángok!" + +#: src/field.cpp +msgid "These flames do not burn you." +msgstr "Ezek a lángok téged nem égetnek meg." + +#: src/field.cpp +msgid "Those flames do not burn ." +msgstr "Ezek a lángok t nem égetik meg." + +#: src/field.cpp +msgid "You're painfully electrocuted!" +msgstr "" + +#: src/field.cpp +msgid " is shocked!" +msgstr "t megrázta az áram!" + +#: src/field.cpp +msgid "You're shocked!" +msgstr "Megrázott az áram!" + +#: src/field.cpp +msgid "The electric cloud doesn't affect you." +msgstr "A villámló felhő rád nincs hatással." + +#: src/field.cpp +msgid "The electric cloud doesn't seem to affect ." +msgstr "A villámló felhő testére nincs hatással." + +#: src/field.cpp +msgid "You're violently teleported!" +msgstr "Erőszakosan teleportáltak valahova!" + +#: src/field.cpp +msgid "The bees sting you!" +msgstr "A méhek megszúrnak!" + +#: src/field.cpp +msgid "The bees sting you several times!" +msgstr "A méhek többször megszúrnak!" + +#: src/field.cpp +msgid "The bees sting you many times!" +msgstr "A méhek rengetegszer megszúrnak!" + +#: src/field.cpp +msgid "The bees sting you all over your body!" +msgstr "A méhet össze-vissza szúrkálnak!" + +#: src/field.cpp +msgid "The incendiary burns you!" +msgstr "A gyújtólövedék megéget!" + +#: src/field.cpp +msgid "The incendiary burns !" +msgstr "A gyújtólövedék megégeti t!" + +#: src/field.cpp +msgid "The incendiary melts into your skin!" +msgstr "A gyújtólövedék beleolvad a bőrödbe!" + +#: src/field.cpp +msgid "The incendiary melts into s skin!" +msgstr "A gyújtólövedék beleolvad bőrébe!" + +#: src/field.cpp +#, c-format +msgid "The %s burns your skin." +msgstr "A(z) %s égeti a bőrödet." + +#: src/field.cpp +#, c-format +msgid "The %s makes you feel sick." +msgstr "Rosszul vagy ettől: %s." + +#: src/field.cpp src/trapfunc.cpp +#, c-format +msgid "The %1$s teleports into a %2$s, killing them both!" +msgstr "A(z) %1$s beleteleportál a(z) %2$s testébe, és mindketten meghalnak!" + +#: src/fungal_effects.cpp src/iuse.cpp +#, c-format +msgid "The %s is covered in tiny spores!" +msgstr "A(z) %s testét apró spórák fedik!" + +#: src/fungal_effects.cpp +msgid "The spores land on you, but you quickly swat them off with your tail!" +msgstr "A spórák rád szállnak, de te a farkaddal gyorsan lesöpröd őket." + +#: src/fungal_effects.cpp +msgid "You're covered in tiny spores!" +msgstr "Befednek az apró spórák!" + +#: src/fungal_effects.cpp +msgid "The young tree blooms forth into a fungal blossom!" +msgstr "A fiatal fából gombavirágzás tör elő!" + +#: src/fungal_effects.cpp +msgid "The tree blooms forth into a fungal blossom!" msgstr "A fából gombavirágzás tör elő!" #: src/game.cpp src/options.cpp @@ -130136,6 +132835,14 @@ msgstr "" msgid "Test trait group" msgstr "" +#: src/game.cpp +msgid "Show debug message" +msgstr "" + +#: src/game.cpp +msgid "Crash game (test crash handling)" +msgstr "" + #: src/game.cpp msgid "Quit to Main Menu" msgstr "" @@ -130258,9 +132965,11 @@ msgstr "óra" msgid "minute" msgstr "perc" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp src/martialarts.cpp msgid "turn" -msgstr "kör" +msgid_plural "turns" +msgstr[0] "" +msgstr[1] "" #: src/game.cpp msgid "Set year to?" @@ -130907,7 +133616,7 @@ msgstr "Tárgy használata rajta" msgid "Sort armor" msgstr "Páncél rétegzése" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "Támadás" @@ -130938,7 +133647,7 @@ msgstr "" msgid "Use which item?" msgstr "Melyik tárgyat használod?" -#: src/game.cpp src/iuse.cpp src/veh_interact.cpp +#: src/game.cpp src/iuse.cpp msgid "Never mind" msgstr "Mindegy" @@ -130976,8 +133685,8 @@ msgid "" msgstr "Egész jól ég, és további tüzelő nélkül is még sokáig fog." #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." -msgstr "Jól ég, további tüzelő nélkül is még egy pár órát legalább." +msgid "It looks solid, and will burn for a few hours without extra fuel." +msgstr "" #: src/game.cpp msgid "" @@ -131431,7 +134140,7 @@ msgctxt "butchery menu" msgid "Cut up %s (%d)" msgstr "" -#. ~ Name and number of items listed for disassembling +#. ~ Name, number of items and time to complete disassembling #: src/game.cpp #, c-format msgctxt "butchery menu" @@ -131472,8 +134181,8 @@ msgstr "" "szét" #: src/game.cpp -msgid "Butcher everything" -msgstr "Mindent lemészárol" +msgid "Quick butcher everything" +msgstr "" #: src/game.cpp msgid "Disassemble everything once" @@ -131484,8 +134193,8 @@ msgid "Disassemble everything" msgstr "Mindent szétszerel" #: src/game.cpp -msgid "Cut up all you can" -msgstr "Mindent szétvág, amit csak lehet" +msgid "Cut up everything" +msgstr "" #: src/game.cpp msgid "" @@ -131511,15 +134220,11 @@ msgstr "Gyors mészárlás" #: src/game.cpp msgid "" -"This techinque is used when you are in a hurry, but still want to harvest " +"This technique is used when you are in a hurry, but still want to harvest " "something from the corpse. Yields are lower as you don't try to be precise," " but it's useful if you don't want to set up a workshop. Prevents zombies " "from raising." msgstr "" -"Ezt a technikát akkor szokás alkalmazni, amikor sietnél, de azért valamit " -"szeretnél a hullából kinyerni. Az eredmény kevesebb, mint ha precízebben " -"fognál a munkához, ugyanakkor hasznos, ha nem akarsz egy külön hentesboltot " -"erre felállítani. Megakadályozza a zombik felkelését." #: src/game.cpp msgid "Full butchery" @@ -131544,14 +134249,10 @@ msgstr "Terepi kibelezés" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "" -"Ezzel a technikával a belső rothadás megelőzésére eltávolítod a beleket és a" -" belsőségeket. Eredményként belsőségeket kapsz. A kizsigerelt tetem könnyebb" -" lesz, és hosszabb ideig marad friss. Jobb hatások elérésére más " -"mészártechnikákkal is kombinálható." #: src/game.cpp msgid "Quarter corpse" @@ -131559,15 +134260,11 @@ msgstr "Tetem felnegyedelése" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." msgstr "" -"Egy korábban kizsigerelt tetemet négy, könnyebb és kevesebb helyet foglaló " -"részre bontasz. Ez segíthet nagyobb zsákmány elszállításánál. Ez a technika " -"tönkreteszi a bőrt, szőrt és szőrmét, úgyhogy ha ezekre később szükséged " -"lenne, ne ezt válaszd." #: src/game.cpp msgid "Dissect corpse" @@ -132414,6 +135111,10 @@ msgstr "" msgid "You feel fatigue seeping into your body." msgstr "" +#: src/game.cpp +msgid "The portal collapses!" +msgstr "" + #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." @@ -132655,6 +135356,19 @@ msgstr "SZOMJOLTÁS" msgid "JOY" msgstr "ÖRÖM" +#. ~ Used for permafood shelf life in the Eat menu +#: src/game_inventory.cpp +msgid "indefinite" +msgstr "" + +#: src/game_inventory.cpp +msgid "SHELF LIFE" +msgstr "" + +#: src/game_inventory.cpp +msgid "FRESHNESS" +msgstr "" + #: src/game_inventory.cpp msgid "SPOILS IN" msgstr "MEGROMLIK" @@ -132687,6 +135401,38 @@ msgstr "Kiömlött folyadékot nem lehet meginni" msgid "You're fully charged" msgstr "Teljesen fel vagy töltve" +#: src/game_inventory.cpp +msgid "soon!" +msgstr "" + +#: src/game_inventory.cpp +msgid "fresh" +msgstr "" + +#: src/game_inventory.cpp +msgid "quite fresh" +msgstr "" + +#: src/game_inventory.cpp +msgid "near midlife" +msgstr "" + +#: src/game_inventory.cpp +msgid "past midlife" +msgstr "" + +#: src/game_inventory.cpp +msgid "getting older" +msgstr "" + +#: src/game_inventory.cpp +msgid "old" +msgstr "" + +#: src/game_inventory.cpp +msgid "rotten" +msgstr "" + #: src/game_inventory.cpp msgid "Consume item" msgstr "Tárgy elfogyasztása" @@ -132830,6 +135576,14 @@ msgstr "Válaszd ki, hogy melyik fegyvert teszed ebbe: %s" msgid "You have no weapons you could put into your %s." msgstr "Nincs nálad olyan fegyver, amit ebbe tudnál beletenni: %s" +#: src/game_inventory.cpp src/iuse.cpp +msgid "Cut up what?" +msgstr "" + +#: src/game_inventory.cpp +msgid "You have nothing to cut up." +msgstr "" + #: src/game_inventory.cpp msgid "Saw barrel" msgstr "Fegyvercső lefűrészelése" @@ -133142,7 +135896,7 @@ msgstr "Meddig vársz?" msgid "Are you sure you want to sleep?" msgstr "Biztosan szeretnél aludni?" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "Igen." @@ -133443,6 +136197,11 @@ msgstr "Gyémántbevonat felvitele" msgid "You don't have a suitable item to coat with diamond" msgstr "Nincsen megfelelő tárgy nálad a gyémántbevonat felviteléhez" +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "" + #: src/iexamine.cpp #, c-format msgid "Use the %s?" @@ -134908,6 +137667,10 @@ msgstr "" msgid "You inspect its contents and find: " msgstr "" +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "" + #: src/iexamine.cpp msgid "You see some smoldering embers there." msgstr "" @@ -135318,10 +138081,79 @@ msgstr "narancs" msgid "black" msgstr "fekete" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks as fresh as it can be. It still has " +"%s until it spoils." +msgstr "" + +#: src/item.cpp +msgid "* This food looks as fresh as it can be." +msgstr "* Ez az étel annyira friss, amennyire csak lehet." + +#: src/item.cpp +#, c-format +msgid "" +"* This food looks old. It's just %s from becoming " +"inedible." +msgstr "" + +#: src/item.cpp +msgid "" +"* This food looks old. It's on the brink of becoming inedible." +msgstr "" + +#: src/item.cpp +msgid "" +"* This food looks fine. If you were more skilled in cooking or" +" survival, you might be able to make a better estimation." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks quite fresh. It has %s until it" +" spoils." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it is reaching its midlife. " +"There's %s before it spoils." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it has passed its midlife. " +"Edible, but will go bad in %s." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it will be old soon. It has " +"%s, so if you plan to use it, it's now or never." +msgstr "" + #: src/item.cpp msgid "Category: " msgstr "Kategória:" +#: src/item.cpp +msgid "$" +msgstr "" + #: src/item.cpp msgid "Price: " msgstr "Ár:" @@ -135489,52 +138321,9 @@ msgstr "* Közelebbről megvizsgálva ez hallucinogén." #: src/item.cpp #, c-format msgid "" -"* This food is perishable, and takes %s to " -"rot from full freshness, at room temperature." +"* This food is perishable, and at room temperature has an" +" estimated nominal shelf life of %s." msgstr "" -"* Ez az étel romlandó, és teljesen friss állapotából " -"szobahőmérsékleten %s alatt rohad meg." - -#: src/item.cpp -msgid "* This food looks as fresh as it can be." -msgstr "* Ez az étel annyira friss, amennyire csak lehet." - -#: src/item.cpp -msgid "" -"* This food looks still quite fresh. It's far from becoming " -"old." -msgstr "" -"* Ez az étel még mindig elég friss. Messze van attól, hogy " -"megromoljon." - -#: src/item.cpp -msgid "" -"* This food looks like it is reaching its midlife. It has" -" some time ahead before spoiling." -msgstr "" -"* Ez az étel közeledik minőségi idejének feléhez. Még sok" -" idő kell ahhoz, hogy megromoljon." - -#: src/item.cpp -msgid "" -"* This food looks like it has passed its midlife. Edible," -" but will go old sooner rather then later." -msgstr "" -"* Ez az étel már túl van a minőségi idejének felén. Még " -"ehető, de előbb-utóbb megromlik." - -#: src/item.cpp -msgid "" -"* This food looks like it will be old soon. It's now or never, if" -" you plan to use it." -msgstr "" -"* Ez az étel hamarosan elöregszik. Ha még szeretnél vele valamit " -"kezdeni, akkor most, vagy soha." - -#: src/item.cpp -msgid "" -"* This food looks old. It's on a brink of becoming inedible." -msgstr "* Ez az étel már régi. Az ehetetlenség határát súrolja." #: src/item.cpp msgid "" @@ -135582,10 +138371,6 @@ msgstr "" "* Ez az étel elkezdett megrohadni. Nagyon rossz ötlet " "lenne ezt most megenni." -#: src/item.cpp -msgid "Capacity: " -msgstr "Kapacitás: " - #: src/item.cpp #, c-format msgid " round of %s" @@ -135593,6 +138378,10 @@ msgid_plural " rounds of %s" msgstr[0] " db %s lövedék" msgstr[1] " db %s lövedék" +#: src/item.cpp +msgid "Capacity: " +msgstr "Kapacitás: " + #: src/item.cpp msgid " per round" msgstr "lövedékenként " @@ -135777,6 +138566,18 @@ msgstr "Kezelésmódosító: " msgid "Ammo: %s" msgstr "Töltény: %s" +#: src/item.cpp +msgid "%" +msgstr "" + +#: src/item.cpp +msgid "Reload modifier: " +msgstr "" + +#: src/item.cpp +msgid "Minimum strength required modifier: " +msgstr "" + #: src/item.cpp msgid "Used on: " msgstr "Használja: " @@ -138473,7 +141274,9 @@ msgid "You cannot use the %1$s with another of it's kind." msgstr "" #: src/iuse.cpp -msgid "You unfold solar array from the pack and plug it in." +msgid "" +"You unfold solar array from the pack. You still need to connect it with a " +"cable." msgstr "" #: src/iuse.cpp @@ -138627,10 +141430,6 @@ msgstr "" msgid "You waste a lot of the wood." msgstr "" -#: src/iuse.cpp src/iuse_actor.cpp -msgid "Cut up what?" -msgstr "" - #: src/iuse.cpp msgid "Chop down which tree?" msgstr "" @@ -139870,11 +142669,23 @@ msgid "" msgstr "" #: src/iuse.cpp -msgid "Attach cable to vehicle where?" +msgid "Using cable:" msgstr "" #: src/iuse.cpp -msgid "Using cable:" +msgid "Attach cable to vehicle" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to self" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to solar pack" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to vehicle where?" msgstr "" #: src/iuse.cpp @@ -140057,6 +142868,105 @@ msgid "" "work." msgstr "" +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "" + +#: src/iuse.cpp +msgid "Heads!" +msgstr "" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "" + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "" + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "" + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "" + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "" + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "" + +#: src/iuse.cpp +msgid "Most likely." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "" + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "" + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "" + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "" + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "" + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "" + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "" + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "" + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "" + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "" + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "" + #: src/iuse_actor.cpp #, c-format msgid "The %s is empty!" @@ -142680,21 +145590,230 @@ msgstr "Kutatási naplók áttekintése" msgid "Download Map Data" msgstr "Térképadatok letöltése" -#: src/mapgen.cpp -msgid "Divert power to elevator" -msgstr "Lift energiaellátás" +#: src/mapgen.cpp +msgid "Divert power to elevator" +msgstr "Lift energiaellátás" + +#: src/mapgen_functions.cpp +msgid "PolCom OS v1.47" +msgstr "PolCom OS v1.47" + +#: src/mapgen_functions.cpp +msgid "Open Supply Room" +msgstr "Raktárszoba kinyitása" + +#: src/mapgen_functions.cpp +msgid "Open Evidence Locker" +msgstr "Bizonyítékraktár kinyitása" + +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "" + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "" + +#: src/martialarts.cpp +msgid "activate" +msgstr "aktiválás" + +#: src/martialarts.cpp +msgid "be used" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "" + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "" + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind " +"it" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" +msgstr "" + +#: src/martialarts.cpp +msgid "Passive" +msgstr "" + +#: src/martialarts.cpp +msgid "Hit" +msgstr "Találat" -#: src/mapgen_functions.cpp -msgid "PolCom OS v1.47" -msgstr "PolCom OS v1.47" +#: src/martialarts.cpp +msgid "Get hit" +msgstr "" -#: src/mapgen_functions.cpp -msgid "Open Supply Room" -msgstr "Raktárszoba kinyitása" +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "" -#: src/mapgen_functions.cpp -msgid "Open Evidence Locker" -msgstr "Bizonyítékraktár kinyitása" +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "" +msgstr[1] "" + +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr "" #: src/material.cpp msgid "damages" @@ -143343,10 +146462,6 @@ msgstr "" msgid "Outpost Missions" msgstr "Előörs küldetések" -#: src/mission_companion.cpp -msgid "Base Missions" -msgstr "" - #: src/mission_companion.cpp msgid "Junk Shop Missions" msgstr "" @@ -143399,16 +146514,6 @@ msgstr "" msgid " hours] \n" msgstr "" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?" -msgstr "" -"\n" -" \n" -"Vissza szeretnéd hívni a szövetségeseidet a csoportba?" - #: src/mission_companion.cpp msgid "Retrieve Scavenging Patrol" msgstr "" @@ -143522,540 +146627,6 @@ msgstr "" msgid "Recover Ally from Carpentry Work" msgstr "" -#: src/mission_companion.cpp -msgid "Upgrade Camp" -msgstr "" - -#: src/mission_companion.cpp -msgid "Gather Materials" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" -" \n" -"Effects:\n" -"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" -" \n" -"Must have enjoyability >= -6\n" -"Perishable food liquidated at penalty depending on upgrades and rot time:\n" -"> Rotten: 0%%\n" -"> Rots in < 2 days: 60%%\n" -"> Rots in < 5 days: 80%%\n" -" \n" -"Total faction food stock: %d kcal or %d day's rations" -msgstr "" - -#: src/mission_companion.cpp -msgid "Distribute Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" -" \n" -"Effects:\n" -"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" -"> Items sitting on any type of furniture will not be moved.\n" -"> Items that are not listed in one of the categories are defaulted to the tools group." -msgstr "" - -#: src/mission_companion.cpp -msgid "Reset Sort Points" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to gather light brush and heavy sticks.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -"> heavy sticks\n" -"> withered plants\n" -"> splintered wood\n" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Collect Firewood" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to do low level chores and sort supplies.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" -"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Menial Labor" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours \n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Expand Base" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to a nearby forest to cut logs.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: 1 \n" -"Effects:\n" -"> 50%% of trees/trunks at the forest position will be cut down.\n" -"> 50%% of total material will be brought back.\n" -"> Repeatable with diminishing returns.\n" -" \n" -"Risk: Low-Medium\n" -"Time: 6 Hour Base + Travel Time + Cutting Time\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Cut Logs" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Good for setting up resupply or contingency points.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward.\n" -" \n" -"Risk: Medium\n" -"Time: 6 Hour Construction + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Setup Hide Site" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Push gear out to a hide site or bring gear back from one.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 1\n" -"Effects:\n" -"> Good for returning equipment you left in the hide site shelter.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward or back.\n" -" \n" -"Risk: Medium\n" -"Time: 1 Hour Base + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Relay Hide Site" -msgstr "" - -#: src/mission_companion.cpp -msgid "Construct Map Fortifications" -msgstr "" - -#: src/mission_companion.cpp -msgid "Construct Spiked Trench" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recruit Companions" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Select checkpoints to customize path.\n" -"> Reveals terrain around the path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Scout Mission" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 4\n" -"Effects:\n" -"> Pulls creatures encountered into combat instead of fleeing.\n" -"> Select checkpoints to customize path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: Very High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Combat Patrol" -msgstr "" - -#: src/mission_companion.cpp -msgid " Expansion Upgrade" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Have a companion attempt to completely dissemble a vehicle into components.\n" -" \n" -"Skill used: mechanics\n" -"Difficulty: 2 \n" -"Effects:\n" -"> Removed parts placed on the furniture in the garage.\n" -"> Skill plays a huge role to determine what is salvaged.\n" -" \n" -"Risk: None\n" -"Time: Skill Based \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Chop Shop" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plow any spaces that have reverted to dirt or grass.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Restores only the plots created in the last expansion upgrade.\n" -"> Does not damage existing crops.\n" -" \n" -"Risk: None\n" -"Time: 5 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Plow Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plant designated seeds in the spaces that have already been tilled.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose which seed type or all of your seeds.\n" -"> Stops when out of seeds or planting locations.\n" -"> Will plant in ALL dirt mounds in the expansion.\n" -" \n" -"Risk: None\n" -"Time: 1 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Plant Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Harvest any plants that are ripe and bring the produce back.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Will dump all harvesting products onto your location.\n" -" \n" -"Risk: None\n" -"Time: 3 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Harvest Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to expand your camp!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " hours left] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " minutes left] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " [DONE]\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally from Upgrading" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to upgrade your expansions!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally, " -msgstr "" - -#: src/mission_companion.cpp -msgid "Working at the chop shop...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/120 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Chop Shop" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working in your kitchen!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " [ALMOST DONE]\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Cooking" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working in your blacksmith shop!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Smithing" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to plow your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/~48 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Plow Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to plant your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/4 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Plant Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to harvest your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/~10 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Harvest Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working on your farm!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Crafting" -msgstr "" - -#: src/mission_companion.cpp -msgid "Busy crafting!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for materials to upgrade the camp.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/3 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally from Gathering" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for firewood.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Firewood Gatherers" -msgstr "" - -#: src/mission_companion.cpp -msgid "Performing menial labor...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Menial Laborer" -msgstr "" - -#: src/mission_companion.cpp -msgid "Surveying for expansion...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Surveyor" -msgstr "" - -#: src/mission_companion.cpp -msgid "Cutting logs in the woods...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Log Cutter" -msgstr "" - -#: src/mission_companion.cpp -msgid "Setting up a hide site...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Hide Setup" -msgstr "" - -#: src/mission_companion.cpp -msgid "Constructing fortifications...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Finish Map Fortifications" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for recruits.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Recruiter" -msgstr "" - -#: src/mission_companion.cpp -msgid "Scouting the region.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Scout" -msgstr "" - -#: src/mission_companion.cpp -msgid "Patrolling the region.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Combat Patrol" -msgstr "" - #: src/mission_companion.cpp msgid "" "Cost: $1000\n" @@ -144309,235 +146880,6 @@ msgstr "" msgid "departs to work as a laborer..." msgstr "" -#: src/mission_companion.cpp -msgid "You don't have enough food stored to feed your companion." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to upgrade the camp..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have a companion upgrading the camp." -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the materials for the upgrade." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your garage..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your kitchen with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your blacksmith shop with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your farm with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns to you with something..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for materials..." -msgstr "" - -#: src/mission_companion.cpp -msgid "There are too many companions working on this mission!" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for firewood..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to dig ditches and scrub toilets..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to survey land..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You have already selected a surveyor!" -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to upgrade the expansion..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have a worker upgrading that expansion!" -msgstr "" - -#: src/mission_companion.cpp -msgid "Forests and swamps are the only valid cutting locations." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Trip Estimate:\n" -"%s" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to cut logs..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working in the woods..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Forests, swamps, and fields are valid hide site locations." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to build a hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You need equipment to setup a hide site..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working on the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You must select an existing hide site." -msgstr "" - -#: src/mission_companion.cpp -msgid "Bring gear back?" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs for the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You need equipment to transport between the hide site..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from shuttling gear between the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Select a start and end point. Line must be straight. Fields, forests, and " -"swamps are valid fortification locations. In addition to existing " -"fortification constructions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an end point." -msgstr "" - -#: src/mission_companion.cpp -msgid "Invalid terrain in construction path." -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the material to build the fortification." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for recruits..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Select checkpoints until you reach maximum range or select the last point " -"again to end." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs on patrol..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Your companion hit a river and didn't know how to swim..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Your companion hit a river and didn't know how to swim well enough to " -"cross..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't return from patrol..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from patrol..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that garage." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins plowing the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone plowing that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "You have no additional seeds to give your companions..." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins planting the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Which seeds do you wish to have planted?" -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone planting that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to harvest the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone harvesting that field." -msgstr "" - #: src/mission_companion.cpp msgid "departs to work as a carpenter..." msgstr "" @@ -144730,243 +147072,6 @@ msgid "" "participate in advanced tasks." msgstr "" -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"%s\n" -" \n" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s \n" -"Risk: None\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes: \n" -"Send a companion to gather materials for the next camp upgrade.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: " -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from upgrading the camp having earned a bit of experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "While gathering supplies, a silent specter approaches %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s notices the antlered horror and slips away before it gets too close." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The survivor approaches %s asking for directions." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Fearful that he may be an agent of some hostile faction, %s doesn't mention " -"the camp." -msgstr "" - -#: src/mission_companion.cpp -msgid "The two part on friendly terms and the survivor isn't seen again." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't detect the ambush until it was too late!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The bull moose charged %s from the tree line..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Despite being caught off guard %s was able to run away until the moose gave " -"up pursuit." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The jabberwock grabbed %s by the arm from behind and began to scream." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Terrified, %s spun around and delivered a massive kick to the creature's " -"torso..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Collapsing into a pile of gore, %s walked away unscathed..." -msgstr "" - -#: src/mission_companion.cpp -msgid "(Sounds like bullshit, you wonder what really happened.)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s turned to find the hideous black eyes of a giant wasp staring back from " -"only a few feet away..." -msgstr "" - -#: src/mission_companion.cpp -msgid "The screams were terrifying, there was nothing anyone could do." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Pieces of %s were found strewn across a few bushes." -msgstr "" - -#: src/mission_companion.cpp -msgid "(You wonder if your companions are fit to work on their own...)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from gathering materials carrying supplies and has a bit more " -"experience..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Your companion seems disappointed that your pantry is empty..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -" Chopping this vehicle:\n" -"%s" -msgstr "" - -#: src/mission_companion.cpp -msgid "begins working in the garage..." -msgstr "" - -#: src/mission_companion.cpp -msgid "No seeds to plant!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working your fields..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from doing the dirty work to keep the camp running..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Sorting points have changed, forcing reset." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an expansion:" -msgstr "" - -#: src/mission_companion.cpp -msgid "You choose to wait..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from surveying for the expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "No items are located at the drop point..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "You distribute %d kcal worth of food to your companions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Harvestable: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Ready for Planting: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Needs Plowing: " -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Name: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "---- Engines ----\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Engine: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Status: %24d%%\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Fuel: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "---- Fuel Storage & Battery ----\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Estimated Chop Time: 5 Days\n" -msgstr "" - #: src/mission_companion.cpp #, c-format msgid "While %s was framing a building one of the walls began to collapse..." @@ -145124,368 +147229,6 @@ msgstr "" msgid "No one returns to your party..." msgstr "" -#: src/mission_companion.cpp -msgid "MAIN" -msgstr "" - -#: src/mission_companion.cpp -msgid " [N] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [NE] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [E] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [SE] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [S] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [SW] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [W] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [NW] " -msgstr "" - -#: src/mission_companion.cpp -msgid "Farm Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Garage Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Kitchen Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Blacksmith Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Empty Expansion" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Select a location between %d and %d tiles away." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"You must select a target between %d and %d range from the base. Range: %d" -msgstr "" - -#: src/mission_companion.cpp -msgid "You must be able to see the target that you select." -msgstr "" - -#: src/mission_companion.cpp -msgid "Do you want to bounce off this location to extend range?" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15.2f (km)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">One Way: %15d (trips)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15.2f (km)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15d (m)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15d (m)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Travel: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Working: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (days)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (minutes)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Food: %15d (kcal)\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "food for you" -msgstr "" - -#: src/mission_companion.cpp -msgid "food for companions" -msgstr "" - -#: src/mission_companion.cpp -msgid "weapons" -msgstr "" - -#: src/mission_companion.cpp -msgid "clothing" -msgstr "" - -#: src/mission_companion.cpp -msgid "bionics" -msgstr "" - -#: src/mission_companion.cpp -msgid "all kinds of tools" -msgstr "" - -#: src/mission_companion.cpp -msgid "wood of various sorts" -msgstr "" - -#: src/mission_companion.cpp -msgid "trash and rotting food" -msgstr "" - -#: src/mission_companion.cpp -msgid "books" -msgstr "" - -#: src/mission_companion.cpp -msgid "medication" -msgstr "" - -#: src/mission_companion.cpp -msgid "ammo" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Reset point: %s?" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -" Items New Point Old Point\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -" Save Points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "Revert to default points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the materials to craft that" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Batch crafting %s [MAX: %d]: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Your batch is too large!" -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to work..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" -" \n" -"Skill used: speech\n" -"Difficulty: 2 \n" -"Base Score: +%3d%%\n" -"> Expansion Bonus: +%3d%%\n" -"> Faction Bonus: +%3d%%\n" -"> Special Bonus: +%3d%%\n" -" \n" -"Total: Skill +%3d%%\n" -" \n" -"Risk: High\n" -"Time: 4 Days\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from searching for recruits with a bit more experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s encountered %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't find anyone to recruit..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s convinced %s to hear a recruitment offer from you..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested in anything %s had to offer..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"NPC Overview:\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Name: %20s\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Strength: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Dexterity: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Intelligence: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Perception: %10d\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Top 3 Skills:\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Asking for:\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"> Food: %10d days\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Faction Food:%9d days\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Recruit Chance: %10d%%\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an option:" -msgstr "" - -#: src/mission_companion.cpp -msgid "Increase Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "Decrease Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "Make Offer" -msgstr "" - -#: src/mission_companion.cpp -msgid "Not Interested" -msgstr "" - -#: src/mission_companion.cpp -msgid "You decide you aren't interested..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s has been convinced to join!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested..." -msgstr "" - #: src/mission_companion.h msgid "Do you wish to give your companion additional items?" msgstr "" @@ -148136,9 +149879,10 @@ msgstr "Maradék pont: %4d" msgid "Freeform" msgstr "Szabadon választható" -#: src/newcharacter.cpp -msgid "Pick your style:" -msgstr "Válassz harci stílust:" +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" +msgstr "Válassz egy harci stílust (bővebb infóhoz nyomd meg a(z) %s gombot)" #: src/newcharacter.cpp msgid "Use this style?" @@ -149381,50 +151125,6 @@ msgstr "" msgid " If you are interested, I have another job for you." msgstr "" -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "Hát, szerintem akkor már csak mi maradtunk." - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "Legalább van fedél a fejünk felett." - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "Nem tudom, gondolom keressünk használható cuccokat meg más túlélőket." - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "Talán azzal kéne kezdenünk, hogy bedeszkázzuk ezt a helyet." - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to" -" disappear quickly from here." -msgstr "" -"Szerintem nem ártana egy kocsit megszerelni, ha esetleg gyorsan el kell " -"innen tünnünk." - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "" -"Megkereshetnénk az egyik farmot. Sok kaját lehet ott találni és messze van a" -" városoktól." - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "" -"Nem ártana távol maradni azoktól a városoktól, még akkor is, ha amúgy egy " -"csomó cuccot lehet ott találni." - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." msgstr "Most kértél tőlem cuccot, majd később." @@ -149433,10 +151133,6 @@ msgstr "Most kértél tőlem cuccot, majd később." msgid "Why should I share my equipment with you?" msgstr "Miért osztanék én meg veled bármit is?" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "Oké, tessék." - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr ", és ha még egyszer kérdezed, !" @@ -149457,46 +151153,6 @@ msgstr "Bocs, de semmit se tudok neked tanítani." msgid "Here's what I can teach you..." msgstr "Ezt tudom neked tanítani..." -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "Rendben, akkor kezdjük." - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "Addig nem, amíg nem kapok antibiotikumot..." - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "Nemrég kértél erre, majd később." - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "És miért pont veled utazzak?" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "Rendben, veled vagyok!" - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "Ja... szerintem nem." - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "Mi van?" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "Tényleg elmész?" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "Rendben, te vagy a főnök." - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "Nem, itt én vagyok a főnök." - #: src/npctalk.cpp #, c-format msgid "%d.%d miles." @@ -149509,22 +151165,6 @@ msgid_plural "%d feet." msgstr[0] "" msgstr[1] "" -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "Én vagyok őrségben." - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "Dehogy is, még lemaradok!" - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "Azt jobban szeretném magamnak megtartani." - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "Nem szeretném..." - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "*nem harcol az ellenségekkel." @@ -149830,30 +151470,6 @@ msgstr "Többet fogtok látni..." msgid "Delivering bandages." msgstr "Kötszer leszállítása." -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "" - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "" - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "" - #: src/npctalk.cpp msgid "Okay, fine." msgstr "" @@ -149886,30 +151502,6 @@ msgstr "" msgid "Never mind, I'll do without. Bye." msgstr "" -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "" - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "" - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "" @@ -149931,94 +151523,6 @@ msgstr "" msgid "%s: %d -> %d (cost $%d)" msgstr "%s: %d -> %d (ára: $%d)" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "" - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "" - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "" - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "" - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "" - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "" - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "" - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "" - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "" - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "" - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "" - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "" - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "" - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "" - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "" - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "" - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "" - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "" - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "" @@ -150027,10 +151531,6 @@ msgstr "" msgid "Let's keep moving." msgstr "" -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "" - #: src/npctalk.cpp msgid "Combat commands..." msgstr "" @@ -150088,15 +151588,11 @@ msgid "Miscellaneous rules..." msgstr "" #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "" - -#: src/npctalk.cpp -msgid "I'll give you some space." +msgid "I'm going to go my own way for a while." msgstr "" #: src/npctalk.cpp -msgid "I understand..." +msgid "Let's talk about faction camps." msgstr "" #: src/npctalk.cpp @@ -150814,6 +152310,11 @@ msgid "" " - Butcher: Butcher corpses you stand on." msgstr "" +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "Rokkant" + #: src/options.cpp msgid "Pulp" msgstr "" @@ -151025,10 +152526,6 @@ msgstr "" msgid "Always" msgstr "Mindig" -#: src/options.cpp -msgid "Ask" -msgstr "Kérdezzen" - #: src/options.cpp msgid "Never" msgstr "Soha" @@ -153462,9 +154959,7 @@ msgstr "" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "" -msgstr[1] "" +msgstr "" #: src/player.cpp msgid "Equipment:" @@ -154922,24 +156417,6 @@ msgstr "Előrántod a(z) %s tárolójából ezt: %s?" msgid "Stop wielding %s?" msgstr "Elteszed a kezedből a(z) %st?" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "Technikák:" -msgstr[1] "Technikák:" - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "" -"Ez a stílus forszírozza a fegyvertelen ütéseket, még akkor is, ha a kezedben" -" van fegyver." - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "Válassz egy harci stílust (bővebb infóhoz nyomd meg a(z) %s gombot)" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "A kéz maradjon üresen (ki)" @@ -154997,6 +156474,11 @@ msgstr "" msgid "Mend" msgstr "" +#: src/player.cpp +#, c-format +msgid "The %s doesn't have any faults to toggle." +msgstr "" + #: src/player.cpp #, c-format msgid "The %s doesn't have any faults to mend." @@ -155768,10 +157250,6 @@ msgstr "Intelligencia" msgid "Perception" msgstr "Érzékelés" -#: src/player_display.cpp -msgid "Speed" -msgstr "Sebesség" - #: src/player_display.cpp msgid "Severely Malnourished" msgstr "Nagyon alultáplált" @@ -156876,6 +158354,10 @@ msgstr "" msgid "kerblam!" msgstr "" +#: src/recipe.cpp +msgid "none" +msgstr "" + #: src/requirements.cpp #, c-format msgid "%d tool with %s of %d or more." @@ -158199,6 +159681,19 @@ msgstr "" msgid "'}' to scroll down" msgstr "" +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" +msgstr "" + #: src/veh_interact.cpp #, c-format msgid "> %2$s" @@ -159061,13 +160556,13 @@ msgstr "Nincsen elég energia a(z) %s bekapcsolásához" #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" -msgstr "Kikapcsolja a(z) %st" +msgid "Turn on %s" +msgstr "Bekapcsolja a(z) %st" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" -msgstr "Bekapcsolja a(z) %st" +msgid "Turn off %s" +msgstr "Kikapcsolja a(z) %st" #: src/vehicle_use.cpp #, c-format @@ -159163,10 +160658,6 @@ msgstr "Kamerarendszer engedélyezve" msgid "Camera system won't turn on" msgstr "A kamerarendszer nem kapcsol be" -#: src/vehicle_use.cpp -msgid "Quit controlling electronics" -msgstr "" - #: src/vehicle_use.cpp msgid "Electronics controls" msgstr "" diff --git a/lang/po/ja.po b/lang/po/ja.po index 5191411564630..d8250c7a9d2e4 100644 --- a/lang/po/ja.po +++ b/lang/po/ja.po @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-26 22:02+0800\n" +"POT-Creation-Date: 2018-11-16 22:24+0800\n" "PO-Revision-Date: 2018-04-26 14:47+0000\n" "Last-Translator: Pigmentblue15, 2018\n" "Language-Team: Japanese (https://www.transifex.com/cataclysm-dda-translators/teams/2217/ja/)\n" @@ -1857,7 +1857,7 @@ msgstr "" #: lang/json/AMMO_from_json.py msgid ".270 Winchester" -msgstr "弾薬(.27口径/ウィンチェスター)" +msgstr "弾薬(.270口径/ウィンチェスター)" #. ~ Description for .270 Winchester #: lang/json/AMMO_from_json.py @@ -1868,7 +1868,7 @@ msgid "" "capable of taking down large targets with ease. While not advisable, it may" " be possible to use it in some firearms chambered for .30-06." msgstr "" -"弾頭重量約8.4gの.27口径ソフトポイントウィンチェスター弾です。.30-06弾と同様に、新しいデザインのものに置き換わる以前の21世紀中頃には狩猟用の弾薬として人気がありました。大きな標的を簡単に倒せる強力な弾薬です。あまり勧められませんが、.30-06弾用の銃火器にも使用可能です。" +"弾頭重量約8.4gの.270口径ソフトポイントウィンチェスター弾です。.30-06弾と同様に、新しいデザインのものに置き換わる以前の21世紀中頃には狩猟用の弾薬として人気がありました。大きな標的を簡単に倒せる強力な弾薬です。あまり勧められませんが、.30-06弾用の銃火器にも使用可能です。" #: lang/json/AMMO_from_json.py msgid ".30-06 Springfield" @@ -1912,7 +1912,7 @@ msgstr "" #: lang/json/AMMO_from_json.py msgid "reloaded .270 Winchester" -msgstr "弾薬(.27口径/ウィンチェスター(手詰め))" +msgstr "弾薬(.270口径/ウィンチェスター(手詰め))" #: lang/json/AMMO_from_json.py msgid "reloaded .30-06 Springfield" @@ -4245,6 +4245,7 @@ msgid "" msgstr "様々な有機物が混ざりあった物体です。ブロブが健康に育つために必要な養分がたっぷり含まれています...たぶん。" #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "石" @@ -5168,6 +5169,16 @@ msgid "bondage mask" msgid_plural "bondage masks" msgstr[0] "ボンデージマスク" +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "ジッパーを閉じる" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "ボンデージマスクのジッパーを閉じて目と口を塞ぎました。" + #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" @@ -5175,6 +5186,28 @@ msgid "" "zippers." msgstr "黒い革製のタイトマスクです。目と口のジッパーを閉じられます。" +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "ボンデージマスク(閉)" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "ジッパーを開く" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "ボンデージマスクの目元と口元のジッパーを開きました。" + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "黒い革製のタイトマスクです。目元と口元のジッパーは閉まっています。" + #: lang/json/ARMOR_from_json.py msgid "bondage suit" msgid_plural "bondage suits" @@ -5641,7 +5674,7 @@ msgstr[0] "コート(フェイクファー)" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." msgstr "小さなポケットがいくつか付いた、派手な色のフェイクファーコートです。天然の毛皮ほどは暖かくありませんが、個性的なおしゃれを楽しめます。" @@ -5968,7 +6001,7 @@ msgstr[0] "ダスターコート" #. ~ Description for duster #: lang/json/ARMOR_from_json.py msgid "A rugged full-length duster coat. Has many pockets for storage." -msgstr "丈夫で全身を覆えるダスターコートです。収納用に複数のポケットが付いています。" +msgstr "全身を覆う丈夫なダスターコートです。収納用にたくさんのポケットが付いています。" #: lang/json/ARMOR_from_json.py msgid "fur duster" @@ -5978,7 +6011,19 @@ msgstr[0] "ダスターコート(毛皮)" #. ~ Description for fur duster #: lang/json/ARMOR_from_json.py msgid "A thick fur full-length duster. Has many pockets for storage." -msgstr "厚手の毛皮で作った、全身を覆えるダスターコートです。収納用に複数のポケットが付いています。" +msgstr "厚手の毛皮で作った、全身を覆うダスターコートです。収納用にたくさんのポケットが付いています。" + +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "ダスターコート(フェイクファー)" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." +msgstr "厚手のフェイクファーで作った全身を覆うダスターコートです。収納用に複数のポケットが付いています。" #: lang/json/ARMOR_from_json.py msgid "leather duster" @@ -5988,7 +6033,7 @@ msgstr[0] "ダスターコート(革)" #. ~ Description for leather duster #: lang/json/ARMOR_from_json.py msgid "A thick leather full-length duster. Has many pockets for storage." -msgstr "厚手の革で作った、全身を覆えるダスターコートです。収納用に複数のポケットが付いています。" +msgstr "厚手の革で作った、全身を覆うダスターコートです。収納用にたくさんのポケットが付いています。" #: lang/json/ARMOR_from_json.py msgid "survivor duster" @@ -6000,8 +6045,7 @@ msgstr[0] "サバイバーダスターコート" msgid "" "A Kevlar armored custom full-length duster, covered with pouches and " "pockets. Comfortable, durable, and great for storage." -msgstr "" -"全身を覆える特注のダスターコートです。ケブラーで装甲を施し、収納容積を大幅に増やしました。動きやすく、頑丈で、アイテムを大量に収納できます。" +msgstr "全身を覆う特注のダスターコートです。ケブラーで装甲を施し、収納容積を大幅に増やしました。動きやすく、頑丈で、アイテムを大量に収納できます。" #: lang/json/ARMOR_from_json.py msgid "pair of ear plugs" @@ -6967,6 +7011,19 @@ msgstr[0] "ファーハット" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "動物の毛皮から作られた、極めて暖かい帽子です。" +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "フェイクファーハット" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "" +"フェイクファー製のお洒落な帽子です。本物の毛皮そっくりですが、付いているタグを信じるならば、殺生なしで作られた物と言えます。非常に暖かい着心地です。" + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -7260,16 +7317,6 @@ msgid "" "the cost of great encumbrance." msgstr "中世時代の兜です。重量があり、頭に大きな負担が掛かりますが、頭部全体に優れた防御力を発揮します。" -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "ライオットヘルメット" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "顔全体を覆うプラスチックシールドを備えたヘルメットです。" - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" @@ -8669,6 +8716,16 @@ msgstr[0] "パンツ(毛皮)" msgid "A hefty pair of fur-lined pants." msgstr "裏地に毛皮を用いた丈夫なパンツです。" +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "フェイクファーパンツ" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "裏地に毛皮の模造品が使われている布製の長ズボンです。" + #: lang/json/ARMOR_from_json.py msgid "leather pants" msgid_plural "leather pants" @@ -9255,21 +9312,77 @@ msgid "sleeping bag" msgid_plural "sleeping bags" msgstr[0] "寝袋" +#. ~ Use action menu_text for sleeping bag. +#. ~ Use action menu_text for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Roll up" +msgstr "折り畳む" + +#. ~ Use action msg for sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the sleeping bag, preparing it for transport." +msgstr "寝袋を丸めて、持ち運びやすいようにまとめました。" + #. ~ Description for sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag that covers you head to toe." msgstr "大きな寝袋です。頭から足の先まですっぽりと包まれます。" +#: lang/json/ARMOR_from_json.py +msgid "rolled sleeping bag" +msgid_plural "rolled sleeping bags" +msgstr[0] "寝袋(折畳)" + +#. ~ Use action menu_text for rolled sleeping bag. +#. ~ Use action menu_text for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Unroll" +msgstr "展開する" + +#. ~ Use action msg for rolled sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll the sleeping bag." +msgstr "寝袋を広げました。" + +#. ~ Description for rolled sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag rolled up for transport. It has a strap to carry it " +"with." +msgstr "持ち運びやすいように丸めてある、持ち手が付いた大きな寝袋です。" + #: lang/json/ARMOR_from_json.py msgid "fur sleeping bag" msgid_plural "fur sleeping bags" msgstr[0] "寝袋(毛皮)" +#. ~ Use action msg for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the fur sleeping bag, preparing it for transport." +msgstr "寝袋(毛皮)を丸めて、持ち運びやすいようにまとめました。" + #. ~ Description for fur sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag lined with fur. Who needs a tent?" msgstr "裏起毛の寝袋です。テントもいかが?" +#: lang/json/ARMOR_from_json.py +msgid "rolled fur sleeping bag" +msgid_plural "rolled fur sleeping bags" +msgstr[0] "寝袋(毛皮/折畳)" + +#. ~ Use action msg for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll up the fur sleeping bag." +msgstr "寝袋(毛皮)を広げました。" + +#. ~ Description for rolled fur sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag lined with fur, rolled for transport. It has a strap " +"to carry it with." +msgstr "持ち運びやすいように丸めてある、持ち手が付いた裏地が毛皮の大きな寝袋です。" + #: lang/json/ARMOR_from_json.py msgid "sleeveless duster" msgid_plural "sleeveless dusters" @@ -9280,7 +9393,7 @@ msgstr[0] "袖無しダスターコート" msgid "" "A rugged full-length duster that leaves your arms unencumbered. Has plenty " "of storage space due to its many pockets." -msgstr "丈夫で全身を覆えるダスターコートです。袖が無いので腕が動かし易くなっており、複数のポケットで収納容積を確保しています。" +msgstr "全身を覆う丈夫なダスターコートです。袖が無いので腕が動かし易くなっており、たくさんのポケットで収納容積を確保しています。" #: lang/json/ARMOR_from_json.py msgid "sleeveless fur duster" @@ -9292,7 +9405,19 @@ msgstr[0] "袖無しダスターコート(毛皮)" msgid "" "A thick fur full-length duster without sleeves, leaving your arms " "unencumbered. Has plenty of storage space due to its many pockets." -msgstr "厚手の毛皮で作った全身を覆えるダスターコートです。袖が無いので腕が動かし易くなっており、複数のポケットで収納容積を確保しています。" +msgstr "厚手の毛皮で作った、全身を覆うダスターコートです。袖が無いので腕が動かし易くなっており、たくさんのポケットで収納容積を確保しています。" + +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "袖無しダスターコート(フェイクファー)" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "厚手のフェイクファーで作った、ひざ丈の袖なしダスターコートです。収納用にたくさんのポケットが付いています。" #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" @@ -9304,7 +9429,7 @@ msgstr[0] "袖無しダスターコート(革)" msgid "" "A thick leather full-length duster without sleeves, leaving your arms " "unencumbered. Has plenty of storage space due to its many pockets." -msgstr "厚手の革で作った全身を覆えるダスターコートです。袖が無いので腕が動かし易くなっており、複数のポケットで収納容積を確保しています。" +msgstr "厚手の革で作った、全身を覆うダスターコートです。袖が無いので腕が動かし易くなっており、たくさんのポケットで収納容積を確保しています。" #: lang/json/ARMOR_from_json.py msgid "sleeveless survivor duster" @@ -9317,7 +9442,7 @@ msgid "" "A custom Kevlar armored full-length duster without sleeves, covered with " "pouches and pockets. Comfortable, durable, and great for storage." msgstr "" -"全身を覆える特注の袖なしダスターコートです。ケブラーで装甲を施し、十分な収納容積を確保しています。動きやすく、頑丈で、アイテムを大量に収納できます。" +"全身を覆う特製の袖なしダスターコートです。ケブラーで装甲を施し、十分な収納容積を確保しています。動きやすく、頑丈で、アイテムを大量に収納できます。" #: lang/json/ARMOR_from_json.py msgid "sleeveless trenchcoat" @@ -9343,6 +9468,18 @@ msgid "" " plenty of storage space due to its many pockets." msgstr "邪魔な袖を取っ払った毛皮製の厚手のトレンチコートです。ポケットが多く、物をたくさん収納できます。" +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "袖無しトレンチコート(フェイクファー)" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "厚手のフェイクファーで作った袖なしトレンチコートです。収納用量が多く、見た目もお洒落です。" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -9957,7 +10094,7 @@ msgstr[0] "トレンチコート" #. ~ Description for trenchcoat #: lang/json/ARMOR_from_json.py msgid "A thin cotton trenchcoat, lined with pockets. Great for storage." -msgstr "綿製のポケットが並んで付いた薄いトレンチコートです。非常に大きな収納容積を備えています。" +msgstr "ポケットが付いた薄い綿製のトレンチコートです。非常に大きな収納容積を備えています。" #: lang/json/ARMOR_from_json.py msgid "fur trenchcoat" @@ -9967,7 +10104,19 @@ msgstr[0] "トレンチコート(毛皮)" #. ~ Description for fur trenchcoat #: lang/json/ARMOR_from_json.py msgid "A thick fur trenchcoat, lined with pockets. Great for storage." -msgstr "毛皮製のポケットが並んで付いたトレンチコートです。非常に大きな収納容積を備えています。" +msgstr "ポケットが付いた分厚い毛皮製のトレンチコートです。非常に大きな収納容積を備えています。" + +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "トレンチコート(フェイクファー)" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "ポケットが付いたフェイクファー製のトレンチコートです。非常に大きな収納容積を備えており、街で評判のお洒落なデザインです。" #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" @@ -9977,7 +10126,7 @@ msgstr[0] "トレンチコート(革)" #. ~ Description for leather trenchcoat #: lang/json/ARMOR_from_json.py msgid "A thick leather trenchcoat, lined with pockets. Great for storage." -msgstr "厚い革製のポケットが並んで付いたトレンチコートです。非常に大きな収納容積を備えています。" +msgstr "ポケットが付いた分厚い革製のトレンチコートです。非常に大きな収納容積を備えています。" #: lang/json/ARMOR_from_json.py msgid "survivor trenchcoat" @@ -11680,7 +11829,7 @@ msgid "" "A plastic sheet with several grommets for securing it with rope or cord. " "Useful for improvised rain protection." msgstr "" -"ふちに紐を通すハトメ金があるプラスチックのシートです。全身を覆えるほどの大きさがあります。手っ取り早く雨をしのぐには有効な手段となるでしょう。" +"縁に紐を通すハトメ金がついたプラスチックのシートです。全身を覆えるほどの大きさがあります。手っ取り早く雨をしのぐには有効な手段となるでしょう。" #: lang/json/ARMOR_from_json.py msgid "makeshift sunglasses" @@ -13021,11 +13170,12 @@ msgid_plural "Ionic Overload Generator CBMs" msgstr[0] "CBM: 過重イオン発生装置" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" "使用者の胸に埋め込む、強力なイオンエネルギー発生装置です。強力で大規模なエネルギーの爆風を発射します。生じた爆風は酸素と反応し、発火と爆発を引き起こします。近距離での使用は避けてください。" @@ -13068,23 +13218,6 @@ msgid "" msgstr "" "使用者の胸に埋め込む、強力なイオンエネルギー発生装置です。強力で大規模なエネルギーの爆風を発射します。生じた爆風は酸素と反応し、発火と爆発を引き起こします。近距離での使用は避けてください。" -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "CBM: 自立式外科用カミソリ" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While" -" activated, they will continously drain power to make automated precise cuts" -" but you will be unable to wield anything." -msgstr "" -"使用者の指に埋め込む、外科手術規格のカミソリ装置です。起動している間は電力を消耗して、自動化されたカミソリが絶えず正確に動き続けますが、その間は手に何も着用できません。" - #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" msgid_plural "Lessons for the Novice Bowhunter" @@ -15488,6 +15621,21 @@ msgid "" "volume." msgstr "スケッチやメモが豊富に入った、服飾デザイナー向けの革張りのポートフォリオです。裁縫に熟練した人であれば、ここから多くを学び取れるでしょう。" +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "本(学習/気さくで優雅なファッション)" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon" +" Animal Rights Organization." +msgstr "" +"フェイクファーの扱い方や長所・短所を詳述した教養書です。情熱的な文体で書かれており、表紙のただし書きには、グリフォン・アニマルライツ協会がこの本の出版流通を担っている旨が誇らしげに記されています。" + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -23342,7 +23490,7 @@ msgstr "固形骨粉" #. ~ Description for bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Tastes horribly and is " +"Homemade calcium supplement made out of bone meal. Tastes horrible and is " "hard to swallow but it does its job." msgstr "骨粉から自作したカルシウムサプリメントです。ひどい味で飲み込むのも困難ですが、確かに効果はあります。" @@ -23353,9 +23501,9 @@ msgstr "フレーバー固形骨粉" #. ~ Description for flavored bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Due to some sweetness " -"mixed in to counteract the powdery texture and the taste of ash, almost as " -"palatable as the pre-cataclysm tablets." +"Homemade calcium supplement made out of bone meal. Due to some sweetness " +"mixed in to counteract the powdery texture and the taste of ash, it's almost" +" as palatable as the pre-cataclysm tablets." msgstr "" "骨粉から自作したカルシウムサプリメントです。甘味料を混ぜることで骨の舌触りと味を誤魔化し、大変動前に市販されていた錠剤とほぼ同程度の美味しさに仕上げました。" @@ -23909,7 +24057,7 @@ msgid "" "fruit. It has been supplemented with extra vitamins and minerals" msgstr "純粋なタンパク質と栄養価の高い果実から作られた、栄養価が高くて美味しい飲み物です。ビタミンやミネラルを豊富に含んでいます。" -#: lang/json/COMESTIBLE_from_json.py src/mission_companion.cpp +#: lang/json/COMESTIBLE_from_json.py src/faction_camp.cpp msgid "seeds" msgid_plural "seeds" msgstr[0] "種" @@ -25842,7 +25990,7 @@ msgstr "一般的にはアイスクリームを保管するために使う、プ #: lang/json/CONTAINER_from_json.py msgid "blood draw kit" msgid_plural "blood draw kits" -msgstr[0] "採血キット" +msgstr[0] "採血キット(250ml)" #. ~ Description for blood draw kit #: lang/json/CONTAINER_from_json.py @@ -26436,6 +26584,30 @@ msgid "" "when you look at them." msgstr "まだ煙が出ている燃えさしです。今にも火が消えてしまいそうです。" +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "マジック8ボール" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "1950年代に流行った占い装置です。特に必要のない精神的助言を与えてくれます。" + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "硬貨" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "今や過去のものになった流通貨幣の一種です。本来の使用目的が失われ、現在は正確かつ手軽なコインを無料で提供する道具になっています。" + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -28821,7 +28993,7 @@ msgid "" "resulting weapon is unwieldy and slow but very heavy hitting." msgstr "金属片と木の棒を長い紐で繋いだ武器です。とても扱い辛いですが、遠心力の乗った非常に重い打撃を繰り出せます。" -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "木材" @@ -28881,14 +29053,14 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "aluminum bat" msgid_plural "aluminum bats" -msgstr[0] "アルミニウムバット" +msgstr[0] "金属バット" #. ~ Description for aluminum bat #: lang/json/GENERIC_from_json.py msgid "" "An aluminum baseball bat, lighter than a wooden bat and a little easier to " "swing as a result." -msgstr "木製のバットよりも小さいので、振り回すのが多少簡単なアルミニウム製のバットです。" +msgstr "木製のバットよりも軽いため振り回すのが多少簡単な、アルミニウム製のバットです。" #: lang/json/GENERIC_from_json.py msgid "wooden spear" @@ -30465,9 +30637,8 @@ msgstr "この瓶には発酵中のピクルスが入っています。発酵が #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." -msgstr "木製の柄の先に鉄のスパイクが付いた、中世の武器です。他の槍と比べて大きく重いものの、命中率や攻撃力は比類ないものになっています。" +"spike." +msgstr "木製の柄の先に鉄のスパイクが付いた中世の武器です。" #: lang/json/GENERIC_from_json.py msgid "pot" @@ -36809,18 +36980,6 @@ msgid "" msgstr "" "ヒナコウモリの一種で、羽のある昆虫を捕食する哺乳類の仲間です。洞窟や窪みなどで集団で生息し、超音波の反響を利用して障害物の多い地形でも素早く移動します。" -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "煙幕クマ" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "" -"かつて威風堂々と森を闊歩していたであろう熊は、今や見る影もなく、身体中から煙を発しています。その漆黒の瞳には敵意と...飢餓を宿しています。" - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "負傷ゾンビ" @@ -37008,11 +37167,11 @@ msgstr "チャド" #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "" "Cannibalistic Humanoid Underground " -"Dweller、略してC.H.U.D.(チャド)は地下に棲む人喰い生物です。地下暮らしを余儀なくされ、暗闇の中で生活する内に発狂した人間の成れの果てです。" +"Dweller(人食い人型地底人)、略してC.H.U.D.(チャド)です。地下暮らしを余儀なくされ、暗闇の中で生活する内に発狂した人間の成れの果てです。" #: lang/json/MONSTER_from_json.py msgid "police bot" @@ -39444,10 +39603,10 @@ msgid "" msgstr "北部の森林に生息するオジロジカで、素早く力強い草食動物です。コヨーテや狼、巨大クモなどの獲物になっています。" #: lang/json/MONSTER_from_json.py -msgid "labrador mutt" -msgstr "ラブラドールミックス" +msgid "Labrador mutt" +msgstr "ラブラドールレトリバー" -#. ~ Description for labrador mutt +#. ~ Description for Labrador mutt #: lang/json/MONSTER_from_json.py msgid "" "This once average Labrador mixed breed dog has clearly gone feral. You can " @@ -39457,10 +39616,10 @@ msgstr "" "かつて飼い犬だったと思われるラブラドールレトリバー系の雑種犬は、明らかに野生化しています。飢えた目をしていなければ、撫でてやることもできそうですが、隙を見せればきっと噛みついてくるでしょう。" #: lang/json/MONSTER_from_json.py -msgid "labrador puppy" -msgstr "ラブラドールミックス(子犬)" +msgid "Labrador puppy" +msgstr "ラブラドールレトリバー(子犬)" -#. ~ Description for labrador puppy +#. ~ Description for Labrador puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Labrador puppy. Much safer to tame than adult " @@ -39474,7 +39633,7 @@ msgstr "ブルドッグ" #. ~ Description for bulldog #: lang/json/MONSTER_from_json.py msgid "" -"The American Bulldog is a hardy, well built dog, that seems suited for " +"The American bulldog is a hardy, well built dog, that seems suited for " "surviving the apocalypse." msgstr "丈夫でがっしりとした、大変動を生き延びられそうなアメリカンブルドッグです。" @@ -39485,7 +39644,7 @@ msgstr "ブルドッグ(子犬)" #. ~ Description for bulldog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless American Bulldog puppy. Much safer to tame than " +"An adorable, defenseless American bulldog puppy. Much safer to tame than " "adult counterparts." msgstr "愛らしく無防備なアメリカンブルドッグの子犬です。成犬よりはるかに無害です。" @@ -39496,10 +39655,10 @@ msgstr "ピットブルミックス" #. ~ Description for pit bull mix #: lang/json/MONSTER_from_json.py msgid "" -"The oft-misunderstood Pit Bull is not actually a single breed but a label " -"for several such as American Pit Bull Terrier and American Staffordshire " -"Terrier. Average abilities and well-known for their 'lock jaw' which isn't " -"real but their incredible determination is." +"The oft-misunderstood pit bull is not actually a single breed but a label " +"for several such as the American pit bull terrier and American Staffordshire" +" terrier. Average abilities and well-known for their 'lock jaw' which isn't" +" real but their incredible determination is." msgstr "" "ピットブルは単一の犬種であると誤解されがちですが、アメリカンブルテリアやアメリカンスタッフォードシャーテリアなど様々な種類がいます。有名な「噛みつき攻撃」の威力は実際のところ一般的な犬と同程度ですが、その決断力には目を見張るものがあります。" @@ -39510,7 +39669,7 @@ msgstr "ピットブルミックス(子犬)" #. ~ Description for pit bull puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Pit Bull puppy. Much safer to tame than adult " +"An adorable, defenseless pit bull puppy. Much safer to tame than adult " "counterparts." msgstr "愛らしく無防備なピットブルミックスの子犬です。成犬よりはるかに無害です。" @@ -39521,7 +39680,7 @@ msgstr "ビーグル" #. ~ Description for beagle #: lang/json/MONSTER_from_json.py msgid "" -"An adorable Beagle that has managed to survive the apocalypse. Being agile " +"An adorable beagle that has managed to survive the apocalypse. Being agile " "and small, they are difficult to shoot at. Generally attacks in packs." msgstr "大変動を生き延びた愛らしいビーグルです。機敏で小さいため狙い撃つのは困難です。通常は群れを成して戦います。" @@ -39532,7 +39691,7 @@ msgstr "ビーグル(子犬)" #. ~ Description for beagle puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Beagle puppy. Much safer to tame than adult " +"An adorable, defenseless beagle puppy. Much safer to tame than adult " "counterparts." msgstr "愛らしく無防備なビーグルの子犬です。成犬よりはるかに無害です。" @@ -39544,7 +39703,7 @@ msgstr "ボーダーコリー" #: lang/json/MONSTER_from_json.py msgid "" "An athletic and hyperactive dog that loves to herd animals and jump, the " -"Border Collie is an agile attacker. Although they can be easy to train, " +"border collie is an agile attacker. Although they can be easy to train, " "they don't work well in packs." msgstr "運動能力が高く素早い攻撃が得意なボーダーコリーは、他の動物を率いたり飛び跳ねたりするのが大好きです。しつけは楽ですが、群れるのは苦手です。" @@ -39555,7 +39714,7 @@ msgstr "ボーダーコリー(子犬)" #. ~ Description for border collie puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Border Collie puppy. Much safer to tame than adult" +"An adorable, defenseless border collie puppy. Much safer to tame than adult" " counterparts." msgstr "愛らしく無防備なボーダーコリーの子犬です。成犬よりはるかに無害です。" @@ -39566,7 +39725,7 @@ msgstr "ボクサーマスティフ" #. ~ Description for boxer mastiff #: lang/json/MONSTER_from_json.py msgid "" -"An ordinary breed full of affection, the Boxer Mastiff doesn't otherwise " +"An ordinary breed full of affection, the boxer mastiff doesn't otherwise " "stand out amongst other dogs with its capabilities." msgstr "ボクサーマスティフは愛情をこめて育てさえすれば、他の犬種より際立って危険ということはありません。" @@ -39577,15 +39736,15 @@ msgstr "ボクサーマスティフ(子犬)" #. ~ Description for boxer puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Boxer puppy. Much safer to tame than adult " +"An adorable, defenseless boxer puppy. Much safer to tame than adult " "counterparts." msgstr "愛らしく無防備なボクサーマスティフの子犬です。成犬よりはるかに無害です。" #: lang/json/MONSTER_from_json.py -msgid "chihuahua" +msgid "Chihuahua" msgstr "チワワ" -#. ~ Description for chihuahua +#. ~ Description for Chihuahua #: lang/json/MONSTER_from_json.py msgid "" "It's a tiny Chihuahua. How it has managed to survive is a miracle; although" @@ -39593,10 +39752,10 @@ msgid "" msgstr "小さなチワワです。今まで生き残ってきたことが奇跡です。体格が小さく攻撃的な性格だったことが幸いしたのかもしれません。" #: lang/json/MONSTER_from_json.py -msgid "chihuahua puppy" +msgid "Chihuahua puppy" msgstr "チワワ(子犬)" -#. ~ Description for chihuahua puppy +#. ~ Description for Chihuahua puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Chihuahua puppy. Much safer to tame than adult " @@ -39621,15 +39780,15 @@ msgstr "ダックスフント(子犬)" #. ~ Description for dachshund puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Dachshund puppy. Much safer to tame than adult " +"An adorable, defenseless dachshund puppy. Much safer to tame than adult " "counterparts." msgstr "愛らしく無防備なダックスフントの子犬です。成犬よりはるかに無害です。" #: lang/json/MONSTER_from_json.py -msgid "german shepherd" +msgid "German shepherd" msgstr "ジャーマンシェパード" -#. ~ Description for german shepherd +#. ~ Description for German shepherd #: lang/json/MONSTER_from_json.py msgid "" "The original K-9 breed. An easy to train and great attack dog that will " @@ -39637,21 +39796,21 @@ msgid "" msgstr "警察犬の起源となる犬種です。飼いやすく訓練も楽で、飼い主を死ぬ気で守りますが、多頭飼いは困難です。" #: lang/json/MONSTER_from_json.py -msgid "german shepherd puppy" +msgid "German shepherd puppy" msgstr "ジャーマンシェパード(子犬)" -#. ~ Description for german shepherd puppy +#. ~ Description for German shepherd puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless German Shepherd puppy. Much safer to tame than " +"An adorable, defenseless German shepherd puppy. Much safer to tame than " "adult counterparts." msgstr "愛らしく無防備なジャーマンシェパードの子犬です。成犬よりはるかに無害です。" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees" +msgid "Great Pyrenees" msgstr "グレートピレニーズ" -#. ~ Description for great pyrenees +#. ~ Description for Great Pyrenees #: lang/json/MONSTER_from_json.py msgid "" "A large and powerful breed, the Great Pyrenees has a beautiful, thick white " @@ -39661,10 +39820,10 @@ msgstr "" "グレートピレニーズは、美しく分厚い純白の毛皮をもつ大きく力強いイヌです。元々はオオカミなどの捕食動物を追い払うために飼育されていましたが、現在はゾンビの群れから家畜を守る羽目になっています。" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees puppy" +msgid "Great Pyrenees puppy" msgstr "グレートピレニーズ(子犬)" -#. ~ Description for great pyrenees puppy +#. ~ Description for Great Pyrenees puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Great Pyrenees puppy. Much safer to tame than " @@ -39678,7 +39837,7 @@ msgstr "ロットワイラー" #. ~ Description for rottweiler #: lang/json/MONSTER_from_json.py msgid "" -"Terrifying breed to face feral, as the Rottweiler breed is descended from " +"Terrifying breed to face feral, as the rottweiler breed is descended from " "Roman legion mastiffs. Robust and vicious, quite capable of mauling a human" " to death." msgstr "" @@ -39691,7 +39850,7 @@ msgstr "ロットワイラー(子犬)" #. ~ Description for rottweiler puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Rottweiler puppy. Much safer to tame than adult " +"An adorable, defenseless rottweiler puppy. Much safer to tame than adult " "counterparts." msgstr "愛らしく無防備なロットワイラーの子犬です。成犬よりはるかに無害です。" @@ -39702,8 +39861,8 @@ msgstr "キャトルドッグ" #. ~ Description for cattle dog #: lang/json/MONSTER_from_json.py msgid "" -"An agile and sturdy breed that is welcome on any farm, the Australian Cattle" -" Dog is adept at leaping fences and herding livestock." +"An agile and sturdy breed that is welcome on any farm, the Australian cattle" +" dog is adept at leaping fences and herding livestock." msgstr "機敏で丈夫なオーストラリアンキャトルドッグはどんな牧場でも歓迎されるイヌです。垣根を飛び越え、家畜の群れを率いる能力に優れています。" #: lang/json/MONSTER_from_json.py @@ -39713,7 +39872,7 @@ msgstr "キャトルドッグ(子犬)" #. ~ Description for cattle dog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Australian Cattle Dog puppy. Much safer to tame " +"An adorable, defenseless Australian cattle dog puppy. Much safer to tame " "than adult counterparts." msgstr "愛らしく無防備なオーストラリアンキャトルドッグの子犬です。成犬よりはるかに無害です。" @@ -40812,6 +40971,18 @@ msgstr "手下スケルトン" msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "トランペットの一吹きで生まれてくる小さなスケルトンです。" +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "煙幕クマ" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "" +"かつて威風堂々と森を闊歩していたであろう熊は、今や見る影もなく、身体中から煙を発しています。その漆黒の瞳には敵意と...飢餓を宿しています。" + #: lang/json/MONSTER_from_json.py msgid "Compsognathus" msgstr "コンプソグナトゥス" @@ -42708,7 +42879,7 @@ msgstr[0] "サバイバー防火マスク(XL)" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from" -" heat, smoke, teargas, and shrapnel. It must be prepared before use." +" heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" "特製のノーメックス製ガスマスクです。変異した顔と目もしっかりと覆い、煙や催涙ガス、他の汚染物質などから強固に保護します。使用するとフィルターが機能します。" @@ -43529,6 +43700,40 @@ msgid "" "into an active cable charger system." msgstr "量子ソーラーアレイは展開されており、稼働しているケーブル充電システムに電力を供給する準備ができています。" +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "ライオットヘルメット" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "バイザーを引き上げて顔面を晒しました。" + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "顔全体を覆うプラスチックシールドを備えたヘルメットです。使用するとバイザーを引き上げます。" + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "ライオットヘルメット(開放)" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "バイザーを下ろして顔面を覆いました。" + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." +msgstr "顔全体を覆うプラスチックシールドを備えたヘルメットです。バイザーは引き上げられており、使用すると下ろして顔面を覆います。" + #: lang/json/TOOL_from_json.py msgid "integrated toolset" msgid_plural "integrated toolsets" @@ -48154,7 +48359,7 @@ msgid "" msgstr "" "医療用の小型酸素タンクです。レギュレーターとマスクが付属しており、必要な時すぐ使えます。通常、喘息発作や煙を吸い込んでしまった際などの非常時に使用しますが、ちょっとした爆発物として使うことも不可能ではありません。" -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" msgstr[0] "はんだごて" @@ -49757,15 +49962,6 @@ msgstr "" "ジャガイモに取り付けられた遺伝的生命形態およびディスクオペレーティングシステム(Genetic Lifeform and Disk Operating " "System)のようなものです。" -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "" -"車両を持ち上げるのに使用する、小型のシザージャッキです。アパチャー・サイエンス(TM)の特許技術を導入しており、テレポートによってエンジンを持ち上げます。" - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" @@ -50967,6 +51163,16 @@ msgid "autonomous surgical razors" msgid_plural "autonomous surgical razors" msgstr[0] "自立式外科用カミソリ" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While" +" activated, they will continously drain power to make automated precise cuts" +" but you will be unable to wield anything." +msgstr "" +"使用者の指に埋め込む、外科手術規格のカミソリ装置です。起動している間は電力を消耗して、自動化されたカミソリが絶えず正確に動き続けますが、その間は手に何も着用できません。" + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -53158,6 +53364,11 @@ msgid "" msgstr "" "腕、脚、胴体の筋肉のほとんどが、工業用のバネと緩衝材に置き換えられています。こぶしに力を込めることで、緩衝材の展開/収納を行います。起動中は、油圧式の緩衝装置によって強い衝撃を受けた際の身体へのダメージを防ぎます。" +#: lang/json/bionic_from_json.py lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "過重イオン発生装置" + #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" msgstr "シナプス再生装置" @@ -53172,12 +53383,6 @@ msgid "" msgstr "" "連続で電流を発生させる電磁刺激装置を、外科手術によって後頭部と背骨に埋め込みます。有効化している間は絶対に睡眠不足になりません。睡眠不足の状態で有効化すると、眠気が通常より早く吹き飛びます。" -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "過重イオン発生装置" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "自立式外科用カミソリ" @@ -55266,12 +55471,12 @@ msgstr "レーザーに狙われた" msgid "A laser sight is targeting you!" msgstr "レーザーサイトがこちらに狙いを定めています!" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" -msgstr "喫煙する" +msgstr "吸煙" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "濃い煙を肺一杯に吸い込みました。" @@ -56152,11 +56357,9 @@ msgstr "精神緩和ガス" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" -"You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort." -msgstr "" -"筋力 -3 / 器用 -3 / 知性 -2 / 感覚 -4\n" -"完全にリラックスしており、動く気力が沸きません。戦闘ですか?多大な努力が必要ですね。" +"You are thoroughly relaxed and don't feel like moving. Fighting? Too much " +"effort." +msgstr "完全にリラックスしており、動く気力が沸きません。戦闘ですか?多大な努力が必要ですね。" #. ~ Apply message for effect(s) 'Relaxation gas'. #: lang/json/effects_from_json.py @@ -56491,11 +56694,12 @@ msgstr "完治目前" msgid "This damaged limb is slowly regaining its functions." msgstr "障害を負った部位はゆっくりと機能を回復しています。" -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" -msgstr "障害" +msgstr "身体障害" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "この部位は全く動かせないほどのダメージを受けており、回復するためには添え木を着用する必要がありそうです。" @@ -59037,8 +59241,7 @@ msgstr "" "隠し持てるほど小さい拳銃型のクロスボウです。小ささと引きの弱さに見合った非力な武器ですが、小動物を狩るにはうってつけです。放たれたボルトは消滅しなければ再利用が可能です。" #: lang/json/gun_from_json.py lang/json/gun_from_json.py -#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py -#: lang/json/gunmod_from_json.py src/item.cpp +#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" msgid "pistol" msgstr "ハンドガン" @@ -59730,7 +59933,7 @@ msgid "" "additional accuracy. Similar to other Leadworks products it doesn't accept " "third-party modifications." msgstr "" -"L523モジュラーウェポンシステムのサイドアームとしてLeadworks社が開発した拳銃です。この.223口径ライフル弾を使用するオートリボルバーはその強力さ故に激しい反動をもたらします。反動が少しでも軽減されるよう重量を増した銃身が使われています。シリンダーには最大で5発入ります。精密性を高めるホロサイトとレーザーサイトが組み込まれています。他のLeadworks製品と同様、一般的なMODを取り付けることができません。" +"L523モジュラーウェポンシステムのサイドアームとしてLeadworks社が開発した拳銃です。この.223口径ライフル弾を使用するオートリボルバーはその強力さ故に激しい反動をもたらします。反動が少しでも軽減されるよう重量を増した銃身が使われています。シリンダーには最大で5発の弾薬が装填できます。精密性を高めるホロサイトとレーザーサイトが組み込まれています。他のLeadworks製品と同様、一般的なMODを取り付けることができません。" #: lang/json/gun_from_json.py msgid "L523 platform" @@ -59835,10 +60038,10 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" "Leadworks " "LLC製L523モジュラーウェポンシステムはL523プラットフォームを中心に標準化された多様な形態を持ち、その全てが5.56mm弾に対応しています。素早く安全に部品を交換し、自在に形態を変えることができます。バトルライフル仕様専用の複合光学照準器とドットサイトは迅速かつ正確に目標を捉え、操作性を向上させるLeadworks製ジャイロ安定機構とフォアグリップ、更には頑丈な標的向けのグレネードランチャーも備えています。L523の他のモデルと同じく他社製改造部品の取り付けは不可能です。" @@ -60514,11 +60717,11 @@ msgstr[0] "ハンドガン(.44口径/レマットリボルバー)" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those" " who wander the \"Earth-that-was\"." msgstr "" -"19世紀中ごろ、アメリカ南北戦争で使われたレマットリボルバーを現代式に再設計した銃です。巨大なシリンダーに.44口径を9発、その軸の部分に散弾を1発装填することができます。こんな世界をさすらう放浪者のよき友となるでしょう。" +"19世紀中頃にアメリカ南北戦争で使われたレマットリボルバーを、現代式に再設計した銃です。巨大なシリンダーに.44口径弾薬を9発、中央の軸の部分に散弾を1発装填できます。失われた世界をさすらう放浪者のよき友となるでしょう。" #: lang/json/gun_from_json.py msgid "Ruger Redhawk" @@ -63646,6 +63849,32 @@ msgid "" msgstr "" "9x18mm、.38口径、.40口径、.44口径、.45口径の銃を9x19mm弾対応に変換する部品です。変換するとわずかに精度が下がります。" +#: lang/json/gunmod_from_json.py +msgid "belt feed adapter" +msgid_plural "belt feed adapters" +msgstr[0] "弾帯アダプタ" + +#: lang/json/gunmod_from_json.py +msgid "" +"A kit providing the necessary parts for permanently converting a firearm " +"from magazine to belt-feed. Guaranteed to void your warranty." +msgstr "銃器の弾薬補給を弾倉式から弾帯式に不可逆的改造を加えるための部品一式です。銃器が保証対象外になることは保証できます。" + +#: lang/json/gunmod_from_json.py +msgid "magazine" +msgstr "弾倉" + +#: lang/json/gunmod_from_json.py +msgid "tuned mechanism" +msgid_plural "tuned mechanisms" +msgstr[0] "銃器調整機構" + +#: lang/json/gunmod_from_json.py +msgid "" +"A set of finely tuned internal components which increase the precision and " +"reliably of a firearm." +msgstr "銃火器用の微調整された内部部品セットです。銃火器の精度と信頼性が増加します。" + #: lang/json/gunmod_from_json.py msgid "arrow rest" msgid_plural "arrow rests" @@ -63770,8 +63999,8 @@ msgstr[0] "LW拡張銃身" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." -msgstr "Leadworks社独自の長銃身です。銃口速度が増加するため、命中精度と威力は向上しますが、照準速度は低下します。" +"firearm, contributing to both accuracy and damage." +msgstr "Leadworks社製の内蔵型長銃身です。銃口速度の増加によって命中精度と威力が向上します。" #: lang/json/gunmod_from_json.py msgid "LW shortened barrel" @@ -63793,8 +64022,8 @@ msgstr[0] "LW高耐久銃身" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." -msgstr "長期間の使用に耐えるLeadworks社独自の頑丈な銃身です。精度は低下しますが、威力と射程距離を強化します。" +"shooting. Increases damage output and weapon range." +msgstr "長期間の使用に耐えるLeadworks社製の内蔵型銃身です。威力と射程距離が向上します。" #: lang/json/gunmod_from_json.py msgid "lightweight replacement furniture" @@ -63819,9 +64048,8 @@ msgstr[0] "エルゴノミックグリップ" #: lang/json/gunmod_from_json.py msgid "" -"A set of ergonomic replacement furniture for a firearm improving handling " -"and accuracy." -msgstr "銃器に追加する、人間工学に基づいた銃床です。安定感と精度を改善します。" +"A set of ergonomic replacement furniture for a firearm improving handling." +msgstr "銃器に追加して安定性を高める、人間工学に基づいて設計された銃床です。" #: lang/json/gunmod_from_json.py msgid "beam scatterer" @@ -63868,21 +64096,6 @@ msgstr "より高いエネルギー密度を有するコンデンサは、消費 msgid "emitter" msgstr "エミッター" -#: lang/json/gunmod_from_json.py -msgid "belt feed adapter" -msgid_plural "belt feed adapters" -msgstr[0] "弾帯アダプタ" - -#: lang/json/gunmod_from_json.py -msgid "" -"A kit providing the necessary parts for permanently converting a firearm " -"from magazine to belt-feed. Guaranteed to void your warranty." -msgstr "銃器の弾薬補給を弾倉式から弾帯式に不可逆的改造を加えるための部品一式です。銃器が保証対象外になることは保証できます。" - -#: lang/json/gunmod_from_json.py -msgid "magazine" -msgstr "弾倉" - #: lang/json/gunmod_from_json.py msgid "leadworks magazine adapter" msgid_plural "leadworks magazine adapters" @@ -63901,19 +64114,9 @@ msgstr[0] "マッチトリガー" #: lang/json/gunmod_from_json.py msgid "" -"A precision weighted trigger assembly that improves a firearm's accuracy." -msgstr "プルウェイトを精密に調整したトリガーグループです。銃火器の精度を高めます。" - -#: lang/json/gunmod_from_json.py -msgid "tuned mechanism" -msgid_plural "tuned mechanisms" -msgstr[0] "銃器調整機構" - -#: lang/json/gunmod_from_json.py -msgid "" -"A set of finely tuned internal components which increase the precision and " -"reliably of a firearm." -msgstr "銃火器用の微調整された内部部品セットです。銃火器の精度と信頼性が増加します。" +"A precision weighted trigger assembly that slightly improves a firearm's " +"accuracy." +msgstr "プルウェイトを精密に調整したトリガー部品です。銃火器の精度を若干高めます。" #: lang/json/gunmod_from_json.py msgid "firearm waterproofing" @@ -64068,8 +64271,8 @@ msgstr[0] "ジャイロスタビライザー" #: lang/json/gunmod_from_json.py msgid "" "An advanced unit that straps onto the side of your firearm and reduces " -"vibration, greatly reducing recoil and increasing accuracy." -msgstr "銃の側面に取り付けることで振動を軽減する新型装備です。反動が大幅に軽減され、精度が向上します。" +"vibration, greatly reducing recoil and slightly increasing accuracy." +msgstr "銃の側面に取り付けることで振動を軽減する先進的な装備です。反動が大幅に軽減され、精度が若干向上します。" #: lang/json/gunmod_from_json.py msgid "LW gyroscopic stabilizer" @@ -64260,7 +64463,7 @@ msgstr "Leadworks社の内蔵型ホログラフィックサイトです。" #: lang/json/gunmod_from_json.py msgid "adjustable stock" msgid_plural "adjustable stocks" -msgstr[0] "銃床(可変式)" +msgstr[0] "可変式銃床" #: lang/json/gunmod_from_json.py msgid "An adjustable replacement stock improving both recoil and accuracy." @@ -64273,7 +64476,7 @@ msgstr "銃床" #: lang/json/gunmod_from_json.py msgid "folding stock" msgid_plural "folding stocks" -msgstr[0] "銃床(折畳式)" +msgstr[0] "折畳式銃床" #: lang/json/gunmod_from_json.py msgid "" @@ -64284,7 +64487,7 @@ msgstr "銃床を折り畳めるようにすることで銃器の体積を大幅 #: lang/json/gunmod_from_json.py msgid "pistol stock" msgid_plural "pistol stocks" -msgstr[0] "銃床(ハンドガン)" +msgstr[0] "ハンドガン用銃床" #: lang/json/gunmod_from_json.py msgid "An add on stock for handguns considerably improving control of recoil." @@ -64293,11 +64496,11 @@ msgstr "ハンドガンに追加する銃床です。反動を大幅に抑える #: lang/json/gunmod_from_json.py msgid "recoil stock" msgid_plural "recoil stocks" -msgstr[0] "銃床(反動吸収)" +msgstr[0] "反動吸収銃床" #: lang/json/gunmod_from_json.py msgid "A replacement stock designed to absorb perceived recoil." -msgstr "反動を認識して吸収する機能を持った、交換用の銃床です。" +msgstr "反動を吸収する機能を持った、交換用の銃床です。" #: lang/json/gunmod_from_json.py msgid "cheek pad" @@ -64873,7 +65076,7 @@ msgid "" " enough. Pressing Shift+vikeys (h,j,k,l,y,u,b,n) will scroll the view " "persistently, allowing you to keep an eye on things as you move around." msgstr "" -"プレイヤーは画面に表示されている範囲より遠くを見る事ができます。を押すと「周囲を見渡すモード」に切り替わります。このモード中に移動キーを押して周囲を見渡してアイテムやモンスターを発見したり、モンスターの状態を調査できます。を押すと周囲の可視範囲にあるアイテムを一覧表示します。木箱、戸棚、冷蔵庫などの中に入っているアイテムは隣接しないと表示されません。Shift+viキー(h,j,k,l,y,u,b,n)を押すと視点移動を固定したまま操作できるようになります。" +"プレイヤーは画面に表示されている範囲より遠くを見る事ができます。を押すと「周囲を見回すモード」に切り替わります。このモード中は、移動キーを押して周囲を見回してアイテムやモンスターを発見したり、モンスターの状態を調査できます。を押すと周囲の可視範囲にあるアイテムを一覧表示します。木箱、戸棚、冷蔵庫などの中に入っているアイテムは隣接しないと表示されません。Shift+viキー(h,j,k,l,y,u,b,n)を押すと視点移動を固定したまま操作できるようになります。" #: lang/json/help_from_json.py msgid ": Hunger, thirst, and sleep" @@ -65390,10 +65593,10 @@ msgstr "弾倉の説明欄には互換性のある弾薬も表示されていま msgid "" "Note that while several ammo types exist for a given caliber and magazine " "type, you can't mix and match these types into a single magazine. You can't " -"for example load 9x19mm JHP and 9x19 FMJ ammo into the same magazine, since " -"a magazine always requires identical rounds to be loaded in it." +"for example load 9x19mm JHP and 9x19mm FMJ ammo into the same magazine, " +"since a magazine always requires identical rounds to be loaded in it." msgstr "" -"特定の口径の銃器や弾倉には、装填できる弾薬が複数種類ありますが、これらの種類を1つの弾倉に混ぜて装填することはできません。弾倉には同じ種類の弾薬が装填されている必要があるため、例えば弾薬(9x19mm/JHP)と弾薬(9x19mm/FMJ)を同じ弾倉に混ぜて装填するのは不可能です。" +"特定の口径の銃器や弾倉には、装填できる弾薬が複数種類ありますが、これらの種類を1つの弾倉に混ぜて装填することはできません。弾倉には単一種類の弾薬が装填されている必要があるため、例えば弾薬(9x19mm/JHP)と弾薬(9x19mm/FMJ)を同じ弾倉に混ぜて装填するのは不可能です。" #: lang/json/help_from_json.py msgid "" @@ -65977,7 +66180,7 @@ msgid "" "A: Check the difficulty of the recipe, and the primary skill used; your skill level should be around one and a half times the difficulty to be confident that it will succeed." msgstr "" "Q: どうして製作がこんなに失敗してしまうんだろう?\n" -"A: レシピの難易度と、主に使用するスキルを確認しましょう; スキルレベルが難易度の1.5倍以上あれば成功すると確信が持てます。" +"A: レシピの難易度と、主に使用するスキルを確認しましょう 。使用スキルが難易度の1.5倍以上あれば間違いなく成功します。" #: lang/json/help_from_json.py msgid "" @@ -66204,6 +66407,10 @@ msgstr "噛む" msgid "Clear rubble" msgstr "瓦礫を除去する" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "放り投げる" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "吸引する" @@ -66232,6 +66439,11 @@ msgstr "吹く" msgid "Make it talk" msgstr "喋らせる" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "喫煙する" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "外す" @@ -66273,6 +66485,10 @@ msgstr "吸入する" msgid "Drill" msgstr "削岩する" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "質問" + #: lang/json/item_action_from_json.py lang/json/item_action_from_json.py #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Read" @@ -66315,8 +66531,9 @@ msgid "Squeeze" msgstr "握りつぶす" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" -msgstr "楽しむ" +msgstr "遊ぶ" #: lang/json/item_action_from_json.py msgid "Put up" @@ -66352,6 +66569,11 @@ msgstr "毛を剃る" msgid "Siphon" msgstr "液体を抜き取る" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "喫煙する" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "書く" @@ -66404,6 +66626,11 @@ msgstr "弾薬を収納/抜き取る" msgid "Make some noise" msgstr "音を出す" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "演奏する" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "有効化/無効化する" @@ -67301,10 +67528,18 @@ msgstr "着用中アイテムの左右を変更する" msgid "Assign invlets to armor" msgstr "キー割当" +#: lang/json/keybinding_from_json.py +msgid "Sort armor into natural layer order" +msgstr "着用アイテムを通常の順番に並べ替える" + #: lang/json/keybinding_from_json.py msgid "Equip armor from inventory" msgstr "所持品から着用する" +#: lang/json/keybinding_from_json.py +msgid "Equip armor from inventory at this position" +msgstr "所持アイテムをを選択位置に着用する" + #: lang/json/keybinding_from_json.py msgid "Unequip selected armor" msgstr "選択したアイテムを脱ぐ" @@ -67431,7 +67666,7 @@ msgstr "切替/点滅" #: lang/json/keybinding_from_json.py msgid "Toggle Overlays" -msgstr "切替/表層" +msgstr "切替/地点表示" #: lang/json/keybinding_from_json.py msgid "Toggle City Labels" @@ -67539,7 +67774,7 @@ msgstr "選択中の地点へ移動する" #: lang/json/keybinding_from_json.py msgid "Toggle Snap to Target" -msgstr "切替/目標自動選択" +msgstr "切替/照準地点表示" #: lang/json/keybinding_from_json.py msgid "Change gender" @@ -67827,7 +68062,7 @@ msgstr "NPCと会話する" #: lang/json/keybinding_from_json.py msgid "Look Around" -msgstr "周囲を見渡す" +msgstr "見回す" #: lang/json/keybinding_from_json.py msgid "Peek Around Corners" @@ -68150,6 +68385,22 @@ msgstr "優先度を下げる" msgid "Change sort order" msgstr "変更/整列順序" +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "セーフモードのブラックリストに登録" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "セーフモードのブラックリストから削除" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "見回す" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "火" + #: lang/json/keybinding_from_json.py msgid "List items and monsters" msgstr "一覧/モンスターとアイテム" @@ -68332,13 +68583,11 @@ msgstr "削除/色設定" msgid "Load color template" msgstr "読込/カラーテンプレート" -#: lang/json/keybinding_from_json.py src/craft_command.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/veh_interact.cpp msgid "Yes" msgstr "Yes" -#: lang/json/keybinding_from_json.py src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/options.cpp src/veh_interact.cpp msgid "No" msgstr "No" @@ -68488,6 +68737,11 @@ msgstr "財務省管轄統合電子バンク" msgid "Open Vault" msgstr "金庫室を開く" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "財務省管轄高セキュリティ統合電子バンク" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -69183,7 +69437,8 @@ msgid "Emergency Message" msgstr "緊急メッセージ" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py lang/json/mapgen_from_json.py +#: lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "外部電力を無効化する" @@ -69244,7 +69499,6 @@ msgstr "エラー: 信号が切断されました。" #. ~ Computer option #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py -#: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "無線中継モジュールを接続する" @@ -70580,7 +70834,8 @@ msgstr "図書館を探してみよう。" msgid "Got that book for me?" msgstr "本を持ってきてくれた?" -#: lang/json/mission_def_from_json.py src/npctalk.cpp src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Thanks!" msgstr "ありがとう!" @@ -71359,9 +71614,9 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." +"prophesied events accurately before concerning the Church of Starry Wisdom." msgstr "" -"もし君がやる気なら、また頼まれて欲しいんだ。例の司祭は日記の中で、一人の囚人について特に詳しく書いている。この囚人の身に何があったのか、独房に行って何か残っていないか調べて欲しい。この囚人は控えめに言っても不安定な性格だったが、悔い改める可能性もあると司祭は書き残している。私には計り知れないことだが...囚人は星の智慧派教団の中で正確無比の預言者として知られていた人物だったようだ。" +"もし君がやる気なら、また頼まれて欲しいんだ。例の司祭は日記の中で、一人の囚人について特に詳しく書いている。この囚人の身に何があったのか、独房に行って調べて欲しい。司祭は、この男は不安定ではあるが悔い改める様子もあると記録している。私には計り知れないことだが...星々の知恵教会の中では正確無比の預言者として知られていた人物のようだ。" #: lang/json/mission_def_from_json.py msgid "" @@ -71691,13 +71946,13 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels" " is boosted so we can pick it up at much longer ranges. I really need you " "make me one." msgstr "" -"私の任務は、通信内容を監視して制圧または救助すべき目標を探すことだ。主だった電波中継器はどれも電力を失い、非常電源でかろうじて動いている状態だ。もし君が基礎的な電子工学のスキルを身に着けているなら「無線中継モジュール」を製作できるはずだ。この装置をラジオ局のメイン端末に接続できれば、短距離非常回線が増幅されて、現状より遥かに広い範囲と通信できるようになる。このアイテムを1つ製作してくれないか。" +"私の任務は、無線のトラフィックを監視して保護や救助が必要になりそうな目標を見つけることだ。電波中継器の大部分が停電しており、動作している中継器も非常電源頼りだ。もし君が基礎的な電子工学のスキルを身に着けているなら「無線中継モジュール」を製作できるはずだ。この装置をラジオ局のメイン端末に接続できれば、非常用チャンネルの短距離無線トラフィックが増幅されて、より広い範囲の通信が拾えるようになる。このアイテムを1つ製作してくれないか。" #: lang/json/mission_def_from_json.py msgid "" @@ -75318,7 +75573,7 @@ msgstr "暴力的な事は考えたくありません。戦闘スキルの成長 #: lang/json/mutation_from_json.py msgid "Mood Swings" -msgstr "気紛れ" +msgstr "気まぐれ" #. ~ Description for Mood Swings #: lang/json/mutation_from_json.py @@ -80081,7 +80336,7 @@ msgstr "河川" msgid "river bank" msgstr "川岸" -#: lang/json/overmap_terrain_from_json.py +#: lang/json/overmap_terrain_from_json.py lang/json/snippet_from_json.py msgid "house" msgstr "家屋" @@ -81156,6 +81411,14 @@ msgstr "トレーラーパーク" msgid "mass grave" msgstr "集団墓地" +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "鉄道駅" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "鉄道駅(駐車場)" + #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" msgstr "ドライブスルー(空)" @@ -86316,6 +86579,120 @@ msgid "" msgstr "" "才能を見込まれてボスのお気に入りとなり、仕事の助けとなる「基本的な」身体強化と市場で手に入る中で最高の機材を与えられました。渇望していた自由を一通り謳歌した後でふと、これから生き延びるための技術を磨く必要性に気づきました。" +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "寝起きの人" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "夜中に騒音で目覚めました。懐中電灯だけ持って外を調べに行き、大変動に出くわしました。" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "寝起きの人" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "夜中に騒音で目覚めました。懐中電灯だけ持って外を調べに行き、大変動に出くわしました。" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "サイボーグ(自転車乗り)" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" +"サイバーオリンピックのサイクリング種目に出場するためのトレーニングと補強が、大変動から逃れるのに役立ちました。果たして永遠に走り続けられるでしょうか?" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "サイボーグ(自転車乗り)" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" +"サイバーオリンピックのサイクリング種目に出場するためのトレーニングと補強が、大変動から逃れるのに役立ちました。果たして永遠に走り続けられるでしょうか?" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "溶接工" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "大変動が起こる前は海外企業の溶接工として働いていました。ことが起こったのはちょうど帰宅の最中でした。手元には最低限の工具が揃っています。" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "溶接工" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "大変動が起こる前は海外企業の溶接工として働いていました。ことが起こったのはちょうど帰宅の最中でした。手元には最低限の工具が揃っています。" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "原始生活者" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"運命の日がいつかやってくると予測して、文明の利器を使わず自分自身のスキルを磨き、森の恵みを受けて過ごしながらその日に備えていました。先祖たちが何の科学技術もなしに生き伸びたのだから、できないはずがありません。" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "原始生活者" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"運命の日がいつかやってくると予測して、文明の利器を使わず自分自身のスキルを磨き、森の恵みを受けて過ごしながらその日に備えていました。先祖たちが何の科学技術もなしに生き伸びたのだから、できないはずがありません。" + #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "WEAPON" @@ -87468,17 +87845,17 @@ msgstr "挑戦 - 研究所" #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." -msgstr "モンスターがガラスを破壊するまでは独房に閉じ込められていました。研究所は封鎖されています!脱出する方法を見つけましょう。" +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." +msgstr "研究所に閉じ込められてしまいました!脱出する方法を探し出しましょう。...餓死するという選択もありますが。" #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." -msgstr "モンスターがガラスを破壊するまでは独房に閉じ込められていました。研究所は封鎖されています!脱出する方法を見つけましょう。" +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." +msgstr "研究所に閉じ込められてしまいました!脱出する方法を探し出しましょう。...餓死するという選択もありますが。" #. ~ Starting location for scenario 'Challenge-Lab'. #: lang/json/scenario_from_json.py @@ -88236,6 +88613,44 @@ msgid "" msgstr "" "暴動と混乱の中、ロボットが守ってくれることを期待してロボット派遣センターに隠れましたが、ロボットはゾンビよりずっと危険だということが実証されそうです。" +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "LMOE避難者" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "LMOE避難者" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" +"誰かとのコネがあったのか、どこかで情報を掴んだのか...理由はともかく、このLMOEシェルターを発見しました。今は夏です。今日まで何とか生き残り、少しずつ生活が楽になってきました。" + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" +"誰かとのコネがあったのか、どこかで情報を掴んだのか...理由はともかく、このLMOEシェルターを発見しました。今は夏です。今日まで何とか生き残り、少しずつ生活が楽になってきました。" + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "LMOEシェルター" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" @@ -88382,7 +88797,7 @@ msgid "" " a user to navigate complex software systems and even bypass their security." msgstr "コンピュータの操作及びハッキングのスキルです。高レベルになると、高度なソフトウェアを使いこなせ、セキュリティを回避する事も出来ます。" -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "料理" @@ -88492,7 +88907,7 @@ msgid "" " water, and determines the detriment of swimming with heavier gear." msgstr "水上に浮かび、水域を移動するスキルです。溺死を防ぎ、水中での格闘技術や速度に影響を与え、重い装備を着て泳ぐ際のペナルティを決定します。" -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "裁縫" @@ -88975,6 +89390,42 @@ msgid "" "spawn with more resources." msgstr "難易度を易しくすることを恐れないでください。設定でよりアイテム生成量の多い世界も作れます。" +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "ズボンを下ろした隙に襲わないよう気を付けましょう。もはやトイレットペーパーはありません。" + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "凸凹した地形を通過する際は移動速度が低下します。武器として活用しましょう。" + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best" +" friend." +msgstr "街全体が大きなスーパーマーケットだと考えれば、ショッピングカートは大いに活躍します。" + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "様々なキャラクター、職業、シナリオを試すことでゲームがより楽しくなります。ロールプレイしましょう!" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "生存者を守ることで友情が芽生えます。そうならないことも稀にありますが..." + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "操作方法を学びたい?キー割当メニューを開いて操作を身に付けましょう。" + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "スペイン宗教裁判だろうが何だろうが、まさかの時を予測しておきましょう。" + #: lang/json/snippet_from_json.py msgid "" "You feel great! It doesn't seem like wounds could even slow you down for " @@ -89722,6 +90173,566 @@ msgid "" msgstr "" "XE037による復活の速度は最早手の打ちようがないレベルに達しました。既に現状で運用可能な警察組織や軍の戦力による駆除速度を圧倒しています。現場に出動した全てのチームは既に交戦済であり、そのうちいくつかとは連絡が取れない状況が続いています。この状況に対して、サベージ博士はVAULTと呼ばれる大規模な地下シェルターへの戦略的再配置と、PE062の継続生産に関する協力の提案を決定しました。" +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "ポピュラー" + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "トップ40" + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "オフィス向け" + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "コマーシャル用" + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "オルタナティブ" + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "カレッジ" + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "アートハウス" + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "アンダーグラウンド" + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "エクスペリメンタル" + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "懐かしの" + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "トラディショナル" + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "ヒストリカル" + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "クラシック" + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "モダン" + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "アダルト" + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "コンテンポラリー" + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "クリスチャン" + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "非クリスチャン" + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "ブリティッシュ" + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "コンチネンタル" + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "トロピカル" + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "アイランド" + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "ニューヨーク" + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "ハリウッド" + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "トランスパシフィック" + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "ラテン" + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "インストゥルメンタル" + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "フュージョン" + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "ヴィジュアル" + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "リキッド" + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "デジタル" + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "自動生成" + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "メロディック" + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "ハーモニー" + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "音痴" + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "BGM用" + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "コンセプチュアル" + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "共同制作" + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "リズミック" + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "ネオ" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "レトロ" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "ポスト" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "アンチ" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "ハード" + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "ソフト" + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "スピード" + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "スロー" + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "Hi-Fi" + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "Lo-Fi" + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "Mid-Fi" + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "アンビエント" + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "ダンス" + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "チル" + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "サイコ" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "ターボ" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "プログレッシブ" + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "グラム" + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "アウトサイダー" + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "インディ" + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "ダーク" + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "デス" + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "エレクトロ" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "アシッド" + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "スペース" + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "ゲットー" + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "ストリート" + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "アーバン" + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "ワールド" + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "ユーロ" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "アフロ" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "グランジ" + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "ブラス" + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "スプラッター" + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "スワンプ" + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "ゴースト" + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "シャドウ" + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "ニューロ" + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "ハイパー" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "カーニバル" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "メタ" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "テクノ" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "シンセ" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "ロボット" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "スケート" + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "フリーク" + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "サーフ" + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "ミュータント" + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "ジュラシック" + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "フリー" + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "ガレージ" + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "ガービッジ" + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "ブレイク" + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "レーザー" + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "ポルノ" + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "ヒプノ" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "ルナー" + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "サンダー" + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "クラウン" + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "マーダー" + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "ナルコ" + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "ギャングスタ" + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "チューン" + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "コア" + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "ウェーブ" + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "ビート" + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "ステップ" + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "ポップ" + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "ホップ" + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "ドラム" + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "スタイル" + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "チャント" + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "フォーク" + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "カントリー" + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "ジャズ" + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "ブルース" + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "ソウル" + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "R&B" + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "ヒップホップ" + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "スウィング" + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "ファンク" + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "ディスコ" + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "ポルカ" + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "タンゴ" + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "サルサ" + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "マンボ" + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "エレクトロニック" + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "メタル" + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "レゲエ" + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "スカ" + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "役立たず" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "スラッシュ" + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "ゴス" + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "インダストリアル" + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "サイケ" + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "ノイズ" + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "サウンド" + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "リバイバル" + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "ゴスペル" + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "オペラ" + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "労働歌" + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -89912,7 +90923,7 @@ msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " "a man carrying a somewhat confused horse on his shoulders. He is flanked by" " two scantily clad nurses who hold bloody chainsaws and give approving " -"thumbs up. His bulging knees and elbows are stiched and seem to be the " +"thumbs up. His bulging knees and elbows are stitched and seem to be the " "source of his ability. The caption reads: \"Brand new! Horse power at " "hand!\"" msgstr "" @@ -89922,7 +90933,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " -"a man smiling while being relentlesly punched by a boxer. He doesn't even " +"a man smiling while being relentlessly punched by a boxer. He doesn't even " "sweat as punches have no effect on him. Two scantily clad nurses give " "approving thumbs up from the background. The caption reads: \"Bouncy as " "never before! Absorb those shocks!\"" @@ -92815,6 +93826,198 @@ msgid "" " you in a sleep." msgstr "CBMを移植するならオートドクを使うのが一番だ。まあ設備を発見できたらの話だけど!聞いた話だが、麻酔薬を用意しないと動かないらしいな。" +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "" +"普通の地下室より深い場所は警戒した方がいい。鉱山の中や研究所の換気用シャフトから恐ろしい声を聞いたという人もいた。とても気味の悪い叫び声だったそうだ。" + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "毎日ドライバーを使えば壊血病知らず!" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "腹の減りがいつもより早い?そんな時は精油を飲もう。美味しくはないが、自分の脚を食べざるを得ない状況よりマシだろう?" + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "地形は戦闘の形成を逆転する力をもっている。敵と対峙する時は、地形を味方に付けよう。" + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "鉱山に行った人が悪臭について何か言っていたな。もし訪れるなら、ガスマスクを用意した方が良さそうだ。" + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "知識は力だ。冗談抜きに、本は拾っておこう。" + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "あらゆるものが既に死んでるなら、誰にも殺されずに済むんじゃないかな。まぁ、寒さや飢え、他にも...この話は止めようか。" + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "前に会った女の子が、岩や壁や土を掘り進む陸のサメを見たって言ってたよ。ホラ話かと思ってたが、私も実際に目撃したから、もう嘘とは言えないな。" + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "水は飲む前に煮沸しよう。春頃に10人の隊商がそのまま水を飲んだが、今は3人しか生き残っていないそうだ。" + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "一週間で持ち主が5回も変わったダッフルバッグを見たことがある。ゾンビから逃げられない状況で、たくさんの荷物を運ぶのは止めた方がいい。" + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "ティムは、車でゾンビの群れをすり抜けられると豪語していた。ところで今ティムはゾンビになっている。何か疑問はある?" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no" +" environment to save now, but one can still save thyself I guess." +msgstr "「ソーラー発電に変えよう、環境と人類を救おう」って宣伝があったな。まぁ...環境はもうどうにもならないけど、自分自身は救えるはずだ。" + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "ナイフが見つからない時は、鉢植えを壊してみよう。必要なものが全部手に入るかもしれない。" + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "良い閉所と悪い閉所の違いは何かって?背後に抜け道が確保してあるのが良い閉所だ。" + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "いつも思うんだけど、警官ロボットに私が上司だって誤認させる方法があればなぁ..." + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their components." +" This guy around here, McSomething whatever his name is, is a master at " +"this." +msgstr "どんなアイテムも壊れると分解して素材になることに驚くだろうな。その辺にいるマッチョな奴、名前は知らないけど分解の達人だ。" + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "機械整備を極めるなら、はんだごてを使いこなそう。傷の焼灼もできるけど、その治療法を試して死んだ人もたくさんいるから、最後の手段にしよう。" + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "" +"新品のCBMを移植している人を見かけた。つまり、店を漁る以外の入手方法があるってことだ。周囲に切り刻まれた死体が落ちていたから、なんとなく察したけどね。" + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "燻製肉ばかり食べるのにも飽きてきたな。多分...もっと率先して料理スキルを学べば、保存期間の長い食べ物を色々作れるんだろうな。" + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" +"頭のおかしな奴が、ゾンビを殺す独創的な方法を実行して、絞首刑にされたそうだ。ああ、ゾンビの群れを殺すために建物を焼くのは分かるけど、確実に物資がある建物を街ごと全て焼き尽くすのは無茶だ。" + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "" +"ミスター墓石って人がいつも言っていた。「襲撃の時は何も持っていくな。空いたスペースに戦利品を入れるからな」って。彼の名前は誰も知らなかったけど、この辺りで一番早く墓の「オーナー」になったから、ミスター墓石って呼ばれるようになったんだ。" + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are" +" always better than two." +msgstr "友人がいると満たすべき胃袋が2つに増えてしまう。でも仕事に使える手は4本に増える。" + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my" +" sorry ass away from the horde, with nothing more but some white powder I " +"got from that zombie. Saved me that time." +msgstr "" +"私はドラッグ反対していた。ゾンビの大群に殺されかけて逃げ帰るまではね。ゾンビが持っていた白い粉以外、何も持っていなかったんだ。あの時はドラッグに救われたよ。" + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "マイクは今も正気を保っているだろうか。不幸なことに、学校へ侵入したんだ。この経験で彼は肋骨を折り、心も折れてしまった。" + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "" +"爆発物については、爆心地から思いっきり逃げてもまだ爆発しなかったら、更に逃げよう。ダイナマイトの爆発範囲は逃げられるギリギリまで届くからね。" + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "狭い通路でランチャーを使うのは止めよう。失敗するかもしれない。" + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it " +"lemon?" +msgstr "頭のおかしな科学者に会ったことがある。彼女はジャガイモから電池を作ってたんだ...あれ、レモンだったかな?" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "どうしてかは知らないが、擲弾兵ゾンビは常に手榴弾を持っている。筋肉が記憶しているのかな?とにかく、奴が倒れてもすぐには近づくな。" + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "" +"敵は死んだのか?かつて死んだことがあったとして、今死んでいるのか?そういう時はこう尋ねるんだ。きみ(叩く)、もう(叩く)、死んでる(叩く)、かな(叩く)?(叩く)(叩く)(叩く)" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "妙に大きなベリーが野外に生えているそうだ。でも、それを見つけた本人から腹の膨れ具合を聞けなかったのは何故だろうな?" + #: lang/json/snippet_from_json.py msgid " " msgstr "" @@ -92919,10 +94122,6 @@ msgstr "クソカス" msgid "piece of shit" msgstr "ゴミクソ" -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "役立たず" - #: lang/json/snippet_from_json.py msgid "scumbag" msgstr "ゴミカス" @@ -93157,7 +94356,7 @@ msgstr "嫌な気分だ" #: lang/json/snippet_from_json.py msgid "Hey ." -msgstr "やあ、。" +msgstr "よお。" #: lang/json/snippet_from_json.py msgid "Greetings ." @@ -93193,15 +94392,15 @@ msgstr "、こんにちは。" #: lang/json/snippet_from_json.py msgid "Hi " -msgstr "やあ、。" +msgstr "やあ。" #: lang/json/snippet_from_json.py msgid "never" msgstr "絶対にない" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" -msgstr "嫌だ" +msgstr "no" #: lang/json/snippet_from_json.py msgid "not gonna happen" @@ -93517,7 +94716,7 @@ msgstr "放浪者よ" #: lang/json/snippet_from_json.py msgid "traveler" -msgstr "旅人よ" +msgstr "旅人" #: lang/json/snippet_from_json.py msgid "pal" @@ -94029,7 +95228,7 @@ msgstr "こっちに来て、話し合おう!" #: lang/json/snippet_from_json.py msgid "Hey , let's talk!" -msgstr "やあ、。何か話そうじゃないか!" +msgstr "やあ。何か話そうじゃないか!" #: lang/json/snippet_from_json.py msgid ", we need to talk!" @@ -94095,9 +95294,9 @@ msgstr "よし...手を挙げなさい!" msgid "Hands in the air, !" msgstr "両手を高く挙げなさい、!" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" -msgstr "どけ" +msgstr "Move" #: lang/json/snippet_from_json.py msgid "Move your ass" @@ -94205,7 +95404,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" -msgstr "やあ、。" +msgstr "" #: lang/json/snippet_from_json.py msgid "Fire in the hole!" @@ -97123,10 +98322,26 @@ msgstr "LMOEシェルター" msgid "Middle of Nowhere" msgstr "郊外" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "実験区画" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "科学研究所" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "研究所最下層" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "科学研究所(低温)" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "科学研究所(極低温)" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "モール - 搬入口" @@ -97223,6 +98438,14 @@ msgstr "大邸宅" msgid "Gas Station" msgstr "ガソリンスタンド" +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "電器店" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" +msgstr "衣料品店" + #: lang/json/talk_topic_from_json.py msgid "That sure is a shiny badge you got there!" msgstr "ピカピカのバッジを手に入れたようだな!" @@ -97255,8 +98478,7 @@ msgstr "その耳はどうした?" msgid "Anything I can help with?" msgstr "何か手伝えるか?" -#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Well, bye." msgstr "さようなら。" @@ -97317,7 +98539,7 @@ msgid "" " doesn't want me here when I'm not selling, but... some people get away with" " it." msgstr "" -"さあね。君が役に立つなら大丈夫だとは思うけど、最近は基準があいまいなんだ。誰に聞くかによる。例えばあの商人は売り物がないなら出て行けという態度だったが...他の奴はそうでもないようだぞ?" +"さあね。仕事を手伝える人間なら大丈夫なんじゃないか。でも今じゃ確実なことなんて一つもないからな。人によって言うことは違う。例えばそこの商人、売り物がないなら出て行けという態度だったが...そうじゃない奴もいるようだ。" #: lang/json/talk_topic_from_json.py msgid "" @@ -97467,7 +98689,8 @@ msgstr "どうでもいいね。" msgid "I see." msgstr "なるほどね。" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Oh, okay." msgstr "ああ、分かったよ。" @@ -97544,6 +98767,253 @@ msgstr "ありがとう。" msgid "Thanks, bye." msgstr "ありがとう、じゃあね。" +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "さて、話をしようか。" + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "シェルターはどうやら無事なようだね。" + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "何をすればいいんだろう?" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "役立つ情報はある?" + +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "何か手伝える事はあるか?" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "一緒に旅をしないか?" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's trade items." +msgstr "物品の取引をしようか。" + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "物資も無しに避難所を出られないよ。" + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "うーん、分からないが...とりあえずは物資と生存者を探すといいんじゃないか?" + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "そうだな、ドアや窓を板張りして外からの脅威に備える必要があるんじゃないだろうか。" + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to" +" disappear quickly from here." +msgstr "乗り物を手に入れるのがいいんじゃないか。何かあったとしてもすぐ逃げられるしね。" + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "近くに農場が無いか探してみよう。街からもそれほど近くないだろうし、十分な食料もあるんじゃないかな。" + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "街に行けば役に立つ物が十分残っているだろうが、住む場所は街から離れていた方がいいと思う。" + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "ふーん、分かった。" + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "抗生物質さえあれば..." + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "さっき言ったはずだけど...またいつか誘ってくれよ。" + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "何故、君と一緒に旅をする必要があるんだい?" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "分かった。抗生物質を手に入れる。" + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "ああ、そうだったね。また今度にするよ。" + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "君を護衛するよ。" + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "君に護衛してほしいんだ。" + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "友達だろ、違うのか?" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "言う通りにしなければ殺す。" + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "その通りだ、一緒に行くよ!" + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "素晴らしい!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "分かった、行こう!" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "ああ、うん...そうは思ってないよ。" + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "本当に一人で行くのか?" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "そうだね、絶対だ。じゃあね。" + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "いや、ただの冗談だよ。" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp +msgid "What is it?" +msgstr "何だい?" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "どれぐらい遠いんだ?" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "少しの間、リーダーをやるよ。" + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "どいてろ。リーダーは私だ。" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "行こう。" + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "よし。君に付いて行くよ。" + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "いいね。他には..." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "よし、それじゃあ行こうか。" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "分かった、分かった。" + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "絶対に嫌だね、付いて行くからな!" + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "よし。" + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "ここで見張っているよ。" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "一緒に来てくれ。" + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "またな。" + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "申し訳ないが、本当に嫌なんだ..." + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "一定の距離を保つようにするよ。" + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "自分について語りたくはないんだ。" + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "そうか..." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "はい、どうぞ。" + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "ありがとう!" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "ありがとう!他に渡したい物は?" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "ありがとう、それじゃあまた!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "分かった、分かった、すまなかったよ。" + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "冗談じゃない、何かくれよ!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "分かった、いいよ、じゃあな。" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "よろしい、始めよう。" + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "いいね。" + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "よし。付いて行くよ。" + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "いや、ここでいい。" + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "ただの思い付きだ、気にしないでくれ。" + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "やあ、執行官。" @@ -98245,7 +99715,7 @@ msgid "" "can build an additional expansion every other level after the first is " "unlocked and when one camp is full you can just as easily build another." msgstr "" -"最初に設置したテントを最大まで改良したら、拠点を拡張できるようになる。拡張っていうのは、特定の専門的な仕事を受け持つ施設を設置することだ。大規模な派閥を率いたいなら" +"最初に設置したキャンプ地を最大まで改良したら、拠点を拡張できるようになる。拡張っていうのは、特定の専門的な仕事を受け持つ施設を設置することだ。大規模な派閥を率いたいなら" " " "[農地]、仲間の生活の質を高めたいなら[調理場]がお勧めかな。" " " @@ -98271,10 +99741,6 @@ msgstr "何をすればいい?" msgid "We're abandoning this camp." msgstr "このキャンプ地は放棄しよう。" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "またな。" - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "取引かい?" @@ -98287,7 +99753,7 @@ msgid "" "supplies. Rot and mold are more significant in the damp basement so I " "prioritize non-perishable food, such as cornmeal, jerky, and fruit wine." msgstr "" -"私は備蓄食料の監視をしている。ここに到着したときの混乱の中で略奪が起こって、多くの食料が持ち出されてしまったんだ。残されたものでやり繰りしつつ、物資を充実させていくつもりだ。湿気の多い地下では腐敗が速いしカビも活発だから、保存がきく食品を優先して集めている。例えばコーンミール、ジャーキー、果実酒なんかがそうだな。" +"私はここの備蓄食料を管理している。ここに到着したときの混乱の中で略奪が起こって、多くの食料が持ち出されてしまったんだ。残されたものでやり繰りしつつ、物資を充実させていくつもりだ。湿気の多い地下では腐敗が速いしカビも活発だから、保存がきく食品を優先して集めている。例えばコーンミール、ジャーキー、果実酒なんかがそうだな。" #: lang/json/talk_topic_from_json.py msgid "Why cornmeal, jerky, and fruit wine?" @@ -98308,7 +99774,7 @@ msgstr "" msgid "Are you looking to buy anything else?" msgstr "他に何か集めてるものはある?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." msgstr "なるほど..." @@ -98436,13 +99902,13 @@ msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of" " operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " "forces to conduct recovery operations." msgstr "" -"私は中隊の生き残りを率いて、この施設を再制圧する作戦に着いている者だ。我々は合計20名ほどの部隊で進入し、ただちにこの制御室を制圧した。そしてこの階と、下の階にもある生命維持システムに部隊を向かわせた。上手く行けばこの巨大な施設を地域レベルの作戦行動の恒久的な拠点にできるだろう。重要なのは、地上の避難民をここで受け入れることができれば、そのために忙殺されている人員を現状回復のための作戦に充てられるということだ。" +"中隊の生き残りを率いて、この施設を再制圧する作戦を実行しているところだ。我々は合計20名ほどの部隊で進入し、ただちにこの制御室を制圧した。そしてこの階と下の階にあるの重要な設備に隊員を向かわせた。上手く行けば、この巨大な施設を地域レベルの作戦行動の恒久的な拠点として利用できる。重要なのは、地上の避難民をここで受け入れることができれば、避難民の対応に忙殺されている者を現状回復要員に回せるということだ。" #: lang/json/talk_topic_from_json.py msgid "Seems like a decent plan..." @@ -99119,10 +100585,6 @@ msgstr "うん? 私は床屋だよ... 髪を切るんだ。安価な散髪や msgid "I can't imagine what I'd need your assistance with." msgstr "私が君の手伝いを必要とする状況ってのがちょっと想像できないな。" -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "よし。" - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "バリカンを使うからじっとしててくれ..." @@ -99190,10 +100652,6 @@ msgstr "よろしくな。" msgid "Can I trade for supplies?" msgstr "物資の取引はできる?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "何か手伝える事はあるか?" - #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " @@ -99474,7 +100932,7 @@ msgstr "荷物をまとめてくれ、。旅立ちの時だ。" msgid "Not at technique at all" msgstr "我流" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp src/martialarts.cpp msgid "Block" msgstr "ブロック" @@ -99632,8 +101090,6 @@ msgid "Rapid Strike" msgstr "瞬撃" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "攻撃コスト50%・与ダメージ66%" @@ -99745,11 +101201,6 @@ msgstr "は鞭を絡めて%sの武装を解除しました!" msgid "Counterattack" msgstr "カウンター" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "ブロック/回避時に攻撃発動" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -99764,22 +101215,10 @@ msgstr "のカウンターは%sに" msgid "Feint" msgstr "フェイント" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "空振り時の追加コスト0" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "掴み外し" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "掴まれた状態を解除" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -99794,11 +101233,6 @@ msgstr "の巧みなジャブは%sに" msgid "Cross" msgstr "クロス" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "打撃ダメージ1.2倍(素手格闘2以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -99813,12 +101247,6 @@ msgstr "の体重の乗ったクロスは%sに" msgid "Jab" msgstr "ジャブ" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "攻撃コスト50%、与ダメージ66%(素手格闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -99833,11 +101261,6 @@ msgstr "の高速ジャブは%sに" msgid "Uppercut" msgstr "アッパーカット" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "2ターン気絶攻撃、打撃ダメージ1.4倍(素手格闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -99852,11 +101275,6 @@ msgstr "のアッパーカットは%sに" msgid "Cross Counter" msgstr "クロスカウンター" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "1ターン気絶、1タイル吹き飛ばし攻撃、会心攻撃時のみ発動(素手攻撃5以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -99885,14 +101303,6 @@ msgstr "の正拳突きは%sに" msgid "karate chop" msgstr "手刀" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "2ターン気絶攻撃、会心攻撃時のみ発動(素手格闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -99907,11 +101317,6 @@ msgstr "の手刀は%sに" msgid "throw" msgstr "投げ技" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "1ターン転倒、1タイル吹き飛ばし攻撃(素手格闘2以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -99926,11 +101331,6 @@ msgstr "は%sを投げ飛ばして" msgid "dodge throw" msgstr "回避投げ" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "1ターン転倒、1タイル吹き飛ばし攻撃、会心攻撃時のみ発動(素手攻撃6以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -99945,12 +101345,6 @@ msgstr "は%sを巧みに投げ飛ばして" msgid "feint at" msgstr "フェイント" -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "空振り時の追加コスト0(素手格闘2以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -99961,11 +101355,6 @@ msgstr "%sにフェイントを仕掛けました。" msgid " feints at %s" msgstr "は%sにフェイントを仕掛けました。" -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "敵の装備武器を外す(素手格闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -99976,21 +101365,11 @@ msgstr "%sの武装を解除しました。" msgid " disarms %s" msgstr "は%sの武装を解除しました。" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "1ターン転倒、1タイル吹き飛ばし攻撃(素手格闘3以上)" - #: lang/json/technique_from_json.py lang/json/technique_from_json.py #: src/monster.cpp msgid "grab" msgstr "掴み倒し" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "2ターン転倒攻撃(素手格闘2以上)" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "掌底" @@ -100005,20 +101384,10 @@ msgstr "掌底打ちは%sに" msgid " strikes %s" msgstr "は掌底を打って%sに" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "空振り時の追加コスト0(素手格闘1以上)" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "肘打ち" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "攻撃コスト50%、会心時のみ発動(素手格闘2以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -100033,11 +101402,6 @@ msgstr "の肘打ちは%sに" msgid "kick" msgstr "前蹴り" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "1ターン気絶攻撃(素手格闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -100062,19 +101426,6 @@ msgstr "飛び膝蹴りは%sに" msgid " flying knees %s" msgstr "の飛び膝蹴りは%sに" -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "攻撃コスト50%、与ダメージ66%(素手格闘2以上)" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "2ターン気絶攻撃、会心攻撃時のみ発動(素手格闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -100085,32 +101436,14 @@ msgstr "ジャブは%sに" msgid " jabs %s" msgstr "のジャブは%sに" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "1ターン転倒攻撃(素手格闘4以上)" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "掴み外し" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "掴まれた状態を解除(素手格闘4以上)" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "奇襲攻撃" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min" -" 3 melee" -msgstr "2ターン気絶攻撃、打撃ダメージ1.4倍、斬撃ダメージ2倍、会心攻撃時のみ発動(素手格闘3以上、近接戦闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -100125,11 +101458,6 @@ msgstr "の奇襲攻撃は%sに" msgid "axe-kick" msgstr "踵落とし" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "2ターン気絶攻撃、会心攻撃時のみ発動(素手格闘2以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -100144,11 +101472,6 @@ msgstr "の踵落としは%sに" msgid "side kick" msgstr "横蹴り" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "1ターン気絶、1タイル吹き飛ばし攻撃(素手格闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -100163,11 +101486,6 @@ msgstr "の横蹴りは%sに" msgid "sweep kick" msgstr "前掃腿" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "2ターン転倒攻撃(素手格闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -100182,11 +101500,6 @@ msgstr "の払い蹴りは%sに" msgid "biojutsu counter" msgstr "カウンター(サイボーグ格闘術)" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "ブロック時に攻撃発動(近接戦闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -100215,11 +101528,6 @@ msgstr " の素早い一撃は%sに" msgid "biojutsu impale" msgstr "串刺し(サイボーグ格闘術)" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "1ターン気絶攻撃、打撃ダメージ1.5倍、斬撃ダメージ1.5倍、会心攻撃時のみ発動(近接戦闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -100230,20 +101538,10 @@ msgstr "残忍な串刺攻撃は%sに" msgid " brutally impales %s" msgstr "の残忍な串刺攻撃は%sに" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "2ターン転倒攻撃(近接戦闘2以上)" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "一掃攻撃" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "円状に攻撃、会心攻撃時のみ発動(近接戦闘5)" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -100258,13 +101556,6 @@ msgstr "の一掃攻撃は%sに" msgid "Drunk feint" msgstr "沈酔フェイント" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "空振り時の追加コスト0(素手格闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -100279,11 +101570,6 @@ msgstr " はよろめきながら%sに巧みなフェイントを仕掛 msgid "Drunk counter" msgstr "沈酔カウンター" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "打撃ダメージ1.25倍、回避時に攻撃発動(素手攻撃4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -100298,12 +101584,6 @@ msgstr "はよろめきながら激しい一撃を繰り出し%sに" msgid "Fencing lunge" msgstr "ファント" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "攻撃コスト75%(近接戦闘2以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -100318,11 +101598,6 @@ msgstr "の突き攻撃は%sに" msgid "Fencing thrust" msgstr "クー" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "攻撃コスト90%、刺突ダメージ1.25倍(近接戦闘1以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -100337,11 +101612,6 @@ msgstr "の突刺攻撃は%sに" msgid "Fencing stop thrust" msgstr "クー・ドロワ" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "刺突ダメージ1.5倍、1ターン気絶攻撃、ブロック時に攻撃発動(近接戦闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -100356,11 +101626,6 @@ msgstr "は完璧なクー・ドロワを%sにお見舞いして" msgid "Round strike" msgstr "回し打ち" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "攻撃コスト60%(近接戦闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -100389,11 +101654,6 @@ msgstr "による疾風の一撃は%sに" msgid "Snap strike" msgstr "鋭断撃" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "攻撃コスト80%" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -100408,11 +101668,6 @@ msgstr " の鋭い一撃は%sに" msgid "Combination strike" msgstr "連携撃" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "攻撃コスト80%、与ダメージ150%(近接戦闘2以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -100427,11 +101682,6 @@ msgstr "の連携攻撃は%sに" msgid "free strike" msgstr "無尽撃" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "攻撃コスト0(近接戦闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -100446,13 +101696,6 @@ msgstr "の自在な攻撃が%sに" msgid "puño strike" msgstr "柄尻打ち" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "全ての与ダメージを4倍の打撃ダメージに変換、1ターン気絶攻撃、2以上の打撃ダメージ(近接戦闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -100467,11 +101710,6 @@ msgstr "の拳による一撃は%sに" msgid "knee strike" msgstr "飛蹴撃" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "2ターン転倒攻撃、会心攻撃時のみ発動(素手格闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -100486,11 +101724,6 @@ msgstr "の膝蹴りは%sに" msgid "hamstring" msgstr "膝腱切り" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "3ターン転倒攻撃、会心攻撃時のみ発動(近接戦闘2以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -100505,12 +101738,6 @@ msgstr " の地面すれすれの一撃は%sに" msgid "Vicious Precision" msgstr "凶悪な一撃" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "与ダメージ150%、会心時のみ発動(近接戦闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -100525,11 +101752,6 @@ msgstr "の凶悪な一撃は%sに" msgid "Silat Brutality" msgstr "無慈悲な一撃" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "1ターン気絶、1タイル吹き飛ばし攻撃、会心攻撃時のみ発動(近接戦闘3以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -100539,11 +101761,6 @@ msgstr "凶悪な一撃で%sをよろめかせ" msgid "Dirty Hit" msgstr "下劣な一撃" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "2ターン気絶攻撃、会心攻撃時のみ発動(近接戦闘1以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -100586,11 +101803,6 @@ msgstr " の素早い突きは%sに" msgid "Viper Bite" msgstr "毒蛇咬" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "2ターン気絶攻撃、打撃ダメージ1.5倍、2ターン連携" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -100605,11 +101817,6 @@ msgstr " の毒蛇咬は%sに" msgid "Viper Strike" msgstr "毒蛇の一撃" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "打撃ダメージ3倍、2ターン連携" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -100628,11 +101835,6 @@ msgstr "とぐろ巻き" msgid "Stinger Strike" msgstr "針撃" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "3ターン気絶・3タイル吹き飛ばし攻撃、打撃ダメージ2倍、会心攻撃時のみ発動" - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -100647,11 +101849,6 @@ msgstr "は鋭い蹴りで%sを吹き飛ばして" msgid "Pincer Strike" msgstr "鋏撃" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "打撃ダメージ1.25倍、2ターン気絶攻撃(素手格闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -100666,11 +101863,6 @@ msgstr "は%sに鋏手の一撃を繰り出して" msgid "Toad's Tongue" msgstr "蛙の舌" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "攻撃コスト50%、1ターン転倒攻撃(素手格闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -100749,11 +101941,6 @@ msgstr "の狙いすました一撃は%sに" msgid "Tiger Takedown" msgstr "虎の叩伏" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "1ターン転倒攻撃(素手格闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -100768,11 +101955,6 @@ msgstr "は%sを掴んで地面へ叩きつけて" msgid "Leopard Fist" msgstr "豹の一撃" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "2ターン気絶攻撃、会心攻撃時のみ発動(素手格闘5以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -100801,11 +101983,6 @@ msgstr "による豹のように素早い一撃は%sに" msgid "Leopard Foresight" msgstr "豹の先見" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "打撃ダメージ1.5倍、回避時に攻撃発動(素手攻撃4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -100820,11 +101997,6 @@ msgstr "は%sの攻撃をかわし、無防備な横っ腹を殴りつ msgid "Dragon Snatch" msgstr "龍の捕捉" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "2ターン気絶攻撃、打撃ダメージ1.2倍(素手格闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -100839,12 +102011,6 @@ msgstr "は%sを掴んで膝で蹴り上げて" msgid "Dragon's Vortex" msgstr "龍の旋風" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "2ターン気絶攻撃、回避/ブロック時に攻撃発動(素手攻撃4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -100859,12 +102025,6 @@ msgstr "は%sの攻撃を受け止めて捻り上げ" msgid "Dragon Sweeper" msgstr "龍の一掃" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "2ターン転倒攻撃(素手格闘5以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -100879,11 +102039,6 @@ msgstr "大ぶりの低い一撃を%sの脚にお見舞いして" msgid "Dragon Strike" msgstr "龍の一撃" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "1ターン気絶、1タイル吹き飛ばし攻撃、会心攻撃時のみ発動(素手攻撃6以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -100910,11 +102065,6 @@ msgstr "は翼のように腕を振り上げました。" msgid "Crane Flap" msgstr "鶴の飛翔" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "掴まれた状態を解除(素手格闘3以上)" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "腕を振り下ろして拘束から脱しました。" @@ -100927,11 +102077,6 @@ msgstr "は腕を振り下ろして拘束から脱しました。" msgid "Crane Strike" msgstr "鶴の一撃" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "3ターン気絶攻撃、会心攻撃時のみ発動(素手格闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -100951,20 +102096,10 @@ msgstr "%sを攻撃する振りをした。" msgid "Power Hit" msgstr "強打" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "1ターン気絶、1タイル吹き飛ばし攻撃、会心攻撃時のみ発動(素手攻撃4以上)" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "反撃" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "ブロック時に攻撃発動(素手攻撃5以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -100993,11 +102128,6 @@ msgstr "は%sに足払いをかけて" msgid "Flowing Water Cut" msgstr "水形" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "攻撃コスト175%、打撃ダメージ2倍、斬撃ダメージ2倍(近接戦闘4以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -101012,11 +102142,6 @@ msgstr "は%sに流水のごとき二撃を繰り出して" msgid "Red Leaf's Cut" msgstr "紅葉重ね" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "2ターン転倒攻撃(近接戦闘5以上)" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -101031,12 +102156,6 @@ msgstr "は%sのバランスを崩す二撃を繰り出して" msgid "Fire and Stone's Cut" msgstr "五輪" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "2ターン気絶攻撃、打撃ダメージ1.5倍、斬撃ダメージ1.5倍、会心攻撃時のみ発動(近接戦闘6以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -101051,12 +102170,6 @@ msgstr " は%sを変幻自在の攻撃で気絶させて" msgid "In-One Timing" msgstr "一寸の見切り" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "" -"50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "攻撃コスト50%、打撃ダメージ1.5倍、斬撃ダメージ1.5倍、2ターン気絶攻撃(近接戦闘5以上)" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -101067,11 +102180,6 @@ msgstr "%sの弱点に一撃を加えて" msgid " strikes %s's weaknesses" msgstr " は%sの弱点に一撃を加えて" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "攻撃コスト80%、空振り時の追加コスト0(近接戦闘2以上)" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "緩慢な一撃" @@ -103632,7 +104740,7 @@ msgstr "コンピュータコンソール" #: lang/json/terrain_from_json.py msgid "mechanical winch" -msgstr "巻き上げ機(機械式)" +msgstr "巻き上げ機" #: lang/json/terrain_from_json.py msgid "control lever" @@ -104256,7 +105364,7 @@ msgstr "精密打込" msgid "wood sawing" msgstr "製材" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "金工" @@ -104300,7 +105408,7 @@ msgstr "穴掘" msgid "bolt turning" msgstr "ボルト締緩" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "精密ボルト締緩" @@ -104445,7 +105553,7 @@ msgid "" "To see what the symbols around you mean, press ';'. You'll be able to " "scroll around and get information on the terrain, monsters, and items in the" " world around you." -msgstr "周囲を見渡すには';'か'x'を押します。地形、モンスターやアイテムの情報を得られます。" +msgstr "周囲を見回すには';'を押します。地形、モンスターやアイテムの情報を得られます。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -105022,6 +106130,14 @@ msgstr "十字分割" msgid "Circle Split" msgstr "円分割" +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "反応炉テスト" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "ソーラーテスト" + #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" msgstr "平床トラック" @@ -108440,6 +109556,10 @@ msgstr "穴掘りを終えました。" msgid "You discover a %s!" msgstr "%sを発見しました!" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "解体に適した切断ツールがありません。" + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "道具の性能が信用できませんが、とにかく続けます。" @@ -108507,6 +109627,10 @@ msgstr "既に部位解体が済んでいます。" msgid "You need to perform field dressing before quartering." msgstr "部位解体を行う前に内蔵を摘出する必要があります。" +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "本当に仲間の遺体を冒涜しますか?" + #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." msgstr "ぞっとするような作業を予想し、歯を食いしばりました。" @@ -108662,21 +109786,21 @@ msgstr "%sの解体を終えました。" #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." msgstr "不器用に死体を叩き斬り、取る必要のない部位まで切り落としました。どうして成果がこれっぽっちなのでしょうか。" #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." msgstr "技術が未熟なため、手が滑って死体を損壊してしまいました。全部が台無しになっていないと良いのですが。" #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." -msgstr "間違ったことをしでかし、死体をひどく損壊してしまいました。まだやり直しが効きそうです。" +msgstr "ミスをしでかし、死体をひどく損壊してしまいました。まだやり直しが効きそうです。" #: src/activity_handlers.cpp #, c-format @@ -108835,7 +109959,7 @@ msgid "You have lost the item you were using to start the fire." msgstr "火を起こすために使っていたアイテムを失いました。" #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." +msgid "There is not enough sunlight to start a fire now. You stop trying." msgstr "点火するには太陽光が弱すぎます。点火作業を中止しました。" #: src/activity_handlers.cpp @@ -109658,9 +110782,9 @@ msgstr "充填" msgid "category" msgstr "分類" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp src/effect.cpp msgid "damage" -msgstr "損傷" +msgstr "ダメージ" #: src/advanced_inv.cpp msgid "spoilage" @@ -109883,25 +111007,76 @@ msgstr "全て" msgid "Hang on a bit..." msgstr "少々お待ちください..." +#: src/armor_layers.cpp +msgid "close to your skin" +msgstr "肌着" + +#: src/armor_layers.cpp +msgid "of normal clothing" +msgstr "通常" + +#: src/armor_layers.cpp +msgid "on your waist" +msgstr "腰" + +#: src/armor_layers.cpp +msgid "of outer clothing" +msgstr "上着" + +#: src/armor_layers.cpp +msgid "strapped to you" +msgstr "帯" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgid_plural "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgstr[0] "複数の%s積層アイテムを着用しているため%sに動作制限ペナルティが課されます。" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgid_plural "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgstr[0] "内側の積層に嵩張るアイテムを着用しているため%sに動作制限ペナルティが課されます。" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgid_plural "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgstr[0] "" +"内側の積層に%sを着用しているため%sに動作制限ペナルティが課されます。" + #: src/armor_layers.cpp msgid "This is worn next to the skin." -msgstr "肌に密着しています。" +msgstr "肌の上に着用します。" #: src/armor_layers.cpp msgid "This is worn on or around your waist." -msgstr "腰回りに着用しています。" +msgstr "腰に羽織るか巻き付けて着用します。" #: src/armor_layers.cpp msgid "This is worn over your other clothes." -msgstr "衣服の上に羽織っています。" +msgstr "他の衣服の上に着用します。" #: src/armor_layers.cpp msgid "This is strapped onto you." -msgstr "紐で締めて重ね着しています。" +msgstr "身体に結びつけて着用します。" #: src/armor_layers.cpp msgid "Properties" -msgstr "プロパティ" +msgstr "性能" #: src/armor_layers.cpp msgid "Coverage:" @@ -109922,7 +111097,7 @@ msgstr "収納容積(%s): " #: src/armor_layers.cpp msgid "Protection" -msgstr "耐性" +msgstr "防御" #: src/armor_layers.cpp msgid "Bash:" @@ -109942,7 +111117,7 @@ msgstr "身体にフィットしています。" #: src/armor_layers.cpp msgid "It could be refitted." -msgstr "修繕できそうです。" +msgstr "仕立て直し可能です。" #: src/armor_layers.cpp msgid "It has a hood." @@ -109958,7 +111133,7 @@ msgstr "防水仕様です。" #: src/armor_layers.cpp msgid "It is water friendly." -msgstr "濡れても不快感がありません。" +msgstr "濡れていても快適な着心地です。" #: src/armor_layers.cpp msgid "It looks fancy." @@ -109970,7 +111145,7 @@ msgstr "非常にお洒落です。" #: src/armor_layers.cpp msgid "You will not drown today." -msgstr "水中に沈みません。" +msgstr "溺死を防ぎます。" #: src/armor_layers.cpp msgid "It is very bulky." @@ -110022,7 +111197,7 @@ msgstr "" #: src/armor_layers.cpp msgid "Nothing to see here!" -msgstr "そこには何もない!" +msgstr "そこには何もありません!" #: src/armor_layers.cpp msgid "Encumbrance and Warmth" @@ -110039,7 +111214,7 @@ msgstr "%sを反対側の部位に付け替えますか?" #: src/armor_layers.cpp msgid "Can't put this on!" -msgstr "着用できない!" +msgstr "着用できません!" #: src/armor_layers.cpp msgid "Remove selected armor?" @@ -110053,30 +111228,34 @@ msgstr "着用品にキーを割り当てますか?" #, c-format msgid "" "Use the arrow- or keypad keys to navigate the left list.\n" -"Press [%s] to select highlighted armor for reordering.\n" -"Use [%s] / [%s] to scroll the right list.\n" -"Press [%s] to assign special inventory letters to clothing.\n" -"Press [%s] to change the side on which item is worn.\n" -"Use [%s] to equip an armor item from the inventory.\n" -"Press [%s] to remove selected armor from oneself.\n" +"[%s] to select highlighted armor for reordering.\n" +"[%s] / [%s] to scroll the right list.\n" +"[%s] to assign special inventory letters to clothing.\n" +"[%s] to change the side on which item is worn.\n" +"[%s] to sort armor into natural layer order.\n" +"[%s] to equip a new item.\n" +"[%s] to equip a new item at the currently selected position.\n" +"[%s] to remove selected armor from oneself.\n" " \n" "[Encumbrance and Warmth] explanation:\n" "The first number is the summed encumbrance from all clothing on that bodypart.\n" -"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers.\n" +"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers or wearing items outside of other items they would normally be work beneath (e.g. a shirt over a backpack).\n" "The sum of these values is the effective encumbrance value your character has for that bodypart." msgstr "" -"方向キー/テンキーで左画面を操作\n" -"[%s] で並べ替えるアイテムを選択\n" -"[%s] / [%s] で右画面スクロール\n" -"[%s]で着用中のアイテムにキーを割り当てる\n" -"[%s]で着用している部位の左右を変更する\n" -"[%s]で所持しているアイテムを着用する\n" -"[%s]で選択中のアイテムを脱ぐ\n" +"方向キーかテンキーで左メニューを操作する\n" +"[%s] で並べ替えるアイテムを選択する。\n" +"[%s] / [%s] で右メニューをスクロールする。\n" +"[%s]で着用アイテムにキーを割り当てる。\n" +"[%s]で着用部位の左右を変更する。\n" +"[%s]で着用アイテムを通常の順番に並べ替える\n" +"[%s]で所持アイテムを着用する。\n" +"[%s]で現在選択中の位置に所持アイテムを着用する\n" +"[%s]で選択したアイテムを脱ぐ。\n" "\n" -"[動作制限と暖かさ]について\n" +"[動作制限と暖かさ]項目について\n" "一番左の数値は、その部位に着用している衣服自体が持つ動作制限の合計値です。\n" -"次の数値は、1種類の層に複数の衣服を着用する動作制限ペナルティの数値です。\n" -"これら2つの数値の合計が、その部位に加算される動作制限になります。" +"次の数値は、同一部位の1つの積層に複数のアイテムを着用する、同一部位に通常の積層順と異なる順番でアイテムを着用する(例: バックパックの上からTシャツを着る)といったことでペナルティとして発生する動作制限の値です。\n" +"2つの数値の合計が、その部位に加算される実際の動作制限値です。" #: src/artifact.cpp msgid "smooth sphere" @@ -111175,6 +112354,12 @@ msgstr "電力を供給するには車両に繋ぐジャンパーケーブルが msgid "Your plugged-in solar pack is now able to charge your system." msgstr "ケーブル充電システムとソーラーパネルを接続し、充電の準備ができました。" +#: src/bionics.cpp +msgid "" +"You need to connect the cable to yourself and the solar pack before your " +"solar pack can charge your system." +msgstr "ソーラーパネルで充電するには、ケーブルで自分自身とソーラーパネルを接続する必要があります。" + #: src/bionics.cpp msgid "" "You might plug in your solar pack to the cable charging system, if you " @@ -111539,8 +112724,8 @@ msgstr "右腕にわずかな痛みを感じた次の瞬間、突然目の前が #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out" -" when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "" "じっと、ひたすらじっと待ち、天井の特徴的な模様を見つめています。オートドクの器具は、少しの痛みも伴わずに、身体を切り開いています。目の前にメスの刃が迫ってきた段階で、幸いにも意識を失いました。" @@ -111659,6 +112844,55 @@ msgstr "" "%sを起動出来ません!\n" "%sの説明を見るには'!'の後に'%c'を押して下さい。" +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "命中" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "回避" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "速度" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "行動コスト" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "装甲" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "装甲貫通" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "目標装甲倍率" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "筋力" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "器用" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "知性" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "感覚" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr "基準 :" + #: src/calendar.cpp msgid "forever" msgstr "長時間" @@ -111687,6 +112921,12 @@ msgid "%d day" msgid_plural "%d days" msgstr[0] "%d 日" +#: src/calendar.cpp +#, c-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d週間" + #: src/calendar.cpp #, c-format msgid "%d season" @@ -111737,6 +112977,14 @@ msgid "%3d day" msgid_plural "%3d days" msgstr[0] "%3d 日" +#. ~ Right-aligned time string. should right-align with other strings with +#. this same comment +#: src/calendar.cpp +#, c-format +msgid "%3d week" +msgid_plural "%3d weeks" +msgstr[0] "%3d 週間" + #. ~ Right-aligned time string. should right-align with other strings with #. this same comment #: src/calendar.cpp @@ -112063,22 +113311,6 @@ msgstr "は%1$sが無ければ%3$sの%2$sを使用できません。" msgid "Liquid from your inventory has leaked onto the ground." msgstr "所持していた液体が地面に流れ落ちました。" -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "筋力" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "器用" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "知性" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "感覚" - #: src/character.cpp msgid "Left Arm" msgstr "左腕" @@ -112176,9 +113408,7 @@ msgstr "このアイテムを使っても効果は期待できません。" msgid "No limb would benefit from it." msgstr "このアイテムが役に立ちそうな部位がありません。" -#: src/character.cpp src/game.cpp src/game.cpp src/iexamine.cpp -#: src/inventory_ui.cpp src/npctalk_funcs.cpp src/pickup.cpp src/turret.cpp -#: src/vehicle_use.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp src/pickup.cpp msgid "Cancel" msgstr "取消" @@ -112262,7 +113492,7 @@ msgid "" msgstr "食料を置く区域です。より具体的な食料分類を指定していない場合、全ての食料はここに移動されます。" #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" msgstr "分類: 生鮮食料" @@ -112283,7 +113513,7 @@ msgid "" msgstr "飲料を置く区域です。生鮮飲料の区域を指定していない場合、生鮮飲料はここに移動されます。" #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" msgstr "分類: 生鮮飲料" @@ -112300,7 +113530,7 @@ msgid "Destination for guns, bows and similar weapons." msgstr "銃、弓などの武器を置く区域です。" #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" msgstr "分類: 弾倉" @@ -112343,7 +113573,7 @@ msgid "" msgstr "衣類を置く区域です。他に該当する区域を指定していない場合、不潔な衣類はここに移動されます。" #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" msgstr "分類: 不潔な衣類" @@ -112392,7 +113622,7 @@ msgid "Destination for Compact Bionics Modules aka CBMs." msgstr "生体部品、いわゆるCBMを置く区域です。" #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" msgstr "分類: 車両部品" @@ -112435,7 +113665,7 @@ msgid "Destination for chemicals." msgstr "化学物質を置く区域です。" #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" msgstr "分類: 予備部品" @@ -112462,7 +113692,7 @@ msgid "" msgstr "防具を置く区域です。他に該当する区域を指定していない場合、不潔な防具はここに移動されます。" #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" msgstr "分類: 不潔な防具" @@ -112487,7 +113717,7 @@ msgid "Items inside of this zone are ignored by \"sort out loot\" zone-action." msgstr "この区域内のアイテムは区域行動の「分類」時に無視されます。" #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" msgstr "農地: 耕耘" @@ -113524,12 +114754,12 @@ msgstr "コンソールはシャットダウンしました。" #: src/computer.cpp src/iexamine.cpp src/iuse.cpp src/map.cpp msgctxt "memorial_male" msgid "Set off an alarm." -msgstr "警報を鳴らした。" +msgstr "警報が鳴りました。" #: src/computer.cpp src/iexamine.cpp src/iuse.cpp src/map.cpp msgctxt "memorial_female" msgid "Set off an alarm." -msgstr "警報を鳴らした。" +msgstr "警報が鳴りました。" #: src/computer.cpp msgid "Manhacks drop from compartments in the ceiling." @@ -113690,7 +114920,7 @@ msgstr "工程/バリエーション #" msgid "Result: " msgstr "結果: " -#: src/construction.cpp src/crafting_gui.cpp src/recipe.cpp +#: src/construction.cpp src/crafting_gui.cpp msgid "N/A" msgstr "なし" @@ -113799,13 +115029,17 @@ msgstr "地上へ続く道を掘り当てました。" msgid "After boarding up the window the curtains and curtain rod are left." msgstr "窓を板張りし、カーテンやカーテンロッドを取り外しました。" +#: src/construction.cpp +msgid "You gather some clay." +msgstr "粘土を集めました。" + #: src/construction.cpp msgid "You gather some sand." msgstr "砂を集めました。" #: src/construction.cpp -msgid "You gather some clay." -msgstr "粘土を集めました。" +msgid "You gather some materials." +msgstr "素材を集めました。" #: src/construction.cpp msgid "You cannot build there!" @@ -114186,7 +115420,7 @@ msgstr "道具: " #: src/crafting.cpp src/iuse.cpp msgid "Your morale is too low to craft..." -msgstr "製作する意欲が湧かない..." +msgstr "製作する意欲が湧きません..." #: src/crafting.cpp msgid "You can't see to craft!" @@ -114273,6 +115507,16 @@ msgstr "%s (%d/%d 周囲+所持)" msgid "Use which component?" msgstr "どの材料を使いますか?" +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "%s (%d/%d 周囲の内容物)" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "%s (%d/%d 所持品の内容物)" + #: src/crafting.cpp msgid "Use which tool?" msgstr "どの道具を使いますか?" @@ -114431,37 +115675,37 @@ msgstr "レシピ: %s" #: src/crafting_gui.cpp #, c-format -msgid "Skills used: %s" -msgstr "適用スキル: %s" +msgid "Primary skill used: %s" +msgstr "使用スキル: %s" #: src/crafting_gui.cpp #, c-format -msgid "Required skills: %s" -msgstr "必要スキル: %s" +msgid "Difficulty: %d" +msgstr "難易度: %d" #: src/crafting_gui.cpp #, c-format -msgid "Difficulty: %d" -msgstr "難易度: %d" +msgid "Your skill level: %d" +msgstr "現在のレベル: %d" #: src/crafting_gui.cpp -msgid "Your skill level: N/A" -msgstr "現在のレベル: なし" +msgid "Your skill level: N/A" +msgstr "現在のレベル: 0" #: src/crafting_gui.cpp #, c-format -msgid "Your skill level: %d" -msgstr "現在のレベル: %d" +msgid "Other skills used: %s" +msgstr "自力習得条件: %s" #: src/crafting_gui.cpp #, c-format -msgid "Time to complete: %s" -msgstr "完了時間: %s" +msgid "Time to complete: %s" +msgstr "完了時間: %s" #: src/crafting_gui.cpp #, c-format -msgid "Dark craftable? %s" -msgstr "暗所での製作: %s" +msgid "Dark craftable? %s" +msgstr "暗所での製作: %s" #: src/crafting_gui.cpp src/defense.cpp msgid "Easy" @@ -114487,49 +115731,82 @@ msgstr "それは作れません!" msgid "Nothing selected!" msgstr "何も選択していない!" -#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp -msgid "Search:" -msgstr "検索: " +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "製作アイテムの性能" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "製作アイテムの説明文(時間がかかります)" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "遠い間合い" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "製作に必要な材料" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "製作時の使用スキル" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "レシピの自力習得条件スキル" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "製作に必要な性能" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "製作に必要な道具" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "非表示のレシピ" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "yes" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" +msgstr "記憶済みのレシピ" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" -msgstr "" -"検索で使用できる接頭辞(製作結果):\n" -" [t] 製作に必要な道具で検索\n" -" [c] 製作に必要な材料で検索\n" -" [q] 製作に必要な工具性能で検索\n" -" [s] 製作に必要なスキルで検索\n" -"検索で使用できる接頭辞(製作結果):\n" -" [Q] 完成品の工具性能で検索\n" -"その他\n" -" [h]非表示にしているレシピを検索\n" -" [m] レシピの記憶の有無\n" -"例:\n" -" t:はんだごて\n" -" c:木材\n" -" q:精密金工\n" -" s:料理\n" -" Q:精密ボルト締緩\n" -" h:yes\n" -" m:no" +"The default is to search result names. Some single-character prefixes can be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" +msgstr "" +"検索したい文字を入力すると、製作アイテムの中から検索します。1文字の接頭辞とコロン(:)を付けてから入力すると、様々な条件を指定して検索できます。\n" +"\n" +"例:\n" + +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "シャツ" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" +msgstr " %s%.*s %s\n" + +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "製作アイテムの名前" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" +msgstr " %c:%s%.*s %s\n" + +#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp +msgid "Search:" +msgstr "検索: " #: src/crafting_gui.cpp msgid "RESULTS" @@ -114561,10 +115838,6 @@ msgstr "気分じゃない" msgid "slow %d%%" msgstr "時間がかかる %d%%" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "可" - #: src/crafting_gui.cpp msgid "Searched" msgstr "検索結果" @@ -114711,6 +115984,11 @@ msgstr "" "バグ:不特定の行動。\n" "(Creature::get_attitude_ui_data)" +#: src/debug.cpp +#, c-format +msgid "See %s for a full stack backtrace" +msgstr "フルスタックバックトレースは%sを参照してください" + #: src/debug.cpp msgid "An error has occurred! Written below is the error report:" msgstr "エラーが発生しました!以下のエラーレポートが出力されました: " @@ -115940,11 +117218,11 @@ msgstr "キャンプ地から%d以内のタイルを選択してください" msgid "You must construct expansions in fields." msgstr "領域内に建物を発展させる必要があります。" -#: src/editmap.cpp src/mission_companion.cpp +#: src/editmap.cpp src/faction_camp.cpp msgid "" "Engine cannot support merging vehicles from two overmaps, please remove them" " from the OM tile." -msgstr "エンジンは2つの全体マップを跨ぐ車両を統合できません。全体マップタイルから車両を取り除いてください。" +msgstr "エンジンは2つの全体マップを跨ぐ車両を統合できません。全体マップタイルから車両を除去してください。" #: src/editmap.cpp msgid "Your mechanic could not find a vehicle at the garage." @@ -117945,521 +119223,2246 @@ msgstr "食料: %s" msgid "Combat Ability: %s" msgstr "戦力: %s" -#: src/field.cpp -msgid "blood splatter" -msgstr "飛び散った血液" +#: src/faction_camp.cpp +msgid " [DONE]\n" +msgstr " [完了]\n" -#: src/field.cpp -msgid "blood stain" -msgstr "血の汚れ" +#: src/faction_camp.cpp +msgid " left]\n" +msgstr " 後に完了]\n" -#: src/field.cpp -msgid "puddle of blood" -msgstr "血溜まり" +#: src/faction_camp.cpp +msgid "Upgrade Camp" +msgstr "キャンプ地の改良" -#: src/field.cpp -msgid "bile splatter" -msgstr "飛び散った胆汁" +#: src/faction_camp.cpp +msgid "Working to expand your camp!\n" +msgstr "キャンプ地拡張のために働いています!\n" -#: src/field.cpp -msgid "bile stain" -msgstr "胆汁の汚れ" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?" +msgstr "" +"\n" +"\n" +"仲間をパーティーに呼び戻しますか?" -#: src/field.cpp -msgid "puddle of bile" -msgstr "胆汁溜まり" +#: src/faction_camp.cpp +msgid "Recover Ally from Upgrading" +msgstr "仲間を改良作業から呼び戻す" -#: src/field.cpp -msgid "bloody meat chunks" -msgstr "血塗れの肉片" +#: src/faction_camp.cpp +msgid "Busy crafting!\n" +msgstr "忙しそうに製作しています!\n" -#: src/field.cpp -msgid "heap of gore" -msgstr "流血の跡" +#: src/faction_camp.cpp +msgid " (Finish) Crafting" +msgstr " (完了) 製作" -#: src/field.cpp -msgid "scraps of flesh" -msgstr "肉の残骸" +#: src/faction_camp.cpp +msgid "Gather Materials" +msgstr "資材の収集" -#: src/field.cpp -msgid "broken vegetation tangle" -msgstr "折れた植物" +#: src/faction_camp.cpp +msgid "Searching for materials to upgrade the camp.\n" +msgstr "キャンプ地改良のための資材を探しています。\n" -#: src/field.cpp -msgid "shattered branches and leaves" -msgstr "落ちた枝葉" +#: src/faction_camp.cpp +msgid "Recover Ally from Gathering" +msgstr "仲間を資材の収集から呼び戻す" -#: src/field.cpp -msgid "shredded leaves and twigs" -msgstr "千切れた枝葉" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" +" \n" +"Effects:\n" +"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" +" \n" +"Must have enjoyability >= -6\n" +"Perishable food liquidated at penalty depending on upgrades and rot time:\n" +"> Rotten: 0%%\n" +"> Rots in < 2 days: 60%%\n" +"> Rots in < 5 days: 80%%\n" +" \n" +"Total faction food stock: %d kcal or %d day's rations" +msgstr "" +"メモ:\n" +"仲間に配る食料を備蓄します。テント内の一番奥、キャンプ地管理人と壁の間の1タイルに配りたい食料を置いておきましょう。\n" +" \n" +"効果:\n" +"> 派閥の食料ステータスが増加します\n" +" \n" +"満喫-6以上の食料が必要です\n" +"生鮮食料は、改良の進行と腐敗までの時間によって養分減少のペナルティが課されます:\n" +"> 腐敗: 養分の0%%\n" +"> 2日以内に腐敗: 養分の60%%\n" +"> 5日以内に腐敗: 養分の80%%\n" +" \n" +"備蓄量: %d kcal (%d日分)" -#: src/field.cpp -msgid "cobwebs" -msgstr "クモ糸" +#: src/faction_camp.cpp +msgid "Distribute Food" +msgstr "食料の配給" -#: src/field.cpp -msgid "thick webs" -msgstr "密集したクモの巣" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" +" \n" +"Effects:\n" +"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" +"> Items sitting on any type of furniture will not be moved.\n" +"> Items that are not listed in one of the categories are defaulted to the tools group." +msgstr "" +"メモ:\n" +"[単純労働]の任務で移動するアイテムの置き場所をリセットします。\n" +" \n" +"効果:\n" +"> 割り当て可能なポイント: 食料、配給用食料、種、武器、衣類、CBM、道具類、木材、ごみ、本、薬品、弾薬\n" +"> 家具の上に置かれているアイテムは移動されません。\n" +"> 上記の分類以外のアイテムは全て道具類に分類されます。" -#: src/field.cpp -msgid "webs" -msgstr "クモの巣" +#: src/faction_camp.cpp +msgid "Reset Sort Points" +msgstr "収拾地点のリセット" -#: src/field.cpp -msgid "puddle of slime" -msgstr "粘液溜まり" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to gather light brush and heavy sticks.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +"> heavy sticks\n" +"> withered plants\n" +"> splintered wood\n" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" +"メモ:\n" +"仲間を派遣して、枯れ草や重棒などを集めてきてもらいます。\n" +" \n" +"適用スキル: サバイバル\n" +"難易度: なし \n" +"拾得予定:\n" +"> 重棒\n" +"> 枯れ草\n" +"> 裂けた木材\n" +" \n" +"危険: 超低\n" +"時間: 3時間、連続作業可能\n" +"人員: %d/3\n" -#: src/field.cpp -msgid "slime stain" -msgstr "粘液の汚れ" +#: src/faction_camp.cpp +msgid "Collect Firewood" +msgstr "焚き木の収集" -#: src/field.cpp -msgid "slime trail" -msgstr "粘液の痕跡" +#: src/faction_camp.cpp +msgid "Searching for firewood.\n" +msgstr "焚き木を探しています。\n" -#: src/field.cpp -msgid "acid splatter" -msgstr "飛び散った酸" +#: src/faction_camp.cpp +msgid "Recover Firewood Gatherers" +msgstr "焚き木の収集から呼び戻す" -#: src/field.cpp -msgid "acid streak" -msgstr "吐き出された酸" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to do low level chores and sort supplies.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" +"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours\n" +"Positions: %d/1\n" +msgstr "" +"メモ:\n" +"仲間にキャンプ地内の消耗品類を整頓する簡単な雑用を頼みます。\n" +" \n" +"適用スキル: 製作\n" +"難易度: なし \n" +"効果:\n" +"> キャンプ地の地面に落ちているアイテムが、種類別に分類され、テント前の4つの箱に置かれます。\n" +"デフォルト設定で北の箱から順に衣類、食品、本とCBM、道具が入ります。木材はテント脇の南側の地面、ゴミは北側の地面に置かれます。\n" +" \n" +"危険: なし\n" +"時間: 3時間\n" +"人員: %d/1\n" -#: src/field.cpp -msgid "pool of acid" -msgstr "酸溜まり" +#: src/faction_camp.cpp +msgid "Menial Labor" +msgstr "単純労働" -#: src/field.cpp -msgid "glob of sap" -msgstr "樹液の塊" +#: src/faction_camp.cpp +msgid "Performing menial labor...\n" +msgstr "単純作業をこなしています...\n" -#: src/field.cpp -msgid "pool of sap" -msgstr "樹液溜まり" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?\n" +msgstr "" +"\n" +" \n" +"仲間をパーティーに呼び戻しますか?\n" -#: src/field.cpp -msgid "sap splatter" -msgstr "飛び散った樹液" +#: src/faction_camp.cpp +msgid "Recover Menial Laborer" +msgstr "単純作業から呼び戻す" -#: src/field.cpp -msgid "sludge trail" -msgstr "ヘドロの痕跡" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours \n" +"Positions: %d/1\n" +msgstr "" +"メモ:\n" +"拠点は更なる拡張が可能なほどに大きくなりました。拡張は新たな機会を得るチャンスですが、資材を大量に必要とし、時間もかかります。各キャンプ地は周囲8方向にしか拡張できないので、何の施設にするか慎重に選びましょう。\n" +" \n" +"適用スキル: 製作\n" +"難易度: なし \n" +"効果:\n" +"> 拡張地点に建設する施設を選びましょう。食料は仲間の任務に不可欠であり、木材は主な建設資材であることから、農場や材木置き場を選ぶのが賢明と言えます。\n" +" \n" +"危険: なし\n" +"時間: 3時間 \n" +"人員: %d/1\n" -#: src/field.cpp -msgid "thick sludge trail" -msgstr "ヘドロの濃い痕跡" +#: src/faction_camp.cpp +msgid "Expand Base" +msgstr "拠点の拡張" -#: src/field.cpp -msgid "thin sludge trail" -msgstr "ヘドロの薄い痕跡" +#: src/faction_camp.cpp +msgid "Surveying for expansion...\n" +msgstr "拡張に向けた調査をしています...\n" -#: src/field.cpp -msgid "fire" -msgstr "火" +#: src/faction_camp.cpp +msgid "Recover Surveyor" +msgstr "調査から呼び戻す" -#: src/field.cpp -msgid "raging fire" -msgstr "燃え盛る炎" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to a nearby forest to cut logs.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: 1 \n" +"Effects:\n" +"> 50%% of trees/trunks at the forest position will be cut down.\n" +"> 100%% of total material will be brought back.\n" +"> Repeatable with diminishing returns.\n" +" \n" +"Risk: None\n" +"Time: 6 Hour Base + Travel Time + Cutting Time\n" +"Positions: %d/1\n" +msgstr "" +"メモ:\n" +"近隣の森に仲間を派遣し、丸太を切ってきてもらいます。\n" +" \n" +"適用スキル: 製作\n" +"難易度: 1 \n" +"効果:\n" +"> 森林に生えている樹木/木の幹の50%%を伐採します。\n" +"> 伐採で得た素材の100%% を入手します。\n" +"> 連続で作業できますが、入手量は減少します。\n" +" \n" +"危険: なし\n" +"時間: 6時間 + 移動時間 + 作業時間\n" +"人員: %d/1\n" -#: src/field.cpp -msgid "small fire" -msgstr "小さな火" +#: src/faction_camp.cpp +msgid "Cut Logs" +msgstr "丸太の切り出し" -#: src/field.cpp -msgid "legacy rubble" -msgstr "遺物の瓦礫" +#: src/faction_camp.cpp +msgid "Cutting logs in the woods...\n" +msgstr "森の中で丸太を切っています...\n" -#: src/field.cpp -msgid "smoke" -msgstr "煙" +#: src/faction_camp.cpp +msgid "Recover Log Cutter" +msgstr "丸太の切り出しから呼び戻す" -#: src/field.cpp -msgid "thick smoke" -msgstr "濃い煙" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Good for setting up resupply or contingency points.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward.\n" +" \n" +"Risk: Medium\n" +"Time: 6 Hour Construction + Travel\n" +"Positions: %d/1\n" +msgstr "" +"メモ:\n" +"離れた場所に仲間を派遣し、即席シェルターの建設と、シェルターへの物資の運搬を頼みます。\n" +" \n" +"適用スキル: サバイバル\n" +"難易度: 3\n" +"効果:\n" +"> シェルターは移動中や緊急時の物資補給地点に適しています。\n" +"> シェルターは無人のため、置いた物資が盗まれる可能性があります。\n" +"> 物資の重量によって作業時間が変動します。\n" +" \n" +"危険: 中\n" +"時間: 6時間(建設作業) + 移動時間\n" +"人員: %d/1\n" -#: src/field.cpp -msgid "thin smoke" -msgstr "薄い煙" +#: src/faction_camp.cpp +msgid "Setup Hide Site" +msgstr "簡易シェルターの設置" -#: src/field.cpp -msgid "hazy cloud" -msgstr "薄い毒ガス" +#: src/faction_camp.cpp +msgid "Setting up a hide site...\n" +msgstr "簡易シェルターを設置しています...\n" -#: src/field.cpp -msgid "thick toxic gas" -msgstr "濃い有毒ガス" +#: src/faction_camp.cpp +msgid "Recover Hide Setup" +msgstr "簡易シェルターの設置から呼び戻す" -#: src/field.cpp -msgid "toxic gas" -msgstr "有毒ガス" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Push gear out to a hide site or bring gear back from one.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 1\n" +"Effects:\n" +"> Good for returning equipment you left in the hide site shelter.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward or back.\n" +" \n" +"Risk: Medium\n" +"Time: 1 Hour Base + Travel\n" +"Positions: %d/1\n" +msgstr "" +"メモ:\n" +"簡易シェルター内の物資を他のシェルターに移すか、拠点に持ち帰ります。\n" +" \n" +"適用スキル: サバイバル\n" +"難易度: 1\n" +"効果:\n" +"> 簡易シェルターに残した物資を改修するのに便利です。\n" +"> シェルターは無人のため、置いた荷物が盗まれる可能性があります。\n" +"> 物資の重量によって作業時間が変動します。\n" +" \n" +"危険: 中\n" +"時間: 1時間 + 移動時間\n" +"人員: %d/1\n" -#: src/field.cpp -msgid "tear gas" -msgstr "催涙ガス" +#: src/faction_camp.cpp +msgid "Relay Hide Site" +msgstr "簡易シェルターの物資移動" -#: src/field.cpp -msgid "thick tear gas" -msgstr "濃い催涙ガス" +#: src/faction_camp.cpp +msgid "Transfering gear to a hide site...\n" +msgstr "簡易シェルターに物資を移送しています...\n" -#: src/field.cpp -msgid "radioactive gas" -msgstr "放射性ガス" +#: src/faction_camp.cpp +msgid "Recover Hide Relay" +msgstr "簡易シェルターへの物資の移送から呼び戻す" -#: src/field.cpp -msgid "thick radioactive gas" -msgstr "濃い放射性ガス" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to edible plans.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Foraging Possibilities:\n" +"> wild vegetables\n" +"> fruits and nuts dependening on season\n" +"May produce less food than consumed!\n" +"Risk: Very Low\n" +"Time: 4 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" +"メモ:\n" +"仲間を派遣して、食用植物を集めてきてもらいます。\n" +" \n" +"適用スキル: サバイバル\n" +"難易度: なし \n" +"入手予定:\n" +"> 山菜\n" +"> 季節の果物と木の実\n" +"入手できる食料が消費した食料を下回る場合もあります!\n" +"危険: 超低\n" +"時間: 4時間、連続作業可能\n" +"人員: %d/3\n" -#: src/field.cpp -msgid "gas vent" -msgstr "ガス噴出孔" +#: src/faction_camp.cpp +msgid "Forage for plants" +msgstr "食用植物の採集" -#: src/field.cpp -msgid "electric cloud" -msgstr "帯電した雲" +#: src/faction_camp.cpp +msgid "Foraging for edible plants.\n" +msgstr "食用植物を採集しています\n" -#: src/field.cpp -msgid "electric crackle" -msgstr "スパーク" +#: src/faction_camp.cpp +msgid "Recover Foragers" +msgstr "仲間を採集から呼び戻す" -#: src/field.cpp -msgid "sparks" -msgstr "閃光" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to set traps for small game.\n" +" \n" +"Skill used: trapping\n" +"Difficulty: N/A \n" +"Trappinng Possibilities:\n" +"> small and tiny animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Low\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/2\n" +msgstr "" +"メモ:\n" +"仲間を派遣して、小動物を罠猟で仕留めてもらいます。\n" +" \n" +"適用スキル: 罠\n" +"難易度: なし \n" +"入手予定:\n" +"> 超小型/小型動物の死体\n" +"入手できる食料が消費した食料を下回る場合もあります!\n" +"危険: 低\n" +"時間: 6時間、連続作業可能\n" +"人員: %d/2\n" -#: src/field.cpp -msgid "odd ripple" -msgstr "奇妙な波紋" +#: src/faction_camp.cpp +msgid "Trap Small Game" +msgstr "小動物の罠猟" -#: src/field.cpp -msgid "swirling air" -msgstr "渦巻く風" +#: src/faction_camp.cpp +msgid "Trapping Small Game.\n" +msgstr "小動物の罠猟をしています。\n" -#: src/field.cpp -msgid "tear in reality" -msgstr "事象の裂け目" +#: src/faction_camp.cpp +msgid "Recover Trappers" +msgstr "仲間を罠猟から呼び戻す" -#: src/field.cpp -msgid "faint plasma" -msgstr "微弱なプラズマ" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to hunt large animals.\n" +" \n" +"Skill used: marksmanship\n" +"Difficulty: N/A \n" +"Hunting Possibilities:\n" +"> small, medium, or large animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Medium\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/1\n" +msgstr "" +"メモ:\n" +"仲間を派遣して、大型動物を猟で仕留めてもらいます。\n" +" \n" +"適用スキル: 射撃\n" +"難易度: なし \n" +"入手予定:\n" +"> 小型/中型/大型動物の死体\n" +"入手できる食料が消費した食料を下回る場合もあります!\n" +"危険: 中\n" +"時間: 6時間、連続作業可能\n" +"人員: %d/1\n" -#: src/field.cpp -msgid "glaring plasma" -msgstr "眩いプラズマ" +#: src/faction_camp.cpp +msgid "Hunt Large Animals" +msgstr "大型動物の狩猟" -#: src/field.cpp -msgid "glowing plasma" -msgstr "強烈なプラズマ" +#: src/faction_camp.cpp +msgid "Hunting large animals.\n" +msgstr "大型動物の狩猟をしています。\n" -#: src/field.cpp -msgid "beam of light" -msgstr "光線" +#: src/faction_camp.cpp +msgid "Recover Hunter" +msgstr "仲間を狩猟から呼び戻す" -#: src/field.cpp -msgid "faint glimmer" -msgstr "微光" +#: src/faction_camp.cpp +msgid "Construct Map Fortifications" +msgstr "要塞の建設" -#: src/field.cpp -msgid "intense beam of light" -msgstr "強烈な光線" +#: src/faction_camp.cpp +msgid "Construct Spiked Trench" +msgstr "塹壕(スパイク)の建設" -#: src/field.cpp -msgid "spotlight" -msgstr "サーチライト" +#: src/faction_camp.cpp +msgid "Constructing fortifications...\n" +msgstr "要塞を建設しています...\n" -#: src/field.cpp -msgid "dazzling" -msgstr "まばゆい光" +#: src/faction_camp.cpp +msgid "Finish Map Fortifications" +msgstr "要塞の建設から呼び戻す" -#: src/field.cpp -msgid "plant sap splatter" -msgstr "飛び散った樹液(植物)" +#: src/faction_camp.cpp +msgid "Recruit Companions" +msgstr "仲間を募る" -#: src/field.cpp -msgid "plant sap stain" -msgstr "樹液の汚れ(植物)" +#: src/faction_camp.cpp +msgid "Searching for recruits.\n" +msgstr "新たな仲間を探しています。\n" -#: src/field.cpp -msgid "puddle of resin" -msgstr "樹脂溜まり" +#: src/faction_camp.cpp +msgid "Recover Recruiter" +msgstr "仲間探しから呼び戻す" -#: src/field.cpp -msgid "bug blood splatter" -msgstr "飛び散った体液(虫)" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Select checkpoints to customize path.\n" +"> Reveals terrain around the path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" +"メモ:\n" +"大いなる未知の世界に仲間を派遣します。戦闘を避けるには高い生存スキルが必要ですが、ある程度の戦闘発生はやむを得ないと考えておきましょう。\n" +" \n" +"適用スキル: サバイバル\n" +"難易度: 3\n" +"効果:\n" +"> 指定した地点までの経路を偵察します。\n" +"> 経路周辺の地形が全体マップに表示されます。\n" +"> 簡易シェルターを設置することで探索範囲を拡大できます。\n" +" \n" +"危険: 高\n" +"時間: 移動時間\n" +"人員: %d/3\n" -#: src/field.cpp -msgid "bug blood stain" -msgstr "体液の汚れ(虫)" +#: src/faction_camp.cpp +msgid "Scout Mission" +msgstr "偵察任務" -#: src/field.cpp -msgid "puddle of bug blood" -msgstr "体液溜まり(虫)" +#: src/faction_camp.cpp +msgid "Scouting the region.\n" +msgstr "周囲を偵察しています。\n" -#: src/field.cpp -msgid "hemolymph splatter" -msgstr "飛び散った体液" +#: src/faction_camp.cpp +msgid "Recover Scout" +msgstr "偵察から呼び戻す" -#: src/field.cpp -msgid "hemolymph stain" -msgstr "体液の汚れ" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 4\n" +"Effects:\n" +"> Pulls creatures encountered into combat instead of fleeing.\n" +"> Select checkpoints to customize path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: Very High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" +"メモ:\n" +"仲間を派遣して荒野の大掃除をしてもらいます。派遣した仲間は敵対的なモンスターを殺し、受けた傷が大きすぎるか戦力差が開きすぎたときに帰還します。\n" +" \n" +"適用スキル: サバイバル\n" +"難易度: 4\n" +"効果:\n" +"> モンスターと遭遇した場合、逃げずに戦闘します。\n" +"> 指定した地点までの経路を偵察します。\n" +"> 簡易シェルターを設置することで探索範囲を拡大できます。\n" +" \n" +"危険: 極高\n" +"時間: 移動時間\n" +"人員: %d/3\n" -#: src/field.cpp -msgid "puddle of hemolymph" -msgstr "体液溜まり" +#: src/faction_camp.cpp +msgid "Combat Patrol" +msgstr "戦闘派遣" -#: src/field.cpp -msgid "shards of chitin" -msgstr "キチンの破片" +#: src/faction_camp.cpp +msgid "Patrolling the region.\n" +msgstr "周辺地域を巡回しています。\n" -#: src/field.cpp -msgid "shattered bug leg" -msgstr "砕けた虫の脚" +#: src/faction_camp.cpp +msgid "Recover Combat Patrol" +msgstr "戦闘派遣から呼び戻す" -#: src/field.cpp -msgid "torn insect organs" -msgstr "引き裂かれた昆虫の器官" +#: src/faction_camp.cpp +msgid " Expansion Upgrade" +msgstr "拡張施設の改良" -#: src/field.cpp -msgid "gooey scraps" -msgstr "粘体の断片" +#: src/faction_camp.cpp +msgid "Working to upgrade your expansions!\n" +msgstr "キャンプ地改良のために働いています!\n" -#: src/field.cpp -msgid "heap of squishy gore" -msgstr "どろどろの血糊の山" +#: src/faction_camp.cpp +msgid " Expansion" +msgstr "拡張" -#: src/field.cpp -msgid "icky mess" -msgstr "飛び散った粘液" +#: src/faction_camp.cpp +msgid "Recover Ally, " +msgstr "仲間を呼び戻す: " -#: src/field.cpp -msgid "swirl of tobacco smoke" -msgstr "渦を巻いた煙(煙草)" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Have a companion attempt to completely dissemble a vehicle into components.\n" +" \n" +"Skill used: mechanics\n" +"Difficulty: 2 \n" +"Effects:\n" +"> Removed parts placed on the furniture in the garage.\n" +"> Skill plays a huge role to determine what is salvaged.\n" +" \n" +"Risk: None\n" +"Time: Skill Based \n" +msgstr "" +"メモ:\n" +"仲間に頼んで、車両を完全に分解して部品にしてもらいます。\n" +" \n" +"適用スキル: 機械整備\n" +"難易度: 2 \n" +"効果:\n" +"> 取り外した部品は車両修理工場内の家具の上に置かれます。\n" +"> スキルの高さによって回収できるアイテムは大きく異なります。\n" +" \n" +"危険: なし\n" +"時間: スキル依存 \n" -#: src/field.cpp -msgid "thick tobacco smoke" -msgstr "濃い煙(煙草)" +#: src/faction_camp.cpp +msgid " Chop Shop" +msgstr "車両解体" -#: src/field.cpp -msgid "tobacco smoke" -msgstr "煙(煙草)" +#: src/faction_camp.cpp +msgid "Working at the chop shop...\n" +msgstr "車両解体の仕事をしています...\n" -#: src/field.cpp -msgid "pot smoke" -msgstr "煙(鍋)" +#: src/faction_camp.cpp +msgid " (Finish) Chop Shop" +msgstr "(完了) 車両解体" -#: src/field.cpp -msgid "swirl of pot smoke" -msgstr "渦を巻いた煙(鍋)" +#: src/faction_camp.cpp +msgid "Working in your kitchen!\n" +msgstr "調理場で働いています!\n" -#: src/field.cpp -msgid "thick pot smoke" -msgstr "濃い煙(鍋)" +#: src/faction_camp.cpp +msgid " (Finish) Cooking" +msgstr " (完了) 調理" -#: src/field.cpp -msgid "crack smoke" -msgstr "煙(高純度コカイン)" +#: src/faction_camp.cpp +msgid "Working in your blacksmith shop!\n" +msgstr "鍛冶場で働いています!\n" -#: src/field.cpp -msgid "swirl of crack smoke" -msgstr "渦を巻いた煙(高純度コカイン)" +#: src/faction_camp.cpp +msgid " (Finish) Smithing" +msgstr " (完了) 鍛冶" -#: src/field.cpp -msgid "thick crack smoke" -msgstr "濃い煙(高純度コカイン)" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plow any spaces that have reverted to dirt or grass.\n" +" \n" +msgstr "" +"メモ:\n" +"荒廃してしまった草地や地面を全て耕します。\n" +" \n" -#: src/field.cpp -msgid "meth smoke" -msgstr "煙(メタンフェタミン)" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Restores only the plots created in the last expansion upgrade.\n" +"> Does not damage existing crops.\n" +" \n" +"Risk: None\n" +"Time: 5 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"適用スキル: 製作\n" +"難易度: なし \n" +"効果:\n" +"> 直近の拡張や改良で作成された区画のタイルのみ耕します。\n" +"> 既存の作物は損傷しません。\n" +" \n" +"危険: なし\n" +"時間: 5分 / タイル \n" +"人員: 0/1 \n" -#: src/field.cpp -msgid "swirl of meth smoke" -msgstr "渦まく煙(メタンフェタミン)" +#: src/faction_camp.cpp +msgid " Plow Fields" +msgstr "土地の耕作" -#: src/field.cpp -msgid "thick meth smoke" -msgstr "濃い煙(メタンフェタミン)" +#: src/faction_camp.cpp +msgid "Working to plow your fields!\n" +msgstr "土地を耕しています!\n" -#: src/field.cpp -msgid "angry swarm of bees" -msgstr "怒った蜂の大群" +#: src/faction_camp.cpp +msgid " (Finish) Plow Fields" +msgstr " (完了) 土地の耕作" -#: src/field.cpp -msgid "some bees" -msgstr "数匹の蜂" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plant designated seeds in the spaces that have already been tilled.\n" +" \n" +msgstr "" +"メモ:\n" +"既に耕されている場所に指定された種を植えます。\n" +" \n" -#: src/field.cpp -msgid "swarm of bees" -msgstr "蜂の大群" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose which seed type or all of your seeds.\n" +"> Stops when out of seeds or planting locations.\n" +"> Will plant in ALL dirt mounds in the expansion.\n" +" \n" +"Risk: None\n" +"Time: 1 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"適用スキル: サバイバル\n" +"難易度: なし \n" +"効果:\n" +"> 種の種類を選択してください。\n" +"> 種か植え付け場所がなくなったら仕事を終えます。\n" +"> 拡張された全ての植え付け可能な地面に種を植えます。\n" +" \n" +"危険: なし\n" +"時間: 1分 / 区画 \n" +"人員: 0/1 \n" -#: src/field.cpp -msgid "airborne incendiary" -msgstr "宙を舞う焼夷剤" +#: src/faction_camp.cpp +msgid " Plant Fields" +msgstr "畑の植え付け" -#: src/field.cpp -msgid "relaxation gas" -msgstr "精神緩和ガス" +#: src/faction_camp.cpp +msgid "Working to plant your fields!\n" +msgstr "土地に作物を植えています!\n" -#: src/field.cpp -msgid "sedative gas" -msgstr "鎮静ガス" +#: src/faction_camp.cpp +msgid " (Finish) Plant Fields" +msgstr " (完了) 畑の植え付け" -#: src/field.cpp -msgid "fungal haze" -msgstr "薄い胞子" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Harvest any plants that are ripe and bring the produce back.\n" +" \n" +msgstr "" +"メモ:\n" +"実った植物を収穫して集めます。\n" +" \n" -#: src/field.cpp -msgid "thick fungal haze" -msgstr "濃い胞子" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Will dump all harvesting products onto your location.\n" +" \n" +"Risk: None\n" +"Time: 3 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"適用スキル: サバイバル\n" +"難易度: なし \n" +"効果:\n" +"> 収穫した全てのアイテムを渡します。\n" +" \n" +"危険: なし\n" +"時間: 3分 / 区画 \n" +"人員: 0/1 \n" -#: src/field.cpp -msgid "fungicidal gas" -msgstr "殺真菌ガス" +#: src/faction_camp.cpp +msgid " Harvest Fields" +msgstr "畑の収穫" -#: src/field.cpp -msgid "thick fungicidal gas" -msgstr "濃い殺真菌ガス" +#: src/faction_camp.cpp +msgid "Working to harvest your fields!\n" +msgstr "土地の作物を収穫しています!\n" -#: src/field.cpp -msgid "smoke vent" -msgstr "排煙口" +#: src/faction_camp.cpp +msgid " (Finish) Harvest Fields" +msgstr "(完了) 畑の収穫" -#: src/field.cpp -msgid "Whew... smells like skunk!" -msgstr "ヒューッ...ハッパの臭いだ!" +#: src/faction_camp.cpp +msgid "Working on your farm!\n" +msgstr "農場で働いています!\n" -#: src/field.cpp -msgid "Man, that smells like some good shit!" -msgstr "おっ、上物の臭いだな!" +#: src/faction_camp.cpp +msgid "departs to search for materials..." +msgstr "は資材の収集に向かいました..." -#: src/field.cpp -msgid "I don't know... should you really be smoking that stuff?" -msgstr "うわぁ...そんなものを吸うなんて正気か?" +#: src/faction_camp.cpp +msgid "There are too many companions working on this mission!" +msgstr "この任務に就いている仲間が多すぎます!" -#: src/field.cpp -msgid "Ew, smells like burning rubber!" -msgstr "オエッ、ゴムが焼けるときの臭いだ!" +#: src/faction_camp.cpp +msgid "departs to search for firewood..." +msgstr "は焚き木の収集に向かいました...." -#: src/field.cpp -msgid "Ugh, that smells rancid!" -msgstr "うあっ、酷い腐敗臭です!" +#: src/faction_camp.cpp +msgid "You don't have enough food stored to feed your companion." +msgstr "仲間が十分に食べていけるだけの食料を蓄えていません。" -#: src/field.cpp +#: src/faction_camp.cpp +msgid "departs to dig ditches and scrub toilets..." +msgstr "は溝掘りやトイレ掃除などの雑多な仕事を始めました..." + +#: src/faction_camp.cpp #, c-format -msgid "A %s hits you!" -msgstr "%sが命中しました!" +msgid "%s returns from working in the woods..." +msgstr "%sが木こりの作業を終えて戻ってきました..." -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits %2$s!" -msgstr "%1$sは%2$sに命中しました!" +msgid "%s returns from working on the hide site..." +msgstr "%sが簡易シェルターでの作業を終えて戻ってきました..." -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits the %2$s!" -msgstr "%1$sは%2$sに命中しました!" +msgid "%s returns from shuttling gear between the hide site..." +msgstr "%sが簡易シェルターの物資移動作業から戻ってきました..." -#: src/field.cpp -msgid "The acid burns your body!" -msgstr "酸が身体を焼きました!" +#: src/faction_camp.cpp +msgid "departs to search for edible plants..." +msgstr "は食用植物の採集に向かいました..." -#: src/field.cpp -msgid "The acid burns s body!" -msgstr "酸がの身体を焼きました!" +#: src/faction_camp.cpp +msgid "departs to set traps for small animals..." +msgstr "は小動物の罠猟に向かいました..." -#: src/field.cpp -msgid "The acid burns your legs and feet!" -msgstr "酸が脚と足を焼きました!" +#: src/faction_camp.cpp +msgid "departs to hunt for meat..." +msgstr "は狩猟に向かいました..." -#: src/field.cpp -msgid "The acid burns s legs and feet!" -msgstr "酸がの脚と足を焼きました!" +#: src/faction_camp.cpp +msgid "departs to search for recruits..." +msgstr "は新たな仲間探しに向かいました..." -#: src/field.cpp -msgid "You're lying in a pool of acid" -msgstr "酸溜まりに倒れています。" +#: src/faction_camp.cpp +msgid "departs to survey land..." +msgstr "は周辺調査に向かいました..." -#: src/field.cpp -msgid "You're standing in a pool of acid" -msgstr "酸溜まりに立っています。" +#: src/faction_camp.cpp +msgid "You have already selected a surveyor!" +msgstr "既に調査者を選択済みです!" -#: src/field.cpp -msgid "The sap sticks to you!" -msgstr "樹液が身体にかかりました!" +#: src/faction_camp.cpp +msgid "begins to upgrade the expansion..." +msgstr "は拡張した土地の改良作業を開始しました..." -#: src/field.cpp -msgid "The sap sticks to !" -msgstr "樹液がにかかりました!" +#: src/faction_camp.cpp +msgid "You already have a worker upgrading that expansion!" +msgstr "既に仲間が拡張した土地を改良しています!" -#: src/field.cpp -msgid "The sludge is thick and sticky. You struggle to pull free." -msgstr "足元のぬかるみは深く、ねばついています。自由になろうと足掻いています。" +#: src/faction_camp.cpp +msgid "You don't have the materials for the upgrade." +msgstr "改良に使う資材がありません。" -#: src/field.cpp -msgid "You burn your legs and feet!" -msgstr "自身の脚と足を燃やしました!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your farm with something..." +msgstr "%sが何かを持って農場から戻ってきました..." -#: src/field.cpp -msgid "You're burning up!" -msgstr "身体が燃えています!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns to you with something..." +msgstr "%sが何か持って戻ってきました..." -#: src/field.cpp -msgid "You're set ablaze!" -msgstr "身体が燃え上がりました!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your kitchen with something..." +msgstr "%sが何かを持って調理場から戻ってきました..." -#: src/field.cpp -msgid "Your whole body is burning!" -msgstr "全身が燃えています!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your blacksmith shop with something..." +msgstr "%sが何かを持って鍛冶場から戻ってきました..." -#: src/field.cpp -msgid " burns their legs and feet!" -msgstr "は自身の脚と足を燃やしました!" +#: src/faction_camp.cpp +msgid "begins plowing the field..." +msgstr "は土地を耕す作業を開始しました..." -#: src/field.cpp -msgid " is burning up!" -msgstr "は燃えています!" +#: src/faction_camp.cpp +msgid "You already have someone plowing that field." +msgstr "既にその土地を耕している人がいます。" -#: src/field.cpp -msgid " is set ablaze!" -msgstr "が燃え上がりました!" +#: src/faction_camp.cpp +msgid "You have no additional seeds to give your companions..." +msgstr "もう渡せる種がありません..." -#: src/field.cpp -msgid "s whole body is burning!" -msgstr "の全身が燃えています!" +#: src/faction_camp.cpp +msgid "begins planting the field..." +msgstr "は種を植える作業を開始しました..." -#: src/field.cpp -msgid "You're standing in a fire!" -msgstr "火の中に立っています!" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Which seeds do you wish to have planted?" +msgstr "どの種を植える?" -#: src/field.cpp -msgid "You're waist-deep in a fire!" -msgstr "腰まで火の海に浸かっています!" +#: src/faction_camp.cpp +msgid "You already have someone planting that field." +msgstr "既にその土地で種を植えている人がいます。" -#: src/field.cpp -msgid "You're surrounded by raging fire!" -msgstr "燃え盛る猛火に包まれています!" +#: src/faction_camp.cpp +msgid "begins to harvest the field..." +msgstr "は収穫作業を開始しました..." -#: src/field.cpp -msgid "You're lying in fire!" -msgstr "火の中に倒れています!" +#: src/faction_camp.cpp +msgid "You already have someone harvesting that field." +msgstr "既にその土地で収穫作業をしている人がいます。" -#: src/field.cpp -#, c-format -msgid "You feel sick from inhaling the %s" -msgstr "%sを吸い込んで気分が悪くなりました。" +#: src/faction_camp.cpp +msgid "You already have someone working in that garage." +msgstr "既にその車両修理工場で働いている人がいます。" -#: src/field.cpp -msgid "This radioactive gas burns!" -msgstr "放射性ガスを浴びています!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your garage..." +msgstr "%sが車両修理工場から戻ってきました..." -#: src/field.cpp -msgid "You're torched by flames!" -msgstr "炎が身体に燃え移りました!" +#: src/faction_camp.cpp +msgid "You already have a companion upgrading the camp." +msgstr "既に仲間がキャンプ地を改良しています。" -#: src/field.cpp -msgid " is torched by flames!" -msgstr "炎がに燃え移りました!" +#: src/faction_camp.cpp +msgid "begins to upgrade the camp..." +msgstr "はキャンプ地の改良作業を開始しました..." -#: src/field.cpp -msgid "These flames do not burn you." -msgstr "この炎は身体に燃え移らなかった。" +#: src/faction_camp.cpp +msgid "Forests and swamps are the only valid cutting locations." +msgstr "木こりの作業は森林と湿地でのみ可能です。" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Trip Estimate:\n" +"%s" +msgstr "" +"推定時間:\n" +"%s" + +#: src/faction_camp.cpp +msgid "departs to cut logs..." +msgstr "は木こりの作業に向かいました..." + +#: src/faction_camp.cpp +msgid "Forests, swamps, and fields are valid hide site locations." +msgstr "簡易シェルターの設置は森林、湿地、平野でのみ可能です。" + +#: src/faction_camp.cpp +msgid "departs to build a hide site..." +msgstr "は簡易シェルターの設置作業に向かいました..." + +#: src/faction_camp.cpp +msgid "You need equipment to setup a hide site..." +msgstr "簡易シェルターを設置するための装備が必要です..." + +#: src/faction_camp.cpp +msgid "You must select an existing hide site." +msgstr "既存の簡易シェルターを選択してください。" + +#: src/faction_camp.cpp +msgid "Bring gear back?" +msgstr "物資を回収しますか?" + +#: src/faction_camp.cpp +msgid "departs for the hide site..." +msgstr "は簡易シェルターに向かいました..." + +#: src/faction_camp.cpp +msgid "You need equipment to transport between the hide site..." +msgstr "簡易シェルターから運んでくるアイテムがありません。" + +#: src/faction_camp.cpp +msgid "" +"Select a start and end point. Line must be straight. Fields, forests, and " +"swamps are valid fortification locations. In addition to existing " +"fortification constructions." +msgstr "" +"始点と終点を選択してください。線は直線でなければなりません。要塞化可能な地形は平野、森林、湿地です。これらの地形には既に要塞化済みの建物も含まれます。" + +#: src/faction_camp.cpp +msgid "Select an end point." +msgstr "終点を選択してください。" + +#: src/faction_camp.cpp +msgid "Invalid terrain in construction path." +msgstr "建設ルートに無効な地形が含まれています。" + +#: src/faction_camp.cpp +msgid "You don't have the material to build the fortification." +msgstr "要塞建設に使う資材がありません。" + +#: src/faction_camp.cpp +msgid "begins constructing fortifications..." +msgstr "は要塞の建設を開始しました..." + +#: src/faction_camp.cpp +msgid "" +"Select checkpoints until you reach maximum range or select the last point " +"again to end." +msgstr "範囲の上限に達するまで調査ポイントを選択するか、最後に選択したポイントを再度選択することで終了します。" + +#: src/faction_camp.cpp +msgid "departs on patrol..." +msgstr "は巡回に向かいました..." + +#: src/faction_camp.cpp +msgid "You don't have the materials to craft that" +msgstr "製作に使う資材がありません。" + +#: src/faction_camp.cpp +#, c-format +msgid "Batch crafting %s [MAX: %d]: " +msgstr "一括製作 %s [最大: %d]: " + +#: src/faction_camp.cpp +msgid "Your batch is too large!" +msgstr "量が多すぎます!" + +#: src/faction_camp.cpp +msgid "You already have someone working in that expansion." +msgstr "既に拡張作業を行っている人がいます。" + +#: src/faction_camp.cpp +msgid "begins to work..." +msgstr "は作業を開始しました..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +" Chopping this vehicle:\n" +"%s" +msgstr "" +" 車両を解体する:\n" +"%s" + +#: src/faction_camp.cpp +msgid "begins working in the garage..." +msgstr "は車両修理工場での作業を開始しました..." + +#: src/faction_camp.cpp +msgid "Your companion seems disappointed that your pantry is empty..." +msgstr "食料貯蔵庫が空だったので、仲間はがっかりしているようです..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s returns from upgrading the camp having earned a bit of experience..." +msgstr "%s が多少の経験を積んでキャンプ地の改良作業から戻ってきました..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from doing the dirty work to keep the camp running..." +msgstr "%sはキャンプ地運営のための下働きから帰ってきました..." + +#: src/faction_camp.cpp +msgid "Sorting points have changed, forcing reset." +msgstr "分類ポイントが変更され、強制的にリセットされます。" + +#: src/faction_camp.cpp +msgid "gathering materials" +msgstr "資材の収集" + +#: src/faction_camp.cpp +msgid "foraging for edible plants" +msgstr "食用植物の採集" + +#: src/faction_camp.cpp +msgid "trapping small animals" +msgstr "小動物の罠猟" + +#: src/faction_camp.cpp +msgid "hunting for meat" +msgstr "狩猟" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from %s carrying supplies and has a bit more experience..." +msgstr "%sは多少の経験を積み、%sを終えて帰還しました..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from constructing fortifications..." +msgstr "%sが要塞の建設から戻ってきました..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from searching for recruits with a bit more experience..." +msgstr "%sが仲間を集める仕事から戻り、ほんの少しの経験を積みました..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s encountered %s..." +msgstr "%sは%sに遭遇しました..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't find anyone to recruit..." +msgstr "%sは仲間を見つけられませんでした..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s convinced %s to hear a recruitment offer from you..." +msgstr "%sは仲間になってほしいという%sの話を聞いて信用しました。" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested in anything %s had to offer..." +msgstr "%sは%sから話を聞きましたが、興味をそそられなかったようです..." + +#: src/faction_camp.cpp +msgid "" +"NPC Overview:\n" +" \n" +msgstr "" +"NPC概要:\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Name: %20s\n" +" \n" +msgstr "" +"名前: %20s\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "Strength: %10d\n" +msgstr "筋力: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Dexterity: %10d\n" +msgstr "器用: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Intelligence: %10d\n" +msgstr "知性: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Perception: %10d\n" +" \n" +msgstr "" +"感覚: %10d\n" +" \n" + +#: src/faction_camp.cpp +msgid "Top 3 Skills:\n" +msgstr "上位3スキル:\n" + +#: src/faction_camp.cpp +msgid "Asking for:\n" +msgstr "要求:\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"> Food: %10d days\n" +" \n" +msgstr "" +"> 食料: %10d 日分\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Faction Food:%9d days\n" +" \n" +msgstr "" +"備蓄食料:%9d 日分\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Recruit Chance: %10d%%\n" +" \n" +msgstr "" +"加入確率: %10d%%\n" +" \n" + +#: src/faction_camp.cpp +msgid "Select an option:" +msgstr "オプション選択: " + +#: src/faction_camp.cpp +msgid "Increase Food" +msgstr "食料を増やす" + +#: src/faction_camp.cpp +msgid "Decrease Food" +msgstr "食料を減らす" + +#: src/faction_camp.cpp +msgid "Make Offer" +msgstr "仲間に誘う" + +#: src/faction_camp.cpp +msgid "Not Interested" +msgstr "仲間に誘わない" + +#: src/faction_camp.cpp +msgid "You decide you aren't interested..." +msgstr "お引き取り願いました..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s has been convinced to join!" +msgstr "%sは仲間に加わることにしました!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested..." +msgstr "%sは興味がないようです..." + +#: src/faction_camp.cpp +msgid "Your companion hit a river and didn't know how to swim..." +msgstr "仲間が川に差し掛かりましたが、泳ぎ方を知りませんでした..." + +#: src/faction_camp.cpp +msgid "" +"Your companion hit a river and didn't know how to swim well enough to " +"cross..." +msgstr "仲間は川に差し掛かりましたが、渡り切れるほど泳ぎが上手くありませんでした..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't return from patrol..." +msgstr "%sは巡回から戻って来ませんでした..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from patrol..." +msgstr "%sは巡回から戻ってきました..." + +#: src/faction_camp.cpp +msgid "Select an expansion:" +msgstr "拡張施設を選択: " + +#: src/faction_camp.cpp +msgid "You choose to wait..." +msgstr "選択を保留しました..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from surveying for the expansion." +msgstr "%sはキャンプ地拡張のための調査から戻ってきました。" + +#: src/faction_camp.cpp +msgid "No seeds to plant!" +msgstr "植える種がありません!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from working your fields..." +msgstr "%sは野外での作業から戻ってきました..." + +#: src/faction_camp.cpp +msgid "MAIN" +msgstr "メイン" + +#: src/faction_camp.cpp +msgid " [N] " +msgstr "[北]" + +#: src/faction_camp.cpp +msgid " [NE] " +msgstr "[北東]" + +#: src/faction_camp.cpp +msgid " [E] " +msgstr "[東]" + +#: src/faction_camp.cpp +msgid " [SE] " +msgstr "[南東]" + +#: src/faction_camp.cpp +msgid " [S] " +msgstr "[南]" + +#: src/faction_camp.cpp +msgid " [SW] " +msgstr "[南西]" + +#: src/faction_camp.cpp +msgid " [W] " +msgstr "[西]" + +#: src/faction_camp.cpp +msgid " [NW] " +msgstr "[北西]" + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Base Missions" +msgstr "拠点任務" + +#: src/faction_camp.cpp +msgid "Farm Expansion" +msgstr "農場(拡張施設)" + +#: src/faction_camp.cpp +msgid "Garage Expansion" +msgstr "車両修理工場(拡張施設)" + +#: src/faction_camp.cpp +msgid "Kitchen Expansion" +msgstr "調理場(拡張施設)" + +#: src/faction_camp.cpp +msgid "Blacksmith Expansion" +msgstr "鍛冶場(拡張施設)" + +#: src/faction_camp.cpp +msgid "Empty Expansion" +msgstr "未拡張" + +#: src/faction_camp.cpp +#, c-format +msgid "Select a location between %d and %d tiles away." +msgstr "%d~%dマスの範囲内のタイルを選択" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"You must select a target between %d and %d range from the base. Range: %d" +msgstr "拠点から%d~%dの範囲にある地点を選択してください。範囲: %d" + +#: src/faction_camp.cpp +msgid "You must be able to see the target that you select." +msgstr "探索済みの地点を選択してください。" + +#: src/faction_camp.cpp +msgid "Do you want to bounce off this location to extend range?" +msgstr "範囲を広げるためにこの地点から外へ出てもよろしいですか?" + +#: src/faction_camp.cpp +msgid "food for you" +msgstr "自分用の食料" + +#: src/faction_camp.cpp +msgid "food for companions" +msgstr "配給食料" + +#: src/faction_camp.cpp +msgid "weapons" +msgstr "武器" + +#: src/faction_camp.cpp +msgid "clothing" +msgstr "衣服" + +#: src/faction_camp.cpp +msgid "bionics" +msgstr "CBM" + +#: src/faction_camp.cpp +msgid "all kinds of tools" +msgstr "道具類" + +#: src/faction_camp.cpp +msgid "wood of various sorts" +msgstr "木材など" + +#: src/faction_camp.cpp +msgid "trash and rotting food" +msgstr "ゴミ、腐敗食物" + +#: src/faction_camp.cpp +msgid "books" +msgstr "本" + +#: src/faction_camp.cpp +msgid "medication" +msgstr "薬品" + +#: src/faction_camp.cpp +msgid "ammo" +msgstr "弾薬" + +#: src/faction_camp.cpp +#, c-format +msgid "Reset point: %s?" +msgstr "地点をリセットしますか?: %s" + +#: src/faction_camp.cpp +msgid "" +" Items New Point Old Point\n" +" \n" +msgstr "" +" アイテム 新収集地点 旧収集地点\n" +" \n" + +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +" Save Points?" +msgstr "" +"\n" +" \n" +" 地点を保存しますか?" + +#: src/faction_camp.cpp +msgid "Revert to default points?" +msgstr "デフォルトの地点に戻しますか?" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15.2f (km)\n" +msgstr ">距離:%15.2f (km)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">One Way: %15d (trips)\n" +msgstr ">片道: %15d (移動時間)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15.2f (km)\n" +msgstr ">舗装路: %15.2f (km)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15d (m)\n" +msgstr ">距離:%15d (m)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15d (m)\n" +msgstr ">舗装路: %15d (m)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Travel: %23s\n" +msgstr ">移動時間: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Working: %23s\n" +msgstr ">作業時間: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Total: %23s\n" +msgstr "合計: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Food: %15d (kcal)\n" +" \n" +msgstr "" +"食料: %15d (kcal)\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"%s\n" +" \n" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s \n" +"Risk: None\n" +"Time: %s\n" +msgstr "" +"メモ:\n" +"%s\n" +" \n" +"適用スキル: %s\n" +"難易度: %d\n" +"%s \n" +"危険: なし\n" +"時間: %s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s\n" +"Time: %s\n" +msgstr "" +"適用スキル: %s\n" +"難易度: %d\n" +"%s\n" +"時間: %s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" +" \n" +"Skill used: speech\n" +"Difficulty: 2 \n" +"Base Score: +%3d%%\n" +"> Expansion Bonus: +%3d%%\n" +"> Faction Bonus: +%3d%%\n" +"> Special Bonus: +%3d%%\n" +" \n" +"Total: Skill +%3d%%\n" +" \n" +"Risk: High\n" +"Time: 4 Days\n" +"Positions: %d/1\n" +msgstr "" +"メモ:\n" +"新たな仲間を集めるのは非常に危険な仕事で、物資も大量に必要です。成功するかどうかは、派遣する仲間のスキルと拠点の魅力の高さにかかっています。\n" +" \n" +"適用スキル: 話術\n" +"難易度: 2 \n" +"基礎点: +%3d%%\n" +"> 拡張ボーナス: +%3d%%\n" +"> 派閥ボーナス: +%3d%%\n" +"> 特殊ボーナス: +%3d%%\n" +" \n" +"合計: スキル +%3d%%\n" +" \n" +"危険: 高\n" +"時間: 4日\n" +"人員: %d/1\n" + +#: src/faction_camp.cpp +msgid "" +"Notes: \n" +"Send a companion to gather materials for the next camp upgrade.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +msgstr "" +"メモ: \n" +"キャンプ地の改良に使う資材を集めてきてもらいます。\n" +" \n" +"適用スキル: サバイバル\n" +"難易度: なし \n" +"拾得予定:\n" + +#: src/faction_camp.cpp +msgid "" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: " +msgstr "" +" \n" +"危険: 超低\n" +"時間: 3時間、連続作業可能\n" +"人員: " + +#: src/faction_camp.cpp +msgid "Harvestable: " +msgstr "収穫できる物: " + +#: src/faction_camp.cpp +msgid "Ready for Planting: " +msgstr "植え付けできる物: " + +#: src/faction_camp.cpp +msgid "Needs Plowing: " +msgstr "耕地が必要: " + +#: src/faction_camp.cpp +#, c-format +msgid "Name: %25s\n" +msgstr "名前: %25s\n" + +#: src/faction_camp.cpp +msgid "---- Engines ----\n" +msgstr "---- エンジン ----\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Engine: %25s\n" +msgstr "エンジン: %25s\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Status: %24d%%\n" +msgstr ">状態: %24d%%\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Fuel: %25s\n" +msgstr ">燃料: %25s\n" + +#: src/faction_camp.cpp +msgid "---- Fuel Storage & Battery ----\n" +msgstr "---- 燃料タンク・バッテリー ----\n" + +#: src/faction_camp.cpp +msgid "Estimated Chop Time: 5 Days\n" +msgstr "推定分解時間: 5日\n" + +#: src/faction_camp.cpp +msgid "No items are located at the drop point..." +msgstr "収集地点にアイテムがありません..." + +#: src/faction_camp.cpp +#, c-format +msgid "You distribute %d kcal worth of food to your companions." +msgstr "%dkcal分の食料を仲間に配給しました。" + +#: src/faction_camp.cpp +#, c-format +msgid "While %s, a silent specter approaches %s..." +msgstr "%s中の%sに、恐ろしい化け物が忍び寄ります..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s notices the antlered horror and slips away before it gets too close." +msgstr "%sは枝角を生やした化け物に気づき、接近される前にその場をそっと離れました。" + +#: src/faction_camp.cpp +#, c-format +msgid "Another survivor approaches %s asking for directions." +msgstr "生存者が道を尋ねようと%sに近づきました。" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Fearful that he may be an agent of some hostile faction, %s doesn't mention " +"the camp." +msgstr "敵対的な派閥の人間である可能性も考え、%sはキャンプ地について言及しませんでした。" + +#: src/faction_camp.cpp +msgid "The two part on friendly terms and the survivor isn't seen again." +msgstr "2人は仲良く話していましたが、生存者が再び見つかることはありませんでした。" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't detect the ambush until it was too late!" +msgstr "%sが待ち伏せに気づいたときは全てが手遅れでした!" + +#: src/faction_camp.cpp +#, c-format +msgid "The bull moose charged %s from the tree line..." +msgstr "オスのヘラジカが木の陰から%sに襲い掛かりました..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Despite being caught off guard %s was able to run away until the moose gave " +"up pursuit." +msgstr "不意打ちを受けたものの、%sはヘラジカの追跡を撒いて逃げ切ることができました。" + +#: src/faction_camp.cpp +#, c-format +msgid "The jabberwock grabbed %s by the arm from behind and began to scream." +msgstr "ジャバウォックが背後から%sを掴み、叫び声を上げました。" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Terrified, %s spun around and delivered a massive kick to the creature's " +"torso..." +msgstr "%sは恐怖にかられながらも、鋭い回し蹴りを化け物の胴体に喰らわせました..." + +#: src/faction_camp.cpp +#, c-format +msgid "Collapsing into a pile of gore, %s walked away unscathed..." +msgstr "傷一つ負わず血の海でうずくまっていた%sは、やがてその場を離れました..." + +#: src/faction_camp.cpp +msgid "(Sounds like bullshit, you wonder what really happened.)" +msgstr "[この世の物とは思えない音。何が起きたのか全く想像もつかない]" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s turned to find the hideous black eyes of a giant wasp staring back from " +"only a few feet away..." +msgstr "%sが振り返ると、ほんの数フィート離れた地点から、巨大なハチがぞっとするような黒い瞳でこちらを見つめていました..." + +#: src/faction_camp.cpp +msgid "The screams were terrifying, there was nothing anyone could do." +msgstr "恐ろしい叫び声をあげる以外は、どうすることもできませんでした。" + +#: src/faction_camp.cpp +#, c-format +msgid "Pieces of %s were found strewn across a few bushes." +msgstr "%sの身体の一部が、周囲の茂みに飛び散っていました。" + +#: src/faction_camp.cpp +msgid "(You wonder if your companions are fit to work on their own...)" +msgstr "(もっと向いている仕事を与えていれば、と思わずにはいられません...)" + +#: src/field.cpp +msgid "blood splatter" +msgstr "飛び散った血液" + +#: src/field.cpp +msgid "blood stain" +msgstr "血の汚れ" + +#: src/field.cpp +msgid "puddle of blood" +msgstr "血溜まり" + +#: src/field.cpp +msgid "bile splatter" +msgstr "飛び散った胆汁" + +#: src/field.cpp +msgid "bile stain" +msgstr "胆汁の汚れ" + +#: src/field.cpp +msgid "puddle of bile" +msgstr "胆汁溜まり" + +#: src/field.cpp +msgid "bloody meat chunks" +msgstr "血塗れの肉片" + +#: src/field.cpp +msgid "heap of gore" +msgstr "流血の跡" + +#: src/field.cpp +msgid "scraps of flesh" +msgstr "肉の残骸" + +#: src/field.cpp +msgid "broken vegetation tangle" +msgstr "折れた植物" + +#: src/field.cpp +msgid "shattered branches and leaves" +msgstr "落ちた枝葉" + +#: src/field.cpp +msgid "shredded leaves and twigs" +msgstr "千切れた枝葉" + +#: src/field.cpp +msgid "cobwebs" +msgstr "クモ糸" + +#: src/field.cpp +msgid "thick webs" +msgstr "密集したクモの巣" + +#: src/field.cpp +msgid "webs" +msgstr "クモの巣" + +#: src/field.cpp +msgid "puddle of slime" +msgstr "粘液溜まり" + +#: src/field.cpp +msgid "slime stain" +msgstr "粘液の汚れ" + +#: src/field.cpp +msgid "slime trail" +msgstr "粘液の痕跡" + +#: src/field.cpp +msgid "acid splatter" +msgstr "飛び散った酸" + +#: src/field.cpp +msgid "acid streak" +msgstr "吐き出された酸" + +#: src/field.cpp +msgid "pool of acid" +msgstr "酸溜まり" + +#: src/field.cpp +msgid "glob of sap" +msgstr "樹液の塊" + +#: src/field.cpp +msgid "pool of sap" +msgstr "樹液溜まり" + +#: src/field.cpp +msgid "sap splatter" +msgstr "飛び散った樹液" + +#: src/field.cpp +msgid "sludge trail" +msgstr "ヘドロの痕跡" + +#: src/field.cpp +msgid "thick sludge trail" +msgstr "ヘドロの濃い痕跡" + +#: src/field.cpp +msgid "thin sludge trail" +msgstr "ヘドロの薄い痕跡" + +#: src/field.cpp +msgid "raging fire" +msgstr "燃え盛る炎" + +#: src/field.cpp +msgid "small fire" +msgstr "小さな火" + +#: src/field.cpp +msgid "legacy rubble" +msgstr "遺物の瓦礫" + +#: src/field.cpp +msgid "smoke" +msgstr "煙" + +#: src/field.cpp +msgid "thick smoke" +msgstr "濃い煙" + +#: src/field.cpp +msgid "thin smoke" +msgstr "薄い煙" + +#: src/field.cpp +msgid "hazy cloud" +msgstr "薄い毒ガス" + +#: src/field.cpp +msgid "thick toxic gas" +msgstr "濃い有毒ガス" + +#: src/field.cpp +msgid "toxic gas" +msgstr "有毒ガス" + +#: src/field.cpp +msgid "tear gas" +msgstr "催涙ガス" + +#: src/field.cpp +msgid "thick tear gas" +msgstr "濃い催涙ガス" + +#: src/field.cpp +msgid "radioactive gas" +msgstr "放射性ガス" + +#: src/field.cpp +msgid "thick radioactive gas" +msgstr "濃い放射性ガス" + +#: src/field.cpp +msgid "gas vent" +msgstr "ガス噴出孔" + +#: src/field.cpp +msgid "electric cloud" +msgstr "帯電した雲" + +#: src/field.cpp +msgid "electric crackle" +msgstr "スパーク" + +#: src/field.cpp +msgid "sparks" +msgstr "閃光" + +#: src/field.cpp +msgid "odd ripple" +msgstr "奇妙な波紋" + +#: src/field.cpp +msgid "swirling air" +msgstr "渦巻く風" + +#: src/field.cpp +msgid "tear in reality" +msgstr "事象の裂け目" + +#: src/field.cpp +msgid "faint plasma" +msgstr "微弱なプラズマ" + +#: src/field.cpp +msgid "glaring plasma" +msgstr "眩いプラズマ" + +#: src/field.cpp +msgid "glowing plasma" +msgstr "強烈なプラズマ" + +#: src/field.cpp +msgid "beam of light" +msgstr "光線" + +#: src/field.cpp +msgid "faint glimmer" +msgstr "微光" + +#: src/field.cpp +msgid "intense beam of light" +msgstr "強烈な光線" + +#: src/field.cpp +msgid "spotlight" +msgstr "サーチライト" + +#: src/field.cpp +msgid "dazzling" +msgstr "まばゆい光" + +#: src/field.cpp +msgid "plant sap splatter" +msgstr "飛び散った樹液(植物)" + +#: src/field.cpp +msgid "plant sap stain" +msgstr "樹液の汚れ(植物)" + +#: src/field.cpp +msgid "puddle of resin" +msgstr "樹脂溜まり" + +#: src/field.cpp +msgid "bug blood splatter" +msgstr "飛び散った体液(虫)" + +#: src/field.cpp +msgid "bug blood stain" +msgstr "体液の汚れ(虫)" + +#: src/field.cpp +msgid "puddle of bug blood" +msgstr "体液溜まり(虫)" + +#: src/field.cpp +msgid "hemolymph splatter" +msgstr "飛び散った体液" + +#: src/field.cpp +msgid "hemolymph stain" +msgstr "体液の汚れ" + +#: src/field.cpp +msgid "puddle of hemolymph" +msgstr "体液溜まり" + +#: src/field.cpp +msgid "shards of chitin" +msgstr "キチンの破片" + +#: src/field.cpp +msgid "shattered bug leg" +msgstr "砕けた虫の脚" + +#: src/field.cpp +msgid "torn insect organs" +msgstr "引き裂かれた昆虫の器官" + +#: src/field.cpp +msgid "gooey scraps" +msgstr "粘体の断片" + +#: src/field.cpp +msgid "heap of squishy gore" +msgstr "どろどろの血糊の山" + +#: src/field.cpp +msgid "icky mess" +msgstr "飛び散った粘液" + +#: src/field.cpp +msgid "swirl of tobacco smoke" +msgstr "渦を巻いた煙(煙草)" + +#: src/field.cpp +msgid "thick tobacco smoke" +msgstr "濃い煙(煙草)" + +#: src/field.cpp +msgid "tobacco smoke" +msgstr "煙(煙草)" + +#: src/field.cpp +msgid "pot smoke" +msgstr "煙(鍋)" + +#: src/field.cpp +msgid "swirl of pot smoke" +msgstr "渦を巻いた煙(鍋)" + +#: src/field.cpp +msgid "thick pot smoke" +msgstr "濃い煙(鍋)" + +#: src/field.cpp +msgid "crack smoke" +msgstr "煙(高純度コカイン)" + +#: src/field.cpp +msgid "swirl of crack smoke" +msgstr "渦を巻いた煙(高純度コカイン)" + +#: src/field.cpp +msgid "thick crack smoke" +msgstr "濃い煙(高純度コカイン)" + +#: src/field.cpp +msgid "meth smoke" +msgstr "煙(メタンフェタミン)" + +#: src/field.cpp +msgid "swirl of meth smoke" +msgstr "渦まく煙(メタンフェタミン)" + +#: src/field.cpp +msgid "thick meth smoke" +msgstr "濃い煙(メタンフェタミン)" + +#: src/field.cpp +msgid "angry swarm of bees" +msgstr "怒った蜂の大群" + +#: src/field.cpp +msgid "some bees" +msgstr "数匹の蜂" + +#: src/field.cpp +msgid "swarm of bees" +msgstr "蜂の大群" + +#: src/field.cpp +msgid "airborne incendiary" +msgstr "宙を舞う焼夷剤" + +#: src/field.cpp +msgid "relaxation gas" +msgstr "精神緩和ガス" + +#: src/field.cpp +msgid "sedative gas" +msgstr "鎮静ガス" + +#: src/field.cpp +msgid "fungal haze" +msgstr "薄い胞子" + +#: src/field.cpp +msgid "thick fungal haze" +msgstr "濃い胞子" + +#: src/field.cpp +msgid "fungicidal gas" +msgstr "殺真菌ガス" + +#: src/field.cpp +msgid "thick fungicidal gas" +msgstr "濃い殺真菌ガス" + +#: src/field.cpp +msgid "smoke vent" +msgstr "排煙口" + +#: src/field.cpp +msgid "Whew... smells like skunk!" +msgstr "ヒューッ...ハッパの臭いだ!" + +#: src/field.cpp +msgid "Man, that smells like some good shit!" +msgstr "おっ、上物の臭いだな!" + +#: src/field.cpp +msgid "I don't know... should you really be smoking that stuff?" +msgstr "うわぁ...そんなものを吸うなんて正気か?" + +#: src/field.cpp +msgid "Ew, smells like burning rubber!" +msgstr "オエッ、ゴムが焼けるときの臭いだ!" + +#: src/field.cpp +msgid "Ugh, that smells rancid!" +msgstr "うあっ、酷い腐敗臭です!" + +#: src/field.cpp +#, c-format +msgid "A %s hits you!" +msgstr "%sが命中しました!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits %2$s!" +msgstr "%1$sは%2$sに命中しました!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits the %2$s!" +msgstr "%1$sは%2$sに命中しました!" + +#: src/field.cpp +msgid "The acid burns your body!" +msgstr "酸が身体を焼きました!" + +#: src/field.cpp +msgid "The acid burns s body!" +msgstr "酸がの身体を焼きました!" + +#: src/field.cpp +msgid "The acid burns your legs and feet!" +msgstr "酸が脚と足を焼きました!" + +#: src/field.cpp +msgid "The acid burns s legs and feet!" +msgstr "酸がの脚と足を焼きました!" + +#: src/field.cpp +msgid "You're lying in a pool of acid" +msgstr "酸溜まりに倒れています。" + +#: src/field.cpp +msgid "You're standing in a pool of acid" +msgstr "酸溜まりに立っています。" + +#: src/field.cpp +msgid "The sap sticks to you!" +msgstr "樹液が身体にかかりました!" + +#: src/field.cpp +msgid "The sap sticks to !" +msgstr "樹液がにかかりました!" + +#: src/field.cpp +msgid "The sludge is thick and sticky. You struggle to pull free." +msgstr "足元のぬかるみは深く、ねばついています。自由になろうと足掻いています。" + +#: src/field.cpp +msgid "You burn your legs and feet!" +msgstr "自身の脚と足を燃やしました!" + +#: src/field.cpp +msgid "You're burning up!" +msgstr "身体が燃えています!" + +#: src/field.cpp +msgid "You're set ablaze!" +msgstr "身体が燃え上がりました!" + +#: src/field.cpp +msgid "Your whole body is burning!" +msgstr "全身が燃えています!" + +#: src/field.cpp +msgid " burns their legs and feet!" +msgstr "は自身の脚と足を燃やしました!" + +#: src/field.cpp +msgid " is burning up!" +msgstr "は燃えています!" + +#: src/field.cpp +msgid " is set ablaze!" +msgstr "が燃え上がりました!" + +#: src/field.cpp +msgid "s whole body is burning!" +msgstr "の全身が燃えています!" + +#: src/field.cpp +msgid "You're standing in a fire!" +msgstr "火の中に立っています!" + +#: src/field.cpp +msgid "You're waist-deep in a fire!" +msgstr "腰まで火の海に浸かっています!" + +#: src/field.cpp +msgid "You're surrounded by raging fire!" +msgstr "燃え盛る猛火に包まれています!" + +#: src/field.cpp +msgid "You're lying in fire!" +msgstr "火の中に倒れています!" + +#: src/field.cpp +#, c-format +msgid "You feel sick from inhaling the %s" +msgstr "%sを吸い込んで気分が悪くなりました。" + +#: src/field.cpp +msgid "This radioactive gas burns!" +msgstr "放射性ガスを浴びています!" + +#: src/field.cpp +msgid "You're torched by flames!" +msgstr "炎が身体に燃え移りました!" + +#: src/field.cpp +msgid " is torched by flames!" +msgstr "炎がに燃え移りました!" + +#: src/field.cpp +msgid "These flames do not burn you." +msgstr "この炎は身体に燃え移らなかった。" #: src/field.cpp msgid "Those flames do not burn ." @@ -119010,6 +122013,14 @@ msgstr "瞬間移動 - 隣接した全体マップ" msgid "Test trait group" msgstr "テスト - 特質グループ" +#: src/game.cpp +msgid "Show debug message" +msgstr "表示 - デバッグメッセージ" + +#: src/game.cpp +msgid "Crash game (test crash handling)" +msgstr "強制終了処理テスト" + #: src/game.cpp msgid "Quit to Main Menu" msgstr "ゲーム終了" @@ -119133,9 +122144,10 @@ msgstr "時間" msgid "minute" msgstr "分" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp src/martialarts.cpp msgid "turn" -msgstr "ターン" +msgid_plural "turns" +msgstr[0] "ターン" #: src/game.cpp msgid "Set year to?" @@ -119741,7 +122753,7 @@ msgstr "アイテムを使用する" msgid "Sort armor" msgstr "着用品を並べ替える" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "攻撃" @@ -119772,7 +122784,7 @@ msgstr "四肢: " msgid "Use which item?" msgstr "使用するアイテムを選択" -#: src/game.cpp src/iuse.cpp src/veh_interact.cpp +#: src/game.cpp src/iuse.cpp msgid "Never mind" msgstr "なんでもない" @@ -119808,7 +122820,7 @@ msgid "" msgstr "十分な火力があり、焚き木を追加しなくても少しは燃え続けそうです。" #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." +msgid "It looks solid, and will burn for a few hours without extra fuel." msgstr "十分な火力があり、焚き木を追加しなくても数時間は燃え続けそうです。" #: src/game.cpp @@ -120259,7 +123271,7 @@ msgctxt "butchery menu" msgid "Cut up %s (%d)" msgstr "切断 %s (%d)" -#. ~ Name and number of items listed for disassembling +#. ~ Name, number of items and time to complete disassembling #: src/game.cpp #, c-format msgctxt "butchery menu" @@ -120296,8 +123308,8 @@ msgid "Choose corpse to butcher / item to disassemble" msgstr "解体する死体/分解するアイテムを選択" #: src/game.cpp -msgid "Butcher everything" -msgstr "まとめて解体する" +msgid "Quick butcher everything" +msgstr "まとめて簡易解体" #: src/game.cpp msgid "Disassemble everything once" @@ -120308,8 +123320,8 @@ msgid "Disassemble everything" msgstr "全て分解" #: src/game.cpp -msgid "Cut up all you can" -msgstr "全て切断" +msgid "Cut up everything" +msgstr "まとめて切断" #: src/game.cpp msgid "" @@ -120332,7 +123344,7 @@ msgstr "簡易解体" #: src/game.cpp msgid "" -"This techinque is used when you are in a hurry, but still want to harvest " +"This technique is used when you are in a hurry, but still want to harvest " "something from the corpse. Yields are lower as you don't try to be precise," " but it's useful if you don't want to set up a workshop. Prevents zombies " "from raising." @@ -120359,7 +123371,7 @@ msgstr "内蔵摘出" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "" @@ -120371,7 +123383,7 @@ msgstr "部位解体" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." @@ -121219,6 +124231,10 @@ msgstr "身体の衰えを感じました。" msgid "You feel fatigue seeping into your body." msgstr "身体が疲労し、眠気を感じます。" +#: src/game.cpp +msgid "The portal collapses!" +msgstr "ポータルが崩壊しました!" + #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." @@ -121461,9 +124477,22 @@ msgstr "水分" msgid "JOY" msgstr "意欲" +#. ~ Used for permafood shelf life in the Eat menu +#: src/game_inventory.cpp +msgid "indefinite" +msgstr "無期限" + +#: src/game_inventory.cpp +msgid "SHELF LIFE" +msgstr "保存期間" + +#: src/game_inventory.cpp +msgid "FRESHNESS" +msgstr "鮮度" + #: src/game_inventory.cpp msgid "SPOILS IN" -msgstr "保存" +msgstr "腐敗期限" #: src/game_inventory.cpp src/veh_interact.cpp msgid "Battery" @@ -121493,6 +124522,38 @@ msgstr "こぼれた液体は飲めない" msgid "You're fully charged" msgstr "完全に充電されている" +#: src/game_inventory.cpp +msgid "soon!" +msgstr "腐敗間近!" + +#: src/game_inventory.cpp +msgid "fresh" +msgstr "新鮮" + +#: src/game_inventory.cpp +msgid "quite fresh" +msgstr "かなり新鮮" + +#: src/game_inventory.cpp +msgid "near midlife" +msgstr "まだ新鮮" + +#: src/game_inventory.cpp +msgid "past midlife" +msgstr "少々古い" + +#: src/game_inventory.cpp +msgid "getting older" +msgstr "かなり古い" + +#: src/game_inventory.cpp +msgid "old" +msgstr "古い" + +#: src/game_inventory.cpp +msgid "rotten" +msgstr "腐敗" + #: src/game_inventory.cpp msgid "Consume item" msgstr "消費するアイテムを選択" @@ -121635,6 +124696,14 @@ msgstr "%sに収納する武器を選択" msgid "You have no weapons you could put into your %s." msgstr "%sに収納できる武器を持っていない。" +#: src/game_inventory.cpp src/iuse.cpp +msgid "Cut up what?" +msgstr "何を切りますか?" + +#: src/game_inventory.cpp +msgid "You have nothing to cut up." +msgstr "切断するアイテムが何もありません。" + #: src/game_inventory.cpp msgid "Saw barrel" msgstr "銃身を切り詰める" @@ -121946,7 +125015,7 @@ msgstr "どれだけ待ちますか?" msgid "Are you sure you want to sleep?" msgstr "ここで眠りますか?" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "はい。" @@ -122245,6 +125314,11 @@ msgstr "ダイヤモンドをコーティングする" msgid "You don't have a suitable item to coat with diamond" msgstr "ダイヤモンドをコーティングできるアイテムを持っていません。" +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "%sにダイヤモンドコーティングを施しました。" + #: src/iexamine.cpp #, c-format msgid "Use the %s?" @@ -123701,6 +126775,10 @@ msgstr "燻製ラックがあります。" msgid "You inspect its contents and find: " msgstr "ラックの内容物: " +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "...何も入っていません。" + #: src/iexamine.cpp msgid "You see some smoldering embers there." msgstr "残り火が燻っています。" @@ -123972,7 +127050,7 @@ msgstr "この動作には既にローカルキー設定が存在します。先 #: src/input.cpp #, c-format msgid "New key for %s" -msgstr "%sに対応した新しいキー" +msgstr "%sに割り当てるキーを押して下さい" #: src/input.cpp #, c-format @@ -124113,10 +127191,79 @@ msgstr "橙" msgid "black" msgstr "黒" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks as fresh as it can be. It still has " +"%s until it spoils." +msgstr "* この食料は新鮮なようです。%s 後に腐敗します。" + +#: src/item.cpp +msgid "* This food looks as fresh as it can be." +msgstr "* この食べ物は非常に新鮮なようです。" + +#: src/item.cpp +#, c-format +msgid "" +"* This food looks old. It's just %s from becoming " +"inedible." +msgstr "* この食料は古いようです。%s後に腐敗します。" + +#: src/item.cpp +msgid "" +"* This food looks old. It's on the brink of becoming inedible." +msgstr "* この食料は古いようです。腐敗する瀬戸際です。" + +#: src/item.cpp +msgid "" +"* This food looks fine. If you were more skilled in cooking or" +" survival, you might be able to make a better estimation." +msgstr "* この食料は食べられるように見えます。もっと調理やサバイバルのスキルが高ければ、より詳しく判断できそうです。" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks quite fresh. It has %s until it" +" spoils." +msgstr "* この食料はかなり新鮮なようです。%s 後に腐敗します。" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it is reaching its midlife. " +"There's %s before it spoils." +msgstr "* この食料は少々古いようです。%s後に腐敗します。" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it has passed its midlife. " +"Edible, but will go bad in %s." +msgstr "* この食べ物はかなり古いようです。%s後に腐敗します。" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it will be old soon. It has " +"%s, so if you plan to use it, it's now or never." +msgstr "* この食べ物は古くなりかけのようです。%s後に腐敗するので、食べるなら今です。" + #: src/item.cpp msgid "Category: " msgstr "分類: " +#: src/item.cpp +msgid "$" +msgstr "$" + #: src/item.cpp msgid "Price: " msgstr "価格: " @@ -124284,43 +127431,9 @@ msgstr "* よく調べてみると、これは幻覚発現性 #: src/item.cpp #, c-format msgid "" -"* This food is perishable, and takes %s to " -"rot from full freshness, at room temperature." -msgstr "" -"* この食べ物は腐敗する性質があり、完全に新鮮な状態から室温で%s経過すると腐敗します。" - -#: src/item.cpp -msgid "* This food looks as fresh as it can be." -msgstr "* この食べ物は非常に新鮮なようです。" - -#: src/item.cpp -msgid "" -"* This food looks still quite fresh. It's far from becoming " -"old." -msgstr "* この食べ物は新鮮なようです。腐敗には程遠い状態です。" - -#: src/item.cpp -msgid "" -"* This food looks like it is reaching its midlife. It has" -" some time ahead before spoiling." -msgstr "* この食べ物はまだ新鮮なようです。腐敗するまでまだ時間があります。" - -#: src/item.cpp -msgid "" -"* This food looks like it has passed its midlife. Edible," -" but will go old sooner rather then later." -msgstr "* この食べ物は腐敗していないようです。食べられますが、更に時間が経過すれば腐敗するでしょう。" - -#: src/item.cpp -msgid "" -"* This food looks like it will be old soon. It's now or never, if" -" you plan to use it." -msgstr "* この食べ物は古くなりかけに見えます。食べるなら今しかありません。" - -#: src/item.cpp -msgid "" -"* This food looks old. It's on a brink of becoming inedible." -msgstr "* この食べ物は古いようです。腐敗する瀬戸際です。" +"* This food is perishable, and at room temperature has an" +" estimated nominal shelf life of %s." +msgstr "* この食べ物は腐敗する性質があり、通常は室温で%s経過すると腐敗します。" #: src/item.cpp msgid "" @@ -124357,16 +127470,16 @@ msgid "" msgstr "" "この食べ物は腐敗が始まっています。食べるのは避けるべきです。" -#: src/item.cpp -msgid "Capacity: " -msgstr "容量: " - #: src/item.cpp #, c-format msgid " round of %s" msgid_plural " rounds of %s" msgstr[0] "発の%s" +#: src/item.cpp +msgid "Capacity: " +msgstr "容量: " + #: src/item.cpp msgid " per round" msgstr "1発あたり" @@ -124397,7 +127510,7 @@ msgstr "射程距離: " #: src/item.cpp msgid "Dispersion: " -msgstr "分散率: " +msgstr "分散: " #: src/item.cpp msgid "Recoil: " @@ -124545,6 +127658,18 @@ msgstr "操作性: " msgid "Ammo: %s" msgstr "弾薬: %s" +#: src/item.cpp +msgid "%" +msgstr "%" + +#: src/item.cpp +msgid "Reload modifier: " +msgstr "装填補正: " + +#: src/item.cpp +msgid "Minimum strength required modifier: " +msgstr "必要筋力: " + #: src/item.cpp msgid "Used on: " msgstr "対応: " @@ -124687,7 +127812,7 @@ msgstr "収納容積: " #: src/item.cpp msgid "Protection: Bash: " -msgstr "耐性: 打撃: " +msgstr "防御: 打撃: " #: src/item.cpp msgid "Acid: " @@ -125269,7 +128394,7 @@ msgstr "緑)" #: src/item.cpp msgid " (wet)" -msgstr "(濡れた)" +msgstr "(濡)" #: src/item.cpp msgid " (used)" @@ -125614,7 +128739,7 @@ msgstr "既に%sを吸っています!" #: src/iuse.cpp msgid "Are you sure you want to drink... this?" -msgstr "本当に飲みますか...これを?" +msgstr "本当に飲みますか...?これを?" #: src/iuse.cpp msgctxt "memorial_male" @@ -125718,11 +128843,11 @@ msgstr "殺菌剤を使用しました。" #: src/iuse.cpp msgid "You feel a burning sensation under your skin that quickly fades away." -msgstr "急速に皮膚に溶け込み、火照りを感じました。" +msgstr "一瞬、皮膚の内側が焼けるような感覚を味わいました。" #: src/iuse.cpp msgid "Your skin grows warm for a moment." -msgstr "短時間ですが、皮膚が暖かくなりました。" +msgstr "肌が温まるような感覚をしばらく味わいました。" #: src/iuse.cpp msgid "You take some antifungal medication." @@ -125738,11 +128863,11 @@ msgstr "皮膚の痒みが消えました。" #: src/iuse.cpp msgid "Your bowels clench as something inside them dies." -msgstr "腸が引きつるような感覚がありました。中で何かが死んだようです。" +msgstr "腸が引きつるような感覚がありました。腹の中で何かが死んだようです。" #: src/iuse.cpp msgid "Your bowels spasm painfully as something inside them dies." -msgstr "腸が発作的に動き出し苦痛に襲われました。中で何かが死んだようです。" +msgstr "腸が発作的に動き出し苦痛に襲われました。腹の中で何かが死んだようです。" #: src/iuse.cpp msgid "Your skin prickles and your veins itch for a few moments." @@ -125754,7 +128879,7 @@ msgstr "頭の内側に感じていた圧迫感が薄れています。" #: src/iuse.cpp msgid "Your head pounds like a sore tooth as something inside of it dies." -msgstr "ひどい歯痛に襲われたように頭が痛みました。中で何かが死んだようです。" +msgstr "ひどい歯痛に襲われた時のように頭が痛みました。頭の中で何かが死んだようです。" #: src/iuse.cpp msgid "The stiffness in your joints goes away." @@ -125800,7 +128925,7 @@ msgstr "ワクチンを注射しました。" #: src/iuse.cpp msgid "You feel tough." -msgstr "身体が丈夫になるのを感じました。" +msgstr "身体が丈夫になった気がします。" #: src/iuse.cpp msgid "You no longer need to fear the flu." @@ -125829,7 +128954,7 @@ msgstr "急に虚しさを感じました。" #: src/iuse.cpp msgid "You feel very sleepy..." -msgstr "とても眠い..." +msgstr "強い眠気を感じます..." #: src/iuse.cpp msgid "You eat the datura seed." @@ -125912,7 +129037,7 @@ msgstr "体内に明らかな熱を感じましたが、すぐに治まりまし #: src/iuse.cpp msgid "Feels like you're on fire, but you're OK." -msgstr "火の中にいるような感覚です、が、平気です。" +msgstr "火の中にいるような感覚ですが、問題はないようです。" #: src/iuse.cpp msgctxt "memorial_male" @@ -126019,7 +129144,7 @@ msgstr "それをやって前回はどうなりましたか?おっと。地球 #: src/iuse.cpp msgid "We no longer require this scaffolding. We reserve it for other uses." -msgstr "我々にとってこの足場はもう必要でない。何かに使えるかもしれないので、取っておくことにした。" +msgstr "我々にとってこの足場はもう必要ない。何かに使えるかもしれないので、取っておくことにした。" #: src/iuse.cpp msgctxt "memorial_male" @@ -126070,7 +129195,7 @@ msgstr "ミカズと一体となりました。" msgid "" "The apple tastes amazing, and you finish it quickly, not even noticing the " "lack of any core or seeds." -msgstr "そのリンゴの素晴らしい味に、種や芯を気にすることさえなくがつがつと平らげました。" +msgstr "このリンゴの味があまりに素晴らしいため、種や芯を気にすることさえなくがつがつと平らげました。" #: src/iuse.cpp msgid "" @@ -126579,7 +129704,7 @@ msgstr "Hammerで自分を叩こうとしました。" #: src/iuse.cpp msgid "But you can't touch this." -msgstr "だが、お前はこれを触れないよ。" +msgstr "「ユー・キャント・タッチ・ディス」" #: src/iuse.cpp msgid "There's nothing to pry there." @@ -126608,7 +129733,7 @@ msgstr "マンホールのフタを持ち上げました。" #: src/iuse.cpp msgid "You pry, but cannot lift the manhole cover." -msgstr "マンホールの蓋をこじ開けようとしたが、持ち上げられなかった。" +msgstr "マンホールの蓋をこじ開けようとして失敗しました。" #: src/iuse.cpp msgid "You pop open the crate." @@ -126616,7 +129741,7 @@ msgstr "木箱の蓋をポンと外しました。" #: src/iuse.cpp msgid "You pry, but cannot pop open the crate." -msgstr "木箱の蓋をポンと外せなかった。" +msgstr "木箱の蓋を外すのに失敗しました。" #: src/iuse.cpp msgid "You wedge open the coffin." @@ -126624,7 +129749,7 @@ msgstr "棺の蓋をこじ開けました。" #: src/iuse.cpp msgid "You pry, but the coffin remains closed." -msgstr "こじ開けようとしたが、棺の蓋を持ち上げられなかった。" +msgstr "棺の蓋をこじ開けようとして失敗しました。" #: src/iuse.cpp msgid "You pry open the window." @@ -126700,7 +129825,7 @@ msgstr "戦闘用チェーンソーが唸りを上げて戦闘準備に入りま #: src/iuse.cpp msgid "You yank the cord, but nothing happens." -msgstr "コードをぐっと引っ張りました...しかし、何も起きなかった。" +msgstr "コードをぐっと引っ張りました...が、何も起こりません。" #: src/iuse.cpp msgid "With a snarl, the electric combat chainsaw screams to life!" @@ -126724,7 +129849,7 @@ msgstr "咆哮をあげてチェーンソーが躍りだしました!" #: src/iuse.cpp msgid "You yank the cords, but nothing happens." -msgstr "コードをぐっと引っ張りました...しかし、何も起きなかった。" +msgstr "コードをぐっと引っ張りました...が、何も起こりません。" #: src/iuse.cpp msgid "With a buzz, the chainsaws leap to life!" @@ -127018,20 +130143,20 @@ msgstr "爆竹に火をつけました。" #: src/iuse.cpp msgctxt "memorial_male" msgid "Activated a mininuke." -msgstr "小型原子爆弾を起動した。" +msgstr "小型原子爆弾を起動しました。" #: src/iuse.cpp msgctxt "memorial_female" msgid "Activated a mininuke." -msgstr "小型原子爆弾を起動した。" +msgstr "小型原子爆弾を起動しました。" #: src/iuse.cpp msgid "You squeeze the pheromone ball..." -msgstr "フェロモンボールを押しつぶした..." +msgstr "フェロモンボールを押しつぶしました..." #: src/iuse.cpp msgid " squeezes the pheromone ball..." -msgstr "はフェロモンボールを押しつぶした..." +msgstr "はフェロモンボールを押しつぶしました..." #: src/iuse.cpp msgid "...but nothing happens." @@ -127142,32 +130267,32 @@ msgstr "イヤホンをつけて音楽を聴き始めました。" #: src/iuse.cpp msgid "some bass-heavy post-glam speed polka." -msgstr "[ベース・ヘヴィー・ポスト・グラム・スピード・ポルカ]" +msgstr "ベース・ヘヴィー・ポスト・グラム・スピード・ポルカ" #: src/iuse.cpp msgid "a sweet guitar solo!" -msgstr "[甘いギターソロ]" +msgstr "甘いギターソロ" #: src/iuse.cpp msgid "a funky bassline." -msgstr "[イカしたベースライン]" +msgstr "イカしたベースライン" #: src/iuse.cpp msgid "some amazing vocals." -msgstr "[素晴らしいボーカル]" +msgstr "素晴らしいボーカル" #: src/iuse.cpp msgid "some pumping bass." -msgstr "[最高にハイなベース]" +msgstr "最高にハイなベース" #: src/iuse.cpp msgid "dramatic classical music." -msgstr "[感動的なクラシック]" +msgstr "感動的なクラシック" #: src/iuse.cpp #, c-format msgid "You listen to %s" -msgstr "%sに耳を傾けた。" +msgstr "[%s]に耳を傾けました。" #: src/iuse.cpp msgid "The mp3 player turns off." @@ -127193,8 +130318,10 @@ msgid "You cannot use the %1$s with another of it's kind." msgstr "%1$sと同種のアイテムを同時に使用することはできません。" #: src/iuse.cpp -msgid "You unfold solar array from the pack and plug it in." -msgstr "ソーラーパネルを展開して接続しました。" +msgid "" +"You unfold solar array from the pack. You still need to connect it with a " +"cable." +msgstr "ソーラーパネルを展開して接続しました。使用するにはケーブルを接続する必要があります。" #: src/iuse.cpp msgid "You fold your portable solar array into the pack." @@ -127225,7 +130352,7 @@ msgstr "%sの機能を有効化しました。" #: src/iuse.cpp src/player.cpp msgid "You're illiterate!" -msgstr "字が読めない!" +msgstr "字が読めません!" #: src/iuse.cpp msgid "What do you want to play?" @@ -127258,7 +130385,7 @@ msgstr "しばらくの間、%sをプレイしました。" #: src/iuse.cpp msgid "It's waterproof, but oxygen maybe?" -msgstr "これは防水ですが、あなたの呼吸はどうするの?" +msgstr "これは防水ですが、あなたの呼吸はどうするのですか?" #: src/iuse.cpp msgid "*Your* batteries are dead." @@ -127347,10 +130474,6 @@ msgstr "%d枚の裂けた木材が生産されました。" msgid "You waste a lot of the wood." msgstr "多くの木材を無駄にしました。" -#: src/iuse.cpp src/iuse_actor.cpp -msgid "Cut up what?" -msgstr "何を切りますか?" - #: src/iuse.cpp msgid "Chop down which tree?" msgstr "どの木を切り倒しますか?" @@ -127361,7 +130484,7 @@ msgstr "これで自分自身を削ぎ落せるほど情け容赦のない性格 #: src/iuse.cpp msgid "You can't chop down that." -msgstr "それは切り倒せない。" +msgstr "それは切り倒せません。" #: src/iuse.cpp msgid "Chop which tree trunk?" @@ -127369,7 +130492,7 @@ msgstr "どの木を切り倒しますか?" #: src/iuse.cpp msgid "You can't chop that." -msgstr "それは切り倒せない。" +msgstr "それは切り倒せません。" #: src/iuse.cpp msgid "You need welding goggles to do that." @@ -127544,20 +130667,20 @@ msgstr "ハエが周囲で騒音を発しています。" #: src/iuse.cpp msgid "Giant flies appear!" -msgstr "巨大ハエが現れた!" +msgstr "巨大ハエが現れました!" #: src/iuse.cpp msgid "Giant bees appear!" -msgstr "巨大ハチが現れた!" +msgstr "巨大ハチが現れました!" #: src/iuse.cpp msgid "Giant wasps appear!" -msgstr "巨大スズメバチが現れた!" +msgstr "巨大スズメバチが現れました!" #: src/iuse.cpp #, c-format msgid "The %s glows brightly!" -msgstr "%sは光り輝いた!" +msgstr "%sが光り輝きました!" #: src/iuse.cpp msgid "Horrible gases are emitted!" @@ -127649,7 +130772,7 @@ msgstr "温められる食料を持っていません。" #: src/iuse.cpp #, c-format msgid "%s is best served cold. Heat beyond defrosting?" -msgstr "%sは冷やして食べるのが一番です。温めて解凍しますか?" +msgstr "%sは冷やして食べるのが一番です。このまま温かくなるまで解凍を続けますか?" #: src/iuse.cpp msgid "You defrost the food." @@ -127817,7 +130940,7 @@ msgstr "修復する銃火器を選択" #: src/iuse.cpp msgid "That isn't a firearm!" -msgstr "それは銃火器ではない!" +msgstr "それは銃火器ではありません!" #: src/iuse.cpp #, c-format @@ -127921,7 +131044,7 @@ msgstr "範囲内に敵対するロボットが存在しません。" #: src/iuse.cpp #, c-format msgid "You start reprogramming the %s into an ally." -msgstr "%sの友好判断プログラムの再プログラミングを開始しました。" +msgstr "%sの友好判断プログラムの上書きを開始しました。" #: src/iuse.cpp #, c-format @@ -128017,7 +131140,7 @@ msgstr "写真[%d]" #: src/iuse.cpp msgid "No photos on device" -msgstr "機器に写真が入っていない" +msgstr "機器に写真が入っていません" #: src/iuse.cpp msgid "Turn music off" @@ -128030,7 +131153,7 @@ msgstr "音楽を再生する[%d]" #: src/iuse.cpp msgid "No music on device" -msgstr "機器に音楽が入っていない" +msgstr "機器に音楽が入っていません" #: src/iuse.cpp #, c-format @@ -128047,7 +131170,7 @@ msgstr "モンスターコレクション" #: src/iuse.cpp msgid "Collection of monsters is empty" -msgstr "モンスターを1匹も記録していない" +msgstr "モンスターを1匹も記録していません" #: src/iuse.cpp msgid "Download data from memory card" @@ -128168,7 +131291,7 @@ msgstr "メモリーカードに写真をアップロードする" #: src/iuse.cpp msgid "No photos in memory" -msgstr "メモリーに写真が入っていない" +msgstr "写真が入っていません" #: src/iuse.cpp msgid "You decide not to flash yourself." @@ -128467,7 +131590,7 @@ msgstr "画面上には卑猥なジョークが表示されています。奇妙 #. ~ Single-spaced & lowercase are intentional, conveying hurried speech-KA101 #: src/iuse.cpp msgid "Are you sure?! the multi-cooker wants to poison your food!" -msgstr "本当ですか?!何と多機能調理機は食事に毒を入れたがっています!" +msgstr "何だって!?多機能調理機は食事に毒を入れたがっています!" #: src/iuse.cpp msgid "" @@ -128494,7 +131617,7 @@ msgstr "チーン!" #: src/iuse.cpp msgid "You cannot read, and don't understand the screen or the buttons!" -msgstr "画面やボタンの文字が読めず、意味を理解できない!" +msgstr "画面やボタンの文字が読めず、意味を理解できません!" #: src/iuse.cpp msgid "Welcome to the RobotChef3000. Choose option:" @@ -128522,7 +131645,7 @@ msgstr "既に多機能調理機は改良されています。" #: src/iuse.cpp msgid "Multi-cooker unable to upgrade" -msgstr "多機能調理機は改良できません。" +msgstr "多機能調理機を改良できません。" #: src/iuse.cpp msgid "Take out dish" @@ -128585,14 +131708,26 @@ msgid "" " but best to stop messing with it." msgstr "力任せにいじって壊してしまうところでした!幸運にも故障は免れました。下手にいじるのはやめましょう。" -#: src/iuse.cpp -msgid "Attach cable to vehicle where?" -msgstr "どの車両にケーブルを繋ぎますか?" - #: src/iuse.cpp msgid "Using cable:" msgstr "ケーブルメニュー: " +#: src/iuse.cpp +msgid "Attach cable to vehicle" +msgstr "ケーブルを車両に接続する" + +#: src/iuse.cpp +msgid "Attach cable to self" +msgstr "ケーブルを自分に接続する" + +#: src/iuse.cpp +msgid "Attach cable to solar pack" +msgstr "ケーブルをソーラーパネルに接続する" + +#: src/iuse.cpp +msgid "Attach cable to vehicle where?" +msgstr "どの車両にケーブルを繋ぎますか?" + #: src/iuse.cpp msgid "Attach loose end of the cable" msgstr "ケーブルのもう一方を繋ぐ" @@ -128666,7 +131801,7 @@ msgstr "%sをどこに置きますか?" #: src/iuse.cpp #, c-format msgid "You cannot place the %s there!" -msgstr "そこには%sを置けない!" +msgstr "そこには%sを置けません!" #: src/iuse.cpp #, c-format @@ -128773,6 +131908,105 @@ msgid "" "work." msgstr "単にマグネシウムを摂取しただけでは効果はありません。睡眠不足を解消するには眠る必要があります。" +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "%sを弾き飛ばしました。" + +#: src/iuse.cpp +msgid "Heads!" +msgstr "表!" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "裏!" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "確実です。" + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "明らかにそうです。" + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "間違いありません。" + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "はい、確かです。" + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "見込みがあります。" + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "イエスだと考えられます。" + +#: src/iuse.cpp +msgid "Most likely." +msgstr "多分そうです。" + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "良い見通しです。" + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "良い兆候です。" + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "よく分かりません、もう一度試してください。" + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "また後で尋ねてください。" + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "今は答えを聞かない方が良いでしょう。" + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "今のところ分かりません。" + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "精神を集中してもう一度聞いてください。" + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "当てにしては駄目です。" + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "ノーと言えます。" + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "情報源によればノーです。" + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "悪い見通しです。" + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "非常に怪しいです。" + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "「%s」と尋ねて、マジック8ボールを振りました。" + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "%sは「%s」と答えました。" + #: src/iuse_actor.cpp #, c-format msgid "The %s is empty!" @@ -131402,6 +134636,210 @@ msgstr "備品室を開く" msgid "Open Evidence Locker" msgstr "ロッカー(証拠品)を開く" +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "必要%s: " + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "スキル" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "必要: " + +#: src/martialarts.cpp +msgid "activate" +msgstr "発動" + +#: src/martialarts.cpp +msgid "be used" +msgstr "使用可能" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "* %s(武器装備素手)" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "* 限定 %s (素手)" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "* 限定 %s(武器装備)" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "能力強化: %s" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "効果" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "* 蓄積(最大%d回)" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "* 継続(%d %s)" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "* +%s回避ボーナス(%s)" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] "(蓄積毎に加算)" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "* %s回避ペナルティ(%s)" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "* +%sブロックボーナス(%s)" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "* %sブロックペナルティ(%s)" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "* 攻撃が完全に無音化" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "タイプ: %s" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "防御" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "攻撃" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "ボーナス: " + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "* 会心攻撃時のみ発動" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "* カウンター攻撃 (回避時)" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "* カウンター攻撃 (ブロック時)" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "* 行動コスト相殺 (攻撃失敗時)" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "* 掴み状態解除(掴み攻撃を受けた時)" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "* 前方に横薙ぎ攻撃" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "* 隣接した敵への範囲攻撃" + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind " +"it" +msgstr "* 標的とその後部の敵 への同時攻撃" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "* 吹き飛ばし攻撃(%d %s)" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "タイル" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "* 転倒 攻撃(%d %s)" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "* 気絶 攻撃(%d %s)" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "* 武装解除攻撃" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "このスタイルを選択すると、武器を装備した状態でも必ず素手で攻撃します" + +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" +msgstr "
%s強化:
" + +#: src/martialarts.cpp +msgid "Passive" +msgstr "常時" + +#: src/martialarts.cpp +msgid "Hit" +msgstr "命中" + +#: src/martialarts.cpp +msgid "Get hit" +msgstr "ダメージ時" + +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "
技:
%s " + +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "武器:" + +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr " スタイル: %s " + #: src/material.cpp msgid "damages" msgstr "傷んだ" @@ -131811,1134 +135249,409 @@ msgstr "は%sを切り裂いて" #: src/melee.cpp #, c-format -msgid " slices %s" -msgstr "の横斬攻撃が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid "You clobber %s" -msgstr "強打が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid "You smash %s" -msgstr "猛打が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid "You thrash %s" -msgstr "激打が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid "You batter %s" -msgstr "乱打が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid "You hit %s" -msgstr "攻撃が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid "You whack %s" -msgstr "殴打が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid " clobbers %s" -msgstr "の強打が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid " smashes %s" -msgstr "の猛打が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid " thrashes %s" -msgstr "の激打が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid " batters %s" -msgstr "の乱打が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid " hits %s" -msgstr "の攻撃は%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid " whacks %s" -msgstr "の殴打が%sに命中しました。" - -#: src/melee.cpp -#, c-format -msgid "The bugs attack %s" -msgstr "バグ攻撃は%sに" - -#. ~ NPC hits something but does no damage -#: src/melee.cpp -#, c-format -msgid "%s but does no damage." -msgstr "%sダメージを与えられなかった。" - -#. ~ someone hits something but do no damage -#: src/melee.cpp -#, c-format -msgid "%s but do no damage." -msgstr "%sダメージを与えられなかった。" - -#. ~ NPC hits something (critical) -#: src/melee.cpp -#, c-format -msgid "%s. Critical!" -msgstr "%s。会心の一撃!" - -#. ~ someone hits something for %d damage (critical) -#: src/melee.cpp -#, c-format -msgid "%s for %d damage. Critical!" -msgstr "%s%dのダメージを与えました。会心の一撃!" - -#. ~ NPC hits something -#: src/melee.cpp -#, c-format -msgid "%s." -msgstr "%s。" - -#. ~ someone hits something for %d damage -#: src/melee.cpp -#, c-format -msgid "%s for %d damage." -msgstr "%s%dのダメージを与えました。" - -#: src/melee.cpp -#, c-format -msgid "You lunge for the %s, but miss!" -msgstr "%sに向かって突進しましたが、失敗しました!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force!" -msgstr "%sを掴んで力の限り引っ張りました!" - -#: src/melee.cpp -#, c-format -msgid "You forcefully take %s from %s!" -msgstr "強引に%sから%sを奪いました!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but it drops nearby!" -msgstr "%sを掴んで力の限り引っ張り、近くに落としました!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but in vain!" -msgstr "%sを掴んで力の限り引っ張りましたが、無駄でした!" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might forcing their %s to drop down nearby!" -msgstr "%sを力いっぱい叩き、%s を近くに落としました!" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might but %s remains in their hands!" -msgstr "%sを力いっぱい叩きましたが、%sを落とせませんでした!" - -#: src/melee.cpp src/npctalk.cpp -#, c-format -msgid "%s is hostile!" -msgstr "%sは敵対的です!" - -#: src/melee.cpp -#, c-format -msgid "You sneakily steal %1$s from %2$s!" -msgstr "%1$sを%2$sからこっそりと盗み取りました!" - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s, but did not attract attention." -msgstr "%1$sを%2$sから盗み取るのに失敗しましたが、気づかれずに済みました。" - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s." -msgstr "%1$sを%2$sから盗み出せませんでした。" - -#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a -#. whack! x 12" -#: src/messages.cpp -#, c-format -msgid "%s x %d" -msgstr "%s x %d" - -#: src/messages.cpp -msgctxt "message type" -msgid "good" -msgstr "良" - -#: src/messages.cpp -msgctxt "message type" -msgid "bad" -msgstr "悪" - -#: src/messages.cpp -msgctxt "message type" -msgid "mixed" -msgstr "混合" - -#: src/messages.cpp -msgctxt "message type" -msgid "warning" -msgstr "警告" - -#: src/messages.cpp -msgctxt "message type" -msgid "info" -msgstr "情報" - -#: src/messages.cpp -msgctxt "message type" -msgid "neutral" -msgstr "中立" - -#: src/messages.cpp -msgctxt "message type" -msgid "debug" -msgstr "デバッグ" - -#: src/messages.cpp -#, c-format -msgid "< Press %s to filter, %s to reset >" -msgstr "< %sでフィルター有効、%s でリセット >" - -#: src/messages.cpp -#, c-format -msgid "" -"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" -"Examples:\n" -" good:mutation\n" -" :you pick up: 1\n" -" crash!\n" -msgstr "" -"ログ分類:文章 の形式で記述 フィルタに使用できるログ分類: %s\n" -"記述例:\n" -" 良:変異\n" -" :拾得: 1個の\n" -" ガチャン!\n" - -#. ~ the 2nd %s is a type name, this is used to format a list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s, " -msgstr "%s、" - -#. ~ the 2nd %s is a type name, this is used to format the last type name in a -#. list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s." -msgstr "%s。" - -#: src/mission_companion.cpp -msgid "Outpost Missions" -msgstr "開拓地任務" - -#: src/mission_companion.cpp -msgid "Base Missions" -msgstr "拠点任務" - -#: src/mission_companion.cpp -msgid "Junk Shop Missions" -msgstr "ジャンク屋任務" - -#: src/mission_companion.cpp -msgid "Agricultural Missions" -msgstr "農業任務" - -#: src/mission_companion.cpp -msgid "Construction Missions" -msgstr "建設任務" - -#: src/mission_companion.cpp -msgid "Free Merchant Missions" -msgstr "自由商人任務" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." -msgstr "" -"利益: $25-$500\n" -"危険: 低\n" -"時間: 10時間\n" -"\n" -"周辺の原野及び孤立した建造物を巡回する部隊に仲間を派遣します。単独の敵を相手にした比較的安全な戦闘は、基礎的なサバイバルスキルを身に付ける良い機会になります。" - -#: src/mission_companion.cpp -msgid "Assign Scavenging Patrol" -msgstr "スカベンジャー部隊の巡回に割り当てる" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Patrol Roster:\n" -msgstr "" -"利益: $25-$500\n" -"危険: 低\n" -"時間: 10時間\n" -"\n" -"巡回部隊名簿: \n" - -#: src/mission_companion.cpp -msgid " hours] \n" -msgstr " 時間] \n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?" -msgstr "" -"\n" -"\n" -"仲間をパーティーに呼び戻しますか?" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Patrol" -msgstr "スカベンジャー部隊の巡回から呼び戻す" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." -msgstr "" -"利益: $200-$1000\n" -"危険: 中\n" -"時間: 10時間\n" -"\n" -"スカベンジャー部隊による強襲作戦です。かつての人口密集地に突入し、貴重なアイテムを可能な限り掻き集め、敵に包囲される前に素早く離脱します。戦闘は避けられないでしょう。かつ、仲間からの支援があるとは限りません。報酬は高額で、仲間がアイテムを持ち帰る可能性もあります。" - -#: src/mission_companion.cpp -msgid "Assign Scavenging Raid" -msgstr "スカベンジャー部隊の大規模探索に割り当てる" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Raid Roster:\n" -msgstr "" -"利益: $200-$1000\n" -"危険: 中\n" -"時間: 10時間\n" -"\n" -"強襲部隊名簿: \n" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Raid" -msgstr "スカベンジャー部隊の大規模探索から呼び戻す" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." -msgstr "" -"利益: $8/時間\n" -"危険: 極低\n" -"時間: 1時間~\n" -"\n" -"仲間を単純作業労働に割り当てます。基礎的なスキルを安全に身に付けさせ、拠点における評判を築きます。" - -#: src/mission_companion.cpp -msgid "Assign Ally to Menial Labor" -msgstr "仲間を単純労働に割り当てる" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"利益: $8/時間\n" -"危険: 極低\n" -"時間: 1時間~\n" -"\n" -"単純労働者名簿: \n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Menial Labor" -msgstr "仲間を単純労働から呼び戻す" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." -msgstr "" -"利益: $12/時間\n" -"危険: 極低\n" -"時間: 1時間~\n" -"\n" -"単純労働よりは高いスキルを要求され、やや給料の良い大工仕事です。戦闘に参加するようなことはありませんが間に合わせの建物に登って仕事をする以上、事故が起こることもあります。" - -#: src/mission_companion.cpp -msgid "Assign Ally to Carpentry Work" -msgstr "仲間を大工仕事に割り当てる" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"利益:$12/1時間\n" -"危険:最小\n" -"時間:1時間~\n" -"\n" -"建設労働者名簿:\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Carpentry Work" -msgstr "仲間を大工仕事から呼び戻す" - -#: src/mission_companion.cpp -msgid "Upgrade Camp" -msgstr "キャンプ地の改良" - -#: src/mission_companion.cpp -msgid "Gather Materials" -msgstr "資材の収集" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" -" \n" -"Effects:\n" -"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" -" \n" -"Must have enjoyability >= -6\n" -"Perishable food liquidated at penalty depending on upgrades and rot time:\n" -"> Rotten: 0%%\n" -"> Rots in < 2 days: 60%%\n" -"> Rots in < 5 days: 80%%\n" -" \n" -"Total faction food stock: %d kcal or %d day's rations" -msgstr "" -"メモ:\n" -"仲間に配る食料を備蓄します。テント内の一番奥、キャンプ地管理人と壁の間の1タイルに配りたい食料を置いておきましょう。\n" -" \n" -"効果:\n" -"> 派閥の食料ステータスが増加します\n" -" \n" -"満喫-6以上の食料が必要です\n" -"生鮮食料は、改良の進行と腐敗までの時間によって養分減少のペナルティが課されます:\n" -"> 腐敗: 養分の0%%\n" -"> 2日以内に腐敗: 養分の60%%\n" -"> 5日以内に腐敗: 養分の80%%\n" -" \n" -"備蓄量: %d kcal (%d日分)" - -#: src/mission_companion.cpp -msgid "Distribute Food" -msgstr "食料の配給" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" -" \n" -"Effects:\n" -"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" -"> Items sitting on any type of furniture will not be moved.\n" -"> Items that are not listed in one of the categories are defaulted to the tools group." -msgstr "" -"メモ:\n" -"[単純労働]の任務で移動するアイテムの置き場所をリセットします。\n" -" \n" -"効果:\n" -"> 割り当て可能なポイント: 食料、配給用食料、種、武器、衣類、CBM、道具類、木材、ごみ、本、薬品、弾薬\n" -"> 家具の上に置かれているアイテムは移動されません。\n" -"> 上記の分類以外のアイテムは全て道具類に分類されます。" - -#: src/mission_companion.cpp -msgid "Reset Sort Points" -msgstr "収拾地点のリセット" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to gather light brush and heavy sticks.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -"> heavy sticks\n" -"> withered plants\n" -"> splintered wood\n" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: %d/3\n" -msgstr "" -"メモ:\n" -"仲間を派遣して、枯れ草や重棒などを集めてきてもらいます。\n" -" \n" -"適用スキル: サバイバル\n" -"難易度: なし \n" -"拾得予定:\n" -"> 重棒\n" -"> 枯れ草\n" -"> 裂けた木材\n" -" \n" -"危険: 超低\n" -"時間: 3時間、連続作業可能\n" -"人員: %d/3\n" - -#: src/mission_companion.cpp -msgid "Collect Firewood" -msgstr "焚き木の収集" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to do low level chores and sort supplies.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" -"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours\n" -"Positions: %d/1\n" -msgstr "" -"メモ:\n" -"仲間にキャンプ地内の消耗品類を整頓する簡単な雑用を頼みます。\n" -" \n" -"適用スキル: 製作\n" -"難易度: なし \n" -"効果:\n" -"> キャンプ地の地面に落ちているアイテムが、種類別に分類され、テント前の4つの箱に置かれます。\n" -"デフォルト設定で北の箱から順に衣類、食品、本とCBM、道具が入ります。木材はテント脇の南側の地面、ゴミは北側の地面に置かれます。\n" -" \n" -"危険: なし\n" -"時間: 3時間\n" -"人員: %d/1\n" - -#: src/mission_companion.cpp -msgid "Menial Labor" -msgstr "単純労働" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours \n" -"Positions: %d/1\n" -msgstr "" -"メモ:\n" -"拠点は更なる拡張が可能なほどに大きくなりました。拡張は新たな機会を得るチャンスですが、資材を大量に必要とし、時間もかかります。各キャンプ地は周囲8方向にしか拡張できないので、何の施設にするか慎重に選びましょう。\n" -" \n" -"適用スキル: 製作\n" -"難易度: なし \n" -"効果:\n" -"> 拡張地点に建設する施設を選びましょう。食料は仲間の任務に不可欠であり、木材は主な建設資材であることから、農場や材木置き場を選ぶのが賢明と言えます。\n" -" \n" -"危険: なし\n" -"時間: 3時間 \n" -"人員: %d/1\n" - -#: src/mission_companion.cpp -msgid "Expand Base" -msgstr "拠点の拡張" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to a nearby forest to cut logs.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: 1 \n" -"Effects:\n" -"> 50%% of trees/trunks at the forest position will be cut down.\n" -"> 50%% of total material will be brought back.\n" -"> Repeatable with diminishing returns.\n" -" \n" -"Risk: Low-Medium\n" -"Time: 6 Hour Base + Travel Time + Cutting Time\n" -"Positions: %d/1\n" -msgstr "" -"メモ:\n" -"近隣の森に仲間を派遣し、丸太を切ってきてもらいます。\n" -" \n" -"適用スキル: 製作\n" -"難易度: 1 \n" -"効果:\n" -"> 森林に生えている樹木/木の幹の50%%を伐採します。\n" -"> 伐採で得た素材の50%% を入手します。\n" -"> 連続で作業できますが、入手量は減少します。\n" -" \n" -"危険: 低 - 中\n" -"時間: 6時間 + 移動時間 + 作業時間\n" -"人員: %d/1\n" - -#: src/mission_companion.cpp -msgid "Cut Logs" -msgstr "丸太の切り出し" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Good for setting up resupply or contingency points.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward.\n" -" \n" -"Risk: Medium\n" -"Time: 6 Hour Construction + Travel\n" -"Positions: %d/1\n" -msgstr "" -"メモ:\n" -"離れた場所に仲間を派遣し、即席シェルターの建設と、シェルターへの物資の運搬を頼みます。\n" -" \n" -"適用スキル: サバイバル\n" -"難易度: 3\n" -"効果:\n" -"> シェルターは移動中や緊急時の物資補給地点に適しています。\n" -"> シェルターは無人のため、置いた物資が盗まれる可能性があります。\n" -"> 物資の重量によって作業時間が変動します。\n" -" \n" -"危険: 中\n" -"時間: 6時間(建設作業) + 移動時間\n" -"人員: %d/1\n" - -#: src/mission_companion.cpp -msgid "Setup Hide Site" -msgstr "簡易シェルターの設置" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Push gear out to a hide site or bring gear back from one.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 1\n" -"Effects:\n" -"> Good for returning equipment you left in the hide site shelter.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward or back.\n" -" \n" -"Risk: Medium\n" -"Time: 1 Hour Base + Travel\n" -"Positions: %d/1\n" -msgstr "" -"メモ:\n" -"簡易シェルター内の物資を他のシェルターに移すか、拠点に持ち帰ります。\n" -" \n" -"適用スキル: サバイバル\n" -"難易度: 1\n" -"効果:\n" -"> 簡易シェルターに残した物資を改修するのに便利です。\n" -"> シェルターは無人のため、置いた荷物が盗まれる可能性があります。\n" -"> 物資の重量によって作業時間が変動します。\n" -" \n" -"危険: 中\n" -"時間: 1時間 + 移動時間\n" -"人員: %d/1\n" - -#: src/mission_companion.cpp -msgid "Relay Hide Site" -msgstr "簡易シェルターの物資移動" - -#: src/mission_companion.cpp -msgid "Construct Map Fortifications" -msgstr "要塞の建設" - -#: src/mission_companion.cpp -msgid "Construct Spiked Trench" -msgstr "塹壕(スパイク)の建設" - -#: src/mission_companion.cpp -msgid "Recruit Companions" -msgstr "仲間を募る" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Select checkpoints to customize path.\n" -"> Reveals terrain around the path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" -"メモ:\n" -"大いなる未知の世界に仲間を派遣します。戦闘を避けるには高い生存スキルが必要ですが、ある程度の戦闘発生はやむを得ないと考えておきましょう。\n" -" \n" -"適用スキル: サバイバル\n" -"難易度: 3\n" -"効果:\n" -"> 指定した地点までの経路を偵察します。\n" -"> 経路周辺の地形が全体マップに表示されます。\n" -"> 簡易シェルターを設置することで探索範囲を拡大できます。\n" -" \n" -"危険: 高\n" -"時間: 移動時間\n" -"人員: %d/3\n" - -#: src/mission_companion.cpp -msgid "Scout Mission" -msgstr "偵察任務" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 4\n" -"Effects:\n" -"> Pulls creatures encountered into combat instead of fleeing.\n" -"> Select checkpoints to customize path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: Very High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" -"メモ:\n" -"仲間を派遣して荒野の大掃除をしてもらいます。派遣した仲間は敵対的なモンスターを殺し、受けた傷が大きすぎるか戦力差が開きすぎたときに帰還します。\n" -" \n" -"適用スキル: サバイバル\n" -"難易度: 4\n" -"効果:\n" -"> モンスターと遭遇した場合、逃げずに戦闘します。\n" -"> 指定した地点までの経路を偵察します。\n" -"> 簡易シェルターを設置することで探索範囲を拡大できます。\n" -" \n" -"危険: 極高\n" -"時間: 移動時間\n" -"人員: %d/3\n" - -#: src/mission_companion.cpp -msgid "Combat Patrol" -msgstr "戦闘派遣" - -#: src/mission_companion.cpp -msgid " Expansion Upgrade" -msgstr "拡張施設の改良" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Have a companion attempt to completely dissemble a vehicle into components.\n" -" \n" -"Skill used: mechanics\n" -"Difficulty: 2 \n" -"Effects:\n" -"> Removed parts placed on the furniture in the garage.\n" -"> Skill plays a huge role to determine what is salvaged.\n" -" \n" -"Risk: None\n" -"Time: Skill Based \n" -msgstr "" -"メモ:\n" -"仲間に頼んで、車両を完全に分解して部品にしてもらいます。\n" -" \n" -"適用スキル: 機械整備\n" -"難易度: 2 \n" -"効果:\n" -"> 取り外した部品は車両修理工場内の家具の上に置かれます。\n" -"> スキルの高さによって回収できるアイテムは大きく異なります。\n" -" \n" -"危険: なし\n" -"時間: スキル依存 \n" +msgid " slices %s" +msgstr "の横斬攻撃が%sに命中しました。" -#: src/mission_companion.cpp -msgid " Chop Shop" -msgstr "車両解体" +#: src/melee.cpp +#, c-format +msgid "You clobber %s" +msgstr "強打が%sに命中しました。" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plow any spaces that have reverted to dirt or grass.\n" -" \n" -msgstr "" -"メモ:\n" -"荒廃してしまった草地や地面を全て耕します。\n" -" \n" +#: src/melee.cpp +#, c-format +msgid "You smash %s" +msgstr "猛打が%sに命中しました。" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Restores only the plots created in the last expansion upgrade.\n" -"> Does not damage existing crops.\n" -" \n" -"Risk: None\n" -"Time: 5 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"適用スキル: 製作\n" -"難易度: なし \n" -"効果:\n" -"> 直近の拡張や改良で作成された区画のタイルのみ耕します。\n" -"> 既存の作物は損傷しません。\n" -" \n" -"危険: なし\n" -"時間: 5分 / タイル \n" -"人員: 0/1 \n" +#: src/melee.cpp +#, c-format +msgid "You thrash %s" +msgstr "激打が%sに命中しました。" -#: src/mission_companion.cpp -msgid " Plow Fields" -msgstr "土地の耕作" +#: src/melee.cpp +#, c-format +msgid "You batter %s" +msgstr "乱打が%sに命中しました。" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plant designated seeds in the spaces that have already been tilled.\n" -" \n" -msgstr "" -"メモ:\n" -"既に耕されている場所に指定された種を植えます。\n" -" \n" +#: src/melee.cpp +#, c-format +msgid "You hit %s" +msgstr "攻撃が%sに命中しました。" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose which seed type or all of your seeds.\n" -"> Stops when out of seeds or planting locations.\n" -"> Will plant in ALL dirt mounds in the expansion.\n" -" \n" -"Risk: None\n" -"Time: 1 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"適用スキル: サバイバル\n" -"難易度: なし \n" -"効果:\n" -"> 種の種類を選択してください。\n" -"> 種か植え付け場所がなくなったら仕事を終えます。\n" -"> 拡張された全ての植え付け可能な地面に種を植えます。\n" -" \n" -"危険: なし\n" -"時間: 1分 / 区画 \n" -"人員: 0/1 \n" +#: src/melee.cpp +#, c-format +msgid "You whack %s" +msgstr "殴打が%sに命中しました。" -#: src/mission_companion.cpp -msgid " Plant Fields" -msgstr "畑の植え付け" +#: src/melee.cpp +#, c-format +msgid " clobbers %s" +msgstr "の強打が%sに命中しました。" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Harvest any plants that are ripe and bring the produce back.\n" -" \n" -msgstr "" -"メモ:\n" -"実った植物を収穫して集めます。\n" -" \n" +#: src/melee.cpp +#, c-format +msgid " smashes %s" +msgstr "の猛打が%sに命中しました。" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Will dump all harvesting products onto your location.\n" -" \n" -"Risk: None\n" -"Time: 3 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"適用スキル: サバイバル\n" -"難易度: なし \n" -"効果:\n" -"> 収穫した全てのアイテムを渡します。\n" -" \n" -"危険: なし\n" -"時間: 3分 / 区画 \n" -"人員: 0/1 \n" +#: src/melee.cpp +#, c-format +msgid " thrashes %s" +msgstr "の激打が%sに命中しました。" -#: src/mission_companion.cpp -msgid " Harvest Fields" -msgstr "畑の収穫" +#: src/melee.cpp +#, c-format +msgid " batters %s" +msgstr "の乱打が%sに命中しました。" -#: src/mission_companion.cpp -msgid "Working to expand your camp!\n" -msgstr "キャンプ地拡張のために働いています!\n" +#: src/melee.cpp +#, c-format +msgid " hits %s" +msgstr "の攻撃は%sに命中しました。" -#: src/mission_companion.cpp -msgid " hours left] \n" -msgstr " 時間で完了] \n" +#: src/melee.cpp +#, c-format +msgid " whacks %s" +msgstr "の殴打が%sに命中しました。" -#: src/mission_companion.cpp -msgid " minutes left] \n" -msgstr " 分で完了] \n" +#: src/melee.cpp +#, c-format +msgid "The bugs attack %s" +msgstr "バグ攻撃は%sに" -#: src/mission_companion.cpp -msgid " [DONE]\n" -msgstr " [完了]\n" +#. ~ NPC hits something but does no damage +#: src/melee.cpp +#, c-format +msgid "%s but does no damage." +msgstr "%sダメージを与えられなかった。" -#: src/mission_companion.cpp -msgid "Recover Ally from Upgrading" -msgstr "仲間を改良作業から呼び戻す" +#. ~ someone hits something but do no damage +#: src/melee.cpp +#, c-format +msgid "%s but do no damage." +msgstr "%sダメージを与えられなかった。" -#: src/mission_companion.cpp -msgid "Working to upgrade your expansions!\n" -msgstr "キャンプ地改良のために働いています!\n" +#. ~ NPC hits something (critical) +#: src/melee.cpp +#, c-format +msgid "%s. Critical!" +msgstr "%s。会心の一撃!" -#: src/mission_companion.cpp -msgid " Expansion" -msgstr "拡張" +#. ~ someone hits something for %d damage (critical) +#: src/melee.cpp +#, c-format +msgid "%s for %d damage. Critical!" +msgstr "%s%dのダメージを与えました。会心の一撃!" -#: src/mission_companion.cpp -msgid "Recover Ally, " -msgstr "仲間を呼び戻す: " +#. ~ NPC hits something +#: src/melee.cpp +#, c-format +msgid "%s." +msgstr "%s。" -#: src/mission_companion.cpp -msgid "Working at the chop shop...\n" -msgstr "車両解体の仕事をしています...\n" +#. ~ someone hits something for %d damage +#: src/melee.cpp +#, c-format +msgid "%s for %d damage." +msgstr "%s%dのダメージを与えました。" -#: src/mission_companion.cpp -msgid "/120 hours] \n" -msgstr "/120 時間] \n" +#: src/melee.cpp +#, c-format +msgid "You lunge for the %s, but miss!" +msgstr "%sに向かって突進しましたが、失敗しました!" -#: src/mission_companion.cpp -msgid " (Finish) Chop Shop" -msgstr "(完了) 車両解体" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force!" +msgstr "%sを掴んで力の限り引っ張りました!" -#: src/mission_companion.cpp -msgid "Working in your kitchen!\n" -msgstr "調理場で働いています!\n" +#: src/melee.cpp +#, c-format +msgid "You forcefully take %s from %s!" +msgstr "強引に%sから%sを奪いました!" -#: src/mission_companion.cpp -msgid " [ALMOST DONE]\n" -msgstr " [ほぼ完了]\n" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but it drops nearby!" +msgstr "%sを掴んで力の限り引っ張り、近くに落としました!" -#: src/mission_companion.cpp -msgid " (Finish) Cooking" -msgstr " (完了) 調理" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but in vain!" +msgstr "%sを掴んで力の限り引っ張りましたが、無駄でした!" -#: src/mission_companion.cpp -msgid "Working in your blacksmith shop!\n" -msgstr "鍛冶場で働いています!\n" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might forcing their %s to drop down nearby!" +msgstr "%sを力いっぱい叩き、%s を近くに落としました!" -#: src/mission_companion.cpp -msgid " (Finish) Smithing" -msgstr " (完了) 鍛冶" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might but %s remains in their hands!" +msgstr "%sを力いっぱい叩きましたが、%sを落とせませんでした!" -#: src/mission_companion.cpp -msgid "Working to plow your fields!\n" -msgstr "土地を耕しています!\n" +#: src/melee.cpp src/npctalk.cpp +#, c-format +msgid "%s is hostile!" +msgstr "%sは敵対的です!" -#: src/mission_companion.cpp -msgid "/~48 hours] \n" -msgstr "/~48 時間] \n" +#: src/melee.cpp +#, c-format +msgid "You sneakily steal %1$s from %2$s!" +msgstr "%1$sを%2$sからこっそりと盗み取りました!" -#: src/mission_companion.cpp -msgid " (Finish) Plow Fields" -msgstr " (完了) 土地の耕作" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s, but did not attract attention." +msgstr "%1$sを%2$sから盗み取るのに失敗しましたが、気づかれずに済みました。" -#: src/mission_companion.cpp -msgid "Working to plant your fields!\n" -msgstr "土地に作物を植えています!\n" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s." +msgstr "%1$sを%2$sから盗み出せませんでした。" -#: src/mission_companion.cpp -msgid "/4 hours] \n" -msgstr "/4 時間] \n" +#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a +#. whack! x 12" +#: src/messages.cpp +#, c-format +msgid "%s x %d" +msgstr "%s x %d" -#: src/mission_companion.cpp -msgid " (Finish) Plant Fields" -msgstr " (完了) 畑の植え付け" +#: src/messages.cpp +msgctxt "message type" +msgid "good" +msgstr "良" -#: src/mission_companion.cpp -msgid "Working to harvest your fields!\n" -msgstr "土地の作物を収穫しています!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "bad" +msgstr "悪" -#: src/mission_companion.cpp -msgid "/~10 hours] \n" -msgstr "/~10 時間] \n" +#: src/messages.cpp +msgctxt "message type" +msgid "mixed" +msgstr "混合" -#: src/mission_companion.cpp -msgid " (Finish) Harvest Fields" -msgstr "(完了) 畑の収穫" +#: src/messages.cpp +msgctxt "message type" +msgid "warning" +msgstr "警告" -#: src/mission_companion.cpp -msgid "Working on your farm!\n" -msgstr "農場で働いています!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "info" +msgstr "情報" -#: src/mission_companion.cpp -msgid " (Finish) Crafting" -msgstr " (完了) 製作" +#: src/messages.cpp +msgctxt "message type" +msgid "neutral" +msgstr "中立" -#: src/mission_companion.cpp -msgid "Busy crafting!\n" -msgstr "忙しそうに製作しています!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "debug" +msgstr "デバッグ" -#: src/mission_companion.cpp -msgid "Searching for materials to upgrade the camp.\n" -msgstr "キャンプ地改良のための資材を探しています。\n" +#: src/messages.cpp +#, c-format +msgid "< Press %s to filter, %s to reset >" +msgstr "< %sでフィルター有効、%s でリセット >" + +#: src/messages.cpp +#, c-format +msgid "" +"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" +"Examples:\n" +" good:mutation\n" +" :you pick up: 1\n" +" crash!\n" +msgstr "" +"ログ分類:文章 の形式で記述 フィルタに使用できるログ分類: %s\n" +"記述例:\n" +" 良:変異\n" +" :拾得: 1個の\n" +" ガチャン!\n" + +#. ~ the 2nd %s is a type name, this is used to format a list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s, " +msgstr "%s、" + +#. ~ the 2nd %s is a type name, this is used to format the last type name in a +#. list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s." +msgstr "%s。" #: src/mission_companion.cpp -msgid "/3 hours] \n" -msgstr "/3 時間] \n" +msgid "Outpost Missions" +msgstr "開拓地任務" #: src/mission_companion.cpp -msgid "Recover Ally from Gathering" -msgstr "仲間を資材の収集から呼び戻す" +msgid "Junk Shop Missions" +msgstr "ジャンク屋任務" #: src/mission_companion.cpp -msgid "Searching for firewood.\n" -msgstr "焚き木を探しています。\n" +msgid "Agricultural Missions" +msgstr "農業任務" #: src/mission_companion.cpp -msgid "Recover Firewood Gatherers" -msgstr "焚き木の収集から呼び戻す" +msgid "Construction Missions" +msgstr "建設任務" #: src/mission_companion.cpp -msgid "Performing menial labor...\n" -msgstr "単純作業をこなしています...\n" +msgid "Free Merchant Missions" +msgstr "自由商人任務" #: src/mission_companion.cpp msgid "" -"\n" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" " \n" -"Do you wish to bring your allies back into your party?\n" +"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." msgstr "" +"収益: $25-$500\n" +"危険: 低\n" +"時間: 10時間\n" "\n" -" \n" -"仲間をパーティーに呼び戻しますか?\n" +"周辺の原野及び孤立した建造物を巡回する部隊に仲間を派遣します。単独の敵を相手にした比較的安全な戦闘は、基礎的なサバイバルスキルを身に付ける良い機会になります。" #: src/mission_companion.cpp -msgid "Recover Menial Laborer" -msgstr "単純作業から呼び戻す" +msgid "Assign Scavenging Patrol" +msgstr "スカベンジャー部隊の巡回に割り当てる" #: src/mission_companion.cpp -msgid "Surveying for expansion...\n" -msgstr "拡張に向けた調査をしています...\n" +msgid "" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" +" \n" +"Patrol Roster:\n" +msgstr "" +"収益: $25-$500\n" +"危険: 低\n" +"時間: 10時間\n" +"\n" +"巡回部隊名簿: \n" #: src/mission_companion.cpp -msgid "Recover Surveyor" -msgstr "調査から呼び戻す" +msgid " hours] \n" +msgstr " 時間] \n" #: src/mission_companion.cpp -msgid "Cutting logs in the woods...\n" -msgstr "森の中で丸太を切っています...\n" +msgid "Retrieve Scavenging Patrol" +msgstr "スカベンジャー部隊の巡回から呼び戻す" #: src/mission_companion.cpp -msgid "Recover Log Cutter" -msgstr "丸太の切り出しから呼び戻す" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." +msgstr "" +"収益: $200-$1000\n" +"危険: 中\n" +"時間: 10時間\n" +"\n" +"スカベンジャー部隊による強襲作戦です。かつての人口密集地に突入し、貴重なアイテムを可能な限り掻き集め、敵に包囲される前に素早く離脱します。戦闘は避けられないでしょう。かつ、仲間からの支援があるとは限りません。報酬は高額で、仲間がアイテムを持ち帰る可能性もあります。" #: src/mission_companion.cpp -msgid "Setting up a hide site...\n" -msgstr "簡易シェルターを設置しています...\n" +msgid "Assign Scavenging Raid" +msgstr "スカベンジャー部隊の大規模探索に割り当てる" #: src/mission_companion.cpp -msgid "Recover Hide Setup" -msgstr "簡易シェルターの設置から呼び戻す" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Raid Roster:\n" +msgstr "" +"収益: $200-$1000\n" +"危険: 中\n" +"時間: 10時間\n" +"\n" +"強襲部隊名簿: \n" #: src/mission_companion.cpp -msgid "Constructing fortifications...\n" -msgstr "要塞を建設しています...\n" +msgid "Retrieve Scavenging Raid" +msgstr "スカベンジャー部隊の大規模探索から呼び戻す" #: src/mission_companion.cpp -msgid "Finish Map Fortifications" -msgstr "要塞の建設から呼び戻す" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." +msgstr "" +"利益: $8/時間\n" +"危険: 極低\n" +"時間: 1時間~\n" +"\n" +"仲間を単純作業労働に割り当てます。基礎的なスキルを安全に身に付けさせ、拠点における評判を高めます。報酬はあまり期待しない方が良さそうです。" #: src/mission_companion.cpp -msgid "Searching for recruits.\n" -msgstr "新たな仲間を探しています。\n" +msgid "Assign Ally to Menial Labor" +msgstr "仲間を単純労働に割り当てる" #: src/mission_companion.cpp -msgid "Recover Recruiter" -msgstr "仲間探しから呼び戻す" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" +msgstr "" +"収益: $8/時間\n" +"危険: 極低\n" +"時間: 1時間~\n" +"\n" +"単純労働者名簿: \n" #: src/mission_companion.cpp -msgid "Scouting the region.\n" -msgstr "周囲を偵察しています。\n" +msgid "Recover Ally from Menial Labor" +msgstr "仲間を単純労働から呼び戻す" #: src/mission_companion.cpp -msgid "Recover Scout" -msgstr "偵察から呼び戻す" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." +msgstr "" +"収益: $12/時間\n" +"危険: 極低\n" +"時間: 1時間~\n" +"\n" +"単純労働よりは高いスキルを要求され、やや給料の良い大工仕事です。戦闘に参加するようなことはありませんが間に合わせの建物に登って仕事をする以上、事故が起こることもあります。" #: src/mission_companion.cpp -msgid "Patrolling the region.\n" -msgstr "周囲を巡回しています。\n" +msgid "Assign Ally to Carpentry Work" +msgstr "仲間を大工仕事に割り当てる" #: src/mission_companion.cpp -msgid "Recover Combat Patrol" -msgstr "戦闘派遣から呼び戻す" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" +msgstr "" +"収益: $12/1時間\n" +"危険: 最小\n" +"時間: 1時間~\n" +"\n" +"建設労働者名簿: \n" + +#: src/mission_companion.cpp +msgid "Recover Ally from Carpentry Work" +msgstr "仲間を大工仕事から呼び戻す" #: src/mission_companion.cpp msgid "" @@ -132974,7 +135687,7 @@ msgstr "" #: src/mission_companion.cpp msgid "Purchase East Field" -msgstr "東部の土地を取得" +msgstr "東部の土地を購入" #: src/mission_companion.cpp msgid "" @@ -133110,7 +135823,7 @@ msgid "" " \n" "Labor Roster:\n" msgstr "" -"利益: $10/時間\n" +"収益: $10/時間\n" "危険: 低\n" "時間: 4時間~\n" "\n" @@ -133130,7 +135843,7 @@ msgid "" " \n" "The commune is sending food to the Free Merchants in the Refugee Center as part of a tax and in exchange for skilled labor." msgstr "" -"利益: $18/時間\n" +"収益: $18/時間\n" "危険: 高\n" "時間: 不明\n" "\n" @@ -133151,7 +135864,7 @@ msgid "" " \n" "Roster:\n" msgstr "" -"利益: $18/時間\n" +"収益: $18/時間\n" "危険: 高\n" "時間: 不明\n" "\n" @@ -133207,238 +135920,6 @@ msgstr "はスカベンジャー部隊の大規模探索に向かいました... msgid "departs to work as a laborer..." msgstr "は単純労働作業に向かいました..." -#: src/mission_companion.cpp -msgid "You don't have enough food stored to feed your companion." -msgstr "仲間が十分に食べていけるだけの食料を蓄えていません。" - -#: src/mission_companion.cpp -msgid "begins to upgrade the camp..." -msgstr "はキャンプ地の改良作業を開始しました..." - -#: src/mission_companion.cpp -msgid "You already have a companion upgrading the camp." -msgstr "既に仲間がキャンプ地を改良しています。" - -#: src/mission_companion.cpp -msgid "You don't have the materials for the upgrade." -msgstr "改良に使う資材がありません。" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your garage..." -msgstr "%sが車両修理工場から戻ってきました..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your kitchen with something..." -msgstr "%sが何かを持って調理場から戻ってきました..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your blacksmith shop with something..." -msgstr "%sが何かを持って鍛冶場から戻ってきました..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your farm with something..." -msgstr "%sが何かを持って農場から戻ってきました..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns to you with something..." -msgstr "%sが何か持って戻ってきました..." - -#: src/mission_companion.cpp -msgid "departs to search for materials..." -msgstr "は資材の収集に向かいました..." - -#: src/mission_companion.cpp -msgid "There are too many companions working on this mission!" -msgstr "この任務に就いている仲間が多すぎます!" - -#: src/mission_companion.cpp -msgid "departs to search for firewood..." -msgstr "は焚き木の収集に向かいました...." - -#: src/mission_companion.cpp -msgid "departs to dig ditches and scrub toilets..." -msgstr "は溝掘りやトイレ掃除などの雑多な仕事を始めました..." - -#: src/mission_companion.cpp -msgid "departs to survey land..." -msgstr "は周辺調査に向かいました..." - -#: src/mission_companion.cpp -msgid "You have already selected a surveyor!" -msgstr "既に調査者を選択済みです!" - -#: src/mission_companion.cpp -msgid "begins to upgrade the expansion..." -msgstr "は拡張した土地の改良作業を開始しました..." - -#: src/mission_companion.cpp -msgid "You already have a worker upgrading that expansion!" -msgstr "既に仲間が拡張した土地を改良しています!" - -#: src/mission_companion.cpp -msgid "Forests and swamps are the only valid cutting locations." -msgstr "木こりの作業は森林と湿地でのみ可能です。" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Trip Estimate:\n" -"%s" -msgstr "" -"推定時間:\n" -"%s" - -#: src/mission_companion.cpp -msgid "departs to cut logs..." -msgstr "は木こりの作業に向かいました..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working in the woods..." -msgstr "%sが木こりの作業を終えて戻ってきました..." - -#: src/mission_companion.cpp -msgid "Forests, swamps, and fields are valid hide site locations." -msgstr "簡易シェルターの設置は森林、湿地、平野でのみ可能です。" - -#: src/mission_companion.cpp -msgid "departs to build a hide site..." -msgstr "は簡易シェルターの設置作業に向かいました..." - -#: src/mission_companion.cpp -msgid "You need equipment to setup a hide site..." -msgstr "簡易シェルターを設置するための装備が必要です..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working on the hide site..." -msgstr "%sが簡易シェルターでの作業を終えて戻ってきました..." - -#: src/mission_companion.cpp -msgid "You must select an existing hide site." -msgstr "既存の簡易シェルターを選択してください。" - -#: src/mission_companion.cpp -msgid "Bring gear back?" -msgstr "物資を回収しますか?" - -#: src/mission_companion.cpp -msgid "departs for the hide site..." -msgstr "は簡易シェルターに向かいました..." - -#: src/mission_companion.cpp -msgid "You need equipment to transport between the hide site..." -msgstr "簡易シェルターから運んでくるアイテムがありません。" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from shuttling gear between the hide site..." -msgstr "%sが簡易シェルターの物資移動作業から戻ってきました..." - -#: src/mission_companion.cpp -msgid "" -"Select a start and end point. Line must be straight. Fields, forests, and " -"swamps are valid fortification locations. In addition to existing " -"fortification constructions." -msgstr "" -"始点と終点を選択してください。線は直線でなければなりません。要塞化可能な地形は平野、森林、湿地です。これらの地形には既に要塞化済みの建物も含まれます。" - -#: src/mission_companion.cpp -msgid "Select an end point." -msgstr "終点を選択してください。" - -#: src/mission_companion.cpp -msgid "Invalid terrain in construction path." -msgstr "建設ルートに無効な地形が含まれています。" - -#: src/mission_companion.cpp -msgid "You don't have the material to build the fortification." -msgstr "要塞建設に使う資材がありません。" - -#: src/mission_companion.cpp -msgid "begins constructing fortifications..." -msgstr "は要塞の建設を開始しました..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from constructing fortifications..." -msgstr "%sが要塞の建設から戻ってきました..." - -#: src/mission_companion.cpp -msgid "departs to search for recruits..." -msgstr "は新たな仲間探しに向かいました..." - -#: src/mission_companion.cpp -msgid "" -"Select checkpoints until you reach maximum range or select the last point " -"again to end." -msgstr "範囲の上限に達するまで調査ポイントを選択するか、最後に選択したポイントを再度選択することで終了します。" - -#: src/mission_companion.cpp -msgid "departs on patrol..." -msgstr "は巡回に向かいました..." - -#: src/mission_companion.cpp -msgid "Your companion hit a river and didn't know how to swim..." -msgstr "仲間が川に差し掛かりましたが、泳ぎ方を知りませんでした..." - -#: src/mission_companion.cpp -msgid "" -"Your companion hit a river and didn't know how to swim well enough to " -"cross..." -msgstr "仲間は川に差し掛かりましたが、渡り切れるほど泳ぎが上手くありませんでした..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't return from patrol..." -msgstr "%sは巡回から戻って来ませんでした..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from patrol..." -msgstr "%sは巡回から戻ってきました..." - -#: src/mission_companion.cpp -msgid "You already have someone working in that garage." -msgstr "既にその車両修理工場で働いている人がいます。" - -#: src/mission_companion.cpp -msgid "begins plowing the field..." -msgstr "は土地を耕す作業を開始しました..." - -#: src/mission_companion.cpp -msgid "You already have someone plowing that field." -msgstr "既にその土地を耕している人がいます。" - -#: src/mission_companion.cpp -msgid "You have no additional seeds to give your companions..." -msgstr "もう渡せる種がありません..." - -#: src/mission_companion.cpp -msgid "begins planting the field..." -msgstr "は種を植える作業を開始しました..." - -#: src/mission_companion.cpp -msgid "Which seeds do you wish to have planted?" -msgstr "どの種を植える?" - -#: src/mission_companion.cpp -msgid "You already have someone planting that field." -msgstr "既にその土地で種を植えている人がいます。" - -#: src/mission_companion.cpp -msgid "begins to harvest the field..." -msgstr "は収穫作業を開始しました..." - -#: src/mission_companion.cpp -msgid "You already have someone harvesting that field." -msgstr "既にその土地で収穫作業をしている人がいます。" - #: src/mission_companion.cpp msgid "departs to work as a carpenter..." msgstr "は建設作業に向かいました..." @@ -133631,267 +136112,6 @@ msgid "" "participate in advanced tasks." msgstr "%s はあなたの仲間の能力を認め、より高度な仕事も任せられると考えています。" -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"%s\n" -" \n" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s \n" -"Risk: None\n" -"Time: %s\n" -msgstr "" -"メモ:\n" -"%s\n" -" \n" -"適用スキル: %s\n" -"難易度: %d\n" -"%s \n" -"危険: なし\n" -"時間: %s\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s\n" -"Time: %s\n" -msgstr "" -"適用スキル: %s\n" -"難易度: %d\n" -"%s\n" -"時間: %s\n" - -#: src/mission_companion.cpp -msgid "" -"Notes: \n" -"Send a companion to gather materials for the next camp upgrade.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -msgstr "" -"メモ: \n" -"キャンプ地の改良に使う資材を集めてきてもらいます。\n" -" \n" -"適用スキル: サバイバル\n" -"難易度: なし \n" -"拾得予定:\n" - -#: src/mission_companion.cpp -msgid "" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: " -msgstr "" -" \n" -"危険: 超低\n" -"時間: 3時間、連続作業可能\n" -"人員: " - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from upgrading the camp having earned a bit of experience..." -msgstr "%s が多少の経験を積んでキャンプ地の改良作業から戻ってきました..." - -#: src/mission_companion.cpp -#, c-format -msgid "While gathering supplies, a silent specter approaches %s..." -msgstr "物資を集めている%sに、恐ろしい化け物が忍び寄ります..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s notices the antlered horror and slips away before it gets too close." -msgstr "%sは枝角を生やした化け物に気づき、接近される前にその場をそっと離れました。" - -#: src/mission_companion.cpp -#, c-format -msgid "The survivor approaches %s asking for directions." -msgstr "生存者が道を尋ねようと%sに近づきました。" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Fearful that he may be an agent of some hostile faction, %s doesn't mention " -"the camp." -msgstr "敵対的な派閥の人間である可能性も考え、%sはキャンプ地について言及しませんでした。" - -#: src/mission_companion.cpp -msgid "The two part on friendly terms and the survivor isn't seen again." -msgstr "2人は仲良く話していましたが、生存者が再び見つかることはありませんでした。" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't detect the ambush until it was too late!" -msgstr "%sが待ち伏せに気づいたときは全てが手遅れでした!" - -#: src/mission_companion.cpp -#, c-format -msgid "The bull moose charged %s from the tree line..." -msgstr "オスのヘラジカが木の陰から%sに襲い掛かりました..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Despite being caught off guard %s was able to run away until the moose gave " -"up pursuit." -msgstr "不意打ちを受けたものの、%sはヘラジカの追跡を撒いて逃げ切ることができました。" - -#: src/mission_companion.cpp -#, c-format -msgid "The jabberwock grabbed %s by the arm from behind and began to scream." -msgstr "ジャバウォックが背後から%sを掴み、叫び声を上げました。" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Terrified, %s spun around and delivered a massive kick to the creature's " -"torso..." -msgstr "%sは恐怖にかられながらも、鋭い回し蹴りを化け物の胴体に喰らわせました..." - -#: src/mission_companion.cpp -#, c-format -msgid "Collapsing into a pile of gore, %s walked away unscathed..." -msgstr "傷一つ負わず血の海でうずくまっていた%sは、やがてその場を離れました..." - -#: src/mission_companion.cpp -msgid "(Sounds like bullshit, you wonder what really happened.)" -msgstr "[この世の物とは思えない音。何が起きたのか全く想像もつかない]" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s turned to find the hideous black eyes of a giant wasp staring back from " -"only a few feet away..." -msgstr "%sが振り返ると、ほんの数フィート離れた地点から、巨大なハチがぞっとするような黒い瞳でこちらを見つめていました..." - -#: src/mission_companion.cpp -msgid "The screams were terrifying, there was nothing anyone could do." -msgstr "恐ろしい叫び声をあげる以外は、どうすることもできませんでした。" - -#: src/mission_companion.cpp -#, c-format -msgid "Pieces of %s were found strewn across a few bushes." -msgstr "%sの身体の一部が、周囲の茂みに飛び散っていました。" - -#: src/mission_companion.cpp -msgid "(You wonder if your companions are fit to work on their own...)" -msgstr "(もっと向いている仕事を与えていれば、と思わずにはいられません...)" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from gathering materials carrying supplies and has a bit more " -"experience..." -msgstr "%sが多少の経験を積み、資材を収集する仕事を終えました。" - -#: src/mission_companion.cpp -msgid "Your companion seems disappointed that your pantry is empty..." -msgstr "食料貯蔵庫が空だったので、仲間はがっかりしているようです..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -" Chopping this vehicle:\n" -"%s" -msgstr "" -" 車両を解体する:\n" -"%s" - -#: src/mission_companion.cpp -msgid "begins working in the garage..." -msgstr "は車両修理工場での作業を開始しました..." - -#: src/mission_companion.cpp -msgid "No seeds to plant!" -msgstr "植える種がありません!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working your fields..." -msgstr "%sは領地での作業から戻ってきました..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from doing the dirty work to keep the camp running..." -msgstr "%sはキャンプ地運営のための下働きから帰ってきました..." - -#: src/mission_companion.cpp -msgid "Sorting points have changed, forcing reset." -msgstr "分類ポイントが変更され、強制的にリセットされます。" - -#: src/mission_companion.cpp -msgid "Select an expansion:" -msgstr "拡張施設を選択: " - -#: src/mission_companion.cpp -msgid "You choose to wait..." -msgstr "選択を保留しました..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from surveying for the expansion." -msgstr "%sはキャンプ地拡張のための調査から戻ってきました。" - -#: src/mission_companion.cpp -msgid "No items are located at the drop point..." -msgstr "収集地点にアイテムがありません..." - -#: src/mission_companion.cpp -#, c-format -msgid "You distribute %d kcal worth of food to your companions." -msgstr "%dkcal分の食料を仲間に配給しました。" - -#: src/mission_companion.cpp -msgid "Harvestable: " -msgstr "収穫できる物: " - -#: src/mission_companion.cpp -msgid "Ready for Planting: " -msgstr "植え付けできる物: " - -#: src/mission_companion.cpp -msgid "Needs Plowing: " -msgstr "耕地が必要: " - -#: src/mission_companion.cpp -#, c-format -msgid "Name: %25s\n" -msgstr "名前: %25s\n" - -#: src/mission_companion.cpp -msgid "---- Engines ----\n" -msgstr "---- エンジン ----\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Engine: %25s\n" -msgstr "エンジン: %25s\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Status: %24d%%\n" -msgstr ">状態: %24d%%\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Fuel: %25s\n" -msgstr ">燃料: %25s\n" - -#: src/mission_companion.cpp -msgid "---- Fuel Storage & Battery ----\n" -msgstr "---- 燃料タンク・バッテリー ----\n" - -#: src/mission_companion.cpp -msgid "Estimated Chop Time: 5 Days\n" -msgstr "推定分解時間: 5日\n" - #: src/mission_companion.cpp #, c-format msgid "While %s was framing a building one of the walls began to collapse..." @@ -134047,403 +136267,7 @@ msgstr "帰還させる仲間を選択" #: src/mission_companion.cpp msgid "No one returns to your party..." -msgstr "誰も帰って来なかった..." - -#: src/mission_companion.cpp -msgid "MAIN" -msgstr "メイン" - -#: src/mission_companion.cpp -msgid " [N] " -msgstr "[北]" - -#: src/mission_companion.cpp -msgid " [NE] " -msgstr "[北東]" - -#: src/mission_companion.cpp -msgid " [E] " -msgstr "[東]" - -#: src/mission_companion.cpp -msgid " [SE] " -msgstr "[南東]" - -#: src/mission_companion.cpp -msgid " [S] " -msgstr "[南]" - -#: src/mission_companion.cpp -msgid " [SW] " -msgstr "[南西]" - -#: src/mission_companion.cpp -msgid " [W] " -msgstr "[西]" - -#: src/mission_companion.cpp -msgid " [NW] " -msgstr "[北西]" - -#: src/mission_companion.cpp -msgid "Farm Expansion" -msgstr "農場(拡張施設)" - -#: src/mission_companion.cpp -msgid "Garage Expansion" -msgstr "車両修理工場(拡張施設)" - -#: src/mission_companion.cpp -msgid "Kitchen Expansion" -msgstr "調理場(拡張施設)" - -#: src/mission_companion.cpp -msgid "Blacksmith Expansion" -msgstr "鍛冶場(拡張施設)" - -#: src/mission_companion.cpp -msgid "Empty Expansion" -msgstr "未拡張" - -#: src/mission_companion.cpp -#, c-format -msgid "Select a location between %d and %d tiles away." -msgstr "%d~%dマスの範囲内のタイルを選択" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"You must select a target between %d and %d range from the base. Range: %d" -msgstr "拠点から%d~%dの範囲にある地点を選択してください。範囲: %d" - -#: src/mission_companion.cpp -msgid "You must be able to see the target that you select." -msgstr "探索済みの地点を選択してください。" - -#: src/mission_companion.cpp -msgid "Do you want to bounce off this location to extend range?" -msgstr "範囲を広げるためにこの地点から外へ出てもよろしいですか?" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15.2f (km)\n" -msgstr ">距離:%15.2f (km)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">One Way: %15d (trips)\n" -msgstr ">片道: %15d (移動時間)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15.2f (km)\n" -msgstr ">舗装路: %15.2f (km)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15d (m)\n" -msgstr ">距離:%15d (m)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15d (m)\n" -msgstr ">舗装路: %15d (m)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Travel: %15d (hours)\n" -msgstr ">移動時間: %15d (時間)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Working: %15d (hours)\n" -msgstr ">作業時間: %15d (時間)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (days)\n" -msgstr "総所要時間: %15d (日)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (hours)\n" -msgstr "総所要時間: %15d (時間)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (minutes)\n" -msgstr "総所要時間: %15d (分)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Food: %15d (kcal)\n" -" \n" -msgstr "" -"食料: %15d (kcal)\n" -" \n" - -#: src/mission_companion.cpp -msgid "food for you" -msgstr "自分用の食料" - -#: src/mission_companion.cpp -msgid "food for companions" -msgstr "配給食料" - -#: src/mission_companion.cpp -msgid "weapons" -msgstr "武器" - -#: src/mission_companion.cpp -msgid "clothing" -msgstr "衣服" - -#: src/mission_companion.cpp -msgid "bionics" -msgstr "CBM" - -#: src/mission_companion.cpp -msgid "all kinds of tools" -msgstr "道具類" - -#: src/mission_companion.cpp -msgid "wood of various sorts" -msgstr "木材など" - -#: src/mission_companion.cpp -msgid "trash and rotting food" -msgstr "ゴミ、腐敗食物" - -#: src/mission_companion.cpp -msgid "books" -msgstr "本" - -#: src/mission_companion.cpp -msgid "medication" -msgstr "薬品" - -#: src/mission_companion.cpp -msgid "ammo" -msgstr "弾薬" - -#: src/mission_companion.cpp -#, c-format -msgid "Reset point: %s?" -msgstr "地点をリセットしますか?: %s" - -#: src/mission_companion.cpp -msgid "" -" Items New Point Old Point\n" -" \n" -msgstr "" -" アイテム 新収集地点 旧収集地点\n" -" \n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -" Save Points?" -msgstr "" -"\n" -" \n" -" 地点を保存しますか?" - -#: src/mission_companion.cpp -msgid "Revert to default points?" -msgstr "デフォルトの地点に戻しますか?" - -#: src/mission_companion.cpp -msgid "You don't have the materials to craft that" -msgstr "製作に使う資材がありません。" - -#: src/mission_companion.cpp -#, c-format -msgid "Batch crafting %s [MAX: %d]: " -msgstr "一括製作 %s [最大: %d]: " - -#: src/mission_companion.cpp -msgid "Your batch is too large!" -msgstr "量が多すぎます!" - -#: src/mission_companion.cpp -msgid "You already have someone working in that expansion." -msgstr "既に拡張作業を行っている人がいます。" - -#: src/mission_companion.cpp -msgid "begins to work..." -msgstr "は作業を開始しました..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" -" \n" -"Skill used: speech\n" -"Difficulty: 2 \n" -"Base Score: +%3d%%\n" -"> Expansion Bonus: +%3d%%\n" -"> Faction Bonus: +%3d%%\n" -"> Special Bonus: +%3d%%\n" -" \n" -"Total: Skill +%3d%%\n" -" \n" -"Risk: High\n" -"Time: 4 Days\n" -"Positions: %d/1\n" -msgstr "" -"メモ:\n" -"新たな仲間を集めるのは非常に危険な仕事で、物資も大量に必要です。成功するかどうかは、派遣する仲間のスキルと拠点の魅力の高さにかかっています。\n" -" \n" -"適用スキル: 話術\n" -"難易度: 2 \n" -"基礎点: +%3d%%\n" -"> 拡張ボーナス: +%3d%%\n" -"> 派閥ボーナス: +%3d%%\n" -"> 特殊ボーナス: +%3d%%\n" -" \n" -"合計: スキル +%3d%%\n" -" \n" -"危険: 高\n" -"時間: 4日\n" -"人員: %d/1\n" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from searching for recruits with a bit more experience..." -msgstr "%sが仲間を集める仕事から戻り、ほんの少しの経験を積みました..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s encountered %s..." -msgstr "%sは%sに遭遇しました..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't find anyone to recruit..." -msgstr "%sは仲間を見つけられませんでした..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s convinced %s to hear a recruitment offer from you..." -msgstr "%sは仲間になってほしいという%sの話を聞いて信用しました。" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested in anything %s had to offer..." -msgstr "%sは%sから話を聞きましたが、興味をそそられなかったようです..." - -#: src/mission_companion.cpp -msgid "" -"NPC Overview:\n" -" \n" -msgstr "" -"NPC概要:\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Name: %20s\n" -" \n" -msgstr "" -"名前: %20s\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "Strength: %10d\n" -msgstr "筋力: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Dexterity: %10d\n" -msgstr "器用: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Intelligence: %10d\n" -msgstr "知性: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Perception: %10d\n" -" \n" -msgstr "" -"感覚: %10d\n" -" \n" - -#: src/mission_companion.cpp -msgid "Top 3 Skills:\n" -msgstr "上位3スキル:\n" - -#: src/mission_companion.cpp -msgid "Asking for:\n" -msgstr "要求:\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"> Food: %10d days\n" -" \n" -msgstr "" -"> 食料: %10d 日分\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Faction Food:%9d days\n" -" \n" -msgstr "" -"備蓄食料:%9d 日分\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Recruit Chance: %10d%%\n" -" \n" -msgstr "" -"加入確率: %10d%%\n" -" \n" - -#: src/mission_companion.cpp -msgid "Select an option:" -msgstr "オプション選択: " - -#: src/mission_companion.cpp -msgid "Increase Food" -msgstr "食料を増やす" - -#: src/mission_companion.cpp -msgid "Decrease Food" -msgstr "食料を減らす" - -#: src/mission_companion.cpp -msgid "Make Offer" -msgstr "仲間に誘う" - -#: src/mission_companion.cpp -msgid "Not Interested" -msgstr "仲間に誘わない" - -#: src/mission_companion.cpp -msgid "You decide you aren't interested..." -msgstr "お引き取り願いました..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s has been convinced to join!" -msgstr "%sは仲間に加わることにしました!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested..." -msgstr "%sは興味がないようです..." +msgstr "帰還させるのを中断しました..." #: src/mission_companion.h msgid "Do you wish to give your companion additional items?" @@ -134503,7 +136327,7 @@ msgstr "%sからアクセスコード(石棺)を貰いました。" #: src/mission_start.cpp #, c-format msgid "%s gave you a blood draw kit." -msgstr "%sから採血キットを受け取りました。" +msgstr "%sから採血キット(250ml)を受け取りました。" #: src/mission_start.cpp #, c-format @@ -137090,9 +138914,10 @@ msgstr "残りポイント: %4d" msgid "Freeform" msgstr "フリー" -#: src/newcharacter.cpp -msgid "Pick your style:" -msgstr "スタイルを選択: " +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" +msgstr "戦闘スタイルを選択(%sで詳細)" #: src/newcharacter.cpp msgid "Use this style?" @@ -137260,17 +139085,17 @@ msgstr "器用を上げるには2ポイントが必要です。" #: src/newcharacter.cpp #, c-format msgid "Melee to-hit bonus: +%.2f" -msgstr "近接命中率: +%.2f" +msgstr "近接命中補正: +%.2f" #: src/newcharacter.cpp #, c-format msgid "Throwing penalty per target's dodge: +%d" -msgstr "投擲被回避率: -%d" +msgstr "投擲被回避補正: +%d" #: src/newcharacter.cpp #, c-format msgid "Ranged penalty: -%d" -msgstr "遠距離命中率: -%d" +msgstr "遠距離命中補正: -%d" #: src/newcharacter.cpp msgid "Dexterity also enhances many actions which require finesse." @@ -138303,44 +140128,6 @@ msgstr "もし力を貸してくれるなら他にも頼みたいことがある msgid " If you are interested, I have another job for you." msgstr "もし興味があれば、他にも頼みたい仕事があるんだ。" -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "これからもよろしく頼むよ!" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "さて、話をしようか。" - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "シェルターはどうやら無事なようだね。" - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "うーん、分からないが...とりあえずは物資と生存者を探すといいんじゃないか?" - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "そうだな、ドアや窓を板張りして外からの脅威に備える必要があるんじゃないだろうか。" - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to" -" disappear quickly from here." -msgstr "乗り物を手に入れるのがいいんじゃないか。何かあったとしてもすぐ逃げられるしね。" - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "近くに農場が無いか探してみよう。街からもそれほど近くないだろうし、十分な食料もあるんじゃないかな。" - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "街に行けば役に立つ物が十分残っているだろうが、住む場所は街から離れていた方がいいと思う。" - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." msgstr "今はもう何もないんだ。また今度にしてくれ。" @@ -138349,10 +140136,6 @@ msgstr "今はもう何もないんだ。また今度にしてくれ。" msgid "Why should I share my equipment with you?" msgstr "どうして持ち物をあげないといけないんだ?" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "はい、どうぞ。" - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr "、もう一度同じことを聞いてみろ、!" @@ -138373,46 +140156,6 @@ msgstr "すまないが、教えられることはもう何もないようだ。 msgid "Here's what I can teach you..." msgstr "教えられそうなのはこんなところだな..." -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "よろしい、始めよう。" - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "抗生物質さえあれば..." - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "さっき言ったはずだけど...またいつか誘ってくれよ。" - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "何故、君と一緒に旅をする必要があるんだい?" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "その通りだ、一緒に行くよ!" - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "ああ、うん...そうは思ってないよ。" - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "何だい?" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "本当に一人で行くのか?" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "よし。君に付いて行くよ。" - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "いいや、私に付いて来い。" - #: src/npctalk.cpp #, c-format msgid "%d.%d miles." @@ -138424,22 +140167,6 @@ msgid "%d foot." msgid_plural "%d feet." msgstr[0] "%d フィート。" -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "ここで見張っているよ。" - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "絶対に嫌だね、付いて行くからな!" - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "自分について語りたくはないんだ。" - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "申し訳ないが、本当に嫌なんだ..." - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "*は戦いません。" @@ -138745,30 +140472,6 @@ msgstr "これからもよろしく..." msgid "Delivering bandages." msgstr "包帯を渡す。" -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "何をすればいいんだろう?" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "役立つ情報はある?" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "一緒に旅をしないか?" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "物品の取引をしようか。" - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "物資が足りないんだ..." - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "ふーん、分かった。" - #: src/npctalk.cpp msgid "Okay, fine." msgstr "ああ、分かったよ。" @@ -138801,30 +140504,6 @@ msgstr "あぁ、何でもない。" msgid "Never mind, I'll do without. Bye." msgstr "分かったよ、じゃあな。" -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "ありがとう!" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "ありがとう!他に渡したい物は?" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "ありがとう、それじゃあまた!" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "分かった、分かった、すまなかったよ。" - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "冗談じゃない、何かくれよ!" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "分かった、いいよ、じゃあな。" - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "よし、訓練を再開しようか。 " @@ -138846,94 +140525,6 @@ msgstr "%s: %d -> %d" msgid "%s: %d -> %d (cost $%d)" msgstr "%s: %d -> %d (費用 $%d)" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "いいね。" - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "ただの思い付きだ、気にしないでくれ。" - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "よし。付いて行くよ。" - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "いや、ここでいい。" - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "分かった。抗生物質を手に入れる。" - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "ああ、そうだったね。また今度にするよ。" - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "君を護衛するよ。" - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "君に護衛してほしいんだ。" - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "友達だろ、違うのか?" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "言う通りにしなければ殺す。" - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "素晴らしい!" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "分かった、行こう!" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "どれぐらい遠いんだ?" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "当分は一人で行動させて欲しい。" - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "少しの間、リーダーをやるよ。" - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "どいてろ。リーダーは私だ。" - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "行こう。" - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "いや、ただの冗談だよ。" - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "そうだね、絶対だ。じゃあね。" - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "いいね。他には..." - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "よし、それじゃあ行こうか。" - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "分かった、分かった。" - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "ああ、ありがとう。" @@ -138942,10 +140533,6 @@ msgstr "ああ、ありがとう。" msgid "Let's keep moving." msgstr "動き続けてくれ。" -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "一緒に来てくれ。" - #: src/npctalk.cpp msgid "Combat commands..." msgstr "戦闘指令..." @@ -139003,16 +140590,12 @@ msgid "Miscellaneous rules..." msgstr "その他の規則..." #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "拠点について話そう" - -#: src/npctalk.cpp -msgid "I'll give you some space." -msgstr "一定の距離を保つようにするよ。" +msgid "I'm going to go my own way for a while." +msgstr "当分は一人で行動させて欲しい。" #: src/npctalk.cpp -msgid "I understand..." -msgstr "そうか..." +msgid "Let's talk about faction camps." +msgstr "拠点について話そう" #: src/npctalk.cpp msgid "Change your engagement rules..." @@ -139731,6 +141314,11 @@ msgstr "" "- 隣接破壊: 隣接している死体を破壊\n" "- 解体: 足元の死体を解体" +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "無効" + #: src/options.cpp msgid "Pulp" msgstr "破壊" @@ -139919,16 +141507,12 @@ msgstr "キルカメラ" msgid "" "Always: Always start deathcam. Ask: Query upon death. Never: Never show " "deathcam." -msgstr "有効: キルカメラを有効化する 質問: 死亡時に尋ねる 無効: キルカメラを無効化する" +msgstr "有効: キルカメラを有効化する 質問: 死亡時に確認 無効: キルカメラを無効化する" #: src/options.cpp msgid "Always" msgstr "有効" -#: src/options.cpp -msgid "Ask" -msgstr "質問" - #: src/options.cpp msgid "Never" msgstr "無効" @@ -140075,11 +141659,11 @@ msgstr "trueにするとY/Nの確認をする際、yとnの入力を受け付け #: src/options.cpp msgid "Snap to target" -msgstr "目標の自動選択" +msgstr "照準地点表示" #: src/options.cpp msgid "If true, automatically follow the crosshair when firing/throwing." -msgstr "Trueにすると射撃/投擲時に自動的に目標を選択します。" +msgstr "Trueにすると射撃/投擲時の照準の移動を画面が追尾します。" #: src/options.cpp msgid "Query on disassembly" @@ -140155,7 +141739,7 @@ msgstr "trueにすると運転中は自動で前方に視点が移動します #: src/options.cpp msgid "Draw vehicle facing indicator" -msgstr "車両/前方に方向指示器を描画" +msgstr "車両/運転時に正面の向きを表示" #: src/options.cpp msgid "" @@ -140283,13 +141867,13 @@ msgstr "キーを押すたびに設定された値の数だけ視点を移動し #: src/options.cpp msgid "Centered menu scrolling" -msgstr "一覧の中央からスクロール" +msgstr "スクロール時のカーソル位置固定" #: src/options.cpp msgid "" "If true, menus will start scrolling in the center of the list, and keep the " "list centered." -msgstr "Trueにするとメニューの先頭ではなく中央からスクロールするようになります。" +msgstr "Trueにすると一覧表示をスクロールする際にカーソル位置が中央を維持するようになります。" #: src/options.cpp msgid "Shift list item view" @@ -140299,7 +141883,7 @@ msgstr "アイテム/リスト表示時の視点位置" msgid "" "Centered or to edge, shift the view toward the selected item if it is " "outside of your current viewport." -msgstr "見渡した時にターゲットが表示画面外の場合、中心に表示するか端に表示します。" +msgstr "周囲を見回す際、選択中のものが表示画面外にある場合、画面の中央に表示するか、端に表示するかを設定します。" #: src/options.cpp msgid "Centered" @@ -142303,8 +143887,7 @@ msgstr "電力: %d/%d" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "武器: " +msgstr "武器:" #: src/player.cpp msgid "Equipment:" @@ -143760,21 +145343,6 @@ msgstr "%sを%sから抜き取りますか?" msgid "Stop wielding %s?" msgstr "装備中の%sを外しますか?" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "技術: " - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "この戦闘スタイルでは、武器を装備していても強制的に素手で攻撃します。" - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "戦闘スタイルを選択(%sで詳細)" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "素手(無効)" @@ -143830,6 +145398,11 @@ msgstr "故障" msgid "Mend" msgstr "修理" +#: src/player.cpp +#, c-format +msgid "The %s doesn't have any faults to toggle." +msgstr "%sに直すべき故障は見当たりません。" + #: src/player.cpp #, c-format msgid "The %s doesn't have any faults to mend." @@ -144502,7 +146075,7 @@ msgstr[0] "水泳コスト%+d " #, c-format msgid "Running costs %+d movement point. " msgid_plural "Running costs %+d movement points. " -msgstr[0] "走行コスト%+d " +msgstr[0] "走行時の移動コスト%+d " #: src/player_display.cpp #, c-format @@ -144582,10 +146155,6 @@ msgstr "知性" msgid "Perception" msgstr "感覚" -#: src/player_display.cpp -msgid "Speed" -msgstr "速度" - #: src/player_display.cpp msgid "Severely Malnourished" msgstr "重度栄養失調" @@ -144760,15 +146329,15 @@ msgstr "近接攻撃の命中率と銃の安定性、多くの技巧的な行動 #: src/player_display.cpp msgid "Melee to-hit bonus:" -msgstr "近接命中率: " +msgstr "近接命中補正: " #: src/player_display.cpp msgid "Ranged penalty:" -msgstr "遠距離命中率:" +msgstr "遠距離命中補正:" #: src/player_display.cpp msgid "Throwing penalty per target's dodge:" -msgstr "投擲被回避率:" +msgstr "投擲被回避補正:" #: src/player_display.cpp msgid "" @@ -145446,7 +147015,7 @@ msgstr "%c %c 目標切替 / %c 発射" #: src/ranged.cpp #, c-format msgid "%c target self; %c toggle snap-to-target" -msgstr "%c 照準を中央へ / %c 画面の中心を切り換える" +msgstr "%c 照準を中央に戻す / %c 照準地点表示" #: src/ranged.cpp #, c-format @@ -145668,6 +147237,10 @@ msgstr "ドドーン!" msgid "kerblam!" msgstr "ダァン!" +#: src/recipe.cpp +msgid "none" +msgstr "なし" + #: src/requirements.cpp #, c-format msgid "%d tool with %s of %d or more." @@ -146989,6 +148562,21 @@ msgstr "'{'でスクロールアップ" msgid "'}' to scroll down" msgstr "'}'でスクロールダウン" +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "故障した%1$s取外で得られるアイテム: 各種素材片\n" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" +msgstr "" +"%1$s取外で得られるアイテム:\n" +"> %2$s\n" + #: src/veh_interact.cpp #, c-format msgid "> %2$s" @@ -147844,13 +149432,13 @@ msgstr "%sを有効化するには電力が足りない" #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" -msgstr "%sをオフにする" +msgid "Turn on %s" +msgstr "%sをオンにする" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" -msgstr "%sをオンにする" +msgid "Turn off %s" +msgstr "%sをオフにする" #: src/vehicle_use.cpp #, c-format @@ -147946,10 +149534,6 @@ msgstr "カメラシステムを起動しました" msgid "Camera system won't turn on" msgstr "カメラシステムが起動しない!" -#: src/vehicle_use.cpp -msgid "Quit controlling electronics" -msgstr "電子機器の操作を終了する" - #: src/vehicle_use.cpp msgid "Electronics controls" msgstr "電子機器制御" diff --git a/lang/po/ko.po b/lang/po/ko.po index 39c55604250bf..4eedff04fcb72 100644 --- a/lang/po/ko.po +++ b/lang/po/ko.po @@ -1,21 +1,21 @@ # Translators: # 탯새 , 2018 -# T itan , 2018 # Vlasov Vitaly , 2018 -# indejeC , 2018 # byoungheon jeon , 2018 -# fenjo , 2018 +# Mark, 2018 +# indejeC , 2018 # Brett Dong , 2018 # Sail Recycle , 2018 -# Mark, 2018 +# fenjo , 2018 +# T itan , 2018 # msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-26 22:02+0800\n" +"POT-Creation-Date: 2018-11-16 22:24+0800\n" "PO-Revision-Date: 2018-04-26 14:47+0000\n" -"Last-Translator: Mark, 2018\n" +"Last-Translator: T itan , 2018\n" "Language-Team: Korean (https://www.transifex.com/cataclysm-dda-translators/teams/2217/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4378,6 +4378,7 @@ msgid "" msgstr "다양한 유기체 구성물로 이루어진 혼합물. 블럽의 건강에 필요한 모든 것이 들어있는 것 같습니다. 그런 것 같은데..." #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "돌" @@ -5319,6 +5320,16 @@ msgid "bondage mask" msgid_plural "bondage masks" msgstr[0] "본디지 마스크" +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "지퍼 올리기" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "본디지 마스크의 눈과 입부분 지퍼를 올렸다." + #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" @@ -5326,6 +5337,28 @@ msgid "" "zippers." msgstr "꽉 끼는 검은색 가죽 마스크. 눈과 입 부분을 지퍼로 닫을 수 있습니다." +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "본디지 마스크 (지퍼올림)" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "지퍼 내리기" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "본디지 마스크의 눈과 입부분 지퍼를 내렸다." + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "꽉 끼는 검은색 가죽 마스크. 눈과 입 부분 지퍼가 잠겨있습니다." + #: lang/json/ARMOR_from_json.py msgid "bondage suit" msgid_plural "bondage suits" @@ -5415,6 +5448,7 @@ msgid "" "hands free. You have to duck to get through doors while one's in it, " "though. Activate to holster/draw a weapon." msgstr "" +"천으로 상체에 감아 창을 보관하도록 한것입니다. 창을 착용한 상태로는 문을 지나갈때 숙여야합니다. 사용해서 무기를 넣거나 빼듭니다." #: lang/json/ARMOR_from_json.py msgid "bowler hat" @@ -5470,7 +5504,7 @@ msgstr[0] "보이 쇼츠" #: lang/json/ARMOR_from_json.py msgid "" "Female underwear similar to men's boxer shorts, but much more close-fitting." -msgstr "" +msgstr "여성 속옷. 남성용 사각 팬티와 비슷하지만, 훨씬 달라붙습니다." #: lang/json/ARMOR_from_json.py msgid "bra" @@ -5523,7 +5557,7 @@ msgstr[0] "비취 브로치" #. ~ Description for jade brooch #: lang/json/ARMOR_from_json.py msgid "A hand-crafted jade brooch of Oriental origin." -msgstr "" +msgstr "동양풍으로 만들어진 수공예 비취 브로치." #: lang/json/ARMOR_from_json.py msgid "back scabbard" @@ -5574,7 +5608,7 @@ msgstr[0] "캐미솔" msgid "" "A small camisole made from silk. Typically used as an undergarment, they " "are light and easy to wear." -msgstr "" +msgstr "실크로 만들어진 작은 캐미솔. 보통 속옷으로 사용하며, 가볍고 입기 쉽습니다." #: lang/json/ARMOR_from_json.py msgid "cassock" @@ -5621,7 +5655,7 @@ msgid "" "Customized chainmail legs. Their leather straps keep everything in place, " "and the lack of toes and heels allows them to work perfectly well with " "footwear." -msgstr "" +msgstr "맞춤 제작된 사슬 바지. 가죽끈으로 서로 연결되어 있으며, 발이 노출되어 신발을 편하게 신을 수 있습니다." #: lang/json/ARMOR_from_json.py msgid "chainmail armor" @@ -5648,7 +5682,7 @@ msgstr[0] "사슬 조끼" msgid "" "A customized chainmail vest. It's a sleeveless piece of chainmail with " "small leather straps designed to better distribute the weight." -msgstr "" +msgstr "맞춤 제작된 사슬 조끼입니다. 소매가 없고 가죽끈으로 보강되어 중심 잡기가 한결 편합니다." #: lang/json/ARMOR_from_json.py msgid "leather chaps" @@ -5660,7 +5694,7 @@ msgstr[0] "가죽 덧바지" msgid "" "A pair of black leather chaps. Very tough and light, but doesn't offer any " "storage." -msgstr "" +msgstr "검은색 가죽 바지 한 벌. 아주 튼튼하고 가볍지만, 저장 공간이 없습니다." #: lang/json/ARMOR_from_json.py msgid "chestwrap" @@ -5732,7 +5766,7 @@ msgstr[0] "망토" #. ~ Description for cloak #: lang/json/ARMOR_from_json.py msgid "A heavy cloak meant to be thrown over your body." -msgstr "" +msgstr "몸 전체를 덮는 크고 무거운 망토입니다." #: lang/json/ARMOR_from_json.py msgid "fur cloak" @@ -5742,7 +5776,7 @@ msgstr[0] "모피 망토" #. ~ Description for fur cloak #: lang/json/ARMOR_from_json.py msgid "A heavy fur cloak meant to be thrown over your body." -msgstr "" +msgstr "몸 전체를 덮는 크고 무거운 털 망토입니다." #: lang/json/ARMOR_from_json.py msgid "leather cloak" @@ -5754,7 +5788,7 @@ msgstr[0] "가죽 망토" msgid "" "A heavy leather cloak meant to be thrown over your body. Provides decent " "protection." -msgstr "" +msgstr "몸 전체를 덮는 무거운 가죽 망토입니다. 의외로 괜찮은 방어력을 제공합니다." #: lang/json/ARMOR_from_json.py msgid "wool cloak" @@ -5764,7 +5798,7 @@ msgstr[0] "양모 망토" #. ~ Description for wool cloak #: lang/json/ARMOR_from_json.py msgid "A heavy woolen cloak meant to be thrown over your body." -msgstr "" +msgstr "몸 전체를 덮는 크고 무거운 양모 망토입니다." #: lang/json/ARMOR_from_json.py msgid "clown suit" @@ -5795,7 +5829,7 @@ msgstr[0] "" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." msgstr "" @@ -5821,7 +5855,7 @@ msgstr[0] "실험실 가운" msgid "" "A long white coat with several large pockets. Comes with a very nice pocket" " protector." -msgstr "" +msgstr "여러 개의 큰 주머니가 달린 길고 하얀 코트. 멋진 포켓 프로텍터가 달려있습니다." #: lang/json/ARMOR_from_json.py msgid "rain coat" @@ -5877,7 +5911,7 @@ msgstr[0] "동 귀걸이" msgid "" "A copper earring. It's pretty heavy; wearing it for an extended period of " "time may stretch your ear longer." -msgstr "" +msgstr "구리로 된 귀걸이. 오랫동안 착용하면 귀가 늘어날 것 같을 정도로 무겁습니다." #: lang/json/ARMOR_from_json.py msgid "leather corset" @@ -5901,7 +5935,7 @@ msgstr[0] "카우보이 모자" msgid "" "Whether yer hunting varmints, fixing up the ranch, or heading into the " "sunset, this is the hat for the job." -msgstr "" +msgstr "야생 동물을 사냥하거나, 목장 수리, 해 질 녘에 걸을때 제격인 모자." #: lang/json/ARMOR_from_json.py msgid "knit cowl" @@ -5988,6 +6022,7 @@ msgid "" "Fake teeth inlaid with diamonds, worn over the teeth. Fits horribly, but " "looks very shiny. For that high-class gangsta rap look." msgstr "" +"다이아몬드가 박혀있는 가짜 치아. 소름끼치게 딱 맞으며, 매우 반짝거립니다. 상당한 수준의 갱스터 래퍼처럼 보이기 위한 것입니다." #: lang/json/ARMOR_from_json.py msgid "diamond ring" @@ -6021,7 +6056,7 @@ msgstr[0] "잠수용 가방" #. ~ Description for dive bag #: lang/json/ARMOR_from_json.py msgid "A lightweight mesh backpack, commonly worn by swimmers and divers." -msgstr "" +msgstr "흔히 수영하는 사람이나 잠수부가 사용하는 가벼운 그물 가방입니다." #: lang/json/ARMOR_from_json.py msgid "diver's watch" @@ -6033,7 +6068,7 @@ msgstr[0] "잠수용 시계" msgid "" "A waterproof, self-winding watch on a stainless steel watchband. Tells the " "time and current temperature. Activate to check the digital thermometer." -msgstr "" +msgstr "방수처리된 자가발전 스테인레스제 손목시계. 시간과 현재 온도를 표시하며, 사용하면 온도를 확인한다." #: lang/json/ARMOR_from_json.py msgid "down-filled blanket" @@ -6101,7 +6136,7 @@ msgstr[0] "더플백" #: lang/json/ARMOR_from_json.py msgid "" "A huge duffel bag. Provides plenty of storage, but is severely encumbering." -msgstr "" +msgstr "커다란 더플백. 대용량의 저장공간을 제공하지만, 상당히 불편합니다." #: lang/json/ARMOR_from_json.py msgid "tactical dump pouch" @@ -6133,6 +6168,18 @@ msgstr[0] "모피 더스터 코트" #. ~ Description for fur duster #: lang/json/ARMOR_from_json.py msgid "A thick fur full-length duster. Has many pockets for storage." +msgstr "두꺼운 모피 재질의 긴 더스터 코트. 주머니가 많이 달려 있습니다." + +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." msgstr "" #: lang/json/ARMOR_from_json.py @@ -6143,7 +6190,7 @@ msgstr[0] "가죽 더스터 코트" #. ~ Description for leather duster #: lang/json/ARMOR_from_json.py msgid "A thick leather full-length duster. Has many pockets for storage." -msgstr "" +msgstr "두꺼운 가죽 재질의 긴 더스터 코트. 주머니가 많이 달려 있습니다." #: lang/json/ARMOR_from_json.py msgid "survivor duster" @@ -6211,7 +6258,7 @@ msgstr[0] "멋있는 선글라스" msgid "" "A pair of stylish sunglasses. Look good while keeping the glare out of your" " eyes." -msgstr "" +msgstr "멋있는 선글라스. 태양빛으로부터 눈을 보호해줍니다." #: lang/json/ARMOR_from_json.py msgid "fanny pack" @@ -6243,7 +6290,7 @@ msgstr[0] "펜싱 마스크" #. ~ Description for fencing mask #: lang/json/ARMOR_from_json.py msgid "A tough hood made of steel mesh used by fencers." -msgstr "" +msgstr "펜서들이 사용하는 철망으로 된 견고한 후드." #: lang/json/ARMOR_from_json.py msgid "fencing pants" @@ -6280,7 +6327,7 @@ msgstr[0] "소방관 모자" msgid "" "A distinctive helmet worn by firefighters. More than just a piece of " "firefighting equipment, it serves as a badge of honor and respect." -msgstr "" +msgstr "소방관이 착용하는 독특한 모자. 단순한 소방 장비의 역할을 넘어선 명예와 존경의 상징물입니다." #: lang/json/ARMOR_from_json.py msgid "firefighter belt" @@ -6385,6 +6432,7 @@ msgid "" "and a reinforced flame-resistant Nomex jumpsuit. Protects the wearer from " "fire and the elements." msgstr "" +"잘라낸 방탄조끼와 노멕스로 만들어진 강화된 방화 점프슈트를 사용해서 만든 무거운 수제 방어구. 화재와 각종 피해로부터 몸을 보호해줍니다." #: lang/json/ARMOR_from_json.py msgid "fur blanket" @@ -6513,7 +6561,7 @@ msgstr[0] "유기규소 키틴질 장갑" msgid "" "Gauntlets crafted from the carefully cleaned and pruned biosilicified " "exoskeletons of acidic ants. Acid-resistant and very durable." -msgstr "" +msgstr "조심스럽게 다듬고 잘라낸 유기규소화된 산성 개미의 외골격으로 만든 팔 보호구. 산성액에 저항성이 있고 아주 견고합니다." #: lang/json/ARMOR_from_json.py msgid "pair of leather armor gauntlets" @@ -6547,7 +6595,7 @@ msgstr[0] "사격용 보안경" msgid "" "Modern tactical eyewear that protects from small projectiles and fragments." " Provides excellent protection from environmental dangers." -msgstr "" +msgstr "작은 발사체나 파편들을 막아주는 현대식 전술 보안경입니다. 환경적 위험요소에 대해 우수한 방호력을 제공합니다." #: lang/json/ARMOR_from_json.py msgid "pair of eclipse glasses" @@ -6561,6 +6609,8 @@ msgid "" "with a layer of aluminum coating. They allow safe viewing of extremely " "bright and harmful sources of light, like the sun during a solar eclipse." msgstr "" +" 자외선과 가시광선 필터 기능이 있으며 겉에 알루미늄 코팅이 된 렌즈와 카드보드지 테로 된 안경. 일식 때의 햇빛처럼 아주 밝고 해로운 " +"빛을 안전하게 바라볼 수 있게 해준다." #: lang/json/ARMOR_from_json.py msgid "pair of bifocal glasses" @@ -6572,7 +6622,7 @@ msgstr[0] "이중 초점 안경" msgid "" "A pair of bifocal glasses for those who are both near-sighted and far-" "sighted. You can use them to focus sunlight." -msgstr "" +msgstr "근시와 원시를 함께 가지고 있는 사람을 위한 이중 초점 안경. 햇빛을 한 곳에 집중시킬 수 있다." #: lang/json/ARMOR_from_json.py msgid "pair of eyeglasses" @@ -7129,6 +7179,18 @@ msgstr[0] "모피 모자" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "동물의 모피로 만든 모자. 무척 따뜻합니다." +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -7427,16 +7489,6 @@ msgid "" "the cost of great encumbrance." msgstr "중세에 머리 전체를 보호하기 위해 만들었던 헬멧. 아주 높은 보호력을 제공하지만, 착용하면 움직이는 것이 매우 힘들어집니다." -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "시위 진압용 헬멧" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "얼굴 전체를 덮는 투명 플라스틱 보호대가 달린 헬멧." - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" @@ -8845,6 +8897,16 @@ msgstr[0] "모피 바지" msgid "A hefty pair of fur-lined pants." msgstr "무거운 모피 바지." +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather pants" msgid_plural "leather pants" @@ -9441,21 +9503,77 @@ msgid "sleeping bag" msgid_plural "sleeping bags" msgstr[0] "침낭" +#. ~ Use action menu_text for sleeping bag. +#. ~ Use action menu_text for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Roll up" +msgstr "" + +#. ~ Use action msg for sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the sleeping bag, preparing it for transport." +msgstr "" + #. ~ Description for sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag that covers you head to toe." msgstr "머리부터 발 끝까지 모두 덮을 수 있는 침낭." +#: lang/json/ARMOR_from_json.py +msgid "rolled sleeping bag" +msgid_plural "rolled sleeping bags" +msgstr[0] "" + +#. ~ Use action menu_text for rolled sleeping bag. +#. ~ Use action menu_text for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Unroll" +msgstr "" + +#. ~ Use action msg for rolled sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll the sleeping bag." +msgstr "" + +#. ~ Description for rolled sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag rolled up for transport. It has a strap to carry it " +"with." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "fur sleeping bag" msgid_plural "fur sleeping bags" msgstr[0] "모피 침낭" +#. ~ Use action msg for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the fur sleeping bag, preparing it for transport." +msgstr "" + #. ~ Description for fur sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag lined with fur. Who needs a tent?" msgstr "모피로 만들어진 커다란 침낭. 이게 있는데 왜 텐트가 필요할까요?" +#: lang/json/ARMOR_from_json.py +msgid "rolled fur sleeping bag" +msgid_plural "rolled fur sleeping bags" +msgstr[0] "" + +#. ~ Use action msg for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll up the fur sleeping bag." +msgstr "" + +#. ~ Description for rolled fur sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag lined with fur, rolled for transport. It has a strap " +"to carry it with." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless duster" msgid_plural "sleeveless dusters" @@ -9480,6 +9598,18 @@ msgid "" "unencumbered. Has plenty of storage space due to its many pockets." msgstr "두꺼운 모피 재질의 긴 더스터 코트. 소매가 없어 팔이 거치적거리지 않습니다. 주머니가 많이 달려 있습니다." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" msgid_plural "sleeveless leather dusters" @@ -9528,6 +9658,18 @@ msgid "" " plenty of storage space due to its many pockets." msgstr "소매가 없는 두꺼운 모피 트렌치코트. 소매가 없어 팔이 불편하지 않고, 주머니가 많아 수납공간이 넓습니다." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -10164,6 +10306,18 @@ msgstr[0] "모피 트렌치코트" msgid "A thick fur trenchcoat, lined with pockets. Great for storage." msgstr "털 가죽으로 만들어진 트렌치코트. 주머니가 일렬로 쭉 달려있어 수납공간이 많습니다." +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" msgid_plural "leather trenchcoats" @@ -13276,11 +13430,12 @@ msgid_plural "Ionic Overload Generator CBMs" msgstr[0] "CBM:이온 과부하 발생기" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" @@ -13323,24 +13478,6 @@ msgstr "" "강력한 이온화 에너지 발생기가 몸속에 설치되었다. 강력하고, 끊임없이 팽창하는 에너지 폭발을 일으킨다. 그 결과 충격파는 주변으로 " "번져나가면서 산소를 발화시키고 충돌시 폭발을 일으킨다. 목표물 근처에서 공격하는 것은 정말 권장하지 않습니다. " -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "CBM:자율작동 수술용 칼날" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While" -" activated, they will continously drain power to make automated precise cuts" -" but you will be unable to wield anything." -msgstr "" -"사용자의 손가락에 수술용 칼날을 이식했습니다. 작동시키면, 전력을 지속적으로 소모하면서 자동으로 정밀한 절단을 할 수 있지만 아무것도 " -"장비할 수 없습니다." - #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" msgid_plural "Lessons for the Novice Bowhunter" @@ -15820,6 +15957,20 @@ msgstr "" "한때 한 의류 디자이너의 소유물이었던, 가죽 제본된 작품집입니다. 스케치와 주석들로 가득 차있으며, 숙련된 제단사는 이 책에서 많은 것을" " 배울 수 있을 것 같습니다." +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon" +" Animal Rights Organization." +msgstr "" + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -23758,7 +23909,7 @@ msgstr "" #. ~ Description for bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Tastes horribly and is " +"Homemade calcium supplement made out of bone meal. Tastes horrible and is " "hard to swallow but it does its job." msgstr "" @@ -23769,9 +23920,9 @@ msgstr "" #. ~ Description for flavored bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Due to some sweetness " -"mixed in to counteract the powdery texture and the taste of ash, almost as " -"palatable as the pre-cataclysm tablets." +"Homemade calcium supplement made out of bone meal. Due to some sweetness " +"mixed in to counteract the powdery texture and the taste of ash, it's almost" +" as palatable as the pre-cataclysm tablets." msgstr "" #: lang/json/COMESTIBLE_from_json.py @@ -24345,7 +24496,7 @@ msgid "" "fruit. It has been supplemented with extra vitamins and minerals" msgstr "정제된 단백질에 영양가가 높은 과일을 섞어 만든, 걸쭉하고 맛 좋은 음료. 비타민과 미네랄을 첨가했습니다." -#: lang/json/COMESTIBLE_from_json.py src/mission_companion.cpp +#: lang/json/COMESTIBLE_from_json.py src/faction_camp.cpp msgid "seeds" msgid_plural "seeds" msgstr[0] "씨앗" @@ -25905,7 +26056,7 @@ msgstr "1.5L까지 담을 수 있는 밀리터리 스타일 수통. 주로 허 #: lang/json/CONTAINER_from_json.py msgid "thermos" msgid_plural "thermoses" -msgstr[0] "" +msgstr[0] "보온병" #. ~ Description for thermos #: lang/json/CONTAINER_from_json.py @@ -25913,6 +26064,7 @@ msgid "" "A Thermos brand vacuum flask. Built for temperature retention, helps keep " "things hot or cold. Contains 1L of liquid." msgstr "" +"써모스사의 보온병. 온도 유지 용으로, 안에 들어 있는 물건의 차가움이나 뜨거움을 유지합니다. 1리터의 액체를 담을 수 있습니다." #: lang/json/CONTAINER_from_json.py msgid "ceramic bowl" @@ -26850,6 +27002,30 @@ msgid "" "when you look at them." msgstr "" +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "" + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "" + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -29250,7 +29426,7 @@ msgid "" "resulting weapon is unwieldy and slow but very heavy hitting." msgstr "철 덩이 몇 개를 단단히 고정시켜 놓은 긴 나무막대기. 매우 들기 힘들고 느리지만 한 방이 매우 묵직하다." -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "재목" @@ -30909,11 +31085,8 @@ msgstr "유리병에 피클을 넣어 발효시키고 있는 중입니다. 일 #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." +"spike." msgstr "" -"나무 막대기에 철로 된 창을 장착한 중세무기. 다른 창과 비교해서 크고 무겁지만, 정확도와 파괴력 면에서 이 창은 비교를 불허할 " -"정도입니다. " #: lang/json/GENERIC_from_json.py msgid "pot" @@ -37308,17 +37481,6 @@ msgstr "" "날개가 달렸으며 곤충을 먹고 사는 포유류인 박쥐의 일종. 동굴이나 다른 공동에서 살며, 초음파의 반향을 이용해서 장애물이 많은 지형도 " "빠른 속도로 이동할 수 있다." -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "연기 곰" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "위풍당당하던 곰이 껍데기만 남은 채 연기를 내뿜고 있다. 시선을 보내는 검은 눈에 가득 찬 것은 적의와... 굶주림이다." - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "흉터 좀비" @@ -37512,10 +37674,9 @@ msgstr "C.H.U.D" #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "" -"C.H.U.D 혹은 인간형 식인 지하 거주자라고 불립니다. 인간이지만 창백하고 지하에 오래 고립되어 있었기 때문에 미쳤습니다." #: lang/json/MONSTER_from_json.py msgid "police bot" @@ -38441,7 +38602,7 @@ msgstr "몸 곳곳에 흉터가 새겨진 거대한 좀비. 가까이 가면 #: lang/json/MONSTER_from_json.py msgid "incandescent husk" -msgstr "" +msgstr "백열발광 좀비" #. ~ Description for incandescent husk #: lang/json/MONSTER_from_json.py @@ -39995,10 +40156,10 @@ msgstr "" "풀을 먹고 사는 빠르고 강한 동물인 북쪽 삼림지대의 흰 꼬리 사슴. 코요테, 늑대, 거대 변종 거미들의 주된 먹잇감이기도 하다." #: lang/json/MONSTER_from_json.py -msgid "labrador mutt" -msgstr "" +msgid "Labrador mutt" +msgstr "래브라도 잡종견" -#. ~ Description for labrador mutt +#. ~ Description for Labrador mutt #: lang/json/MONSTER_from_json.py msgid "" "This once average Labrador mixed breed dog has clearly gone feral. You can " @@ -40007,10 +40168,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "labrador puppy" +msgid "Labrador puppy" msgstr "" -#. ~ Description for labrador puppy +#. ~ Description for Labrador puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Labrador puppy. Much safer to tame than adult " @@ -40024,9 +40185,9 @@ msgstr "불독" #. ~ Description for bulldog #: lang/json/MONSTER_from_json.py msgid "" -"The American Bulldog is a hardy, well built dog, that seems suited for " +"The American bulldog is a hardy, well built dog, that seems suited for " "surviving the apocalypse." -msgstr "아메리칸 불독은 강인하고 잘다져진 몸을 가진 개입니다. 멸명한 세계에서 살아가는데 적합하죠." +msgstr "" #: lang/json/MONSTER_from_json.py msgid "bulldog puppy" @@ -40035,9 +40196,9 @@ msgstr "불독 새끼" #. ~ Description for bulldog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless American Bulldog puppy. Much safer to tame than " +"An adorable, defenseless American bulldog puppy. Much safer to tame than " "adult counterparts." -msgstr "사랑스럽고 연약한 아메리칸 불독 새끼입니다. 성체보다는 길들이기 훨씬 안전합니다." +msgstr "" #: lang/json/MONSTER_from_json.py msgid "pit bull mix" @@ -40046,10 +40207,10 @@ msgstr "" #. ~ Description for pit bull mix #: lang/json/MONSTER_from_json.py msgid "" -"The oft-misunderstood Pit Bull is not actually a single breed but a label " -"for several such as American Pit Bull Terrier and American Staffordshire " -"Terrier. Average abilities and well-known for their 'lock jaw' which isn't " -"real but their incredible determination is." +"The oft-misunderstood pit bull is not actually a single breed but a label " +"for several such as the American pit bull terrier and American Staffordshire" +" terrier. Average abilities and well-known for their 'lock jaw' which isn't" +" real but their incredible determination is." msgstr "" #: lang/json/MONSTER_from_json.py @@ -40059,7 +40220,7 @@ msgstr "" #. ~ Description for pit bull puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Pit Bull puppy. Much safer to tame than adult " +"An adorable, defenseless pit bull puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -40070,9 +40231,9 @@ msgstr "비글" #. ~ Description for beagle #: lang/json/MONSTER_from_json.py msgid "" -"An adorable Beagle that has managed to survive the apocalypse. Being agile " +"An adorable beagle that has managed to survive the apocalypse. Being agile " "and small, they are difficult to shoot at. Generally attacks in packs." -msgstr "대재앙에서 어떻게 살아 남은 귀여운 비글입니다. 작고 빨라서 쏘기 어렵습니다. 보통 무리 지어 공격합니다." +msgstr "" #: lang/json/MONSTER_from_json.py msgid "beagle puppy" @@ -40081,9 +40242,9 @@ msgstr "새끼 비글" #. ~ Description for beagle puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Beagle puppy. Much safer to tame than adult " +"An adorable, defenseless beagle puppy. Much safer to tame than adult " "counterparts." -msgstr "귀엽고 무방비 상태인 새끼 비글입니다. 성인 비글에 비해 조련하기 안전합니다." +msgstr "" #: lang/json/MONSTER_from_json.py msgid "border collie" @@ -40093,7 +40254,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "" "An athletic and hyperactive dog that loves to herd animals and jump, the " -"Border Collie is an agile attacker. Although they can be easy to train, " +"border collie is an agile attacker. Although they can be easy to train, " "they don't work well in packs." msgstr "" @@ -40104,7 +40265,7 @@ msgstr "" #. ~ Description for border collie puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Border Collie puppy. Much safer to tame than adult" +"An adorable, defenseless border collie puppy. Much safer to tame than adult" " counterparts." msgstr "" @@ -40115,7 +40276,7 @@ msgstr "" #. ~ Description for boxer mastiff #: lang/json/MONSTER_from_json.py msgid "" -"An ordinary breed full of affection, the Boxer Mastiff doesn't otherwise " +"An ordinary breed full of affection, the boxer mastiff doesn't otherwise " "stand out amongst other dogs with its capabilities." msgstr "" @@ -40126,15 +40287,15 @@ msgstr "" #. ~ Description for boxer puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Boxer puppy. Much safer to tame than adult " +"An adorable, defenseless boxer puppy. Much safer to tame than adult " "counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "chihuahua" +msgid "Chihuahua" msgstr "" -#. ~ Description for chihuahua +#. ~ Description for Chihuahua #: lang/json/MONSTER_from_json.py msgid "" "It's a tiny Chihuahua. How it has managed to survive is a miracle; although" @@ -40142,10 +40303,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "chihuahua puppy" +msgid "Chihuahua puppy" msgstr "" -#. ~ Description for chihuahua puppy +#. ~ Description for Chihuahua puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Chihuahua puppy. Much safer to tame than adult " @@ -40170,15 +40331,15 @@ msgstr "" #. ~ Description for dachshund puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Dachshund puppy. Much safer to tame than adult " +"An adorable, defenseless dachshund puppy. Much safer to tame than adult " "counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "german shepherd" +msgid "German shepherd" msgstr "" -#. ~ Description for german shepherd +#. ~ Description for German shepherd #: lang/json/MONSTER_from_json.py msgid "" "The original K-9 breed. An easy to train and great attack dog that will " @@ -40186,21 +40347,21 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "german shepherd puppy" +msgid "German shepherd puppy" msgstr "" -#. ~ Description for german shepherd puppy +#. ~ Description for German shepherd puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless German Shepherd puppy. Much safer to tame than " +"An adorable, defenseless German shepherd puppy. Much safer to tame than " "adult counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees" +msgid "Great Pyrenees" msgstr "" -#. ~ Description for great pyrenees +#. ~ Description for Great Pyrenees #: lang/json/MONSTER_from_json.py msgid "" "A large and powerful breed, the Great Pyrenees has a beautiful, thick white " @@ -40209,10 +40370,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees puppy" +msgid "Great Pyrenees puppy" msgstr "" -#. ~ Description for great pyrenees puppy +#. ~ Description for Great Pyrenees puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Great Pyrenees puppy. Much safer to tame than " @@ -40226,7 +40387,7 @@ msgstr "" #. ~ Description for rottweiler #: lang/json/MONSTER_from_json.py msgid "" -"Terrifying breed to face feral, as the Rottweiler breed is descended from " +"Terrifying breed to face feral, as the rottweiler breed is descended from " "Roman legion mastiffs. Robust and vicious, quite capable of mauling a human" " to death." msgstr "" @@ -40238,7 +40399,7 @@ msgstr "" #. ~ Description for rottweiler puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Rottweiler puppy. Much safer to tame than adult " +"An adorable, defenseless rottweiler puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -40249,8 +40410,8 @@ msgstr "" #. ~ Description for cattle dog #: lang/json/MONSTER_from_json.py msgid "" -"An agile and sturdy breed that is welcome on any farm, the Australian Cattle" -" Dog is adept at leaping fences and herding livestock." +"An agile and sturdy breed that is welcome on any farm, the Australian cattle" +" dog is adept at leaping fences and herding livestock." msgstr "" #: lang/json/MONSTER_from_json.py @@ -40260,7 +40421,7 @@ msgstr "" #. ~ Description for cattle dog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Australian Cattle Dog puppy. Much safer to tame " +"An adorable, defenseless Australian cattle dog puppy. Much safer to tame " "than adult counterparts." msgstr "" @@ -41367,6 +41528,17 @@ msgstr "" msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "" +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "연기 곰" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "위풍당당하던 곰이 껍데기만 남은 채 연기를 내뿜고 있다. 시선을 보내는 검은 눈에 가득 찬 것은 적의와... 굶주림이다." + #: lang/json/MONSTER_from_json.py msgid "Compsognathus" msgstr "콤프소그나투스" @@ -43201,7 +43373,7 @@ msgstr[0] "특대 생존용 방화마스크" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from" -" heat, smoke, teargas, and shrapnel. It must be prepared before use." +" heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" #: lang/json/TOOL_ARMOR_from_json.py @@ -44038,6 +44210,40 @@ msgid "" "into an active cable charger system." msgstr "" +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "시위 진압용 헬멧" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "" + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "" + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "" + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." +msgstr "" + #: lang/json/TOOL_from_json.py msgid "integrated toolset" msgid_plural "integrated toolsets" @@ -47566,6 +47772,7 @@ msgid "" "activate the timer. You guess that the explosion would be large enough to " "take out a small house." msgstr "" +"이것은 정말 강력한 무기인 휴대용 핵폭탄입니다. 타이머를 작동시켜 사용합니다. 작은 집을 날려버릴 정도로 파괴력이 굉장합니다." #. ~ Description for mininuke #: lang/json/TOOL_from_json.py @@ -48133,7 +48340,7 @@ msgid "" "This is a portable games console in working condition, with a backlit screen" " allowing you to play in the dark. You can use it to play it for a little " "while, but this requires batteries." -msgstr "" +msgstr "이것은 어둠 속에서도 볼 수 있는 백라이트 스크린이 탑재된 휴대용 게임 콘솔입니다. 배터리를 소모하여 작동합니다." #: lang/json/TOOL_from_json.py msgid "portal generator" @@ -48782,7 +48989,7 @@ msgstr "" "마스크와 접을 수 있는 산소조절기가 같이 있는 압축된 의료용 산소 팩. 일반적으로 비상상황에 사용하여, 천식 발작이나 연기 흡입상태에서 " "회복할 수 있도록 도와주고 기운을 회복시켜줍니다." -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" msgstr[0] "납땜용 인두" @@ -50379,14 +50586,6 @@ msgid "" " to a potato." msgstr "" -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "" - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" @@ -51550,6 +51749,17 @@ msgid "autonomous surgical razors" msgid_plural "autonomous surgical razors" msgstr[0] "자율작동 수술용 칼날" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While" +" activated, they will continously drain power to make automated precise cuts" +" but you will be unable to wield anything." +msgstr "" +"사용자의 손가락에 수술용 칼날을 이식했습니다. 작동시키면, 전력을 지속적으로 소모하면서 자동으로 정밀한 절단을 할 수 있지만 아무것도 " +"장비할 수 없습니다." + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -53714,6 +53924,11 @@ msgid "" "of impaired movement." msgstr "" +#: lang/json/bionic_from_json.py lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "이온 과부하 발생기" + #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" msgstr "" @@ -53727,12 +53942,6 @@ msgid "" "already, it will boost the rate of recovery while you sleep." msgstr "" -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "이온 과부하 발생기" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "자율작동 수술용 칼날" @@ -55837,12 +56046,12 @@ msgstr "레이저로 조준됨" msgid "A laser sight is targeting you!" msgstr "레이저 사이트가 당신을 조준하고 있다!" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" msgstr "흡연" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "짙은 연기를 폐 깊숙히까지 들이마셨다." @@ -56719,11 +56928,9 @@ msgstr "약한 진정제 가스" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" -"You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort." +"You are thoroughly relaxed and don't feel like moving. Fighting? Too much " +"effort." msgstr "" -"힘 - 3; 민첩성 - 3; 지능 - 2; 지각 - 4\n" -"극도로 편안해서 도저히 움직일 맘이 안생깁니다. 싸움이요? 너무 귀찮네요." #. ~ Apply message for effect(s) 'Relaxation gas'. #: lang/json/effects_from_json.py @@ -57058,11 +57265,12 @@ msgstr "거의 회복됨" msgid "This damaged limb is slowly regaining its functions." msgstr "이 부위는 서서히 기능을 되찾아가고 있다." -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" msgstr "불구" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "이 부위는 사용하기 어려울 정도로 손상되어 회복하려면 부목이 필요하다." @@ -59507,8 +59715,7 @@ msgstr "" " 재사용 확률이 높습니다." #: lang/json/gun_from_json.py lang/json/gun_from_json.py -#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py -#: lang/json/gunmod_from_json.py src/item.cpp +#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" msgid "pistol" msgstr "권총" @@ -60328,10 +60535,10 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" #: lang/json/gun_from_json.py @@ -60575,7 +60782,7 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Special 700" msgid_plural "Special 700s" -msgstr[0] "" +msgstr[0] "스페셜 700" #: lang/json/gun_from_json.py msgid "" @@ -60886,7 +61093,7 @@ msgstr "" #: lang/json/gun_from_json.py msgid "handmade six-shooter" msgid_plural "handmade six-shooters" -msgstr[0] "" +msgstr[0] "수제 6연장 리볼버" #: lang/json/gun_from_json.py msgid "" @@ -61039,12 +61246,10 @@ msgstr[0] "LeMat 리볼버" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those" " who wander the \"Earth-that-was\"." msgstr "" -"원조 LeMat 리볼버의 현대적인 개수품으로 남북 전쟁때 생산된 희귀하고 비싼 총기입니다. 9발들이 현용 .44 탄과 12게이지 탄 한 " -"발을 장전 할 수 있습니다. \"그 시절의 지구\"를 떠돌아다니는 방랑자들의 필수품." #: lang/json/gun_from_json.py msgid "Ruger Redhawk" @@ -61708,6 +61913,8 @@ msgid "" "now only concerned in eating you, this million dollar baby has been reduced " "to little more than a novelty item." msgstr "" +"주문제작식 9mm 기관단총으로 비즈니스 케이스로 위장했고 신소재와 현명한 내부구조 덕택에 보안 검사에도 걸리지 않는다. 뭐, 지금의 " +"경비원들이야 인간 잡아먹는것만 신경쓰니까 이 백만달러짜리 깜찍이는 그냥 신기한 장난감일 뿐이다." #: lang/json/gun_from_json.py msgid "Calico M960" @@ -64181,6 +64388,32 @@ msgid "" "reduction to accuracy." msgstr "" +#: lang/json/gunmod_from_json.py +msgid "belt feed adapter" +msgid_plural "belt feed adapters" +msgstr[0] "벨트 급탄 어댑터" + +#: lang/json/gunmod_from_json.py +msgid "" +"A kit providing the necessary parts for permanently converting a firearm " +"from magazine to belt-feed. Guaranteed to void your warranty." +msgstr "총기를 탄창 급탄식에서 벨트 급탄식으로 영구히 바꾸는데 필요한 부품을 담은 키트. 제품 보증이 무효화 됩니다." + +#: lang/json/gunmod_from_json.py +msgid "magazine" +msgstr "탄창" + +#: lang/json/gunmod_from_json.py +msgid "tuned mechanism" +msgid_plural "tuned mechanisms" +msgstr[0] "정밀 총기부품" + +#: lang/json/gunmod_from_json.py +msgid "" +"A set of finely tuned internal components which increase the precision and " +"reliably of a firearm." +msgstr "화기의 정밀도와 신뢰성을 높여줄 미세 조정 내장 부품 세트입니다." + #: lang/json/gunmod_from_json.py msgid "arrow rest" msgid_plural "arrow rests" @@ -64304,7 +64537,7 @@ msgstr[0] "" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." +"firearm, contributing to both accuracy and damage." msgstr "" #: lang/json/gunmod_from_json.py @@ -64327,7 +64560,7 @@ msgstr[0] "" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." +"shooting. Increases damage output and weapon range." msgstr "" #: lang/json/gunmod_from_json.py @@ -64352,9 +64585,8 @@ msgstr[0] "인체공학적 손잡이" #: lang/json/gunmod_from_json.py msgid "" -"A set of ergonomic replacement furniture for a firearm improving handling " -"and accuracy." -msgstr "총기의 조작성과 정확도를 향상하는 인체공학적 외장재 세트." +"A set of ergonomic replacement furniture for a firearm improving handling." +msgstr "" #: lang/json/gunmod_from_json.py msgid "beam scatterer" @@ -64399,21 +64631,6 @@ msgstr "고밀도의 축전지. 사거리와 피해량을 증가시키지만 전 msgid "emitter" msgstr "방출기" -#: lang/json/gunmod_from_json.py -msgid "belt feed adapter" -msgid_plural "belt feed adapters" -msgstr[0] "벨트 급탄 어댑터" - -#: lang/json/gunmod_from_json.py -msgid "" -"A kit providing the necessary parts for permanently converting a firearm " -"from magazine to belt-feed. Guaranteed to void your warranty." -msgstr "총기를 탄창 급탄식에서 벨트 급탄식으로 영구히 바꾸는데 필요한 부품을 담은 키트. 제품 보증이 무효화 됩니다." - -#: lang/json/gunmod_from_json.py -msgid "magazine" -msgstr "탄창" - #: lang/json/gunmod_from_json.py msgid "leadworks magazine adapter" msgid_plural "leadworks magazine adapters" @@ -64432,19 +64649,9 @@ msgstr[0] "매치 트리거" #: lang/json/gunmod_from_json.py msgid "" -"A precision weighted trigger assembly that improves a firearm's accuracy." -msgstr "정밀성이 중시된 방아틀뭉치로 화기의 정확성을 높여줍니다." - -#: lang/json/gunmod_from_json.py -msgid "tuned mechanism" -msgid_plural "tuned mechanisms" -msgstr[0] "정밀 총기부품" - -#: lang/json/gunmod_from_json.py -msgid "" -"A set of finely tuned internal components which increase the precision and " -"reliably of a firearm." -msgstr "화기의 정밀도와 신뢰성을 높여줄 미세 조정 내장 부품 세트입니다." +"A precision weighted trigger assembly that slightly improves a firearm's " +"accuracy." +msgstr "" #: lang/json/gunmod_from_json.py msgid "firearm waterproofing" @@ -64597,8 +64804,8 @@ msgstr[0] "자이로 안정기" #: lang/json/gunmod_from_json.py msgid "" "An advanced unit that straps onto the side of your firearm and reduces " -"vibration, greatly reducing recoil and increasing accuracy." -msgstr "총기 측면에 부착하여 진동과 반동을 상당히 감소시키고 정확도를 증가시키는 최신 부품." +"vibration, greatly reducing recoil and slightly increasing accuracy." +msgstr "" #: lang/json/gunmod_from_json.py msgid "LW gyroscopic stabilizer" @@ -65954,11 +66161,9 @@ msgstr "탄창 물품 설명에도 호환되는 탄약이 나와 있습니다." msgid "" "Note that while several ammo types exist for a given caliber and magazine " "type, you can't mix and match these types into a single magazine. You can't " -"for example load 9x19mm JHP and 9x19 FMJ ammo into the same magazine, since " -"a magazine always requires identical rounds to be loaded in it." +"for example load 9x19mm JHP and 9x19mm FMJ ammo into the same magazine, " +"since a magazine always requires identical rounds to be loaded in it." msgstr "" -"구경이나 탄창에 지원되는 여러 종류의 탄약이 있지만, 한 탄창에 여러 탄종을 섞어서 넣을 수 는 없습니다. 예를 들어 JHP 탄약과 " -"FMJ 탄약을 한 탄창에 넣을 수 는 없습니다. 탄창에는 똑같은 탄종의 탄약만 넣어야 합니다." #: lang/json/help_from_json.py msgid "" @@ -66755,6 +66960,10 @@ msgstr "씹기" msgid "Clear rubble" msgstr "돌무더기 정리" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "코카인 흡입하기" @@ -66783,6 +66992,11 @@ msgstr "불기" msgid "Make it talk" msgstr "말 시키기" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "흡연" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "벗기" @@ -66824,6 +67038,10 @@ msgstr "흡인하기" msgid "Drill" msgstr "구멍 뚫기" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "묻기" + #: lang/json/item_action_from_json.py lang/json/item_action_from_json.py #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Read" @@ -66866,6 +67084,7 @@ msgid "Squeeze" msgstr "쥐어짜기" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" msgstr "놀기" @@ -66903,6 +67122,11 @@ msgstr "면도" msgid "Siphon" msgstr "흡인" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "흡연" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "글 쓰기" @@ -66955,6 +67179,11 @@ msgstr "탄약 삽입/빼내기" msgid "Make some noise" msgstr "소리 내기" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "놀기" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "활성화/비활성화" @@ -67852,10 +68081,18 @@ msgstr "측면 보호구 착용" msgid "Assign invlets to armor" msgstr "보호구 단축키 설정" +#: lang/json/keybinding_from_json.py +msgid "Sort armor into natural layer order" +msgstr "" + #: lang/json/keybinding_from_json.py msgid "Equip armor from inventory" msgstr "소지품창에 있는 보호구 착용" +#: lang/json/keybinding_from_json.py +msgid "Equip armor from inventory at this position" +msgstr "" + #: lang/json/keybinding_from_json.py msgid "Unequip selected armor" msgstr "선택한 보호구 벗기" @@ -68701,6 +68938,22 @@ msgstr "우선도 내리기" msgid "Change sort order" msgstr "정렬방식 전환" +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "불" + #: lang/json/keybinding_from_json.py msgid "List items and monsters" msgstr "물품 및 적 목록화" @@ -68883,13 +69136,11 @@ msgstr "사용자 정의색 제거" msgid "Load color template" msgstr "글자색 템플릿 불러오기" -#: lang/json/keybinding_from_json.py src/craft_command.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/veh_interact.cpp msgid "Yes" msgstr "예" -#: lang/json/keybinding_from_json.py src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/options.cpp src/veh_interact.cpp msgid "No" msgstr "아니오" @@ -69039,6 +69290,11 @@ msgstr "통합 전산화 은행" msgid "Open Vault" msgstr "금고 열기" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -69734,7 +69990,8 @@ msgid "Emergency Message" msgstr "비상 메시지" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py lang/json/mapgen_from_json.py +#: lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "외부 전원 비활성화" @@ -69795,7 +70052,6 @@ msgstr "오류: 신호 끊김" #. ~ Computer option #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py -#: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "중계기 모듈 설치" @@ -71132,7 +71388,8 @@ msgstr "도서관을 찾아봐." msgid "Got that book for me?" msgstr "책 가져왔어?" -#: lang/json/mission_def_from_json.py src/npctalk.cpp src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Thanks!" msgstr "고마워!" @@ -71943,12 +72200,8 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." +"prophesied events accurately before concerning the Church of Starry Wisdom." msgstr "" -"네가 받아준다면 맡기고 싶은 일이 또 있어. 일기장의 그 사제가 특별히 기록해둔 죄수가 있거든. 그에게 무슨 일이 있었는지나 그가 자기 " -"감방에 뭔가 남긴게 없는지 좀 봐줄 수 있나 싶어서. 사제는 그 죄수가, 좋게 말해서 상당히 불안정했다고 하는데, 그 사제 개인적으로는 " -"참회의 예언자 같은 걸로 믿었다는군. 난 그런 말을 그냥 무시할 위치는 아니고... 그 죄수는 별의 지혜 교단에 엮이기 전엔 아주 정확한" -" 예언을 했던 모양이야." #: lang/json/mission_def_from_json.py msgid "" @@ -72283,7 +72536,7 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels" " is boosted so we can pick it up at much longer ranges. I really need you " @@ -79153,6 +79406,8 @@ msgid "" " from, waiting, or otherwise being stationary for a while on diggable " "terrain, you'll extract nutrients and water from the soil." msgstr "" +"뿌리를 박게됩니다. 독서를 하거나 낚시, 대기중, 혹은 다른 이유로 고정된 상태로 있고 해당 지형이 땅을 팔수 있을때 뿌리를 박아 " +"영양분과 수분을 땅에서 빨아들이게 됩니다." #: lang/json/mutation_from_json.py msgid "Rooter" @@ -79164,6 +79419,7 @@ msgid "" "You find it difficult not to sink roots when able. You extract nutrients " "and water whenever on diggable terrain, but move more slowly." msgstr "" +"뿌리를 내릴 욕구를 저항하기 힘들게 됩니다. 굴착이 가능한 지형이 아니더라도 영양분과 수분을 흡수할수 있지만, 이동속도가 느려집니다." #: lang/json/mutation_from_json.py msgid "Chloromorphosis" @@ -79709,7 +79965,7 @@ msgstr "" #: lang/json/mutation_from_json.py msgid "Lidless Eyes" -msgstr "" +msgstr "눈꺼플 없는 눈" #. ~ Description for Lidless Eyes #: lang/json/mutation_from_json.py @@ -79719,28 +79975,30 @@ msgid "" "provides minor armor. It also allows you to sleep with your eyes open! " "Activate to cause the approach of hostile creatures to wake you up." msgstr "" +"실제 물고기처럼 눈꺼플이 사라지고, 대신 약간의 보호력을 가진 투명한 막으로 눈이 덮이게 되었습니다. 이제 눈을 뜨고도 잘 수 있습니다!" +" 적대적인 대상이 접근하면 잠에서 깨게됩니다." #: lang/json/mutation_from_json.py msgid "Aqueous Repose" -msgstr "" +msgstr "수중 친화성" #. ~ Description for Aqueous Repose #: lang/json/mutation_from_json.py msgid "" "Falling asleep underwater is easy for you, and you spend less time asleep " "when you rest there. You can also eat underwater, though you can't drink." -msgstr "" +msgstr "수중에서 수면이 쉬워지고, 수면시간이 단축됩니다. 수중에서 먹을 순 있게되지만, 마시는건 안됩니다." #: lang/json/mutation_from_json.py msgid "Toxic Flesh" -msgstr "" +msgstr "독성 피부" #. ~ Description for Toxic Flesh #: lang/json/mutation_from_json.py msgid "" "Your flesh is highly poisonous, and creatures that bite you will receive a " "nasty surprise." -msgstr "" +msgstr "피부가 고농도의 독성을 가지게되며, 당신을 무는 대상은 이 깜짝 선물을 받게 됩니다." #: lang/json/mutation_from_json.py msgid "Freshwater Osmosis" @@ -80700,7 +80958,7 @@ msgstr "강" msgid "river bank" msgstr "강기슭" -#: lang/json/overmap_terrain_from_json.py +#: lang/json/overmap_terrain_from_json.py lang/json/snippet_from_json.py msgid "house" msgstr "주택" @@ -81775,6 +82033,14 @@ msgstr "" msgid "mass grave" msgstr "" +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "" + #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" msgstr "버려진 드라이브 스루" @@ -86209,7 +86475,7 @@ msgstr "" #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Rookie" -msgstr "" +msgstr "초짜" #. ~ Profession (male Rookie) description #: lang/json/professions_from_json.py @@ -86217,12 +86483,12 @@ msgctxt "prof_desc_male" msgid "" "It's been months since the Cataclysm and somehow you're still greener than a" " tree. Maybe you're just a slow learner, who knows." -msgstr "" +msgstr "대재앙이 닥친지 한달이 넘었지만, 당신은 새싹같이 새파란 초짜입니다. 뭐 누가 압니까 그냥 배우는게 조금 느린것 뿐일지." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Rookie" -msgstr "" +msgstr "초짜" #. ~ Profession (female Rookie) description #: lang/json/professions_from_json.py @@ -86230,29 +86496,29 @@ msgctxt "prof_desc_female" msgid "" "It's been months since the Cataclysm and somehow you're still greener than a" " tree. Maybe you're just a slow learner, who knows." -msgstr "" +msgstr "대재앙이 닥친지 한달이 넘었지만, 당신은 새싹같이 새파란 초짜입니다. 뭐 누가 압니까 그냥 배우는게 조금 느린것 뿐일지." #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Novice" -msgstr "" +msgstr "초보" #. ~ Profession (male Novice) description #: lang/json/professions_from_json.py msgctxt "prof_desc_male" msgid "You're a merely competent survivor so far. Let's change that, yeah?" -msgstr "" +msgstr "여전히 당신은 생존자 수준에 겨우 미치는 수준입니다. 이제 이를 바꿀때가 되었습니다. 그럴거죠?" #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Novice" -msgstr "" +msgstr "초보" #. ~ Profession (female Novice) description #: lang/json/professions_from_json.py msgctxt "prof_desc_female" msgid "You're a merely competent survivor so far. Let's change that, yeah?" -msgstr "" +msgstr "여전히 당신은 생존자 수준에 겨우 미치는 수준입니다. 이제 이를 바꿀때가 되었습니다. 그럴거죠?" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -86537,7 +86803,7 @@ msgctxt "prof_desc_male" msgid "" "A master of arms and armor and a fearsome martial combatant; you are a " "fighter, forged in warfare and tempered on the battlefield." -msgstr "" +msgstr "각종 병장기와 갑주의 운용에 능통하며, 위협적인 무술의 달인으로서 당신은 전투와 전쟁을 통해 단련된 전사입니다." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -86550,7 +86816,7 @@ msgctxt "prof_desc_female" msgid "" "A master of arms and armor and a fearsome martial combatant; you are a " "fighter, forged in warfare and tempered on the battlefield." -msgstr "" +msgstr "각종 병장기와 갑주의 운용에 능통하며, 위협적인 무술의 달인으로서 당신은 전투와 전쟁을 통해 단련된 전사입니다." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -87184,6 +87450,124 @@ msgid "" "find yourself needing those skills to survive. " msgstr "" +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "용접사" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" +"당신은 대재앙전에 조선업체에서 용접사로 근무했습니다. 대재앙이 닥치자 집으로 돌아가기로 했습니다. 적어도 뭔가 만들 도구는 가지고 " +"있습니다." + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "용접사" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" +"당신은 대재앙전에 조선업체에서 용접사로 근무했습니다. 대재앙이 닥치자 집으로 돌아가기로 했습니다. 적어도 뭔가 만들 도구는 가지고 " +"있습니다." + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "근본주의 생존주의자" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"이런 일이 터질줄 알았지, 다 잦될줄 알았다니까. 당신은 이런날을 준비했습니다. 장비에 의존하는게 아니라 기술을 갈고 닦았습니다. 숲에서" +" 보낸 그 많은 시간들이 쓸모가 있었습니다. 선조들이 기술 없이도 생존했었으니 못하면 천벌 받을지로 모릅니다." + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "근본주의 생존주의자" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"이런 일이 터질줄 알았지, 다 잦될줄 알았다니까. 당신은 이런날을 준비했습니다. 장비에 의존하는게 아니라 기술을 갈고 닦았습니다. 숲에서" +" 보낸 그 많은 시간들이 쓸모가 있었습니다. 선조들이 기술 없이도 생존했었으니 못하면 천벌 받을지로 모릅니다." + #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "WEAPON" @@ -87406,31 +87790,31 @@ msgstr "누군가 당신이 알게하고 싶지 않은 것" msgid "" "The first thing we are going to need is a command tent to manage and task " "workers from." -msgstr "" +msgstr "처음 해야할 일은 일꾼 관리와 일감 지시를 위한 지휘 텐트를 세우는것입니다." #: lang/json/recipe_from_json.py msgid "" "We're going to need a fire pit and a bed if we want to stay here " "permanently." -msgstr "" +msgstr "여기에 정착하려면 불피울곳과 침대가 필요할겁니다." #: lang/json/recipe_from_json.py msgid "" "To make this outpost functional we are going to need storage containers to " "organize our supplies." -msgstr "" +msgstr "이 기지가 돌아가려면 보급품을 관리할 저장할 곳이 필요합니다." #: lang/json/recipe_from_json.py msgid "" "Next we should expand the camp to comfortably support two people " "indefinitely." -msgstr "" +msgstr "다음에 할 일은 캠프를 확장해서 두 사람이 더 편히 지낼수 있도록 하는 것입니다." #: lang/json/recipe_from_json.py msgid "" "Additional housing and storage will allow our camp to expand into " "specialized industries." -msgstr "" +msgstr "집과 저장고를 추가하면 우리 캠프에서 전문화된 생산이 가능해집니다." #: lang/json/recipe_from_json.py msgid "" @@ -88346,17 +88730,17 @@ msgstr "챌린지-연구소" #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." -msgstr "" +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." +msgstr "당신은 출구가 어딘지 모르겠는 연구소에 갇혀버렸습니다! 탈출할 방법을 찾지 못하면 굶어 죽게 될 것입니다." #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." -msgstr "" +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." +msgstr "당신은 출구가 어딘지 모르겠는 연구소에 갇혀버렸습니다! 탈출할 방법을 찾지 못하면 굶어 죽게 될 것입니다." #. ~ Starting location for scenario 'Challenge-Lab'. #: lang/json/scenario_from_json.py @@ -89136,6 +89520,42 @@ msgid "" "zombies." msgstr "" +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" @@ -89285,7 +89705,7 @@ msgid "" " a user to navigate complex software systems and even bypass their security." msgstr "컴퓨터를 사용하고 조작하는 기술입니다. 수준이 높으면 복잡한 소프트웨어를 사용하거나 보안을 뚫을 수 있습니다." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "요리" @@ -89406,7 +89826,7 @@ msgstr "" "물에서 떠있을 수 있는 능력을 말합니다. 이 기술은 물에서 익사하는 것을 방지하고, 깊은 수심의 물속에서 치르는 전투와 수영속도에 영향을" " 미칩니다. 그리고 무거운 장비를 입고 수영할 시 발생하는 상해에도 관여합니다." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "재봉" @@ -89907,6 +90327,42 @@ msgid "" "spawn with more resources." msgstr "" +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best" +" friend." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "You feel great! It doesn't seem like wounds could even slow you down for " @@ -90690,6 +91146,566 @@ msgstr "" "적대적인 개체와 조우했고 대부분은 완전히 교신이 끊겼다. 새비지 박사는 볼트로 알려진 지하 복합단지로 피신하고 PE062를 지속적으로 " "생산할 것을 제안했다." +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "찌질이" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -90866,7 +91882,7 @@ msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " "a man carrying a somewhat confused horse on his shoulders. He is flanked by" " two scantily clad nurses who hold bloody chainsaws and give approving " -"thumbs up. His bulging knees and elbows are stiched and seem to be the " +"thumbs up. His bulging knees and elbows are stitched and seem to be the " "source of his ability. The caption reads: \"Brand new! Horse power at " "hand!\"" msgstr "" @@ -90874,7 +91890,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " -"a man smiling while being relentlesly punched by a boxer. He doesn't even " +"a man smiling while being relentlessly punched by a boxer. He doesn't even " "sweat as punches have no effect on him. Two scantily clad nurses give " "approving thumbs up from the background. The caption reads: \"Bouncy as " "never before! Absorb those shocks!\"" @@ -93754,6 +94770,191 @@ msgid "" " you in a sleep." msgstr "" +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no" +" environment to save now, but one can still save thyself I guess." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their components." +" This guy around here, McSomething whatever his name is, is a master at " +"this." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are" +" always better than two." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my" +" sorry ass away from the horde, with nothing more but some white powder I " +"got from that zombie. Saved me that time." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it " +"lemon?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "" + #: lang/json/snippet_from_json.py msgid " " msgstr ". ." @@ -93858,10 +95059,6 @@ msgstr "" msgid "piece of shit" msgstr "" -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "찌질이" - #: lang/json/snippet_from_json.py msgid "scumbag" msgstr "" @@ -94138,7 +95335,7 @@ msgstr "안녕 ." msgid "never" msgstr "" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" msgstr "안 돼" @@ -95034,7 +96231,7 @@ msgstr "좋아 손들어!" msgid "Hands in the air, !" msgstr "손 위로 들어, 야!" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" msgstr "움직여" @@ -97341,7 +98538,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Critical Error!\"" -msgstr "" +msgstr "\"치명적인 오류!\"" #: lang/json/speech_from_json.py msgid "\"Ow ow ow!\"" @@ -97365,7 +98562,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Ouch!\"" -msgstr "" +msgstr "\"아야!\"" #: lang/json/speech_from_json.py msgid "\"Sentry mode activated.\"" @@ -97745,7 +98942,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"[sigh] Don't tell anyone about this.\"" -msgstr "" +msgstr "\"[한숨] 누구에게도 이것을 알리지마.\"" #: lang/json/speech_from_json.py msgid "\"Well, I tried. Best of luck!\"" @@ -97757,7 +98954,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Hey, thanks so much!\"" -msgstr "" +msgstr "\"이봐, 정말 고마워!\"" #: lang/json/speech_from_json.py msgid "\"Don't be a stranger!\"" @@ -97783,7 +98980,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"No, wait, wait!\"" -msgstr "" +msgstr "\"잠깐, 기다려, 기다려!\"" #: lang/json/speech_from_json.py msgid "\"Hey, hold on now WHOA WHOA WHOA!\"" @@ -98054,10 +99251,26 @@ msgstr "LMOE 대피소" msgid "Middle of Nowhere" msgstr "허허벌판" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "과학 연구소" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "과학 연구소 최하층" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "동결된 과학 연구소" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "동결된 과학 연구소 최하층" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "쇼핑몰 물류구역" @@ -98154,6 +99367,14 @@ msgstr "저택" msgid "Gas Station" msgstr "주유소" +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" +msgstr "" + #: lang/json/talk_topic_from_json.py msgid "That sure is a shiny badge you got there!" msgstr "너 번쩍거리는 배지를 달고 있네?" @@ -98186,8 +99407,7 @@ msgstr "네 귀는 왜 그래?" msgid "Anything I can help with?" msgstr "내가 뭐 도울 것 없을까?" -#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Well, bye." msgstr "그럼, 잘 가." @@ -98406,7 +99626,8 @@ msgstr "내가 알 바 아냐." msgid "I see." msgstr "알겠어." -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Oh, okay." msgstr "오. 알았어." @@ -98483,6 +99704,254 @@ msgstr "고맙군." msgid "Thanks, bye." msgstr "고마워. 잘가." +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "흠, 우리 뿐인 것 같네." + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "최소한 피난처는 있잖아." + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "이제 뭘 해야하지?" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "조언 좀 해줄래?" + +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "뭔가 해줄 일이 있을까?" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "나하고 같이 여행할래?" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's trade items." +msgstr "거래하자." + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "글쎄, 보급품하고 다른 생존자를 찾아보는 건 어떨까." + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "아마 우린 여기를 떠나는 게 좋을 것 같아." + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to" +" disappear quickly from here." +msgstr "만약 우리가 여기서 빨리 벗어나야 한다면 차를 한대 얻는 게 좋을거야." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "" +"우린 주위에 있는 농장 중 하나에 들러보는 게 좋을거야. 농장에선 약간의 음식을 공급받을 수 있고 도시에서 그다지 멀지 않으니까." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "우린 저 도시에서 멀리 벗어나는게 좋을거야, 저기에 유용한 것들이 많이 있더라도 말이지." + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "흠, 알겠어." + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "내가 항생제를 얻기 전까진 안돼..." + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "물어봤잖아, 나중에 다시 물어보라고." + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "내가 왜 너하고 같이 가야하는데?" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "알았어. 항생제를 가져다주지." + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "그래, 그래, 나중에 물어보지." + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "나는 너를 안전하게 지켜줄 수 있어." + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "당신은 나를 안전하게 지켜줄 수 있어요." + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "우린 친구지, 그렇지?" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "안 그러면 죽여버리겠어." + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "좋았아, 너하고 같이 가지!" + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "훌륭해!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "좋았어, 가자!" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "음... 내 생각은 다른데." + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "정말 떠날거야?" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "그래, 잘 알겠어. 안녕." + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "아니, 그냥 농담이야." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp +msgid "What is it?" +msgstr "뭐야?" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "얼마나 더 멀리?" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "잠깐 지휘해줬으면 좋겠는데." + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "물러서라. 지금은 내가 리더야." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "가자." + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "좋아. 네가 대장을 하라고." + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "좋아. 그 밖에..." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "좋아, 가자." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "좋아, 좋아." + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "시발 안되지, 그랬다간 뒤쳐질거라고!" + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "경계 중이야." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "네가 나와 같이 가줬으면 좋겠어." + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "또 봐." + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "너 자꾸 왜 그래? 너가 이러는 거 엄청 불편해." + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "알겠어. 귀찮게 굴지 않을게." + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "그냥 마음속에 담아 두는게 좋겠어." + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "알겠어..." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "좋아. 이거 받아." + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "고마워!" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "고마워! 그런데 좀 더 가질 수 있을까?" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "고마워, 나중에 봐!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "알았어 알았어.. 미안해." + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "장난치지 말고, 좀 더 줘!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "그래, 좋아, 안녕." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "좋아, 시작해볼까." + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "그거 좋네." + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "좋아. 길을 안내해." + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "아니, 우린 여기 있어도 괜찮을거야." + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "다시 생각해봤어. 신경 쓰지마." + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "안녕하세요 보안관님." @@ -99209,10 +100678,6 @@ msgstr "" msgid "We're abandoning this camp." msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "또 봐." - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "너가 거래할 목적으로 왔으면 좋겠는데." @@ -99250,7 +100715,7 @@ msgstr "" msgid "Are you looking to buy anything else?" msgstr "혹시 나한테서 구매하고 싶은 것이 있니?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." msgstr "좋아..." @@ -99379,7 +100844,7 @@ msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of" " operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " @@ -100051,10 +101516,6 @@ msgstr "뭐? 난 미용사야... 머리를 자르지. 싼 가격에 미용을 msgid "I can't imagine what I'd need your assistance with." msgstr "" -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "" @@ -100123,10 +101584,6 @@ msgstr "함께하게 되서 기쁘구만." msgid "Can I trade for supplies?" msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "뭔가 해줄 일이 있을까?" - #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " @@ -100403,7 +101860,7 @@ msgstr "가방 챙겨, . 떠날거야." msgid "Not at technique at all" msgstr "별로 어려운 기술도 아니야" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp src/martialarts.cpp msgid "Block" msgstr "막기" @@ -100561,8 +102018,6 @@ msgid "Rapid Strike" msgstr "속공" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "행동점수 50% 소모해 66% 피해를 줌" @@ -100674,11 +102129,6 @@ msgstr "이(가) 채찍으로 %s의 무장을 해제시켰다" msgid "Counterattack" msgstr "반격" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -100693,22 +102143,10 @@ msgstr "이(가) %s에게 반격했다." msgid "Feint" msgstr "페인트 모션" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "잡기 풀기" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -100723,11 +102161,6 @@ msgstr "이(가) %s에게 능숙한 일격을 날렸다." msgid "Cross" msgstr "크로스" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -100742,12 +102175,6 @@ msgstr "이(가) %s에게 세게 크로스를 날렸다." msgid "Jab" msgstr "잽" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -100762,11 +102189,6 @@ msgstr "이(가) %s에게 빠른 잽을 날렸다." msgid "Uppercut" msgstr "어퍼컷" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -100781,11 +102203,6 @@ msgstr "이(가) %s에게 어퍼컷을 먹였다." msgid "Cross Counter" msgstr "크로스 카운터" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -100814,14 +102231,6 @@ msgstr "이(가) %s에 빠른 펀치를 날렸다." msgid "karate chop" msgstr "가라테 손날치기" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -100836,11 +102245,6 @@ msgstr "이(가) %s에 가라테 손날치기를 가했다." msgid "throw" msgstr "던지기" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -100855,11 +102259,6 @@ msgstr "이(가) %s을(를) 집어던졌다." msgid "dodge throw" msgstr "회피 던지기" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -100874,12 +102273,6 @@ msgstr "이(가) %s을(를) 내던졌다." msgid "feint at" msgstr "페인트 동작" -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -100890,11 +102283,6 @@ msgstr "%s에 페인트를 걸었다." msgid " feints at %s" msgstr "이(가) %s에 페인트를 걸었다." -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -100905,21 +102293,11 @@ msgstr "%s의 무장을 해제시켰다." msgid " disarms %s" msgstr "이(가) %s의 무장을 해제시켰다." -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py lang/json/technique_from_json.py #: src/monster.cpp msgid "grab" msgstr "붙잡기" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "정확한 일격" @@ -100934,20 +102312,10 @@ msgstr "%s에 일격을 날렸다." msgid " strikes %s" msgstr "이(가) %s에게 일격을 날렸다." -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "팔꿈치 공격" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -100962,11 +102330,6 @@ msgstr "이(가) %s을(를) 팔꿈치로 공격했다." msgid "kick" msgstr "발차기 공격" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -100991,19 +102354,6 @@ msgstr "%s에 뛰어무릎차기를 날렸다." msgid " flying knees %s" msgstr "이(가) %s에 뛰어무릎차기를 날렸다." -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -101014,32 +102364,14 @@ msgstr "%s에 잽을 날렸다." msgid " jabs %s" msgstr "이(가) %s에게 잽을 날렸다." -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "잡기 풀기" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "기습 공격" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min" -" 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -101054,11 +102386,6 @@ msgstr "이(가) %s에 예상 못할 공격을 가했다." msgid "axe-kick" msgstr "내려차기" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -101073,11 +102400,6 @@ msgstr "이(가) %s에 내려차기를 먹였다." msgid "side kick" msgstr "옆차기" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -101092,11 +102414,6 @@ msgstr "이(가) %s에 옆차기를 날렸다." msgid "sweep kick" msgstr "후려차기" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -101111,11 +102428,6 @@ msgstr "이(가) %s을(를) 후려찼다." msgid "biojutsu counter" msgstr "바이오유도 반격" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -101144,11 +102456,6 @@ msgstr "이(가) 빠르게 %s을(를) 그어버렸다." msgid "biojutsu impale" msgstr "바이오유도 지르기" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -101159,20 +102466,10 @@ msgstr "%s에 강한 지르기를 가했다." msgid " brutally impales %s" msgstr "이(가) %s에 강한 지르기를 먹였다." -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "넓은 타격" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -101187,13 +102484,6 @@ msgstr "이(가) %s을(를) 크게 베었다." msgid "Drunk feint" msgstr "술고래의 속임수" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -101208,11 +102498,6 @@ msgstr "이(가) 비틀거리며 %s에게 곁눈질을 날렸습니다. msgid "Drunk counter" msgstr "술고래의 반격" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -101227,12 +102512,6 @@ msgstr "이(가) 휘청거리다가 갑자기 거친 공격으로 %s을 msgid "Fencing lunge" msgstr "펜싱 런지" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -101247,11 +102526,6 @@ msgstr "이(가) %s을(를) 향해 몸을 뻗으며 찔렀다." msgid "Fencing thrust" msgstr "펜싱 스러스트" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -101266,11 +102540,6 @@ msgstr "이(가) 팔을 뻗어 %s을(를) 찔렀다." msgid "Fencing stop thrust" msgstr "펜싱 스톱 스러스트" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -101285,11 +102554,6 @@ msgstr "이(가) %s에 완벽한 스톱 스러스트를 찔러넣었다 msgid "Round strike" msgstr "" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -101318,11 +102582,6 @@ msgstr "" msgid "Snap strike" msgstr "" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -101337,11 +102596,6 @@ msgstr "" msgid "Combination strike" msgstr "" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -101356,11 +102610,6 @@ msgstr "" msgid "free strike" msgstr "" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -101375,13 +102624,6 @@ msgstr "" msgid "puño strike" msgstr "" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -101396,11 +102638,6 @@ msgstr "" msgid "knee strike" msgstr "" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -101415,11 +102652,6 @@ msgstr "" msgid "hamstring" msgstr "햄스트링" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -101434,12 +102666,6 @@ msgstr "이(가) %s의 고간을 쳐서 넘어트렸다" msgid "Vicious Precision" msgstr "" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -101454,11 +102680,6 @@ msgstr "" msgid "Silat Brutality" msgstr "실랏 강격" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -101468,11 +102689,6 @@ msgstr "" msgid "Dirty Hit" msgstr "고간 타격" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -101515,11 +102731,6 @@ msgstr "이(가) 빠르게 %s을 내려쳤다." msgid "Viper Bite" msgstr "독사의 이빨" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -101534,11 +102745,6 @@ msgstr "이(가) %s에게 독사의 이빨을 날렸다." msgid "Viper Strike" msgstr "살무사격" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -101557,11 +102763,6 @@ msgstr "독사의 몸부림" msgid "Stinger Strike" msgstr "송곳차기" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -101576,11 +102777,6 @@ msgstr "" msgid "Pincer Strike" msgstr "날카로운 일격" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -101595,11 +102791,6 @@ msgstr "" msgid "Toad's Tongue" msgstr "두꺼비의 혀" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -101678,11 +102869,6 @@ msgstr "이(가) %s에게 일격을 날렸다." msgid "Tiger Takedown" msgstr "호랑이의 습격" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -101697,11 +102883,6 @@ msgstr "" msgid "Leopard Fist" msgstr "표범의 주먹" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -101730,11 +102911,6 @@ msgstr "이(가) 재빠르게 %s을(를) 후려쳤다." msgid "Leopard Foresight" msgstr "" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -101749,11 +102925,6 @@ msgstr "" msgid "Dragon Snatch" msgstr "용의 손길" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -101768,12 +102939,6 @@ msgstr "" msgid "Dragon's Vortex" msgstr "용의 소용돌이" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -101788,12 +102953,6 @@ msgstr "" msgid "Dragon Sweeper" msgstr "용의 휩쓸기" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -101808,11 +102967,6 @@ msgstr "" msgid "Dragon Strike" msgstr "용의 일격" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -101839,11 +102993,6 @@ msgstr "" msgid "Crane Flap" msgstr "학의 날갯짓" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "" @@ -101856,11 +103005,6 @@ msgstr "" msgid "Crane Strike" msgstr "학의 일격" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -101880,20 +103024,10 @@ msgstr "" msgid "Power Hit" msgstr "강타" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "받아치기" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -101922,11 +103056,6 @@ msgstr "이(가) %s의 발을 걸었다" msgid "Flowing Water Cut" msgstr "" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -101941,11 +103070,6 @@ msgstr "이(가) %s을(를) 흐르는 물 같은 힘으로 내려쳤다 msgid "Red Leaf's Cut" msgstr "" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -101960,12 +103084,6 @@ msgstr "이(가) %s을(를) 공격해 균형을 무너트렸다." msgid "Fire and Stone's Cut" msgstr "" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -101980,12 +103098,6 @@ msgstr "" msgid "In-One Timing" msgstr "" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "" -"50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -101996,11 +103108,6 @@ msgstr "" msgid " strikes %s's weaknesses" msgstr "" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "" @@ -105136,7 +106243,7 @@ msgstr "정밀 망치" msgid "wood sawing" msgstr "목재절삭" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "금속절삭" @@ -105180,7 +106287,7 @@ msgstr "땅파기" msgid "bolt turning" msgstr "볼트 돌리기" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "정밀 볼트 돌리기" @@ -105958,6 +107065,14 @@ msgstr "" msgid "Circle Split" msgstr "" +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "" + #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" msgstr "평상형 트럭" @@ -109343,6 +110458,10 @@ msgstr "" msgid "You discover a %s!" msgstr "%s을(를) 발견했다!" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "" + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "" @@ -109410,6 +110529,10 @@ msgstr "" msgid "You need to perform field dressing before quartering." msgstr "" +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "" + #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." msgstr "" @@ -109565,19 +110688,19 @@ msgstr "%s 도축을 마쳤다." #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." msgstr "" #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." msgstr "" #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." msgstr "" @@ -109738,8 +110861,8 @@ msgid "You have lost the item you were using to start the fire." msgstr "불 켜는데 쓰려고 했던 물건을 잃어버렸다." #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." -msgstr "여기선 불을 피울 수 있을 정도로 충분한 햇빛이 모이지 않는다. 그만두었다." +msgid "There is not enough sunlight to start a fire now. You stop trying." +msgstr "" #: src/activity_handlers.cpp #, c-format @@ -110555,7 +111678,7 @@ msgstr "충전량" msgid "category" msgstr "종류" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp src/effect.cpp msgid "damage" msgstr "피해" @@ -110780,6 +111903,56 @@ msgstr "전부" msgid "Hang on a bit..." msgstr "기다리는 중..." +#: src/armor_layers.cpp +msgid "close to your skin" +msgstr "" + +#: src/armor_layers.cpp +msgid "of normal clothing" +msgstr "" + +#: src/armor_layers.cpp +msgid "on your waist" +msgstr "" + +#: src/armor_layers.cpp +msgid "of outer clothing" +msgstr "" + +#: src/armor_layers.cpp +msgid "strapped to you" +msgstr "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgid_plural "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgstr[0] "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgid_plural "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgstr[0] "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgid_plural "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgstr[0] "" + #: src/armor_layers.cpp msgid "This is worn next to the skin." msgstr "피부에 밀착된다." @@ -110885,7 +112058,7 @@ msgstr "너무 멀리 있어서 %s의 보호구 정렬을 할 수 없다." #: src/armor_layers.cpp #, c-format msgid "%s is not friendly!" -msgstr "%s는(은) 같이 입을 수 없다!" +msgstr "%s와 친하지 않다!" #: src/armor_layers.cpp msgid "Sort Armor" @@ -110950,16 +112123,18 @@ msgstr "보호구 단축키를 재설정 합니까?" #, c-format msgid "" "Use the arrow- or keypad keys to navigate the left list.\n" -"Press [%s] to select highlighted armor for reordering.\n" -"Use [%s] / [%s] to scroll the right list.\n" -"Press [%s] to assign special inventory letters to clothing.\n" -"Press [%s] to change the side on which item is worn.\n" -"Use [%s] to equip an armor item from the inventory.\n" -"Press [%s] to remove selected armor from oneself.\n" +"[%s] to select highlighted armor for reordering.\n" +"[%s] / [%s] to scroll the right list.\n" +"[%s] to assign special inventory letters to clothing.\n" +"[%s] to change the side on which item is worn.\n" +"[%s] to sort armor into natural layer order.\n" +"[%s] to equip a new item.\n" +"[%s] to equip a new item at the currently selected position.\n" +"[%s] to remove selected armor from oneself.\n" " \n" "[Encumbrance and Warmth] explanation:\n" "The first number is the summed encumbrance from all clothing on that bodypart.\n" -"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers.\n" +"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers or wearing items outside of other items they would normally be work beneath (e.g. a shirt over a backpack).\n" "The sum of these values is the effective encumbrance value your character has for that bodypart." msgstr "" @@ -112048,6 +113223,12 @@ msgstr "전력을 빼내려면 점퍼 케이블이 있어야 한다." msgid "Your plugged-in solar pack is now able to charge your system." msgstr "" +#: src/bionics.cpp +msgid "" +"You need to connect the cable to yourself and the solar pack before your " +"solar pack can charge your system." +msgstr "" + #: src/bionics.cpp msgid "" "You might plug in your solar pack to the cable charging system, if you " @@ -112412,8 +113593,8 @@ msgstr "" #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out" -" when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "" #: src/bionics_ui.cpp @@ -112527,6 +113708,55 @@ msgstr "" "%s을(를) 작동 할 수 없다!\n" "%s의 설명을 보려면, '!' 키를 누른 후 '%c' 키를 눌러야 한다." +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "속도" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "체력" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "민첩성" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "지능" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "지각력" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr "" + #: src/calendar.cpp msgid "forever" msgstr "영구적" @@ -112555,6 +113785,12 @@ msgid "%d day" msgid_plural "%d days" msgstr[0] "%d 일" +#: src/calendar.cpp +#, c-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "" + #: src/calendar.cpp #, c-format msgid "%d season" @@ -112605,6 +113841,14 @@ msgid "%3d day" msgid_plural "%3d days" msgstr[0] "" +#. ~ Right-aligned time string. should right-align with other strings with +#. this same comment +#: src/calendar.cpp +#, c-format +msgid "%3d week" +msgid_plural "%3d weeks" +msgstr[0] "" + #. ~ Right-aligned time string. should right-align with other strings with #. this same comment #: src/calendar.cpp @@ -112931,22 +114175,6 @@ msgstr "" msgid "Liquid from your inventory has leaked onto the ground." msgstr "" -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "체력" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "민첩성" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "지능" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "지각력" - #: src/character.cpp msgid "Left Arm" msgstr "왼팔" @@ -113044,9 +114272,7 @@ msgstr "" msgid "No limb would benefit from it." msgstr "" -#: src/character.cpp src/game.cpp src/game.cpp src/iexamine.cpp -#: src/inventory_ui.cpp src/npctalk_funcs.cpp src/pickup.cpp src/turret.cpp -#: src/vehicle_use.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp src/pickup.cpp msgid "Cancel" msgstr "취소" @@ -113129,7 +114355,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" msgstr "" @@ -113150,7 +114376,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" msgstr "" @@ -113167,7 +114393,7 @@ msgid "Destination for guns, bows and similar weapons." msgstr "" #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" msgstr "" @@ -113210,7 +114436,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" msgstr "" @@ -113259,7 +114485,7 @@ msgid "Destination for Compact Bionics Modules aka CBMs." msgstr "" #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" msgstr "" @@ -113302,7 +114528,7 @@ msgid "Destination for chemicals." msgstr "" #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" msgstr "" @@ -113329,7 +114555,7 @@ msgid "" msgstr "" #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" msgstr "" @@ -113354,7 +114580,7 @@ msgid "Items inside of this zone are ignored by \"sort out loot\" zone-action." msgstr "" #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" msgstr "" @@ -114476,7 +115702,7 @@ msgstr "" msgid "Result: " msgstr "" -#: src/construction.cpp src/crafting_gui.cpp src/recipe.cpp +#: src/construction.cpp src/crafting_gui.cpp msgid "N/A" msgstr "해당없음" @@ -114585,13 +115811,17 @@ msgstr "지상으로 통하는 통로를 뚫었다." msgid "After boarding up the window the curtains and curtain rod are left." msgstr "창문을 판자로 막았고, 이제 커튼과 커튼봉이 남아있다." +#: src/construction.cpp +msgid "You gather some clay." +msgstr "진흙을 모았다." + #: src/construction.cpp msgid "You gather some sand." msgstr "모래를 모았다." #: src/construction.cpp -msgid "You gather some clay." -msgstr "진흙을 모았다." +msgid "You gather some materials." +msgstr "" #: src/construction.cpp msgid "You cannot build there!" @@ -115060,6 +116290,16 @@ msgstr "%s (%d/%d 주변 & 소지품)" msgid "Use which component?" msgstr "어느 재료를 사용합니까?" +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "" + #: src/crafting.cpp msgid "Use which tool?" msgstr "어떤 도구를 사용합니까?" @@ -115219,37 +116459,37 @@ msgstr "다음에 적혀 있음: %s" #: src/crafting_gui.cpp #, c-format -msgid "Skills used: %s" -msgstr "필요 기술: %s" +msgid "Primary skill used: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Required skills: %s" -msgstr "요구 기술: %s" +msgid "Difficulty: %d" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Difficulty: %d" -msgstr "난이도: %d" +msgid "Your skill level: %d" +msgstr "" #: src/crafting_gui.cpp -msgid "Your skill level: N/A" -msgstr "현재 기술수준: 해당없음" +msgid "Your skill level: N/A" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Your skill level: %d" -msgstr "현재 기술수준: %d" +msgid "Other skills used: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Time to complete: %s" -msgstr "제작 요구시간: %s" +msgid "Time to complete: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Dark craftable? %s" -msgstr "어둠속 제작? %s" +msgid "Dark craftable? %s" +msgstr "" #: src/crafting_gui.cpp src/defense.cpp msgid "Easy" @@ -115275,32 +116515,80 @@ msgstr "그런 것은 할 수 없습니다!" msgid "Nothing selected!" msgstr "아무것도 선택하지 않았습니다!" -#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp -msgid "Search:" -msgstr "찾기:" +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "가능" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" +msgstr "" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" +"The default is to search result names. Some single-character prefixes can be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" +msgstr "" + +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" +msgstr "" + +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" msgstr "" +#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp +msgid "Search:" +msgstr "찾기:" + #: src/crafting_gui.cpp msgid "RESULTS" msgstr "" @@ -115331,10 +116619,6 @@ msgstr "기분이 나쁨" msgid "slow %d%%" msgstr "느림 %d%%" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "가능" - #: src/crafting_gui.cpp msgid "Searched" msgstr "검색완료" @@ -115479,6 +116763,11 @@ msgstr "우호적" msgid "BUG: Behavior unnamed. (Creature::get_attitude_ui_data)" msgstr "버그: 이름 없는 태도. (Creature::get_attitude_ui_data)" +#: src/debug.cpp +#, c-format +msgid "See %s for a full stack backtrace" +msgstr "" + #: src/debug.cpp msgid "An error has occurred! Written below is the error report:" msgstr "" @@ -116701,7 +117990,7 @@ msgstr "" msgid "You must construct expansions in fields." msgstr "" -#: src/editmap.cpp src/mission_companion.cpp +#: src/editmap.cpp src/faction_camp.cpp msgid "" "Engine cannot support merging vehicles from two overmaps, please remove them" " from the OM tile." @@ -118704,557 +119993,2012 @@ msgstr "식량공급량: %s" msgid "Combat Ability: %s" msgstr "전투능력: %s" -#: src/field.cpp -msgid "blood splatter" -msgstr "피범벅" +#: src/faction_camp.cpp +msgid " [DONE]\n" +msgstr "" -#: src/field.cpp -msgid "blood stain" -msgstr "핏자국" +#: src/faction_camp.cpp +msgid " left]\n" +msgstr "" -#: src/field.cpp -msgid "puddle of blood" -msgstr "피 웅덩이" +#: src/faction_camp.cpp +msgid "Upgrade Camp" +msgstr "캠프 개선하기" -#: src/field.cpp -msgid "bile splatter" -msgstr "담즙 범벅" +#: src/faction_camp.cpp +msgid "Working to expand your camp!\n" +msgstr "" -#: src/field.cpp -msgid "bile stain" -msgstr "담즙 얼룩" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?" +msgstr "" +"\n" +" \n" +"동료를 일행으로 다시 데려옵니까?" -#: src/field.cpp -msgid "puddle of bile" -msgstr "담즙 웅덩이" +#: src/faction_camp.cpp +msgid "Recover Ally from Upgrading" +msgstr "" -#: src/field.cpp -msgid "bloody meat chunks" -msgstr "피범벅 고깃덩이" +#: src/faction_camp.cpp +msgid "Busy crafting!\n" +msgstr "" -#: src/field.cpp -msgid "heap of gore" -msgstr "시체 조각" +#: src/faction_camp.cpp +msgid " (Finish) Crafting" +msgstr "" -#: src/field.cpp -msgid "scraps of flesh" -msgstr "살덩이" +#: src/faction_camp.cpp +msgid "Gather Materials" +msgstr "재료 찾기" -#: src/field.cpp -msgid "broken vegetation tangle" -msgstr "부러진 식물 줄기" +#: src/faction_camp.cpp +msgid "Searching for materials to upgrade the camp.\n" +msgstr "" -#: src/field.cpp -msgid "shattered branches and leaves" -msgstr "으스러진 나뭇가지와 잎" +#: src/faction_camp.cpp +msgid "Recover Ally from Gathering" +msgstr "" -#: src/field.cpp -msgid "shredded leaves and twigs" -msgstr "찢겨진 잎과 가지" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" +" \n" +"Effects:\n" +"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" +" \n" +"Must have enjoyability >= -6\n" +"Perishable food liquidated at penalty depending on upgrades and rot time:\n" +"> Rotten: 0%%\n" +"> Rots in < 2 days: 60%%\n" +"> Rots in < 5 days: 80%%\n" +" \n" +"Total faction food stock: %d kcal or %d day's rations" +msgstr "" -#: src/field.cpp -msgid "cobwebs" -msgstr "거미집" +#: src/faction_camp.cpp +msgid "Distribute Food" +msgstr "" -#: src/field.cpp -msgid "thick webs" -msgstr "굵은 거미줄" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" +" \n" +"Effects:\n" +"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" +"> Items sitting on any type of furniture will not be moved.\n" +"> Items that are not listed in one of the categories are defaulted to the tools group." +msgstr "" -#: src/field.cpp -msgid "webs" -msgstr "거미줄" +#: src/faction_camp.cpp +msgid "Reset Sort Points" +msgstr "" -#: src/field.cpp -msgid "puddle of slime" -msgstr "끈적한 웅덩이" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to gather light brush and heavy sticks.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +"> heavy sticks\n" +"> withered plants\n" +"> splintered wood\n" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "slime stain" -msgstr "끈적거리는 자국" +#: src/faction_camp.cpp +msgid "Collect Firewood" +msgstr "" -#: src/field.cpp -msgid "slime trail" -msgstr "끈적이는 흔적" +#: src/faction_camp.cpp +msgid "Searching for firewood.\n" +msgstr "" -#: src/field.cpp -msgid "acid splatter" -msgstr "산성액 범벅" +#: src/faction_camp.cpp +msgid "Recover Firewood Gatherers" +msgstr "" -#: src/field.cpp -msgid "acid streak" -msgstr "산성액 자국" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to do low level chores and sort supplies.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" +"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "pool of acid" -msgstr "산성액 웅덩이" +#: src/faction_camp.cpp +msgid "Menial Labor" +msgstr "" -#: src/field.cpp -msgid "glob of sap" -msgstr "수액 한방울" +#: src/faction_camp.cpp +msgid "Performing menial labor...\n" +msgstr "" -#: src/field.cpp -msgid "pool of sap" -msgstr "수액 웅덩이" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?\n" +msgstr "" -#: src/field.cpp -msgid "sap splatter" -msgstr "수액 범벅" +#: src/faction_camp.cpp +msgid "Recover Menial Laborer" +msgstr "" -#: src/field.cpp -msgid "sludge trail" -msgstr "진흙 흔적" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours \n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thick sludge trail" -msgstr "두꺼운 진흙 흔적" +#: src/faction_camp.cpp +msgid "Expand Base" +msgstr "" -#: src/field.cpp -msgid "thin sludge trail" -msgstr "옅은 진흙 흔적" +#: src/faction_camp.cpp +msgid "Surveying for expansion...\n" +msgstr "" -#: src/field.cpp -msgid "fire" -msgstr "불" +#: src/faction_camp.cpp +msgid "Recover Surveyor" +msgstr "" -#: src/field.cpp -msgid "raging fire" -msgstr "솟아오르는 불" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to a nearby forest to cut logs.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: 1 \n" +"Effects:\n" +"> 50%% of trees/trunks at the forest position will be cut down.\n" +"> 100%% of total material will be brought back.\n" +"> Repeatable with diminishing returns.\n" +" \n" +"Risk: None\n" +"Time: 6 Hour Base + Travel Time + Cutting Time\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "small fire" -msgstr "작은 불" +#: src/faction_camp.cpp +msgid "Cut Logs" +msgstr "" -#: src/field.cpp -msgid "legacy rubble" -msgstr "유물더미" +#: src/faction_camp.cpp +msgid "Cutting logs in the woods...\n" +msgstr "" -#: src/field.cpp -msgid "smoke" -msgstr "연기" +#: src/faction_camp.cpp +msgid "Recover Log Cutter" +msgstr "" -#: src/field.cpp -msgid "thick smoke" -msgstr "짙은 연기" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Good for setting up resupply or contingency points.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward.\n" +" \n" +"Risk: Medium\n" +"Time: 6 Hour Construction + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thin smoke" -msgstr "옅은 연기" +#: src/faction_camp.cpp +msgid "Setup Hide Site" +msgstr "" -#: src/field.cpp -msgid "hazy cloud" -msgstr "안개" +#: src/faction_camp.cpp +msgid "Setting up a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "thick toxic gas" -msgstr "짙은 독성 가스" +#: src/faction_camp.cpp +msgid "Recover Hide Setup" +msgstr "" -#: src/field.cpp -msgid "toxic gas" -msgstr "독성 가스" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Push gear out to a hide site or bring gear back from one.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 1\n" +"Effects:\n" +"> Good for returning equipment you left in the hide site shelter.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward or back.\n" +" \n" +"Risk: Medium\n" +"Time: 1 Hour Base + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "tear gas" -msgstr "최루가스" +#: src/faction_camp.cpp +msgid "Relay Hide Site" +msgstr "" -#: src/field.cpp -msgid "thick tear gas" -msgstr "짙은 최루가스" +#: src/faction_camp.cpp +msgid "Transfering gear to a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "radioactive gas" -msgstr "방사성 가스" +#: src/faction_camp.cpp +msgid "Recover Hide Relay" +msgstr "" -#: src/field.cpp -msgid "thick radioactive gas" -msgstr "짙은 방사성 가스" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to edible plans.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Foraging Possibilities:\n" +"> wild vegetables\n" +"> fruits and nuts dependening on season\n" +"May produce less food than consumed!\n" +"Risk: Very Low\n" +"Time: 4 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "gas vent" -msgstr "통풍구" +#: src/faction_camp.cpp +msgid "Forage for plants" +msgstr "" -#: src/field.cpp -msgid "electric cloud" -msgstr "전자기 구름" +#: src/faction_camp.cpp +msgid "Foraging for edible plants.\n" +msgstr "" -#: src/field.cpp -msgid "electric crackle" -msgstr "전자기 스파크" +#: src/faction_camp.cpp +msgid "Recover Foragers" +msgstr "" -#: src/field.cpp -msgid "sparks" -msgstr "스파크" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to set traps for small game.\n" +" \n" +"Skill used: trapping\n" +"Difficulty: N/A \n" +"Trappinng Possibilities:\n" +"> small and tiny animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Low\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/2\n" +msgstr "" -#: src/field.cpp -msgid "odd ripple" -msgstr "이상한 파문" +#: src/faction_camp.cpp +msgid "Trap Small Game" +msgstr "" -#: src/field.cpp -msgid "swirling air" -msgstr "소용돌이치는 공기" +#: src/faction_camp.cpp +msgid "Trapping Small Game.\n" +msgstr "" -#: src/field.cpp -msgid "tear in reality" -msgstr "찢겨진 현실의 구멍" +#: src/faction_camp.cpp +msgid "Recover Trappers" +msgstr "" -#: src/field.cpp -msgid "faint plasma" -msgstr "희미한 플라즈마" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to hunt large animals.\n" +" \n" +"Skill used: marksmanship\n" +"Difficulty: N/A \n" +"Hunting Possibilities:\n" +"> small, medium, or large animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Medium\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "glaring plasma" -msgstr "눈부신 플라즈마" +#: src/faction_camp.cpp +msgid "Hunt Large Animals" +msgstr "" -#: src/field.cpp -msgid "glowing plasma" -msgstr "빛나는 플라즈마" +#: src/faction_camp.cpp +msgid "Hunting large animals.\n" +msgstr "" -#: src/field.cpp -msgid "beam of light" -msgstr "빛 줄기" +#: src/faction_camp.cpp +msgid "Recover Hunter" +msgstr "" -#: src/field.cpp -msgid "faint glimmer" -msgstr "희미한 깜빡이는 빛" +#: src/faction_camp.cpp +msgid "Construct Map Fortifications" +msgstr "" -#: src/field.cpp -msgid "intense beam of light" -msgstr "눈부신 빛 줄기" +#: src/faction_camp.cpp +msgid "Construct Spiked Trench" +msgstr "" -#: src/field.cpp -msgid "spotlight" -msgstr "스포트라이트" +#: src/faction_camp.cpp +msgid "Constructing fortifications...\n" +msgstr "" -#: src/field.cpp -msgid "dazzling" -msgstr "눈부신 빛" +#: src/faction_camp.cpp +msgid "Finish Map Fortifications" +msgstr "" -#: src/field.cpp -msgid "plant sap splatter" -msgstr "식물 수액 범벅" +#: src/faction_camp.cpp +msgid "Recruit Companions" +msgstr "" -#: src/field.cpp -msgid "plant sap stain" -msgstr "식물 수액 자국" +#: src/faction_camp.cpp +msgid "Searching for recruits.\n" +msgstr "" -#: src/field.cpp -msgid "puddle of resin" -msgstr "수액 웅덩이" +#: src/faction_camp.cpp +msgid "Recover Recruiter" +msgstr "" -#: src/field.cpp -msgid "bug blood splatter" -msgstr "벌레 피범벅" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Select checkpoints to customize path.\n" +"> Reveals terrain around the path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "bug blood stain" -msgstr "벌레 핏자국" +#: src/faction_camp.cpp +msgid "Scout Mission" +msgstr "" -#: src/field.cpp -msgid "puddle of bug blood" -msgstr "벌레 피 웅덩이" +#: src/faction_camp.cpp +msgid "Scouting the region.\n" +msgstr "" -#: src/field.cpp -msgid "hemolymph splatter" -msgstr "림프액 범벅" +#: src/faction_camp.cpp +msgid "Recover Scout" +msgstr "" -#: src/field.cpp -msgid "hemolymph stain" -msgstr "림프액 자국" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 4\n" +"Effects:\n" +"> Pulls creatures encountered into combat instead of fleeing.\n" +"> Select checkpoints to customize path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: Very High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "puddle of hemolymph" -msgstr "림프액 웅덩이" +#: src/faction_camp.cpp +msgid "Combat Patrol" +msgstr "" -#: src/field.cpp -msgid "shards of chitin" -msgstr "키틴질 조각" +#: src/faction_camp.cpp +msgid "Patrolling the region.\n" +msgstr "" -#: src/field.cpp -msgid "shattered bug leg" -msgstr "으스러진 벌레 다리" +#: src/faction_camp.cpp +msgid "Recover Combat Patrol" +msgstr "" -#: src/field.cpp -msgid "torn insect organs" -msgstr "찢어진 곤충 내장" +#: src/faction_camp.cpp +msgid " Expansion Upgrade" +msgstr "" -#: src/field.cpp -msgid "gooey scraps" -msgstr "끈적이는 잔해" +#: src/faction_camp.cpp +msgid "Working to upgrade your expansions!\n" +msgstr "" -#: src/field.cpp -msgid "heap of squishy gore" -msgstr "으깨진 시체 조각" +#: src/faction_camp.cpp +msgid " Expansion" +msgstr "" -#: src/field.cpp -msgid "icky mess" -msgstr "끈적이는 덩어리" +#: src/faction_camp.cpp +msgid "Recover Ally, " +msgstr "" -#: src/field.cpp -msgid "swirl of tobacco smoke" -msgstr "피어오르는 담배 연기" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Have a companion attempt to completely dissemble a vehicle into components.\n" +" \n" +"Skill used: mechanics\n" +"Difficulty: 2 \n" +"Effects:\n" +"> Removed parts placed on the furniture in the garage.\n" +"> Skill plays a huge role to determine what is salvaged.\n" +" \n" +"Risk: None\n" +"Time: Skill Based \n" +msgstr "" -#: src/field.cpp -msgid "thick tobacco smoke" -msgstr "짙은 담배 연기" +#: src/faction_camp.cpp +msgid " Chop Shop" +msgstr "" -#: src/field.cpp -msgid "tobacco smoke" -msgstr "담배 연기" +#: src/faction_camp.cpp +msgid "Working at the chop shop...\n" +msgstr "" -#: src/field.cpp -msgid "pot smoke" -msgstr "마리화나 연기" +#: src/faction_camp.cpp +msgid " (Finish) Chop Shop" +msgstr "" -#: src/field.cpp -msgid "swirl of pot smoke" -msgstr "피어오르는 마리화나 연기" +#: src/faction_camp.cpp +msgid "Working in your kitchen!\n" +msgstr "" -#: src/field.cpp -msgid "thick pot smoke" -msgstr "짙은 마리화나 연기" +#: src/faction_camp.cpp +msgid " (Finish) Cooking" +msgstr "" -#: src/field.cpp -msgid "crack smoke" -msgstr "크랙 연기" +#: src/faction_camp.cpp +msgid "Working in your blacksmith shop!\n" +msgstr "" -#: src/field.cpp -msgid "swirl of crack smoke" -msgstr "피어오르는 크랙 연기" +#: src/faction_camp.cpp +msgid " (Finish) Smithing" +msgstr "" -#: src/field.cpp -msgid "thick crack smoke" -msgstr "짙은 크랙 연기" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plow any spaces that have reverted to dirt or grass.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "meth smoke" -msgstr "메탐페타민 연기" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Restores only the plots created in the last expansion upgrade.\n" +"> Does not damage existing crops.\n" +" \n" +"Risk: None\n" +"Time: 5 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "swirl of meth smoke" -msgstr "피어오르는 메탐페타민 연기" +#: src/faction_camp.cpp +msgid " Plow Fields" +msgstr "" -#: src/field.cpp -msgid "thick meth smoke" -msgstr "짙은 메탐페타민 연기" +#: src/faction_camp.cpp +msgid "Working to plow your fields!\n" +msgstr "" -#: src/field.cpp -msgid "angry swarm of bees" -msgstr "성난 벌떼" +#: src/faction_camp.cpp +msgid " (Finish) Plow Fields" +msgstr "" -#: src/field.cpp -msgid "some bees" -msgstr "벌 몇 마리" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plant designated seeds in the spaces that have already been tilled.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "swarm of bees" -msgstr "벌떼" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose which seed type or all of your seeds.\n" +"> Stops when out of seeds or planting locations.\n" +"> Will plant in ALL dirt mounds in the expansion.\n" +" \n" +"Risk: None\n" +"Time: 1 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "airborne incendiary" -msgstr "공중에 뜬 소이제" +#: src/faction_camp.cpp +msgid " Plant Fields" +msgstr "" -#: src/field.cpp -msgid "relaxation gas" -msgstr "약한 진정제 가스" +#: src/faction_camp.cpp +msgid "Working to plant your fields!\n" +msgstr "" -#: src/field.cpp -msgid "sedative gas" -msgstr "진정제 가스" +#: src/faction_camp.cpp +msgid " (Finish) Plant Fields" +msgstr "" -#: src/field.cpp -msgid "fungal haze" -msgstr "진균 연무" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Harvest any plants that are ripe and bring the produce back.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "thick fungal haze" -msgstr "짙은 진균 연무" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Will dump all harvesting products onto your location.\n" +" \n" +"Risk: None\n" +"Time: 3 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "fungicidal gas" -msgstr "살진균 가스" +#: src/faction_camp.cpp +msgid " Harvest Fields" +msgstr "" -#: src/field.cpp -msgid "thick fungicidal gas" -msgstr "짙은 살진균 가스" +#: src/faction_camp.cpp +msgid "Working to harvest your fields!\n" +msgstr "" -#: src/field.cpp -msgid "smoke vent" +#: src/faction_camp.cpp +msgid " (Finish) Harvest Fields" msgstr "" -#: src/field.cpp -msgid "Whew... smells like skunk!" -msgstr "어휴... 스컹크같은 냄새가 난다!" +#: src/faction_camp.cpp +msgid "Working on your farm!\n" +msgstr "" -#: src/field.cpp -msgid "Man, that smells like some good shit!" +#: src/faction_camp.cpp +msgid "departs to search for materials..." msgstr "" -#: src/field.cpp -msgid "I don't know... should you really be smoking that stuff?" +#: src/faction_camp.cpp +msgid "There are too many companions working on this mission!" msgstr "" -#: src/field.cpp -msgid "Ew, smells like burning rubber!" -msgstr "윽, 고무 태우는 냄새가 난다!" +#: src/faction_camp.cpp +msgid "departs to search for firewood..." +msgstr "" -#: src/field.cpp -msgid "Ugh, that smells rancid!" -msgstr "웩, 썩은내가 난다!" +#: src/faction_camp.cpp +msgid "You don't have enough food stored to feed your companion." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp +msgid "departs to dig ditches and scrub toilets..." +msgstr "" + +#: src/faction_camp.cpp #, c-format -msgid "A %s hits you!" -msgstr "%s에 부딪혔다!" +msgid "%s returns from working in the woods..." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits %2$s!" -msgstr "%1$s이(가) %2$s을(를) 공격했다!" +msgid "%s returns from working on the hide site..." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits the %2$s!" -msgstr "%1$s이(가) %2$s을(를) 공격했다!" +msgid "%s returns from shuttling gear between the hide site..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your body!" -msgstr "산성액에 몸이 화상을 입었다!" +#: src/faction_camp.cpp +msgid "departs to search for edible plants..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s body!" -msgstr "산성액에 의 몸이 화상을 입었다!" +#: src/faction_camp.cpp +msgid "departs to set traps for small animals..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your legs and feet!" -msgstr "산성액에 발과 다리가 화상을 입었다!" +#: src/faction_camp.cpp +msgid "departs to hunt for meat..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s legs and feet!" -msgstr "산성액에 의 발과 다리가 화상을 입었다!" +#: src/faction_camp.cpp +msgid "departs to search for recruits..." +msgstr "" -#: src/field.cpp -msgid "You're lying in a pool of acid" -msgstr "산성액 웅덩이에 누워있다" +#: src/faction_camp.cpp +msgid "departs to survey land..." +msgstr "" -#: src/field.cpp -msgid "You're standing in a pool of acid" -msgstr "산성액 웅덩이를 밟고 있다." +#: src/faction_camp.cpp +msgid "You have already selected a surveyor!" +msgstr "" -#: src/field.cpp -msgid "The sap sticks to you!" -msgstr "수액이 몸에 달라붙었다!" +#: src/faction_camp.cpp +msgid "begins to upgrade the expansion..." +msgstr "" -#: src/field.cpp -msgid "The sap sticks to !" -msgstr "수액이 의 몸에 달라붙었다!" +#: src/faction_camp.cpp +msgid "You already have a worker upgrading that expansion!" +msgstr "" -#: src/field.cpp -msgid "The sludge is thick and sticky. You struggle to pull free." -msgstr "걸쭉한 진흙이 끈적거린다. 빠져나오기 위해 노력하는 중이다." +#: src/faction_camp.cpp +msgid "You don't have the materials for the upgrade." +msgstr "" -#: src/field.cpp -msgid "You burn your legs and feet!" -msgstr "발과 다리가 불타고 있다!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your farm with something..." +msgstr "" -#: src/field.cpp -msgid "You're burning up!" -msgstr "몸이 불타고 있다!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns to you with something..." +msgstr "" -#: src/field.cpp -msgid "You're set ablaze!" -msgstr "불길에 휩싸였다!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your kitchen with something..." +msgstr "" -#: src/field.cpp -msgid "Your whole body is burning!" -msgstr "전신이 불타고 있다!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your blacksmith shop with something..." +msgstr "" -#: src/field.cpp -msgid " burns their legs and feet!" -msgstr "의 발과 다리가 불타고 있다!" +#: src/faction_camp.cpp +msgid "begins plowing the field..." +msgstr "" -#: src/field.cpp -msgid " is burning up!" -msgstr "의 몸이 불타고 있다!" +#: src/faction_camp.cpp +msgid "You already have someone plowing that field." +msgstr "" -#: src/field.cpp -msgid " is set ablaze!" -msgstr "이(가) 불길에 휩싸였다!" +#: src/faction_camp.cpp +msgid "You have no additional seeds to give your companions..." +msgstr "" -#: src/field.cpp -msgid "s whole body is burning!" -msgstr "의 전신이 불타고 있다!" +#: src/faction_camp.cpp +msgid "begins planting the field..." +msgstr "" -#: src/field.cpp -msgid "You're standing in a fire!" -msgstr "불 속에 서 있다!" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Which seeds do you wish to have planted?" +msgstr "어떤 씨앗을 심을까요?" -#: src/field.cpp -msgid "You're waist-deep in a fire!" -msgstr "허리까지 불길이 솟아오른다!" +#: src/faction_camp.cpp +msgid "You already have someone planting that field." +msgstr "" -#: src/field.cpp -msgid "You're surrounded by raging fire!" -msgstr "솟구치는 불길에 둘러싸였다!" +#: src/faction_camp.cpp +msgid "begins to harvest the field..." +msgstr "" -#: src/field.cpp -msgid "You're lying in fire!" -msgstr "불 속에 누워 있다!" +#: src/faction_camp.cpp +msgid "You already have someone harvesting that field." +msgstr "" -#: src/field.cpp -#, c-format -msgid "You feel sick from inhaling the %s" -msgstr "%s을(를) 들이마셔 메스껍다." +#: src/faction_camp.cpp +msgid "You already have someone working in that garage." +msgstr "" -#: src/field.cpp -msgid "This radioactive gas burns!" -msgstr "방사성가스가 불타고 있다!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your garage..." +msgstr "" -#: src/field.cpp -msgid "You're torched by flames!" -msgstr "불길에 닿았다!" +#: src/faction_camp.cpp +msgid "You already have a companion upgrading the camp." +msgstr "" -#: src/field.cpp -msgid " is torched by flames!" -msgstr "이(가) 불길에 닿았다!" +#: src/faction_camp.cpp +msgid "begins to upgrade the camp..." +msgstr "" -#: src/field.cpp -msgid "These flames do not burn you." -msgstr "불길에 불타오르지 않는다." +#: src/faction_camp.cpp +msgid "Forests and swamps are the only valid cutting locations." +msgstr "" -#: src/field.cpp -msgid "Those flames do not burn ." -msgstr "이(가) 불길에 불타오르지 않는다." +#: src/faction_camp.cpp +#, c-format +msgid "" +"Trip Estimate:\n" +"%s" +msgstr "" -#: src/field.cpp -msgid "You're painfully electrocuted!" +#: src/faction_camp.cpp +msgid "departs to cut logs..." msgstr "" -#: src/field.cpp -msgid " is shocked!" -msgstr "이(가) 전기충격을 받았다!" +#: src/faction_camp.cpp +msgid "Forests, swamps, and fields are valid hide site locations." +msgstr "" -#: src/field.cpp -msgid "You're shocked!" -msgstr "전기충격을 받았다!" +#: src/faction_camp.cpp +msgid "departs to build a hide site..." +msgstr "" -#: src/field.cpp -msgid "The electric cloud doesn't affect you." -msgstr "전자기 구름에 영향을 받지 않았다." +#: src/faction_camp.cpp +msgid "You need equipment to setup a hide site..." +msgstr "" -#: src/field.cpp -msgid "The electric cloud doesn't seem to affect ." -msgstr "은(는) 전자기 구름에 영향을 받지 않았다." +#: src/faction_camp.cpp +msgid "You must select an existing hide site." +msgstr "" -#: src/field.cpp -msgid "You're violently teleported!" -msgstr "급격하게 순간이동이 되었다!" +#: src/faction_camp.cpp +msgid "Bring gear back?" +msgstr "" -#: src/field.cpp -msgid "The bees sting you!" -msgstr "벌에 쏘였다!" +#: src/faction_camp.cpp +msgid "departs for the hide site..." +msgstr "" -#: src/field.cpp -msgid "The bees sting you several times!" -msgstr "벌에 여러번 쏘였다!" +#: src/faction_camp.cpp +msgid "You need equipment to transport between the hide site..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Select a start and end point. Line must be straight. Fields, forests, and " +"swamps are valid fortification locations. In addition to existing " +"fortification constructions." +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an end point." +msgstr "" + +#: src/faction_camp.cpp +msgid "Invalid terrain in construction path." +msgstr "" + +#: src/faction_camp.cpp +msgid "You don't have the material to build the fortification." +msgstr "" + +#: src/faction_camp.cpp +msgid "begins constructing fortifications..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Select checkpoints until you reach maximum range or select the last point " +"again to end." +msgstr "" + +#: src/faction_camp.cpp +msgid "departs on patrol..." +msgstr "" + +#: src/faction_camp.cpp +msgid "You don't have the materials to craft that" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Batch crafting %s [MAX: %d]: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Your batch is too large!" +msgstr "" + +#: src/faction_camp.cpp +msgid "You already have someone working in that expansion." +msgstr "" + +#: src/faction_camp.cpp +msgid "begins to work..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +" Chopping this vehicle:\n" +"%s" +msgstr "" + +#: src/faction_camp.cpp +msgid "begins working in the garage..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Your companion seems disappointed that your pantry is empty..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s returns from upgrading the camp having earned a bit of experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from doing the dirty work to keep the camp running..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Sorting points have changed, forcing reset." +msgstr "" + +#: src/faction_camp.cpp +msgid "gathering materials" +msgstr "" + +#: src/faction_camp.cpp +msgid "foraging for edible plants" +msgstr "" + +#: src/faction_camp.cpp +msgid "trapping small animals" +msgstr "" + +#: src/faction_camp.cpp +msgid "hunting for meat" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from %s carrying supplies and has a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from constructing fortifications..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from searching for recruits with a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s encountered %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't find anyone to recruit..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s convinced %s to hear a recruitment offer from you..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested in anything %s had to offer..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"NPC Overview:\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Name: %20s\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Strength: %10d\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Dexterity: %10d\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Intelligence: %10d\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Perception: %10d\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Top 3 Skills:\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Asking for:\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"> Food: %10d days\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Faction Food:%9d days\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Recruit Chance: %10d%%\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an option:" +msgstr "" + +#: src/faction_camp.cpp +msgid "Increase Food" +msgstr "" + +#: src/faction_camp.cpp +msgid "Decrease Food" +msgstr "" + +#: src/faction_camp.cpp +msgid "Make Offer" +msgstr "" + +#: src/faction_camp.cpp +msgid "Not Interested" +msgstr "" + +#: src/faction_camp.cpp +msgid "You decide you aren't interested..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s has been convinced to join!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Your companion hit a river and didn't know how to swim..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Your companion hit a river and didn't know how to swim well enough to " +"cross..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't return from patrol..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from patrol..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an expansion:" +msgstr "" + +#: src/faction_camp.cpp +msgid "You choose to wait..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from surveying for the expansion." +msgstr "" + +#: src/faction_camp.cpp +msgid "No seeds to plant!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from working your fields..." +msgstr "" + +#: src/faction_camp.cpp +msgid "MAIN" +msgstr "" + +#: src/faction_camp.cpp +msgid " [N] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [NE] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [E] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [SE] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [S] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [SW] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [W] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [NW] " +msgstr "" + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Base Missions" +msgstr "기지 임무" + +#: src/faction_camp.cpp +msgid "Farm Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Garage Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Kitchen Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Blacksmith Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Empty Expansion" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Select a location between %d and %d tiles away." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"You must select a target between %d and %d range from the base. Range: %d" +msgstr "" + +#: src/faction_camp.cpp +msgid "You must be able to see the target that you select." +msgstr "" + +#: src/faction_camp.cpp +msgid "Do you want to bounce off this location to extend range?" +msgstr "" + +#: src/faction_camp.cpp +msgid "food for you" +msgstr "" + +#: src/faction_camp.cpp +msgid "food for companions" +msgstr "" + +#: src/faction_camp.cpp +msgid "weapons" +msgstr "" + +#: src/faction_camp.cpp +msgid "clothing" +msgstr "" + +#: src/faction_camp.cpp +msgid "bionics" +msgstr "" + +#: src/faction_camp.cpp +msgid "all kinds of tools" +msgstr "" + +#: src/faction_camp.cpp +msgid "wood of various sorts" +msgstr "" + +#: src/faction_camp.cpp +msgid "trash and rotting food" +msgstr "" + +#: src/faction_camp.cpp +msgid "books" +msgstr "" + +#: src/faction_camp.cpp +msgid "medication" +msgstr "" + +#: src/faction_camp.cpp +msgid "ammo" +msgstr "탄약" + +#: src/faction_camp.cpp +#, c-format +msgid "Reset point: %s?" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +" Items New Point Old Point\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +" Save Points?" +msgstr "" + +#: src/faction_camp.cpp +msgid "Revert to default points?" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15.2f (km)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">One Way: %15d (trips)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15.2f (km)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15d (m)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15d (m)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Travel: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Working: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Total: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Food: %15d (kcal)\n" +" \n" +msgstr "" +"음식: %15d(kcal)\n" +"\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"%s\n" +" \n" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s \n" +"Risk: None\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" +" \n" +"Skill used: speech\n" +"Difficulty: 2 \n" +"Base Score: +%3d%%\n" +"> Expansion Bonus: +%3d%%\n" +"> Faction Bonus: +%3d%%\n" +"> Special Bonus: +%3d%%\n" +" \n" +"Total: Skill +%3d%%\n" +" \n" +"Risk: High\n" +"Time: 4 Days\n" +"Positions: %d/1\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Notes: \n" +"Send a companion to gather materials for the next camp upgrade.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Harvestable: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Ready for Planting: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Needs Plowing: " +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Name: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "---- Engines ----\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Engine: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Status: %24d%%\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Fuel: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "---- Fuel Storage & Battery ----\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Estimated Chop Time: 5 Days\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "No items are located at the drop point..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "You distribute %d kcal worth of food to your companions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "While %s, a silent specter approaches %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s notices the antlered horror and slips away before it gets too close." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Another survivor approaches %s asking for directions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Fearful that he may be an agent of some hostile faction, %s doesn't mention " +"the camp." +msgstr "" + +#: src/faction_camp.cpp +msgid "The two part on friendly terms and the survivor isn't seen again." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't detect the ambush until it was too late!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The bull moose charged %s from the tree line..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Despite being caught off guard %s was able to run away until the moose gave " +"up pursuit." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The jabberwock grabbed %s by the arm from behind and began to scream." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Terrified, %s spun around and delivered a massive kick to the creature's " +"torso..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Collapsing into a pile of gore, %s walked away unscathed..." +msgstr "" + +#: src/faction_camp.cpp +msgid "(Sounds like bullshit, you wonder what really happened.)" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s turned to find the hideous black eyes of a giant wasp staring back from " +"only a few feet away..." +msgstr "" + +#: src/faction_camp.cpp +msgid "The screams were terrifying, there was nothing anyone could do." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Pieces of %s were found strewn across a few bushes." +msgstr "" + +#: src/faction_camp.cpp +msgid "(You wonder if your companions are fit to work on their own...)" +msgstr "" + +#: src/field.cpp +msgid "blood splatter" +msgstr "피범벅" + +#: src/field.cpp +msgid "blood stain" +msgstr "핏자국" + +#: src/field.cpp +msgid "puddle of blood" +msgstr "피 웅덩이" + +#: src/field.cpp +msgid "bile splatter" +msgstr "담즙 범벅" + +#: src/field.cpp +msgid "bile stain" +msgstr "담즙 얼룩" + +#: src/field.cpp +msgid "puddle of bile" +msgstr "담즙 웅덩이" + +#: src/field.cpp +msgid "bloody meat chunks" +msgstr "피범벅 고깃덩이" + +#: src/field.cpp +msgid "heap of gore" +msgstr "시체 조각" + +#: src/field.cpp +msgid "scraps of flesh" +msgstr "살덩이" + +#: src/field.cpp +msgid "broken vegetation tangle" +msgstr "부러진 식물 줄기" + +#: src/field.cpp +msgid "shattered branches and leaves" +msgstr "으스러진 나뭇가지와 잎" + +#: src/field.cpp +msgid "shredded leaves and twigs" +msgstr "찢겨진 잎과 가지" + +#: src/field.cpp +msgid "cobwebs" +msgstr "거미집" + +#: src/field.cpp +msgid "thick webs" +msgstr "굵은 거미줄" + +#: src/field.cpp +msgid "webs" +msgstr "거미줄" + +#: src/field.cpp +msgid "puddle of slime" +msgstr "끈적한 웅덩이" + +#: src/field.cpp +msgid "slime stain" +msgstr "끈적거리는 자국" + +#: src/field.cpp +msgid "slime trail" +msgstr "끈적이는 흔적" + +#: src/field.cpp +msgid "acid splatter" +msgstr "산성액 범벅" + +#: src/field.cpp +msgid "acid streak" +msgstr "산성액 자국" + +#: src/field.cpp +msgid "pool of acid" +msgstr "산성액 웅덩이" + +#: src/field.cpp +msgid "glob of sap" +msgstr "수액 한방울" + +#: src/field.cpp +msgid "pool of sap" +msgstr "수액 웅덩이" + +#: src/field.cpp +msgid "sap splatter" +msgstr "수액 범벅" + +#: src/field.cpp +msgid "sludge trail" +msgstr "진흙 흔적" + +#: src/field.cpp +msgid "thick sludge trail" +msgstr "두꺼운 진흙 흔적" + +#: src/field.cpp +msgid "thin sludge trail" +msgstr "옅은 진흙 흔적" + +#: src/field.cpp +msgid "raging fire" +msgstr "솟아오르는 불" + +#: src/field.cpp +msgid "small fire" +msgstr "작은 불" + +#: src/field.cpp +msgid "legacy rubble" +msgstr "유물더미" + +#: src/field.cpp +msgid "smoke" +msgstr "연기" + +#: src/field.cpp +msgid "thick smoke" +msgstr "짙은 연기" + +#: src/field.cpp +msgid "thin smoke" +msgstr "옅은 연기" + +#: src/field.cpp +msgid "hazy cloud" +msgstr "안개" + +#: src/field.cpp +msgid "thick toxic gas" +msgstr "짙은 독성 가스" + +#: src/field.cpp +msgid "toxic gas" +msgstr "독성 가스" + +#: src/field.cpp +msgid "tear gas" +msgstr "최루가스" + +#: src/field.cpp +msgid "thick tear gas" +msgstr "짙은 최루가스" + +#: src/field.cpp +msgid "radioactive gas" +msgstr "방사성 가스" + +#: src/field.cpp +msgid "thick radioactive gas" +msgstr "짙은 방사성 가스" + +#: src/field.cpp +msgid "gas vent" +msgstr "통풍구" + +#: src/field.cpp +msgid "electric cloud" +msgstr "전자기 구름" + +#: src/field.cpp +msgid "electric crackle" +msgstr "전자기 스파크" + +#: src/field.cpp +msgid "sparks" +msgstr "스파크" + +#: src/field.cpp +msgid "odd ripple" +msgstr "이상한 파문" + +#: src/field.cpp +msgid "swirling air" +msgstr "소용돌이치는 공기" + +#: src/field.cpp +msgid "tear in reality" +msgstr "찢겨진 현실의 구멍" + +#: src/field.cpp +msgid "faint plasma" +msgstr "희미한 플라즈마" + +#: src/field.cpp +msgid "glaring plasma" +msgstr "눈부신 플라즈마" + +#: src/field.cpp +msgid "glowing plasma" +msgstr "빛나는 플라즈마" + +#: src/field.cpp +msgid "beam of light" +msgstr "빛 줄기" + +#: src/field.cpp +msgid "faint glimmer" +msgstr "희미한 깜빡이는 빛" + +#: src/field.cpp +msgid "intense beam of light" +msgstr "눈부신 빛 줄기" + +#: src/field.cpp +msgid "spotlight" +msgstr "스포트라이트" + +#: src/field.cpp +msgid "dazzling" +msgstr "눈부신 빛" + +#: src/field.cpp +msgid "plant sap splatter" +msgstr "식물 수액 범벅" + +#: src/field.cpp +msgid "plant sap stain" +msgstr "식물 수액 자국" + +#: src/field.cpp +msgid "puddle of resin" +msgstr "수액 웅덩이" + +#: src/field.cpp +msgid "bug blood splatter" +msgstr "벌레 피범벅" + +#: src/field.cpp +msgid "bug blood stain" +msgstr "벌레 핏자국" + +#: src/field.cpp +msgid "puddle of bug blood" +msgstr "벌레 피 웅덩이" + +#: src/field.cpp +msgid "hemolymph splatter" +msgstr "림프액 범벅" + +#: src/field.cpp +msgid "hemolymph stain" +msgstr "림프액 자국" + +#: src/field.cpp +msgid "puddle of hemolymph" +msgstr "림프액 웅덩이" + +#: src/field.cpp +msgid "shards of chitin" +msgstr "키틴질 조각" + +#: src/field.cpp +msgid "shattered bug leg" +msgstr "으스러진 벌레 다리" + +#: src/field.cpp +msgid "torn insect organs" +msgstr "찢어진 곤충 내장" + +#: src/field.cpp +msgid "gooey scraps" +msgstr "끈적이는 잔해" + +#: src/field.cpp +msgid "heap of squishy gore" +msgstr "으깨진 시체 조각" + +#: src/field.cpp +msgid "icky mess" +msgstr "끈적이는 덩어리" + +#: src/field.cpp +msgid "swirl of tobacco smoke" +msgstr "피어오르는 담배 연기" + +#: src/field.cpp +msgid "thick tobacco smoke" +msgstr "짙은 담배 연기" + +#: src/field.cpp +msgid "tobacco smoke" +msgstr "담배 연기" + +#: src/field.cpp +msgid "pot smoke" +msgstr "마리화나 연기" + +#: src/field.cpp +msgid "swirl of pot smoke" +msgstr "피어오르는 마리화나 연기" + +#: src/field.cpp +msgid "thick pot smoke" +msgstr "짙은 마리화나 연기" + +#: src/field.cpp +msgid "crack smoke" +msgstr "크랙 연기" + +#: src/field.cpp +msgid "swirl of crack smoke" +msgstr "피어오르는 크랙 연기" + +#: src/field.cpp +msgid "thick crack smoke" +msgstr "짙은 크랙 연기" + +#: src/field.cpp +msgid "meth smoke" +msgstr "메탐페타민 연기" + +#: src/field.cpp +msgid "swirl of meth smoke" +msgstr "피어오르는 메탐페타민 연기" + +#: src/field.cpp +msgid "thick meth smoke" +msgstr "짙은 메탐페타민 연기" + +#: src/field.cpp +msgid "angry swarm of bees" +msgstr "성난 벌떼" + +#: src/field.cpp +msgid "some bees" +msgstr "벌 몇 마리" + +#: src/field.cpp +msgid "swarm of bees" +msgstr "벌떼" + +#: src/field.cpp +msgid "airborne incendiary" +msgstr "공중에 뜬 소이제" + +#: src/field.cpp +msgid "relaxation gas" +msgstr "약한 진정제 가스" + +#: src/field.cpp +msgid "sedative gas" +msgstr "진정제 가스" + +#: src/field.cpp +msgid "fungal haze" +msgstr "진균 연무" + +#: src/field.cpp +msgid "thick fungal haze" +msgstr "짙은 진균 연무" + +#: src/field.cpp +msgid "fungicidal gas" +msgstr "살진균 가스" + +#: src/field.cpp +msgid "thick fungicidal gas" +msgstr "짙은 살진균 가스" + +#: src/field.cpp +msgid "smoke vent" +msgstr "" + +#: src/field.cpp +msgid "Whew... smells like skunk!" +msgstr "어휴... 스컹크같은 냄새가 난다!" + +#: src/field.cpp +msgid "Man, that smells like some good shit!" +msgstr "" + +#: src/field.cpp +msgid "I don't know... should you really be smoking that stuff?" +msgstr "" + +#: src/field.cpp +msgid "Ew, smells like burning rubber!" +msgstr "윽, 고무 태우는 냄새가 난다!" + +#: src/field.cpp +msgid "Ugh, that smells rancid!" +msgstr "웩, 썩은내가 난다!" + +#: src/field.cpp +#, c-format +msgid "A %s hits you!" +msgstr "%s에 부딪혔다!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits %2$s!" +msgstr "%1$s이(가) %2$s을(를) 공격했다!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits the %2$s!" +msgstr "%1$s이(가) %2$s을(를) 공격했다!" + +#: src/field.cpp +msgid "The acid burns your body!" +msgstr "산성액에 몸이 화상을 입었다!" + +#: src/field.cpp +msgid "The acid burns s body!" +msgstr "산성액에 의 몸이 화상을 입었다!" + +#: src/field.cpp +msgid "The acid burns your legs and feet!" +msgstr "산성액에 발과 다리가 화상을 입었다!" + +#: src/field.cpp +msgid "The acid burns s legs and feet!" +msgstr "산성액에 의 발과 다리가 화상을 입었다!" + +#: src/field.cpp +msgid "You're lying in a pool of acid" +msgstr "산성액 웅덩이에 누워있다" + +#: src/field.cpp +msgid "You're standing in a pool of acid" +msgstr "산성액 웅덩이를 밟고 있다." + +#: src/field.cpp +msgid "The sap sticks to you!" +msgstr "수액이 몸에 달라붙었다!" + +#: src/field.cpp +msgid "The sap sticks to !" +msgstr "수액이 의 몸에 달라붙었다!" + +#: src/field.cpp +msgid "The sludge is thick and sticky. You struggle to pull free." +msgstr "걸쭉한 진흙이 끈적거린다. 빠져나오기 위해 노력하는 중이다." + +#: src/field.cpp +msgid "You burn your legs and feet!" +msgstr "발과 다리가 불타고 있다!" + +#: src/field.cpp +msgid "You're burning up!" +msgstr "몸이 불타고 있다!" + +#: src/field.cpp +msgid "You're set ablaze!" +msgstr "불길에 휩싸였다!" + +#: src/field.cpp +msgid "Your whole body is burning!" +msgstr "전신이 불타고 있다!" + +#: src/field.cpp +msgid " burns their legs and feet!" +msgstr "의 발과 다리가 불타고 있다!" + +#: src/field.cpp +msgid " is burning up!" +msgstr "의 몸이 불타고 있다!" + +#: src/field.cpp +msgid " is set ablaze!" +msgstr "이(가) 불길에 휩싸였다!" + +#: src/field.cpp +msgid "s whole body is burning!" +msgstr "의 전신이 불타고 있다!" + +#: src/field.cpp +msgid "You're standing in a fire!" +msgstr "불 속에 서 있다!" + +#: src/field.cpp +msgid "You're waist-deep in a fire!" +msgstr "허리까지 불길이 솟아오른다!" + +#: src/field.cpp +msgid "You're surrounded by raging fire!" +msgstr "솟구치는 불길에 둘러싸였다!" + +#: src/field.cpp +msgid "You're lying in fire!" +msgstr "불 속에 누워 있다!" + +#: src/field.cpp +#, c-format +msgid "You feel sick from inhaling the %s" +msgstr "%s을(를) 들이마셔 메스껍다." + +#: src/field.cpp +msgid "This radioactive gas burns!" +msgstr "방사성가스가 불타고 있다!" + +#: src/field.cpp +msgid "You're torched by flames!" +msgstr "불길에 닿았다!" + +#: src/field.cpp +msgid " is torched by flames!" +msgstr "이(가) 불길에 닿았다!" + +#: src/field.cpp +msgid "These flames do not burn you." +msgstr "불길에 불타오르지 않는다." + +#: src/field.cpp +msgid "Those flames do not burn ." +msgstr "이(가) 불길에 불타오르지 않는다." + +#: src/field.cpp +msgid "You're painfully electrocuted!" +msgstr "" + +#: src/field.cpp +msgid " is shocked!" +msgstr "이(가) 전기충격을 받았다!" + +#: src/field.cpp +msgid "You're shocked!" +msgstr "전기충격을 받았다!" + +#: src/field.cpp +msgid "The electric cloud doesn't affect you." +msgstr "전자기 구름에 영향을 받지 않았다." + +#: src/field.cpp +msgid "The electric cloud doesn't seem to affect ." +msgstr "은(는) 전자기 구름에 영향을 받지 않았다." + +#: src/field.cpp +msgid "You're violently teleported!" +msgstr "급격하게 순간이동이 되었다!" + +#: src/field.cpp +msgid "The bees sting you!" +msgstr "벌에 쏘였다!" + +#: src/field.cpp +msgid "The bees sting you several times!" +msgstr "벌에 여러번 쏘였다!" #: src/field.cpp msgid "The bees sting you many times!" @@ -119769,6 +122513,14 @@ msgstr "순간이동 - 인접 오버맵" msgid "Test trait group" msgstr "특성 그룹 시험" +#: src/game.cpp +msgid "Show debug message" +msgstr "" + +#: src/game.cpp +msgid "Crash game (test crash handling)" +msgstr "" + #: src/game.cpp msgid "Quit to Main Menu" msgstr "메인 메뉴로 나가기" @@ -119892,9 +122644,10 @@ msgstr "시간" msgid "minute" msgstr "분" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp src/martialarts.cpp msgid "turn" -msgstr "턴" +msgid_plural "turns" +msgstr[0] "" #: src/game.cpp msgid "Set year to?" @@ -120482,7 +123235,7 @@ msgstr "물품 사용하기" msgid "Sort armor" msgstr "보호구 정렬하기" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "공격" @@ -120513,7 +123266,7 @@ msgstr "" msgid "Use which item?" msgstr "어떤 물품을 사용합니까?" -#: src/game.cpp src/iuse.cpp src/veh_interact.cpp +#: src/game.cpp src/iuse.cpp msgid "Never mind" msgstr "아무것도 아냐" @@ -120549,7 +123302,7 @@ msgid "" msgstr "" #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." +msgid "It looks solid, and will burn for a few hours without extra fuel." msgstr "" #: src/game.cpp @@ -121000,7 +123753,7 @@ msgctxt "butchery menu" msgid "Cut up %s (%d)" msgstr "" -#. ~ Name and number of items listed for disassembling +#. ~ Name, number of items and time to complete disassembling #: src/game.cpp #, c-format msgctxt "butchery menu" @@ -121037,8 +123790,8 @@ msgid "Choose corpse to butcher / item to disassemble" msgstr "해체할 시체/분해할 물품 선택" #: src/game.cpp -msgid "Butcher everything" -msgstr "모두 해체하기" +msgid "Quick butcher everything" +msgstr "" #: src/game.cpp msgid "Disassemble everything once" @@ -121049,8 +123802,8 @@ msgid "Disassemble everything" msgstr "모두 분해하기" #: src/game.cpp -msgid "Cut up all you can" -msgstr "모두 자르기" +msgid "Cut up everything" +msgstr "" #: src/game.cpp msgid "" @@ -121073,7 +123826,7 @@ msgstr "" #: src/game.cpp msgid "" -"This techinque is used when you are in a hurry, but still want to harvest " +"This technique is used when you are in a hurry, but still want to harvest " "something from the corpse. Yields are lower as you don't try to be precise," " but it's useful if you don't want to set up a workshop. Prevents zombies " "from raising." @@ -121098,7 +123851,7 @@ msgstr "" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "" @@ -121109,7 +123862,7 @@ msgstr "" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." @@ -121958,6 +124711,10 @@ msgstr "몸이 점점 썩어가는 것이 느껴진다." msgid "You feel fatigue seeping into your body." msgstr "" +#: src/game.cpp +msgid "The portal collapses!" +msgstr "" + #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." @@ -122199,6 +124956,19 @@ msgstr "갈증 해소" msgid "JOY" msgstr "의욕증가" +#. ~ Used for permafood shelf life in the Eat menu +#: src/game_inventory.cpp +msgid "indefinite" +msgstr "" + +#: src/game_inventory.cpp +msgid "SHELF LIFE" +msgstr "" + +#: src/game_inventory.cpp +msgid "FRESHNESS" +msgstr "" + #: src/game_inventory.cpp msgid "SPOILS IN" msgstr "유통기한" @@ -122231,6 +125001,38 @@ msgstr "쏟아진 액체는 마시지 못함" msgid "You're fully charged" msgstr "완전히 충전됨" +#: src/game_inventory.cpp +msgid "soon!" +msgstr "" + +#: src/game_inventory.cpp +msgid "fresh" +msgstr "" + +#: src/game_inventory.cpp +msgid "quite fresh" +msgstr "" + +#: src/game_inventory.cpp +msgid "near midlife" +msgstr "" + +#: src/game_inventory.cpp +msgid "past midlife" +msgstr "" + +#: src/game_inventory.cpp +msgid "getting older" +msgstr "" + +#: src/game_inventory.cpp +msgid "old" +msgstr "" + +#: src/game_inventory.cpp +msgid "rotten" +msgstr "" + #: src/game_inventory.cpp msgid "Consume item" msgstr "물품 섭취" @@ -122373,6 +125175,14 @@ msgstr "%s에 집어넣을 무기 선택" msgid "You have no weapons you could put into your %s." msgstr "%s에 집어넣을 수 있는 무기가 없다." +#: src/game_inventory.cpp src/iuse.cpp +msgid "Cut up what?" +msgstr "무엇을 잘라냅니까?" + +#: src/game_inventory.cpp +msgid "You have nothing to cut up." +msgstr "" + #: src/game_inventory.cpp msgid "Saw barrel" msgstr "총열 자르기" @@ -122684,7 +125494,7 @@ msgstr "얼마나 기다립니까?" msgid "Are you sure you want to sleep?" msgstr "잠을 잡니까?" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "네." @@ -122981,6 +125791,11 @@ msgstr "다이아몬드 코팅 적용" msgid "You don't have a suitable item to coat with diamond" msgstr "다이아몬드 코팅할 적합한 물품이 없다." +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "" + #: src/iexamine.cpp #, c-format msgid "Use the %s?" @@ -124432,6 +127247,10 @@ msgstr "" msgid "You inspect its contents and find: " msgstr "" +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "" + #: src/iexamine.cpp msgid "You see some smoldering embers there." msgstr "" @@ -124844,10 +127663,79 @@ msgstr "오렌지" msgid "black" msgstr "검은색" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks as fresh as it can be. It still has " +"%s until it spoils." +msgstr "" + +#: src/item.cpp +msgid "* This food looks as fresh as it can be." +msgstr "* 이 음식은 신선하다." + +#: src/item.cpp +#, c-format +msgid "" +"* This food looks old. It's just %s from becoming " +"inedible." +msgstr "" + +#: src/item.cpp +msgid "" +"* This food looks old. It's on the brink of becoming inedible." +msgstr "" + +#: src/item.cpp +msgid "" +"* This food looks fine. If you were more skilled in cooking or" +" survival, you might be able to make a better estimation." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks quite fresh. It has %s until it" +" spoils." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it is reaching its midlife. " +"There's %s before it spoils." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it has passed its midlife. " +"Edible, but will go bad in %s." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it will be old soon. It has " +"%s, so if you plan to use it, it's now or never." +msgstr "" + #: src/item.cpp msgid "Category: " msgstr "분류: " +#: src/item.cpp +msgid "$" +msgstr "" + #: src/item.cpp msgid "Price: " msgstr "가격: " @@ -125015,43 +127903,9 @@ msgstr "* 이 물품은 자세히 살펴보니, 환각성을 #: src/item.cpp #, c-format msgid "" -"* This food is perishable, and takes %s to " -"rot from full freshness, at room temperature." +"* This food is perishable, and at room temperature has an" +" estimated nominal shelf life of %s." msgstr "" -"* 이 음식은 썩을 수 있으며, 실내온도에서 상하는데 %s이(가) 걸린다." - -#: src/item.cpp -msgid "* This food looks as fresh as it can be." -msgstr "* 이 음식은 신선하다." - -#: src/item.cpp -msgid "" -"* This food looks still quite fresh. It's far from becoming " -"old." -msgstr "* 이 음식은 아직 꽤 신선하다. 썩으려면 아직 멀었다." - -#: src/item.cpp -msgid "" -"* This food looks like it is reaching its midlife. It has" -" some time ahead before spoiling." -msgstr "* 이 음식은 절반 정도 남았다. 썩기 까진 아직 시간이 있다." - -#: src/item.cpp -msgid "" -"* This food looks like it has passed its midlife. Edible," -" but will go old sooner rather then later." -msgstr "* 이 음식은 절반 정도 지났다. 아직 먹을 순 있지만, 곧 썩는다." - -#: src/item.cpp -msgid "" -"* This food looks like it will be old soon. It's now or never, if" -" you plan to use it." -msgstr "* 이 음식은 곧 썩는다. 먹으려면 지금 먹어야 한다." - -#: src/item.cpp -msgid "" -"* This food looks old. It's on a brink of becoming inedible." -msgstr "* 이 음식은 썩기 직전이다. 못먹게 되기 직전이다." #: src/item.cpp msgid "" @@ -125088,16 +127942,16 @@ msgid "" "very bad idea." msgstr "이 음식은부패하기 시작했다. 이 음식을 먹는 것은 좋은 생각이 아닌 것 같다." -#: src/item.cpp -msgid "Capacity: " -msgstr "장탄량:" - #: src/item.cpp #, c-format msgid " round of %s" msgid_plural " rounds of %s" msgstr[0] "%s 발" +#: src/item.cpp +msgid "Capacity: " +msgstr "장탄량:" + #: src/item.cpp msgid " per round" msgstr "라운드 당 " @@ -125276,6 +128130,18 @@ msgstr "조작성 보정치: " msgid "Ammo: %s" msgstr "탄약: %s" +#: src/item.cpp +msgid "%" +msgstr "" + +#: src/item.cpp +msgid "Reload modifier: " +msgstr "" + +#: src/item.cpp +msgid "Minimum strength required modifier: " +msgstr "" + #: src/item.cpp msgid "Used on: " msgstr "사용 대상: " @@ -127920,7 +130786,9 @@ msgid "You cannot use the %1$s with another of it's kind." msgstr "" #: src/iuse.cpp -msgid "You unfold solar array from the pack and plug it in." +msgid "" +"You unfold solar array from the pack. You still need to connect it with a " +"cable." msgstr "" #: src/iuse.cpp @@ -128074,10 +130942,6 @@ msgstr "쪼개진 나무 %d개를 만들었다." msgid "You waste a lot of the wood." msgstr "나무를 많이 낭비했다." -#: src/iuse.cpp src/iuse_actor.cpp -msgid "Cut up what?" -msgstr "무엇을 잘라냅니까?" - #: src/iuse.cpp msgid "Chop down which tree?" msgstr "어느 나무를 벱니까?" @@ -129312,14 +132176,26 @@ msgid "" " but best to stop messing with it." msgstr "멀티쿠커를 어설프게 손보다가 거의 부숴버렸다! 다행히 아직 동작하긴 하지만 이제 그만 망치는게 좋을 것 같다." -#: src/iuse.cpp -msgid "Attach cable to vehicle where?" -msgstr "어느 차량에 케이블을 연결합니까?" - #: src/iuse.cpp msgid "Using cable:" msgstr "케이블 사용:" +#: src/iuse.cpp +msgid "Attach cable to vehicle" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to self" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to solar pack" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to vehicle where?" +msgstr "어느 차량에 케이블을 연결합니까?" + #: src/iuse.cpp msgid "Attach loose end of the cable" msgstr "케이블 끝 부분을 연결" @@ -129500,6 +132376,105 @@ msgid "" "work." msgstr "" +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "" + +#: src/iuse.cpp +msgid "Heads!" +msgstr "" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "" + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "" + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "" + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "" + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "" + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "" + +#: src/iuse.cpp +msgid "Most likely." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "" + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "" + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "" + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "" + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "" + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "" + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "" + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "" + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "" + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "" + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "" + #: src/iuse_actor.cpp #, c-format msgid "The %s is empty!" @@ -132111,25 +135086,229 @@ msgstr "로크 콘솔" msgid "View Research Logs" msgstr "연구일지 열람" -#: src/mapgen.cpp -msgid "Download Map Data" -msgstr "지도 자료 내려받기" +#: src/mapgen.cpp +msgid "Download Map Data" +msgstr "지도 자료 내려받기" + +#: src/mapgen.cpp +msgid "Divert power to elevator" +msgstr "엘리베이터로 우회전력 보내기" + +#: src/mapgen_functions.cpp +msgid "PolCom OS v1.47" +msgstr "폴컴 OS v1.47" + +#: src/mapgen_functions.cpp +msgid "Open Supply Room" +msgstr "보급실 열기" + +#: src/mapgen_functions.cpp +msgid "Open Evidence Locker" +msgstr "증거물품 보관함 열기" + +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "" + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "" + +#: src/martialarts.cpp +msgid "activate" +msgstr "사용" + +#: src/martialarts.cpp +msgid "be used" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "" + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "" + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind " +"it" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" +msgstr "" + +#: src/martialarts.cpp +msgid "Passive" +msgstr "" + +#: src/martialarts.cpp +msgid "Hit" +msgstr "명중" -#: src/mapgen.cpp -msgid "Divert power to elevator" -msgstr "엘리베이터로 우회전력 보내기" +#: src/martialarts.cpp +msgid "Get hit" +msgstr "" -#: src/mapgen_functions.cpp -msgid "PolCom OS v1.47" -msgstr "폴컴 OS v1.47" +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "" -#: src/mapgen_functions.cpp -msgid "Open Supply Room" -msgstr "보급실 열기" +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "" -#: src/mapgen_functions.cpp -msgid "Open Evidence Locker" -msgstr "증거물품 보관함 열기" +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr "" #: src/material.cpp msgid "damages" @@ -132775,10 +135954,6 @@ msgstr "" msgid "Outpost Missions" msgstr "전초 임무" -#: src/mission_companion.cpp -msgid "Base Missions" -msgstr "기지 임무" - #: src/mission_companion.cpp msgid "Junk Shop Missions" msgstr "고물상 임무" @@ -132831,16 +136006,6 @@ msgstr "" msgid " hours] \n" msgstr "시간]\n" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?" -msgstr "" -"\n" -" \n" -"동료를 일행으로 다시 데려옵니까?" - #: src/mission_companion.cpp msgid "Retrieve Scavenging Patrol" msgstr "수색 순찰 되찾기" @@ -132953,540 +136118,6 @@ msgstr "" msgid "Recover Ally from Carpentry Work" msgstr "동료를 목공 작업에서 되찾기" -#: src/mission_companion.cpp -msgid "Upgrade Camp" -msgstr "캠프 개선하기" - -#: src/mission_companion.cpp -msgid "Gather Materials" -msgstr "재료 찾기" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" -" \n" -"Effects:\n" -"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" -" \n" -"Must have enjoyability >= -6\n" -"Perishable food liquidated at penalty depending on upgrades and rot time:\n" -"> Rotten: 0%%\n" -"> Rots in < 2 days: 60%%\n" -"> Rots in < 5 days: 80%%\n" -" \n" -"Total faction food stock: %d kcal or %d day's rations" -msgstr "" - -#: src/mission_companion.cpp -msgid "Distribute Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" -" \n" -"Effects:\n" -"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" -"> Items sitting on any type of furniture will not be moved.\n" -"> Items that are not listed in one of the categories are defaulted to the tools group." -msgstr "" - -#: src/mission_companion.cpp -msgid "Reset Sort Points" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to gather light brush and heavy sticks.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -"> heavy sticks\n" -"> withered plants\n" -"> splintered wood\n" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Collect Firewood" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to do low level chores and sort supplies.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" -"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Menial Labor" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours \n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Expand Base" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to a nearby forest to cut logs.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: 1 \n" -"Effects:\n" -"> 50%% of trees/trunks at the forest position will be cut down.\n" -"> 50%% of total material will be brought back.\n" -"> Repeatable with diminishing returns.\n" -" \n" -"Risk: Low-Medium\n" -"Time: 6 Hour Base + Travel Time + Cutting Time\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Cut Logs" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Good for setting up resupply or contingency points.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward.\n" -" \n" -"Risk: Medium\n" -"Time: 6 Hour Construction + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Setup Hide Site" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Push gear out to a hide site or bring gear back from one.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 1\n" -"Effects:\n" -"> Good for returning equipment you left in the hide site shelter.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward or back.\n" -" \n" -"Risk: Medium\n" -"Time: 1 Hour Base + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Relay Hide Site" -msgstr "" - -#: src/mission_companion.cpp -msgid "Construct Map Fortifications" -msgstr "" - -#: src/mission_companion.cpp -msgid "Construct Spiked Trench" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recruit Companions" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Select checkpoints to customize path.\n" -"> Reveals terrain around the path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Scout Mission" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 4\n" -"Effects:\n" -"> Pulls creatures encountered into combat instead of fleeing.\n" -"> Select checkpoints to customize path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: Very High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Combat Patrol" -msgstr "" - -#: src/mission_companion.cpp -msgid " Expansion Upgrade" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Have a companion attempt to completely dissemble a vehicle into components.\n" -" \n" -"Skill used: mechanics\n" -"Difficulty: 2 \n" -"Effects:\n" -"> Removed parts placed on the furniture in the garage.\n" -"> Skill plays a huge role to determine what is salvaged.\n" -" \n" -"Risk: None\n" -"Time: Skill Based \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Chop Shop" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plow any spaces that have reverted to dirt or grass.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Restores only the plots created in the last expansion upgrade.\n" -"> Does not damage existing crops.\n" -" \n" -"Risk: None\n" -"Time: 5 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Plow Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plant designated seeds in the spaces that have already been tilled.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose which seed type or all of your seeds.\n" -"> Stops when out of seeds or planting locations.\n" -"> Will plant in ALL dirt mounds in the expansion.\n" -" \n" -"Risk: None\n" -"Time: 1 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Plant Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Harvest any plants that are ripe and bring the produce back.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Will dump all harvesting products onto your location.\n" -" \n" -"Risk: None\n" -"Time: 3 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Harvest Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to expand your camp!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " hours left] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " minutes left] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " [DONE]\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally from Upgrading" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to upgrade your expansions!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally, " -msgstr "" - -#: src/mission_companion.cpp -msgid "Working at the chop shop...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/120 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Chop Shop" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working in your kitchen!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " [ALMOST DONE]\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Cooking" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working in your blacksmith shop!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Smithing" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to plow your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/~48 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Plow Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to plant your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/4 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Plant Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working to harvest your fields!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/~10 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Harvest Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "Working on your farm!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid " (Finish) Crafting" -msgstr "" - -#: src/mission_companion.cpp -msgid "Busy crafting!\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for materials to upgrade the camp.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "/3 hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Ally from Gathering" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for firewood.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Firewood Gatherers" -msgstr "" - -#: src/mission_companion.cpp -msgid "Performing menial labor...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Menial Laborer" -msgstr "" - -#: src/mission_companion.cpp -msgid "Surveying for expansion...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Surveyor" -msgstr "" - -#: src/mission_companion.cpp -msgid "Cutting logs in the woods...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Log Cutter" -msgstr "" - -#: src/mission_companion.cpp -msgid "Setting up a hide site...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Hide Setup" -msgstr "" - -#: src/mission_companion.cpp -msgid "Constructing fortifications...\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Finish Map Fortifications" -msgstr "" - -#: src/mission_companion.cpp -msgid "Searching for recruits.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Recruiter" -msgstr "" - -#: src/mission_companion.cpp -msgid "Scouting the region.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Scout" -msgstr "" - -#: src/mission_companion.cpp -msgid "Patrolling the region.\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Combat Patrol" -msgstr "" - #: src/mission_companion.cpp msgid "" "Cost: $1000\n" @@ -133755,235 +136386,6 @@ msgstr "수색 원정 떠나기..." msgid "departs to work as a laborer..." msgstr "인부로서 일하러 가기..." -#: src/mission_companion.cpp -msgid "You don't have enough food stored to feed your companion." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to upgrade the camp..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have a companion upgrading the camp." -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the materials for the upgrade." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your garage..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your kitchen with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your blacksmith shop with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your farm with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns to you with something..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for materials..." -msgstr "" - -#: src/mission_companion.cpp -msgid "There are too many companions working on this mission!" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for firewood..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to dig ditches and scrub toilets..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to survey land..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You have already selected a surveyor!" -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to upgrade the expansion..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have a worker upgrading that expansion!" -msgstr "" - -#: src/mission_companion.cpp -msgid "Forests and swamps are the only valid cutting locations." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Trip Estimate:\n" -"%s" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to cut logs..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working in the woods..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Forests, swamps, and fields are valid hide site locations." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to build a hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You need equipment to setup a hide site..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working on the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You must select an existing hide site." -msgstr "" - -#: src/mission_companion.cpp -msgid "Bring gear back?" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs for the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You need equipment to transport between the hide site..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from shuttling gear between the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Select a start and end point. Line must be straight. Fields, forests, and " -"swamps are valid fortification locations. In addition to existing " -"fortification constructions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an end point." -msgstr "" - -#: src/mission_companion.cpp -msgid "Invalid terrain in construction path." -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the material to build the fortification." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for recruits..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Select checkpoints until you reach maximum range or select the last point " -"again to end." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs on patrol..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Your companion hit a river and didn't know how to swim..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Your companion hit a river and didn't know how to swim well enough to " -"cross..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't return from patrol..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from patrol..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that garage." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins plowing the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone plowing that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "You have no additional seeds to give your companions..." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins planting the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Which seeds do you wish to have planted?" -msgstr "어떤 씨앗을 심을까요?" - -#: src/mission_companion.cpp -msgid "You already have someone planting that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to harvest the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone harvesting that field." -msgstr "" - #: src/mission_companion.cpp msgid "departs to work as a carpenter..." msgstr "목수로서 일하러 가기..." @@ -134176,243 +136578,6 @@ msgid "" "participate in advanced tasks." msgstr "" -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"%s\n" -" \n" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s \n" -"Risk: None\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes: \n" -"Send a companion to gather materials for the next camp upgrade.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: " -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from upgrading the camp having earned a bit of experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "While gathering supplies, a silent specter approaches %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s notices the antlered horror and slips away before it gets too close." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The survivor approaches %s asking for directions." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Fearful that he may be an agent of some hostile faction, %s doesn't mention " -"the camp." -msgstr "" - -#: src/mission_companion.cpp -msgid "The two part on friendly terms and the survivor isn't seen again." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't detect the ambush until it was too late!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The bull moose charged %s from the tree line..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Despite being caught off guard %s was able to run away until the moose gave " -"up pursuit." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The jabberwock grabbed %s by the arm from behind and began to scream." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Terrified, %s spun around and delivered a massive kick to the creature's " -"torso..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Collapsing into a pile of gore, %s walked away unscathed..." -msgstr "" - -#: src/mission_companion.cpp -msgid "(Sounds like bullshit, you wonder what really happened.)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s turned to find the hideous black eyes of a giant wasp staring back from " -"only a few feet away..." -msgstr "" - -#: src/mission_companion.cpp -msgid "The screams were terrifying, there was nothing anyone could do." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Pieces of %s were found strewn across a few bushes." -msgstr "" - -#: src/mission_companion.cpp -msgid "(You wonder if your companions are fit to work on their own...)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from gathering materials carrying supplies and has a bit more " -"experience..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Your companion seems disappointed that your pantry is empty..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -" Chopping this vehicle:\n" -"%s" -msgstr "" - -#: src/mission_companion.cpp -msgid "begins working in the garage..." -msgstr "" - -#: src/mission_companion.cpp -msgid "No seeds to plant!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working your fields..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from doing the dirty work to keep the camp running..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Sorting points have changed, forcing reset." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an expansion:" -msgstr "" - -#: src/mission_companion.cpp -msgid "You choose to wait..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from surveying for the expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "No items are located at the drop point..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "You distribute %d kcal worth of food to your companions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Harvestable: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Ready for Planting: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Needs Plowing: " -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Name: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "---- Engines ----\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Engine: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Status: %24d%%\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Fuel: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "---- Fuel Storage & Battery ----\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Estimated Chop Time: 5 Days\n" -msgstr "" - #: src/mission_companion.cpp #, c-format msgid "While %s was framing a building one of the walls began to collapse..." @@ -134570,370 +136735,6 @@ msgstr "누구를 귀환시킵니까?" msgid "No one returns to your party..." msgstr "아무도 돌아오지 않는다..." -#: src/mission_companion.cpp -msgid "MAIN" -msgstr "" - -#: src/mission_companion.cpp -msgid " [N] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [NE] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [E] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [SE] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [S] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [SW] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [W] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [NW] " -msgstr "" - -#: src/mission_companion.cpp -msgid "Farm Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Garage Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Kitchen Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Blacksmith Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Empty Expansion" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Select a location between %d and %d tiles away." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"You must select a target between %d and %d range from the base. Range: %d" -msgstr "" - -#: src/mission_companion.cpp -msgid "You must be able to see the target that you select." -msgstr "" - -#: src/mission_companion.cpp -msgid "Do you want to bounce off this location to extend range?" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15.2f (km)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">One Way: %15d (trips)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15.2f (km)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15d (m)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15d (m)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Travel: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Working: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (days)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (minutes)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Food: %15d (kcal)\n" -" \n" -msgstr "" -"음식: %15d(kcal)\n" -"\n" - -#: src/mission_companion.cpp -msgid "food for you" -msgstr "" - -#: src/mission_companion.cpp -msgid "food for companions" -msgstr "" - -#: src/mission_companion.cpp -msgid "weapons" -msgstr "" - -#: src/mission_companion.cpp -msgid "clothing" -msgstr "" - -#: src/mission_companion.cpp -msgid "bionics" -msgstr "" - -#: src/mission_companion.cpp -msgid "all kinds of tools" -msgstr "" - -#: src/mission_companion.cpp -msgid "wood of various sorts" -msgstr "" - -#: src/mission_companion.cpp -msgid "trash and rotting food" -msgstr "" - -#: src/mission_companion.cpp -msgid "books" -msgstr "" - -#: src/mission_companion.cpp -msgid "medication" -msgstr "" - -#: src/mission_companion.cpp -msgid "ammo" -msgstr "탄약" - -#: src/mission_companion.cpp -#, c-format -msgid "Reset point: %s?" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -" Items New Point Old Point\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -" Save Points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "Revert to default points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the materials to craft that" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Batch crafting %s [MAX: %d]: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Your batch is too large!" -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to work..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" -" \n" -"Skill used: speech\n" -"Difficulty: 2 \n" -"Base Score: +%3d%%\n" -"> Expansion Bonus: +%3d%%\n" -"> Faction Bonus: +%3d%%\n" -"> Special Bonus: +%3d%%\n" -" \n" -"Total: Skill +%3d%%\n" -" \n" -"Risk: High\n" -"Time: 4 Days\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from searching for recruits with a bit more experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s encountered %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't find anyone to recruit..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s convinced %s to hear a recruitment offer from you..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested in anything %s had to offer..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"NPC Overview:\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Name: %20s\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Strength: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Dexterity: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Intelligence: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Perception: %10d\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Top 3 Skills:\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Asking for:\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"> Food: %10d days\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Faction Food:%9d days\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Recruit Chance: %10d%%\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an option:" -msgstr "" - -#: src/mission_companion.cpp -msgid "Increase Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "Decrease Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "Make Offer" -msgstr "" - -#: src/mission_companion.cpp -msgid "Not Interested" -msgstr "" - -#: src/mission_companion.cpp -msgid "You decide you aren't interested..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s has been convinced to join!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested..." -msgstr "" - #: src/mission_companion.h msgid "Do you wish to give your companion additional items?" msgstr "" @@ -137581,9 +139382,10 @@ msgstr "잔여 포인트: %4d" msgid "Freeform" msgstr "자유 선택제" -#: src/newcharacter.cpp -msgid "Pick your style:" -msgstr "전투방식 선택:" +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" +msgstr "무술 선택. (%s로 자세히 보기)" #: src/newcharacter.cpp msgid "Use this style?" @@ -138796,45 +140598,6 @@ msgstr " 관심 있다면 도와줬으면 하는 일이 있는데." msgid " If you are interested, I have another job for you." msgstr "관심있으면, 줄 일이 있는데." -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "흠, 우리 뿐인 것 같네." - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "최소한 피난처는 있잖아." - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "글쎄, 보급품하고 다른 생존자를 찾아보는 건 어떨까." - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "아마 우린 여기를 떠나는 게 좋을 것 같아." - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to" -" disappear quickly from here." -msgstr "만약 우리가 여기서 빨리 벗어나야 한다면 차를 한대 얻는 게 좋을거야." - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "" -"우린 주위에 있는 농장 중 하나에 들러보는 게 좋을거야. 농장에선 약간의 음식을 공급받을 수 있고 도시에서 그다지 멀지 않으니까." - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "우린 저 도시에서 멀리 벗어나는게 좋을거야, 저기에 유용한 것들이 많이 있더라도 말이지." - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." msgstr "방금 장비를 달라고 했잖아. 나중에 물어보라고." @@ -138843,10 +140606,6 @@ msgstr "방금 장비를 달라고 했잖아. 나중에 물어보라고." msgid "Why should I share my equipment with you?" msgstr "왜 내가 너하고 장비를 나눠야 되는데?" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "좋아. 이거 받아." - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr ", 또 물어보면 !" @@ -138867,46 +140626,6 @@ msgstr "미안, 내가 가르쳐줄수 있는게 없는 것 같아." msgid "Here's what I can teach you..." msgstr "내가 가르쳐줄 수 있는 것은 이 정도야." -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "좋아, 시작해볼까." - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "내가 항생제를 얻기 전까진 안돼..." - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "물어봤잖아, 나중에 다시 물어보라고." - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "내가 왜 너하고 같이 가야하는데?" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "좋았아, 너하고 같이 가지!" - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "음... 내 생각은 다른데." - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "뭐야?" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "정말 떠날거야?" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "좋아. 네가 대장을 하라고." - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "아니. 내가 여기서 지도자야." - #: src/npctalk.cpp #, c-format msgid "%d.%d miles." @@ -138918,22 +140637,6 @@ msgid "%d foot." msgid_plural "%d feet." msgstr[0] "%d 피트" -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "경계 중이야." - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "시발 안되지, 그랬다간 뒤쳐질거라고!" - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "그냥 마음속에 담아 두는게 좋겠어." - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "너 자꾸 왜 그래? 너가 이러는 거 엄청 불편해." - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "*은(는) 교전하지 않을 것입니다." @@ -139239,30 +140942,6 @@ msgstr "니가 나보다 더 많이 보게 될지도 몰라..." msgid "Delivering bandages." msgstr "붕대 전달." -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "이제 뭘 해야하지?" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "조언 좀 해줄래?" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "나하고 같이 여행할래?" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "거래하자." - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "장비 없이는 대피소를 떠날수 없어..." - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "흠, 알겠어." - #: src/npctalk.cpp msgid "Okay, fine." msgstr "좋아, 알았어." @@ -139295,30 +140974,6 @@ msgstr "어... 아무것도 아냐." msgid "Never mind, I'll do without. Bye." msgstr "잊어버려. 알아서 할게. 안녕." -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "고마워!" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "고마워! 그런데 좀 더 가질 수 있을까?" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "고마워, 나중에 봐!" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "알았어 알았어.. 미안해." - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "장난치지 말고, 좀 더 줘!" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "그래, 좋아, 안녕." - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "좋아, 훈련을 다시 시작하자고 " @@ -139340,94 +140995,6 @@ msgstr "%s: %d -> %d" msgid "%s: %d -> %d (cost $%d)" msgstr "%s: %d -> %d (비용 $%d)" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "그거 좋네." - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "다시 생각해봤어. 신경 쓰지마." - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "좋아. 길을 안내해." - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "아니, 우린 여기 있어도 괜찮을거야." - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "알았어. 항생제를 가져다주지." - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "그래, 그래, 나중에 물어보지." - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "나는 너를 안전하게 지켜줄 수 있어." - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "당신은 나를 안전하게 지켜줄 수 있어요." - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "우린 친구지, 그렇지?" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "안 그러면 죽여버리겠어." - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "훌륭해!" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "좋았어, 가자!" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "얼마나 더 멀리?" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "한동안 혼자서 다니고 싶은데." - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "잠깐 지휘해줬으면 좋겠는데." - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "물러서라. 지금은 내가 리더야." - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "가자." - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "아니, 그냥 농담이야." - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "그래, 잘 알겠어. 안녕." - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "좋아. 그 밖에..." - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "좋아, 가자." - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "좋아, 좋아." - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "좋아, 고마워." @@ -139436,10 +141003,6 @@ msgstr "좋아, 고마워." msgid "Let's keep moving." msgstr "계속 움직이자." -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "네가 나와 같이 가줬으면 좋겠어." - #: src/npctalk.cpp msgid "Combat commands..." msgstr "전투 명령..." @@ -139497,16 +141060,12 @@ msgid "Miscellaneous rules..." msgstr "행동수칙에 대해서 말하고 싶은데." #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "" - -#: src/npctalk.cpp -msgid "I'll give you some space." -msgstr "알겠어. 귀찮게 굴지 않을게." +msgid "I'm going to go my own way for a while." +msgstr "한동안 혼자서 다니고 싶은데." #: src/npctalk.cpp -msgid "I understand..." -msgstr "알겠어..." +msgid "Let's talk about faction camps." +msgstr "" #: src/npctalk.cpp msgid "Change your engagement rules..." @@ -140225,6 +141784,11 @@ msgstr "" "'자동 부수기/해체' 가 활성화될 때 수행할 행동을 설정합니다. 부수기: 위에 올라선 시체를 부숩니다. -근처 부수기: 근처 시체도 " "같이 부숩니다. -시체 해체: 위에 올라선 시체를 해체합니다." +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "불구" + #: src/options.cpp msgid "Pulp" msgstr "부수기" @@ -140419,10 +141983,6 @@ msgstr "켬: 언제나 데스캠을 실행합니다. 묻기: 사망시 물어봅 msgid "Always" msgstr "켬" -#: src/options.cpp -msgid "Ask" -msgstr "묻기" - #: src/options.cpp msgid "Never" msgstr "끔" @@ -142795,8 +144355,7 @@ msgstr "내장전력: %d/%d" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "무기:" +msgstr "" #: src/player.cpp msgid "Equipment:" @@ -144251,21 +145810,6 @@ msgstr "" msgid "Stop wielding %s?" msgstr "%s을(를) 내려놓습니까?" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "테크닉:" - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "이 무술은 무기를 장비해도 강제로 비무장 공격이 됩니다," - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "무술 선택. (%s로 자세히 보기)" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "맨손 유지 (꺼짐)" @@ -144321,6 +145865,11 @@ msgstr "고장" msgid "Mend" msgstr "수리" +#: src/player.cpp +#, c-format +msgid "The %s doesn't have any faults to toggle." +msgstr "" + #: src/player.cpp #, c-format msgid "The %s doesn't have any faults to mend." @@ -144822,7 +146371,7 @@ msgstr "%s 위에서는 잠을 청하기가 힘들다." #: src/player.cpp msgid "You start trying to fall asleep." -msgstr "잠들려는 노력을 하기 시작했다." +msgstr "잠자리에 들었다." #: src/player.cpp msgid "You nestle your pile of clothes for warmth." @@ -145073,10 +146622,6 @@ msgstr "지능" msgid "Perception" msgstr "지각력" -#: src/player_display.cpp -msgid "Speed" -msgstr "속도" - #: src/player_display.cpp msgid "Severely Malnourished" msgstr "심각한 영양실조" @@ -146165,6 +147710,10 @@ msgstr "콰아앙!" msgid "kerblam!" msgstr "쿠와앙!" +#: src/recipe.cpp +msgid "none" +msgstr "" + #: src/requirements.cpp #, c-format msgid "%d tool with %s of %d or more." @@ -147487,6 +149036,19 @@ msgstr "'{'로 위로 스크롤" msgid "'}' to scroll down" msgstr "'}'로 아래로 스크롤" +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" +msgstr "" + #: src/veh_interact.cpp #, c-format msgid "> %2$s" @@ -148342,13 +149904,13 @@ msgstr "%s을(를) 켜기엔 전력이 부족하다." #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" -msgstr "%s 끄기" +msgid "Turn on %s" +msgstr "%s 켜기" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" -msgstr "%s 켜기" +msgid "Turn off %s" +msgstr "%s 끄기" #: src/vehicle_use.cpp #, c-format @@ -148444,10 +150006,6 @@ msgstr "카메라 시스템 켜짐" msgid "Camera system won't turn on" msgstr "카메라 시스템이 켜지지 않는다." -#: src/vehicle_use.cpp -msgid "Quit controlling electronics" -msgstr "전자기기 제어 중지" - #: src/vehicle_use.cpp msgid "Electronics controls" msgstr "전자기기 제어" diff --git a/lang/po/pl.po b/lang/po/pl.po index ef38bf39c1ec1..583ce58ca2c81 100644 --- a/lang/po/pl.po +++ b/lang/po/pl.po @@ -1,18 +1,18 @@ # Translators: -# Brett Dong , 2018 # Wojciech K , 2018 # Przemek Orechwa , 2018 -# Faalagorn, 2018 # Millennium Falcon , 2018 +# Brett Dong , 2018 # Aleksander Sienkiewicz , 2018 +# Faalagorn, 2018 # msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-26 22:02+0800\n" +"POT-Creation-Date: 2018-11-16 22:24+0800\n" "PO-Revision-Date: 2018-04-26 14:47+0000\n" -"Last-Translator: Aleksander Sienkiewicz , 2018\n" +"Last-Translator: Faalagorn, 2018\n" "Language-Team: Polish (https://www.transifex.com/cataclysm-dda-translators/teams/2217/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5193,6 +5193,7 @@ msgstr "" "potrzebuje dla zdrowia. Tak myślisz..." #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "kamień" @@ -6456,6 +6457,16 @@ msgstr[1] "maska gimpa" msgstr[2] "maska gimpa" msgstr[3] "maska gimpa" +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "" + #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" @@ -6464,6 +6475,31 @@ msgid "" msgstr "" "Ciasna maska z czarnej skóry. Otworzy na oczy i ustaw zastąpiono suwakami." +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "" + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "bondage suit" msgid_plural "bondage suits" @@ -7097,7 +7133,7 @@ msgstr[3] "" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." msgstr "" @@ -7564,6 +7600,21 @@ msgstr[3] "futrzany prochowiec" msgid "A thick fur full-length duster. Has many pockets for storage." msgstr "Gruby futrzany prochowiec, z wieloma kieszeniami o sporej pojemności." +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather duster" msgid_plural "leather dusters" @@ -8919,6 +8970,21 @@ msgstr[3] "futrzana czapka" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "Czapka z futer zwierzęcych. Wyjątkowo ciepła." +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -9327,19 +9393,6 @@ msgstr "" "Średniowieczny pełny hełm zapewniający osłonę całej głowy z twarzą włącznie," " kosztem wielkiego skrępowania ruchów." -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "hełm do tłumienia zamieszek" -msgstr[1] "hełm do tłumienia zamieszek" -msgstr[2] "hełm do tłumienia zamieszek" -msgstr[3] "hełm do tłumienia zamieszek" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "Hełm policyjny z plastikową osłoną całej twarzy." - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" @@ -11243,6 +11296,19 @@ msgstr[3] "futrzane spodnie" msgid "A hefty pair of fur-lined pants." msgstr "Masywne spodnie podbite miękkim ciepłym futrem." +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather pants" msgid_plural "leather pants" @@ -12047,11 +12113,49 @@ msgstr[1] "śpiwór" msgstr[2] "śpiwór" msgstr[3] "śpiwór" +#. ~ Use action menu_text for sleeping bag. +#. ~ Use action menu_text for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Roll up" +msgstr "Zroluj" + +#. ~ Use action msg for sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the sleeping bag, preparing it for transport." +msgstr "Rolujesz śpiwór przygotowując go do transportu." + #. ~ Description for sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag that covers you head to toe." msgstr "Duży śpiwór, który okrywa cię od stóp do głów." +#: lang/json/ARMOR_from_json.py +msgid "rolled sleeping bag" +msgid_plural "rolled sleeping bags" +msgstr[0] "zrolowane śpiwory" +msgstr[1] "zrolowane śpiwory" +msgstr[2] "zrolowane śpiwory" +msgstr[3] "zrolowane śpiwory" + +#. ~ Use action menu_text for rolled sleeping bag. +#. ~ Use action menu_text for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Unroll" +msgstr "Rozwiń" + +#. ~ Use action msg for rolled sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll the sleeping bag." +msgstr "Rozwijasz śpiwór." + +#. ~ Description for rolled sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag rolled up for transport. It has a strap to carry it " +"with." +msgstr "" +"Duży śpiwór zrolowany do transportu. Ma pasek na którym można go przenosić." + #: lang/json/ARMOR_from_json.py msgid "fur sleeping bag" msgid_plural "fur sleeping bags" @@ -12060,11 +12164,38 @@ msgstr[1] "futrzany śpiwór" msgstr[2] "futrzany śpiwór" msgstr[3] "futrzany śpiwór" +#. ~ Use action msg for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the fur sleeping bag, preparing it for transport." +msgstr "Rolujesz futrzany śpiwór przygotowując go do transportu." + #. ~ Description for fur sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag lined with fur. Who needs a tent?" msgstr "Duży śpiwór wyłożony futrem. Po co komu namiot?" +#: lang/json/ARMOR_from_json.py +msgid "rolled fur sleeping bag" +msgid_plural "rolled fur sleeping bags" +msgstr[0] "zrolowany futrzany śpiwór" +msgstr[1] "zrolowany futrzany śpiwór" +msgstr[2] "zrolowany futrzany śpiwór" +msgstr[3] "zrolowane futrzane śpiwory" + +#. ~ Use action msg for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll up the fur sleeping bag." +msgstr "Rozwijasz futrzany śpiwór." + +#. ~ Description for rolled fur sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag lined with fur, rolled for transport. It has a strap " +"to carry it with." +msgstr "" +"Duży śpiwór z futrzanym podbiciem zrolowany do transportu. Ma pasek na " +"którym można go przenosić." + #: lang/json/ARMOR_from_json.py msgid "sleeveless duster" msgid_plural "sleeveless dusters" @@ -12098,6 +12229,21 @@ msgstr "" "Gruby futrzany prochowiec pełnej długości pozbawiony rękawów. Ma wiele " "kieszeni." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" msgid_plural "sleeveless leather dusters" @@ -12166,6 +12312,21 @@ msgstr "" "Futrzany płaszcz, który nie krępuje ramion. Jego liczne kieszenie mają sporą" " pojemność." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -13020,6 +13181,21 @@ msgstr[3] "futrzany płaszcz" msgid "A thick fur trenchcoat, lined with pockets. Great for storage." msgstr "Płaszcz z futer z licznymi kieszeniami. Zapewniają sporą pojemność." +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "" + #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" msgid_plural "leather trenchcoats" @@ -13713,10 +13889,10 @@ msgstr "" #: lang/json/ARMOR_from_json.py msgid "XL pot helmet" msgid_plural "XL pot helmets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "hełm z garnka XL" +msgstr[1] "hełm z garnka XL" +msgstr[2] "hełm z garnka XL" +msgstr[3] "hełm z garnka XL" #. ~ Description for XL pot helmet #: lang/json/ARMOR_from_json.py @@ -13724,6 +13900,8 @@ msgid "" "A huge makeshift helmet made from a canning pot. For the truly desperate " "man-bear-pig." msgstr "" +"Wielki hełm zrobiony domowym sposobem z garnka do weków. Dla naprawdę " +"zdesperowanego człeko-niedzwiedzio-świni." #: lang/json/ARMOR_from_json.py msgid "survivor utility belt" @@ -16950,6 +17128,9 @@ msgid "" "allow you to make automated precise cuts and can be used as a high-quality " "butchering tool." msgstr "" +"System chirurgicznej jakości skalpeli został zaimplementowany w twoich " +"palcach. Pozwalają ci wykonywać automatyczne precyzyjne cięcia, i można je " +"też wykorzystać jako wysokiej jakości narzędzia rzeźnicze." #: lang/json/BIONIC_ITEM_from_json.py msgid "Anti-Glare Compensators CBM" @@ -17242,17 +17423,14 @@ msgstr[2] "Generatory Przeładowania Jonowego CBM" msgstr[3] "Generatory Przeładowania Jonowego CBM" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" -"Potężny jonowy generator energii implantowano w twojej klatce piersiowej. " -"Strzela silną, stale rozszerzającą się falą energii, Strzał energii w " -"rezultacie rozpala tlen tworząc pożary na swej drodze, i powoduje eksplozje " -"przy trafieniu w cel. Używanie na krótkie dystanse jest mocno odradzane." #: lang/json/BIONIC_ITEM_from_json.py msgid "Synaptic Regeneration System CBM" @@ -17305,28 +17483,6 @@ msgstr "" "eksplozje przy trafieniu w cel. Używanie na krótkie dystanse jest mocno " "odradzane." -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "Autonomiczne Skalpele Chirurgiczne CBM" -msgstr[1] "Autonomiczne Skalpele Chirurgiczne CBM" -msgstr[2] "Autonomiczne Skalpele Chirurgiczne CBM" -msgstr[3] "Autonomiczne Skalpele Chirurgiczne CBM" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While" -" activated, they will continously drain power to make automated precise cuts" -" but you will be unable to wield anything." -msgstr "" -"W palcach użytkownika implantowano system chirurgicznej jakości skalpeli. " -"Aktywowane stale pobierają energię by wykonywać automatyczne precyzyjne " -"cięcia, uniemożliwiając trzymanie czegokolwiek w dłoniach." - #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" msgid_plural "Lessons for the Novice Bowhunter" @@ -20674,6 +20830,23 @@ msgstr "" "i notatkami, z których doświadczony krawiec mógłby nauczyć się wielu " "sztuczek." +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon" +" Animal Rights Organization." +msgstr "" + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -30426,11 +30599,9 @@ msgstr "tabletka z mączki kostnej" #. ~ Description for bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Tastes horribly and is " +"Homemade calcium supplement made out of bone meal. Tastes horrible and is " "hard to swallow but it does its job." msgstr "" -"Domowej roboty suplement wapnia zrobiony z mączki kostnej. Smakuje paskudnie" -" i jest trudny do przełknięcia, ale działa." #: lang/json/COMESTIBLE_from_json.py msgid "flavored bone meal tablet" @@ -30439,13 +30610,10 @@ msgstr "smakowa tabletka z mączki kostnej" #. ~ Description for flavored bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Due to some sweetness " -"mixed in to counteract the powdery texture and the taste of ash, almost as " -"palatable as the pre-cataclysm tablets." +"Homemade calcium supplement made out of bone meal. Due to some sweetness " +"mixed in to counteract the powdery texture and the taste of ash, it's almost" +" as palatable as the pre-cataclysm tablets." msgstr "" -"Domowej roboty suplement wapnia zrobiony z mączki kostnej. Dzięki wmieszanym" -" słodkościom, które równoważą ziemistą teksturę i smak popiołu, staje się " -"znośna jak tabletki sprzed kataklizmu." #: lang/json/COMESTIBLE_from_json.py msgid "gummy vitamin" @@ -31094,7 +31262,7 @@ msgstr "" "Gęsty i smaczny napój z czystych rafinowanych białek i pożywnych owoców. " "Wzbogacony dodatkowymi minerałami i witaminami." -#: lang/json/COMESTIBLE_from_json.py src/mission_companion.cpp +#: lang/json/COMESTIBLE_from_json.py src/faction_camp.cpp msgid "seeds" msgid_plural "seeds" msgstr[0] "nasiono" @@ -34382,6 +34550,36 @@ msgstr "" "Garstka tlących się niedopałków, emitujących dym. Dogasają nawet jak na nie " "patrzysz." +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "" + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "" + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -37622,7 +37820,7 @@ msgstr "" "Długi kawałek drewna z kilkoma kawałkami stali sztywno przymocowanymi na " "końcu. Broń ta jest nieporęczna i wolna, ale bardzo silnie uderza." -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "deska" @@ -39799,12 +39997,8 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." +"spike." msgstr "" -"Średniowieczna broń składająca się z drewnianego trzonka zakończonego " -"żelaznym kolcem. Choć większa i cięższa od innych włóczni, jej celność i " -"obrażenia nie mają sobie równych." #: lang/json/GENERIC_from_json.py msgid "pot" @@ -47735,19 +47929,6 @@ msgstr "" "Mieszka w jaskiniach i innych dziurach, i używa echolokacji do nawigowania w" " powietrzu wśród zwartego terenu przy dużych prędkościach." -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "dymiący miś" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "" -"Dymiąca skorupa to jedyne co zostało z niegdyś dumnego niedźwiedzia. Jego " -"czarne oczy łypią na ciebie ze złością... i głodem." - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "zabliźniony zombie" @@ -47973,11 +48154,9 @@ msgstr "K.H.W.Ż.P." #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "" -"K.H.W.Ż.P. czyli Kanibalistyczny Humanoid Wiodący Żywot Podziemny. Człowiek " -"o wyblakłej skórze i umyśle oszalałym od lat izolacji w podziemiach." #: lang/json/MONSTER_from_json.py msgid "police bot" @@ -50882,10 +51061,10 @@ msgstr "" "kojotów, wilków, i zmutowanych gigantycznych pająków." #: lang/json/MONSTER_from_json.py -msgid "labrador mutt" -msgstr "kundel labrador" +msgid "Labrador mutt" +msgstr "" -#. ~ Description for labrador mutt +#. ~ Description for Labrador mutt #: lang/json/MONSTER_from_json.py msgid "" "This once average Labrador mixed breed dog has clearly gone feral. You can " @@ -50897,10 +51076,10 @@ msgstr "" " masz wątpliwości, że pogryzłby cię gdybyś dał mu na to szansę." #: lang/json/MONSTER_from_json.py -msgid "labrador puppy" -msgstr "szczeniak labrador" +msgid "Labrador puppy" +msgstr "" -#. ~ Description for labrador puppy +#. ~ Description for Labrador puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Labrador puppy. Much safer to tame than adult " @@ -50916,11 +51095,9 @@ msgstr "buldog" #. ~ Description for bulldog #: lang/json/MONSTER_from_json.py msgid "" -"The American Bulldog is a hardy, well built dog, that seems suited for " +"The American bulldog is a hardy, well built dog, that seems suited for " "surviving the apocalypse." msgstr "" -"Amerykański buldog to twardy, dobrze zbudowany pies, który wydaje się " -"odpowiednio przystosowany do przetrwania apokalipsy." #: lang/json/MONSTER_from_json.py msgid "bulldog puppy" @@ -50929,11 +51106,9 @@ msgstr "szczeniak buldog" #. ~ Description for bulldog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless American Bulldog puppy. Much safer to tame than " +"An adorable, defenseless American bulldog puppy. Much safer to tame than " "adult counterparts." msgstr "" -"Uroczy bezbronny szczeniak buldoga. Dużo łatwiejszy do oswojenia niż dorosły" -" osobnik." #: lang/json/MONSTER_from_json.py msgid "pit bull mix" @@ -50942,16 +51117,11 @@ msgstr "pitbul mieszaniec" #. ~ Description for pit bull mix #: lang/json/MONSTER_from_json.py msgid "" -"The oft-misunderstood Pit Bull is not actually a single breed but a label " -"for several such as American Pit Bull Terrier and American Staffordshire " -"Terrier. Average abilities and well-known for their 'lock jaw' which isn't " -"real but their incredible determination is." +"The oft-misunderstood pit bull is not actually a single breed but a label " +"for several such as the American pit bull terrier and American Staffordshire" +" terrier. Average abilities and well-known for their 'lock jaw' which isn't" +" real but their incredible determination is." msgstr "" -"Często niepoprawnie rozumiany pitbul to de facto nie pojedynczy gatunek a " -"nazwa kilku, w tym amerykańskiego pitbul teriera i amerykańskiego " -"staffordshire teriera. Przeciętne zdolne i powszechnie znane z 'zacisku " -"szczęk' co nie jest prawdą, w przeciwieństwie do ich niezwykłej " -"determinacji." #: lang/json/MONSTER_from_json.py msgid "pit bull puppy" @@ -50960,11 +51130,9 @@ msgstr "szczeniak pitbul" #. ~ Description for pit bull puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Pit Bull puppy. Much safer to tame than adult " +"An adorable, defenseless pit bull puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Uroczy bezbronny szczeniak pitbula. Dużo łatwiejszy do oswojenia niż dorosły" -" osobnik." #: lang/json/MONSTER_from_json.py msgid "beagle" @@ -50973,11 +51141,9 @@ msgstr "beagle" #. ~ Description for beagle #: lang/json/MONSTER_from_json.py msgid "" -"An adorable Beagle that has managed to survive the apocalypse. Being agile " +"An adorable beagle that has managed to survive the apocalypse. Being agile " "and small, they are difficult to shoot at. Generally attacks in packs." msgstr "" -"Uroczy beagle który przetrwał apokalipsę. Będąc zwinnym i małym, jest rudny " -"do trafienia z broni palnej. Zwykle atakuje sforą." #: lang/json/MONSTER_from_json.py msgid "beagle puppy" @@ -50986,11 +51152,9 @@ msgstr "szczeniak beagle" #. ~ Description for beagle puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Beagle puppy. Much safer to tame than adult " +"An adorable, defenseless beagle puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Uroczy bezbronny szczeniak beagle. Dużo łatwiejszy do oswojenia niż dorosły " -"osobnik." #: lang/json/MONSTER_from_json.py msgid "border collie" @@ -51000,12 +51164,9 @@ msgstr "owczarek szkocki" #: lang/json/MONSTER_from_json.py msgid "" "An athletic and hyperactive dog that loves to herd animals and jump, the " -"Border Collie is an agile attacker. Although they can be easy to train, " +"border collie is an agile attacker. Although they can be easy to train, " "they don't work well in packs." msgstr "" -"Atletyczny i hiperaktywny pies który uwielbia zaganiać zwierzęta i skakać. " -"Owczarek szkocki to zwinny przeciwnik. Choć łatwe w tresurze, nie układa im " -"się praca w stadzie." #: lang/json/MONSTER_from_json.py msgid "border collie puppy" @@ -51014,11 +51175,9 @@ msgstr "szczeniak owczarka szkockiego" #. ~ Description for border collie puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Border Collie puppy. Much safer to tame than adult" +"An adorable, defenseless border collie puppy. Much safer to tame than adult" " counterparts." msgstr "" -"Uroczy bezbronny szczeniak owczarka szkockiego. Dużo łatwiejszy do oswojenia" -" niż dorosły osobnik." #: lang/json/MONSTER_from_json.py msgid "boxer mastiff" @@ -51027,11 +51186,9 @@ msgstr "bokser mastif" #. ~ Description for boxer mastiff #: lang/json/MONSTER_from_json.py msgid "" -"An ordinary breed full of affection, the Boxer Mastiff doesn't otherwise " +"An ordinary breed full of affection, the boxer mastiff doesn't otherwise " "stand out amongst other dogs with its capabilities." msgstr "" -"Jako zwykła rasa pełna czułości, bokser mastif nie wyróżnia się ponad inne " -"psie rasy i posiada przeciętne umiejętności." #: lang/json/MONSTER_from_json.py msgid "boxer puppy" @@ -51040,17 +51197,15 @@ msgstr "szczeniak boksera" #. ~ Description for boxer puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Boxer puppy. Much safer to tame than adult " +"An adorable, defenseless boxer puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Uroczy bezbronny szczeniak boksera. Dużo łatwiejszy do oswojenia niż dorosły" -" osobnik." #: lang/json/MONSTER_from_json.py -msgid "chihuahua" -msgstr "chihuahua" +msgid "Chihuahua" +msgstr "" -#. ~ Description for chihuahua +#. ~ Description for Chihuahua #: lang/json/MONSTER_from_json.py msgid "" "It's a tiny Chihuahua. How it has managed to survive is a miracle; although" @@ -51060,10 +51215,10 @@ msgstr "" "natura miały tu coś do rzeczy." #: lang/json/MONSTER_from_json.py -msgid "chihuahua puppy" -msgstr "szczeniak chihuahua" +msgid "Chihuahua puppy" +msgstr "" -#. ~ Description for chihuahua puppy +#. ~ Description for Chihuahua puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Chihuahua puppy. Much safer to tame than adult " @@ -51093,17 +51248,15 @@ msgstr "szczeniak jamnika" #. ~ Description for dachshund puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Dachshund puppy. Much safer to tame than adult " +"An adorable, defenseless dachshund puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Uroczy bezbronny szczeniak jamnika. Dużo łatwiejszy do oswojenia niż dorosły" -" osobnik." #: lang/json/MONSTER_from_json.py -msgid "german shepherd" -msgstr "owczarek niemiecki" +msgid "German shepherd" +msgstr "" -#. ~ Description for german shepherd +#. ~ Description for German shepherd #: lang/json/MONSTER_from_json.py msgid "" "The original K-9 breed. An easy to train and great attack dog that will " @@ -51113,23 +51266,21 @@ msgstr "" "ponadto będzie bronił właściciela aż do śmierci. Nie sprawdza się w stadach." #: lang/json/MONSTER_from_json.py -msgid "german shepherd puppy" -msgstr "szczeniak owczarka niemieckiego" +msgid "German shepherd puppy" +msgstr "" -#. ~ Description for german shepherd puppy +#. ~ Description for German shepherd puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless German Shepherd puppy. Much safer to tame than " +"An adorable, defenseless German shepherd puppy. Much safer to tame than " "adult counterparts." msgstr "" -"Uroczy bezbronny szczeniak owczarka niemieckiego. Dużo łatwiejszy do " -"oswojenia niż dorosły osobnik." #: lang/json/MONSTER_from_json.py -msgid "great pyrenees" -msgstr "pirenejski pies górski" +msgid "Great Pyrenees" +msgstr "" -#. ~ Description for great pyrenees +#. ~ Description for Great Pyrenees #: lang/json/MONSTER_from_json.py msgid "" "A large and powerful breed, the Great Pyrenees has a beautiful, thick white " @@ -51142,10 +51293,10 @@ msgstr "" "nieumarłych. " #: lang/json/MONSTER_from_json.py -msgid "great pyrenees puppy" -msgstr "szczeniak pirenejskiego psa górskiego" +msgid "Great Pyrenees puppy" +msgstr "" -#. ~ Description for great pyrenees puppy +#. ~ Description for Great Pyrenees puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Great Pyrenees puppy. Much safer to tame than " @@ -51161,13 +51312,10 @@ msgstr "rottweiler" #. ~ Description for rottweiler #: lang/json/MONSTER_from_json.py msgid "" -"Terrifying breed to face feral, as the Rottweiler breed is descended from " +"Terrifying breed to face feral, as the rottweiler breed is descended from " "Roman legion mastiffs. Robust and vicious, quite capable of mauling a human" " to death." msgstr "" -"Przerażająca rasa jeśli spotkać go zdziczałego, jak że wywodzi się od " -"rzymskich legionowych mastifów. Krzepkie i brutalne, zdolne rozerwać " -"człowieka na strzępy." #: lang/json/MONSTER_from_json.py msgid "rottweiler puppy" @@ -51176,11 +51324,9 @@ msgstr "szczeniak rottweiler" #. ~ Description for rottweiler puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Rottweiler puppy. Much safer to tame than adult " +"An adorable, defenseless rottweiler puppy. Much safer to tame than adult " "counterparts." msgstr "" -"Uroczy bezbronny szczeniak rottweiler. Dużo łatwiejszy do oswojenia niż " -"dorosły osobnik." #: lang/json/MONSTER_from_json.py msgid "cattle dog" @@ -51189,12 +51335,9 @@ msgstr "australijski pies pasterski" #. ~ Description for cattle dog #: lang/json/MONSTER_from_json.py msgid "" -"An agile and sturdy breed that is welcome on any farm, the Australian Cattle" -" Dog is adept at leaping fences and herding livestock." +"An agile and sturdy breed that is welcome on any farm, the Australian cattle" +" dog is adept at leaping fences and herding livestock." msgstr "" -"Zwinna i silnie zbudowana rasa chętnie witana na każdej farmie, jako że " -"australijski pies pasterski jest biegły w przeskakiwaniu ogrodzeń i " -"zaganianiu zwierząt." #: lang/json/MONSTER_from_json.py msgid "cattle dog puppy" @@ -51203,11 +51346,9 @@ msgstr "szczeniak australijskiego psa pasterskiego" #. ~ Description for cattle dog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Australian Cattle Dog puppy. Much safer to tame " +"An adorable, defenseless Australian cattle dog puppy. Much safer to tame " "than adult counterparts." msgstr "" -"Uroczy bezbronny szczeniak australijskiego psa pasterskiego. Dużo łatwiejszy" -" do oswojenia niż dorosły osobnik." #: lang/json/MONSTER_from_json.py msgid "fox" @@ -52518,6 +52659,19 @@ msgstr "sługa Pana Szkieletala" msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "Pomniejszy szkielet, przyzwany samotnym trąbieniem trąbki." +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "dymiący miś" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "" +"Dymiąca skorupa to jedyne co zostało z niegdyś dumnego niedźwiedzia. Jego " +"czarne oczy łypią na ciebie ze złością... i głodem." + #: lang/json/MONSTER_from_json.py msgid "Compsognathus" msgstr "Kompsognat" @@ -54592,12 +54746,8 @@ msgstr[3] "ogniotrwała maska ocalonych XL" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from" -" heat, smoke, teargas, and shrapnel. It must be prepared before use." +" heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" -"Spersonalizowana wzmacniana maska przeciwgazowa wyścielana nomeksem, która " -"chroni twarz i oczy. W rozmiar XL wepchniesz nawet zmutowaną głowę konia. " -"Zapewnia ochronę przed żarem, dymem, gazem łzawiącym i odłamkami. Musi być " -"przygotowana przed użyciem." #: lang/json/TOOL_ARMOR_from_json.py msgid "firefighter PBA mask" @@ -55713,6 +55863,46 @@ msgstr "" "Rozłożony zestaw przenośnych kwantowych paneli słonecznych gotowych pchnąć " "trochę energii w aktywny system zasilania kablowego." +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "hełm do tłumienia zamieszek" +msgstr[1] "hełm do tłumienia zamieszek" +msgstr[2] "hełm do tłumienia zamieszek" +msgstr[3] "hełm do tłumienia zamieszek" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "" + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "" + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "" + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." +msgstr "" + #: lang/json/TOOL_from_json.py msgid "integrated toolset" msgid_plural "integrated toolsets" @@ -61828,7 +62018,7 @@ msgstr "" "maską. Powszechnie używany w sytuacjach zagrożenia, zapewnia natychmiastową " "ulgę w atakach astmy lub zatruciu dymem, i zapewnia krótki dopływ energii." -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" msgstr[0] "lutownica" @@ -63960,17 +64150,6 @@ msgstr "" "Wygląda jak rodzaj Genetycznej Formy Życia i Dyskowego Systemu Operacyjnego," " przyłączonego do ziemniaka." -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "" -"Kompaktowy podnośnik nożycowy używany do podnoszenia pojazdów. Wyposażony w " -"technologię Aperture Science(tm) która pozwala mu podnosić silniki przez " -"teleportowanie się pod nie." - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" @@ -65445,6 +65624,18 @@ msgstr[1] "autonomiczne skalpele chirurgiczne" msgstr[2] "autonomiczne skalpele chirurgiczne" msgstr[3] "autonomiczne skalpele chirurgiczne" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While" +" activated, they will continously drain power to make automated precise cuts" +" but you will be unable to wield anything." +msgstr "" +"W palcach użytkownika implantowano system chirurgicznej jakości skalpeli. " +"Aktywowane stale pobierają energię by wykonywać automatyczne precyzyjne " +"cięcia, uniemożliwiając trzymanie czegokolwiek w dłoniach." + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -67976,6 +68167,14 @@ msgstr "" "amortyzatory zapobiegają obrażeniom ciała od silnych upadków, kosztem " "ograniczonej zdolności ruchów." +#: lang/json/bionic_from_json.py lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "Generator Przeładowania Jonowego" +msgstr[1] "Generatory Przeładowania Jonowego" +msgstr[2] "Generatory Przeładowania Jonowego" +msgstr[3] "Generatory Przeładowania Jonowego" + #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" msgstr "" @@ -67989,15 +68188,6 @@ msgid "" "already, it will boost the rate of recovery while you sleep." msgstr "" -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "Generator Przeładowania Jonowego" -msgstr[1] "Generatory Przeładowania Jonowego" -msgstr[2] "Generatory Przeładowania Jonowego" -msgstr[3] "Generatory Przeładowania Jonowego" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "Autonomiczne Skalpele Chirurgiczne" @@ -70225,12 +70415,12 @@ msgstr "Namierzony laserowo" msgid "A laser sight is targeting you!" msgstr "Celownik laserowy cię namierzył!" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" msgstr "Pal" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "Nawdychałeś się gęstego dymu." @@ -71121,11 +71311,9 @@ msgstr "Gaz odprężajacy" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" -"You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort." +"You are thoroughly relaxed and don't feel like moving. Fighting? Too much " +"effort." msgstr "" -"Siła -3; Zręczność -3; Inteligencja -2; Precepcja -4\n" -"Jesteś całkowicie zrelaksowany i nie masz ochoty się ruszać. Walka? Za dużo zachodu." #. ~ Apply message for effect(s) 'Relaxation gas'. #: lang/json/effects_from_json.py @@ -71468,11 +71656,12 @@ msgstr "Prawie uzdrowiona" msgid "This damaged limb is slowly regaining its functions." msgstr "Ta uszkodzona kończyna powoli odzyskuje funkcjonowanie." -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" msgstr "Kaleka" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "" @@ -71702,7 +71891,7 @@ msgstr "Złapany w ciężkie wnyki" #: lang/json/effects_from_json.py msgid "Sleep Deprived" -msgstr "" +msgstr "Dług Snu" #. ~ Description of effect 'Sleep Deprived'. #: lang/json/effects_from_json.py @@ -71710,11 +71899,13 @@ msgid "" "Your sleep debt has been steadily increasing for a while. You should get " "some rest." msgstr "" +"Twój dług snu powoli zwiększa się od jakiegoś czasu. Powinieneś nieco " +"odpocząć." #. ~ Apply message for effect(s) 'Sleep Deprived'. #: lang/json/effects_from_json.py msgid "You feel weary, your body tired from lack of quality sleep." -msgstr "" +msgstr "Czujesz się znużony, a twoje ciało zmęczył brak porządnego snu." #. ~ Remove message for effect(s) 'Sleep Deprived'. #: lang/json/effects_from_json.py @@ -71722,17 +71913,19 @@ msgid "" "You have finally catched up with your lost sleep, and you feel refreshingly " "awake for a change." msgstr "" +"W końcu nadgoniłeś ze spaniem, i czujesz się odświeżająco obudzony dla " +"odmiany." #: lang/json/effects_from_json.py msgid "Magnesium Supplements" -msgstr "" +msgstr "Suplementy Magnezu" #. ~ Description of effect 'Magnesium Supplements'. #: lang/json/effects_from_json.py msgid "" "You took some magnesium supplements. These will help with sleep " "deprivation." -msgstr "" +msgstr "Wziąłeś nieco suplementów magnezu. To pomoże z deprywacją snu." #: lang/json/epilogue_from_json.py msgid "" @@ -72191,6 +72384,10 @@ msgid "" "left unattended. The community she helped said, 'I've never known a nicer " "woman nor one who had fought off depression for so long.'" msgstr "" +" Zostaje chemikiem samoukiem i medykiem. Jej praca prowadzi ją w końcu w " +"objęcia nadużycia alkoholowego i uzależnienia od morfiny. Przedawkowuje " +"pewnej nocy gdy nikt jej nie pilnuje. Społeczność której pomagała komentuje " +"\"Nie znamy milszej kobiety ani kogoś kto tak długo zmagał się z depresją.\"" #: lang/json/epilogue_from_json.py msgid "" @@ -73365,7 +73562,7 @@ msgstr "roślina gotowa do zbiorów" #: lang/json/furniture_from_json.py msgid "fermenting vat" -msgstr "" +msgstr "kadź fermentacyjna" #. ~ Description for fermenting vat #. ~ Description for filled fermenting vat @@ -73376,7 +73573,7 @@ msgstr "" #: lang/json/furniture_from_json.py msgid "filled fermenting vat" -msgstr "" +msgstr "pełna kadź fermentacyjna" #: lang/json/furniture_from_json.py msgid "wooden keg" @@ -73417,7 +73614,7 @@ msgstr "tarcza celownicza" #. ~ Description for target #: lang/json/furniture_from_json.py msgid "A metal shooting target in the rough shape of a human." -msgstr "" +msgstr "Metalowa tarcza celownicza z grubsza w kształcie człowieka." #: lang/json/furniture_from_json.py msgid "marloss flower" @@ -73819,11 +74016,11 @@ msgstr "mata tatami" #: lang/json/furniture_from_json.py msgid "krash!" -msgstr "" +msgstr "krash!" #: lang/json/furniture_from_json.py msgid "krak." -msgstr "" +msgstr "krak." #: lang/json/furniture_from_json.py msgid "filing cabinet" @@ -74310,8 +74507,7 @@ msgstr "" "mogą być ponownie użyte." #: lang/json/gun_from_json.py lang/json/gun_from_json.py -#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py -#: lang/json/gunmod_from_json.py src/item.cpp +#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" msgid "pistol" msgstr "pistolet" @@ -74667,6 +74863,9 @@ msgid "" "A powerful handheld launcher handcrafted from scrap. Made to launch " "modified handheld nuclear weapons, it is an exceedingly powerful weapon." msgstr "" +"Potężna ręczna wyrzutnia zrobiony domowym sposobem ze złomu. Przeznaczony do" +" miotania zmodyfikowanych ręcznych ładunków jądrowych. To przesadnie silna " +"broń." #: lang/json/gun_from_json.py msgid "M202 FLASH" @@ -75418,18 +75617,11 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" -"Platforma L523 Leadworks LLC's w systemie bullpup używa powszechnej amunicji" -" 5.56 do wielu zastosowań, i zaprojektowana jest do szybkiej, bezpiecznej i " -"efektywnej wymiany części z jednej na drugą. Stosowane w tym karabinie " -"bojowym opatentowane połączenie optyki i kolimatora zapewnia szybkie i pewne" -" celowanie, z systemem żyro-stabilizacji Leadworks i przednim uchwytem dla " -"lepszej kontroli. Ponadto posiada moduł - wyrzutnię granatów - do walki z " -"twardymi celami. Jak reszta rodziny nie akceptuje obcych modyfikacji." #: lang/json/gun_from_json.py msgid "M249" @@ -76373,14 +76565,10 @@ msgstr[3] "rewolwer LeMat" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those" " who wander the \"Earth-that-was\"." msgstr "" -"Zmodernizowana wersja rewolweru LeMat, rzadkiej broni produkowanej podczas " -"wojny secesyjnej. Ma pojemność 9 nabojów .44 i pojedynczy pocisk do " -"strzelby, przez co jest doskonałym towarzyszem tych co wędrują po Ziemi " -"która przeminęła." #: lang/json/gun_from_json.py msgid "Ruger Redhawk" @@ -78401,6 +78589,10 @@ msgid "" "The energy shot ignites oxygen creating fires as it moves and an explosion " "on impact." msgstr "" +"Potężny generator energii jonowej implantowano w klatce piersiowej " +"użytkownika. Strzela silną, stale rozszerzającą się falą energii, która " +"przechodzi przez różne cele. Strzał energii rozpala tlen tworząc pożary na " +"swej drodze, i powoduje eksplozje przy uderzeniu w cel." #: lang/json/gun_from_json.py msgid "SVS-24" @@ -79329,71 +79521,71 @@ msgstr[3] "" #: lang/json/gun_from_json.py msgid "" "This is a pseudo item for monster attacks. If you see this, it's a bug." -msgstr "" +msgstr "To pseudo przedmiot do ataków potworów. Jeśli go widzisz to błąd." #: lang/json/gun_from_json.py msgid "integral 12 gauge shotgun" msgid_plural "integral 12 gauge shotguns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Zintegrowana strzelba 12 mm" +msgstr[1] "Zintegrowana strzelba 12 mm" +msgstr[2] "Zintegrowana strzelba 12 mm" +msgstr[3] "Zintegrowana strzelba 12 mm" #: lang/json/gun_from_json.py msgid "integral 50 caliber machinegun" msgid_plural "integral 50 caliber machineguns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Zintegrowany karabin maszynowy kaliber 50" +msgstr[1] "Zintegrowany karabin maszynowy kaliber 50" +msgstr[2] "Zintegrowany karabin maszynowy kaliber 50" +msgstr[3] "Zintegrowany karabin maszynowy kaliber 50" #: lang/json/gun_from_json.py msgid "integral needle gun" msgid_plural "integral needle guns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Zintegrowany igłacz" +msgstr[1] "Zintegrowany igłacz" +msgstr[2] "Zintegrowany igłacz" +msgstr[3] "Zintegrowany igłacz" #: lang/json/gun_from_json.py msgid "integral 8mm firearm" msgid_plural "integral 8mm firearms" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Zintegrowana broń 8mm" +msgstr[1] "Zintegrowana broń 8mm" +msgstr[2] "Zintegrowana broń 8mm" +msgstr[3] "Zintegrowana broń 8mm" #: lang/json/gun_from_json.py msgid "integral laser emitter" msgid_plural "integral laser emitters" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Zintegrowany emiter laserowy" +msgstr[1] "Zintegrowany emiter laserowy" +msgstr[2] "Zintegrowany emiter laserowy" +msgstr[3] "Zintegrowany emiter laserowy" #: lang/json/gun_from_json.py msgid "integral railgun" msgid_plural "integral railguns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Zintegrowany miotacz szynowy" +msgstr[1] "Zintegrowany miotacz szynowy" +msgstr[2] "Zintegrowany miotacz szynowy" +msgstr[3] "Zintegrowany miotacz szynowy" #: lang/json/gun_from_json.py msgid "integral lightning caster" msgid_plural "integral lightning casters" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Zintegrowany miotacz piorunów" +msgstr[1] "Zintegrowany miotacz piorunów" +msgstr[2] "Zintegrowany miotacz piorunów" +msgstr[3] "Zintegrowany miotacz piorunów" #: lang/json/gun_from_json.py msgid "integral EMP generator" msgid_plural "integral EMP generators" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Zintegrowany generator EMP" +msgstr[1] "Zintegrowany generator EMP" +msgstr[2] "Zintegrowany generator EMP" +msgstr[3] "Zintegrowany generator EMP" #: lang/json/gun_from_json.py msgid "atlatl" @@ -79452,26 +79644,26 @@ msgstr "" #: lang/json/gun_from_json.py msgid "integral nailgun" msgid_plural "integral nailguns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Zintegrowany pistolet na gwoździe" +msgstr[1] "Zintegrowany pistolet na gwoździe" +msgstr[2] "Zintegrowany pistolet na gwoździe" +msgstr[3] "Zintegrowany pistolet na gwoździe" #: lang/json/gun_from_json.py msgid "mounted crossbow" msgid_plural "mounted crossbows" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "zamontowana kusza" +msgstr[1] "zamontowana kusza" +msgstr[2] "zamontowana kusza" +msgstr[3] "zamontowana kusza" #: lang/json/gun_from_json.py msgid "Vortical plasma beam" msgid_plural "Vortical plasma beams" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "wirowy miotacz plazmy" +msgstr[1] "wirowy miotacz plazmy" +msgstr[2] "wirowy miotacz plazmy" +msgstr[3] "wirowy miotacz plazmy" #: lang/json/gun_from_json.py msgid "30mm autocannon" @@ -80831,6 +81023,42 @@ msgstr "" "konwertuje ją w kaliber 9x19mm. Konwersja skutkuje nieco zmniejszoną " "celnością." +#: lang/json/gunmod_from_json.py +msgid "belt feed adapter" +msgid_plural "belt feed adapters" +msgstr[0] "adapter do pasów amunicyjnych" +msgstr[1] "adapter do pasów amunicyjnych" +msgstr[2] "adapter do pasów amunicyjnych" +msgstr[3] "adapter do pasów amunicyjnych" + +#: lang/json/gunmod_from_json.py +msgid "" +"A kit providing the necessary parts for permanently converting a firearm " +"from magazine to belt-feed. Guaranteed to void your warranty." +msgstr "" +"Zestaw niezbędnych części do permanentnej konwersji broni z zasilanej " +"magazynkiem na zasilaną pasem amunicyjnym. Utrata gwarancji gwarantowana." + +#: lang/json/gunmod_from_json.py +msgid "magazine" +msgstr "magazynek" + +#: lang/json/gunmod_from_json.py +msgid "tuned mechanism" +msgid_plural "tuned mechanisms" +msgstr[0] "dostrojony mechanizm" +msgstr[1] "dostrojony mechanizm" +msgstr[2] "dostrojony mechanizm" +msgstr[3] "dostrojony mechanizm" + +#: lang/json/gunmod_from_json.py +msgid "" +"A set of finely tuned internal components which increase the precision and " +"reliably of a firearm." +msgstr "" +"Zestaw dostrojonych wewnętrznych komponentów, które zwiększają precyzję i " +"niezawodność broni." + #: lang/json/gunmod_from_json.py msgid "arrow rest" msgid_plural "arrow rests" @@ -80998,11 +81226,8 @@ msgstr[3] "przedłużenia lufy Leadworks" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." +"firearm, contributing to both accuracy and damage." msgstr "" -"Zintegrowana przedłużona lufa Leadworks zwiększa prędkość wylotową broni, " -"przyczyniając się do lepszej celności i obrażeń, ale wydłużając czas " -"celowania." #: lang/json/gunmod_from_json.py msgid "LW shortened barrel" @@ -81032,11 +81257,8 @@ msgstr[3] "wytrzymałej lufy Leadworks" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." +"shooting. Increases damage output and weapon range." msgstr "" -"Zintegrowana wytrzymała lufa Leadworks, zaprojektowania specjalnie do " -"długiego strzelania. Redukuje celność, ale zwiększa obrażenia i zasięg " -"broni." #: lang/json/gunmod_from_json.py msgid "lightweight replacement furniture" @@ -81068,11 +81290,9 @@ msgstr[3] "ergonomiczny uchwyt" #: lang/json/gunmod_from_json.py msgid "" -"A set of ergonomic replacement furniture for a firearm improving handling " -"and accuracy." +"A set of ergonomic replacement furniture for a firearm improving handling." msgstr "" -"Zestaw ergonomicznych zamienników obudowy broni ulepszających obsługę i " -"celność." +"Zestaw ergonomicznych zamienników obudowy broni ulepszających obsługę." #: lang/json/gunmod_from_json.py msgid "beam scatterer" @@ -81134,26 +81354,6 @@ msgstr "" msgid "emitter" msgstr "emiter" -#: lang/json/gunmod_from_json.py -msgid "belt feed adapter" -msgid_plural "belt feed adapters" -msgstr[0] "adapter do pasów amunicyjnych" -msgstr[1] "adapter do pasów amunicyjnych" -msgstr[2] "adapter do pasów amunicyjnych" -msgstr[3] "adapter do pasów amunicyjnych" - -#: lang/json/gunmod_from_json.py -msgid "" -"A kit providing the necessary parts for permanently converting a firearm " -"from magazine to belt-feed. Guaranteed to void your warranty." -msgstr "" -"Zestaw niezbędnych części do permanentnej konwersji broni z zasilanej " -"magazynkiem na zasilaną pasem amunicyjnym. Utrata gwarancji gwarantowana." - -#: lang/json/gunmod_from_json.py -msgid "magazine" -msgstr "magazynek" - #: lang/json/gunmod_from_json.py msgid "leadworks magazine adapter" msgid_plural "leadworks magazine adapters" @@ -81180,24 +81380,10 @@ msgstr[3] "miękki spust" #: lang/json/gunmod_from_json.py msgid "" -"A precision weighted trigger assembly that improves a firearm's accuracy." -msgstr "Precyzyjnie wyważony mechanizm spustowy ulepszający celność broni." - -#: lang/json/gunmod_from_json.py -msgid "tuned mechanism" -msgid_plural "tuned mechanisms" -msgstr[0] "dostrojony mechanizm" -msgstr[1] "dostrojony mechanizm" -msgstr[2] "dostrojony mechanizm" -msgstr[3] "dostrojony mechanizm" - -#: lang/json/gunmod_from_json.py -msgid "" -"A set of finely tuned internal components which increase the precision and " -"reliably of a firearm." +"A precision weighted trigger assembly that slightly improves a firearm's " +"accuracy." msgstr "" -"Zestaw dostrojonych wewnętrznych komponentów, które zwiększają precyzję i " -"niezawodność broni." +"Precyzyjnie wyważony mechanizm spustowy nieco ulepszający celność broni." #: lang/json/gunmod_from_json.py msgid "firearm waterproofing" @@ -81413,10 +81599,10 @@ msgstr[3] "stabilizator żyroskopowy" #: lang/json/gunmod_from_json.py msgid "" "An advanced unit that straps onto the side of your firearm and reduces " -"vibration, greatly reducing recoil and increasing accuracy." +"vibration, greatly reducing recoil and slightly increasing accuracy." msgstr "" "Zaawansowana jednostka przywiązywana do boku broni redukująca wibracje, " -"znacznie redukująca odrzut i zwiększająca celność." +"znacznie redukująca odrzut i nieco zwiększająca celność." #: lang/json/gunmod_from_json.py msgid "LW gyroscopic stabilizer" @@ -82401,7 +82587,7 @@ msgstr "Rozcinasz padłego zombie i odcinasz mu głowe." #: lang/json/help_from_json.py msgid ": Introduction" -msgstr "" +msgstr ": Wstęp" #: lang/json/help_from_json.py msgid "" @@ -82451,7 +82637,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Movement" -msgstr "" +msgstr ": Poruszanie Się" #: lang/json/help_from_json.py msgid "Movement is performed using the numpad, or vikeys." @@ -82459,7 +82645,7 @@ msgstr "Ruch następuje za pomocą klawiatury numerycznej, lub klawiszy vi." #: lang/json/help_from_json.py msgid "" -msgstr "" +msgstr "" #: lang/json/help_from_json.py msgid "" @@ -82493,7 +82679,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Viewing" -msgstr "" +msgstr ": Obserwacja" #: lang/json/help_from_json.py msgid "" @@ -82509,7 +82695,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Hunger, thirst, and sleep" -msgstr "" +msgstr ": Głód, Pragnienie i Sen" #: lang/json/help_from_json.py msgid "" @@ -82572,7 +82758,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Pain and stimulants" -msgstr "" +msgstr ": Ból i Stymulanty" #: lang/json/help_from_json.py msgid "" @@ -82630,7 +82816,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Addiction" -msgstr "" +msgstr ": Uzależnienia" #: lang/json/help_from_json.py msgid "" @@ -82657,7 +82843,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Morale and learning" -msgstr "" +msgstr ": Morale i Uczenie się" #: lang/json/help_from_json.py msgid "" @@ -82753,7 +82939,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Radioactivity and mutation" -msgstr "" +msgstr ": Radioaktywność i Mutacje" #: lang/json/help_from_json.py msgid "" @@ -82796,7 +82982,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Bionics" -msgstr "" +msgstr ": Bioniki" #: lang/json/help_from_json.py msgid "" @@ -82851,7 +83037,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Crafting" -msgstr "" +msgstr ": Wytwarzanie" #: lang/json/help_from_json.py msgid "" @@ -82912,7 +83098,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Traps" -msgstr "" +msgstr ": Pułapki" #: lang/json/help_from_json.py msgid "" @@ -82950,7 +83136,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Items overview" -msgstr "" +msgstr ": Przegląd Przedmiotów" #: lang/json/help_from_json.py msgid "" @@ -83015,7 +83201,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Combat" -msgstr "" +msgstr ": Walka" #: lang/json/help_from_json.py msgid "" @@ -83076,14 +83262,9 @@ msgstr "Opis magazynków zawiera też listę kompatybilnych kalibrów pocisków. msgid "" "Note that while several ammo types exist for a given caliber and magazine " "type, you can't mix and match these types into a single magazine. You can't " -"for example load 9x19mm JHP and 9x19 FMJ ammo into the same magazine, since " -"a magazine always requires identical rounds to be loaded in it." +"for example load 9x19mm JHP and 9x19mm FMJ ammo into the same magazine, " +"since a magazine always requires identical rounds to be loaded in it." msgstr "" -"Zauważ, że mimo tego że dla danego kalibru i typu magazynku może być wiele " -"różnych rodzajów amunicji, nie możesz ich mieszać w ramach pojedynczego " -"magazynka. Przykładowo nie możesz załadować pełnopłaszczowej i grzybkującej " -"amunicji 9 x 19 mm typu do tego samego magazynka, gdyż magazynek wymaga " -"zawsze załadowania tego samego rodzaju amunicji." #: lang/json/help_from_json.py msgid "" @@ -83112,7 +83293,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Martial arts styles" -msgstr "" +msgstr ": Style Walki Wręcz" #: lang/json/help_from_json.py msgid "" @@ -83154,7 +83335,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Survival tips" -msgstr "" +msgstr ": Porady w Przetrwaniu" #: lang/json/help_from_json.py msgid "" @@ -83281,7 +83462,7 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Driving" -msgstr "" +msgstr ": Prowadzenie pojazdów" #: lang/json/help_from_json.py msgid "" @@ -83911,6 +84092,10 @@ msgstr "Żuj" msgid "Clear rubble" msgstr "Oczyść gruz" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "Wciągnik kokę" @@ -83939,6 +84124,11 @@ msgstr "Zdmuchnij" msgid "Make it talk" msgstr "Zmuś do gadania" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "Pal" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "Zdejmij" @@ -83980,6 +84170,10 @@ msgstr "Inhaluj" msgid "Drill" msgstr "Przewierć" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "Pytaj" + #: lang/json/item_action_from_json.py lang/json/item_action_from_json.py #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Read" @@ -84022,6 +84216,7 @@ msgid "Squeeze" msgstr "Zgnieć" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" msgstr "Graj" @@ -84059,6 +84254,11 @@ msgstr "Ogól się" msgid "Siphon" msgstr "Spuść" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "Pal" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "Napisz coś" @@ -84111,6 +84311,11 @@ msgstr "Składuj/rozładuj amunicję" msgid "Make some noise" msgstr "Narób hałasu" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "Graj" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "Aktywuj/dezaktywuj" @@ -85159,10 +85364,18 @@ msgstr "Zmień stronę, po której nosisz zbroję" msgid "Assign invlets to armor" msgstr "Przypisz 'invlety' do zbroi" +#: lang/json/keybinding_from_json.py +msgid "Sort armor into natural layer order" +msgstr "Sortuj ubiory w naturalną kolejność warstw" + #: lang/json/keybinding_from_json.py msgid "Equip armor from inventory" msgstr "Ekwipuj zbroję z ekwipunku" +#: lang/json/keybinding_from_json.py +msgid "Equip armor from inventory at this position" +msgstr "Ekwipuj zbroję z ekwipunku na tą pozycję" + #: lang/json/keybinding_from_json.py msgid "Unequip selected armor" msgstr "Zdejmij wybraną zbroję" @@ -86008,6 +86221,22 @@ msgstr "Zmniejsz priorytet" msgid "Change sort order" msgstr "Zmień kolejność sortowania" +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "ogień" + #: lang/json/keybinding_from_json.py msgid "List items and monsters" msgstr "Pokaż listę rzeczy i potworów" @@ -86190,13 +86419,11 @@ msgstr "Usuń wybrany kolor" msgid "Load color template" msgstr "Wczytaj szablon kolorów" -#: lang/json/keybinding_from_json.py src/craft_command.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/veh_interact.cpp msgid "Yes" msgstr "Tak" -#: lang/json/keybinding_from_json.py src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/options.cpp src/veh_interact.cpp msgid "No" msgstr "Nie" @@ -86346,6 +86573,11 @@ msgstr "Skonsolidowany Skomputeryzowany Bank Skarbowy" msgid "Open Vault" msgstr "Otwórz Skarbiec" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -87052,7 +87284,8 @@ msgid "Emergency Message" msgstr "Wiadomość Alarmowa" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py lang/json/mapgen_from_json.py +#: lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "Odetnij Zasilanie Zewnętrzne" @@ -87113,7 +87346,6 @@ msgstr "BŁĄD: SYGNAŁ ODŁĄCZONY" #. ~ Computer option #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py -#: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "Zainstaluj Mod Wzmacniaka" @@ -88526,7 +88758,8 @@ msgstr "Spróbuj w bibliotece." msgid "Got that book for me?" msgstr "Znalazłeś tą książkę?" -#: lang/json/mission_def_from_json.py src/npctalk.cpp src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Thanks!" msgstr "Dzięki!" @@ -89429,15 +89662,8 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." +"prophesied events accurately before concerning the Church of Starry Wisdom." msgstr "" -"Mam kolejne zadanie jak się czujesz na siłach. Ksiądz wspomina szczególnie o" -" pewnym więźniu. Zastanawiałem się czy mógłbyś sprawdzić co się z nim stało " -"lub czy zostawił cokolwiek w swojej celi. Duchowny pisze że był to raczej " -"niestabilny osobnik, lekko rzecz ujmując, ale ksiądz osobiście wierzył że " -"jest on jakimś pokutującym wizjonerem. Nie chciałbym z góry odrzucać tego " -"świadectwa... wygląda na to, że człowiek ten wcześniej przewidział dokładnie" -" wydarzenia w związku z Kościołem Gwiezdnej Wiedzy." #: lang/json/mission_def_from_json.py msgid "" @@ -89835,20 +90061,12 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels" " is boosted so we can pick it up at much longer ranges. I really need you " "make me one." msgstr "" -"Zadaniem mojego szefa jest monitorowanie komunikacji radiowej i odnalezienie" -" potencjalnych celów do zabezpieczenia lub ratowania. Większość wzmacniaków " -"transmisji radiowych padła, a te jeszcze na chodzie działają na rezerwach " -"mocy. Jeśli znasz podstawy elektroniki powinieneś móc wytworzyć 'mod " -"wzmacniaka', który jest w tych planach. Gdy ten mod przyłączy się do " -"głównego terminala stacji radiowej, wszystkie transmisje krótkiego zasięgu " -"będą wzmocnione i słyszalne z daleka. Naprawdę potrzebuję żebyś mi jeden " -"sklecił." #: lang/json/mission_def_from_json.py msgid "" @@ -91792,43 +92010,43 @@ msgstr "%1$s chce rozszarpać pazurami ale bezskutecznie!" #: lang/json/monster_attack_from_json.py #, no-python-format msgid "The %1$s flashes you!" -msgstr "" +msgstr "%1$s oślepia cię błyskiem!" #: lang/json/monster_attack_from_json.py #, no-python-format msgid "The %1$s flashes at !" -msgstr "" +msgstr "%1$s oślepia błyskiem !" #: lang/json/monster_attack_from_json.py #, no-python-format msgid "The %1$s tries to flash you, but fails to." -msgstr "" +msgstr "%1$s próbuje oślepić cię błyskiem, ale nieskutecznie." #: lang/json/monster_attack_from_json.py #, no-python-format msgid "The %1$s tries to flash , but fails to." -msgstr "" +msgstr "%1$s próbuje oślepić błyskiem , ale nieskutecznie." #: lang/json/monster_attack_from_json.py #, no-python-format msgid "The %1$s injects you with a syringe!" -msgstr "" +msgstr "%1$s wstrzykuje ci coś ze strzykawki!" #: lang/json/monster_attack_from_json.py #, no-python-format msgid "The %1$s injects with a syringe!" -msgstr "" +msgstr "%1$s wstrzykuje coś ze strzykawki!" #: lang/json/monster_attack_from_json.py #, no-python-format msgid "The %1$s tries to inject you, but fails to penetrate your armor!" -msgstr "" +msgstr "%1$s próbuje ci coś wstrzyknąć, ale nie przebija zbroi!" #: lang/json/monster_attack_from_json.py #, no-python-format msgid "" "The %1$s tries to inject , but fails to penetrate their armor!" -msgstr "" +msgstr "%1$s próbuje coś wstrzyknąć , ale nie przebija zbroi!" #: lang/json/morale_type_from_json.py #, no-python-format @@ -99395,7 +99613,7 @@ msgstr "rzeka" msgid "river bank" msgstr "brzeg rzeki" -#: lang/json/overmap_terrain_from_json.py +#: lang/json/overmap_terrain_from_json.py lang/json/snippet_from_json.py msgid "house" msgstr "dom" @@ -100470,6 +100688,14 @@ msgstr "park przyczep" msgid "mass grave" msgstr "masowy grób" +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "" + #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" msgstr "opuszczony bar dla zmotoryzowanych" @@ -106402,6 +106628,116 @@ msgstr "" "cię w robocie. Po tym jak cieszyłaś się pewnym okresem swobody robiąc to co " "chcesz, teraz będziesz potrzebować tych umiejętności by przetrwać." +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "WEAPON" @@ -107630,21 +107966,21 @@ msgstr "Wyzwanie - Laboratorium " #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" -"Byłeś zamknięty w laboratoryjnej celi aż jakiś potwór zbił szybę. " -"Laboratorium jest w stanie zamknięcia! Znajdź drogę ucieczki." +"Jesteś zamknięty w laboratorium bez (oczywistej) drogi ucieczki! Znajdź " +"drogę do wyjścia lub umrzyj z głodu." #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" -"Byłaś zamknięta w laboratoryjnej celi aż jakiś potwór zbił szybę. " -"Laboratorium jest w stanie zamknięcia! Znajdź drogę ucieczki." +"Jesteś zamknięty w laboratorium bez (oczywistej) drogi ucieczki! Znajdź " +"drogę do wyjścia lub umrzyj z głodu." #. ~ Starting location for scenario 'Challenge-Lab'. #: lang/json/scenario_from_json.py @@ -108466,6 +108802,42 @@ msgid "" "zombies." msgstr "" +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" @@ -108625,7 +108997,7 @@ msgstr "" "pozwalają użytkownikowi nawigować w skomplikowanych systemach operacyjnych a" " nawet obchodzić ich zabezpieczenia." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "gotowanie" @@ -108763,7 +109135,7 @@ msgstr "" " prędkość w głębokiej wodzie, i określa uszczerbek na pływaniu z ciężkim " "sprzętem." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "krawiectwo" @@ -109352,6 +109724,42 @@ msgid "" "spawn with more resources." msgstr "" +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best" +" friend." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "You feel great! It doesn't seem like wounds could even slow you down for " @@ -110308,6 +110716,566 @@ msgstr "" "komunikacji. Dr. Okrutny zaproponował strategiczną dyslokację do podziemnego" " kompleksu zwanego Schronem, i kontynuację produkcji PE062 tamże." +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "mendo" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -110534,7 +111502,7 @@ msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " "a man carrying a somewhat confused horse on his shoulders. He is flanked by" " two scantily clad nurses who hold bloody chainsaws and give approving " -"thumbs up. His bulging knees and elbows are stiched and seem to be the " +"thumbs up. His bulging knees and elbows are stitched and seem to be the " "source of his ability. The caption reads: \"Brand new! Horse power at " "hand!\"" msgstr "" @@ -110542,7 +111510,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " -"a man smiling while being relentlesly punched by a boxer. He doesn't even " +"a man smiling while being relentlessly punched by a boxer. He doesn't even " "sweat as punches have no effect on him. Two scantily clad nurses give " "approving thumbs up from the background. The caption reads: \"Bouncy as " "never before! Absorb those shocks!\"" @@ -114125,6 +115093,191 @@ msgstr "" "jeśli taki znajdziesz! Jednajże, słyszałem że nie będą działać jeśli nie " "weźmiesz ze sobą anestetyków, którymi cię uśpią." +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no" +" environment to save now, but one can still save thyself I guess." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their components." +" This guy around here, McSomething whatever his name is, is a master at " +"this." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are" +" always better than two." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my" +" sorry ass away from the horde, with nothing more but some white powder I " +"got from that zombie. Saved me that time." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it " +"lemon?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "" + #: lang/json/snippet_from_json.py msgid " " msgstr " " @@ -114229,10 +115382,6 @@ msgstr "pierdoło" msgid "piece of shit" msgstr "gnoju" -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "mendo" - #: lang/json/snippet_from_json.py msgid "scumbag" msgstr "śmieciu" @@ -114509,7 +115658,7 @@ msgstr "Cześć " msgid "never" msgstr "nigdy" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" msgstr "nie" @@ -115405,7 +116554,7 @@ msgstr "Okej ręce do góry!" msgid "Hands in the air, !" msgstr "Ręce nad głowę, !" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" msgstr "Ruchy" @@ -118536,10 +119685,26 @@ msgstr "Schron Ostatniego" msgid "Middle of Nowhere" msgstr "pośrodku niczego" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "laboratorium naukowe" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "laboratorium naukowe" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "zamarznięte laboratorium naukowe" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "Głęboko Zmrożone Laboratorium Naukowe" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "centrum handlowe - stacja zaopatrzenia" @@ -118636,6 +119801,14 @@ msgstr "rezydencja" msgid "Gas Station" msgstr "Stacja Paliw" +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" +msgstr "" + #: lang/json/talk_topic_from_json.py msgid "That sure is a shiny badge you got there!" msgstr "Nosisz zaprawdę błyszczącą odznakę!" @@ -118668,8 +119841,7 @@ msgstr "Co z twoimi uszami?" msgid "Anything I can help with?" msgstr "W czymś mogę pomóc?" -#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Well, bye." msgstr "Cóż, na razie." @@ -118900,7 +120072,8 @@ msgstr "Nie obchodzi mnie to." msgid "I see." msgstr "Rozumiem." -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Oh, okay." msgstr "Oh, okej." @@ -118977,6 +120150,259 @@ msgstr "Dziękuję" msgid "Thanks, bye." msgstr "Dziękuję, do zobaczenia." +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "Cóż, zgaduję że tylko my." + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "Przynajmniej mamy schronienie." + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "Co teraz zrobimy?" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "Jakieś wskazówki?" + +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "Co mogę dla ciebie zrobić?" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "Chcesz podróżować ze mną?" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's trade items." +msgstr "Pohandlujmy." + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "" + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "Nie wiem, poszukaj zapasów lub innych ocalonych, jak myślę." + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "Może powinniśmy zabić to miejsce dechami." + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to" +" disappear quickly from here." +msgstr "" +"Zgaduję, że jakiś wóz na chodzie byłby nie od rzeczy, gdyby trzeba było " +"szybko stąd wiać." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "" +"Powinniśmy rozejrzeć się za jakimś gospodarstwem rolniczym. Mogą być źródłem" +" masy jedzenia i są oddalone od miast." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "" +"Powinniśmy się raczej trzymać z dala od miast, choć jest w nich wiele " +"przydatnych rzeczy. " + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "Hmmm, okej." + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "Nie, dopóki nie dostanę antybiotyków..." + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "Niedawno mnie o to pytałeś. Poproś później." + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "Czemu mam z tobą podróżować?" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "Zrozumiałem. Przyniosę te antybiotyki." + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "Dobrze, dobrze, potem zapytam." + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "Mogę zapewnić ci bezpieczeństwo." + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "Możesz zapewnić mi bezpieczeństwo." + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "Jesteśmy przyjaciółmi, czyż nie?" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "W przeciwnym wypadku cię zabiję." + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "Rozumiem, jestem z tobą!" + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "Doskonale!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "Okej, ruszajmy!" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "Taaak... nie sądzę." + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "Naprawdę odchodzisz?" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "Tak, to pewne. Żegnaj." + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "Nah, to tylko żarty." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp +msgid "What is it?" +msgstr "O co chodzi?" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "Daleko jeszcze?" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "Chciałbym poprowadzić przez pewien czas." + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "Z drogi. Teraz ja dowodzę." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "Idziemy." + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "W porządku. Prowadzisz." + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "W prządku. Coś jeszcze..." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "W porządku, idziemy..." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "Okej, okej." + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "Nie ma bata, nie zostanę porzucony w tyle!" + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "W porządku." + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "Stoję na straży." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "Chcę żebyś poszedł ze mną." + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "Widzimy się." + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "Naprawdę nie czuję się z tym komfortowo..." + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "Dam ci trochę przestrzeni." + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "Wolę zachować to dla siebie." + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "Rozumiem..." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "Okej, proszę bardzo." + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "Dziękuję uprzejmie!" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "Dziękuję! Czy mogę jeszcze więcej?" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "Dziękuję, do zobaczenia!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "Okej, okej, przepraszam." + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "Serio, daj mi więcej rzeczy!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "Okej, niech będzie, żegnaj!" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "W porządku, zaczynamy." + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "Brzmi dobrze." + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "Okej, prowadź." + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "Nie, tu nam dobrze." + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "Po zastanowieniu się, jednak nieważne." + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "Witaj marszalu." @@ -119771,11 +121197,11 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Thanks, let's go back to talking about camps." -msgstr "" +msgstr "Dzięki, wróćmy do rozmowy o obozach." #: lang/json/talk_topic_from_json.py msgid "Forget it. Let's go." -msgstr "" +msgstr "Zapomnij o tym. Ruszajmy." #: lang/json/talk_topic_from_json.py msgid "Hey Boss..." @@ -119789,10 +121215,6 @@ msgstr "Co trzeba zrobić?" msgid "We're abandoning this camp." msgstr "Porzucamy ten obóz." -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "Widzimy się." - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "Liczę że jesteś tu by handlować." @@ -119835,7 +121257,7 @@ msgstr "" msgid "Are you looking to buy anything else?" msgstr "Czy chcesz kupić coś jeszcze?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." msgstr "Bardzo dobrze..." @@ -119972,19 +121394,12 @@ msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of" " operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " "forces to conduct recovery operations." msgstr "" -"Dowodzę tym co zostało z mojej kompanii, na misji odbicia tej placówki. " -"Weszliśmy do kompleksu w dwunastu i natychmiast ruszyliśmy zabezpieczyć ten " -"tu pokój sterowania. Stąd oddelegowałem ludzi do zabezpieczenia kluczowych " -"systemów na tym poziomie i poziomach poniżej. Sukces w oczyszczeniu tego " -"miejsca pozwoli na założenie tu stałej placówki działań w regionie. Co ważne" -" pozwoli przekierować ruch uchodźców z przepełnionych ośrodków i uwolni " -"nasze siły do kolejnych misji odzyskiwania." #: lang/json/talk_topic_from_json.py msgid "Seems like a decent plan..." @@ -120040,7 +121455,7 @@ msgstr "Potrzebujesz pomocy?" #: lang/json/talk_topic_from_json.py msgid "I should be going" -msgstr "" +msgstr "Powinienem iść" #: lang/json/talk_topic_from_json.py msgid "" @@ -120241,7 +121656,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "I heard you were setting up an outpost out here." -msgstr "" +msgstr "Słyszałem, że budujecie tu placówkę." #: lang/json/talk_topic_from_json.py msgid "What's your job here?" @@ -120364,7 +121779,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Oh." -msgstr "" +msgstr "Oh." #: lang/json/talk_topic_from_json.py msgid "Come back later, I need to take care of a few things first." @@ -120382,11 +121797,11 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "[$2000, 1d] 10 logs" -msgstr "" +msgstr "[$2000, 1d] 10 kłód" #: lang/json/talk_topic_from_json.py msgid "[$12000, 7d] 100 logs" -msgstr "" +msgstr "[$12000, 7d] 100 kłód" #: lang/json/talk_topic_from_json.py src/npctalk.cpp msgid "Maybe later." @@ -120394,7 +121809,7 @@ msgstr "Może później." #: lang/json/talk_topic_from_json.py msgid "I'll be back later." -msgstr "" +msgstr "Wrócę później." #: lang/json/talk_topic_from_json.py msgid "Don't have much time to talk." @@ -120510,7 +121925,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "That's sad." -msgstr "" +msgstr "To smutne." #: lang/json/talk_topic_from_json.py msgid "" @@ -120521,7 +121936,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "OK." -msgstr "" +msgstr "OK." #: lang/json/talk_topic_from_json.py msgid "" @@ -120533,7 +121948,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Uhm." -msgstr "" +msgstr "Uhm." #: lang/json/talk_topic_from_json.py msgid "How can I help you?" @@ -120541,7 +121956,7 @@ msgstr "Jak mogę ci pomóc?" #: lang/json/talk_topic_from_json.py msgid "I could use your medical assistance." -msgstr "" +msgstr "Potrzebuję twojej pomocy medycznej." #: lang/json/talk_topic_from_json.py msgid "" @@ -120565,7 +121980,7 @@ msgstr "Jakie rodzaje prac macie tu dla mnie?" #: lang/json/talk_topic_from_json.py msgid "Not now." -msgstr "" +msgstr "Nie teraz." #: lang/json/talk_topic_from_json.py msgid "I can take a look at you or your companions if you are injured." @@ -120573,19 +121988,19 @@ msgstr "Mogę zerknąć na ciebie lub twoich towarzyszy jeżeli jesteście ranni #: lang/json/talk_topic_from_json.py msgid "[$200, 30m] I need you to patch me up." -msgstr "" +msgstr "[$200, 30m] Musisz mnie połatać." #: lang/json/talk_topic_from_json.py msgid "[$500, 1h] I need you to patch me up." -msgstr "" +msgstr "[$200, 30m] Musisz mnie połatać." #: lang/json/talk_topic_from_json.py msgid "I should be fine." -msgstr "" +msgstr "Nic mi nie będzie." #: lang/json/talk_topic_from_json.py msgid "That's the best I can do on short notice." -msgstr "" +msgstr "To najlepsze co mogę zrobić od ręki." #: lang/json/talk_topic_from_json.py msgid "I'm sorry, I don't have time to see you at the moment." @@ -120597,7 +122012,7 @@ msgstr "Za odpowiednią cenę, czy mogę skorzytsać z twoich usług?" #: lang/json/talk_topic_from_json.py msgid "I imagine we might be able to work something out." -msgstr "" +msgstr "Wyobrażam sobie że możemy coś wypracować." #: lang/json/talk_topic_from_json.py msgid "I was wondering if you could install a cybernetic implant..." @@ -120618,6 +122033,9 @@ msgid "" "surround the outpost. It provides a measure of defense in the event that we" " get attacked." msgstr "" +"Tnę bezużyteczne pojazdy na części i materiały. Jak nie możemy użyć pojazdu " +"od razu to zaciągamy do do kręgu, który budujemy wokół placówki by ją " +"otoczyć. To zapewnia pewną ochronę na wypadek potencjalnego ataku." #: lang/json/talk_topic_from_json.py msgid "" @@ -120631,11 +122049,11 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Welcome to the junk shop." -msgstr "" +msgstr "Witaj w sklepie ze złomem." #: lang/json/talk_topic_from_json.py msgid "Let's see what you've managed to find." -msgstr "" +msgstr "Zobaczmy co zdołałeś znaleźć." #: lang/json/talk_topic_from_json.py msgid "" @@ -120654,7 +122072,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "I'll think about it." -msgstr "" +msgstr "Pomyślę o tym." #: lang/json/talk_topic_from_json.py msgid "" @@ -120666,7 +122084,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Tell me more about the scavenging runs." -msgstr "" +msgstr "Powiedz coś więcej o wyprawach zbierackich." #: lang/json/talk_topic_from_json.py msgid "What kind of tasks do you have for me?" @@ -120674,7 +122092,7 @@ msgstr "Jakie zadania masz dla mnie?" #: lang/json/talk_topic_from_json.py msgid "No, thanks." -msgstr "" +msgstr "Nie, dzięki." #: lang/json/talk_topic_from_json.py msgid "Want a drink?" @@ -120682,11 +122100,11 @@ msgstr "Chcesz drinka?" #: lang/json/talk_topic_from_json.py msgid "I'm looking for information." -msgstr "" +msgstr "Szukam informacji." #: lang/json/talk_topic_from_json.py msgid "Let me see what you keep behind the counter." -msgstr "" +msgstr "Zobaczmy co tam masz za ladą." #: lang/json/talk_topic_from_json.py msgid "What do you have on tap?" @@ -120718,7 +122136,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Thanks for nothing." -msgstr "" +msgstr "Dzięki za nic." #: lang/json/talk_topic_from_json.py msgid "Our selection is a bit limited at the moment." @@ -120726,7 +122144,7 @@ msgstr "Nasz wybór jest chwilowo ograniczony." #: lang/json/talk_topic_from_json.py msgid "[$8] I'll take a beer" -msgstr "" +msgstr "[$8] Wezmę piwo." #: lang/json/talk_topic_from_json.py msgid "[$10] I'll take a shot of brandy" @@ -120742,7 +122160,7 @@ msgstr "[$12] Wezmę łyk whiskey" #: lang/json/talk_topic_from_json.py msgid "On second thought, don't bother." -msgstr "" +msgstr "Jednak nie, nieważne." #: lang/json/talk_topic_from_json.py msgid "Can I interest you in a trim?" @@ -120772,10 +122190,6 @@ msgstr "" msgid "I can't imagine what I'd need your assistance with." msgstr "Nie mam pojęcia w czym mógłbyś mi potencjalnie pomóc." -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "" - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "Nie ruszaj się, już się biorę za maszynkę do strzyżenia..." @@ -120847,10 +122261,6 @@ msgstr "Cieszę się że mam cię na pokładzie." msgid "Can I trade for supplies?" msgstr "Czy mogę pohandlować i kupić zapasy?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "Co mogę dla ciebie zrobić?" - #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " @@ -120874,7 +122284,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "What kind of news?" -msgstr "" +msgstr "Jaki rodzaj wieści?" #: lang/json/talk_topic_from_json.py msgid "" @@ -120885,7 +122295,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Good luck with that..." -msgstr "" +msgstr "Powodzenia z tym..." #: lang/json/talk_topic_from_json.py msgid "" @@ -121130,7 +122540,7 @@ msgstr "Pakuj torby, . Idziemy na wycieczkę." msgid "Not at technique at all" msgstr "Ani trochę na technice" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp src/martialarts.cpp msgid "Block" msgstr "Blok" @@ -121288,8 +122698,6 @@ msgid "Rapid Strike" msgstr "Szybkie Uderzenie" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "50% ruchów, 66% obrażeń" @@ -121401,11 +122809,6 @@ msgstr " rozbraja %s używając bicza" msgid "Counterattack" msgstr "Kontratak" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "Kontratak przy bloku, kontratak przy uniku" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -121420,22 +122823,10 @@ msgstr " kontratakuje %s" msgid "Feint" msgstr "Zmyłka" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "Darmowy powrót po spudłowaniu" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "Przełamanie Chwytu" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "Przełamanie chwytu" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -121450,11 +122841,6 @@ msgstr " dźgasz zwinnie w %s" msgid "Cross" msgstr "Krzyż" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "x1.2 obrażenia miażdżone, min 2 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -121469,12 +122855,6 @@ msgstr " rzucasz ciężki krzyż w %s" msgid "Jab" msgstr "Dźgnięcie" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "50% ruchów, 66% obrażeń, min 3 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -121489,11 +122869,6 @@ msgstr " szybko dźga %s" msgid "Uppercut" msgstr "Hak" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "Ogłuszenie 2 tury, x1.4 obrażenia miażdżone, min 4 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -121508,11 +122883,6 @@ msgstr " strzelasz podbródkowego haka w %s" msgid "Cross Counter" msgstr "Krzyżowa Kontra" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "Ogłuszenie 2 tury, odrzut 1 pole, tylko krytyk, min 5 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -121541,14 +122911,6 @@ msgstr " zadajesz szybki cios pięścią %s" msgid "karate chop" msgstr "sieknięcie karate" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "Ogłuszenie 2 tury, tylko krytyk, min 4 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -121563,11 +122925,6 @@ msgstr " sieka %s w stylu karate" msgid "throw" msgstr "rzuć" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "Powalenie 1 tura, odrzut 1 pole, min 2 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -121582,11 +122939,6 @@ msgstr " rzuca %s" msgid "dodge throw" msgstr "rzut w uniku" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "Powalenie 1 tura, odrzut 1 pole, kontratak po uniku, min 6 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -121601,12 +122953,6 @@ msgstr " gładko rzuca %s" msgid "feint at" msgstr "zmyłka w " -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "Darmowy powrót po spudłowaniu, min 2 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -121617,11 +122963,6 @@ msgstr "Markujesz zmyłkę w kierunku %s" msgid " feints at %s" msgstr " markujesz zmyłkę w kierunku %s" -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "Rozbraja cel z broni, min 3 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -121632,21 +122973,11 @@ msgstr "Rozbrajasz%s" msgid " disarms %s" msgstr " rozbraja %s" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "Powalenie 1 tura, odrzut 1 pole, min 3 bez broni" - #: lang/json/technique_from_json.py lang/json/technique_from_json.py #: src/monster.cpp msgid "grab" msgstr "chwyt" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "Powalenie 2 tury, min 2 bez broni" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "precyzyjne uderzenie" @@ -121661,20 +122992,10 @@ msgstr "Uderzasz %s" msgid " strikes %s" msgstr " uderza %s" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "Darmowy powrót po spudłowaniu, min 1 bez broni" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "cios łokciem" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "50% ruchów, tylko krytyk, min 2 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -121689,11 +123010,6 @@ msgstr " uderza łokciem %s" msgid "kick" msgstr "kopnięcie" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "Ogłuszenie 1 tura, min 3 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -121718,19 +123034,6 @@ msgstr "Zadajesz cios latającego kolana w %s" msgid " flying knees %s" msgstr " zadaje cios latającego kolana w %s" -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "50% ruchów, 66% obrażeń, min 2 bez broni" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "Ogłuszenie 2 tury, tylko krytyk, min 3 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -121741,34 +123044,14 @@ msgstr "Dźgasz %s" msgid " jabs %s" msgstr " dźga %s" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "Powalenie 1 tura, min 4 bez broni" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "przełamanie chwytu" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "Przełamanie chwytu, min 4 bez broni" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "atak z zaskoczenia" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min" -" 3 melee" -msgstr "" -"Ogłuszenie 2 tury, x1.4 obrażenia miażdżone, x2 obrażenia cięte, tylko " -"krytyk, min 3 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -121783,11 +123066,6 @@ msgstr " atakuje z zaskoczenia %s" msgid "axe-kick" msgstr "kopnięcie siekiera" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "Ogłuszenie 2 tury, tylko krytyk, min 2 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -121802,11 +123080,6 @@ msgstr " wyprowadza kopnięcie-siekierę w %s" msgid "side kick" msgstr "boczne kopnięcie" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "Ogłuszenie 1 tura, odrzut 1 pole, min 3 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -121821,11 +123094,6 @@ msgstr " wyprowadza boczne kopnięcie w %s" msgid "sweep kick" msgstr "omiatające kopnięcie" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "Powalenie 2 tury, min 4 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -121840,11 +123108,6 @@ msgstr " wyprowadza omiatające kopnięcie w %s" msgid "biojutsu counter" msgstr "kontra biojutsu" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "Kontratak przy bloku, min 4 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -121873,13 +123136,6 @@ msgstr " szybko sieka %s" msgid "biojutsu impale" msgstr "nadzianie biojutsu" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "" -"Ogłuszenie 1 tura, x1.5 obrażenia miażdżone, x1.5 obrażenia cięte, tylko " -"krytyk, min 3 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -121890,20 +123146,10 @@ msgstr "Brutalnie nadziewasz %s" msgid " brutally impales %s" msgstr " brutalnie nadziewa %s" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "Powalenie 2 tury, min 2 wręcz" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "szerokie uderzenie" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "Atak w szerokim łuku, tylko krytyk, min 5 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -121918,13 +123164,6 @@ msgstr " rąbie przez %s" msgid "Drunk feint" msgstr "Pijana zmyłka" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "Darmowy powrót po spudłowaniu, min 3 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -121939,11 +123178,6 @@ msgstr " potykasz się i łypie okiem na%s" msgid "Drunk counter" msgstr "Pijana kontra" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "x1.25 obrażenia miażdżone, kontratak po uniku, min 4 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -121958,12 +123192,6 @@ msgstr " chwieje się, i trafia %s" msgid "Fencing lunge" msgstr "szermierczy wypad" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "75% ruchów, min 2 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -121978,11 +123206,6 @@ msgstr " robi wypad na %s" msgid "Fencing thrust" msgstr "szermiercze pchnięcie" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "90% ruchów, x1.25 obrażenia kłute, min 1 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -121997,11 +123220,6 @@ msgstr " zadaje pchnięcie %s" msgid "Fencing stop thrust" msgstr "szermiercze stopujące pchnięcie" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "x1.5 obrażenia kłute, kontratak po bloku, min 3 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -122016,11 +123234,6 @@ msgstr " wyprowadza perfekcyjne stopujące pchnięcie w %s" msgid "Round strike" msgstr "Dookolne uderzenie" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "60% ruchów, min 4 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -122049,11 +123262,6 @@ msgstr " zadaje wachlarzowy cios %s" msgid "Snap strike" msgstr "Nagłe uderzenie" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "80% ruchów" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -122068,11 +123276,6 @@ msgstr "zadaje nagły cios %s" msgid "Combination strike" msgstr "Kombinacyjne uderzenie" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "80% ruchów, 150% obrażeń, min 2 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -122087,11 +123290,6 @@ msgstr " zadaje kombinacyjny cios %s" msgid "free strike" msgstr "swobodne uderzenie" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "Darmowe uderzenie, min 4 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -122106,15 +123304,6 @@ msgstr " uderza swobodnym uderzeniem %s" msgid "puño strike" msgstr "uderzenie puño" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "" -"Konwertuje całe obrażenia w x4 obrażenia miażdżone, ogłuszenie 1 tura, min 3" -" wręcz, min 2 pkt obrażeń zadane" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -122129,11 +123318,6 @@ msgstr " uderza rękojeścią %s" msgid "knee strike" msgstr "uderzenie kolanem" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "Powalenie 2 tury, tylko krytyk, min 2 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -122148,11 +123332,6 @@ msgstr " uderza kolanem %s" msgid "hamstring" msgstr "podcięcie ścięgna" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "Powalenie 3 tury, tylko krytyk min 2 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -122167,12 +123346,6 @@ msgstr " uziemia %s niskim uderzeniem" msgid "Vicious Precision" msgstr "Bezwzględna Precyzja" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "150% obrażeń, tylko krytyk, min 4 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -122187,11 +123360,6 @@ msgstr " bezwzględnie rani %s!" msgid "Silat Brutality" msgstr "Brutalność Silat" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "Ogłuszenie 1 tura, odrzut 1 pole, tylko krytyk, min 3 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -122201,11 +123369,6 @@ msgstr "Wysyłasz ciosem %s w powietrze w tył" msgid "Dirty Hit" msgstr "Brudny Cios" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "Ogłuszenie 2 tury, tylko krytyk, min 1 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -122248,11 +123411,6 @@ msgstr " szybko sieka %s" msgid "Viper Bite" msgstr "Ukąszenie Żmii" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "Ogłuszenie 2 tury, x1.5 obrażenia miażdżone, czas trwania 2 tury" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -122267,11 +123425,6 @@ msgstr " kąsa jak wąż %s" msgid "Viper Strike" msgstr "Uderzenie Żmii" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "x3 obrażenia miażdżone, czas trwania 2 tury" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -122290,12 +123443,6 @@ msgstr "Skręcenie Żmii" msgid "Stinger Strike" msgstr "Uderzenie Żądłem" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "" -"Ogłuszenie 3 tury, odrzut 3 pola, x2 obrażenia miażdżone, tylko krytyk" - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -122310,11 +123457,6 @@ msgstr "Żądlące Kopnięcie wysyła %s w powietrze" msgid "Pincer Strike" msgstr "Uderzenie Szczypcem" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "x1.25 obrażenia miażdżone, ogłuszenie 2 tury, min 4 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -122329,11 +123471,6 @@ msgstr " dźga %s Pięścią-Szczypcem" msgid "Toad's Tongue" msgstr "Język Ropuchy" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "50% ruchów, powalenie 1 tura, min 4 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -122412,11 +123549,6 @@ msgstr " uderza w kierunku %s" msgid "Tiger Takedown" msgstr "Rzut Tygrysa" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "Powalenie 1 tura, min 4 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -122431,11 +123563,6 @@ msgstr " chwyta i uziemia %s" msgid "Leopard Fist" msgstr "Pieść Lamparta" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "Ogłuszenie 2 tury, tylko krytyk, min 5 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -122464,11 +123591,6 @@ msgstr " szybko zamachuje się na %s" msgid "Leopard Foresight" msgstr "Przeczucie Lamparta" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "x1.5 obrażenia miażdżone, kontratak po uniku, min 4 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -122483,11 +123605,6 @@ msgstr " robi unik i atakuje odsłoniętą stronę %s" msgid "Dragon Snatch" msgstr "Uchwyt Smoka" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "Ogłuszenie 2 tury, x1.2 obrażenia miażdżone, min 4 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -122502,13 +123619,6 @@ msgstr " chwyta i uderza z kolana %s" msgid "Dragon's Vortex" msgstr "Smoczy Wir" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "" -"Ogłuszenie 2 tury, kontratak po uniku, kontratak po bloku, min 4 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -122523,12 +123633,6 @@ msgstr " chwyta i obraca %s" msgid "Dragon Sweeper" msgstr "Smoczy Przelot" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "Powalenie 2 tury, min 5 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -122543,11 +123647,6 @@ msgstr " podcina nogi %s niskim obrotowcem" msgid "Dragon Strike" msgstr "Uderzenie Smoka" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "Ogłuszenie 2 tury, odrzut 1 pole, tylko krytyk, min 6 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -122574,11 +123673,6 @@ msgstr " wykonuje Skrzydło Żurawia" msgid "Crane Flap" msgstr "Machnięcie Żurawia" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "Przełamanie chwytu, min 3 bez broni" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "Machasz ramionami i uwalniasz się" @@ -122591,11 +123685,6 @@ msgstr " uwalnia się wymachiwaniem" msgid "Crane Strike" msgstr "Uderzenie Żurawia" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "Ogłuszenie 3 tury, tylko krytyk, min 4 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -122615,20 +123704,10 @@ msgstr "Uderzasz fałszywie %s" msgid "Power Hit" msgstr "Trafienie Mocy" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "Ogłuszenie 1 tura, odrzut 1 pole, tylko krytyk, min 4 bez broni" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "Oddaj Im Cios" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "Kontratak przy bloku, min 5 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -122657,11 +123736,6 @@ msgstr " podcina %s" msgid "Flowing Water Cut" msgstr "Cięcie Płynącej Wody" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "175% ruchów, x2 obrażenia miażdżone, x2 obrażenia cięte, min 4 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -122676,11 +123750,6 @@ msgstr " uderza %s wolną siłą płynącej wody" msgid "Red Leaf's Cut" msgstr "Cięcie Czerwonego Liścia" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "Powalenie 2 tury, min 5 bez broni" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -122695,14 +123764,6 @@ msgstr "Uderzenie wybija %s z równowagi" msgid "Fire and Stone's Cut" msgstr "Cięcie Ognia i Kamienia" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "" -"Ogłuszenie 2 tury, x1.5 obrażenia miażdżone, x1.5 obrażenia cięte, tylko " -"krytyk, min 6 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -122717,14 +123778,6 @@ msgstr " ogłusza %s siłą uderzenia" msgid "In-One Timing" msgstr "Właściwy Moment" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "" -"50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "" -"50% ruchów, x1.5 obrażenia miażdżone, x1.5 obrażenia cięte, ogłuszenie 2 " -"tury, min 5 wręcz" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -122735,11 +123788,6 @@ msgstr "Uderzasz w słabe miejsce %s" msgid " strikes %s's weaknesses" msgstr " %s w słabe miejsce" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "80% ruchów, darmowy powrót po spudłowaniu, min 2 wręcz" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "wolne uderzenie" @@ -126260,7 +127308,7 @@ msgstr "precyzyjnie młotkujący" msgid "wood sawing" msgstr "tnący drewno" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "tnący metal" @@ -126304,7 +127352,7 @@ msgstr "kopiacy" msgid "bolt turning" msgstr "zakręcający nakrętki" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "precyzyjnie zakręcający nakrętki" @@ -127155,6 +128203,14 @@ msgstr "Rozdzielenie Sekcji" msgid "Circle Split" msgstr "Rozdzielenie Okrężne" +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "" + #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" msgstr "Laweta" @@ -130645,6 +131701,10 @@ msgstr "Kończysz rozkopywanie." msgid "You discover a %s!" msgstr "Odkrywasz %s!" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "" + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "Nie ufasz jakości swoich narzędzi, ale i tak kontynuujesz." @@ -130722,6 +131782,10 @@ msgstr "To już jest poćwiartowane." msgid "You need to perform field dressing before quartering." msgstr "Musisz najpierw wypatroszyć ciało przed ćwiartowaniem." +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "" + #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." msgstr "Zaciskasz zęby w perspektywie tej makabrycznej roboty." @@ -130892,27 +131956,21 @@ msgstr "Kończysz cięcie %s." #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." msgstr "" -"Niewprawnie tniesz ciało i odcinasz niepotrzebne części. Zastanawiasz się " -"czemu tak źle ci poszło." #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." msgstr "" -"Twoje niewprawne dłonie poślizgują się i uszkadzają ciało. Masz nadzieję że " -"nie jest to totalna porażka." #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." msgstr "" -"Zrobiłeś coś niepoprawnie i źle pociachałeś ciało. Może da się je jeszcze " -"wykorzystać." #: src/activity_handlers.cpp #, c-format @@ -131087,9 +132145,8 @@ msgid "You have lost the item you were using to start the fire." msgstr "Straciłeś przedmiot którego używałeś do rozpalania ognia." #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." +msgid "There is not enough sunlight to start a fire now. You stop trying." msgstr "" -"Nie ma tyle światła słonecznego by rozpalić teraz ogień. Zaprzestajesz prób." #: src/activity_handlers.cpp #, c-format @@ -131957,7 +133014,7 @@ msgstr "ładunki" msgid "category" msgstr "kategoria" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp src/effect.cpp msgid "damage" msgstr "obrażenia" @@ -132182,6 +133239,65 @@ msgstr "Wszystkie" msgid "Hang on a bit..." msgstr "Zaczekaj chwilę..." +#: src/armor_layers.cpp +msgid "close to your skin" +msgstr "" + +#: src/armor_layers.cpp +msgid "of normal clothing" +msgstr "" + +#: src/armor_layers.cpp +msgid "on your waist" +msgstr "" + +#: src/armor_layers.cpp +msgid "of outer clothing" +msgstr "" + +#: src/armor_layers.cpp +msgid "strapped to you" +msgstr "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgid_plural "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgid_plural "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgid_plural "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + #: src/armor_layers.cpp msgid "This is worn next to the skin." msgstr "To jest noszone na skórze." @@ -132352,16 +133468,18 @@ msgstr "Zmień literę dla ubioru?" #, c-format msgid "" "Use the arrow- or keypad keys to navigate the left list.\n" -"Press [%s] to select highlighted armor for reordering.\n" -"Use [%s] / [%s] to scroll the right list.\n" -"Press [%s] to assign special inventory letters to clothing.\n" -"Press [%s] to change the side on which item is worn.\n" -"Use [%s] to equip an armor item from the inventory.\n" -"Press [%s] to remove selected armor from oneself.\n" +"[%s] to select highlighted armor for reordering.\n" +"[%s] / [%s] to scroll the right list.\n" +"[%s] to assign special inventory letters to clothing.\n" +"[%s] to change the side on which item is worn.\n" +"[%s] to sort armor into natural layer order.\n" +"[%s] to equip a new item.\n" +"[%s] to equip a new item at the currently selected position.\n" +"[%s] to remove selected armor from oneself.\n" " \n" "[Encumbrance and Warmth] explanation:\n" "The first number is the summed encumbrance from all clothing on that bodypart.\n" -"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers.\n" +"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers or wearing items outside of other items they would normally be work beneath (e.g. a shirt over a backpack).\n" "The sum of these values is the effective encumbrance value your character has for that bodypart." msgstr "" @@ -133459,6 +134577,14 @@ msgstr "" msgid "Your plugged-in solar pack is now able to charge your system." msgstr "Twój podłączony plecak solarny zdoła teraz zasilić twój system." +#: src/bionics.cpp +msgid "" +"You need to connect the cable to yourself and the solar pack before your " +"solar pack can charge your system." +msgstr "" +"Musisz podłączyć kabel do siebie i plecaka solarnego aby plecak zdołał " +"zasilać twój system." + #: src/bionics.cpp msgid "" "You might plug in your solar pack to the cable charging system, if you " @@ -133503,7 +134629,7 @@ msgstr "Twój %s utracił łączność i wyłącza się." #: src/bionics.cpp msgid "You feel your throat open up and air filling your lungs!" -msgstr "" +msgstr "Czujesz jak twoje gardło otwiera się a powietrze wypełnia ci płuca!" #: src/bionics.cpp msgid "You flub the removal." @@ -133511,7 +134637,7 @@ msgstr "Usunięcie okazało się wtopą." #: src/bionics.cpp msgid " flubs the removal." -msgstr "" +msgstr "Próba usunięcia przez okazała się wtopą." #: src/bionics.cpp msgid "You mess up the removal." @@ -133519,7 +134645,7 @@ msgstr "Schrzaniłeś usunięcie." #: src/bionics.cpp msgid " messes up the removal." -msgstr "" +msgstr " schrzanił usunięcie." #: src/bionics.cpp msgid "The removal fails." @@ -133535,35 +134661,37 @@ msgstr "Narobiłeś bałaganu z usunięciem." #: src/bionics.cpp msgid " screws up the removal." -msgstr "" +msgstr " spartolił usunięcie." #: src/bionics.cpp #, c-format msgid "%s body is severely damaged!" -msgstr "" +msgstr "Ciało %s jest poważnie uszkodzone!" #: src/bionics.cpp msgid "You prep to begin surgery." -msgstr "" +msgstr "Przygotowujesz rozpoczęcie operacji chirurgicznej." #: src/bionics.cpp msgid " prepares for surgery." -msgstr "" +msgstr " przygotowuje operację chirurgiczną." #: src/bionics.cpp #, c-format msgid "A lifetime of augmentation has taught %s a thing or two..." -msgstr "" +msgstr "Kariera życiowa w augmentacji nauczyła %s kilku przydatnych rzeczy..." #: src/bionics.cpp #, c-format msgid "%s don't have this bionic installed." -msgstr "" +msgstr "%s nie ma zainstalowanej tej bioniki." #: src/bionics.cpp #, c-format msgid "Removing %s Fusion Blaster Arm would leave %s with a useless stump." msgstr "" +"Usunięcie Blastera Fuzyjnego wbudowanego w ramię %s pozostawiłoby %s z " +"bezużytecznym kikutem." #: src/bionics.cpp msgid "" @@ -133575,7 +134703,7 @@ msgstr "" #: src/bionics.cpp #, c-format msgid "%s must remove the %s bionic to remove the %s." -msgstr "" +msgstr "%s musi usunąć %s bionikę żeby usunąć %s." #: src/bionics.cpp #, c-format @@ -133588,7 +134716,7 @@ msgstr "" #: src/bionics.cpp msgid "Are you sure you wish to uninstall the selected bionic?" -msgstr "" +msgstr "Jesteś pewien, że chcesz odinstalować wybraną bionikę?" #: src/bionics.cpp #, c-format @@ -133596,6 +134724,8 @@ msgid "" "WARNING: %i percent chance of SEVERE damage to all body parts! Continue " "anyway?" msgstr "" +"UWAGA: %i procent szans na POWAŻNE uszkodzenie wszystkich części ciała! " +"Kontynuować mimo tego?" #: src/bionics.cpp #, c-format @@ -133611,11 +134741,11 @@ msgstr "Usunęłaś bionikę: %s." #: src/bionics.cpp msgid "Your parts are jiggled back into their familiar places." -msgstr "" +msgstr "Twoje części zostają wepchnięte na swoje zwyczajowe miejsca." #: src/bionics.cpp msgid "'s parts are jiggled back into their familiar places." -msgstr "" +msgstr "Części zostają wepchnięte na swoje zwyczajowe miejsca." #: src/bionics.cpp #, c-format @@ -133651,7 +134781,7 @@ msgstr "Brak miejsca do instalacji bioniki!%s" #: src/bionics.cpp msgid "Are you sure you wish to install the selected bionic?" -msgstr "" +msgstr "Jesteś pewien, że chcesz zainstalować wybraną bionikę?" #: src/bionics.cpp #, c-format @@ -133659,6 +134789,8 @@ msgid "" "WARNING: %i percent chance of failure that may result in damage, pain, or a " "faulty installation! Continue anyway?" msgstr "" +"UWAGA: %i procent szans na porażkę, która może skutkować obrażeniami, bólem," +" lub nieprawidłową instalacją! Kontynuować mimo tego?" #: src/bionics.cpp #, c-format @@ -133689,13 +134821,13 @@ msgstr "%s.Z powodzeniem instalujesz " #, c-format msgctxt "memorial_male" msgid "Failed install of bionic: %s." -msgstr "" +msgstr "Nieudana próba instalacji bioniki: %s." #: src/bionics.cpp #, c-format msgctxt "memorial_female" msgid "Failed install of bionic: %s." -msgstr "" +msgstr "Nieudana próba instalacji bioniki: %s." #: src/bionics.cpp msgid "The installation fails without incident." @@ -133707,7 +134839,7 @@ msgstr "Instalacja okazała się wielką wtopą." #: src/bionics.cpp msgid " flubs the installation." -msgstr "" +msgstr "Instalacja przez okazała się wtopą." #: src/bionics.cpp msgid "You mess up the installation." @@ -133715,7 +134847,7 @@ msgstr "Schrzaniłeś instalację." #: src/bionics.cpp msgid " messes up the installation." -msgstr "" +msgstr " schrzanił instalację." #: src/bionics.cpp msgid "The installation fails." @@ -133731,14 +134863,14 @@ msgstr "Narobiłeś bałaganu z instalacją." #: src/bionics.cpp msgid " screws up the installation." -msgstr "" +msgstr " spartolił instalację." #. ~"Complications" is USian medical-speak for "unintended damage from a #. medical procedure". #: src/bionics.cpp #, c-format msgid "%s training helps %s minimize the complications." -msgstr "" +msgstr "Wyszkolenie %s pozwala %s zminimalizować komplikacje." #: src/bionics.cpp msgid "It really hurts!" @@ -133747,7 +134879,7 @@ msgstr "Naprawdę boli!" #: src/bionics.cpp #, c-format msgid "%s body is damaged!" -msgstr "" +msgstr "Ciało %s jest uszkodzone!" #: src/bionics.cpp msgid "The installation is faulty!" @@ -133756,7 +134888,7 @@ msgstr "Instalacja okazuje się wadliwa!" #: src/bionics.cpp #, c-format msgid "%s lose power capacity!" -msgstr "" +msgstr "%s traci pojemność energii!" #: src/bionics.cpp #, c-format @@ -133803,34 +134935,43 @@ msgid "" "You set up the operation step-by-step, configuring the Autodoc to manipulate" " a CBM" msgstr "" +"Ustawiasz operację krok po kroku, konfigurując Autodok'a do manipulowania " +"CBM." #: src/bionics.cpp msgid "" " sets up the operation, configuring the Autodoc to manipulate a " "CBM." msgstr "" +" ustawia operację krok po kroku, konfigurując Autodok'a do " +"manipulowania CBM." #: src/bionics.cpp msgid "" "You settle into position, sliding your right wrist into the couch's strap." msgstr "" +"Układasz się we właściwej pozycji wsuwając nadgarstek w paski w kozetce." #: src/bionics.cpp msgid "" " settles into position, sliding their wrist into the couch's strap." msgstr "" +" układa się we właściwej pozycji wsuwając nadgarstek w paski w " +"kozetce." #: src/bionics.cpp msgid "" "You feel a tiny pricking sensation in your right arm, and lose all sensation" " before abruptly blacking out." msgstr "" +"Czujesz niewielkie ukłucie w prawym ramieniu, i tracisz czucie tuż przed " +"nagłą utratą przytomności." #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out" -" when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "" #: src/bionics_ui.cpp @@ -133944,6 +135085,55 @@ msgstr "" "Nie możesz aktywować %s!\n" "By przeczytać opis %s, wciśnij '!', następnie '%c'." +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "Prędkość" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "siła" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "zręczność" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "inteligencja" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "percepcja" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr "" + #: src/calendar.cpp msgid "forever" msgstr "wieczność" @@ -133952,61 +135142,70 @@ msgstr "wieczność" #, c-format msgid "%d second" msgid_plural "%d seconds" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d sekunda" +msgstr[1] "%d sekund" +msgstr[2] "%d sekund" +msgstr[3] "%d sekund" #: src/calendar.cpp #, c-format msgid "%d minute" msgid_plural "%d minutes" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d minuta" +msgstr[1] "%d minut" +msgstr[2] "%d minut" +msgstr[3] "%d minut" #: src/calendar.cpp #, c-format msgid "%d hour" msgid_plural "%d hours" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d godzina" +msgstr[1] "%d godzin" +msgstr[2] "%d godzin" +msgstr[3] "%d godzin" #: src/calendar.cpp #, c-format msgid "%d day" msgid_plural "%d days" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d dni" +msgstr[1] "%d dni" +msgstr[2] "%d dni" +msgstr[3] "%d dni" + +#: src/calendar.cpp +#, c-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d tydzień" +msgstr[1] "%d tygodni" +msgstr[2] "%d tygodni" +msgstr[3] "%d tygodni" #: src/calendar.cpp #, c-format msgid "%d season" msgid_plural "%d seasons" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d pora roku" +msgstr[1] "%d pór roku" +msgstr[2] "%d pór roku" +msgstr[3] "%d pór roku" #: src/calendar.cpp #, c-format msgid "%d year" msgid_plural "%d years" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d rok" +msgstr[1] "%d lat" +msgstr[2] "%d lat" +msgstr[3] "%d lat" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment #: src/calendar.cpp msgid " forever" -msgstr "" +msgstr "wieczność" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -134014,10 +135213,10 @@ msgstr "" #, c-format msgid "%3d second" msgid_plural "%3d seconds" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3dsekunda " +msgstr[1] "%3dsekund " +msgstr[2] "%3d sekund" +msgstr[3] "%3d sekund" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -134025,10 +135224,10 @@ msgstr[3] "" #, c-format msgid "%3d minute" msgid_plural "%3d minutes" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3d minuta" +msgstr[1] "%3d minuta" +msgstr[2] "%3d minut" +msgstr[3] "%3d minut" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -134036,10 +135235,10 @@ msgstr[3] "" #, c-format msgid "%3d hour" msgid_plural "%3d hours" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3d godzina" +msgstr[1] "%3d godzin" +msgstr[2] "%3d godzin" +msgstr[3] "%3d godzin" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -134047,10 +135246,21 @@ msgstr[3] "" #, c-format msgid "%3d day" msgid_plural "%3d days" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3d dzień" +msgstr[1] "%3d dni" +msgstr[2] "%3d dni" +msgstr[3] "%3d dni" + +#. ~ Right-aligned time string. should right-align with other strings with +#. this same comment +#: src/calendar.cpp +#, c-format +msgid "%3d week" +msgid_plural "%3d weeks" +msgstr[0] "%3d tydzień" +msgstr[1] "%3d tygodni" +msgstr[2] "%3d tygodni" +msgstr[3] "%3d tygodni" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -134058,10 +135268,10 @@ msgstr[3] "" #, c-format msgid "%3d season" msgid_plural "%3d seasons" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3d pora roku" +msgstr[1] "%3d pór roku" +msgstr[2] "%3d pór roku" +msgstr[3] "%3d pór roku" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -134069,10 +135279,10 @@ msgstr[3] "" #, c-format msgid "%3d year" msgid_plural "%3d years" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3d rok" +msgstr[1] "%3d lat" +msgstr[2] "%3d lat" +msgstr[3] "%3d lat" #. ~ %1$s - greater units of time (e.g. 3 hours), %2$s - lesser units of time #. (e.g. 11 minutes). @@ -134160,7 +135370,7 @@ msgstr "Mile na godz." #. ~ vehicle speed tiles per turn #: src/cata_utility.cpp msgid "t/t" -msgstr "" +msgstr "p/t" #: src/cata_utility.cpp src/options.cpp msgid "km/h" @@ -134386,22 +135596,6 @@ msgstr "" msgid "Liquid from your inventory has leaked onto the ground." msgstr "Płyn z twojego ekwipunku wyciekł na ziemię." -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "siła" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "zręczność" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "inteligencja" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "percepcja" - #: src/character.cpp msgid "Left Arm" msgstr "Lewa Ręka" @@ -134501,9 +135695,7 @@ msgstr "Nie spodziewasz się żadnego efektu z użycia tego." msgid "No limb would benefit from it." msgstr "Żadna kończyna nie skorzysta z tego." -#: src/character.cpp src/game.cpp src/game.cpp src/iexamine.cpp -#: src/inventory_ui.cpp src/npctalk_funcs.cpp src/pickup.cpp src/turret.cpp -#: src/vehicle_use.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp src/pickup.cpp msgid "Cancel" msgstr "Anuluj" @@ -134555,7 +135747,7 @@ msgstr "Bez Auto Podnoszenia" #: src/clzones.cpp msgid "You won't auto-pickup items inside the zone." -msgstr "" +msgstr "Nie będziesz automatycznie podnosił rzeczy wewnątrz obszaru." #: src/clzones.cpp msgid "No NPC Pickup" @@ -134563,7 +135755,7 @@ msgstr "Bez Podnoszenia przez NPC" #: src/clzones.cpp msgid "Friendly NPCs don't pickup items inside the zone." -msgstr "" +msgstr "Przyjaźni NPC nie podnoszą rzeczy wewnątrz obszaru." #: src/clzones.cpp msgid "Loot: Unsorted" @@ -134574,6 +135766,9 @@ msgid "" "Place to drop unsorted loot. You can use \"sort out loot\" zone-action to " "sort items inside. It can overlap with Loot zones of different types." msgstr "" +"Miejsce na upuszczenie nieposortowanych zdobyczy. Możesz użyć akcji " +"obszarowej \"posortuj zdobycz\" by posegregować zawartość. Może nakładać się" +" na inne obszary zdobyczy różnego typu." #: src/clzones.cpp msgid "Loot: Food" @@ -134588,7 +135783,7 @@ msgstr "" "zdefiniowana, cała żywność trafi tutaj." #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" msgstr "Łup: P.Żywność" @@ -134613,7 +135808,7 @@ msgstr "" "zdefiniowano." #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" msgstr "Łup: P.Napoje" @@ -134630,7 +135825,7 @@ msgid "Destination for guns, bows and similar weapons." msgstr "Miejsce na broń palną, łuki i im podobne." #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" msgstr "Łup: Magazynki" @@ -134675,7 +135870,7 @@ msgstr "" "wyznaczona." #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" msgstr "Łup: B.Ubrania" @@ -134724,7 +135919,7 @@ msgid "Destination for Compact Bionics Modules aka CBMs." msgstr "Miejsca na Kompaktowe Bioniczne Moduły aka CBM." #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" msgstr "Łup: C.Pojazdów" @@ -134769,7 +135964,7 @@ msgid "Destination for chemicals." msgstr "Miejsce na chemikalia." #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" msgstr "Łup: C.Zamienne" @@ -134798,7 +135993,7 @@ msgstr "" " wyznaczona." #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" msgstr "Łup: B.Zbroja" @@ -134823,7 +136018,7 @@ msgid "Items inside of this zone are ignored by \"sort out loot\" zone-action." msgstr "Rzeczy w tej strefie są ignorowane przez akcję sortowania zdobyczy." #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" msgstr "Farma: Działka" @@ -135834,7 +137029,7 @@ msgstr "Faza/Wariant #" msgid "Result: " msgstr "Rezultat:" -#: src/construction.cpp src/crafting_gui.cpp src/recipe.cpp +#: src/construction.cpp src/crafting_gui.cpp msgid "N/A" msgstr "N/A" @@ -135945,13 +137140,17 @@ msgstr "Przewiercasz przejście prowadzące w stronę powierzchni." msgid "After boarding up the window the curtains and curtain rod are left." msgstr "Po zabiciu okna dechami pozostają zasłony i pręt od karnisza." +#: src/construction.cpp +msgid "You gather some clay." +msgstr "Zbierasz nieco gliny." + #: src/construction.cpp msgid "You gather some sand." msgstr "Zbierasz nieco piasku." #: src/construction.cpp -msgid "You gather some clay." -msgstr "Zbierasz nieco gliny." +msgid "You gather some materials." +msgstr "" #: src/construction.cpp msgid "You cannot build there!" @@ -136436,6 +137635,16 @@ msgstr "%s (%d/%d w pobliżu i na sobie)" msgid "Use which component?" msgstr "Użyć którego składnika?" +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "" + #: src/crafting.cpp msgid "Use which tool?" msgstr "Użyć którego narzędzia?" @@ -136605,37 +137814,37 @@ msgstr "Zapisany w: %s" #: src/crafting_gui.cpp #, c-format -msgid "Skills used: %s" -msgstr "Używa umiejętności: %s" +msgid "Primary skill used: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Required skills: %s" -msgstr "Wymagane umiejętności: %s" +msgid "Difficulty: %d" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Difficulty: %d" -msgstr "Trudność: %d" +msgid "Your skill level: %d" +msgstr "" #: src/crafting_gui.cpp -msgid "Your skill level: N/A" -msgstr "Twój poziom umiejętności: N/A" +msgid "Your skill level: N/A" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Your skill level: %d" -msgstr "Twój poziom umiejętności: %d" +msgid "Other skills used: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Time to complete: %s" -msgstr "Czas do ukończenia: %s" +msgid "Time to complete: %s" +msgstr "" #: src/crafting_gui.cpp #, c-format -msgid "Dark craftable? %s" -msgstr "Wytarzanie w mroku? %s" +msgid "Dark craftable? %s" +msgstr "" #: src/crafting_gui.cpp src/defense.cpp msgid "Easy" @@ -136661,32 +137870,80 @@ msgstr "Nie możesz tego zrobić!" msgid "Nothing selected!" msgstr "Nie wybrano niczego!" -#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp -msgid "Search:" -msgstr "Szukaj:" +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "tak" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" +msgstr "" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" +"The default is to search result names. Some single-character prefixes can be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" +msgstr "" + +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" +msgstr "" + +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" msgstr "" +#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp +msgid "Search:" +msgstr "Szukaj:" + #: src/crafting_gui.cpp msgid "RESULTS" msgstr "REZULTATY" @@ -136717,10 +137974,6 @@ msgstr "zły humor" msgid "slow %d%%" msgstr "wolno %d%%" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "tak" - #: src/crafting_gui.cpp msgid "Searched" msgstr "Wyszukane" @@ -136865,6 +138118,11 @@ msgstr "Przyjazny" msgid "BUG: Behavior unnamed. (Creature::get_attitude_ui_data)" msgstr "BUG: Nienazwane zachowanie. (Creature::get_attitude_ui_data)" +#: src/debug.cpp +#, c-format +msgid "See %s for a full stack backtrace" +msgstr "" + #: src/debug.cpp msgid "An error has occurred! Written below is the error report:" msgstr "Wystąpił błąd! Poniżej raport z błędu:" @@ -138102,7 +139360,7 @@ msgstr "Musisz wybrać pole w zasięgu %d od obozu" msgid "You must construct expansions in fields." msgstr "Musisz budować rozszerzenia na polach." -#: src/editmap.cpp src/mission_companion.cpp +#: src/editmap.cpp src/faction_camp.cpp msgid "" "Engine cannot support merging vehicles from two overmaps, please remove them" " from the OM tile." @@ -140135,504 +141393,1982 @@ msgstr "Zapasy żywności: %s" msgid "Combat Ability: %s" msgstr "Zdolność Walki: %s" -#: src/field.cpp -msgid "blood splatter" -msgstr "rozbryzg krwi" +#: src/faction_camp.cpp +msgid " [DONE]\n" +msgstr "[GOTOWE]\n" -#: src/field.cpp -msgid "blood stain" -msgstr "plama krwi" +#: src/faction_camp.cpp +msgid " left]\n" +msgstr "" -#: src/field.cpp -msgid "puddle of blood" -msgstr "kałuża krwi" +#: src/faction_camp.cpp +msgid "Upgrade Camp" +msgstr "Ulepsz Obóz" -#: src/field.cpp -msgid "bile splatter" -msgstr "rozbryzg żółci" +#: src/faction_camp.cpp +msgid "Working to expand your camp!\n" +msgstr "Pracują nad poszerzeniem twojego obozu!\n" -#: src/field.cpp -msgid "bile stain" -msgstr "plama żółci" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?" +msgstr "" +"\n" +"\n" +"Czy chcesz przywrócić sojuszników z powrotem do twojej grupy?" -#: src/field.cpp -msgid "puddle of bile" -msgstr "kałuża żółci" +#: src/faction_camp.cpp +msgid "Recover Ally from Upgrading" +msgstr "Wycofaj Sojusznika z Ulepszania" -#: src/field.cpp -msgid "bloody meat chunks" -msgstr "krwawe kawałki mięsa" +#: src/faction_camp.cpp +msgid "Busy crafting!\n" +msgstr "Zajęci wytwarzaniem!\n" -#: src/field.cpp -msgid "heap of gore" -msgstr "sterta posoki" +#: src/faction_camp.cpp +msgid " (Finish) Crafting" +msgstr "(Gotowe) Wytwarzanie" -#: src/field.cpp -msgid "scraps of flesh" -msgstr "ochłapy ciał" +#: src/faction_camp.cpp +msgid "Gather Materials" +msgstr "Zbieraj Materiały" -#: src/field.cpp -msgid "broken vegetation tangle" -msgstr "kłąb połamanej roślinności" +#: src/faction_camp.cpp +msgid "Searching for materials to upgrade the camp.\n" +msgstr "Poszukują materiałów do rozbudowy obozu.\n" -#: src/field.cpp -msgid "shattered branches and leaves" -msgstr "połamane gałęzie i liście" +#: src/faction_camp.cpp +msgid "Recover Ally from Gathering" +msgstr "Wycofaj Sojusznika ze Zbierania" -#: src/field.cpp -msgid "shredded leaves and twigs" -msgstr "poszarpane liście i gałązki" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" +" \n" +"Effects:\n" +"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" +" \n" +"Must have enjoyability >= -6\n" +"Perishable food liquidated at penalty depending on upgrades and rot time:\n" +"> Rotten: 0%%\n" +"> Rots in < 2 days: 60%%\n" +"> Rots in < 5 days: 80%%\n" +" \n" +"Total faction food stock: %d kcal or %d day's rations" +msgstr "" -#: src/field.cpp -msgid "cobwebs" -msgstr "sieci pajęcze" +#: src/faction_camp.cpp +msgid "Distribute Food" +msgstr "" -#: src/field.cpp -msgid "thick webs" -msgstr "gęste pajęczyny" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" +" \n" +"Effects:\n" +"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" +"> Items sitting on any type of furniture will not be moved.\n" +"> Items that are not listed in one of the categories are defaulted to the tools group." +msgstr "" -#: src/field.cpp -msgid "webs" -msgstr "pajęczyny" +#: src/faction_camp.cpp +msgid "Reset Sort Points" +msgstr "" -#: src/field.cpp -msgid "puddle of slime" -msgstr "kałuża śluzu" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to gather light brush and heavy sticks.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +"> heavy sticks\n" +"> withered plants\n" +"> splintered wood\n" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "slime stain" -msgstr "plama śluzu" +#: src/faction_camp.cpp +msgid "Collect Firewood" +msgstr "" -#: src/field.cpp -msgid "slime trail" -msgstr "smuga śluzu" +#: src/faction_camp.cpp +msgid "Searching for firewood.\n" +msgstr "Poszukują drewna opałowego.\n" -#: src/field.cpp -msgid "acid splatter" -msgstr "rozbryzg kwasu" +#: src/faction_camp.cpp +msgid "Recover Firewood Gatherers" +msgstr "Wycofaj Poszukiwaczy Drewna" -#: src/field.cpp -msgid "acid streak" -msgstr "smuga kwasu" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to do low level chores and sort supplies.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" +"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "pool of acid" -msgstr "kałuża kwasu" +#: src/faction_camp.cpp +msgid "Menial Labor" +msgstr "" -#: src/field.cpp -msgid "glob of sap" -msgstr "kropla żywicy" +#: src/faction_camp.cpp +msgid "Performing menial labor...\n" +msgstr "Wykonują prace fizyczne...\n" -#: src/field.cpp -msgid "pool of sap" -msgstr "kałuża żywicy" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?\n" +msgstr "" +"\n" +"\n" +"Czy chcesz przywrócić sojuszników z powrotem do twojej grupy?\n" -#: src/field.cpp -msgid "sap splatter" -msgstr "rozbryzg żywicy" +#: src/faction_camp.cpp +msgid "Recover Menial Laborer" +msgstr "Wycofaj Sojusznika z Prac Fizycznych" -#: src/field.cpp -msgid "sludge trail" -msgstr "smuga śluzu" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours \n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thick sludge trail" -msgstr "gęsta smuga śluzu" +#: src/faction_camp.cpp +msgid "Expand Base" +msgstr "" -#: src/field.cpp -msgid "thin sludge trail" -msgstr "cienka smuga śluzu" +#: src/faction_camp.cpp +msgid "Surveying for expansion...\n" +msgstr "Wyznacza teren pod rozbudowę...\n" -#: src/field.cpp -msgid "fire" -msgstr "ogień" +#: src/faction_camp.cpp +msgid "Recover Surveyor" +msgstr "Wycofaj Mierniczego" -#: src/field.cpp -msgid "raging fire" -msgstr "szalejący ogień" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to a nearby forest to cut logs.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: 1 \n" +"Effects:\n" +"> 50%% of trees/trunks at the forest position will be cut down.\n" +"> 100%% of total material will be brought back.\n" +"> Repeatable with diminishing returns.\n" +" \n" +"Risk: None\n" +"Time: 6 Hour Base + Travel Time + Cutting Time\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "small fire" -msgstr "mały ogień" +#: src/faction_camp.cpp +msgid "Cut Logs" +msgstr "" -#: src/field.cpp -msgid "legacy rubble" -msgstr "przestarzały gruz" +#: src/faction_camp.cpp +msgid "Cutting logs in the woods...\n" +msgstr "Pracują jako drwale w lesie...\n" -#: src/field.cpp -msgid "smoke" -msgstr "dym" +#: src/faction_camp.cpp +msgid "Recover Log Cutter" +msgstr "Wycofaj Drwala" -#: src/field.cpp -msgid "thick smoke" -msgstr "gęsty dym" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Good for setting up resupply or contingency points.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward.\n" +" \n" +"Risk: Medium\n" +"Time: 6 Hour Construction + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thin smoke" -msgstr "lekki dym" +#: src/faction_camp.cpp +msgid "Setup Hide Site" +msgstr "" -#: src/field.cpp -msgid "hazy cloud" -msgstr "mglista chmura" +#: src/faction_camp.cpp +msgid "Setting up a hide site...\n" +msgstr "Ustawianie miejsca ukrycia...\n" -#: src/field.cpp -msgid "thick toxic gas" -msgstr "gęsty toksyczny gaz" +#: src/faction_camp.cpp +msgid "Recover Hide Setup" +msgstr "Wycofaj Ustawienie Miejsca Ukrycia" -#: src/field.cpp -msgid "toxic gas" -msgstr "toksyczyny gaz" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Push gear out to a hide site or bring gear back from one.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 1\n" +"Effects:\n" +"> Good for returning equipment you left in the hide site shelter.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward or back.\n" +" \n" +"Risk: Medium\n" +"Time: 1 Hour Base + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "tear gas" -msgstr "gaz łzawiący" +#: src/faction_camp.cpp +msgid "Relay Hide Site" +msgstr "" -#: src/field.cpp -msgid "thick tear gas" -msgstr "gęsty gaz łzawiący" +#: src/faction_camp.cpp +msgid "Transfering gear to a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "radioactive gas" -msgstr "radioaktywny gaz" +#: src/faction_camp.cpp +msgid "Recover Hide Relay" +msgstr "" -#: src/field.cpp -msgid "thick radioactive gas" -msgstr "gęsty radioaktywny gaz" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to edible plans.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Foraging Possibilities:\n" +"> wild vegetables\n" +"> fruits and nuts dependening on season\n" +"May produce less food than consumed!\n" +"Risk: Very Low\n" +"Time: 4 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "gas vent" -msgstr "ujście gazu" +#: src/faction_camp.cpp +msgid "Forage for plants" +msgstr "" -#: src/field.cpp -msgid "electric cloud" -msgstr "elektryczna chmura" +#: src/faction_camp.cpp +msgid "Foraging for edible plants.\n" +msgstr "" -#: src/field.cpp -msgid "electric crackle" -msgstr "elektryczne trzaski" +#: src/faction_camp.cpp +msgid "Recover Foragers" +msgstr "" -#: src/field.cpp -msgid "sparks" -msgstr "iskry" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to set traps for small game.\n" +" \n" +"Skill used: trapping\n" +"Difficulty: N/A \n" +"Trappinng Possibilities:\n" +"> small and tiny animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Low\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/2\n" +msgstr "" -#: src/field.cpp -msgid "odd ripple" -msgstr "dziwna zmarszczka" +#: src/faction_camp.cpp +msgid "Trap Small Game" +msgstr "" -#: src/field.cpp -msgid "swirling air" -msgstr "wirujące powietrze" +#: src/faction_camp.cpp +msgid "Trapping Small Game.\n" +msgstr "" -#: src/field.cpp -msgid "tear in reality" -msgstr "rozdarcie w rzeczywistości" +#: src/faction_camp.cpp +msgid "Recover Trappers" +msgstr "" -#: src/field.cpp -msgid "faint plasma" -msgstr "blada plazma" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to hunt large animals.\n" +" \n" +"Skill used: marksmanship\n" +"Difficulty: N/A \n" +"Hunting Possibilities:\n" +"> small, medium, or large animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Medium\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "glaring plasma" -msgstr "oślepiająca plazma" +#: src/faction_camp.cpp +msgid "Hunt Large Animals" +msgstr "" -#: src/field.cpp -msgid "glowing plasma" -msgstr "świecąca plazma" +#: src/faction_camp.cpp +msgid "Hunting large animals.\n" +msgstr "" -#: src/field.cpp -msgid "beam of light" -msgstr "strumień światła" +#: src/faction_camp.cpp +msgid "Recover Hunter" +msgstr "" -#: src/field.cpp -msgid "faint glimmer" -msgstr "blade migotanie" +#: src/faction_camp.cpp +msgid "Construct Map Fortifications" +msgstr "" -#: src/field.cpp -msgid "intense beam of light" -msgstr "silny strumień światła" +#: src/faction_camp.cpp +msgid "Construct Spiked Trench" +msgstr "" -#: src/field.cpp -msgid "spotlight" -msgstr "światło reflektora" +#: src/faction_camp.cpp +msgid "Constructing fortifications...\n" +msgstr "Konstruują fortyfikacje...\n" -#: src/field.cpp -msgid "dazzling" -msgstr "oślepiający" +#: src/faction_camp.cpp +msgid "Finish Map Fortifications" +msgstr "Ukończ Mapowanie Fortyfikacji" -#: src/field.cpp -msgid "plant sap splatter" -msgstr "rozbryzg soku roślinnego" +#: src/faction_camp.cpp +msgid "Recruit Companions" +msgstr "" -#: src/field.cpp -msgid "plant sap stain" -msgstr "plama soku roślinnego" +#: src/faction_camp.cpp +msgid "Searching for recruits.\n" +msgstr "Poszukują rekrutów.\n" -#: src/field.cpp -msgid "puddle of resin" -msgstr "kałuża żywicy" +#: src/faction_camp.cpp +msgid "Recover Recruiter" +msgstr "Wycofaj Rekrutera" -#: src/field.cpp -msgid "bug blood splatter" -msgstr "rozbryzg owadziej krwi" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Select checkpoints to customize path.\n" +"> Reveals terrain around the path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "bug blood stain" -msgstr "plama owadziej krwi" +#: src/faction_camp.cpp +msgid "Scout Mission" +msgstr "" -#: src/field.cpp -msgid "puddle of bug blood" -msgstr "kałuża owadziej krwi" +#: src/faction_camp.cpp +msgid "Scouting the region.\n" +msgstr "Na misji zwiadowczej.\n" -#: src/field.cpp -msgid "hemolymph splatter" -msgstr "rozbryzg hemolimfy" +#: src/faction_camp.cpp +msgid "Recover Scout" +msgstr "Wycofaj Zwiadowcę" -#: src/field.cpp -msgid "hemolymph stain" -msgstr "plama hemolimfy" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 4\n" +"Effects:\n" +"> Pulls creatures encountered into combat instead of fleeing.\n" +"> Select checkpoints to customize path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: Very High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "puddle of hemolymph" -msgstr "kałuża hemolimfy" +#: src/faction_camp.cpp +msgid "Combat Patrol" +msgstr "" -#: src/field.cpp -msgid "shards of chitin" -msgstr "odłamki chityny" +#: src/faction_camp.cpp +msgid "Patrolling the region.\n" +msgstr "Na misji patrolowej.\n" -#: src/field.cpp -msgid "shattered bug leg" -msgstr "strzaskana owadzia noga" +#: src/faction_camp.cpp +msgid "Recover Combat Patrol" +msgstr "Wycofaj Patrol Bojowy" -#: src/field.cpp -msgid "torn insect organs" -msgstr "rozerwane owadzie organy" +#: src/faction_camp.cpp +msgid " Expansion Upgrade" +msgstr "" -#: src/field.cpp -msgid "gooey scraps" -msgstr "kleiste skrawki" +#: src/faction_camp.cpp +msgid "Working to upgrade your expansions!\n" +msgstr "Pracują nad ulepszeniem infrastruktury!\n" -#: src/field.cpp -msgid "heap of squishy gore" -msgstr "kupa gąbczastej posoki" +#: src/faction_camp.cpp +msgid " Expansion" +msgstr "Rozszerzenie" -#: src/field.cpp -msgid "icky mess" -msgstr "lepka masa" +#: src/faction_camp.cpp +msgid "Recover Ally, " +msgstr "Wycofaj Sojusznika," -#: src/field.cpp -msgid "swirl of tobacco smoke" -msgstr "kłąb tytoniowego dymu" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Have a companion attempt to completely dissemble a vehicle into components.\n" +" \n" +"Skill used: mechanics\n" +"Difficulty: 2 \n" +"Effects:\n" +"> Removed parts placed on the furniture in the garage.\n" +"> Skill plays a huge role to determine what is salvaged.\n" +" \n" +"Risk: None\n" +"Time: Skill Based \n" +msgstr "" -#: src/field.cpp -msgid "thick tobacco smoke" -msgstr "gęsty tytoniowy dym" +#: src/faction_camp.cpp +msgid " Chop Shop" +msgstr "" -#: src/field.cpp -msgid "tobacco smoke" -msgstr "tytoniowy dym" +#: src/faction_camp.cpp +msgid "Working at the chop shop...\n" +msgstr "Pracuje w dziupli samochodowej...\n" -#: src/field.cpp -msgid "pot smoke" -msgstr "dym z ziela" +#: src/faction_camp.cpp +msgid " (Finish) Chop Shop" +msgstr "(Ukończone) Dziupla Samochodowa" -#: src/field.cpp -msgid "swirl of pot smoke" -msgstr "kłąb dymu z ziela" +#: src/faction_camp.cpp +msgid "Working in your kitchen!\n" +msgstr "Pracują w twojej kuchni!\n" -#: src/field.cpp -msgid "thick pot smoke" -msgstr "gęsty dym z ziela" +#: src/faction_camp.cpp +msgid " (Finish) Cooking" +msgstr "(Gotowe) Gotowanie" -#: src/field.cpp -msgid "crack smoke" -msgstr "dym z kraku" +#: src/faction_camp.cpp +msgid "Working in your blacksmith shop!\n" +msgstr "Pracują w twojej kuźni!\n" -#: src/field.cpp -msgid "swirl of crack smoke" -msgstr "kłąb dymy z kraku" +#: src/faction_camp.cpp +msgid " (Finish) Smithing" +msgstr "(Gotowe) Kowalstwo" -#: src/field.cpp -msgid "thick crack smoke" -msgstr "gęsty dym z kraku" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plow any spaces that have reverted to dirt or grass.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "meth smoke" -msgstr "dym z mety" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Restores only the plots created in the last expansion upgrade.\n" +"> Does not damage existing crops.\n" +" \n" +"Risk: None\n" +"Time: 5 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "swirl of meth smoke" -msgstr "kłąb dymu z mety" +#: src/faction_camp.cpp +msgid " Plow Fields" +msgstr "" -#: src/field.cpp -msgid "thick meth smoke" -msgstr "gęsty dym z mety" +#: src/faction_camp.cpp +msgid "Working to plow your fields!\n" +msgstr "Pracują w polu!\n" -#: src/field.cpp -msgid "angry swarm of bees" -msgstr "wściekły rój pszczół" +#: src/faction_camp.cpp +msgid " (Finish) Plow Fields" +msgstr "(Gotowe) Zaoraj Pola" -#: src/field.cpp -msgid "some bees" -msgstr "nieco pszczół" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plant designated seeds in the spaces that have already been tilled.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "swarm of bees" -msgstr "rój pszczół" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose which seed type or all of your seeds.\n" +"> Stops when out of seeds or planting locations.\n" +"> Will plant in ALL dirt mounds in the expansion.\n" +" \n" +"Risk: None\n" +"Time: 1 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "airborne incendiary" -msgstr "lotna łatwopalna substancja" +#: src/faction_camp.cpp +msgid " Plant Fields" +msgstr "" -#: src/field.cpp -msgid "relaxation gas" -msgstr "gaz odprężajacy" +#: src/faction_camp.cpp +msgid "Working to plant your fields!\n" +msgstr "Obsiewają pola!\n" -#: src/field.cpp -msgid "sedative gas" -msgstr "gaz uspokajający" +#: src/faction_camp.cpp +msgid " (Finish) Plant Fields" +msgstr "(Gotowe) Obsiej Pola" -#: src/field.cpp -msgid "fungal haze" -msgstr "grzybiczny opar" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Harvest any plants that are ripe and bring the produce back.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "thick fungal haze" -msgstr "gęsty grzybiczny opar" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Will dump all harvesting products onto your location.\n" +" \n" +"Risk: None\n" +"Time: 3 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "fungicidal gas" -msgstr "grzybobójczy gaz" +#: src/faction_camp.cpp +msgid " Harvest Fields" +msgstr "Zbierz Plon z Pól" -#: src/field.cpp -msgid "thick fungicidal gas" -msgstr "gęsty grzybobójczy gaz" +#: src/faction_camp.cpp +msgid "Working to harvest your fields!\n" +msgstr "Zbierają plon z pól!\n" -#: src/field.cpp -msgid "smoke vent" -msgstr "komin" +#: src/faction_camp.cpp +msgid " (Finish) Harvest Fields" +msgstr "(Gotowe) Zbieraj Plony" -#: src/field.cpp -msgid "Whew... smells like skunk!" -msgstr "Fiuuu... cuchnie jak skunks!" +#: src/faction_camp.cpp +msgid "Working on your farm!\n" +msgstr "Pracują na farmie!\n" -#: src/field.cpp -msgid "Man, that smells like some good shit!" -msgstr "Stary, to pachnie jak niezły towar!" +#: src/faction_camp.cpp +msgid "departs to search for materials..." +msgstr "oddala się by szukać materiałów..." -#: src/field.cpp -msgid "I don't know... should you really be smoking that stuff?" -msgstr "No nie wiem... czy naprawę powinieneś palić to coś?" +#: src/faction_camp.cpp +msgid "There are too many companions working on this mission!" +msgstr "Zbyt wielu towarzyszy pracuje w tej misji!" -#: src/field.cpp -msgid "Ew, smells like burning rubber!" -msgstr "Fuj, śmierdzi jak palona guma!" +#: src/faction_camp.cpp +msgid "departs to search for firewood..." +msgstr "oddala się by szukać drewna opałowego..." -#: src/field.cpp -msgid "Ugh, that smells rancid!" -msgstr "Ugh, to śmierdzi jakby zjełczało!" +#: src/faction_camp.cpp +msgid "You don't have enough food stored to feed your companion." +msgstr "" +"Nie masz wystarczająco zmagazynowanej żywności by nakarmić swojego " +"towarzysza." -#: src/field.cpp +#: src/faction_camp.cpp +msgid "departs to dig ditches and scrub toilets..." +msgstr "oddala się by kopać rowy i szorować toalety..." + +#: src/faction_camp.cpp #, c-format -msgid "A %s hits you!" -msgstr "Trafia cię %s!" +msgid "%s returns from working in the woods..." +msgstr "%s wraca z pracy w lesie..." -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits %2$s!" -msgstr "%2$s zostaje trafiony przez %1$s!" +msgid "%s returns from working on the hide site..." +msgstr "%s wraca z pracy przy miejscu ukrycia..." -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits the %2$s!" -msgstr "%2$szostaje trafiony przez %1$s!" +msgid "%s returns from shuttling gear between the hide site..." +msgstr "%s wraca z przerzutu sprzętu pomiędzy miejscem ukrycia..." -#: src/field.cpp -msgid "The acid burns your body!" -msgstr "Kwas pali twoje ciało!" +#: src/faction_camp.cpp +msgid "departs to search for edible plants..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s body!" -msgstr "Kwas pali ciało !" +#: src/faction_camp.cpp +msgid "departs to set traps for small animals..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your legs and feet!" -msgstr "Kwas pali twoje nogi i stopy!" +#: src/faction_camp.cpp +msgid "departs to hunt for meat..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s legs and feet!" -msgstr "Kwas pali nogi i stopy !" +#: src/faction_camp.cpp +msgid "departs to search for recruits..." +msgstr "" -#: src/field.cpp -msgid "You're lying in a pool of acid" -msgstr "Leżysz w kałuży kwasu" +#: src/faction_camp.cpp +msgid "departs to survey land..." +msgstr "oddala się mierzyć działkę gruntu..." -#: src/field.cpp -msgid "You're standing in a pool of acid" -msgstr "Stoisz w kałuży kwasu" +#: src/faction_camp.cpp +msgid "You have already selected a surveyor!" +msgstr "Już wyznaczyłeś mierniczego!" -#: src/field.cpp -msgid "The sap sticks to you!" -msgstr "Żywica przykleja się do ciebie!" +#: src/faction_camp.cpp +msgid "begins to upgrade the expansion..." +msgstr "rozpoczyna ulepszać infrastrukturę..." -#: src/field.cpp -msgid "The sap sticks to !" -msgstr "Żywica przykleja się do !" +#: src/faction_camp.cpp +msgid "You already have a worker upgrading that expansion!" +msgstr "Już masz pracownika pracującego nad ulepszeniem!" -#: src/field.cpp -msgid "The sludge is thick and sticky. You struggle to pull free." -msgstr "Szlam jest gęsty i kleisty. Mocujesz się by się wyrwać." +#: src/faction_camp.cpp +msgid "You don't have the materials for the upgrade." +msgstr "Nie masz materiałów do rozbudowy." -#: src/field.cpp -msgid "You burn your legs and feet!" -msgstr "Palisz swoje nogi i stopy!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your farm with something..." +msgstr "%s wraca z twojej farmy z czymś..." -#: src/field.cpp -msgid "You're burning up!" -msgstr "Palisz się!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns to you with something..." +msgstr "%s wraca do ciebie z czymś..." -#: src/field.cpp -msgid "You're set ablaze!" -msgstr "Jesteś podpalony!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your kitchen with something..." +msgstr "%s wraca z twojej kuchni z czymś..." -#: src/field.cpp -msgid "Your whole body is burning!" -msgstr "Całe twoje ciało płonie!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your blacksmith shop with something..." +msgstr "%s wraca z twojej kuźni z czymś..." -#: src/field.cpp -msgid " burns their legs and feet!" -msgstr " pali swoje nogi i stopy!" +#: src/faction_camp.cpp +msgid "begins plowing the field..." +msgstr "" -#: src/field.cpp -msgid " is burning up!" -msgstr "się pali!" +#: src/faction_camp.cpp +msgid "You already have someone plowing that field." +msgstr "" -#: src/field.cpp -msgid " is set ablaze!" -msgstr " jest podpalony!" +#: src/faction_camp.cpp +msgid "You have no additional seeds to give your companions..." +msgstr "" -#: src/field.cpp -msgid "s whole body is burning!" -msgstr "Całe ciało płonie!" +#: src/faction_camp.cpp +msgid "begins planting the field..." +msgstr "" -#: src/field.cpp -msgid "You're standing in a fire!" -msgstr "Stoisz w ogniu!" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Which seeds do you wish to have planted?" +msgstr "Jakie nasiona chcesz by były posiane na polu?" -#: src/field.cpp -msgid "You're waist-deep in a fire!" -msgstr "Jesteś po pas w ogniu!" +#: src/faction_camp.cpp +msgid "You already have someone planting that field." +msgstr "" -#: src/field.cpp -msgid "You're surrounded by raging fire!" -msgstr "Otacza się szalejący ogień!" +#: src/faction_camp.cpp +msgid "begins to harvest the field..." +msgstr "" -#: src/field.cpp -msgid "You're lying in fire!" -msgstr "Leżysz w ogniu!" +#: src/faction_camp.cpp +msgid "You already have someone harvesting that field." +msgstr "" -#: src/field.cpp -#, c-format -msgid "You feel sick from inhaling the %s" +#: src/faction_camp.cpp +msgid "You already have someone working in that garage." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your garage..." +msgstr "%s powraca z twojego garażu..." + +#: src/faction_camp.cpp +msgid "You already have a companion upgrading the camp." +msgstr "Jeden z towarzyszy już ulepsza obóz." + +#: src/faction_camp.cpp +msgid "begins to upgrade the camp..." +msgstr "rozpoczyna ulepszać obóz..." + +#: src/faction_camp.cpp +msgid "Forests and swamps are the only valid cutting locations." +msgstr "" +"Lasy i mokradła są jedynymi dostępnymi miejscami gdzie można dokonywać " +"wycinki." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Trip Estimate:\n" +"%s" +msgstr "" +"Szacunkowy Czas Podróży:\n" +"%s" + +#: src/faction_camp.cpp +msgid "departs to cut logs..." +msgstr "oddala się by ścinać drzewa..." + +#: src/faction_camp.cpp +msgid "Forests, swamps, and fields are valid hide site locations." +msgstr "" +"Lasy i mokradła są jedynymi dostępnymi miejscami gdzie można umieścić " +"miejsca ukrycia." + +#: src/faction_camp.cpp +msgid "departs to build a hide site..." +msgstr "oddala się by wybudować miejsce ukrycia..." + +#: src/faction_camp.cpp +msgid "You need equipment to setup a hide site..." +msgstr "Potrzebujesz sprzętu by zorganizować miejsce ukrycia..." + +#: src/faction_camp.cpp +msgid "You must select an existing hide site." +msgstr "Musisz wybrać istniejące miejsce ukrycia." + +#: src/faction_camp.cpp +msgid "Bring gear back?" +msgstr "Sprowadzić sprzęt z powrotem?" + +#: src/faction_camp.cpp +msgid "departs for the hide site..." +msgstr "oddala się do miejsca ukrycia..." + +#: src/faction_camp.cpp +msgid "You need equipment to transport between the hide site..." +msgstr "Potrzebujesz sprzętu do transportu pomiędzy miejscem ukrycia..." + +#: src/faction_camp.cpp +msgid "" +"Select a start and end point. Line must be straight. Fields, forests, and " +"swamps are valid fortification locations. In addition to existing " +"fortification constructions." +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an end point." +msgstr "" + +#: src/faction_camp.cpp +msgid "Invalid terrain in construction path." +msgstr "" + +#: src/faction_camp.cpp +msgid "You don't have the material to build the fortification." +msgstr "" + +#: src/faction_camp.cpp +msgid "begins constructing fortifications..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Select checkpoints until you reach maximum range or select the last point " +"again to end." +msgstr "" + +#: src/faction_camp.cpp +msgid "departs on patrol..." +msgstr "udaje się na patrol..." + +#: src/faction_camp.cpp +msgid "You don't have the materials to craft that" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Batch crafting %s [MAX: %d]: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Your batch is too large!" +msgstr "" + +#: src/faction_camp.cpp +msgid "You already have someone working in that expansion." +msgstr "" + +#: src/faction_camp.cpp +msgid "begins to work..." +msgstr "rozpoczyna pracę..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +" Chopping this vehicle:\n" +"%s" +msgstr "" + +#: src/faction_camp.cpp +msgid "begins working in the garage..." +msgstr "rozpoczyna pracę w garażu..." + +#: src/faction_camp.cpp +msgid "Your companion seems disappointed that your pantry is empty..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s returns from upgrading the camp having earned a bit of experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from doing the dirty work to keep the camp running..." +msgstr "%s wraca z brudnej pracy, dzięki której obóz funkcjonuje..." + +#: src/faction_camp.cpp +msgid "Sorting points have changed, forcing reset." +msgstr "" + +#: src/faction_camp.cpp +msgid "gathering materials" +msgstr "" + +#: src/faction_camp.cpp +msgid "foraging for edible plants" +msgstr "" + +#: src/faction_camp.cpp +msgid "trapping small animals" +msgstr "" + +#: src/faction_camp.cpp +msgid "hunting for meat" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from %s carrying supplies and has a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from constructing fortifications..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from searching for recruits with a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s encountered %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't find anyone to recruit..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s convinced %s to hear a recruitment offer from you..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested in anything %s had to offer..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"NPC Overview:\n" +" \n" +msgstr "" +"Przegląd NPC:\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Name: %20s\n" +" \n" +msgstr "" +"Imię: %20s\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "Strength: %10d\n" +msgstr "Siła: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Dexterity: %10d\n" +msgstr "Zręczność: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Intelligence: %10d\n" +msgstr "Inteligencja: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Perception: %10d\n" +" \n" +msgstr "" +"Percepcja: %10d\n" +" \n" + +#: src/faction_camp.cpp +msgid "Top 3 Skills:\n" +msgstr "Top 3 Umiejętności:\n" + +#: src/faction_camp.cpp +msgid "Asking for:\n" +msgstr "Prosi o:\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"> Food: %10d days\n" +" \n" +msgstr "" +"> Jedzenie: %10d dni\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Faction Food:%9d days\n" +" \n" +msgstr "" +"Jedzenie Frakcji:%9d dni\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Recruit Chance: %10d%%\n" +" \n" +msgstr "" +"Szansa Werbunku: %10d%%\n" +" \n" + +#: src/faction_camp.cpp +msgid "Select an option:" +msgstr "Wybierz opcję:" + +#: src/faction_camp.cpp +msgid "Increase Food" +msgstr "Zwiększ Jedzenie" + +#: src/faction_camp.cpp +msgid "Decrease Food" +msgstr "Zmniejsz Jedzenie" + +#: src/faction_camp.cpp +msgid "Make Offer" +msgstr "Złóż Ofertę" + +#: src/faction_camp.cpp +msgid "Not Interested" +msgstr "Brak Zaintersowania" + +#: src/faction_camp.cpp +msgid "You decide you aren't interested..." +msgstr "Decydujesz, że nie interesuje cię to..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s has been convinced to join!" +msgstr "%s został przekonany by dołączyć!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested..." +msgstr "%s nie był zainteresowany..." + +#: src/faction_camp.cpp +msgid "Your companion hit a river and didn't know how to swim..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Your companion hit a river and didn't know how to swim well enough to " +"cross..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't return from patrol..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from patrol..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an expansion:" +msgstr "" + +#: src/faction_camp.cpp +msgid "You choose to wait..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from surveying for the expansion." +msgstr "" + +#: src/faction_camp.cpp +msgid "No seeds to plant!" +msgstr "Brak nasion do zasadzenia!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from working your fields..." +msgstr "%s wraca z pracy w polu..." + +#: src/faction_camp.cpp +msgid "MAIN" +msgstr "GŁÓWNY" + +#: src/faction_camp.cpp +msgid " [N] " +msgstr "[PN]" + +#: src/faction_camp.cpp +msgid " [NE] " +msgstr "[PNW]" + +#: src/faction_camp.cpp +msgid " [E] " +msgstr "[W]" + +#: src/faction_camp.cpp +msgid " [SE] " +msgstr "[PDW]" + +#: src/faction_camp.cpp +msgid " [S] " +msgstr "[PD]" + +#: src/faction_camp.cpp +msgid " [SW] " +msgstr "[PDZ]" + +#: src/faction_camp.cpp +msgid " [W] " +msgstr "[Z]" + +#: src/faction_camp.cpp +msgid " [NW] " +msgstr "[PN]" + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Base Missions" +msgstr "Misje Bazy" + +#: src/faction_camp.cpp +msgid "Farm Expansion" +msgstr "Rozbudowa Farmy" + +#: src/faction_camp.cpp +msgid "Garage Expansion" +msgstr "Rozbudowa Garażu" + +#: src/faction_camp.cpp +msgid "Kitchen Expansion" +msgstr "Rozbudowa Kuchni" + +#: src/faction_camp.cpp +msgid "Blacksmith Expansion" +msgstr "Rozbudowa Kuźni" + +#: src/faction_camp.cpp +msgid "Empty Expansion" +msgstr "Puste Rozszerzenie" + +#: src/faction_camp.cpp +#, c-format +msgid "Select a location between %d and %d tiles away." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"You must select a target between %d and %d range from the base. Range: %d" +msgstr "" + +#: src/faction_camp.cpp +msgid "You must be able to see the target that you select." +msgstr "" + +#: src/faction_camp.cpp +msgid "Do you want to bounce off this location to extend range?" +msgstr "" + +#: src/faction_camp.cpp +msgid "food for you" +msgstr "żywność dla ciebie" + +#: src/faction_camp.cpp +msgid "food for companions" +msgstr "żywność dla towarzyszy" + +#: src/faction_camp.cpp +msgid "weapons" +msgstr "broń" + +#: src/faction_camp.cpp +msgid "clothing" +msgstr "ubiory" + +#: src/faction_camp.cpp +msgid "bionics" +msgstr "bioniki" + +#: src/faction_camp.cpp +msgid "all kinds of tools" +msgstr "różne rodzaje narzędzi" + +#: src/faction_camp.cpp +msgid "wood of various sorts" +msgstr "drewno różnego sortu" + +#: src/faction_camp.cpp +msgid "trash and rotting food" +msgstr "śmieci i gnijąca żywność" + +#: src/faction_camp.cpp +msgid "books" +msgstr "książki" + +#: src/faction_camp.cpp +msgid "medication" +msgstr "medykamenty" + +#: src/faction_camp.cpp +msgid "ammo" +msgstr "amunicja" + +#: src/faction_camp.cpp +#, c-format +msgid "Reset point: %s?" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +" Items New Point Old Point\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +" Save Points?" +msgstr "" + +#: src/faction_camp.cpp +msgid "Revert to default points?" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15.2f (km)\n" +msgstr ">Odległość:%15.2f (km)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">One Way: %15d (trips)\n" +msgstr ">Jednokierunkowa: %15d (wypraw)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15.2f (km)\n" +msgstr ">Obszar pokrycia: %15.2f (km)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15d (m)\n" +msgstr ">Odległość:%15d (m)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15d (m)\n" +msgstr ">Obszar pokrycia: %15d (m)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Travel: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Working: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Total: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Food: %15d (kcal)\n" +" \n" +msgstr "" +"Żywność: %15d (kcal)\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"%s\n" +" \n" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s \n" +"Risk: None\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" +" \n" +"Skill used: speech\n" +"Difficulty: 2 \n" +"Base Score: +%3d%%\n" +"> Expansion Bonus: +%3d%%\n" +"> Faction Bonus: +%3d%%\n" +"> Special Bonus: +%3d%%\n" +" \n" +"Total: Skill +%3d%%\n" +" \n" +"Risk: High\n" +"Time: 4 Days\n" +"Positions: %d/1\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Notes: \n" +"Send a companion to gather materials for the next camp upgrade.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Harvestable: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Ready for Planting: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Needs Plowing: " +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Name: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "---- Engines ----\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Engine: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Status: %24d%%\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Fuel: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "---- Fuel Storage & Battery ----\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Estimated Chop Time: 5 Days\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "No items are located at the drop point..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "You distribute %d kcal worth of food to your companions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "While %s, a silent specter approaches %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s notices the antlered horror and slips away before it gets too close." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Another survivor approaches %s asking for directions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Fearful that he may be an agent of some hostile faction, %s doesn't mention " +"the camp." +msgstr "" + +#: src/faction_camp.cpp +msgid "The two part on friendly terms and the survivor isn't seen again." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't detect the ambush until it was too late!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The bull moose charged %s from the tree line..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Despite being caught off guard %s was able to run away until the moose gave " +"up pursuit." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The jabberwock grabbed %s by the arm from behind and began to scream." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Terrified, %s spun around and delivered a massive kick to the creature's " +"torso..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Collapsing into a pile of gore, %s walked away unscathed..." +msgstr "" + +#: src/faction_camp.cpp +msgid "(Sounds like bullshit, you wonder what really happened.)" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s turned to find the hideous black eyes of a giant wasp staring back from " +"only a few feet away..." +msgstr "" + +#: src/faction_camp.cpp +msgid "The screams were terrifying, there was nothing anyone could do." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Pieces of %s were found strewn across a few bushes." +msgstr "" + +#: src/faction_camp.cpp +msgid "(You wonder if your companions are fit to work on their own...)" +msgstr "" + +#: src/field.cpp +msgid "blood splatter" +msgstr "rozbryzg krwi" + +#: src/field.cpp +msgid "blood stain" +msgstr "plama krwi" + +#: src/field.cpp +msgid "puddle of blood" +msgstr "kałuża krwi" + +#: src/field.cpp +msgid "bile splatter" +msgstr "rozbryzg żółci" + +#: src/field.cpp +msgid "bile stain" +msgstr "plama żółci" + +#: src/field.cpp +msgid "puddle of bile" +msgstr "kałuża żółci" + +#: src/field.cpp +msgid "bloody meat chunks" +msgstr "krwawe kawałki mięsa" + +#: src/field.cpp +msgid "heap of gore" +msgstr "sterta posoki" + +#: src/field.cpp +msgid "scraps of flesh" +msgstr "ochłapy ciał" + +#: src/field.cpp +msgid "broken vegetation tangle" +msgstr "kłąb połamanej roślinności" + +#: src/field.cpp +msgid "shattered branches and leaves" +msgstr "połamane gałęzie i liście" + +#: src/field.cpp +msgid "shredded leaves and twigs" +msgstr "poszarpane liście i gałązki" + +#: src/field.cpp +msgid "cobwebs" +msgstr "sieci pajęcze" + +#: src/field.cpp +msgid "thick webs" +msgstr "gęste pajęczyny" + +#: src/field.cpp +msgid "webs" +msgstr "pajęczyny" + +#: src/field.cpp +msgid "puddle of slime" +msgstr "kałuża śluzu" + +#: src/field.cpp +msgid "slime stain" +msgstr "plama śluzu" + +#: src/field.cpp +msgid "slime trail" +msgstr "smuga śluzu" + +#: src/field.cpp +msgid "acid splatter" +msgstr "rozbryzg kwasu" + +#: src/field.cpp +msgid "acid streak" +msgstr "smuga kwasu" + +#: src/field.cpp +msgid "pool of acid" +msgstr "kałuża kwasu" + +#: src/field.cpp +msgid "glob of sap" +msgstr "kropla żywicy" + +#: src/field.cpp +msgid "pool of sap" +msgstr "kałuża żywicy" + +#: src/field.cpp +msgid "sap splatter" +msgstr "rozbryzg żywicy" + +#: src/field.cpp +msgid "sludge trail" +msgstr "smuga śluzu" + +#: src/field.cpp +msgid "thick sludge trail" +msgstr "gęsta smuga śluzu" + +#: src/field.cpp +msgid "thin sludge trail" +msgstr "cienka smuga śluzu" + +#: src/field.cpp +msgid "raging fire" +msgstr "szalejący ogień" + +#: src/field.cpp +msgid "small fire" +msgstr "mały ogień" + +#: src/field.cpp +msgid "legacy rubble" +msgstr "przestarzały gruz" + +#: src/field.cpp +msgid "smoke" +msgstr "dym" + +#: src/field.cpp +msgid "thick smoke" +msgstr "gęsty dym" + +#: src/field.cpp +msgid "thin smoke" +msgstr "lekki dym" + +#: src/field.cpp +msgid "hazy cloud" +msgstr "mglista chmura" + +#: src/field.cpp +msgid "thick toxic gas" +msgstr "gęsty toksyczny gaz" + +#: src/field.cpp +msgid "toxic gas" +msgstr "toksyczyny gaz" + +#: src/field.cpp +msgid "tear gas" +msgstr "gaz łzawiący" + +#: src/field.cpp +msgid "thick tear gas" +msgstr "gęsty gaz łzawiący" + +#: src/field.cpp +msgid "radioactive gas" +msgstr "radioaktywny gaz" + +#: src/field.cpp +msgid "thick radioactive gas" +msgstr "gęsty radioaktywny gaz" + +#: src/field.cpp +msgid "gas vent" +msgstr "ujście gazu" + +#: src/field.cpp +msgid "electric cloud" +msgstr "elektryczna chmura" + +#: src/field.cpp +msgid "electric crackle" +msgstr "elektryczne trzaski" + +#: src/field.cpp +msgid "sparks" +msgstr "iskry" + +#: src/field.cpp +msgid "odd ripple" +msgstr "dziwna zmarszczka" + +#: src/field.cpp +msgid "swirling air" +msgstr "wirujące powietrze" + +#: src/field.cpp +msgid "tear in reality" +msgstr "rozdarcie w rzeczywistości" + +#: src/field.cpp +msgid "faint plasma" +msgstr "blada plazma" + +#: src/field.cpp +msgid "glaring plasma" +msgstr "oślepiająca plazma" + +#: src/field.cpp +msgid "glowing plasma" +msgstr "świecąca plazma" + +#: src/field.cpp +msgid "beam of light" +msgstr "strumień światła" + +#: src/field.cpp +msgid "faint glimmer" +msgstr "blade migotanie" + +#: src/field.cpp +msgid "intense beam of light" +msgstr "silny strumień światła" + +#: src/field.cpp +msgid "spotlight" +msgstr "światło reflektora" + +#: src/field.cpp +msgid "dazzling" +msgstr "oślepiający" + +#: src/field.cpp +msgid "plant sap splatter" +msgstr "rozbryzg soku roślinnego" + +#: src/field.cpp +msgid "plant sap stain" +msgstr "plama soku roślinnego" + +#: src/field.cpp +msgid "puddle of resin" +msgstr "kałuża żywicy" + +#: src/field.cpp +msgid "bug blood splatter" +msgstr "rozbryzg owadziej krwi" + +#: src/field.cpp +msgid "bug blood stain" +msgstr "plama owadziej krwi" + +#: src/field.cpp +msgid "puddle of bug blood" +msgstr "kałuża owadziej krwi" + +#: src/field.cpp +msgid "hemolymph splatter" +msgstr "rozbryzg hemolimfy" + +#: src/field.cpp +msgid "hemolymph stain" +msgstr "plama hemolimfy" + +#: src/field.cpp +msgid "puddle of hemolymph" +msgstr "kałuża hemolimfy" + +#: src/field.cpp +msgid "shards of chitin" +msgstr "odłamki chityny" + +#: src/field.cpp +msgid "shattered bug leg" +msgstr "strzaskana owadzia noga" + +#: src/field.cpp +msgid "torn insect organs" +msgstr "rozerwane owadzie organy" + +#: src/field.cpp +msgid "gooey scraps" +msgstr "kleiste skrawki" + +#: src/field.cpp +msgid "heap of squishy gore" +msgstr "kupa gąbczastej posoki" + +#: src/field.cpp +msgid "icky mess" +msgstr "lepka masa" + +#: src/field.cpp +msgid "swirl of tobacco smoke" +msgstr "kłąb tytoniowego dymu" + +#: src/field.cpp +msgid "thick tobacco smoke" +msgstr "gęsty tytoniowy dym" + +#: src/field.cpp +msgid "tobacco smoke" +msgstr "tytoniowy dym" + +#: src/field.cpp +msgid "pot smoke" +msgstr "dym z ziela" + +#: src/field.cpp +msgid "swirl of pot smoke" +msgstr "kłąb dymu z ziela" + +#: src/field.cpp +msgid "thick pot smoke" +msgstr "gęsty dym z ziela" + +#: src/field.cpp +msgid "crack smoke" +msgstr "dym z kraku" + +#: src/field.cpp +msgid "swirl of crack smoke" +msgstr "kłąb dymy z kraku" + +#: src/field.cpp +msgid "thick crack smoke" +msgstr "gęsty dym z kraku" + +#: src/field.cpp +msgid "meth smoke" +msgstr "dym z mety" + +#: src/field.cpp +msgid "swirl of meth smoke" +msgstr "kłąb dymu z mety" + +#: src/field.cpp +msgid "thick meth smoke" +msgstr "gęsty dym z mety" + +#: src/field.cpp +msgid "angry swarm of bees" +msgstr "wściekły rój pszczół" + +#: src/field.cpp +msgid "some bees" +msgstr "nieco pszczół" + +#: src/field.cpp +msgid "swarm of bees" +msgstr "rój pszczół" + +#: src/field.cpp +msgid "airborne incendiary" +msgstr "lotna łatwopalna substancja" + +#: src/field.cpp +msgid "relaxation gas" +msgstr "gaz odprężajacy" + +#: src/field.cpp +msgid "sedative gas" +msgstr "gaz uspokajający" + +#: src/field.cpp +msgid "fungal haze" +msgstr "grzybiczny opar" + +#: src/field.cpp +msgid "thick fungal haze" +msgstr "gęsty grzybiczny opar" + +#: src/field.cpp +msgid "fungicidal gas" +msgstr "grzybobójczy gaz" + +#: src/field.cpp +msgid "thick fungicidal gas" +msgstr "gęsty grzybobójczy gaz" + +#: src/field.cpp +msgid "smoke vent" +msgstr "komin" + +#: src/field.cpp +msgid "Whew... smells like skunk!" +msgstr "Fiuuu... cuchnie jak skunks!" + +#: src/field.cpp +msgid "Man, that smells like some good shit!" +msgstr "Stary, to pachnie jak niezły towar!" + +#: src/field.cpp +msgid "I don't know... should you really be smoking that stuff?" +msgstr "No nie wiem... czy naprawę powinieneś palić to coś?" + +#: src/field.cpp +msgid "Ew, smells like burning rubber!" +msgstr "Fuj, śmierdzi jak palona guma!" + +#: src/field.cpp +msgid "Ugh, that smells rancid!" +msgstr "Ugh, to śmierdzi jakby zjełczało!" + +#: src/field.cpp +#, c-format +msgid "A %s hits you!" +msgstr "Trafia cię %s!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits %2$s!" +msgstr "%2$s zostaje trafiony przez %1$s!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits the %2$s!" +msgstr "%2$szostaje trafiony przez %1$s!" + +#: src/field.cpp +msgid "The acid burns your body!" +msgstr "Kwas pali twoje ciało!" + +#: src/field.cpp +msgid "The acid burns s body!" +msgstr "Kwas pali ciało !" + +#: src/field.cpp +msgid "The acid burns your legs and feet!" +msgstr "Kwas pali twoje nogi i stopy!" + +#: src/field.cpp +msgid "The acid burns s legs and feet!" +msgstr "Kwas pali nogi i stopy !" + +#: src/field.cpp +msgid "You're lying in a pool of acid" +msgstr "Leżysz w kałuży kwasu" + +#: src/field.cpp +msgid "You're standing in a pool of acid" +msgstr "Stoisz w kałuży kwasu" + +#: src/field.cpp +msgid "The sap sticks to you!" +msgstr "Żywica przykleja się do ciebie!" + +#: src/field.cpp +msgid "The sap sticks to !" +msgstr "Żywica przykleja się do !" + +#: src/field.cpp +msgid "The sludge is thick and sticky. You struggle to pull free." +msgstr "Szlam jest gęsty i kleisty. Mocujesz się by się wyrwać." + +#: src/field.cpp +msgid "You burn your legs and feet!" +msgstr "Palisz swoje nogi i stopy!" + +#: src/field.cpp +msgid "You're burning up!" +msgstr "Palisz się!" + +#: src/field.cpp +msgid "You're set ablaze!" +msgstr "Jesteś podpalony!" + +#: src/field.cpp +msgid "Your whole body is burning!" +msgstr "Całe twoje ciało płonie!" + +#: src/field.cpp +msgid " burns their legs and feet!" +msgstr " pali swoje nogi i stopy!" + +#: src/field.cpp +msgid " is burning up!" +msgstr "się pali!" + +#: src/field.cpp +msgid " is set ablaze!" +msgstr " jest podpalony!" + +#: src/field.cpp +msgid "s whole body is burning!" +msgstr "Całe ciało płonie!" + +#: src/field.cpp +msgid "You're standing in a fire!" +msgstr "Stoisz w ogniu!" + +#: src/field.cpp +msgid "You're waist-deep in a fire!" +msgstr "Jesteś po pas w ogniu!" + +#: src/field.cpp +msgid "You're surrounded by raging fire!" +msgstr "Otacza się szalejący ogień!" + +#: src/field.cpp +msgid "You're lying in fire!" +msgstr "Leżysz w ogniu!" + +#: src/field.cpp +#, c-format +msgid "You feel sick from inhaling the %s" msgstr "Czujesz się niezdrowo po wdychaniu %s" #: src/field.cpp @@ -141200,6 +143936,14 @@ msgstr "Teleportacja - Pobliska Mapa Zasadnicza" msgid "Test trait group" msgstr "Testuj grupę cech" +#: src/game.cpp +msgid "Show debug message" +msgstr "" + +#: src/game.cpp +msgid "Crash game (test crash handling)" +msgstr "" + #: src/game.cpp msgid "Quit to Main Menu" msgstr "Wyjdź do Głównego Menu" @@ -141327,9 +144071,13 @@ msgstr "godzina" msgid "minute" msgstr "minuta" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp src/martialarts.cpp msgid "turn" -msgstr "tura" +msgid_plural "turns" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" #: src/game.cpp msgid "Set year to?" @@ -141978,7 +144726,7 @@ msgstr "Użyj przedmiotu na" msgid "Sort armor" msgstr "Sortuj ubiór" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "Atakuj" @@ -142009,7 +144757,7 @@ msgstr "Kończyny należące do:" msgid "Use which item?" msgstr "Użyj którego przedmiotu?" -#: src/game.cpp src/iuse.cpp src/veh_interact.cpp +#: src/game.cpp src/iuse.cpp msgid "Never mind" msgstr "Nieważne" @@ -142049,10 +144797,8 @@ msgstr "" "jakiś czas." #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." +msgid "It looks solid, and will burn for a few hours without extra fuel." msgstr "" -"Wygląda solidnie i będzie się palił przez kilka godzin bez dokładania " -"paliwa." #: src/game.cpp msgid "" @@ -142508,7 +145254,7 @@ msgctxt "butchery menu" msgid "Cut up %s (%d)" msgstr "Potnij %s (%d)" -#. ~ Name and number of items listed for disassembling +#. ~ Name, number of items and time to complete disassembling #: src/game.cpp #, c-format msgctxt "butchery menu" @@ -142545,8 +145291,8 @@ msgid "Choose corpse to butcher / item to disassemble" msgstr "Wybierz ciało do wypatroszenia / przedmiot do rozebrania" #: src/game.cpp -msgid "Butcher everything" -msgstr "Wypatrosz wszystko" +msgid "Quick butcher everything" +msgstr "" #: src/game.cpp msgid "Disassemble everything once" @@ -142557,8 +145303,8 @@ msgid "Disassemble everything" msgstr "Rozłóż wszystko" #: src/game.cpp -msgid "Cut up all you can" -msgstr "Potnij co się da" +msgid "Cut up everything" +msgstr "" #: src/game.cpp msgid "" @@ -142585,15 +145331,11 @@ msgstr "Szybkie cięcie" #: src/game.cpp msgid "" -"This techinque is used when you are in a hurry, but still want to harvest " +"This technique is used when you are in a hurry, but still want to harvest " "something from the corpse. Yields are lower as you don't try to be precise," " but it's useful if you don't want to set up a workshop. Prevents zombies " "from raising." msgstr "" -"Ta technika używana jest gdy się spieszysz, ale nadal chcesz pozyskać coś " -"użytecznego z ciała. Produktów będzie mniej, jako że nie starasz się o " -"precyzję, ale metoda jest użyteczna jeśli nie chcesz rozkładać warsztatu. " -"Zapobiega wskrzeszeniu zombie." #: src/game.cpp msgid "Full butchery" @@ -142618,14 +145360,10 @@ msgstr "Wypatrosz" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "" -"Technika sprowadzająca się do usunięcia organów wewnętrznych i wnętrzności " -"by ochronić ciało przed gniciem od wewnątrz. Produktami są organy " -"wewnętrzne. Tusza będzie lżejsza i dłużej zachowa świeżość. Metoda może być " -"łączona z innym dla lepszych efektów." #: src/game.cpp msgid "Quarter corpse" @@ -142633,15 +145371,11 @@ msgstr "Poćwiartuj ciało" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." msgstr "" -"Przez poćwiartowanie wcześniej wypatroszonego ciała uzyskasz cztery części o" -" zmniejszonej wadze i rozmiarze. Może to pomóc w przetransportowaniu " -"większej zdobyczy. Ta metoda niszczy skórę, futro, itp., więc nie używaj jej" -" jeśli chcesz pozyskać je później." #: src/game.cpp msgid "Dissect corpse" @@ -143537,6 +146271,10 @@ msgstr "Czujesz, że twoje ciało się rozkłada." msgid "You feel fatigue seeping into your body." msgstr "Czujesz, że zmęczenie napływa w twoje ciało." +#: src/game.cpp +msgid "The portal collapses!" +msgstr "" + #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." @@ -143780,6 +146518,19 @@ msgstr "NAPOJENIE" msgid "JOY" msgstr "ZADOWOLENIE" +#. ~ Used for permafood shelf life in the Eat menu +#: src/game_inventory.cpp +msgid "indefinite" +msgstr "" + +#: src/game_inventory.cpp +msgid "SHELF LIFE" +msgstr "TRWAŁOŚĆ" + +#: src/game_inventory.cpp +msgid "FRESHNESS" +msgstr "ŚWIERZOŚĆ" + #: src/game_inventory.cpp msgid "SPOILS IN" msgstr "PSUJE SIĘ W" @@ -143812,6 +146563,38 @@ msgstr "Nie możesz wypić rozlanych napojów" msgid "You're fully charged" msgstr "Jesteś w pełni naładowany" +#: src/game_inventory.cpp +msgid "soon!" +msgstr "wkrótce!" + +#: src/game_inventory.cpp +msgid "fresh" +msgstr "świerze" + +#: src/game_inventory.cpp +msgid "quite fresh" +msgstr "dość świerze" + +#: src/game_inventory.cpp +msgid "near midlife" +msgstr "niemal wiek średni" + +#: src/game_inventory.cpp +msgid "past midlife" +msgstr "dalej niż wiek średni" + +#: src/game_inventory.cpp +msgid "getting older" +msgstr "starzeje się" + +#: src/game_inventory.cpp +msgid "old" +msgstr "old" + +#: src/game_inventory.cpp +msgid "rotten" +msgstr "zepsute" + #: src/game_inventory.cpp msgid "Consume item" msgstr "Skonsumuj przedmiot" @@ -143957,6 +146740,14 @@ msgstr "Wybierz broń do włożenia do %s" msgid "You have no weapons you could put into your %s." msgstr "Nie masz broni które mógłbyś włożyć do %s." +#: src/game_inventory.cpp src/iuse.cpp +msgid "Cut up what?" +msgstr "Pociąć co?" + +#: src/game_inventory.cpp +msgid "You have nothing to cut up." +msgstr "Niemasz nic do pocięcia." + #: src/game_inventory.cpp msgid "Saw barrel" msgstr "Obetnij lufę" @@ -144269,7 +147060,7 @@ msgstr "Czekać jak długo?" msgid "Are you sure you want to sleep?" msgstr "Jesteś pewien, że chcesz spać?" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "Tak." @@ -144308,20 +147099,20 @@ msgstr "Ustaw alarm na pobudkę za %i godzin." #: src/handle_action.cpp msgid "There is no compatible zone nearby." -msgstr "" +msgstr "Nie ma kompatybilnej strefy w pobliżu." #: src/handle_action.cpp #, c-format msgid "Compatible zones are %s and %s" -msgstr "" +msgstr "Kompatybilne strefy to %s i %s" #: src/handle_action.cpp msgid "Pick action:" -msgstr "" +msgstr "Wybierz akcję:" #: src/handle_action.cpp msgid "Sort out my loot" -msgstr "" +msgstr "Posortuj moją zdobycz" #: src/handle_action.cpp msgid "" @@ -144329,40 +147120,45 @@ msgid "" " Uses empty space in your inventory or utilizes a cart, if you are holding " "one." msgstr "" +"Posortuj zdobycz z Zdobycz: Strefa Nieposortowanych do pobliskich właściwych" +" stref zdobyczy. Używa miejsca w twoim ekwipunku lub wózka jeśli taki " +"trzymasz." #: src/handle_action.cpp msgid "Till farm plots" -msgstr "" +msgstr "Kop grządki" #: src/handle_action.cpp msgid "Till farm plots... you need a tool to dig with" -msgstr "" +msgstr "Kop grządki... potrzebujesz narzędzia do kopania" #: src/handle_action.cpp msgid "Tills nearby Farm: Plot zones." -msgstr "" +msgstr "Kopie pobliskie Farma: strefa grządek." #: src/handle_action.cpp msgid "Plant seeds... it is too cold for planting" -msgstr "" +msgstr "Sadź nasiona... zbyt zimo by cokolwiek sadzić" #: src/handle_action.cpp msgid "Plant seeds" -msgstr "" +msgstr "Sadź nasiona" #: src/handle_action.cpp msgid "Plant seeds... you don't have any" -msgstr "" +msgstr "Sadź nasiona... nie masz żadnych" #: src/handle_action.cpp msgid "" "Plant seeds into nearby Farm: Plot zones. Farm plot has to be set to " "specific plant seed and you must have seeds in your inventory." msgstr "" +"Sadź nasiona w pobliskiej Farma: strefa grządek. Grządka musi być ustawiona " +"na konkretne nasiona roślin i musisz je mieć w ekwipunku." #: src/handle_action.cpp msgid "You need a tool to dig with." -msgstr "" +msgstr "Potrzebujesz narzędzia do kopania." #: src/handle_action.cpp src/iexamine.cpp src/mission_companion.cpp #: src/vehicle_part.cpp @@ -144371,7 +147167,7 @@ msgstr "Jest zbyt zimno by teraz cokolwiek sadzić." #: src/handle_action.cpp msgid "You don't have any seeds." -msgstr "" +msgstr "Nie masz żadnych nasion." #: src/handle_action.cpp #, c-format @@ -144427,7 +147223,7 @@ msgstr "Nie możesz chwytać rzeczy dopóki jesteś w swojej skorupie." #: src/handle_action.cpp msgid "You can't haul things while you're in your shell." -msgstr "" +msgstr "Nie możesz nic ciągnąć będąc w swojej skorupie." #: src/handle_action.cpp msgid "You can't butcher while you're in your shell." @@ -144524,20 +147320,20 @@ msgstr "Zapisać i wyjść?" #: src/handle_action.cpp #, c-format msgid "%s are now %s." -msgstr "" +msgstr "%s są teraz %s." #. ~ Auto Pulp/Pulp Adjacent/Butcher is now set to x #. ~ Auto Foraging is now set to x #: src/handle_action.cpp #, c-format msgid "%s is now set to %s." -msgstr "" +msgstr "%s jest teraz ustawione na %s." #. ~ Auto Mining is now ON/OFF #: src/handle_action.cpp #, c-format msgid "%s is now %s." -msgstr "" +msgstr "%s jest teraz %s." #: src/handle_action.cpp msgid "Debug mode ON!" @@ -144569,6 +147365,11 @@ msgstr "Nałóż diamentową powłokę" msgid "You don't have a suitable item to coat with diamond" msgstr "Nie masz stosownego przedmiotu do nałożenia diamentowej warstwy." +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "" + #: src/iexamine.cpp #, c-format msgid "Use the %s?" @@ -144687,7 +147488,7 @@ msgstr "Ta toaleta jest pusta." #: src/iexamine.cpp msgid "The toilet water is frozen solid!" -msgstr "" +msgstr "Woda w toalecie zamarzła na kość!" #: src/iexamine.cpp msgid "Swipe your ID card?" @@ -145072,7 +147873,7 @@ msgstr "Których nasion użyć?" #: src/iexamine.cpp #, c-format msgid "Planted %s." -msgstr "" +msgstr "Zasadziłeś %s." #: src/iexamine.cpp msgid "You have no seeds to plant." @@ -145154,7 +147955,7 @@ msgstr "Piec jest gotowy do rozpalenia, ale nie masz źródła ognia." #: src/iexamine.cpp #, c-format msgid "This kiln contains %s %s of material, and is ready to be fired." -msgstr "" +msgstr "Ten piec zawiera %s %s materiału, i jest gotowy do rozpalenia." #: src/iexamine.cpp msgid "Fire the kiln?" @@ -145193,11 +147994,11 @@ msgstr "Koniec wypalania powinien nastąpić za %d minut." #: src/iexamine.cpp #, c-format msgid "It has finished burning, yielding %d charcoal." -msgstr "" +msgstr "Zakończył się palić, dając w rezultacie %d węgla drzewnego." #: src/iexamine.cpp msgid "This keg is empty." -msgstr "" +msgstr "Ten keg jest pusty." #: src/iexamine.cpp msgid "You have no brew to ferment." @@ -145215,7 +148016,7 @@ msgstr "Umieścić %s w kadzi?" #: src/iexamine.cpp #, c-format msgid "This keg contains %s (%d), %0.f%% full." -msgstr "" +msgstr "Ten keg zawiera %s (%d), %0.f%% full." #: src/iexamine.cpp src/pickup.cpp msgid "Select an action" @@ -145224,16 +148025,16 @@ msgstr "Wybierz akcję" #: src/iexamine.cpp #, c-format msgid "Add more %s to the vat" -msgstr "" +msgstr "Dodaj więcej %s do kadzi" #: src/iexamine.cpp #, c-format msgid "Remove %s from the vat" -msgstr "" +msgstr "Usuń %s z kadzi" #: src/iexamine.cpp msgid "Start fermenting cycle" -msgstr "" +msgstr "Rozpocznij cykl fermentacji" #: src/iexamine.cpp #, c-format @@ -145243,7 +148044,7 @@ msgstr "Umieszczona %s w kadzi." #: src/iexamine.cpp #, c-format msgid "The keg now contains %s (%d), %0.f%% full." -msgstr "" +msgstr "Ten keg zawiera obecnie %s (%d), %0.f%% full." #: src/iexamine.cpp msgid "Start fermenting cycle?" @@ -145265,7 +148066,7 @@ msgstr "Usuwasz %s z kadzi." #: src/iexamine.cpp #, c-format msgid "There's a vat of %s set to ferment there." -msgstr "" +msgstr "Jest tu kadź pełna %s ustawiona do fermentacji." #: src/iexamine.cpp msgid "It will finish brewing in less than an hour." @@ -145292,7 +148093,7 @@ msgstr "%s jest gotowe do fermentacji." #: src/iexamine.cpp #, c-format msgid "There's a vat of fermented %s there." -msgstr "" +msgstr "Jest tu kadź przefermentowanej %s." #: src/iexamine.cpp #, c-format @@ -145321,7 +148122,7 @@ msgstr "Wlewasz %2$s do %1$s." #: src/iexamine.cpp #, c-format msgid "Dispense or dump %s" -msgstr "" +msgstr "Wydaj lub wyrzuć %s" #: src/iexamine.cpp src/pickup.cpp msgid "Have a drink" @@ -145455,7 +148256,7 @@ msgstr "Przeszukujesz %s." #: src/iexamine.cpp msgid "Recycle what metal?" -msgstr "" +msgstr "Przetworzyć jaki metal?" #. ~ %1$s: an item in the compactor , %2$s: desired compactor output material #: src/iexamine.cpp @@ -145464,6 +148265,8 @@ msgid "" "You realize this isn't going to work because %1$s is not made purely of " "%2$s." msgstr "" +"Orientujesz się, że to nie zadziała bo %1$s nie jest zrobione wyłącznie z " +"%2$s" #. ~ %1$s: an item in the compactor #: src/iexamine.cpp @@ -145472,6 +148275,8 @@ msgid "" "You realize this isn't going to work because %1$s has not been emptied of " "its contents." msgstr "" +"Orientujesz się, że to nie zadziała bo %1$s nie został opróżniony z " +"zawartości." #. ~ %1$s: desired compactor output material #: src/iexamine.cpp @@ -145480,19 +148285,21 @@ msgid "" "There is no %1$s in the compactor. Drop some metal items onto it and try " "again." msgstr "" +"Nie ma %1$s w zgniatarce. Wrzuć nieco metalowych przedmiotów do niej i " +"spróbuj ponownie." #. ~ %1$.3f: total mass of material in compactor, %2$s: weight units , %3$s: #. compactor output material #: src/iexamine.cpp #, c-format msgid "Compact %1$.3f %2$s of %3$s into:" -msgstr "" +msgstr "Zgnieć %1$.3f %2$s %3$s w:" #. ~ %1$d: number of, %2$s: output item #: src/iexamine.cpp #, c-format msgid "about %1$d %2$s" -msgstr "" +msgstr "około %1$d %2$s" #: src/iexamine.cpp msgid "Ka-klunk!" @@ -145501,18 +148308,19 @@ msgstr "Ka-klunk!" #: src/iexamine.cpp msgid "The compactor chews up all the items in its hopper." msgstr "" +"Zgniatarka przegryza się przez wszystkie przedmioty w swoim zbiorniku." #. ~ %1$s: compactor output material #: src/iexamine.cpp #, c-format msgid "The compactor beeps: \"No %1$s to process!\"" -msgstr "" +msgstr "Zgniatarka piszczy: \"Brak %1$sdo przetworzenia!\"" #. ~ %1$s: compactor output material #: src/iexamine.cpp #, c-format msgid "The compactor beeps: \"Insufficient %1$s!\"" -msgstr "" +msgstr "Zgniatarka piszczy: \"Niewystarczająca ilość %1$s!\"" #: src/iexamine.cpp msgid "It spits out an assortment of smaller pieces instead." @@ -145703,7 +148511,7 @@ msgstr "Glug Glug Glug" #: src/iexamine.cpp #, c-format msgid "Your cash cards now hold %s." -msgstr "" +msgstr "Twoja karty płatnicze przechowują obecnie %s." #: src/iexamine.cpp msgid "You hack the terminal and route all available fuel to your pump!" @@ -145760,12 +148568,15 @@ msgid "" " of success compared to your %3$d chance of success." " Continue with a higher risk of failure?" msgstr "" +"%1$s teraz śpi, ale ma %2$d szans na " +"sukces w porównaniu z twoimi %3$d szansami na " +"sukces. Kontynuować z wyższym ryzykiem porażki?" #. ~ %1$s is the name of the ally #: src/iexamine.cpp #, c-format msgid "%1$s will perform the operation with a %2$d chance of success." -msgstr "" +msgstr "%1$s przeprowadzi operację z %2$d szansą na sukces." #: src/iexamine.cpp msgid "No connected couches found. Operation impossible. Exiting." @@ -145809,7 +148620,7 @@ msgstr "Nie masz żadnych CBM do zainstalowania." #: src/iexamine.cpp #, c-format msgid "%1$s cannot be installed on %2$s." -msgstr "" +msgstr "%1$s nie może być zainstalowane na %2$s" #. ~ %1$s is patient name #: src/iexamine.cpp src/iuse_actor.cpp @@ -145819,7 +148630,7 @@ msgstr "Już zainstalowałeś tą bionikę." #: src/iexamine.cpp #, c-format msgid "%1$s has already installed this bionic." -msgstr "" +msgstr "%1$s już zainstalował tą bionikę." #. ~ %1$s is patient name #: src/iexamine.cpp @@ -145829,7 +148640,7 @@ msgstr "Nie masz podstawowej wersji tej bioniki by ją ulepszyć." #: src/iexamine.cpp #, c-format msgid "%1$s has no base version of this bionic to upgrade." -msgstr "" +msgstr "%1$s nie ma bazowej wersji tej bioniki do ulepszenia." #. ~ %1$s is patient name #: src/iexamine.cpp @@ -145839,14 +148650,14 @@ msgstr "Już zainstalowałeś lepszą wersję tej bioniki." #: src/iexamine.cpp #, c-format msgid "%1$s has installed a superior version of this bionic." -msgstr "" +msgstr "%1$s zainstalował lepszą wersję tej bioniki." #. ~ %1$s is installer name, %2$s is bionic CBM display name, %3$s is patient #. name #: src/iexamine.cpp #, c-format msgid "%1$s prepares to install the %2$s on %3$s." -msgstr "" +msgstr "%1$s przygotowuje do instalacji %2$s na %3$s" #. ~ %1$s is patient name #: src/iexamine.cpp @@ -145856,7 +148667,7 @@ msgstr "Nie masz żadnych zainstalowanych bionik." #: src/iexamine.cpp #, c-format msgid "%1$s doesn't have any bionics installed." -msgstr "" +msgstr "%1$s nie ma żadnych zainstalowanych bionik." #: src/iexamine.cpp msgid "Choose bionic to uninstall" @@ -146085,6 +148896,10 @@ msgstr "Jest tu wędzarnia." msgid "You inspect its contents and find: " msgstr "Sprawdzasz zawartość i znajdujesz:" +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "" + #: src/iexamine.cpp msgid "You see some smoldering embers there." msgstr "Widzisz tu tlące się niedopałki." @@ -146358,7 +149173,7 @@ msgstr "" #: src/input.cpp #, c-format msgid "New key for %s" -msgstr "" +msgstr "Nowy klawisz dla %s" #: src/input.cpp #, c-format @@ -146501,10 +149316,94 @@ msgstr "pomarańcza" msgid "black" msgstr "czarne" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks as fresh as it can be. It still has " +"%s until it spoils." +msgstr "" +"* Ta żywność wygląda na tak świeżą jak to tylko możliwe. Nadal " +"ma %s do zepsucia się." + +#: src/item.cpp +msgid "* This food looks as fresh as it can be." +msgstr "* Ta żywność wygląda na tak świeżą jak to tylko możliwe." + +#: src/item.cpp +#, c-format +msgid "" +"* This food looks old. It's just %s from becoming " +"inedible." +msgstr "" +"* Ta żywność jest stara. Pozostało tylko %s do " +"zepsucia." + +#: src/item.cpp +msgid "" +"* This food looks old. It's on the brink of becoming inedible." +msgstr "* Ta żywność jest stara. Jest na krawędzi zepsucia." + +#: src/item.cpp +msgid "" +"* This food looks fine. If you were more skilled in cooking or" +" survival, you might be able to make a better estimation." +msgstr "" +"* Ta żywność wygląda w porządku. Gdybyś był bardziej " +"uzdolnionym kucharzem lub surwiwalistą, mógłbyś dokonać lepszej oceny. " + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks quite fresh. It has %s until it" +" spoils." +msgstr "" +"* Ta żywność wygląda na nadal całkiem świeżą. Do zepsucia " +"pozostało jeszcze %s." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it is reaching its midlife. " +"There's %s before it spoils." +msgstr "" +"* Tej żywności upłynie wkrótce połowa czasu przydatności." +" Upłynie jeszcze %s zanim się zepsuje." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it has passed its midlife. " +"Edible, but will go bad in %s." +msgstr "" +"* Ta żywność ma już za sobą ponad połowę czasu " +"przydatności. Wciąż jadalna, ale zestarzeje gdy upłynie " +"%s." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it will be old soon. It has " +"%s, so if you plan to use it, it's now or never." +msgstr "" +"* Ta żywność wkrótce będzie stara. Pozostało jej %s," +" więc teraz albo nigdy jeśli planujesz jej użyć." + #: src/item.cpp msgid "Category: " msgstr "Kategoria: " +#: src/item.cpp +msgid "$" +msgstr "" + #: src/item.cpp msgid "Price: " msgstr "Cena: " @@ -146673,52 +149572,11 @@ msgstr "" #: src/item.cpp #, c-format msgid "" -"* This food is perishable, and takes %s to " -"rot from full freshness, at room temperature." +"* This food is perishable, and at room temperature has an" +" estimated nominal shelf life of %s." msgstr "" "* Ta żywność jest nietrwała, i w temperaturze pokojowej " -"zepsuje się w ciągu %s licząc od pełnej świeżości." - -#: src/item.cpp -msgid "* This food looks as fresh as it can be." -msgstr "* Ta żywność wygląda na tak świeżą jak to tylko możliwe." - -#: src/item.cpp -msgid "" -"* This food looks still quite fresh. It's far from becoming " -"old." -msgstr "" -"* Ta żywność jest nadal całkiem świeża. Daleko jej do starości." - -#: src/item.cpp -msgid "" -"* This food looks like it is reaching its midlife. It has" -" some time ahead before spoiling." -msgstr "" -"* Tej żywności upłynie wkrótce połowa czasu przydatności." -" Trochę czasu upłynie zanim się zepsuje." - -#: src/item.cpp -msgid "" -"* This food looks like it has passed its midlife. Edible," -" but will go old sooner rather then later." -msgstr "" -"* Ta żywność ma już za sobą ponad połowę czasu " -"przydatności. Wciąż jadalna, ale zestarzeje się raczej prędzej niż" -" później." - -#: src/item.cpp -msgid "" -"* This food looks like it will be old soon. It's now or never, if" -" you plan to use it." -msgstr "" -"* Ta żywność wkrótce będzie stara. Teraz albo nigdy, jeśli " -"planujesz jej użyć." - -#: src/item.cpp -msgid "" -"* This food looks old. It's on a brink of becoming inedible." -msgstr "* Ta żywność jest stara. Jest na krawędzi zepsucia." +"ma szacunkową trwałość %s." #: src/item.cpp msgid "" @@ -146766,10 +149624,6 @@ msgstr "" "Ta żywność zaczęła się psuć. Zjedenie jej byłoby " "bardzo złym pomysłem." -#: src/item.cpp -msgid "Capacity: " -msgstr "Pojemność: " - #: src/item.cpp #, c-format msgid " round of %s" @@ -146779,6 +149633,10 @@ msgstr[1] " sztuk %s" msgstr[2] " sztuk %s" msgstr[3] " sztuk %s" +#: src/item.cpp +msgid "Capacity: " +msgstr "Pojemność: " + #: src/item.cpp msgid " per round" msgstr " na sztukę" @@ -146967,6 +149825,18 @@ msgstr "Modyfikator obsługi: " msgid "Ammo: %s" msgstr "Amunicja: %s" +#: src/item.cpp +msgid "%" +msgstr "%" + +#: src/item.cpp +msgid "Reload modifier: " +msgstr "Modyfikator przeładowania:" + +#: src/item.cpp +msgid "Minimum strength required modifier: " +msgstr "Modyfikator minimalnej potrzebnej siły:" + #: src/item.cpp msgid "Used on: " msgstr "Używany na: " @@ -147101,7 +149971,7 @@ msgstr " (pasuje)" #: src/item.cpp msgid "Encumbrance when full: " -msgstr "" +msgstr "Skrępowanie gdy pełny:" #: src/item.cpp msgid "Storage: " @@ -147351,17 +150221,23 @@ msgstr "* Ten element ubioru może zostać dopasowany." msgid "" "* These clothes are too large but can be undersized." msgstr "" +"* To ubranie jest zbyt duże ale może być " +"pomniejszone." #: src/item.cpp msgid "" "* These clothes are undersized enough to accommodate " "abnormally small mutated anatomy." msgstr "" +"To ubranie jest małego rozmiaru i może pomieścić " +"nienaturalnie małą zmutowaną anatomię." #: src/item.cpp msgid "" "* These clothes are undersized but can be refitted." msgstr "" +"* To ubranie jest małego rozmiaru ale może zostać " +"powiększone." #: src/item.cpp msgid "* This item can be worn on either side of the body." @@ -147535,7 +150411,7 @@ msgstr "Mody: " #: src/item.cpp msgid "Contents of this item:" -msgstr "" +msgstr "Zawartość tego przedmiotu:" #: src/item.cpp msgid "You know dozens of things you could craft with it." @@ -147648,10 +150524,10 @@ msgstr "%s z %s" msgctxt "item name" msgid "%s with %zd item" msgid_plural "%s with %zd items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%s z %zd przedmiotem" +msgstr[1] "%s z %zd przedmiotami" +msgstr[2] "%s z %zd przedmiotami" +msgstr[3] "%s z %zd przedmiotami" #: src/item.cpp msgid " (poisonous)" @@ -148738,7 +151614,7 @@ msgstr "Nie widzisz by szyć!" #: src/iuse.cpp msgid "Enhance which clothing?" -msgstr "" +msgstr "Ulepsz które ubranie?" #: src/iuse.cpp src/iuse.cpp src/iuse_actor.cpp msgid "You do not have that item!" @@ -149123,7 +151999,7 @@ msgstr "Nie mu tu czego wyważać." #: src/iuse.cpp msgid "" "You attempt to pry open your wallet but alas. You are just too miserly." -msgstr "" +msgstr "Próbujesz wyważyć swój portfel ale niestety. Jesteś zbyt biedny." #: src/iuse.cpp msgid "You pry open the door." @@ -149382,7 +152258,7 @@ msgstr "Nie możesz tego przewiercić." #: src/iuse.cpp msgid "There's a vehicle in the way!" -msgstr "" +msgstr "Na drodze stoi pojazd!" #: src/iuse.cpp msgid "Mine where?" @@ -149393,6 +152269,8 @@ msgid "" "Mining the depths of your experience, you realize that it's best not to dig " "yourself into a hole. You stop digging." msgstr "" +"Przekopując głębie swojej pamięci spostrzegasz że lepiej nie wkopać się w " +"dziurę. Przestajesz kopać." #: src/iuse.cpp msgid "You can't mine there." @@ -149731,8 +152609,11 @@ msgid "You cannot use the %1$s with another of it's kind." msgstr "Nie możesz używać %1$s z innym tego rodzaju." #: src/iuse.cpp -msgid "You unfold solar array from the pack and plug it in." -msgstr "Rozkładasz ogniwa słoneczne z plecaka i podłączasz je." +msgid "" +"You unfold solar array from the pack. You still need to connect it with a " +"cable." +msgstr "" +"Rozkładasz ogniwa słoneczne z plecaka. Nadal musisz podpiąć je kablem." #: src/iuse.cpp msgid "You fold your portable solar array into the pack." @@ -149887,10 +152768,6 @@ msgstr "Wyprodukowałeś %d drzazg." msgid "You waste a lot of the wood." msgstr "Marnujesz masę drewna." -#: src/iuse.cpp src/iuse_actor.cpp -msgid "Cut up what?" -msgstr "Pociąć co?" - #: src/iuse.cpp msgid "Chop down which tree?" msgstr "Zetnij które drzewo?" @@ -151161,14 +154038,26 @@ msgstr "" "Twoje grzebanie w bebechach niemal nie psuje multi-kucharza. Szczęśliwie " "nadal działa, ale lepiej będzie przestać z nim kombinować." -#: src/iuse.cpp -msgid "Attach cable to vehicle where?" -msgstr "Podłączyć kable do pojazdu gdzie?" - #: src/iuse.cpp msgid "Using cable:" msgstr "Używanie kabli:" +#: src/iuse.cpp +msgid "Attach cable to vehicle" +msgstr "Podłącz kabel do pojazdu" + +#: src/iuse.cpp +msgid "Attach cable to self" +msgstr "Podłącz kabel do siebie" + +#: src/iuse.cpp +msgid "Attach cable to solar pack" +msgstr "Podłącz kabel do plecaka solarnego" + +#: src/iuse.cpp +msgid "Attach cable to vehicle where?" +msgstr "Podłączyć kable do pojazdu gdzie?" + #: src/iuse.cpp msgid "Attach loose end of the cable" msgstr "Przyłącz wolny koniec kabla" @@ -151350,6 +154239,105 @@ msgid "" "work." msgstr "Wzięcie więcej magnezu nie pomoże. Musisz pójść spać by zadziałał." +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "" + +#: src/iuse.cpp +msgid "Heads!" +msgstr "" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "" + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "" + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "" + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "" + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "" + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "" + +#: src/iuse.cpp +msgid "Most likely." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "" + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "" + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "" + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "" + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "" + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "" + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "" + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "" + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "" + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "" + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "" + #: src/iuse_actor.cpp #, c-format msgid "The %s is empty!" @@ -151886,27 +154874,27 @@ msgstr "Użyj %s" #: src/iuse_actor.cpp msgid "Can be activated to store a suitable item." msgid_plural "Can be activated to store suitable items." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Może być aktywowany by przechować właściwy przedmiot." +msgstr[1] "Może być aktywowany by przechować właściwe przedmioty." +msgstr[2] "Może być aktywowany by przechować właściwe przedmioty." +msgstr[3] "Może być aktywowany by przechować właściwe przedmioty." #: src/iuse_actor.cpp msgid "Num items: " -msgstr "" +msgstr "Liczba rzeczy:" #: src/iuse_actor.cpp msgid "Item volume: Min: " -msgstr "" +msgstr "Objętość rzeczy: Min:" #: src/iuse_actor.cpp msgid " Max: " -msgstr "" +msgstr " Max:" #: src/iuse_actor.cpp #, c-format msgid " %s" -msgstr "" +msgstr " %s" #: src/iuse_actor.cpp #, c-format @@ -152111,12 +155099,12 @@ msgstr "Ta noga jest złamana. Wymaga interwencji chirurgicznej lub szyn." #: src/iuse_actor.cpp msgid "Select a body part for: " -msgstr "" +msgstr "Wybierz część ciała dla: " #: src/iuse_actor.cpp #, c-format msgid "Select a body part of %s for %s:" -msgstr "" +msgstr "Wybierz część ciała %s dla %s:" #: src/iuse_actor.cpp msgid "Base healing: " @@ -152160,15 +155148,15 @@ msgstr "Szansa na leczenie (procent):" #: src/iuse_actor.cpp msgid "* Bleeding:" -msgstr "" +msgstr "* Krwawi:" #: src/iuse_actor.cpp msgid "* Bite:" -msgstr "" +msgstr "* Ugryzienie:" #: src/iuse_actor.cpp msgid "* Infection:" -msgstr "" +msgstr "* Infekcja:" #: src/iuse_actor.cpp msgid "Moves to use:" @@ -154024,17 +157012,236 @@ msgstr "Pobierz Dane Mapy" msgid "Divert power to elevator" msgstr "Przekieruj mod do windy" -#: src/mapgen_functions.cpp -msgid "PolCom OS v1.47" -msgstr "PolCom OS v1.47" +#: src/mapgen_functions.cpp +msgid "PolCom OS v1.47" +msgstr "PolCom OS v1.47" + +#: src/mapgen_functions.cpp +msgid "Open Supply Room" +msgstr "Otwórz Pomieszczenie z Zapasami" + +#: src/mapgen_functions.cpp +msgid "Open Evidence Locker" +msgstr "Otwórz Schowek z Dowodami" + +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "" + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "" + +#: src/martialarts.cpp +msgid "activate" +msgstr "aktywuj" + +#: src/martialarts.cpp +msgid "be used" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "" + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "" + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind " +"it" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" +msgstr "" + +#: src/martialarts.cpp +msgid "Passive" +msgstr "" + +#: src/martialarts.cpp +msgid "Hit" +msgstr "Trafienie" + +#: src/martialarts.cpp +msgid "Get hit" +msgstr "" + +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "" -#: src/mapgen_functions.cpp -msgid "Open Supply Room" -msgstr "Otwórz Pomieszczenie z Zapasami" +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: src/mapgen_functions.cpp -msgid "Open Evidence Locker" -msgstr "Otwórz Schowek z Dowodami" +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr "" #: src/material.cpp msgid "damages" @@ -154692,10 +157899,6 @@ msgstr "%s." msgid "Outpost Missions" msgstr "Misje Posterunku" -#: src/mission_companion.cpp -msgid "Base Missions" -msgstr "Misje Bazy" - #: src/mission_companion.cpp msgid "Junk Shop Missions" msgstr "Misje Złomiarzy" @@ -154748,16 +157951,6 @@ msgstr "" msgid " hours] \n" msgstr "godzin]\n" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?" -msgstr "" -"\n" -"\n" -"Czy chcesz przywrócić sojuszników z powrotem do twojej grupy?" - #: src/mission_companion.cpp msgid "Retrieve Scavenging Patrol" msgstr "Wycofaj Patrol Zbieraczy" @@ -154870,543 +158063,6 @@ msgstr "" msgid "Recover Ally from Carpentry Work" msgstr "Wycofaj Sojusznika z Prac Stolarskich" -#: src/mission_companion.cpp -msgid "Upgrade Camp" -msgstr "Ulepsz Obóz" - -#: src/mission_companion.cpp -msgid "Gather Materials" -msgstr "Zbieraj Materiały" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" -" \n" -"Effects:\n" -"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" -" \n" -"Must have enjoyability >= -6\n" -"Perishable food liquidated at penalty depending on upgrades and rot time:\n" -"> Rotten: 0%%\n" -"> Rots in < 2 days: 60%%\n" -"> Rots in < 5 days: 80%%\n" -" \n" -"Total faction food stock: %d kcal or %d day's rations" -msgstr "" - -#: src/mission_companion.cpp -msgid "Distribute Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" -" \n" -"Effects:\n" -"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" -"> Items sitting on any type of furniture will not be moved.\n" -"> Items that are not listed in one of the categories are defaulted to the tools group." -msgstr "" - -#: src/mission_companion.cpp -msgid "Reset Sort Points" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to gather light brush and heavy sticks.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -"> heavy sticks\n" -"> withered plants\n" -"> splintered wood\n" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Collect Firewood" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to do low level chores and sort supplies.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" -"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Menial Labor" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours \n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Expand Base" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to a nearby forest to cut logs.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: 1 \n" -"Effects:\n" -"> 50%% of trees/trunks at the forest position will be cut down.\n" -"> 50%% of total material will be brought back.\n" -"> Repeatable with diminishing returns.\n" -" \n" -"Risk: Low-Medium\n" -"Time: 6 Hour Base + Travel Time + Cutting Time\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Cut Logs" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Good for setting up resupply or contingency points.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward.\n" -" \n" -"Risk: Medium\n" -"Time: 6 Hour Construction + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Setup Hide Site" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Push gear out to a hide site or bring gear back from one.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 1\n" -"Effects:\n" -"> Good for returning equipment you left in the hide site shelter.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward or back.\n" -" \n" -"Risk: Medium\n" -"Time: 1 Hour Base + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Relay Hide Site" -msgstr "" - -#: src/mission_companion.cpp -msgid "Construct Map Fortifications" -msgstr "" - -#: src/mission_companion.cpp -msgid "Construct Spiked Trench" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recruit Companions" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Select checkpoints to customize path.\n" -"> Reveals terrain around the path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Scout Mission" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 4\n" -"Effects:\n" -"> Pulls creatures encountered into combat instead of fleeing.\n" -"> Select checkpoints to customize path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: Very High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Combat Patrol" -msgstr "" - -#: src/mission_companion.cpp -msgid " Expansion Upgrade" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Have a companion attempt to completely dissemble a vehicle into components.\n" -" \n" -"Skill used: mechanics\n" -"Difficulty: 2 \n" -"Effects:\n" -"> Removed parts placed on the furniture in the garage.\n" -"> Skill plays a huge role to determine what is salvaged.\n" -" \n" -"Risk: None\n" -"Time: Skill Based \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Chop Shop" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plow any spaces that have reverted to dirt or grass.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Restores only the plots created in the last expansion upgrade.\n" -"> Does not damage existing crops.\n" -" \n" -"Risk: None\n" -"Time: 5 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Plow Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plant designated seeds in the spaces that have already been tilled.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose which seed type or all of your seeds.\n" -"> Stops when out of seeds or planting locations.\n" -"> Will plant in ALL dirt mounds in the expansion.\n" -" \n" -"Risk: None\n" -"Time: 1 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Plant Fields" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Harvest any plants that are ripe and bring the produce back.\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Will dump all harvesting products onto your location.\n" -" \n" -"Risk: None\n" -"Time: 3 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" - -#: src/mission_companion.cpp -msgid " Harvest Fields" -msgstr "Zbierz Plon z Pól" - -#: src/mission_companion.cpp -msgid "Working to expand your camp!\n" -msgstr "Pracują nad poszerzeniem twojego obozu!\n" - -#: src/mission_companion.cpp -msgid " hours left] \n" -msgstr "godzin pozostało]\n" - -#: src/mission_companion.cpp -msgid " minutes left] \n" -msgstr "minut pozostało]\n" - -#: src/mission_companion.cpp -msgid " [DONE]\n" -msgstr "[GOTOWE]\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Upgrading" -msgstr "Wycofaj Sojusznika z Ulepszania" - -#: src/mission_companion.cpp -msgid "Working to upgrade your expansions!\n" -msgstr "Pracują nad ulepszeniem infrastruktury!\n" - -#: src/mission_companion.cpp -msgid " Expansion" -msgstr "Rozszerzenie" - -#: src/mission_companion.cpp -msgid "Recover Ally, " -msgstr "Wycofaj Sojusznika," - -#: src/mission_companion.cpp -msgid "Working at the chop shop...\n" -msgstr "Pracuje w dziupli samochodowej...\n" - -#: src/mission_companion.cpp -msgid "/120 hours] \n" -msgstr "/120 godzin]\n" - -#: src/mission_companion.cpp -msgid " (Finish) Chop Shop" -msgstr "(Ukończone) Dziupla Samochodowa" - -#: src/mission_companion.cpp -msgid "Working in your kitchen!\n" -msgstr "Pracują w twojej kuchni!\n" - -#: src/mission_companion.cpp -msgid " [ALMOST DONE]\n" -msgstr "[PRAWIE GOTOWE]\n" - -#: src/mission_companion.cpp -msgid " (Finish) Cooking" -msgstr "(Gotowe) Gotowanie" - -#: src/mission_companion.cpp -msgid "Working in your blacksmith shop!\n" -msgstr "Pracują w twojej kuźni!\n" - -#: src/mission_companion.cpp -msgid " (Finish) Smithing" -msgstr "(Gotowe) Kowalstwo" - -#: src/mission_companion.cpp -msgid "Working to plow your fields!\n" -msgstr "Pracują w polu!\n" - -#: src/mission_companion.cpp -msgid "/~48 hours] \n" -msgstr "/~48 godzin]\n" - -#: src/mission_companion.cpp -msgid " (Finish) Plow Fields" -msgstr "(Gotowe) Zaoraj Pola" - -#: src/mission_companion.cpp -msgid "Working to plant your fields!\n" -msgstr "Obsiewają pola!\n" - -#: src/mission_companion.cpp -msgid "/4 hours] \n" -msgstr "/4 godziny]\n" - -#: src/mission_companion.cpp -msgid " (Finish) Plant Fields" -msgstr "(Gotowe) Obsiej Pola" - -#: src/mission_companion.cpp -msgid "Working to harvest your fields!\n" -msgstr "Zbierają plon z pól!\n" - -#: src/mission_companion.cpp -msgid "/~10 hours] \n" -msgstr "/~10 godzin]\n" - -#: src/mission_companion.cpp -msgid " (Finish) Harvest Fields" -msgstr "(Gotowe) Zbieraj Plony" - -#: src/mission_companion.cpp -msgid "Working on your farm!\n" -msgstr "Pracują na farmie!\n" - -#: src/mission_companion.cpp -msgid " (Finish) Crafting" -msgstr "(Gotowe) Wytwarzanie" - -#: src/mission_companion.cpp -msgid "Busy crafting!\n" -msgstr "Zajęci wytwarzaniem!\n" - -#: src/mission_companion.cpp -msgid "Searching for materials to upgrade the camp.\n" -msgstr "Poszukują materiałów do rozbudowy obozu.\n" - -#: src/mission_companion.cpp -msgid "/3 hours] \n" -msgstr "/3 godziny]\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Gathering" -msgstr "Wycofaj Sojusznika ze Zbierania" - -#: src/mission_companion.cpp -msgid "Searching for firewood.\n" -msgstr "Poszukują drewna opałowego.\n" - -#: src/mission_companion.cpp -msgid "Recover Firewood Gatherers" -msgstr "Wycofaj Poszukiwaczy Drewna" - -#: src/mission_companion.cpp -msgid "Performing menial labor...\n" -msgstr "Wykonują prace fizyczne...\n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?\n" -msgstr "" -"\n" -"\n" -"Czy chcesz przywrócić sojuszników z powrotem do twojej grupy?\n" - -#: src/mission_companion.cpp -msgid "Recover Menial Laborer" -msgstr "Wycofaj Sojusznika z Prac Fizycznych" - -#: src/mission_companion.cpp -msgid "Surveying for expansion...\n" -msgstr "Wyznacza teren pod rozbudowę...\n" - -#: src/mission_companion.cpp -msgid "Recover Surveyor" -msgstr "Wycofaj Mierniczego" - -#: src/mission_companion.cpp -msgid "Cutting logs in the woods...\n" -msgstr "Pracują jako drwale w lesie...\n" - -#: src/mission_companion.cpp -msgid "Recover Log Cutter" -msgstr "Wycofaj Drwala" - -#: src/mission_companion.cpp -msgid "Setting up a hide site...\n" -msgstr "Ustawianie miejsca ukrycia...\n" - -#: src/mission_companion.cpp -msgid "Recover Hide Setup" -msgstr "Wycofaj Ustawienie Miejsca Ukrycia" - -#: src/mission_companion.cpp -msgid "Constructing fortifications...\n" -msgstr "Konstruują fortyfikacje...\n" - -#: src/mission_companion.cpp -msgid "Finish Map Fortifications" -msgstr "Ukończ Mapowanie Fortyfikacji" - -#: src/mission_companion.cpp -msgid "Searching for recruits.\n" -msgstr "Poszukują rekrutów.\n" - -#: src/mission_companion.cpp -msgid "Recover Recruiter" -msgstr "Wycofaj Rekrutera" - -#: src/mission_companion.cpp -msgid "Scouting the region.\n" -msgstr "Na misji zwiadowczej.\n" - -#: src/mission_companion.cpp -msgid "Recover Scout" -msgstr "Wycofaj Zwiadowcę" - -#: src/mission_companion.cpp -msgid "Patrolling the region.\n" -msgstr "Na misji patrolowej.\n" - -#: src/mission_companion.cpp -msgid "Recover Combat Patrol" -msgstr "Wycofaj Patrol Bojowy" - #: src/mission_companion.cpp msgid "" "Cost: $1000\n" @@ -155648,11 +158304,11 @@ msgstr "" #: src/mission_companion.cpp msgid "Begin Commune-Refugee Center Run" -msgstr "" +msgstr "Załóż gminę-Centrum Uchodźców" #: src/mission_companion.cpp msgid "Recover Commune-Refugee Center" -msgstr "" +msgstr "Odzyskaj Gminę Centrum Uchodźców" #: src/mission_companion.cpp msgid "There are no missions at this colony. Press Spacebar..." @@ -155674,243 +158330,6 @@ msgstr "udaje się na wypad zbieracki..." msgid "departs to work as a laborer..." msgstr "udaje się do pracy jako robotnik..." -#: src/mission_companion.cpp -msgid "You don't have enough food stored to feed your companion." -msgstr "" -"Nie masz wystarczająco zmagazynowanej żywności by nakarmić swojego " -"towarzysza." - -#: src/mission_companion.cpp -msgid "begins to upgrade the camp..." -msgstr "rozpoczyna ulepszać obóz..." - -#: src/mission_companion.cpp -msgid "You already have a companion upgrading the camp." -msgstr "Jeden z towarzyszy już ulepsza obóz." - -#: src/mission_companion.cpp -msgid "You don't have the materials for the upgrade." -msgstr "Nie masz materiałów do rozbudowy." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your garage..." -msgstr "%s powraca z twojego garażu..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your kitchen with something..." -msgstr "%s wraca z twojej kuchni z czymś..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your blacksmith shop with something..." -msgstr "%s wraca z twojej kuźni z czymś..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your farm with something..." -msgstr "%s wraca z twojej farmy z czymś..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns to you with something..." -msgstr "%s wraca do ciebie z czymś..." - -#: src/mission_companion.cpp -msgid "departs to search for materials..." -msgstr "oddala się by szukać materiałów..." - -#: src/mission_companion.cpp -msgid "There are too many companions working on this mission!" -msgstr "Zbyt wielu towarzyszy pracuje w tej misji!" - -#: src/mission_companion.cpp -msgid "departs to search for firewood..." -msgstr "oddala się by szukać drewna opałowego..." - -#: src/mission_companion.cpp -msgid "departs to dig ditches and scrub toilets..." -msgstr "oddala się by kopać rowy i szorować toalety..." - -#: src/mission_companion.cpp -msgid "departs to survey land..." -msgstr "oddala się mierzyć działkę gruntu..." - -#: src/mission_companion.cpp -msgid "You have already selected a surveyor!" -msgstr "Już wyznaczyłeś mierniczego!" - -#: src/mission_companion.cpp -msgid "begins to upgrade the expansion..." -msgstr "rozpoczyna ulepszać infrastrukturę..." - -#: src/mission_companion.cpp -msgid "You already have a worker upgrading that expansion!" -msgstr "Już masz pracownika pracującego nad ulepszeniem!" - -#: src/mission_companion.cpp -msgid "Forests and swamps are the only valid cutting locations." -msgstr "" -"Lasy i mokradła są jedynymi dostępnymi miejscami gdzie można dokonywać " -"wycinki." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Trip Estimate:\n" -"%s" -msgstr "" -"Szacunkowy Czas Podróży:\n" -"%s" - -#: src/mission_companion.cpp -msgid "departs to cut logs..." -msgstr "oddala się by ścinać drzewa..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working in the woods..." -msgstr "%s wraca z pracy w lesie..." - -#: src/mission_companion.cpp -msgid "Forests, swamps, and fields are valid hide site locations." -msgstr "" -"Lasy i mokradła są jedynymi dostępnymi miejscami gdzie można umieścić " -"miejsca ukrycia." - -#: src/mission_companion.cpp -msgid "departs to build a hide site..." -msgstr "oddala się by wybudować miejsce ukrycia..." - -#: src/mission_companion.cpp -msgid "You need equipment to setup a hide site..." -msgstr "Potrzebujesz sprzętu by zorganizować miejsce ukrycia..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working on the hide site..." -msgstr "%s wraca z pracy przy miejscu ukrycia..." - -#: src/mission_companion.cpp -msgid "You must select an existing hide site." -msgstr "Musisz wybrać istniejące miejsce ukrycia." - -#: src/mission_companion.cpp -msgid "Bring gear back?" -msgstr "Sprowadzić sprzęt z powrotem?" - -#: src/mission_companion.cpp -msgid "departs for the hide site..." -msgstr "oddala się do miejsca ukrycia..." - -#: src/mission_companion.cpp -msgid "You need equipment to transport between the hide site..." -msgstr "Potrzebujesz sprzętu do transportu pomiędzy miejscem ukrycia..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from shuttling gear between the hide site..." -msgstr "%s wraca z przerzutu sprzętu pomiędzy miejscem ukrycia..." - -#: src/mission_companion.cpp -msgid "" -"Select a start and end point. Line must be straight. Fields, forests, and " -"swamps are valid fortification locations. In addition to existing " -"fortification constructions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an end point." -msgstr "" - -#: src/mission_companion.cpp -msgid "Invalid terrain in construction path." -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the material to build the fortification." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for recruits..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Select checkpoints until you reach maximum range or select the last point " -"again to end." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs on patrol..." -msgstr "udaje się na patrol..." - -#: src/mission_companion.cpp -msgid "Your companion hit a river and didn't know how to swim..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Your companion hit a river and didn't know how to swim well enough to " -"cross..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't return from patrol..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from patrol..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that garage." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins plowing the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone plowing that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "You have no additional seeds to give your companions..." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins planting the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Which seeds do you wish to have planted?" -msgstr "Jakie nasiona chcesz by były posiane na polu?" - -#: src/mission_companion.cpp -msgid "You already have someone planting that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to harvest the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone harvesting that field." -msgstr "" - #: src/mission_companion.cpp msgid "departs to work as a carpenter..." msgstr "udaje się do pracy jako stolarz..." @@ -156127,243 +158546,6 @@ msgstr "" "%s ma większe zaufanie do twoich towarzyszy i jest gotów dopuścić ich do " "bardziej złożonych zadań." -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"%s\n" -" \n" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s \n" -"Risk: None\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes: \n" -"Send a companion to gather materials for the next camp upgrade.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: " -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from upgrading the camp having earned a bit of experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "While gathering supplies, a silent specter approaches %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s notices the antlered horror and slips away before it gets too close." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The survivor approaches %s asking for directions." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Fearful that he may be an agent of some hostile faction, %s doesn't mention " -"the camp." -msgstr "" - -#: src/mission_companion.cpp -msgid "The two part on friendly terms and the survivor isn't seen again." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't detect the ambush until it was too late!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The bull moose charged %s from the tree line..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Despite being caught off guard %s was able to run away until the moose gave " -"up pursuit." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The jabberwock grabbed %s by the arm from behind and began to scream." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Terrified, %s spun around and delivered a massive kick to the creature's " -"torso..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Collapsing into a pile of gore, %s walked away unscathed..." -msgstr "" - -#: src/mission_companion.cpp -msgid "(Sounds like bullshit, you wonder what really happened.)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s turned to find the hideous black eyes of a giant wasp staring back from " -"only a few feet away..." -msgstr "" - -#: src/mission_companion.cpp -msgid "The screams were terrifying, there was nothing anyone could do." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Pieces of %s were found strewn across a few bushes." -msgstr "" - -#: src/mission_companion.cpp -msgid "(You wonder if your companions are fit to work on their own...)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from gathering materials carrying supplies and has a bit more " -"experience..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Your companion seems disappointed that your pantry is empty..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -" Chopping this vehicle:\n" -"%s" -msgstr "" - -#: src/mission_companion.cpp -msgid "begins working in the garage..." -msgstr "rozpoczyna pracę w garażu..." - -#: src/mission_companion.cpp -msgid "No seeds to plant!" -msgstr "Brak nasion do zasadzenia!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working your fields..." -msgstr "%s wraca z pracy w polu..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from doing the dirty work to keep the camp running..." -msgstr "%s wraca z brudnej pracy, dzięki której obóz funkcjonuje..." - -#: src/mission_companion.cpp -msgid "Sorting points have changed, forcing reset." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an expansion:" -msgstr "" - -#: src/mission_companion.cpp -msgid "You choose to wait..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from surveying for the expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "No items are located at the drop point..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "You distribute %d kcal worth of food to your companions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Harvestable: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Ready for Planting: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Needs Plowing: " -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Name: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "---- Engines ----\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Engine: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Status: %24d%%\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Fuel: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "---- Fuel Storage & Battery ----\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Estimated Chop Time: 5 Days\n" -msgstr "" - #: src/mission_companion.cpp #, c-format msgid "While %s was framing a building one of the walls began to collapse..." @@ -156477,7 +158659,7 @@ msgstr "" #: src/mission_companion.cpp #, c-format msgid "Engagement between %d members of %s %s and %d %s%s!" -msgstr "" +msgstr "Starcie pomiędzy %d członkami %s %s i %d %s %s!" #: src/mission_companion.cpp #, c-format @@ -156491,11 +158673,11 @@ msgstr "Siły %s wycofują się z walki!" #: src/mission_companion.cpp msgid "The monsters are destroyed!" -msgstr "" +msgstr "Potwory zostają zniszczone!" #: src/mission_companion.cpp msgid "The monsters disengage!" -msgstr "" +msgstr "Potwory zaprzestają walki!" #: src/mission_companion.cpp #, c-format @@ -156510,14 +158692,15 @@ msgstr "Nie masz towarzyszy których mógłbyś wysłać..." msgid "" "Who do you want to send? [ COMBAT : SURVIVAL : INDUSTRY ]" msgstr "" +"Kogo chcesz wysłać? [ WALKA : PRZETRWANIE : PRZEMYSŁ ]" #: src/mission_companion.cpp msgid "You choose to send no one..." -msgstr "" +msgstr "Decydujesz nie wysyłać nikogo..." #: src/mission_companion.cpp msgid "The companion you selected doesn't have the skills!" -msgstr "" +msgstr "Towarzysz, którego wybrałeś nie ma umiejętności!" #: src/mission_companion.cpp msgid "You don't have any companions ready to return..." @@ -156531,385 +158714,9 @@ msgstr "Kto ma wrócić?" msgid "No one returns to your party..." msgstr "Nikt nie wraca do twojej drużyny..." -#: src/mission_companion.cpp -msgid "MAIN" -msgstr "GŁÓWNY" - -#: src/mission_companion.cpp -msgid " [N] " -msgstr "[PN]" - -#: src/mission_companion.cpp -msgid " [NE] " -msgstr "[PNW]" - -#: src/mission_companion.cpp -msgid " [E] " -msgstr "[W]" - -#: src/mission_companion.cpp -msgid " [SE] " -msgstr "[PDW]" - -#: src/mission_companion.cpp -msgid " [S] " -msgstr "[PD]" - -#: src/mission_companion.cpp -msgid " [SW] " -msgstr "[PDZ]" - -#: src/mission_companion.cpp -msgid " [W] " -msgstr "[Z]" - -#: src/mission_companion.cpp -msgid " [NW] " -msgstr "[PN]" - -#: src/mission_companion.cpp -msgid "Farm Expansion" -msgstr "Rozbudowa Farmy" - -#: src/mission_companion.cpp -msgid "Garage Expansion" -msgstr "Rozbudowa Garażu" - -#: src/mission_companion.cpp -msgid "Kitchen Expansion" -msgstr "Rozbudowa Kuchni" - -#: src/mission_companion.cpp -msgid "Blacksmith Expansion" -msgstr "Rozbudowa Kuźni" - -#: src/mission_companion.cpp -msgid "Empty Expansion" -msgstr "Puste Rozszerzenie" - -#: src/mission_companion.cpp -#, c-format -msgid "Select a location between %d and %d tiles away." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"You must select a target between %d and %d range from the base. Range: %d" -msgstr "" - -#: src/mission_companion.cpp -msgid "You must be able to see the target that you select." -msgstr "" - -#: src/mission_companion.cpp -msgid "Do you want to bounce off this location to extend range?" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15.2f (km)\n" -msgstr ">Odległość:%15.2f (km)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">One Way: %15d (trips)\n" -msgstr ">Jednokierunkowa: %15d (wypraw)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15.2f (km)\n" -msgstr ">Obszar pokrycia: %15.2f (km)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15d (m)\n" -msgstr ">Odległość:%15d (m)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15d (m)\n" -msgstr ">Obszar pokrycia: %15d (m)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Travel: %15d (hours)\n" -msgstr ">Podróż: %15d (godzin)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Working: %15d (hours)\n" -msgstr ">Praca: %15d (godzin)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (days)\n" -msgstr "Razem: %15d (dni)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (hours)\n" -msgstr "Razem: %15d (godzin)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (minutes)\n" -msgstr "Razem: %15d (minut)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Food: %15d (kcal)\n" -" \n" -msgstr "" -"Żywność: %15d (kcal)\n" -" \n" - -#: src/mission_companion.cpp -msgid "food for you" -msgstr "żywność dla ciebie" - -#: src/mission_companion.cpp -msgid "food for companions" -msgstr "żywność dla towarzyszy" - -#: src/mission_companion.cpp -msgid "weapons" -msgstr "broń" - -#: src/mission_companion.cpp -msgid "clothing" -msgstr "ubiory" - -#: src/mission_companion.cpp -msgid "bionics" -msgstr "bioniki" - -#: src/mission_companion.cpp -msgid "all kinds of tools" -msgstr "różne rodzaje narzędzi" - -#: src/mission_companion.cpp -msgid "wood of various sorts" -msgstr "drewno różnego sortu" - -#: src/mission_companion.cpp -msgid "trash and rotting food" -msgstr "śmieci i gnijąca żywność" - -#: src/mission_companion.cpp -msgid "books" -msgstr "książki" - -#: src/mission_companion.cpp -msgid "medication" -msgstr "medykamenty" - -#: src/mission_companion.cpp -msgid "ammo" -msgstr "amunicja" - -#: src/mission_companion.cpp -#, c-format -msgid "Reset point: %s?" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -" Items New Point Old Point\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -" Save Points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "Revert to default points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the materials to craft that" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Batch crafting %s [MAX: %d]: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Your batch is too large!" -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to work..." -msgstr "rozpoczyna pracę..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" -" \n" -"Skill used: speech\n" -"Difficulty: 2 \n" -"Base Score: +%3d%%\n" -"> Expansion Bonus: +%3d%%\n" -"> Faction Bonus: +%3d%%\n" -"> Special Bonus: +%3d%%\n" -" \n" -"Total: Skill +%3d%%\n" -" \n" -"Risk: High\n" -"Time: 4 Days\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from searching for recruits with a bit more experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s encountered %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't find anyone to recruit..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s convinced %s to hear a recruitment offer from you..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested in anything %s had to offer..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"NPC Overview:\n" -" \n" -msgstr "" -"Przegląd NPC:\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Name: %20s\n" -" \n" -msgstr "" -"Imię: %20s\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "Strength: %10d\n" -msgstr "Siła: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Dexterity: %10d\n" -msgstr "Zręczność: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Intelligence: %10d\n" -msgstr "Inteligencja: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Perception: %10d\n" -" \n" -msgstr "" -"Percepcja: %10d\n" -" \n" - -#: src/mission_companion.cpp -msgid "Top 3 Skills:\n" -msgstr "Top 3 Umiejętności:\n" - -#: src/mission_companion.cpp -msgid "Asking for:\n" -msgstr "Prosi o:\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"> Food: %10d days\n" -" \n" -msgstr "" -"> Jedzenie: %10d dni\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Faction Food:%9d days\n" -" \n" -msgstr "" -"Jedzenie Frakcji:%9d dni\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Recruit Chance: %10d%%\n" -" \n" -msgstr "" -"Szansa Werbunku: %10d%%\n" -" \n" - -#: src/mission_companion.cpp -msgid "Select an option:" -msgstr "Wybierz opcję:" - -#: src/mission_companion.cpp -msgid "Increase Food" -msgstr "Zwiększ Jedzenie" - -#: src/mission_companion.cpp -msgid "Decrease Food" -msgstr "Zmniejsz Jedzenie" - -#: src/mission_companion.cpp -msgid "Make Offer" -msgstr "Złóż Ofertę" - -#: src/mission_companion.cpp -msgid "Not Interested" -msgstr "Brak Zaintersowania" - -#: src/mission_companion.cpp -msgid "You decide you aren't interested..." -msgstr "Decydujesz, że nie interesuje cię to..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s has been convinced to join!" -msgstr "%s został przekonany by dołączyć!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested..." -msgstr "%s nie był zainteresowany..." - #: src/mission_companion.h msgid "Do you wish to give your companion additional items?" -msgstr "" +msgstr "Czy chcesz dać towarzyszowi dodatkowe przedmioty?" #: src/mission_end.cpp #, c-format @@ -159610,9 +161417,10 @@ msgstr "Pozostałe punkty: %4d" msgid "Freeform" msgstr "Styl wolny" -#: src/newcharacter.cpp -msgid "Pick your style:" -msgstr "Wybierz twój styl:" +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" +msgstr "Wybierz styl (naciśnij %s dla dodatkowych informacji)" #: src/newcharacter.cpp msgid "Use this style?" @@ -160872,50 +162680,6 @@ msgstr "Przydała by mi się jeszcze pomoc w pewnej sprawie." msgid " If you are interested, I have another job for you." msgstr "Jak jesteś zainteresowany, to miałbym jeszcze robotę do zrobienia." -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "Miło było robić interesy!" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "Cóż, zgaduję że tylko my." - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "Przynajmniej mamy schronienie." - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "Nie wiem, poszukaj zapasów lub innych ocalonych, jak myślę." - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "Może powinniśmy zabić to miejsce dechami." - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to" -" disappear quickly from here." -msgstr "" -"Zgaduję, że jakiś wóz na chodzie byłby nie od rzeczy, gdyby trzeba było " -"szybko stąd wiać." - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "" -"Powinniśmy rozejrzeć się za jakimś gospodarstwem rolniczym. Mogą być źródłem" -" masy jedzenia i są oddalone od miast." - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "" -"Powinniśmy się raczej trzymać z dala od miast, choć jest w nich wiele " -"przydatnych rzeczy. " - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." msgstr "Dopiero mnie pytałeś o sprzęt. Zapytaj później." @@ -160924,10 +162688,6 @@ msgstr "Dopiero mnie pytałeś o sprzęt. Zapytaj później." msgid "Why should I share my equipment with you?" msgstr "Czemu mam się dzielić ekwipunkiem?" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "Okej, proszę bardzo." - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr ", i jeśli zapytasz ponownie, !" @@ -160948,46 +162708,6 @@ msgstr "Przepraszam, ale chyba nie mam czego cię uczyć." msgid "Here's what I can teach you..." msgstr "Mogę cię nauczyć następujących rzeczy..." -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "W porządku, zaczynamy." - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "Nie, dopóki nie dostanę antybiotyków..." - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "Niedawno mnie o to pytałeś. Poproś później." - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "Czemu mam z tobą podróżować?" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "Rozumiem, jestem z tobą!" - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "Taaak... nie sądzę." - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "O co chodzi?" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "Naprawdę odchodzisz?" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "W porządku. Prowadzisz." - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "Nie. Ja tu dowodzę." - #: src/npctalk.cpp #, c-format msgid "%d.%d miles." @@ -161002,22 +162722,6 @@ msgstr[1] " %d stóp." msgstr[2] "%d stóp." msgstr[3] "%d stóp." -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "Stoję na straży." - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "Nie ma bata, nie zostanę porzucony w tyle!" - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "Wolę zachować to dla siebie." - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "Naprawdę nie czuję się z tym komfortowo..." - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "*nie walczy z wrogami." @@ -161323,30 +163027,6 @@ msgstr "Jeszcze mnie zobaczysz..." msgid "Delivering bandages." msgstr "Dostarczam bandaże." -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "Co teraz zrobimy?" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "Jakieś wskazówki?" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "Chcesz podróżować ze mną?" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "Pohandlujmy." - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "Nie opuszczę schronu bez wyposażenia..." - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "Hmmm, okej." - #: src/npctalk.cpp msgid "Okay, fine." msgstr "Okej, w porządku." @@ -161379,30 +163059,6 @@ msgstr "Eh, nieważne." msgid "Never mind, I'll do without. Bye." msgstr "Nieważne, obejdę się. Żegnaj." -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "Dziękuję uprzejmie!" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "Dziękuję! Czy mogę jeszcze więcej?" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "Dziękuję, do zobaczenia!" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "Okej, okej, przepraszam." - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "Serio, daj mi więcej rzeczy!" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "Okej, niech będzie, żegnaj!" - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "Tak, wznówmy trening" @@ -161424,94 +163080,6 @@ msgstr "%s: %d -> %d" msgid "%s: %d -> %d (cost $%d)" msgstr "%s: %d -> %d (koszt $%d)" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "Brzmi dobrze." - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "Po zastanowieniu się, jednak nieważne." - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "Okej, prowadź." - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "Nie, tu nam dobrze." - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "Zrozumiałem. Przyniosę te antybiotyki." - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "Dobrze, dobrze, potem zapytam." - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "Mogę zapewnić ci bezpieczeństwo." - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "Możesz zapewnić mi bezpieczeństwo." - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "Jesteśmy przyjaciółmi, czyż nie?" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "W przeciwnym wypadku cię zabiję." - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "Doskonale!" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "Okej, ruszajmy!" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "Daleko jeszcze?" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "Pójdę na razie własną drogą." - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "Chciałbym poprowadzić przez pewien czas." - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "Z drogi. Teraz ja dowodzę." - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "Idziemy." - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "Nah, to tylko żarty." - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "Tak, to pewne. Żegnaj." - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "W prządku. Coś jeszcze..." - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "W porządku, idziemy..." - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "Okej, okej." - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "Okej, dziękuję." @@ -161520,10 +163088,6 @@ msgstr "Okej, dziękuję." msgid "Let's keep moving." msgstr "Nie zatrzymujmy się." -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "Chcę żebyś poszedł ze mną." - #: src/npctalk.cpp msgid "Combat commands..." msgstr "Rozkazy walki..." @@ -161581,16 +163145,12 @@ msgid "Miscellaneous rules..." msgstr "Różne zasady..." #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "" - -#: src/npctalk.cpp -msgid "I'll give you some space." -msgstr "Dam ci trochę przestrzeni." +msgid "I'm going to go my own way for a while." +msgstr "Pójdę na razie własną drogą." #: src/npctalk.cpp -msgid "I understand..." -msgstr "Rozumiem..." +msgid "Let's talk about faction camps." +msgstr "Porozmawiajmy o obozach frakcji." #: src/npctalk.cpp msgid "Change your engagement rules..." @@ -161787,6 +163347,8 @@ msgstr "" #: src/npctalk.cpp msgid "Warning, you need at least two allies to work a faction camp!\n" msgstr "" +"Uwaga, potrzebujesz co najmniej dwóch sprzymierzeńsców by pracować nad " +"obozem frakcji!\n" #: src/npctalk.cpp #, c-format @@ -161803,7 +163365,7 @@ msgstr "Nie udało ci się zbadać miejsca na obóz." #: src/npctalk.cpp msgid "There is no faction camp here to recover!" -msgstr "" +msgstr "Nie ma tu obozu frakcji do odzyskania!" #: src/npctalk.cpp #, c-format @@ -162306,13 +163868,15 @@ msgstr "" #: src/options.cpp msgid "Additional auto features" -msgstr "" +msgstr "Dodatkowe automatyczne funkcje" #: src/options.cpp msgid "" "If true, enables configured auto features below. Disabled as long as any " "enemy monster is seen." msgstr "" +"Jeżeli włączone, zezwala na skonfigurowane automatyczne funkcje poniżej. " +"Wyłączone jak długo masz wrogiego potwora w zasięgu wzroku." #: src/options.cpp msgid "Auto pulp or butcher" @@ -162328,6 +163892,11 @@ msgstr "" "zwłok\". Miażdż: Miażdżysz ciała na których staniesz. Miażdż Bliskie: " "Miażdży też zwłoki bliskie tobie. Tnij: Tnie ciała na których staniesz." +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "Kaleka" + #: src/options.cpp msgid "Pulp" msgstr "Miażdż" @@ -162338,7 +163907,7 @@ msgstr "Miażdż Bliskie" #: src/options.cpp msgid "Auto mining" -msgstr "" +msgstr "Auto górnictwo" #: src/options.cpp msgid "" @@ -162351,7 +163920,7 @@ msgstr "" #: src/options.cpp msgid "Auto foraging" -msgstr "" +msgstr "Auto zbieractwo" #: src/options.cpp msgid "" @@ -162550,10 +164119,6 @@ msgstr "" msgid "Always" msgstr "Zawsze" -#: src/options.cpp -msgid "Ask" -msgstr "Pytaj" - #: src/options.cpp msgid "Never" msgstr "Nigdy" @@ -164209,7 +165774,7 @@ msgstr "Naciśnij dowolny klawisz dla kolejnych..." #, c-format msgctxt "query_yn" msgid "%s (Case Sensitive)" -msgstr "" +msgstr "%s (Wielkość liter ma znaczenie)" #: src/output.cpp #, c-format @@ -165071,11 +166636,7 @@ msgstr "Moc: %d/%d" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "Broń:" -msgstr[1] "Bronie:" -msgstr[2] "Bronie:" -msgstr[3] "Bronie:" +msgstr "" #: src/player.cpp msgid "Equipment:" @@ -166553,24 +168114,6 @@ msgstr "Wyciągnąć %s z %s? " msgid "Stop wielding %s?" msgstr "Przestać trzymać %s?" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "Technika:" -msgstr[1] "Techniki:" -msgstr[2] "Techniki:" -msgstr[3] "Techniki:" - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "Ten styl zmusza cię do ciosów wręcz nawet gdy masz w dłoniach broń." - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "Wybierz styl (naciśnij %s dla dodatkowych informacji)" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "Trzymaj ręce wolne (NIE)" @@ -166628,6 +168171,11 @@ msgstr "Rozbij" msgid "Mend" msgstr "Napraw" +#: src/player.cpp +#, c-format +msgid "The %s doesn't have any faults to toggle." +msgstr "" + #: src/player.cpp #, c-format msgid "The %s doesn't have any faults to mend." @@ -167417,10 +168965,6 @@ msgstr "Inteligencja" msgid "Perception" msgstr "Percepcja" -#: src/player_display.cpp -msgid "Speed" -msgstr "Prędkość" - #: src/player_display.cpp msgid "Severely Malnourished" msgstr "Poważnie niedożywiony" @@ -168540,6 +170084,10 @@ msgstr "Kaboom!!" msgid "kerblam!" msgstr "kerblam!" +#: src/recipe.cpp +msgid "none" +msgstr "żaden" + #: src/requirements.cpp #, c-format msgid "%d tool with %s of %d or more." @@ -169892,6 +171440,19 @@ msgstr "'{' by przewinąć w górę" msgid "'}' to scroll down" msgstr "'}' by przewinąć w dół" +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" +msgstr "" + #: src/veh_interact.cpp #, c-format msgid "> %2$s" @@ -170753,13 +172314,13 @@ msgstr "Niewystarczająca moc by pozwolić na %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" -msgstr "Wyłącz %s" +msgid "Turn on %s" +msgstr "Włącz %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" -msgstr "Włącz %s" +msgid "Turn off %s" +msgstr "Wyłącz %s" #: src/vehicle_use.cpp #, c-format @@ -170855,10 +172416,6 @@ msgstr "System kamer włączony" msgid "Camera system won't turn on" msgstr "System kamer się nie włączy" -#: src/vehicle_use.cpp -msgid "Quit controlling electronics" -msgstr "Zakończ sterowanie elektroniką" - #: src/vehicle_use.cpp msgid "Electronics controls" msgstr "Sterowanie elektroniką" diff --git a/lang/po/ru.po b/lang/po/ru.po index f152cd70a8f9d..2478fdf33b044 100644 --- a/lang/po/ru.po +++ b/lang/po/ru.po @@ -20,8 +20,6 @@ # Darkon Rabbit, 2018 # Daniel Sanderson , 2018 # Александр , 2018 -# Ivan Vlasov , 2018 -# Alexey Mostovoy , 2018 # flin4 , 2018 # Oleksii Filonenko , 2018 # Igor Kirpik , 2018 @@ -30,17 +28,23 @@ # Brett Dong , 2018 # Arex , 2018 # Tim Kostenko , 2018 +# Alexey Mostovoy , 2018 +# Jose , 2018 +# Ananas Kontrabasov, 2018 +# Temp Zombie , 2018 # Vlasov Vitaly , 2018 # Антон Бурмистров <22.valiant@gmail.com>, 2018 +# Ivan Vlasov , 2018 # korick3 korick3 , 2018 +# Midas , 2018 # msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-26 22:02+0800\n" +"POT-Creation-Date: 2018-11-16 22:24+0800\n" "PO-Revision-Date: 2018-04-26 14:47+0000\n" -"Last-Translator: korick3 korick3 , 2018\n" +"Last-Translator: Midas , 2018\n" "Language-Team: Russian (https://www.transifex.com/cataclysm-dda-translators/teams/2217/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -51,10 +55,10 @@ msgstr "" #: lang/json/AMMO_from_json.py msgid "battery" msgid_plural "batteries" -msgstr[0] "батарея" -msgstr[1] "батареи" -msgstr[2] "батарей" -msgstr[3] "батарея" +msgstr[0] "батарейки" +msgstr[1] "батареек" +msgstr[2] "батареек" +msgstr[3] "батарейки" #. ~ Description for battery #: lang/json/AMMO_from_json.py @@ -105,7 +109,7 @@ msgstr "сухожилие" #: lang/json/AMMO_from_json.py msgid "A tough sinew cut from a corpse, usable as thread." msgstr "" -"Жёсткое сухожилие из трупа, пригодное для использования в качестве нити." +"Крепкое сухожилие из трупа, пригодное для использования в качестве нити." #: lang/json/AMMO_from_json.py msgid "plant fiber" @@ -115,8 +119,8 @@ msgstr "растительное волокно" #: lang/json/AMMO_from_json.py msgid "Tough thin fiber, taken from a plant. Can be used as thread." msgstr "" -"Грубые тонкие волокна, полученные из растения. Можно использовать в качестве" -" нити." +"Крепкие тонкие волокна, полученные из растения. Можно использовать в " +"качестве нити." #: lang/json/AMMO_from_json.py msgid "yarn" @@ -164,7 +168,8 @@ msgstr "медный провод" #: lang/json/AMMO_from_json.py msgid "Plastic jacketed copper cable of the type used in small electronics." msgstr "" -"Медный кабель в пластиковой оболочке используется в небольших устройствах." +"Медный кабель в пластиковой оболочке используется в небольших электронных " +"устройствах." #: lang/json/AMMO_from_json.py msgid "plutonium cell" @@ -270,8 +275,8 @@ msgid "" msgstr "" "В середине XXI века армия обратила своё внимание на энергетические виды " "вооружения. В результате была разработана стандартная батарея ядерного " -"синтеза, запускающая снаряды почти на световой скорости без отдачи с помощью" -" газа сверхвысоких температур." +"синтеза, способная запускать без отдачи снаряды из перегретого газа на " +"почти световой скорости." #: lang/json/AMMO_from_json.py msgid "66mm HEAT" @@ -283,8 +288,8 @@ msgid "" "A 60mm high-explosive anti-tank round. It could blow through up to two feet" " of concrete." msgstr "" -"60-мм кумулятивный противотанковый снаряд. Способен пробить бетонную стену " -"толщиной больше полуметра." +"60-мм кумулятивный противотанковый снаряд. Способен пробить слой бетона " +"толщиной до полуметра." #: lang/json/AMMO_from_json.py msgid "120mm HEAT" @@ -295,8 +300,8 @@ msgstr "снаряд 120 мм (кумулятивный)" msgid "" "A 120mm high-explosive anti-tank round. It could ruin anyone's whole day." msgstr "" -"120-мм кумулятивный противотанковый снаряд. Можно целый день превращать что " -"угодно в руины." +"120-мм кумулятивный противотанковый снаряд. Может испортить день кому " +"угодно." #: lang/json/AMMO_from_json.py msgid "hydrogen canister" @@ -327,7 +332,7 @@ msgstr "порох" #. ~ Description for gunpowder #: lang/json/AMMO_from_json.py msgid "Firearm-quality gunpowder." -msgstr "Качественный порох, используемый в огнестрельном оружии." +msgstr "Порох оружейного качества." #: lang/json/AMMO_from_json.py msgid "oxidizer powder" @@ -349,12 +354,12 @@ msgstr "Порошковый едкий натр." #: lang/json/AMMO_from_json.py msgid "shotgun primer" -msgstr "средний ружейный капсюль" +msgstr "Капсюль к гладкоствольному оружию" #. ~ Description for shotgun primer #: lang/json/AMMO_from_json.py msgid "Primer from a shotgun shell." -msgstr "Капсюль для дробовых патронов." +msgstr "Капсюль для снаряжения патронов гладкоствольного оружия." #: lang/json/AMMO_from_json.py msgid "small pistol primer" @@ -363,7 +368,7 @@ msgstr "маленький пистолетный капсюль" #. ~ Description for small pistol primer #: lang/json/AMMO_from_json.py msgid "Primer from a small caliber pistol round." -msgstr "Капсюль от пистолетного патрона небольшого калибра." +msgstr "Капсюль для пистолетного патрона небольшого калибра." #: lang/json/AMMO_from_json.py msgid "large pistol primer" @@ -372,25 +377,25 @@ msgstr "большой пистолетный капсюль" #. ~ Description for large pistol primer #: lang/json/AMMO_from_json.py msgid "Primer from a large caliber pistol round." -msgstr "Капсюль от крупнокалиберного пистолетного патрона." +msgstr "Капсюль для крупнокалиберного пистолетного патрона." #: lang/json/AMMO_from_json.py msgid "small rifle primer" -msgstr "маленький ружейный капсюль" +msgstr "маленький винтовочный капсюль" #. ~ Description for small rifle primer #: lang/json/AMMO_from_json.py msgid "Primer from a small caliber rifle round." -msgstr "Капсюль патрона мелкокалиберной винтовки." +msgstr "Капсюль для патрона мелкокалиберной винтовки." #: lang/json/AMMO_from_json.py msgid "large rifle primer" -msgstr "большой ружейный капсюль" +msgstr "большой винтовочный капсюль" #. ~ Description for large rifle primer #: lang/json/AMMO_from_json.py msgid "Primer from a large caliber rifle round." -msgstr "Капсюль патрона крупнокалиберной винтовки." +msgstr "Капсюль для патрона крупнокалиберной винтовки." #: lang/json/AMMO_from_json.py msgid "rubber slug" @@ -402,8 +407,8 @@ msgid "" "Rubber slugs from a shotgun beanbag round. You could use them to make new " "beanbag rounds." msgstr "" -"Резиновые пули из картечного патрона для дробовика. Вы можете использовать " -"их для создания новых картечных патронов." +"Резиновые пули из нелетального патрона дробовика. Вы можете использовать их " +"для создания новых патронов." #: lang/json/AMMO_from_json.py msgid "copper" @@ -470,7 +475,7 @@ msgid "" msgstr "" "66-мм зажигательные ракеты, используемые в реактивной пусковой установке " "M202 FLASH. Их боевые части заполнены загущённой самовоспламеняющейся " -"смесью, которая горит при температуре 2200 градусов по Фаренгейту." +"смесью, которая горит при температуре 1204 градуса по Цельсию." #: lang/json/AMMO_from_json.py msgid "placeholder ammunition" @@ -487,7 +492,7 @@ msgid "" " in recipes requiring a pure, hot flame. Can also be used in filters to " "remove contaminants out of air and water." msgstr "" -"Горючий углеродистый материал, полученный путём медленного сжигания " +"Горючий углеродистый материал, полученный путём бескислородного пиролиза " "древесины. Используется в рецептах, требующих чистого, высокотемпературного " "пламени. Может также использоваться в фильтрах для удаления загрязнений из " "воздуха и воды." @@ -517,10 +522,10 @@ msgid "" "instead of on a timer. It can fly further than the explosion will reach, " "probably." msgstr "" -"Глубокая модификация ядерной мини-бомбы смонтированной на ракете. Целью " -"модификации являлась адаптация к запуску посредством специализированного " -"устройства, чтобы взрыв произошёл при ударе вместо таймера. Может пролететь " -"дальше, чем куда может достичь взрыв." +"Сильно модифицированная ядерная мини-бомба, установленная на ракету и " +"предназначенная для запуска посредством специализированного устройства. " +"Взрыв инициируется при ударе вместо таймера. Способна улететь дальше радиуса" +" взрыва. Наверное." #: lang/json/AMMO_from_json.py msgid "RA21E medical ampoule" @@ -533,9 +538,9 @@ msgid "" " be activated by a Rivtech jet injector device. A label on the side warns " "against using more than two doses per hour." msgstr "" -"Маленькая пробирка, наполненная передовыми химикатами для быстрого лечения, " -"которую можно ввести только при помощи инъектора Ривтех. Этикетка " -"предупреждает о вреде использования более 2-х раз в час." +"Маленький стеклянный пузырек, наполненный передовыми химикатами для быстрого" +" лечения, который можно использовать только при помощи инъектора Ривтех. " +"Этикетка предупреждает о вреде использования более двух раз в час." #: lang/json/AMMO_from_json.py msgid "RA10K stimulant module" @@ -591,7 +596,7 @@ msgstr "Тяжёлый сменный фильтрующий картридж д #: lang/json/AMMO_from_json.py msgid "nicotine liquid" -msgstr "жидкий никотин" +msgstr "Никотиновая жидкость" #. ~ Description for nicotine liquid #: lang/json/AMMO_from_json.py @@ -599,7 +604,7 @@ msgid "" "A liquid that is made up of propylene glycol, vegetable glycerin, flavorings" " and nicotine." msgstr "" -"Жидкость, изготовленная из пропиленгликоля, овощного глицерина, " +"Жидкость, изготовленная из пропиленгликоля, растительного глицерина, " "ароматизаторов и никотина." #: lang/json/AMMO_from_json.py lang/json/ammunition_type_from_json.py @@ -632,8 +637,8 @@ msgid "" " of this grade of weapon, but packs a fierce punch... if it hits." msgstr "" "Самодельная ракета, состоящая из шипа, приваренного к трубе, заполненной " -"ракетным топливом из подручных материалов. Ужасно неточная, как можно " -"ожидать от этого класса оружия, но наносит мощный удар... если попадёт." +"кустарным ракетным топливом. Ужасно неточная, как можно ожидать от этого " +"класса оружия, но наносит мощный удар... если попадёт." #: lang/json/AMMO_from_json.py msgid "explosive home-made rocket" @@ -647,8 +652,8 @@ msgid "" "made from scratch." msgstr "" "Самодельная ракета, состоящая из боеголовки с простым взрывчатым веществом, " -"прикреплённой к трубе, заполненной ракетным топливом из подручных " -"материалов. Не очень мощная, но её можно изготовить буквально из хлама." +"прикреплённой к трубе, заполненной кустарным ракетным топливом. Не очень " +"мощная, но её можно изготовить буквально из хлама." #: lang/json/AMMO_from_json.py msgid "incendiary home-made rocket" @@ -662,8 +667,8 @@ msgid "" "handle with care!" msgstr "" "Самодельная ракета, состоящая контейнера с горючим гелем, прикреплённого к " -"трубе, заполненной ракетным топливом из подручных материалов. Это взрывчатка" -" ближнего действия — обращаться с осторожностью!" +"трубе, заполненной кустарным ракетным топливом. Очень малый радиус действия " +"— обращаться с осторожностью!" #: lang/json/AMMO_from_json.py msgid "unfinished charcoal" @@ -708,7 +713,7 @@ msgstr "" #: lang/json/AMMO_from_json.py msgid "chain link" -msgstr "звено цепи" +msgstr "кольчужное кольцо" #. ~ Description for chain link #: lang/json/AMMO_from_json.py @@ -874,7 +879,7 @@ msgstr "" #: lang/json/AMMO_from_json.py msgid "carbon fiber arrow" -msgstr "карбоновая стрела" +msgstr "стрела из углеволокна" #. ~ Description for carbon fiber arrow #: lang/json/AMMO_from_json.py @@ -930,8 +935,8 @@ msgid "" "A thin and flat knife made for throwing. Its ineffective cutting edge and " "odd shape makes it unsuitable for use as a tool." msgstr "" -"Тонкий и плоский нож, предназначенный для метания. Его неэффективная режущая" -" кромка и особая форма делают непригодным для использования в качестве " +"Тонкий и плоский нож, предназначенный для метания. Из-за неэффективной " +"режущей кромки и особой формы непригоден для использования в качестве " "инструмента." #: lang/json/AMMO_from_json.py @@ -944,8 +949,8 @@ msgid "" "A lightweight hatchet made for throwing. Its ineffective cutting edge and " "light weight makes it unsuitable for use as a tool." msgstr "" -"Лёгкий топорик для метания. Его неэффективная режущая кромка и лёгкий вес " -"делают его непригодным для использования в качестве инструмента." +"Лёгкий топорик для метания. Из-за неэффективной режущей кромки и лёгкого " +"веса непригоден для использования в качестве инструмента." #: lang/json/AMMO_from_json.py msgid "lawn dart" @@ -986,7 +991,7 @@ msgstr "" #: lang/json/AMMO_from_json.py msgid "carbon fiber fishing spear" -msgstr "композитная острога" +msgstr "острога из углеволокна" #. ~ Description for carbon fiber fishing spear #: lang/json/AMMO_from_json.py @@ -1239,10 +1244,10 @@ msgid "" "pyrotechnic and explosive agents and as a direct weapon: not many beings " "enjoy being doused in nitric acid." msgstr "" -"Азотная кислота, сильный окислитель и чрезвычайно корродирующее вещество. В " -"основном используется в производстве синтетических удобрений, для травления " -"печатных плат и в деревообработке. Остаётся весьма полезной как для создания" -" широкого спектра пиротехнических изделий и взрывчатых веществ, так и в " +"Азотная кислота, сильный окислитель и чрезвычайно едкое вещество. В основном" +" используется в производстве синтетических удобрений, для травления печатных" +" плат и в деревообработке. Остаётся весьма полезной как для создания " +"широкого спектра пиротехнических изделий и взрывчатых веществ, так и в " "качестве непосредственного оружия: не многим понравится быть облитым азотной" " кислотой." @@ -1309,10 +1314,10 @@ msgid "" "before, being the key component in the preparation of several military-grade" " explosives." msgstr "" -"Несколько восковых таблеток уротропина, более известных как «сухое горючее»." -" До Катаклизма без этого топлива не обходились розжиг гриля почти в каждом " -"саду и приготовление пищи ни в одном «настоящем» походе на природу. В " -"настоящее время, даже ещё более ценно, чем раньше, являясь ключевым " +"Горсть воскоподобных таблеток уротропина, более известных как «сухое " +"горючее». До Катаклизма без этого топлива не обходились розжиг гриля почти в" +" каждом саду и приготовление пищи ни в одном «настоящем» походе на природу. " +"В настоящее время, даже ещё более ценно, чем раньше, являясь ключевым " "компонентом в подготовке целого ряда взрывчатых веществ военного класса." #: lang/json/AMMO_from_json.py @@ -1703,9 +1708,9 @@ msgid "" "drink, so as to avoid pre-apocalyptic regulations on ethanol. Intended for " "use in alcohol-burning stoves and as a solvent." msgstr "" -"Крепкий раствор этанола и метанола, смешанных для того, чтобы сделать его " -"ядовитым, чтобы избежать доапокалиптических правил на алкоголь. Применяется " -"в спиртовках и в роли растворителя." +"Крепкий раствор этанола, смешанный с ядовитым метанолом в обход " +"доапокалиптических ограничений на обращение этилового спирта. Применяется в " +"спиртовках и в качестве растворителя." #: lang/json/AMMO_from_json.py lang/json/ammunition_type_from_json.py msgid "diesel" @@ -2130,9 +2135,9 @@ msgid "" "that is so weak as to be nearly useless given your predicament." msgstr "" "Конический патрон .22 калибра — разновидность патрона .22 калибра, который " -"разгоняет пулю праймером вместо пороха. В итоге получился патрон с " -"дозвуковой скоростью, но он настолько слаб, что почти бесполезен, учитывая " -"ваше затруднительное положение." +"разгоняет пулю капсюлем вместо пороха. В итоге получился патрон с дозвуковой" +" скоростью, но он настолько слаб, что почти бесполезен, учитывая ваше " +"затруднительное положение." #: lang/json/AMMO_from_json.py msgid ".22 FMJ" @@ -2908,8 +2913,8 @@ msgid "" "flammable substances." msgstr "" "Трассирующий вариант мощного снайперского патрона .50 BMG. Трассирующие " -"патроны помогают при стрельбе держать направление на цель и создают " -"опасность воспламенения горючих веществ." +"патроны помогают держать направление на цель при стрельбе и могут поджечь " +"горючие вещества." #: lang/json/AMMO_from_json.py msgid ".50 BMG Ball" @@ -2957,8 +2962,8 @@ msgid "" "flammable substances. This one has been hand-reloaded." msgstr "" "Трассирующий вариант мощного снайперского патрона .50 BMG. Трассирующие " -"патроны помогают при стрельбе держать направление на цель и создают " -"опасность воспламенения горючих веществ. Эти патроны были переснаряжены." +"патроны помогают при стрельбе держать направление на цель и могут поджечь " +"горючие вещества. Эти патроны были переснаряжены." #: lang/json/AMMO_from_json.py msgid "reloaded .50 BMG Ball" @@ -3638,8 +3643,8 @@ msgid "" "powerful electromagnetic weapon." msgstr "" "Короткий кусок ферромагнитной арматуры, заточенный с одного конца. Может " -"быть использован в качестве снаряда для достаточно мощного ферромагнитного " -"оружия." +"быть использован в качестве снаряда для достаточно мощного электромагнитного" +" оружия." #: lang/json/AMMO_from_json.py msgid "steel rail" @@ -3653,7 +3658,7 @@ msgid "" "weapon." msgstr "" "Короткий кусок кованой стали, заострённый с одного конца. Можно использовать" -" как боеприпас к достаточно мощному ферромагнитному оружию." +" как боеприпас к достаточно мощному электромагнитному оружию." #: lang/json/AMMO_from_json.py msgid "flechette" @@ -3756,7 +3761,7 @@ msgid "" "spread makes it very accurate at short range. Slices through most forms of " "armor with ease." msgstr "" -"Патроны для дробовика, снаряжённые маленькими стальными дротиками. Очень " +"Патроны для дробовика, снаряжённые крохотными стальными дротиками. Очень " "точные на близких дистанциях, наносят ужасные повреждения, легко проходят " "через броню." @@ -4106,9 +4111,10 @@ msgid "" "improved .280 British, Alexander Sarafanov himself developed the 6.54x42mm " "rifle cartridge for his new SVS-24 Assault Rifle." msgstr "" -"Патрон 6,54х42 мм с 120-грановой FMJBT пулей. Вдохновлённый улучшенным " -"британским калибром .280, Александр Сарафанов лично разработал этот патрон " -"для своей новой штурмовой винтовки SVS-24." +"Патрон 6,54х42 мм с 120-грановой пулей с цельнометаллической оболочкой, " +"имеющей задний конус. Вдохновлённый улучшенным британским калибром .280, " +"Александр Сарафанов лично разработал этот патрон для своей новой штурмовой " +"винтовки SVS-24." #: lang/json/AMMO_from_json.py msgid "6.54x42mm 9N12" @@ -4146,7 +4152,7 @@ msgid "" " they do not produce sound, flash or heat signature." msgstr "" "Эти металлические пули приводятся в движение с помощью электромагнитов, " -"поэтому они не оставляют звук, вспышку или тепловую подпись." +"поэтому они не оставляют звук, вспышку или тепловой след." #: lang/json/AMMO_from_json.py msgid "reloaded 6.54x42mm" @@ -5232,6 +5238,7 @@ msgstr "" "здоровья сгустка слизи. Вы думаете..." #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "камень" @@ -5259,9 +5266,9 @@ msgid "" "decays when separated from the catalyst; these fragments are small enough to" " remain stable." msgstr "" -"Эти небольшие фрагменты алмазов образуются в качестве побочного продукта " +"Эти небольшие кусочки алмазов образуются в качестве побочного продукта " "процесса кристаллизации на матрице алмазной коронки. После удаления " -"катализатора, эти частицы обычно распадаются, так как слишком малы, чтобы " +"катализатора эти частицы обычно распадаются, так как слишком малы, чтобы " "оставаться стабильными." #: lang/json/AMMO_from_json.py @@ -6071,8 +6078,8 @@ msgid "" "A huge fabric backpack made mostly as a joke before the cataclysm. Now, " "it's still rather silly, but it can store a lot of stuff." msgstr "" -"Огромный тканевый рюкзак, сделанный в основном как шутка перед Катаклизмом. " -"Даже теперь это всё ещё довольно глупо, но он может хранить много вещей." +"Огромный тканевый рюкзак, сделанный перед катаклизмом в основном шутки ради." +" Он всё ещё довольно нелепый, но может хранить много вещей." #: lang/json/ARMOR_from_json.py msgid "leather backpack" @@ -6489,6 +6496,16 @@ msgstr[1] "рабских маски" msgstr[2] "рабских масок" msgstr[3] "рабская маска" +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "Застегнуть молнию" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "Вы застёгиваете молнию на глазах и рту рабской маски." + #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" @@ -6496,6 +6513,31 @@ msgid "" "zippers." msgstr "Тугая маска из чёрной кожи. Глаза и рот можно застегнуть молниями." +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "Расстегнуть молнию" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "Вы расстёгиваете молнию на глазах и рту рабской маски." + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "Тугая маска из чёрной кожи. Глаза и рот застёгнуты молниями." + #: lang/json/ARMOR_from_json.py msgid "bondage suit" msgid_plural "bondage suits" @@ -6754,7 +6796,7 @@ msgstr[3] "нефритовая брошь" #. ~ Description for jade brooch #: lang/json/ARMOR_from_json.py msgid "A hand-crafted jade brooch of Oriental origin." -msgstr "Самодельная нефритовая брошь, сделанная в азиатском стиле." +msgstr "Азиатская нефритовая брошь ручной работы." #: lang/json/ARMOR_from_json.py msgid "back scabbard" @@ -7042,7 +7084,7 @@ msgstr[3] "плащ" #. ~ Description for cloak #: lang/json/ARMOR_from_json.py msgid "A heavy cloak meant to be thrown over your body." -msgstr "Тяжёлый плащ, должен быть накинут на ваше тело." +msgstr "Тяжёлый плащ, покрывающий всё тело." #: lang/json/ARMOR_from_json.py msgid "fur cloak" @@ -7055,7 +7097,7 @@ msgstr[3] "плащ из меха" #. ~ Description for fur cloak #: lang/json/ARMOR_from_json.py msgid "A heavy fur cloak meant to be thrown over your body." -msgstr "Тяжелый меховой плащ, должен быть накинут на ваше тело." +msgstr "Тяжелый меховой плащ, покрывающий всё тело." #: lang/json/ARMOR_from_json.py msgid "leather cloak" @@ -7071,8 +7113,7 @@ msgid "" "A heavy leather cloak meant to be thrown over your body. Provides decent " "protection." msgstr "" -"Тяжёлый кожаный плащ, должен быть накинут на ваше тело. Обеспечивает " -"достойную защиту." +"Тяжёлый кожаный плащ, покрывающий всё тело. Обеспечивает достойную защиту." #: lang/json/ARMOR_from_json.py msgid "wool cloak" @@ -7085,7 +7126,7 @@ msgstr[3] "шерстяной плащ" #. ~ Description for wool cloak #: lang/json/ARMOR_from_json.py msgid "A heavy woolen cloak meant to be thrown over your body." -msgstr "Тяжелый шерстяной плащ, должен быть накинут на ваше тело." +msgstr "Тяжелый шерстяной плащ, покрывающий всё тело." #: lang/json/ARMOR_from_json.py msgid "clown suit" @@ -7118,20 +7159,19 @@ msgstr "Шуба с парой небольших карманов. В ней о #: lang/json/ARMOR_from_json.py msgid "faux fur coat" msgid_plural "faux fur coats" -msgstr[0] "искусственная шуба" -msgstr[1] "искусственные шубы" -msgstr[2] "искусственных шуб" -msgstr[3] "искусственная шуба" +msgstr[0] "шуба из искусственного меха" +msgstr[1] "шубы из искусственного меха" +msgstr[2] "шуб из искусственного меха" +msgstr[3] "шуба из искусственного меха" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." msgstr "" -"Ярко окрашенная искусственная шуба с парой маленьких карманов. Хотя она не " -"такая тёплая, как из натурального меха, даёт вам некоторые уникальные " -"свойства." +"Ярко-окрашенная искусственная шуба с несколькими маленькими карманами. Хоть " +"это и не так тепло, как натуральный мех, зато придает вам неповторимый флер." #: lang/json/ARMOR_from_json.py msgid "sable coat" @@ -7162,8 +7202,8 @@ msgid "" "A long white coat with several large pockets. Comes with a very nice pocket" " protector." msgstr "" -"Длинный белый лабораторный халат с парой карманов. Поставляется с очень " -"хорошим протектором карманов." +"Длинный белый лабораторный халат с парой больших карманов. Имеется очень " +"неплохой карманный протектор." #: lang/json/ARMOR_from_json.py msgid "rain coat" @@ -7239,7 +7279,7 @@ msgid "" "A copper earring. It's pretty heavy; wearing it for an extended period of " "time may stretch your ear longer." msgstr "" -"Медные серьги. Довольно тяжёлые, если их носить достаточно долго, можно " +"Медная серьга. Довольно тяжёлая. Если носить достаточно долго, можно " "значительно оттянуть уши." #: lang/json/ARMOR_from_json.py @@ -7371,7 +7411,7 @@ msgstr "" "Шлем, предназначенный для использования с силовой бронёй ДаблТех Mk. I. " "Обеспечивает превосходную защиту от атак и экологических угроз. Встроенный " "компьютер и система охлаждения отсутствуют, а значит в нём не работает " -"внутренний хронометр и система внутренней терморегуляции." +"встроенный хронометр и система внутренней терморегуляции." #: lang/json/ARMOR_from_json.py msgid "diamond dental grill" @@ -7387,9 +7427,9 @@ msgid "" "Fake teeth inlaid with diamonds, worn over the teeth. Fits horribly, but " "looks very shiny. For that high-class gangsta rap look." msgstr "" -"Поддельные зубы, инкрустированы бриллиантами, носят поверх основных зубов. С" -" трудом помещаются во рту, но выглядят очень блестящими. Гангста-реперы " -"оценят такую высококлассную вещь." +"Инкрустированные бриллиантами поддельные зубы, накладываемые поверх основных" +" зубов. С трудом помещаются во рту, но выглядят очень блестяще. Для того, " +"чтоб выглядеть как высококлассный гангста-рэпер." #: lang/json/ARMOR_from_json.py msgid "diamond ring" @@ -7591,6 +7631,23 @@ msgstr[3] "меховой пыльник" msgid "A thick fur full-length duster. Has many pockets for storage." msgstr "Плотный меховой пыльник в полный рост. Со множеством карманов." +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "пыльник из искусственного меха" +msgstr[1] "пыльника из искусственного меха" +msgstr[2] "пыльников из искусственного меха" +msgstr[3] "пыльник из искусственного меха" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." +msgstr "" +"Толстый пыльник из искусственного меха, падающий ниже коленей. Имеет много " +"карманов для хранения вещей." + #: lang/json/ARMOR_from_json.py msgid "leather duster" msgid_plural "leather dusters" @@ -7966,10 +8023,10 @@ msgstr "" #: lang/json/ARMOR_from_json.py msgid "pair of faux fur cat ears" msgid_plural "pairs of faux fur cat ears" -msgstr[0] "пара пушистых кошачьих ушек искусств." -msgstr[1] "пары пушистых кошачьих ушек искусств." -msgstr[2] "пар пушистых кошачьих ушек искусств." -msgstr[3] "пара пушистых кошачьих ушек искусств." +msgstr[0] "пара пушистых кошачьих ушек из искусственного меха" +msgstr[1] "пары пушистых кошачьих ушек из искусственного меха" +msgstr[2] "пар пушистых кошачьих ушек из искусственного меха" +msgstr[3] "пара кошачьих ушек из искусственного меха" #. ~ Description for pair of faux fur cat ears #: lang/json/ARMOR_from_json.py @@ -8001,10 +8058,10 @@ msgstr "" #: lang/json/ARMOR_from_json.py msgid "faux fur cat tail" msgid_plural "faux fur cat tails" -msgstr[0] "пушистый кошачий хвост искусств." -msgstr[1] "пушистых кошачьих хвоста искусств." -msgstr[2] "пушистых кошачьих хвостов искусств." -msgstr[3] "пушистый кошачий хвост искусств." +msgstr[0] "пушистый кошачий хвост из искусственного меха" +msgstr[1] "пушистых кошачьих хвоста из искусственного меха" +msgstr[2] "пушистых кошачьих хвостов из искусственного меха" +msgstr[3] "пушистый кошачий хвост из искусственного меха" #. ~ Description for faux fur cat tail #: lang/json/ARMOR_from_json.py @@ -8035,10 +8092,10 @@ msgstr "" #: lang/json/ARMOR_from_json.py msgid "faux fur kitty collar" msgid_plural "faux fur kitty collars" -msgstr[0] "пушистый кошачий ошейник искусств." -msgstr[1] "пушистых кошачьих ошейника искусств." -msgstr[2] "пушистых кошачьих ошейников искусств." -msgstr[3] "пушистый кошачий ошейник искусств." +msgstr[0] "пушистый кошачий ошейник из искусственного меха" +msgstr[1] "пушистых кошачьих ошейника из искусственного меха" +msgstr[2] "пушистых кошачьих ошейников из искусственного меха" +msgstr[3] "пушистый кошачий ошейник из искусственного меха" #. ~ Description for faux fur kitty collar #: lang/json/ARMOR_from_json.py @@ -8951,6 +9008,23 @@ msgstr[3] "меховая шапка" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "Шапка, сшитая из шкур животных. Прекрасно греет." +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "шапка из искусственного меха" +msgstr[1] "шапки из искусственного меха" +msgstr[2] "шапок из искусственного меха" +msgstr[3] "шапка из искусственного меха" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "" +"Стильная шляпа из искусственного меха. Как настоящий мех, но без страданий, " +"если верить бирке. Очень тепло." + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -9352,19 +9426,6 @@ msgid "" msgstr "" "Средневековый шлем, очень тяжёлый, но обеспечивающий прекрасную защиту." -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "полицейский шлем с забралом" -msgstr[1] "полицейских шлема с забралом" -msgstr[2] "полицейских шлемов с забралом" -msgstr[3] "полицейский шлем с забралом" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "Полицейский шлем с щитком, прикрывающим лицо." - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" @@ -9854,7 +9915,7 @@ msgid "" "off dramatically before fighting any foes!" msgstr "" "Длинные струящиеся одежды. Просто и удобно носить. Обязательно драматично " -"сорвите их, перед схваткой с любым врагом!" +"сорвите их перед сражением!" #: lang/json/ARMOR_from_json.py msgid "jerrypack" @@ -11281,6 +11342,19 @@ msgstr[3] "меховые штаны" msgid "A hefty pair of fur-lined pants." msgstr "Здоровенные штаны из меха." +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "штаны из искусственного меха" +msgstr[1] "штанов из искусственного меха" +msgstr[2] "штанов из искусственного меха" +msgstr[3] "штаны из искусственного меха" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "Пара длинных хлопчатобумажных штанов с теплым, искусственным мехом." + #: lang/json/ARMOR_from_json.py msgid "leather pants" msgid_plural "leather pants" @@ -11524,8 +11598,8 @@ msgstr "" "Силовая броня ДаблТех Mk. I: тяжёлый вариант базовой силовой брони, очень " "хорошая защита от атак, но ограниченная мобильность. В отделении для УБП " "можно хранить другие вещи, если вы способны запитать броню от своей " -"энергосистемы. Как и во всех моделях силовой брони ДаблТех, системам " -"контроля и терморегуляции необходим прямой контакт с кожей." +"энергосистемы. Как и во всей силовой броне ДаблТех, системам управления и " +"климат-контроля требуется прямой контакт с кожей." #: lang/json/ARMOR_from_json.py msgid "power armor hauling frame" @@ -12075,11 +12149,50 @@ msgstr[1] "спальных мешка" msgstr[2] "спальных мешков" msgstr[3] "спальный мешок" +#. ~ Use action menu_text for sleeping bag. +#. ~ Use action menu_text for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Roll up" +msgstr "Свернуть" + +#. ~ Use action msg for sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the sleeping bag, preparing it for transport." +msgstr "Вы свернули спальный мешок, приготовив его к транспортировке." + #. ~ Description for sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag that covers you head to toe." msgstr "Большой спальный мешок, который покрывает вас с ног до головы." +#: lang/json/ARMOR_from_json.py +msgid "rolled sleeping bag" +msgid_plural "rolled sleeping bags" +msgstr[0] "свернутый спальный мешок" +msgstr[1] "свернутые спальные мешки" +msgstr[2] "свернутых спальных мешков" +msgstr[3] "свернутый спальный мешок" + +#. ~ Use action menu_text for rolled sleeping bag. +#. ~ Use action menu_text for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Unroll" +msgstr "Развернуть" + +#. ~ Use action msg for rolled sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll the sleeping bag." +msgstr "Вы развернули спальный мешок." + +#. ~ Description for rolled sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag rolled up for transport. It has a strap to carry it " +"with." +msgstr "" +"Большой спальный мешок свернут для транспортировки. У него есть лямка для " +"переноски." + #: lang/json/ARMOR_from_json.py msgid "fur sleeping bag" msgid_plural "fur sleeping bags" @@ -12088,12 +12201,39 @@ msgstr[1] "меховых спальных мешка" msgstr[2] "меховых спальных мешков" msgstr[3] "меховой спальный мешок" +#. ~ Use action msg for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the fur sleeping bag, preparing it for transport." +msgstr "Вы свернули меховой спальный мешок, приготовив его к транспортировке." + #. ~ Description for fur sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag lined with fur. Who needs a tent?" msgstr "" "Большой спальный мешок с меховой подкладкой. Кому вообще нужны палатки?" +#: lang/json/ARMOR_from_json.py +msgid "rolled fur sleeping bag" +msgid_plural "rolled fur sleeping bags" +msgstr[0] "свернутый меховой спальный мешок" +msgstr[1] "свернутые меховые спальные мешки" +msgstr[2] "свернутых меховых спальных мешков" +msgstr[3] "свернутый меховой спальный мешок" + +#. ~ Use action msg for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll up the fur sleeping bag." +msgstr "Вы развернули меховой спальный мешок." + +#. ~ Description for rolled fur sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag lined with fur, rolled for transport. It has a strap " +"to carry it with." +msgstr "" +"Большой меховой спальный мешок свернут для транспортировки. У него есть " +"лямка для переноски." + #: lang/json/ARMOR_from_json.py msgid "sleeveless duster" msgid_plural "sleeveless dusters" @@ -12128,6 +12268,23 @@ msgstr "" "Плотный меховой плащ-пыльник в полный рост, без рукавов, сковывающих ваши " "руки. Вместительный благодаря множеству карманов." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "безрукавный пыльник из искусственного меха" +msgstr[1] "безрукавных пыльника из искусственного меха" +msgstr[2] "безрукавных пыльников из искусственного меха" +msgstr[3] "безрукавный пыльник из искусственного меха" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "" +"Толстый пыльник с искусственным мехом и без рукавов, падающий ниже коленей. " +"Имеет много карманов для хранения вещей." + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" msgid_plural "sleeveless leather dusters" @@ -12197,6 +12354,23 @@ msgstr "" "Толстый меховой плащ без рукавов, не обременяющий ваши руки. В нём много " "свободного места для хранения вещей благодаря большому количеству карманов." +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "пальто с искусственным мехом" +msgstr[1] "пальто с искусственным мехом" +msgstr[2] "пальто с искусственным мехом" +msgstr[3] "пальто с искусственным мехом" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "" +"Толстое пальто с искусственным мехом и без рукавов. Имеет много места для " +"хранения, и выглядит довольно хорошо." + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -13048,6 +13222,23 @@ msgid "A thick fur trenchcoat, lined with pockets. Great for storage." msgstr "" "Толстый меховой плащ со множеством карманов. Отличная вместительность." +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "пальто с искусственным мехом" +msgstr[1] "пальто с искусственным мехом" +msgstr[2] "пальто с искусственным мехом" +msgstr[3] "пальто с искусственным мехом" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "" +"Пальто с искусственным мехом, выложенное карманами. Отлично подходит для " +"хранения и заставляет вас чувствовать себя городским жителем." + #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" msgid_plural "leather trenchcoats" @@ -13744,8 +13935,8 @@ msgid "" "A huge makeshift helmet made from a canning pot. For the truly desperate " "man-bear-pig." msgstr "" -"Огромный самодельный шлем, сделанный из тазика для консервирования. Для " -"отчаявшихся найти нормальное снаряжение челмедведосвинов." +"Огромный самодельный шлем, сделанный из кастрюли для консервации. Для " +"отчаявшихся найти нормальное снаряжение челмедведесвинов." #: lang/json/ARMOR_from_json.py msgid "survivor utility belt" @@ -15231,10 +15422,10 @@ msgstr "" #: lang/json/ARMOR_from_json.py msgid "heater shield" msgid_plural "heater shields" -msgstr[0] "тарч" -msgstr[1] "тарча" -msgstr[2] "тарчей" -msgstr[3] "тарч" +msgstr[0] "треугольный щит" +msgstr[1] "треугольных щита" +msgstr[2] "треугольных щитов" +msgstr[3] "треугольный щит" #. ~ Description for heater shield #: lang/json/ARMOR_from_json.py @@ -15770,9 +15961,9 @@ msgstr "" #: lang/json/BIONIC_ITEM_from_json.py msgid "Internal Climate Control CBM" msgid_plural "Internal Climate Control CBMs" -msgstr[0] "КБМ: Внутренний контроль климата" -msgstr[1] "КБМ: Внутренний контроль климата" -msgstr[2] "КБМ: Внутренний контроль климата" +msgstr[0] "КБМ: Внутренний климат-контроль" +msgstr[1] "КБМ: Внутренний климат-контроль" +msgstr[2] "КБМ: Внутренний климат-контроль" msgstr[3] "КБМ: Внутренний климат-контроль" #. ~ Description for Internal Climate Control CBM @@ -16200,10 +16391,10 @@ msgid "" "powered, this system will prevent heat damage up to 2000 degrees Fahrenheit." " Note that this does not affect your internal temperature." msgstr "" -"Мощные радиаторы и жаростойкие материалы покрывают ваше тело. Пока работает " -"эта система, вы защищены от воздействия внешних температур до 2000 градусов " -"по Фаренгейту (1100 по Цельсию). Учитывайте, что эта система не влияет на " -"вашу внутреннюю температуру." +"Мощные радиаторы и жаростойкие материалы интегрированы в ваше тело. Пока " +"работает эта система, вы защищены от воздействия внешних температур до 2000 " +"градусов по Фаренгейту (1100 по Цельсию). Учитывайте, что эта система не " +"влияет на вашу внутреннюю температуру." #: lang/json/BIONIC_ITEM_from_json.py msgid "Hydraulic Muscles CBM" @@ -16956,8 +17147,8 @@ msgid "" "allow you to make automated precise cuts and can be used as a high-quality " "butchering tool." msgstr "" -"Хирургического качества скальпели, имплантированные в ваши пальцы. Позволяют" -" делать автоматические точные разрезы, а также могут использоваться как " +"Хирургические скальпели, имплантированные в ваши пальцы. Позволяют делать " +"автоматические точные разрезы, а также могут использоваться как " "высококачественный инструмент для разделки." #: lang/json/BIONIC_ITEM_from_json.py @@ -17108,7 +17299,7 @@ msgid "" "run on a UPS can now draw directly from your internal power supply." msgstr "" "Вы имеете унифицированную энергосистему, связанную с вашими аккумуляторами. " -"Всё, что работает от УБП, может быть подключено к вашему внутреннему " +"Всё, что работает от УБП, может быть подключено к вашему встроенному " "источнику питания." #: lang/json/BIONIC_ITEM_from_json.py @@ -17117,7 +17308,7 @@ msgid_plural "Internal Chronometer CBMs" msgstr[0] "КБМ: Встроенный хронометр" msgstr[1] "КБМ: Встроенный хронометр" msgstr[2] "КБМ: Встроенный хронометр" -msgstr[3] "КБМ: Внутренний хронометр" +msgstr[3] "КБМ: Встроенный хронометр" #. ~ Description for Internal Chronometer CBM #. ~ Description for Internal Chronometer @@ -17233,9 +17424,9 @@ msgid "" " sunlight, they will automatically deploy and slowly recharge your power " "level." msgstr "" -"В вашу спину установлен ряд вытягивающихся солнечных панелей. Под прямыми " -"солнечными лучами, панели автоматически разворачиваются, ваши аккумуляторы " -"медленно заряжаются." +"На вашей спине установлен ряд складных солнечных панелей. Под прямыми " +"солнечными лучами панели автоматически разворачиваются и медленно заряжают " +"ваши батареи." #: lang/json/BIONIC_ITEM_from_json.py msgid "Ionic Overload Generator CBM" @@ -17246,17 +17437,18 @@ msgstr[2] "КБМ: Ионный перегрузочный генератор" msgstr[3] "КБМ: Ионный перегрузочный генератор" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" "Мощный ионный генератор, имплантированный в грудную клетку. Генерирует " -"мощную энергетическую волну на цели и распространяется вокруг. В результате " -"ударной силы происходит воспламенение кислорода в воздухе и взрыв. " -"Использование на близких расстояниях небезопасно." +"мощную распространяющуюся энергетическую волну. Импульс поджигает кислород, " +"вызывая пламя на своём пути и взрыв при столкновении. Использование на " +"близких расстояниях небезопасно." #: lang/json/BIONIC_ITEM_from_json.py msgid "Synaptic Regeneration System CBM" @@ -17290,9 +17482,9 @@ msgid "" " otherwise." msgstr "" "Система генерации электромагнитного импульса дальнего действия, " -"имплантированная в ладонь правой руки пользователя. Излучает мощный " -"сфокусированный электромагнитный импульс на короткую дистанцию. Особенно " -"эффективен против электронных противников, но бесполезен против остальных." +"имплантируемая в правую руку и ладонь. Излучает сверхсконцентрированный " +"электромагнитный импульс на короткое расстояние. Особенно эффективен против " +"электронных противников, но бесполезен против остальных." #. ~ Description for Ionic Overload Generator CBM #. ~ Description for Ionic Overload Generator @@ -17303,33 +17495,10 @@ msgid "" "creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" -"Мощный ионный генератор, имплантированный в грудную клетку пользователя. " -"Генерирует мощную энергетическую волну на цели и распространяется вокруг. В " -"результате ударной силы происходит воспламенение кислорода в воздухе и " -"взрыв. Использование на близких расстояниях небезопасно." - -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "КБМ: Автономные хирургические лезвия" -msgstr[1] "КБМ: Автономные хирургические лезвия" -msgstr[2] "КБМ: Автономные хирургические лезвия" -msgstr[3] "КБМ: Автономные хирургические лезвия" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While" -" activated, they will continously drain power to make automated precise cuts" -" but you will be unable to wield anything." -msgstr "" -"Комплект лезвий хирургического уровня, имплантированный в пальцы " -"пользователя. Пока активированы, постоянно потребляют бионическую энергию, " -"автоматизируют выполнение точных хирургических разрезов. После активации вы " -"не можете ничего взять в руки." +"Мощный ионный генератор, имплантированный в грудную клетку. Генерирует " +"мощную распространяющуюся энергетическую волну. Импульс поджигает кислород, " +"вызывая пламя на своём пути и взрыв при столкновении. Использование на " +"близких расстояниях небезопасно." #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" @@ -20369,9 +20538,9 @@ msgid "" " It's full of information, but finding the things you're looking for can be" " a chore." msgstr "" -"Толстая книга в твёрдом переплёте, в которой есть вся необходимая " -"информация, чтобы вести легендарные игры. Из-за объёма книги поиск " -"информации в ней может занять много времени." +"Толстая книга в твёрдом переплёте со всем необходимым для создания " +"легендарных историй. Из-за объёма книги поиск информации в ней может занять " +"много времени." #: lang/json/BOOK_from_json.py msgid "Duelist's Annual" @@ -20659,6 +20828,27 @@ msgstr "" "Обшитый кожей портфолио, который когда-то принадлежал дизайнеру. Наполнен " "зарисовками и заметками. Опытный портной найдёт для себя много полезного." +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "Дружелюбная, Гуманная Мода" +msgstr[1] "Дружелюбная, Гуманная Мода" +msgstr[2] "Дружелюбная, Гуманная Мода" +msgstr[3] "Дружелюбная, Гуманная Мода" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon" +" Animal Rights Organization." +msgstr "" +"Обучающая книга, в которой подробно описывается использование искусственного" +" меха, а также его преимущества и недостатки. Текст довольно пристрастный, а" +" дисклеймер на обложке с гордостью заявляет, что книга напечатана и " +"распространена \"Организацией по защите животных \"Грифон\"\"." + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -20849,9 +21039,8 @@ msgid "" "A book detailing the workings of state of the art atomic technology, and the" " physics behind it" msgstr "" -"Подробное художественное издание. Рассказывает в популярной форме последние " -"достижения в области разработки атомных технологий и что нас ждёт в будущем," -" точка зрения физиков." +"Книга, описывающая принципы новейших ядерных технологий и сопутствующую " +"физику." #: lang/json/BOOK_from_json.py msgid "Case #5846, Illegal Gun Modification" @@ -20964,10 +21153,10 @@ msgstr "" #: lang/json/BOOK_from_json.py msgid "Blobs and Bandits" msgid_plural "Blobs and Banditss" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Сгустки и Бандиты" +msgstr[1] "Сгустки и Бандиты" +msgstr[2] "Сгустки и Бандиты" +msgstr[3] "Сгустки и Бандиты" #. ~ Description for Blobs and Bandits #: lang/json/BOOK_from_json.py @@ -20981,10 +21170,10 @@ msgstr "" #: lang/json/BOOK_from_json.py msgid "Battlehammer" msgid_plural "Battlehammers" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Боевой молот" +msgstr[1] "Боевые молоты" +msgstr[2] "Боевых молотов" +msgstr[3] "Боевой молот" #. ~ Description for Battlehammer #: lang/json/BOOK_from_json.py @@ -20996,10 +21185,10 @@ msgstr "" #: lang/json/BOOK_from_json.py msgid "Battlehammer 20k" msgid_plural "Battlehammer 20ks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Батлхаммер 20000" +msgstr[1] "Батлхаммера 20000" +msgstr[2] "Батлхаммеров 20000" +msgstr[3] "Батлхаммер 20000" #. ~ Description for Battlehammer 20k #: lang/json/BOOK_from_json.py @@ -21013,10 +21202,10 @@ msgstr "" #: lang/json/BOOK_from_json.py msgid "Settlers of the Ranch" msgid_plural "Settlers of the Ranchs" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Поселенцы Ранчо" +msgstr[1] "Поселенца Ранчо" +msgstr[2] "Поселенцев Ранчо" +msgstr[3] "Поселенцы Ранчо" #. ~ Description for Settlers of the Ranch #: lang/json/BOOK_from_json.py @@ -21045,10 +21234,10 @@ msgstr "" #: lang/json/BOOK_from_json.py msgid "Murder Mystery" msgid_plural "Murder Mysterys" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Тайны Убийств" +msgstr[1] "Тайны Убийств" +msgstr[2] "Тайн Убийств" +msgstr[3] "Тайны Убийств" #. ~ Description for Murder Mystery #: lang/json/BOOK_from_json.py @@ -21077,10 +21266,10 @@ msgstr "" #: lang/json/BOOK_from_json.py msgid "Hacking Robots for Fun & Profit" msgid_plural "Hacking Robots for Fun & Profit" -msgstr[0] "«Хакинг роботов для веселья и прибыли»" -msgstr[1] "«Хакинг роботов для веселья и прибыли»" -msgstr[2] "«Хакинг роботов для веселья и прибыли»" -msgstr[3] "«Хакинг роботов для веселья и прибыли»" +msgstr[0] "«Взлом роботов для веселья и прибыли»" +msgstr[1] "«Взлом роботов для веселья и прибыли»" +msgstr[2] "«Взлом роботов для веселья и прибыли»" +msgstr[3] "«Взлом роботов для веселья и прибыли»" #. ~ Description for Hacking Robots for Fun & Profit #: lang/json/BOOK_from_json.py @@ -22204,9 +22393,9 @@ msgid "" "Only the strongest, purest, good ol' fashioned hooch. Guaranteed to make " "you forget about the whole cataclysm thing, or you get your vision back." msgstr "" -"Только сильнейший, чистейший, старый добрый знаменитый самогон. " -"Гарантировано, что он заставит вас забыть обо всех вещах катаклизма, или вы " -"получаете своё зрение обратно." +"Только сильнейший, чистейший, старый добрый знаменитый самогон. С гарантией " +"заставит вас забыть обо всём этом катаклизме, или вы получаете своё зрение " +"обратно." #: lang/json/COMESTIBLE_from_json.py msgid "European pilsner" @@ -22344,7 +22533,7 @@ msgid_plural "atomic coffee" msgstr[0] "атомное кофе" msgstr[1] "атомного кофе" msgstr[2] "атомного кофе" -msgstr[3] "атомное кофе" +msgstr[3] "атомный кофе" #. ~ Description for atomic coffee #: lang/json/COMESTIBLE_from_json.py @@ -23138,7 +23327,7 @@ msgstr "яблоко" #. ~ Description for apple #: lang/json/COMESTIBLE_from_json.py msgid "An apple a day keeps the doctor away." -msgstr "Съедая по яблоку в день, ты экономишь на враче." +msgstr "Кто яблоко в день съедает, у того доктор не бывает." #: lang/json/COMESTIBLE_from_json.py msgid "banana" @@ -23357,7 +23546,7 @@ msgid "" "A delicious fruit-filled pastry that you've cooked. It even comes with " "frosting!" msgstr "" -"Вкусная выпечка с фруктовой начинкой, которую вы приготовили. В сахарной " +"Вкусная выпечка с фруктовой начинкой, приготовленная вами. В сахарной " "глазури!" #. ~ Description for potato chips @@ -24868,8 +25057,8 @@ msgid "" "Now with ONE POUND of meat and ONE POUND of carbs! Not as appetizing or " "nutritious as it would be if heated up." msgstr "" -"Теперь больше на ПОЛКИЛО мяса и ПОЛКИЛО углеводов! Не так аппетитно, как " -"было бы, если подогреть." +"Теперь целых ПОЛКИЛО мяса и ПОЛКИЛО углеводов! Не так аппетитно, как было " +"бы, если подогреть." #: lang/json/COMESTIBLE_from_json.py msgid "cooked TV dinner" @@ -24881,7 +25070,7 @@ msgid "" "Now with ONE POUND of meat and ONE POUND of carbs! Nice and heated up. " "It's tastier and more filling, but will also spoil quickly." msgstr "" -"Теперь больше на ПОЛКИЛО мяса и ПОЛКИЛО углеводов! Вкусный и подогретый. Он " +"Теперь целых ПОЛКИЛО мяса и ПОЛКИЛО углеводов! Вкусный и подогретый. Он " "вкуснее и сытнее, но и портится быстро." #: lang/json/COMESTIBLE_from_json.py @@ -24908,8 +25097,8 @@ msgid "" "A small, microwaveable steak & cheese burrito, like those found at gas " "stations. It's tastier and more filling, but will also spoil quickly." msgstr "" -"Небольшой, подогретый в микроволновке стейк с сыром буррито. Вроде тех, что " -"продавались на автозаправочных станциях. Это вкусно и сытно, но быстро " +"Небольшой стейк с сыром буррито для микроволновки. Вроде тех, что " +"продавались на автозаправочных станциях. Вкусный и сытный, но быстро " "портится." #: lang/json/COMESTIBLE_from_json.py @@ -26354,7 +26543,7 @@ msgid "" "something better if you had an atomic coffee pot." msgstr "" "Молотый кофе. Можно сварить из него средненький стимулятор, либо же что-" -"нибудь более серьёзное, если найдёте атомный кофейник." +"нибудь более серьёзное, если найдёте атомную кофемашину." #: lang/json/COMESTIBLE_from_json.py msgid "powdered milk" @@ -26794,7 +26983,7 @@ msgid "" "like consistency is slightly unsettling no matter how much you drink." msgstr "" "Эта забродившая смесь на основе черники удивительно бодрит, хотя её " -"супообразная консистенция вызывает некоторую тревогу, сколько бы вы не " +"супообразная консистенция вызывает некоторую тревогу, сколько бы вы ни " "выпили." #: lang/json/COMESTIBLE_from_json.py @@ -26901,7 +27090,7 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "sloppy joe" -msgstr "ленивый Джо" +msgstr "неряха Джо" #. ~ Description for sloppy joe #: lang/json/COMESTIBLE_from_json.py @@ -27333,15 +27522,16 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "fast-food French fries" msgid_plural "fast-food French fries" -msgstr[0] "картофель фри фаст-фуд" -msgstr[1] "картофеля фри фаст-фуд" -msgstr[2] "картофеля фри фаст-фуд" -msgstr[3] "картофель фри фаст-фуд" +msgstr[0] "картофель фри быстрого приготовления" +msgstr[1] "картофеля фри быстрого приготовления" +msgstr[2] "картофеля фри быстрого приготовления" +msgstr[3] "картофель фри быстрого приготовления" #. ~ Description for fast-food French fries #: lang/json/COMESTIBLE_from_json.py msgid "Fast-food fried potatoes. Somehow, they're still edible." -msgstr "Картошка фри фаст-фуд. Так или иначе, она всё ещё съедобна." +msgstr "" +"Картошка фри быстрого приготовления. Каким-то образом она всё ещё съедобна." #: lang/json/COMESTIBLE_from_json.py msgid "French fries" @@ -27367,7 +27557,7 @@ msgstr[3] "картошка-фри с сыром" #. ~ Description for cheese fries #: lang/json/COMESTIBLE_from_json.py msgid "Fried potatoes with delicious cheese smothered on top." -msgstr "Картошка-фри с вкуснейшим сыром сверху." +msgstr "Картошка-фри с вкуснейшим сыром." #: lang/json/COMESTIBLE_from_json.py msgid "onion ring" @@ -27376,7 +27566,7 @@ msgstr "луковое кольцо" #. ~ Description for onion ring #: lang/json/COMESTIBLE_from_json.py msgid "Battered and fried onions. Crunchy and delicious." -msgstr "Взбитое тесто и жареные луковые кольца. Хрустящие и вкусные." +msgstr "Жареные луковые кольца. Хрустящие и вкусные." #: lang/json/COMESTIBLE_from_json.py msgid "lemonade drink mix" @@ -27801,8 +27991,8 @@ msgid "" "This traditional Scottish treat is a sweet and filling little boiled cake " "studded with dried fruit." msgstr "" -"Традиционное шотландское блюдо, представляет собой сладкую и сытную жареную " -"лепёшку с сушёными фруктами." +"Традиционное шотландское блюдо, сладкая и сытная заварная лепёшка с сушёными" +" фруктами." #: lang/json/COMESTIBLE_from_json.py msgid "Necco wafer" @@ -28745,7 +28935,7 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "desiccated putrid heart" -msgstr "гнилое сердце сушёное" +msgstr "сушёное гнилое сердце" #. ~ Description for desiccated putrid heart #: lang/json/COMESTIBLE_from_json.py @@ -28754,9 +28944,9 @@ msgid "" "sliced open and drained of blood. It could be eaten if you're hungry, but " "looks *disgusting*." msgstr "" -"Огромная полоска мышц - всё, что осталось от гнилого сердца, которое было " -"разрезано и высушено. Его можно есть, если вы настолько голодны, но выглядит" -" оно *отвратительно*." +"Огромная полоска мышц - всё, что осталось от гнилого сердца, разрезанного и " +"очищенного от крови. Его можно есть, если вы настолько голодны, но выглядит " +"оно *отвратительно*." #: lang/json/COMESTIBLE_from_json.py msgid "Spice" @@ -29380,10 +29570,10 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "fast food milkshake" msgid_plural "fast food milkshakes" -msgstr[0] "молочный коктейль фаст-фуд" -msgstr[1] "молочных коктейля фаст-фуд" -msgstr[2] "молочных коктейлей фаст-фуд" -msgstr[3] "молочный коктейль фаст-фуд" +msgstr[0] "молочный коктейль быстрого приготовления" +msgstr[1] "молочных коктейля быстрого приготовления" +msgstr[2] "молочных коктейлей быстрого приготовления" +msgstr[3] "молочный коктейль быстрого приготовления" #. ~ Description for fast food milkshake #: lang/json/COMESTIBLE_from_json.py @@ -29408,8 +29598,8 @@ msgid "" "This milkshake has been enhanced with added sweeteners, and even has a " "cherry on top. Tastes great, but is fairly awful for your health." msgstr "" -"Этот молочный коктейль улучшен добавлением подсластителей, даже содержит " -"вишенку сверху. Прекрасный вкус, но довольно вредно для вашего здоровья." +"Этот молочный коктейль улучшен подсластителями, есть даже вишенка на " +"верхушке. На вкус великолепен, но довольно вреден для вашего здоровья." #: lang/json/COMESTIBLE_from_json.py msgid "ice cream" @@ -29542,7 +29732,7 @@ msgid "" "Italian-style ice cream. Less airy, and more dense, giving it a richer " "flavor and texture." msgstr "" -"Мороженое в итальянском стиле. Менее воздушное и более плотный, придаёт " +"Мороженое в итальянском стиле. Менее воздушное и более плотное, что придаёт " "более насыщенный аромат и текстуру." #: lang/json/COMESTIBLE_from_json.py @@ -30462,7 +30652,7 @@ msgstr "таблетка из костной муки" #. ~ Description for bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Tastes horribly and is " +"Homemade calcium supplement made out of bone meal. Tastes horrible and is " "hard to swallow but it does its job." msgstr "" "Самодельный препарат кальция, изготовленный из костной муки. На вкус - " @@ -30475,9 +30665,9 @@ msgstr "таблетка из костной муки подслащённая" #. ~ Description for flavored bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Due to some sweetness " -"mixed in to counteract the powdery texture and the taste of ash, almost as " -"palatable as the pre-cataclysm tablets." +"Homemade calcium supplement made out of bone meal. Due to some sweetness " +"mixed in to counteract the powdery texture and the taste of ash, it's almost" +" as palatable as the pre-cataclysm tablets." msgstr "" "Самодельный препарат кальция, изготовленный из костной муки. Добавленный " "подсластитель может скомпенсировать порошкообразную текстуру и вкус пепла, " @@ -30647,9 +30837,8 @@ msgstr "" "Яблочно-красная гель-капсула размером с ноготь, заполненная густой " "маслянистой жидкостью, которая непредсказуемо изменяется от черного до " "фиолетового цвета, покрыта крошечными серыми точками. Учитывая то место, где" -" вы её получили, оно либо очень сильное, либо очень экспериментальное. Держа" -" его в инвентаре, все несильные недуги и боли, кажется, исчезают, на " -"мгновение..." +" вы её получили, оно либо очень сильное, либо очень экспериментальное. Пока " +"вы её держите, боль как будто немного ослабевает..." #: lang/json/COMESTIBLE_from_json.py msgid "abstract mutagen flavor" @@ -31130,7 +31319,7 @@ msgstr "" "Густой и вкусный напиток, сделанный из чистого рафинированного протеина и " "питательных фруктов. Также дополнительно обогащён витаминами и минералами." -#: lang/json/COMESTIBLE_from_json.py src/mission_companion.cpp +#: lang/json/COMESTIBLE_from_json.py src/faction_camp.cpp msgid "seeds" msgid_plural "seeds" msgstr[0] "семена" @@ -31988,12 +32177,12 @@ msgstr "Мощный стимулятор без риска получить з #: lang/json/COMESTIBLE_from_json.py msgid "sewagas inhaler" -msgstr "ингалятор галлюциноген" +msgstr "ингалятор сточного газа" #. ~ Use action activation_message for sewagas inhaler. #: lang/json/COMESTIBLE_from_json.py msgid "You use your sewer gas inhaler." -msgstr "Вы используете ваш ингалятор-карандаш." +msgstr "Вы используете ваш ингалятор сточного газа." #. ~ Description for sewagas inhaler #: lang/json/COMESTIBLE_from_json.py @@ -32006,7 +32195,7 @@ msgstr "антибиотик" #: lang/json/COMESTIBLE_from_json.py msgid "SpOreos" -msgstr "" +msgstr "СпОрео" #. ~ Description for SpOreos #: lang/json/COMESTIBLE_from_json.py @@ -32015,9 +32204,8 @@ msgid "" " Marloss, Chanterelle, and The Encroaching, Unavoidable Death of Human " "Civilization." msgstr "" -"Печенье хит сезона от «Mycus Industries»! Сейчас со вкусом ягод марло, " -"грибочков лисичек и привкусом вторжения тайком, Неизбежная Смерть " -"Человеческой цивилизации." +"Печенье-хит сезона от «Микус Индастриз»! Теперь с увлекательными вкусами " +"Марло, Лисичек и Неизбежного Конца Человеческой Цивилизации." #: lang/json/COMESTIBLE_from_json.py msgid "resinous cord" @@ -32283,7 +32471,7 @@ msgid "" "it certainly is not wheat flour! It is useful for baking though." msgstr "" "Вы думаете, это кукурузная... или рисовая мука ... Или что-то ещё. Однако, " -"конечно, это не пшеничная мука! Она полезна для выпечки." +"конечно, это не пшеничная мука! Впрочем, годится для выпечки." #: lang/json/COMESTIBLE_from_json.py msgid "gluten free johnnycake" @@ -32295,7 +32483,7 @@ msgid "" "We all crave for cake sometimes. This is not perfect, but it is a tasty and " "nutritious gluten free fried bread treat. " msgstr "" -"Все мы иногда желаем пирога. Он не идеален, но это вкусная и питательная " +"Всем нам иногда хочется пирога. Он не идеален, но это вкусная и питательная " "обжаренная хлебная лепёшка. Не содержит глютен." #: lang/json/COMESTIBLE_from_json.py @@ -32511,7 +32699,7 @@ msgstr "Сэндвич из мяса с приправами. Не содерж #: lang/json/COMESTIBLE_from_json.py msgid "gluten free sloppy joe" -msgstr "ленивый Джо (без глютена)" +msgstr "неряха Джо (без глютена)" #. ~ Description for gluten free sloppy joe #: lang/json/COMESTIBLE_from_json.py @@ -32665,8 +32853,7 @@ msgstr "вафля (без глютена)" #. ~ Description for gluten free waffle #: lang/json/COMESTIBLE_from_json.py msgid "Gluten free waffle. It's basically a pancake in hashtag form." -msgstr "" -"Вафля. Это в основном блинчик с оттиском на поверхности. Не содержит глютен." +msgstr "Просто блинчик с оттиском на поверхности. Не содержит глютен." #: lang/json/COMESTIBLE_from_json.py msgid "lactose free waffle" @@ -32675,9 +32862,7 @@ msgstr "вафля (без лактозы)" #. ~ Description for lactose free waffle #: lang/json/COMESTIBLE_from_json.py msgid "Lactose free waffle. It's basically a pancake in hashtag form." -msgstr "" -"Вафля. Это в основном блинчик с оттиском на поверхности. Не содержит " -"лактозы." +msgstr "Просто блинчик с оттиском на поверхности. Не содержит лактозы." #. ~ Description for lactose free waffle #: lang/json/COMESTIBLE_from_json.py @@ -32685,8 +32870,8 @@ msgid "" "Gluten free and lactose free waffle. It's basically a pancake in hashtag " "form." msgstr "" -"Вафля. Это в основном блинчик с оттиском на поверхности. Не содержит глютен." -" Не содержит лактозы." +"Просто блинчик с оттиском на поверхности. Не содержит глютен. Не содержит " +"лактозы." #: lang/json/COMESTIBLE_from_json.py msgid "gluten free fruit waffle" @@ -32957,8 +33142,8 @@ msgid "" "It's a two-liter plastic bottle that can hold a lot of soda, or, nowadays, " "boiled water." msgstr "" -"Это двухлитровая пластиковая бутылка, которая может содержать много содовой " -"или, как сейчас, кипячёной воды." +"Двухлитровая пластиковая бутылка, способная вместить много газировки или " +"кипячёной воды." #: lang/json/CONTAINER_from_json.py msgid "clay bowl" @@ -33470,8 +33655,7 @@ msgid "" "A reusable lightweight aluminum keg, used for shipping beer. It has a " "capacity of 50 liters." msgstr "" -"Лёгкий алюминиевый бочонок, используемый для продажи пива. Пригоден для " -"повторного использования. Объём 50 литров." +"Многоразовый лёгкий алюминиевый бочонок для перевозки пива. Объём 50 литров." #: lang/json/CONTAINER_from_json.py msgid "steel keg" @@ -33642,7 +33826,7 @@ msgstr[3] "полистирольный стаканчик" #. ~ Description for styrofoam cup #: lang/json/CONTAINER_from_json.py msgid "A cheap, disposable cup with a plastic lid and straw." -msgstr "Дешёвый одноразовый стаканчик с пластиковой крышкой и соломкой." +msgstr "Дешёвый одноразовый стаканчик с пластиковой крышкой и трубочкой." #: lang/json/CONTAINER_from_json.py msgid "plastic tub" @@ -33704,8 +33888,7 @@ msgstr[3] "бочка токсичных отходов" #. ~ Description for hazardous waste drum #: lang/json/CONTAINER_from_json.py msgid "A yellow drum meant for the storage of hazardous substances." -msgstr "" -"Бочка специфического жёлтого цвета для хранения опасных токсичных отходов." +msgstr "Жёлтая бочка для хранения опасных токсичных веществ." #: lang/json/CONTAINER_from_json.py msgid "steel bottle" @@ -34169,7 +34352,7 @@ msgstr[3] "орехи пекан" #. ~ Description for pecan #: lang/json/GENERIC_from_json.py msgid "A handful of hard nuts from a pecan tree, still in their shell." -msgstr "Горсть твёрдых орехов дерева пекан, по-прежнему в своей скорлупе." +msgstr "Горсть твёрдых орехов дерева пекан, всё ещё в скорлупе." #: lang/json/GENERIC_from_json.py msgid "pistachio" @@ -34182,8 +34365,7 @@ msgstr[3] "фисташки" #. ~ Description for pistachio #: lang/json/GENERIC_from_json.py msgid "A handful of hard nuts from a pistachio tree, still in their shell." -msgstr "" -"Горсть твёрдых орехов фисташкового дерева, по-прежнему в своей скорлупе." +msgstr "Горсть твёрдых орехов фисташкового дерева, всё ещё в скорлупе." #: lang/json/GENERIC_from_json.py msgid "almond" @@ -34196,8 +34378,7 @@ msgstr[3] "миндаль" #. ~ Description for almond #: lang/json/GENERIC_from_json.py msgid "A handful of hard nuts from a almond tree, still in their shell." -msgstr "" -"Горсть твёрдых орехов миндального дерева, по-прежнему в своей скорлупе." +msgstr "Горсть твёрдых орехов миндального дерева, всё ещё в скорлупе." #: lang/json/GENERIC_from_json.py msgid "peanut" @@ -34210,8 +34391,7 @@ msgstr[3] "арахис" #. ~ Description for peanut #: lang/json/GENERIC_from_json.py msgid "A handful of hard nuts from a peanut bush, still in their shell." -msgstr "" -"Горсть твёрдых орехов арахисового кустарника, по-прежнему в своей скорлупе." +msgstr "Горсть твёрдых орехов арахисового кустарника, всё ещё в скорлупе." #: lang/json/GENERIC_from_json.py msgid "hazelnut" @@ -34224,7 +34404,7 @@ msgstr[3] "лещина" #. ~ Description for hazelnut #: lang/json/GENERIC_from_json.py msgid "A handful of hard nuts from a hazelnut tree, still in their shell." -msgstr "Горсть твёрдых орехов лещины, по-прежнему в своей скорлупе." +msgstr "Горсть твёрдых орехов лещины, всё ещё в скорлупе." #: lang/json/GENERIC_from_json.py msgid "chestnut" @@ -34237,8 +34417,7 @@ msgstr[3] "каштан" #. ~ Description for chestnut #: lang/json/GENERIC_from_json.py msgid "A handful of hard nuts from a chestnut tree, still in their shell." -msgstr "" -"Горсть твёрдых орехов каштанового дерева, по-прежнему в своей скорлупе." +msgstr "Горсть твёрдых орехов каштанового дерева, всё ещё в скорлупе." #: lang/json/GENERIC_from_json.py msgid "walnut" @@ -34251,7 +34430,7 @@ msgstr[3] "грецкий орех" #. ~ Description for walnut #: lang/json/GENERIC_from_json.py msgid "A handful of hard nuts from a walnut tree, still in their shell." -msgstr "Горсть твёрдых грецких орехов, по-прежнему в своей скорлупе." +msgstr "Горсть твёрдых грецких орехов, всё ещё в скорлупе." #: lang/json/GENERIC_from_json.py msgid "bone" @@ -34417,6 +34596,41 @@ msgid "" "when you look at them." msgstr "Горсть тлеющих углей, испускающих дым. Они медленно потухают." +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "магический шар-восьмёрка" +msgstr[1] "магических шара-восьмёрки" +msgstr[2] "магических шаров-восьмёрок" +msgstr[3] "магический шар-восьмёрка" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "" +"Устройство гадания из 1950-х годов. Такая моральная поддержка, о которой вы " +"не знали, что она вам нужна." + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "счастливый четвертак" +msgstr[1] "счастливых четвертака" +msgstr[2] "счастливых четвертаков" +msgstr[3] "счастливый четвертак" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "" +"Уже устаревшая разновидность денег. Лишенная своей первоначальной цели, она " +"теперь всецело принадлежит последнему и единственному своему применению: " +"вершить судьбы, крутясь в воздухе над ладонями всяких легкомысленных типов." + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -34503,10 +34717,10 @@ msgstr "Маленький комок меха животных. Использ #: lang/json/GENERIC_from_json.py msgid "faux fur pelt" msgid_plural "faux fur pelts" -msgstr[0] "искусственная шкура" -msgstr[1] "искусственные шкуры" -msgstr[2] "искусственных шкур" -msgstr[3] "искусственная шкура" +msgstr[0] "кусок искусственного меха" +msgstr[1] "куска искусственного меха" +msgstr[2] "кусков искусственного меха" +msgstr[3] "кусок искусственного меха" #. ~ Description for faux fur pelt #: lang/json/GENERIC_from_json.py @@ -34646,8 +34860,8 @@ msgid "" "A lump of exoskeleton that has undergone biosilicification. It is acid-" "resistant and remarkably sturdy." msgstr "" -"Крупный кусок экзоскелета, который подвергся биосилицификации. " -"Кислотостойкий и необыкновенно прочный." +"Крупный кусок биосилифицированного экзоскелета. Кислотостойкий и " +"необыкновенно прочный." #: lang/json/GENERIC_from_json.py msgid "bundle of rags" @@ -35227,10 +35441,10 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "broken skitterbot" msgid_plural "broken skitterbots" -msgstr[0] "сломанный охранный робот" -msgstr[1] "сломанных охранных робота" -msgstr[2] "сломанных охранных роботов" -msgstr[3] "сломанный охранный робот" +msgstr[0] "сломанный робот-жук" +msgstr[1] "сломанных робота-жука" +msgstr[2] "сломанных роботов-жуков" +msgstr[3] "сломанный робот-жук" #. ~ Description for broken skitterbot #: lang/json/GENERIC_from_json.py @@ -35238,8 +35452,8 @@ msgid "" "A broken skitterbot. Much less threatening now that it lies limp on solid " "ground. Could be gutted for parts." msgstr "" -"Сломанный охранный робот. Сейчас он лежит на земле и не представляет угрозы." -" Можно разобрать на запчасти." +"Сломанный робот-жук. Сейчас он лежит на земле и не представляет угрозы. " +"Можно разобрать на запчасти." #: lang/json/GENERIC_from_json.py msgid "broken police bot" @@ -35738,10 +35952,10 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "ceramic plate" msgid_plural "ceramic plates" -msgstr[0] "керамическая пластина" -msgstr[1] "керамических пластины" -msgstr[2] "керамических пластин" -msgstr[3] "керамическая пластина" +msgstr[0] "керамическая тарелка" +msgstr[1] "керамических тарелки" +msgstr[2] "керамических тарелок" +msgstr[3] "керамическая тарелка" #. ~ Description for ceramic plate #: lang/json/GENERIC_from_json.py @@ -37234,7 +37448,7 @@ msgid "" "This is a solid wood 'training' katana, but feels far too light to make an " "effective weapon." msgstr "" -"Это прочная деревянная «тренировочная» катана, слишком легка, чтобы быть " +"Прочная деревянная «тренировочная» катана, слишком легкая, чтобы быть " "эффективным оружием." #. ~ Description for bokken @@ -37243,8 +37457,8 @@ msgid "" "This is a solid wood 'training' katana, but it looks to be mass produced, " "and not quite as effective as the real deal." msgstr "" -"Это прочная деревянная «тренировочная» катана, выглядит массивной и не столь" -" эффективна как настоящая вещь." +"Прочная деревянная «тренировочная» катана фабричного производства. Не так " +"эффективна, как настоящая." #: lang/json/GENERIC_from_json.py msgid "cudgel" @@ -37672,7 +37886,7 @@ msgstr "" "Длинная деревянная палка с несколькими кусками стали, привязанными на конце." " Медленная в обращении, но очень мощная." -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "доска" @@ -38746,8 +38960,8 @@ msgid "" "This is a huge, curved, two-handed sword from Japan. It is surprisingly " "light for its size, but also much bendier than a sword should be." msgstr "" -"Огромный изогнутый двуручный меч из Японии. Удивительно лёгок для своего " -"размера, но и гораздо более изогнутый чем меч." +"Огромный изогнутый двуручный меч из Японии. Удивительно лёгкий для своего " +"размера и очень гибкий." #: lang/json/GENERIC_from_json.py msgid "pitchfork" @@ -38763,8 +38977,8 @@ msgid "" "An agricultural tool with long wooden shaft and four spikes. Is used to " "lift hay." msgstr "" -"Аграрный инструмент с длинным деревянным древком и четырьмя шипами. " -"Используется для сбора сена и обработки земли." +"Сельскохозяйственный инструмент с длинным деревянным древком и четырьмя " +"шипами. Используется для подъёма сена." #: lang/json/GENERIC_from_json.py msgid "bullwhip" @@ -38782,10 +38996,9 @@ msgid "" "flaying the rotten flesh off of walking corpses. Great for when a problem " "comes along." msgstr "" -"Длинная полоса сплетённой кожи с ручкой на конце. Изначально использовался " -"чтобы управиться со скотом, теперь же его лучше использовать для снятия " -"гнилой плоти с ходячих трупов. Отличное решение, когда на пути возникают " -"проблемы." +"Длинная полоса сплетённой кожи с ручкой на конце. Изначально использовался, " +"чтобы управляться со скотом, теперь же им удобно сдирать гнилую плоть с " +"ходячих трупов. Отличное решение для проблем." #: lang/json/GENERIC_from_json.py lang/json/TOOL_from_json.py #: lang/json/TOOL_from_json.py @@ -38914,7 +39127,7 @@ msgid "" "made." msgstr "" "Средневековое оружие, состоящее из деревянного древка с железным " -"наконечником. Наконечник довольно тупой и всё оружие плохо сделано." +"наконечником. Наконечник довольно тупой, и вообще всё сделано плохо." #. ~ Description for mace #: lang/json/GENERIC_from_json.py @@ -38922,8 +39135,8 @@ msgid "" "A light, cheaply made replica of a medieval weapon that would normally " "consist of a wood handle with a heavy iron end." msgstr "" -"Лёгкая дешёвая подделка средневекового оружия, которое обычно состояло бы из" -" деревянной ручки с тяжёлым железным наконечником." +"Лёгкая дешёвая подделка средневекового оружия, обычно состоящего из " +"деревянной ручки с тяжёлым железным наконечником." #. ~ Description for mace #: lang/json/GENERIC_from_json.py @@ -38940,8 +39153,8 @@ msgid "" "A light, cheaply made replica of a medieval weapon that would normally " "consist of a wood handle with a heavy, spiked iron ball on the end." msgstr "" -"Лёгкая дешёвая подделка средневекового оружия, которое обычно состояло бы из" -" деревянной ручки с тяжёлым железным наконечником-навершием на конце." +"Лёгкая дешёвая подделка средневекового оружия, обычно состоящего из " +"деревянной ручки с тяжёлым железным наконечником-навершием на конце." #. ~ Description for morningstar #: lang/json/GENERIC_from_json.py @@ -38950,7 +39163,7 @@ msgid "" " on the end. That end feels lighter than it should." msgstr "" "Средневековое оружие, состоящее из деревянной ручки с тяжёлым железным " -"наконечником-навершием на конце. Навершие немного легче чем должно быть." +"наконечником-навершием на конце. Навершие немного легче, чем должно быть." #: lang/json/GENERIC_from_json.py lang/json/TOOL_from_json.py msgid "tanto" @@ -38967,7 +39180,7 @@ msgid "" "used as a samurai's backup weapon." msgstr "" "Тупая и дешёвая подделка длинного японского ножа, обычно используемого в " -"качестве резервного оружия самурая." +"качестве запасного оружия самурая." #. ~ Description for tanto #: lang/json/GENERIC_from_json.py @@ -38976,9 +39189,9 @@ msgid "" "weapon, before the advent of the larger wakizashi. This one doesn't feel " "well-balanced" msgstr "" -"Когда-то длинные японские ножи, подобные этому, более современному ремейку, " -"были резервным оружием самурая, до появления более крупного вакидзаси. Этот " -"образец немного не сбалансирован." +"Когда-то длинные японские ножи, подобные этой современной переделке, были " +"запасным оружием самурая до появления более крупного вакидзаси. Этот образец" +" немного не сбалансирован." #: lang/json/GENERIC_from_json.py msgid "flyer" @@ -39882,12 +40095,9 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." +"spike." msgstr "" -"Средневековое оружие, состоящее из деревянного стержня, покрытого железными " -"шипами. Большое и тяжёлое по сравнению с другими копьями, но имеет " -"непревзойдённую точность и урон." +"Это средневековое оружие, состоящее из древка с наконечником из железа." #: lang/json/GENERIC_from_json.py msgid "pot" @@ -39937,10 +40147,10 @@ msgid "" "displace the water above the lids." msgstr "" "Очень большая 25-литровая кастрюля, предназначенная главным образом для " -"консервирования в стеклянные банки на водяной бане, хотя она также может " -"использоваться для готовки обычных продуктов. Консервирующие продукты с ней " -"потребляют много воды. Если вы только консервируете пару банок за раз, вы " -"наполните её камнями или чем-то, чтобы вытеснить воду над крышками." +"консервирования стеклянных банок на водяной бане, хотя в ней можно готовить " +"и обычную еду. Такое консервирование требует много воды. Если вы " +"консервируете пару банок за раз, нужно наполнить кастрюлю камнями или чем-то" +" подобным, чтобы вода накрыла крышки." #: lang/json/GENERIC_from_json.py msgid "restaurant guide" @@ -40628,8 +40838,8 @@ msgid "" "A very small fridge for keeping food cool. Provides some insulation from " "outside weather." msgstr "" -"Очень маленький холодильник для хранения пищи. Обеспечивает некоторую " -"изоляцию от внешней среды." +"Очень маленький холодильник для хранения продуктов в прохладе. Немного " +"изолирует от внешней среды." #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "minifreezer" @@ -40645,8 +40855,8 @@ msgid "" "Compact version of a chest freezer, designed as a mobile solution for " "freezing food. Provides insulation from the elements." msgstr "" -"Компактная версия морозильной камеры, разработанная как мобильное решение " -"для замораживания пищи. Обеспечивает изоляцию от внешней среды." +"Компактный передвижной вариант морозильной камеры. Изолирует от внешней " +"среды." #: lang/json/GENERIC_from_json.py lang/json/furniture_from_json.py #: lang/json/vehicle_part_from_json.py @@ -40922,7 +41132,7 @@ msgid "" "meant to hold large animals for transport. Use it on a suitable animal to " "capture, use it on an empty tile to release." msgstr "" -"Тяжёлая рама снабжённая шарнирами и креплениями для перевозки грузов, с " +"Тяжёлая рама, снабжённая шарнирами и креплениями для перевозки грузов с " "дополнительным ограждением для удержания на месте крупных животных. " "Предназначена для перевозки крупных животных. Используйте на подходящем " "животном, чтобы поймать его, либо же используйте на пустом тайле, чтобы " @@ -40966,7 +41176,7 @@ msgid "" msgstr "" "Набор труб, упоров и ремней, установленных на краю транспорта и используемых" " как опорная стойка для другого транспортного средства для его перевозки. " -"Необходимо установить на транспорте, которое будет использоваться." +"Необходимо установить на транспорте." #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "floodlight" @@ -40999,10 +41209,10 @@ msgid "" "that space. The system can only be installed in existing storage " "compartments." msgstr "" -"Станция зарядки, работающая от универсального блока питания. После установки" -" в грузовой отсек машины и включения через систему управления начинает " -"медленно заряжать в нём всё, у чего есть аккумулятор. Систему можно " -"установить только в уже имеющиеся грузовые отсеки." +"Станция зарядки Унифицированных Блоков Питания, предназначенная для " +"подключения к автомобильному аккумулятору. Устанавливается в уже имеющийся " +"грузовой отсек. После включения через систему управления медленно заряжает в" +" нём всё, у чего есть аккумулятор." #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py #: lang/json/vehicle_part_from_json.py @@ -42672,8 +42882,8 @@ msgid "" "An extendable metal pylon used to replace a portable jack. If mounted to a " "vehicle, it could be used to lift it up." msgstr "" -"Выдвижной металлический пилон, используемый для замены портативного " -"домкрата. Если он установлен на машине, его можно использовать как домкрат." +"Выдвижная металлическая опора, замена портативного домкрата. Может " +"использоваться для подъёма машины, на которой установлен." #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "motorcycle kickstand" @@ -42690,7 +42900,7 @@ msgid "" "it forward or backward to change a tire." msgstr "" "Подножка, чтобы транспорт не упал. Вы можете использовать её, чтобы " -"наклонить его вперёд или назад, чтобы заменить шину." +"наклонить его вперёд или назад для замены шины." #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "shredder" @@ -43598,16 +43808,16 @@ msgid "" "A broken 9mm defense turret. Much less threatening now that it lies limp on" " solid ground. Could be gutted for parts." msgstr "" -"Сломанная оборонная 9 мм турель. Теперь она лежит на земле и мало чем " +"Сломанная оборонная 9-мм турель. Теперь она лежит на земле и мало чем " "угрожает. Её можно разобрать на запчасти." #: lang/json/GENERIC_from_json.py msgid "broken 9mm turret" msgid_plural "broken 9mm turrets" -msgstr[0] "сломанная 9 мм турель" -msgstr[1] "сломанные 9 мм турели" -msgstr[2] "сломанных 9 мм турелей" -msgstr[3] "сломанная 9 мм турель" +msgstr[0] "сломанная 9-мм турель" +msgstr[1] "сломанные 9-мм турели" +msgstr[2] "сломанных 9-мм турелей" +msgstr[3] "сломанная 9-мм турель" #. ~ Description for broken 9mm turret #: lang/json/GENERIC_from_json.py @@ -43615,8 +43825,8 @@ msgid "" "A broken shotgun defense turret. Much less threatening now that it lies " "limp on solid ground. Could be gutted for parts." msgstr "" -"Сломанная оборонная дробовик турель. Теперь она лежит на земле и мало чем " -"угрожает. Её можно разобрать на запчасти." +"Сломанная оборонная турель с дробовиком. Теперь она лежит на земле и мало " +"чем угрожает. Её можно разобрать на запчасти." #: lang/json/GENERIC_from_json.py msgid "broken riot control turret" @@ -43646,10 +43856,10 @@ msgstr[3] "сломанная турель осназа" #: lang/json/GENERIC_from_json.py msgid "broken 5.56mm turret" msgid_plural "broken 5.56mm turrets" -msgstr[0] "сломанная 5,56 мм турель" -msgstr[1] "сломанные 5,56 мм турели" -msgstr[2] "сломанных 5,56 мм турелей" -msgstr[3] "сломанная 5,56 мм турель" +msgstr[0] "сломанная 5,56-мм турель" +msgstr[1] "сломанные 5,56-мм турели" +msgstr[2] "сломанных 5,56-мм турелей" +msgstr[3] "сломанная 5,56-мм турель" #. ~ Description for broken 5.56mm turret #: lang/json/GENERIC_from_json.py @@ -43657,16 +43867,16 @@ msgid "" "A broken military-grade 5.56mm turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" -"Сломанная военного образца 5,56 мм турель. Теперь она лежит на земле и мало " -"чем угрожает. Её можно разобрать на запчасти." +"Сломанная военная 5,56-мм турель. Теперь она лежит на земле и мало чем " +"угрожает. Её можно разобрать на запчасти." #: lang/json/GENERIC_from_json.py msgid "broken 7.62mm turret" msgid_plural "broken 7.62mm turrets" -msgstr[0] "сломанная 7,62 мм турель" -msgstr[1] "сломанные 7,62 мм турели" -msgstr[2] "сломанных 7,62 мм турелей" -msgstr[3] "сломанная 7,62 мм турель" +msgstr[0] "сломанная 7,62-мм турель" +msgstr[1] "сломанные 7,62-мм турели" +msgstr[2] "сломанных 7,62-мм турелей" +msgstr[3] "сломанная 7,62-мм турель" #. ~ Description for broken 7.62mm turret #: lang/json/GENERIC_from_json.py @@ -43674,16 +43884,16 @@ msgid "" "A broken military-grade 7.62mm turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" -"Сломанная военного образца 7,62 мм турель. Теперь она лежит на земле и мало " -"чем угрожает. Её можно разобрать на запчасти." +"Сломанная военная 7,62-мм турель. Теперь она лежит на земле и мало чем " +"угрожает. Её можно разобрать на запчасти." #: lang/json/GENERIC_from_json.py msgid "broken 50cal turret" msgid_plural "broken 50cal turrets" -msgstr[0] "сломанная .50 турель" -msgstr[1] "сломанные .50 турели" -msgstr[2] "сломанных .50 турелей" -msgstr[3] "сломанная .50 турель" +msgstr[0] "сломанная турель .50 калибра" +msgstr[1] "сломанные турели .50 калибра" +msgstr[2] "сломанных турелей .50 калибра" +msgstr[3] "сломанная турель .50 калибра" #. ~ Description for broken 50cal turret #: lang/json/GENERIC_from_json.py @@ -43691,16 +43901,16 @@ msgid "" "A broken military-grade 50 caliber turret. Much less threatening now that " "it lies limp on solid ground. Could be gutted for parts." msgstr "" -"Сломанная военного образца .50-калиберная турель. Теперь она лежит на земле " -"и мало чем угрожает. Её можно разобрать на запчасти." +"Сломанная военная турель .50 калибра. Теперь она лежит на земле и мало чем " +"угрожает. Её можно разобрать на запчасти." #: lang/json/GENERIC_from_json.py msgid "broken 40mm turret" msgid_plural "broken 40mm turrets" -msgstr[0] "сломанная 40 мм турель" -msgstr[1] "сломанные 40 мм турели" -msgstr[2] "сломанных 40 мм турелей" -msgstr[3] "сломанная 40 мм турель" +msgstr[0] "сломанная 40-мм турель" +msgstr[1] "сломанные 40-мм турели" +msgstr[2] "сломанных 40-мм турелей" +msgstr[3] "сломанная 40-мм турель" #. ~ Description for broken 40mm turret #: lang/json/GENERIC_from_json.py @@ -43708,8 +43918,8 @@ msgid "" "A broken military-grade 40mm grenade turret. Much less threatening now that" " it lies limp on solid ground. Could be gutted for parts." msgstr "" -"Сломанная военного образца 40 мм гранатомётная турель. Теперь она лежит на " -"земле и мало чем угрожает. Её можно разобрать на запчасти." +"Сломанная военная 40-мм гранатомётная турель. Теперь она лежит на земле и " +"мало чем угрожает. Её можно разобрать на запчасти." #. ~ Description for broken 5.56mm turret #: lang/json/GENERIC_from_json.py @@ -43717,16 +43927,16 @@ msgid "" "A broken military-grade 5x50 flechette turret. Much less threatening now " "that it lies limp on solid ground. Could be gutted for parts." msgstr "" -"Сломанная военного образца 5x50 мм флешетты турель. Теперь она лежит на " +"Сломанная военная турель с флешеттами калибра 5x50 мм. Теперь она лежит на " "земле и мало чем угрожает. Её можно разобрать на запчасти." #: lang/json/GENERIC_from_json.py msgid "broken 8x40mm turret" msgid_plural "broken 8x40mm turrets" -msgstr[0] "сломанная 8х40 мм турель" -msgstr[1] "сломанные 8х40 мм турели" -msgstr[2] "сломанных 8х40 мм турелей" -msgstr[3] "сломанная 8х40 мм турель" +msgstr[0] "сломанная 8х40-мм турель" +msgstr[1] "сломанные 8х40-мм турели" +msgstr[2] "сломанных 8х40-мм турелей" +msgstr[3] "сломанная 8х40-мм турель" #. ~ Description for broken 8x40mm turret #: lang/json/GENERIC_from_json.py @@ -43734,8 +43944,8 @@ msgid "" "A broken military-grade 8x40mm turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" -"Сломанная военного образца 8х40 мм турель. Теперь она лежит на земле и мало " -"чем угрожает. Её можно разобрать на запчасти." +"Сломанная военная 8х40-мм турель. Теперь она лежит на земле и мало чем " +"угрожает. Её можно разобрать на запчасти." #: lang/json/GENERIC_from_json.py msgid "broken flamethrower turret" @@ -43751,8 +43961,8 @@ msgid "" "A broken military-grade flamethrower turret. Much less threatening now that" " it lies limp on solid ground. Could be gutted for parts." msgstr "" -"Сломанная военного образца огнемётная турель. Теперь она лежит на земле и " -"мало чем угрожает. Её можно разобрать на запчасти." +"Сломанная военная огнемётная турель. Теперь она лежит на земле и мало чем " +"угрожает. Её можно разобрать на запчасти." #: lang/json/GENERIC_from_json.py msgid "broken laser turret" @@ -43845,8 +44055,8 @@ msgid "" "A broken advanced electro caster turret. Much less threatening now that it " "lies limp on solid ground. Could be gutted for parts." msgstr "" -"Сломанная улучшенная электро турель. Теперь она лежит на земле и мало чем " -"угрожает. Её можно разобрать на запчасти." +"Сломанная улучшенная электро излучающая турель. Теперь она лежит на земле и " +"мало чем угрожает. Её можно разобрать на запчасти." #: lang/json/GENERIC_from_json.py msgid "broken EMP turret" @@ -43931,10 +44141,10 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "broken disarmed skitterbot" msgid_plural "broken disarmed skitterbots" -msgstr[0] "сломанный охранный робот (разоружено)" -msgstr[1] "сломанных охранных робота (разоружено)" +msgstr[0] "сломанный робот-жук (разоружено)" +msgstr[1] "сломанных робота-жука (разоружено)" msgstr[2] "сломанных охранных роботов (разоружено)" -msgstr[3] "сломанный охранный робот (разоружено)" +msgstr[3] "сломанный роботов-жуков (разоружено)" #. ~ Description for broken disarmed skitterbot #: lang/json/GENERIC_from_json.py @@ -43942,7 +44152,7 @@ msgid "" "A broken skitterbot. Its internal weapon modules have been removed. Could " "be gutted for parts or crafted into a salvaged robot." msgstr "" -"Сломанный охранный робот. Его внутренние модули вооружения удалены. Можно " +"Сломанный робот-жук. Его внутренние модули вооружения удалены. Можно " "разобрать на запчасти или отремонтировать." #. ~ Description for broken skitterbot @@ -43951,7 +44161,7 @@ msgid "" "A broken skitterbot, now harmless and inert. Could be stripped of integral " "weapon modules." msgstr "" -"Сломанный охранный робот. Теперь безопасный и неактивный. Можно разобрать и " +"Сломанный робот-жук. Теперь безопасный и неактивный. Можно разобрать и " "получить встроенные модули вооружения." #: lang/json/GENERIC_from_json.py @@ -44157,7 +44367,7 @@ msgid_plural "integral flechette firearms" msgstr[0] "встроенное оружие флешетты" msgstr[1] "встроенных оружия флешетты" msgstr[2] "встроенных оружий флешетты" -msgstr[3] "встроенное оружие флешетты" +msgstr[3] "встроенное оружие с флешеттами" #: lang/json/GENERIC_from_json.py msgid "integral 8x40mm firearm" @@ -44221,10 +44431,10 @@ msgstr[3] "встроенное оружие кислотное" #: lang/json/GENERIC_from_json.py msgid "integral electro caster" msgid_plural "integral electro casters" -msgstr[0] "встроенное электро оружие" -msgstr[1] "встроенных электро оружия" -msgstr[2] "встроенных электро оружий" -msgstr[3] "встроенное электро оружие" +msgstr[0] "встроенный электро излучатель" +msgstr[1] "встроенных электро излучателя" +msgstr[2] "встроенных электро излучателей" +msgstr[3] "встроенный электро излучатель" #: lang/json/GENERIC_from_json.py msgid "integral EMP projector" @@ -44804,7 +45014,7 @@ msgid_plural "broken junkyard cowboys" msgstr[0] "сломанный механический ковбой" msgstr[1] "сломанных механических ковбоя" msgstr[2] "сломанных механических ковбоев" -msgstr[3] "сломанный механический ковбой" +msgstr[3] "сломанный мусорный ковбой" #. ~ Description for broken junkyard cowboy #. ~ Description for broken shortcircuit samurai @@ -44820,7 +45030,7 @@ msgid_plural "broken shortcircuit samurais" msgstr[0] "сломанный сбойный самурай" msgstr[1] "сломанных сбойных самурая" msgstr[2] "сломанных сбойных самураев" -msgstr[3] "сломанный сбойный самурай" +msgstr[3] "сломанный короткозамыкающий самурай" #: lang/json/GENERIC_from_json.py msgid "broken slapdash paladin" @@ -45097,10 +45307,10 @@ msgstr[3] "сломанный цепляющийся кошмар" #: lang/json/GENERIC_from_json.py msgid "broken fist king" msgid_plural "broken fist kings" -msgstr[0] "сломанный мастер-боец" -msgstr[1] "сломанных мастер-бойца" -msgstr[2] "сломанных мастер-бойцов" -msgstr[3] "сломанный мастер-боец" +msgstr[0] "сломанный кулачный король" +msgstr[1] "сломанных кулачных короля" +msgstr[2] "сломанных кулачных королей" +msgstr[3] "сломанный кулачный король" #. ~ Description for broken fist king #. ~ Description for broken atomic sultan @@ -45278,15 +45488,13 @@ msgid "" " be in contact with it; and it appears unnervingly willing to accomodate " "you..." msgstr "" -"Эта аморфная масса, похоже, окончательно развилась; её усовершенствованные " -"внутренние структуры свидетельствуют об этом. Способна к передвижению " -"благодаря внутреннему гидравлическому давлению, способна двигать большие " -"грузы, и, показывая поразительный интеллект, способна управлять чем-либо " -"основанным на структуре сгустков, к чему присоединится или иным способом, с " -"помощью длинных ложноножек. Вы думаете, что смогли бы управлять этим, и " -"через него, всеми присоединёнными частями. Хотя сделав это, вы должны будете" -" присоединить себя тоже к общей массе; вам это кажется расслабляюще " -"желанным, вы мечтаете слиться в одно целое..." +"Эта аморфная масса окончательно развилась, как видно по сложным внутренним " +"структурам. Она может передвигаться благодаря внутреннему гидравлическому " +"давлению, способна двигать большие грузы, и, показывая удивительный разум, " +"способна управлять чем угодно с помощью длинных ложноножек. Наверное, у вас " +"получится управлять аморфным сердцем и всем, к чему оно прикрепилось. Для " +"этого вам придется сесть поближе и войти в контакт; похоже, оно с " +"нетерпением жаждет принять вас..." #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "solar array" @@ -45326,12 +45534,10 @@ msgid "" "improves efficiency due to being able to track the sun. However, this comes" " at the cost of being prohibitively heavy and obstructive." msgstr "" -"Комплект из дюжины мощных солнечных панелей, установленный на подвижное " -"шасси, достигает нескольких метров в высоту. Обеспечивает безопасность " -"хрупкого массива солнечных панелей от любых потенциальных угроз и повышает " -"эффективность работы, благодаря возможности отслеживать солнце. Однако, вес " -"конструкции при этом становится непомерно велик и представляет собой " -"препятствие." +"Конструкция из дюжины мощных солнечных панелей нескольких метров в высоту на" +" подвижном шасси. Оберегает хрупкие солнечные панели от потенциальной " +"опасности и повышает эффективность работы благодаря возможности " +"поворачиваться за солнцем. Однако конструкция становится непомерно тяжёлой." #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "upgraded reinforced solar array" @@ -45350,12 +45556,11 @@ msgid "" "However, this comes at the cost of being prohibitively heavy and " "obstructive." msgstr "" -"Комплект из дюжины мощных усиленных солнечных панелей, установленный на " -"подвижное шасси, достигает нескольких метров в высоту. Обеспечивает " -"безопасность хрупкого массива солнечных панелей от любых потенциальных угроз" -" и повышает эффективность работы, благодаря возможности отслеживать солнце. " -"Однако, вес конструкции при этом становится непомерно велик и представляет " -"собой препятствие." +"Конструкция из дюжины мощных усиленных солнечных панелей нескольких метров в" +" высоту на подвижном шасси. Оберегает хрупкие солнечные панели от " +"потенциальной опасности и повышает эффективность работы благодаря " +"возможности поворачиваться за солнцем. Однако конструкция становится " +"непомерно тяжёлой." #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "turret chassis" @@ -45375,13 +45580,11 @@ msgid "" "system. It is controlled by a targeting AI that can adapt to the usage of " "whatever weapon that has been loading, with proper programming." msgstr "" -"Этот способный вращаться на 360 градусов каркас имеет возможность монтажа " -"различных систем вооружения либо путём непосредственного сваривания, либо " -"через крепление ремнями. Он поставляется с легко модифицируемым контейнером " -"для хранения боеприпасов, элементарной системой подачи амуниции для быстрого" -" доступа и секцией для ходовой части. Он управляется с помощью " -"самонаводящегося ИИ, который при правильном программировании может " -"приспособиться к использованию любого оружия." +"Вращающаяся на 360 градусов рама с возможностью монтажа различных систем " +"вооружения сваркой или пристёгиванием ремнями. Имеется легко модифицируемый " +"контейнер для боеприпасов, примитивная система подачи патронов с быстрым " +"доступом и отек для ходовой части. Управляется ИИ-системой наведения, " +"которую можно перепрограммировать под любое оружие." #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "diamond frame" @@ -47301,7 +47504,7 @@ msgstr "AF2011A1 магазин" #: lang/json/MAGAZINE_from_json.py msgid "Two magazines attached to a common base. Unique to the AF2011A1." msgstr "" -"Два магазина прикреплённых к общему основанию. Уникальный для пистолета " +"Два магазина, прикреплённых к общему основанию. Только для пистолета " "AF2011A1." #: lang/json/MAGAZINE_from_json.py @@ -47438,8 +47641,8 @@ msgid "" "Makes solar panels and several other parts foldable, and adds foldable " "quarterboards." msgstr "" -"Делает солнечные панели и некоторые другие приспособления складными. Также в" -" наборе имеются боковые складные доски." +"Делает солнечные панели и некоторые другие приспособления складными, " +"добавляет складные кузова." #: lang/json/MOD_INFO_from_json.py msgid "DinoMod" @@ -47551,8 +47754,8 @@ msgid "" "Gives turrets swappable firearm modules, which can be reclaimed from broken " "robots." msgstr "" -"Позволяет турелям использовать заменяемые модули вооружения, которые могут " -"быть получены из сломанных роботов." +"Позволяет турелям использовать заменяемые модули вооружения, которые можно " +"получить из сломанных роботов." #: lang/json/MOD_INFO_from_json.py msgid "More Buildings" @@ -47729,7 +47932,8 @@ msgstr "Без антикварного огнестрела" #. ~ Description for No Antique Firearms #: lang/json/MOD_INFO_from_json.py msgid "Removes all black powder and pre-Cold War firearms." -msgstr "Убрать оружие производства не позже середины 20-го века." +msgstr "" +"Убирает всё оружие с чёрным порохом и оружие до времён Холодной Войны." #: lang/json/MOD_INFO_from_json.py msgid "Disable Religious Texts" @@ -47841,7 +48045,7 @@ msgstr "Без сна" #: lang/json/MOD_INFO_from_json.py msgid "" "Enables sleep deprivation mechanics independently of a player's fatigue." -msgstr "Игровая механика сна независит от усталости игрока." +msgstr "Включает механику недостатка сна независимо от усталости игрока." #: lang/json/MOD_INFO_from_json.py msgid "Slow Zombies" @@ -48108,19 +48312,6 @@ msgstr "" "использует эхолокацию, что позволяет передвигаться по сложным маршрутам на " "огромной скорости." -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "дымчатый медведь" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "" -"Дымящая оболочка это всё, что осталось от некогда гордого медведя. Его " -"чёрные глаза смотрят на вас со злобой... и голодом." - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "зомби в шрамах" @@ -48154,10 +48345,9 @@ msgid "" "horror." msgstr "" "Это сверхъестественное меняющееся существо, насмешка над человеческим " -"обликом. У него нет никаких выделяющихся черт, за исключением идеально " -"ровного рта. Бледный вид и отсутствие глаз вызывают отвращение. Это нагое и " -"трясущееся тело могло бы вызывать жалость, если бы его явно неземное " -"происхождение не заставляло волосы вставать у вас на голове." +"обликом. На омерзительном бледном безглазом лице нет никаких черт, кроме " +"совершенно круглого рта. Это нагое и трясущееся тело могло бы вызвать " +"жалость, но при виде его неземного облика ваши волосы встают дыбом от ужаса." #: lang/json/MONSTER_from_json.py msgid "blob" @@ -48278,10 +48468,9 @@ msgid "" "and defenseless, it sits in place, swelling and collapsing upon itself as it" " breathes." msgstr "" -"Это какой-то неземной розовый мешочек плоти; покрытый влагой с выпирающими " -"венами, в остальном без различимых внешних особенностей. Кажется что он " -"неподвижный и беззащитный, находится на постоянном месте, разбухает и " -"сжимается, когда дышит." +"Какой-то неземной розовый мешочек плоти, влажный и с выпирающими венами, в " +"остальном без различимых внешних признаков. Неподвижный и беззащитный, он " +"сидит на одном месте и разбухает и сжимается, когда дышит." #. ~ Description for breather #: lang/json/MONSTER_from_json.py @@ -48344,11 +48533,11 @@ msgstr "К.Г.П.О." #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "" -"К.Г.П.О. или «Каннибал-гуманоид — подземный обитатель». Обезумел и стал " -"очень бледным из-за бесчисленных лет существования в подземельях." +"Г.Л.О.П. или Гуманоидный Людоед Обитающий в Подземелье. Человек стал бледным" +" и безумным от многих лет подземной изоляции." #: lang/json/MONSTER_from_json.py msgid "police bot" @@ -48735,10 +48924,11 @@ msgid "" "white slobber down its chest. Its mere presence fills you with an " "unfathomable dread." msgstr "" -"Это какая-то неестественная помесь человека и быка. У него имеется косматая " -"белая голова быка на в остальном непримечательном теле. Из одежды на нём " -"только свисающие носки и испачканные шорты. Он кряхтит и хрипит, пуская " -"длинную белую слюну себе на грудь." +"Это какая-то неестественная помесь человека и быка. У него косматая белая " +"голова быка на в остальном непримечательном человеческом теле. Из одежды на " +"нём только свисающие носки и испачканные шорты. Он кряхтит и хрипит, пуская " +"длинную белую слюну себе на грудь. Одно его присутствие наполняет вас " +"неимоверным ужасом." #: lang/json/MONSTER_from_json.py msgid "graboid" @@ -48769,13 +48959,11 @@ msgid "" "rapidly as to appear a little more than a black blur of claws. Gazing upon " "its disturbing form fills you with an unspeakable terror." msgstr "" -"Это какая-то форма жуткого чудовища; гротескное чёрное существо с гладкой " -"маслянистой шерстью и отталкивающими своим видом рогами, которые изогнуты " -"внутрь друг к другу. Высокий и худой, тени сливаются противоестественно за " -"его нечётко определенной гуманоидной формой, при движении вперёд, его руки " -"судорожно дёргаются и сокращаются так быстро, что кажутся немного больше, " -"чем чёрная размытость когтей. Пристальный взгляд на его тревожащий силуэт, " -"наполняет вас непередаваемым ужасом." +"Какой-то жуткий монстр; гротескное чёрное существо с гладкой маслянистой " +"кожей и уродливыми изогнутыми внутрь рогами. При движении тени неестественно" +" сливаются за едва человекоподобным худым высоким телом. Его руки судорожно " +"дёргаются и сокращаются так быстро, что похожи на размытые черные когти. При" +" взгляде на это жуткое существо вас охватывает непередаваемый страх." #: lang/json/MONSTER_from_json.py msgid "half worm" @@ -48881,11 +49069,10 @@ msgid "" "with the aid of black rubbery wings of monstrous dimensions. Its form " "writhes and changes before your eyes, filling you with unnameable horror." msgstr "" -"Это какое-то огромное червеобразное существо, обладающее необычно " -"искривлённой головой и массивными когтистыми придатками. Он частично " -"поддерживает себя с помощью чёрных резиноподобных крыльев чудовищных " -"размеров. Его форма корчится и изменяется на ваших глазах, наполняя вас " -"невыразимым ужасом." +"Какое-то огромное змееподобное существо с необычно искривлённой головой и " +"большими когтистыми конечностями. Оно частично поддерживает себя с помощью " +"чёрных эластичных крыльев чудовищных размеров. Его фигура корчится и " +"изменяется на ваших глазах, наполняя вас невыразимым ужасом." #: lang/json/MONSTER_from_json.py msgid "irradiated wanderer" @@ -48930,14 +49117,12 @@ msgid "" " of your perceptions in a fashion that awakens ancient nameless terrors in " "the back of your mind" msgstr "" -"Это какая-то форма потусторонней охотничьей собаки. Склонённый и голодный " -"взгляд, её перекрученная красная плоть плотно обтягивает деформированный " -"костлявый скелет. Совершает гротескно размашистый бег вприпрыжку рядом с " -"вами, её необычно длинная шея тянется вперед, а голова, похожая на череп, " -"склонена к земле, когда вынюхивает свою жертву. Ваше отвращение частично " -"завуалировано какой-то тайной силой, оно, кажется, почти пульсирует и " -"вызывается из вашего мозга таким образом, что пробуждает древние безымянные " -"ужасы в глубинах вашего разума." +"Какая-то внеземная гончая, худая и голодная на вид. Извитая красная плоть " +"туго обтягивает бесформенное угловатое тело. Она неестественно подпрыгивает," +" вынюхивая жертву, её голова-череп на необычно длинной шее склонена к земле." +" Эта мерзость частично скрыта какой-то тайной силой, она подрагивает и почти" +" выпадает из вашего восприятия, пробуждая древние безымянные ужасы в глубине" +" вашего разума." #: lang/json/MONSTER_from_json.py msgid "mi-go" @@ -48952,12 +49137,12 @@ msgid "" "pyramid-shaped head bristles with numerous wavering antennae, and simply " "gazing upon the unnatural beast fills you with primordial dread." msgstr "" -"Это чуждое инопланетное существо неопределённого происхождения. Его " -"бесформенное розовое тело несёт множество парных придатков неизвестной " -"функциональности и пару ребристых, перепончатых крыльев, которые кажутся " -"совершенно бесполезными. Его странная, отчасти пирамидальная голова с " -"щетиной несёт множество колеблющихся антенн, и простой взгляд на этого " -"противоестественного монстра, наполняет вас первобытным ужасом." +"Инопланетное существо неопределённого происхождения. На его бесформенном " +"розовом теле множество парных придатков неизвестного назначения и пара " +"выглядящих бесполезными ребристых, перепончатых крыльев. Странная, отчасти " +"пирамидальная голова усыпана бесчисленными извивающимися усиками, и просто " +"взгляд на этого противоестественного монстра наполняет вас первобытным " +"ужасом." #: lang/json/MONSTER_from_json.py msgid "miner bot" @@ -49007,10 +49192,10 @@ msgid "" "most horrible of shrieks. Often spotted near shipwrecks or other dark damp " "places, which it uses as nesting grounds." msgstr "" -"Ракообразное размером с человека, в твёрдом как железо хитиновом панцире, " -"способно издавать один из самых ужасающих воплей. Обычно обитает вблизи " -"затонувших кораблей или в других тенистых и влажных местах, которые он " -"использует в качестве гнездования." +"Ракообразное размером с человека в твёрдом как железо хитиновом панцире, " +"способное издавать самый ужасающий вопль. Их часто видят поблизости " +"кораблекрушений или других темных влажных мест, в которых они устраивают " +"гнёзда." #: lang/json/MONSTER_from_json.py msgid "riot control bot" @@ -49041,10 +49226,10 @@ msgid "" "whispers softly in the back of your mind. Strange intrusive thoughts " "accompany the quiet murmur, awakening your most horrific memories and fears." msgstr "" -"Это анимированная тень. Выглядит как блуждающий клочок обычной тени, он " -"привлекает ваше внимание тем, как он движется и тихо шепчет в глубине вашего" -" разума. Странные навязчивые мысли сопровождают тихий шёпот, пробуждая ваши " -"самые страшные воспоминания и ужасы." +"Ожившая тень, выглядит как блуждающий клочок обычной тени. Она привлекает " +"внимание неуловимым движением и шёпотом в глубине вашего разума. Странные " +"навязчивые мысли сопровождают тихий шёпот, пробуждая самые ужасные " +"воспоминания и страхи." #: lang/json/MONSTER_from_json.py msgid "shadow snake" @@ -49057,8 +49242,8 @@ msgid "" "Translucent and dark, it glides silently across the floor, wriggling and " "flexing as it moves." msgstr "" -"Это анимированная тень в форме длинной и извилистой змеи. Прозрачность и " -"темнота, она бесшумно скользит по полу, извиваясь и изгибаясь, при движении." +"Ожившая тень в форме длинной и извилистой змеи. Прозрачная и тёмная, она " +"бесшумно скользит по полу, извиваясь и изгибаясь при движении." #: lang/json/MONSTER_from_json.py msgid "Shia LaBeouf" @@ -49175,10 +49360,10 @@ msgid "" "anti-tank missile launcher, 40mm grenade launcher, and numerous anti-" "infantry weapons, it's designed for high-risk urban fighting." msgstr "" -"Нортрап Бигль — это HMP (наземный мобильный робот) размером с холодильник, " -"предназначенный для боевых действий в городских условиях. Оснащён: ПТУР, " -"40-мм гранатомётом и разным противопехотным вооружением. Спроектирован с " -"учётом высокого риска ведения боя в городе." +"Нортроп Бигль — это HMP (наземный мобильный робот) размером с холодильник, " +"предназначенный для боевых действий в городских условиях. Оснащён " +"противотанковой ракетной установкой, 40-мм гранатомётом и различным " +"противопехотным вооружением. Спроектирован для опасных городских сражений." #: lang/json/MONSTER_from_json.py msgid "thing" @@ -49280,12 +49465,12 @@ msgid "" " of its putrid whitish visage is enough to loose prehistoric terrors within " "the darkest recesses of your mind." msgstr "" -"Это огромное слизкое червеобразное существо. С его бледной сплюснутой головы" -" капает маслянистая слизь, когда он разбивает землю, ища свою добычу. Его " +"Огромное склизкое червеобразное существо. С его бледной сплюснутой головы " +"капает маслянистая слизь, когда он пробивает землю в поисках добычи. Его " "розоватый рот открывается и закрывается, обнажая длинные клыки, блестящие от" " стекающей слюны, которая оставляет тлеющие пятна везде, где капает. " -"Простого взгляда на его гнилостный белесый облик достаточно, чтобы " -"высвободить древние ужасы из самых тёмных глубин вашего разума." +"Простого взгляда на мерзкий белесый облик достаточно, чтобы высвободить " +"древние ужасы из самых тёмных глубин вашего разума." #: lang/json/MONSTER_from_json.py msgid "grim howler" @@ -49362,8 +49547,8 @@ msgid "" "This armored and augmented soldier's bionics crackle with energy. Worse, it" " appears to remember its training." msgstr "" -"Бронированный и улучшенный бионический солдат с энергией, потрескивает. Хуже" -" того, он, похоже, помнит свои тренировки." +"Бронированный и улучшенный солдат с потрескивающими от энергии бионическими " +"имплантатами. Хуже того, он, похоже, помнит свои тренировки." #: lang/json/MONSTER_from_json.py msgid "slavering biter" @@ -51032,8 +51217,8 @@ msgid "" "An overgrown locust. You don't think it'll eat you but it could cause " "massive damage to nearby plants." msgstr "" -"Саранча-переросток. Вы не думаете о том, что она может съесть вас, но может " -"нанести серьёзный ущерб ближайшим посевам." +"Саранча-переросток. Вряд ли она сможет съесть вас, но ей по силам нанести " +"серьёзный ущерб ближайшим посевам." #: lang/json/MONSTER_from_json.py msgid "locust nymph" @@ -51245,10 +51430,10 @@ msgstr "" "Является добычей для койотов, волков и гигантских пауков-мутантов." #: lang/json/MONSTER_from_json.py -msgid "labrador mutt" -msgstr "лабрадор" +msgid "Labrador mutt" +msgstr "Лабрадор" -#. ~ Description for labrador mutt +#. ~ Description for Labrador mutt #: lang/json/MONSTER_from_json.py msgid "" "This once average Labrador mixed breed dog has clearly gone feral. You can " @@ -51260,10 +51445,10 @@ msgstr "" "сомнения, что он убьёт вас, как только ему представится возможность." #: lang/json/MONSTER_from_json.py -msgid "labrador puppy" -msgstr "щенок лабрадора" +msgid "Labrador puppy" +msgstr "Щенок лабрадора" -#. ~ Description for labrador puppy +#. ~ Description for Labrador puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Labrador puppy. Much safer to tame than adult " @@ -51279,11 +51464,11 @@ msgstr "бульдог" #. ~ Description for bulldog #: lang/json/MONSTER_from_json.py msgid "" -"The American Bulldog is a hardy, well built dog, that seems suited for " +"The American bulldog is a hardy, well built dog, that seems suited for " "surviving the apocalypse." msgstr "" -"Американский бульдог - крепкая собака, которая без проблем могла бы пережить" -" апокалипсис." +"Американский бульдог - выносливая, крепко сбитая собака, которая, похоже, " +"подходит для того, чтобы выжить в апокалипсисе." #: lang/json/MONSTER_from_json.py msgid "bulldog puppy" @@ -51292,7 +51477,7 @@ msgstr "щенок бульдога" #. ~ Description for bulldog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless American Bulldog puppy. Much safer to tame than " +"An adorable, defenseless American bulldog puppy. Much safer to tame than " "adult counterparts." msgstr "" "Милый и беззащитный щенок американского бульдога. Пытаться приручить его не " @@ -51305,13 +51490,14 @@ msgstr "питбуль" #. ~ Description for pit bull mix #: lang/json/MONSTER_from_json.py msgid "" -"The oft-misunderstood Pit Bull is not actually a single breed but a label " -"for several such as American Pit Bull Terrier and American Staffordshire " -"Terrier. Average abilities and well-known for their 'lock jaw' which isn't " -"real but their incredible determination is." +"The oft-misunderstood pit bull is not actually a single breed but a label " +"for several such as the American pit bull terrier and American Staffordshire" +" terrier. Average abilities and well-known for their 'lock jaw' which isn't" +" real but their incredible determination is." msgstr "" -"Помесь американского питбуль-терьера и американского стаффордширского " -"терьера, известная своей мёртвой хваткой челюстей." +"Часто ошибочно думают, что питбуль - это порода, однако это общий ярлык для " +"питбуль-терьера и американского стаффордширского терьера. Известен своей " +"мёртвой хваткой челюстей." #: lang/json/MONSTER_from_json.py msgid "pit bull puppy" @@ -51320,7 +51506,7 @@ msgstr "щенок питбуля" #. ~ Description for pit bull puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Pit Bull puppy. Much safer to tame than adult " +"An adorable, defenseless pit bull puppy. Much safer to tame than adult " "counterparts." msgstr "" "Милый и беззащитный щенок питбуля. Пытаться приручить его не так опасно, как" @@ -51333,7 +51519,7 @@ msgstr "бигль" #. ~ Description for beagle #: lang/json/MONSTER_from_json.py msgid "" -"An adorable Beagle that has managed to survive the apocalypse. Being agile " +"An adorable beagle that has managed to survive the apocalypse. Being agile " "and small, they are difficult to shoot at. Generally attacks in packs." msgstr "" "Милашка бигль, умудрившийся выжить в апокалипсисе. Он ловкий и небольшого " @@ -51346,7 +51532,7 @@ msgstr "щенок бигля" #. ~ Description for beagle puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Beagle puppy. Much safer to tame than adult " +"An adorable, defenseless beagle puppy. Much safer to tame than adult " "counterparts." msgstr "" "Милый и беззащитный щенок бигля. Пытаться приручить его не так опасно, как " @@ -51360,7 +51546,7 @@ msgstr "бордер-колли" #: lang/json/MONSTER_from_json.py msgid "" "An athletic and hyperactive dog that loves to herd animals and jump, the " -"Border Collie is an agile attacker. Although they can be easy to train, " +"border collie is an agile attacker. Although they can be easy to train, " "they don't work well in packs." msgstr "" "Атлетичная и гиперактивная собака, любящая пасти скот и прыгать. Ловкий " @@ -51373,7 +51559,7 @@ msgstr "щенок бордер-колли" #. ~ Description for border collie puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Border Collie puppy. Much safer to tame than adult" +"An adorable, defenseless border collie puppy. Much safer to tame than adult" " counterparts." msgstr "" "Милый и беззащитный щенок бордер-колли. Пытаться приручить его не так " @@ -51386,11 +51572,11 @@ msgstr "боксёр-мастиф" #. ~ Description for boxer mastiff #: lang/json/MONSTER_from_json.py msgid "" -"An ordinary breed full of affection, the Boxer Mastiff doesn't otherwise " +"An ordinary breed full of affection, the boxer mastiff doesn't otherwise " "stand out amongst other dogs with its capabilities." msgstr "" -"Обычная порода собак, проявляет сильную привязанность к хозяину. Боксёр-" -"мастиф не выделяется среди других собак своими способностями." +"Обычная порода, полная привязанности, немецкий боксер не выделяется среди " +"других собак своими способностями." #: lang/json/MONSTER_from_json.py msgid "boxer puppy" @@ -51399,17 +51585,17 @@ msgstr "щенок боксёра" #. ~ Description for boxer puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Boxer puppy. Much safer to tame than adult " +"An adorable, defenseless boxer puppy. Much safer to tame than adult " "counterparts." msgstr "" "Милый и беззащитный щенок боксёра. Пытаться приручить его не так опасно, как" " взрослую особь." #: lang/json/MONSTER_from_json.py -msgid "chihuahua" -msgstr "чихуахуа" +msgid "Chihuahua" +msgstr "Чихуахуа" -#. ~ Description for chihuahua +#. ~ Description for Chihuahua #: lang/json/MONSTER_from_json.py msgid "" "It's a tiny Chihuahua. How it has managed to survive is a miracle; although" @@ -51419,10 +51605,10 @@ msgstr "" "помогли небольшие размера и агрессивная натура." #: lang/json/MONSTER_from_json.py -msgid "chihuahua puppy" -msgstr "щенок чихуахуа" +msgid "Chihuahua puppy" +msgstr "Щенок чихуахуа" -#. ~ Description for chihuahua puppy +#. ~ Description for Chihuahua puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Chihuahua puppy. Much safer to tame than adult " @@ -51452,17 +51638,17 @@ msgstr "щенок таксы" #. ~ Description for dachshund puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Dachshund puppy. Much safer to tame than adult " +"An adorable, defenseless dachshund puppy. Much safer to tame than adult " "counterparts." msgstr "" "Милый и беззащитный щенок таксы. Пытаться приручить его не так опасно, как " "взрослую особь." #: lang/json/MONSTER_from_json.py -msgid "german shepherd" -msgstr "немецкая овчарка" +msgid "German shepherd" +msgstr "Немецкая овчарка" -#. ~ Description for german shepherd +#. ~ Description for German shepherd #: lang/json/MONSTER_from_json.py msgid "" "The original K-9 breed. An easy to train and great attack dog that will " @@ -51472,23 +51658,23 @@ msgstr "" " она будет защищать до смерти. Однако они не очень хорошо работают в стаях." #: lang/json/MONSTER_from_json.py -msgid "german shepherd puppy" -msgstr "щенок немецкой овчарки" +msgid "German shepherd puppy" +msgstr "Щенок немецкой овчарки" -#. ~ Description for german shepherd puppy +#. ~ Description for German shepherd puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless German Shepherd puppy. Much safer to tame than " +"An adorable, defenseless German shepherd puppy. Much safer to tame than " "adult counterparts." msgstr "" "Милый и беззащитный щенок немецкой овчарки. Пытаться приручить его не так " "опасно, как взрослую особь." #: lang/json/MONSTER_from_json.py -msgid "great pyrenees" -msgstr "пиренейская горная" +msgid "Great Pyrenees" +msgstr "Пиренейская горная" -#. ~ Description for great pyrenees +#. ~ Description for Great Pyrenees #: lang/json/MONSTER_from_json.py msgid "" "A large and powerful breed, the Great Pyrenees has a beautiful, thick white " @@ -51500,10 +51686,10 @@ msgstr "" "охранять скот от орд нежити." #: lang/json/MONSTER_from_json.py -msgid "great pyrenees puppy" -msgstr "щенок пиренейской горной" +msgid "Great Pyrenees puppy" +msgstr "Щенок пиренейской горной" -#. ~ Description for great pyrenees puppy +#. ~ Description for Great Pyrenees puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Great Pyrenees puppy. Much safer to tame than " @@ -51519,12 +51705,12 @@ msgstr "ротвейлер" #. ~ Description for rottweiler #: lang/json/MONSTER_from_json.py msgid "" -"Terrifying breed to face feral, as the Rottweiler breed is descended from " +"Terrifying breed to face feral, as the rottweiler breed is descended from " "Roman legion mastiffs. Robust and vicious, quite capable of mauling a human" " to death." msgstr "" -"Страшная одичавшая собака, ведущая происхождение от римских мастифов. Эта " -"большая и жестокая собака легко способна загрызть человека насмерть." +"Ужасающая, почти дикая порода, ведущая происхождение от римских мастифов. " +"Эта крепкая и злобная собака легко способна загрызть человека насмерть." #: lang/json/MONSTER_from_json.py msgid "rottweiler puppy" @@ -51533,7 +51719,7 @@ msgstr "щенок ротвейлера" #. ~ Description for rottweiler puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Rottweiler puppy. Much safer to tame than adult " +"An adorable, defenseless rottweiler puppy. Much safer to tame than adult " "counterparts." msgstr "" "Милый и беззащитный щенок ротвейлера. Пытаться приручить его не так опасно, " @@ -51546,8 +51732,8 @@ msgstr "австралийская пастушья" #. ~ Description for cattle dog #: lang/json/MONSTER_from_json.py msgid "" -"An agile and sturdy breed that is welcome on any farm, the Australian Cattle" -" Dog is adept at leaping fences and herding livestock." +"An agile and sturdy breed that is welcome on any farm, the Australian cattle" +" dog is adept at leaping fences and herding livestock." msgstr "" "Ловкая и крепкая собака, которой будут рады на любой ферме. Она способна " "перепрыгивать через ограды и пасти скот." @@ -51559,7 +51745,7 @@ msgstr "щенок австралийской пастушьей" #. ~ Description for cattle dog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Australian Cattle Dog puppy. Much safer to tame " +"An adorable, defenseless Australian cattle dog puppy. Much safer to tame " "than adult counterparts." msgstr "" "Милый и беззащитный щенок австралийской пастушьей собаки. Пытаться приручить" @@ -51899,7 +52085,7 @@ msgid "" msgstr "" "Волк — хитрый стайный хищник, однажды полностью исчезнувший на территории " "Новой Англии, но его популяция успешно восстановилась, и число волков " -"поднялось до рекордного значения в течение декады до Катаклизма. Как вам " +"поднялось до рекордного значения за десятилетие до Катаклизма. Как вам " "повезло." #: lang/json/MONSTER_from_json.py @@ -51913,9 +52099,9 @@ msgid "" "of the art revolving laser cannon system with three barrels that charge from" " solar cells embedded in its hull." msgstr "" -"Турель TX-5LR Cerberus является улучшенным вариантом своих предшественников." -" Отличается современной системой вращающихся лазерных пушек с тремя " -"стволами, которые заряжаются от солнечных батарей, встроенных в её корпус." +"Турель TX-5LR Цербер является улучшенным вариантом своих предшественников. " +"Отличается современной системой вращающихся лазерных пушек с тремя стволами," +" которые заряжаются от встроенных в корпус солнечных батарей." #: lang/json/MONSTER_from_json.py msgid "antimateriel turret" @@ -51929,11 +52115,11 @@ msgid "" "been kept under extremely tight control, so as to itself maintain extremely " "tight control of its area. And then the Cataclysm struck." msgstr "" -"T-107A1 Interdictor от «Лидворкс», автоматическая крупнокалиберная турель " -"калибра .50BMG. Связанная с многочисленными попытками предотвращения взрывов" -" машин, она всегда находилась под очень жёстким контролем, чтобы, в свою " -"очередь, поддерживать очень жёсткий контроль в своей области. А потом " -"случился Катаклизм." +"T-107A1 Заградитель от «Лидворкс», автоматическая крупнокалиберная турель " +"калибра .50BMG. В связи с предотвращением множества попыток взрывов машин " +"она всегда находилась под очень жёстким контролем, чтобы, в свою очередь, " +"поддерживать очень жёсткий контроль в своей области. А потом случился " +"Катаклизм." #: lang/json/MONSTER_from_json.py msgid "milspec turret" @@ -51945,7 +52131,7 @@ msgid "" "Leadworks LLC's T-4A1 Sentry. It features improved firmware over General " "Atomics' TX-1 9x19mm model and an automated M4 carbine." msgstr "" -"T-4A1 Sentry от «Лидворкс». Оснащена улучшенным, по сравнению с 9х19-мм " +"T-4A1 Часовой от «Лидворкс». Оснащена улучшенным, по сравнению с 9х19-мм " "моделью TX-1 от «Дженерал Атомикс», встроенным ПО, а также автоматическим " "карабином M4." @@ -52206,9 +52392,8 @@ msgid "" "A thick stalk that rises five feet from the ground and has heavy broad " "leaves at its base. Purple flower buds adorn the top." msgstr "" -"Массивный стебель, который возвышается на пять футов от земли и имеет " -"тяжёлые широкие листья в основании. Фиолетовые цветочные бутоны украшают " -"верхушку." +"Толстый стебель высотой в пять футов с массивными широкими листьями у " +"основания. Фиолетовые цветочные бутоны украшают верхушку." #: lang/json/MONSTER_from_json.py msgid "biollante" @@ -52220,8 +52405,8 @@ msgid "" "A drooped, quivering plant with a thick stalk adorned by a purple flower. " "Its petals are closed, and pulsate ominously." msgstr "" -"Склонившееся дрожащее растение с тонким стеблем, увенчанное лиловым цветком." -" Лепестки цветка свёрнуты и зловеще пульсируют." +"Склонившееся дрожащее растение с толстым стеблем, увенчанное лиловым " +"цветком. Лепестки цветка свёрнуты и зловеще пульсируют." #: lang/json/MONSTER_from_json.py msgid "creeper hub" @@ -52876,6 +53061,19 @@ msgstr "приспешник скелтал" msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "Малый скелет, поднятый гниющим трубачом." +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "дымчатый медведь" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "" +"Дымящая оболочка это всё, что осталось от некогда гордого медведя. Его " +"чёрные глаза смотрят на вас со злобой... и голодом." + #: lang/json/MONSTER_from_json.py msgid "Compsognathus" msgstr "компсогнат" @@ -53134,7 +53332,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "9mm turret" -msgstr "9 мм турель" +msgstr "9-мм турель" #. ~ Description for 9mm turret #: lang/json/MONSTER_from_json.py @@ -53151,7 +53349,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "shotgun turret" -msgstr "дробовик турель" +msgstr "дробо-турель" #. ~ Description for shotgun turret #: lang/json/MONSTER_from_json.py @@ -53178,11 +53376,11 @@ msgid "" "friends and enemies alike. Its integrated 40mm teargas launcher can swivel " "a full 360 degrees." msgstr "" -"TZ-1a Warden от «Дженерал Атомикс», небольшая автоматическая турель в форме " -"таблетки, использующая современные системы АРЦ для динамической " -"перенастройки на новые дружеские и вражеские цели. Оснащена встроенной " -"установкой 40-мм слезоточивого газа, которая может поворачиваться на 360 " -"градусов." +"TZ-1a Смотритель от «Дженерал Атомикс», небольшая автоматическая турель в " +"форме таблетки, использующая современные системы АРЦ для динамической " +"перенастройки на новые дружеские и вражеские цели. Оснащена встроенной 40-мм" +" установкой для запуска гранат со слезоточивым газом, которая может " +"поворачиваться на 360 градусов." #. ~ Description for riot control turret #: lang/json/MONSTER_from_json.py @@ -53192,15 +53390,15 @@ msgid "" "new friends and enemies alike. Its integrated 40mm beanbag launcher can " "swivel a full 360 degrees." msgstr "" -"TZ-1b Pacifier от «Дженерал Атомикс», небольшая автоматическая турель в " +"TZ-1b Усмиритель от «Дженерал Атомикс», небольшая автоматическая турель в " "форме таблетки, использующая современные системы АРЦ для динамической " -"перенастройки на новые дружеские и вражеские цели. Оснащена встроенной " -"установкой 40-мм травматической, которая может поворачиваться на 360 " +"перенастройки на новые дружеские и вражеские цели. Оснащена встроенной 40-мм" +" установкой для запуска шумовых гранат, которая может поворачиваться на 360 " "градусов." #: lang/json/MONSTER_from_json.py msgid "5.56mm turret" -msgstr "5,56 мм турель" +msgstr "5,56-мм турель" #. ~ Description for 5.56mm turret #: lang/json/MONSTER_from_json.py @@ -53210,14 +53408,14 @@ msgid "" "new friends and enemies alike. Its integrated 5.56 rifle can swivel a full " "360 degrees." msgstr "" -"TX-32L Sentry от «Лидворкс», автоматическая пулемётная турель военного " +"TX-32L Часовой от «Лидворкс», автоматическая пулемётная турель военного " "образца, использующая современные системы АРЦ для динамической перенастройки" " на новые дружеские и вражеские цели. Оснащена встроенным оружием 5,56 мм, " "которое может поворачиваться на 360 градусов." #: lang/json/MONSTER_from_json.py msgid "7.62mm turret" -msgstr "7,62 мм турель" +msgstr "7,62-мм турель" #. ~ Description for 7.62mm turret #: lang/json/MONSTER_from_json.py @@ -53227,14 +53425,14 @@ msgid "" "new friends and enemies alike. Its integrated 7.62 rifle can swivel a full " "360 degrees." msgstr "" -"TX-32H Sentry от «Лидворкс», автоматическая пулемётная турель военного " +"TX-32H Часовой от «Лидворкс», автоматическая пулемётная турель военного " "образца, использующая современные системы АРЦ для динамической перенастройки" " на новые дружеские и вражеские цели. Оснащена встроенным оружием 7,62 мм, " "которое может поворачиваться на 360 градусов." #: lang/json/MONSTER_from_json.py msgid "50cal turret" -msgstr ".50 турель" +msgstr "турель .50 калибра" #. ~ Description for 50cal turret #: lang/json/MONSTER_from_json.py @@ -53244,14 +53442,14 @@ msgid "" "new friends and enemies alike. Its integrated 50 calibre machinegun can " "swivel a full 360 degrees." msgstr "" -"TX-13 Sentry от «Лидворкс», автоматическая пулемётная турель военного " +"TX-13 Часовой от «Лидворкс», автоматическая пулемётная турель военного " "образца, использующая современные системы АРЦ для динамической перенастройки" " на новые дружеские и вражеские цели. Оснащена встроенным оружием .50 " "калибра, которое может поворачиваться на 360 градусов." #: lang/json/MONSTER_from_json.py msgid "8x40mm turret" -msgstr "8х40 мм турель" +msgstr "8х40-мм турель" #. ~ Description for 8x40mm turret #: lang/json/MONSTER_from_json.py @@ -53268,7 +53466,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "needle turret" -msgstr "игла турель" +msgstr "игольная турель" #. ~ Description for needle turret #: lang/json/MONSTER_from_json.py @@ -53278,10 +53476,10 @@ msgid "" "friends and enemies alike. Its integrated 5mm flechette gun can swivel a " "full 360 degrees." msgstr "" -"TN-7 Sentry от «Лидворкс», автоматическая флешетная турель военного образца," -" использующая современные системы АРЦ для динамической перенастройки на " -"новые дружеские и вражеские цели. Оснащена встроенным оружием 5 мм флешетты," -" которое может поворачиваться на 360 градусов." +"TN-7 Часовой от «Лидворкс», автоматическая турель военного образца, " +"использующая современные системы АРЦ для динамической перенастройки на новые" +" дружеские и вражеские цели. Оснащена встроенным оружием с 5-мм флешеттами, " +"которое может поворачиваться на 360 градусов." #: lang/json/MONSTER_from_json.py msgid "40mm grenade turret" @@ -53295,9 +53493,9 @@ msgid "" "and enemies alike. Its integrated 40mm grenade launcher can swivel a full " "360 degrees." msgstr "" -"TG-7 Sentry от «Лидворкс», автоматическая турель военного образца, " +"TG-7 Часовой от «Лидворкс», автоматическая турель военного образца, " "использующая современные системы АРЦ для динамической перенастройки на новые" -" дружеские и вражеские цели. Оснащена встроенным гранатомётом 40 мм, который" +" дружеские и вражеские цели. Оснащена встроенным 40-мм гранатомётом, который" " может поворачиваться на 360 градусов." #: lang/json/MONSTER_from_json.py @@ -53312,10 +53510,10 @@ msgid "" "friends and enemies alike. Its integrated flamethrower can swivel a full " "360 degrees." msgstr "" -"TF-7 Sentry от «Лидворкс», автоматическая факельная турель военного образца," -" использующая современные системы АРЦ для динамической перенастройки на " -"новые дружеские и вражеские цели. Оснащена встроенным огнемётом, который " -"может поворачиваться на 360 градусов." +"TF-7 Часовой от «Лидворкс», автоматическая огнемётная турель военного " +"образца, использующая современные системы АРЦ для динамической перенастройки" +" на новые дружеские и вражеские цели. Оснащена встроенным огнемётом, который" +" может поворачиваться на 360 градусов." #. ~ Description for laser turret #: lang/json/MONSTER_from_json.py @@ -53325,7 +53523,7 @@ msgid "" "and enemies alike. Its integrated laser emitter can swivel a full 360 " "degrees." msgstr "" -"T-L3 Scintillator от «ДаблТех», автоматическая улучшенная лазерная турель, " +"T-L3 Сцинтиллятор от «ДаблТех», автоматическая улучшенная лазерная турель, " "использующая современные системы АРЦ для динамической перенастройки на новые" " дружеские и вражеские цели. Оснащена встроенным лазерным излучателем, " "который может поворачиваться на 360 градусов." @@ -53342,7 +53540,7 @@ msgid "" "and enemies alike. Its integrated acid thrower can swivel a full 360 " "degrees." msgstr "" -"T-A3 Disintegrator от «ДаблТех», автоматическая улучшенная кислотная турель," +"T-A3 Дезинтегратор от «ДаблТех», автоматическая улучшенная кислотная турель," " использующая современные системы АРЦ для динамической перенастройки на " "новые дружеские и вражеские цели. Оснащена встроенной кислотной установкой, " "которая может поворачиваться на 360 градусов." @@ -53359,10 +53557,10 @@ msgid "" "and enemies alike. Its integrated plasma ejector can swivel a full 360 " "degrees." msgstr "" -"T-P3 Scathefire от «ДаблТех», автоматическая улучшенная плазменная турель, " -"использующая современные системы АРЦ для динамической перенастройки на новые" -" дружеские и вражеские цели. Оснащена встроенным плазменным излучателем, " -"который может поворачиваться на 360 градусов." +"T-P3 Губительный огонь от «ДаблТех», автоматическая улучшенная плазменная " +"турель, использующая современные системы АРЦ для динамической перенастройки " +"на новые дружеские и вражеские цели. Оснащена встроенной плазменной пушкой, " +"которая может поворачиваться на 360 градусов." #: lang/json/MONSTER_from_json.py msgid "railgun turret" @@ -53375,7 +53573,7 @@ msgid "" "state of the art ATR systems to dynamically reorient itself to new friends " "and enemies alike. Its integrated railgun can swivel a full 360 degrees." msgstr "" -"T-R3 Arbalest от «ДаблТех», автоматическая улучшенная рельсовая турель, " +"T-R3 Самострел от «ДаблТех», автоматическая улучшенная рельсовая турель, " "использующая современные системы АРЦ для динамической перенастройки на новые" " дружеские и вражеские цели. Оснащена встроенной рельсовой пушкой, которая " "может поворачиваться на 360 градусов." @@ -53392,10 +53590,10 @@ msgid "" "friends and enemies alike. Its integrated electro caster can swivel a full " "360 degrees." msgstr "" -"T-E3 Thunderstroke от «ДаблТех», автоматическая улучшенная электро турель, " +"T-E3 Молния от «ДаблТех», автоматическая улучшенная электротурель, " "использующая современные системы АРЦ для динамической перенастройки на новые" -" дружеские и вражеские цели. Оснащена встроенным электро излучателем, " -"который может поворачиваться на 360 градусов." +" дружеские и вражеские цели. Оснащена встроенным электроизлучателем, который" +" может поворачиваться на 360 градусов." #: lang/json/MONSTER_from_json.py msgid "EMP turret" @@ -53409,14 +53607,14 @@ msgid "" "enemies alike. Its electro magnetic pulse generator can swivel a full 360 " "degrees." msgstr "" -"T-EMP3 Corona от «ДаблТех», автоматическая улучшенная ЭМИ турель, " +"T-EMP3 Корона от «ДаблТех», автоматическая улучшенная ЭМИ турель, " "использующая современные системы АРЦ для динамической перенастройки на новые" " дружеские и вражеские цели. Оснащена встроенным ЭМИ излучателем, который " "может поворачиваться на 360 градусов." #: lang/json/MONSTER_from_json.py msgid "guardin gnome" -msgstr "" +msgstr "садовый гном" #. ~ Description for guardin gnome #. ~ Description for garden gnome @@ -53445,9 +53643,10 @@ msgid "" "blinding flash. No longer linked to police or security network, it " "continues its unending hunt for criminals and tresspassers." msgstr "" -"Маленький летающий робот, оснащённый набором камер и вооружён ослепительной " -"вспышкой. Больше не связан с полицией или сетью службы безопасности, он " -"продолжает свою бесконечную охоту за преступниками и нарушителями." +"Маленький летающий робот, оснащённый набором камер и вооружённый " +"ослепительной вспышкой. Больше не связанный с полицией или сетью службы " +"безопасности, он продолжает бесконечную охоту за преступниками и " +"нарушителями." #. ~ Description for skitterbot #: lang/json/MONSTER_from_json.py @@ -53500,7 +53699,7 @@ msgid "" msgstr "" "Автоматический оборонный робот, всё ещё активен, благодаря своему " "внутреннему источнику питания. Вооружён электрическим оружием, распылителем " -"слезоточивого газа и встроенной установкой 40-мм травматической." +"слезоточивого газа и встроенным 40-мм гранатомётом с шумовыми гранатами." #: lang/json/MONSTER_from_json.py msgid "W11B10" @@ -53589,9 +53788,9 @@ msgid "" "toolbench and multipurpose workstation." msgstr "" "Мобильная производственная станция, используется рабочими в шахтах, на " -"нефтяных платформах и в других отдалённых местах. В активированном " -"состоянии, ремонтный бот просто следует за своим рабочим-пользователем. В " -"деактивированном состоянии, ремонтный бот можно использовать в качестве " +"нефтяных платформах и в других отдалённых местах. В активированном состоянии" +" ремонтный бот просто следует за своим рабочим-пользователем. В " +"деактивированном состоянии ремонтный бот можно использовать в качестве " "инструментальной и многоцелевой рабочей станции." #: lang/json/MONSTER_from_json.py @@ -53606,10 +53805,10 @@ msgid "" "combat, it was more commonly used for transporting the suit itself. The AI " "is limited, and makes a poor combatant." msgstr "" -"Костюм силовой брони, временно контролируемый присоединённым ядром с ИИ. " -"Первоначально предназначенный для извлечения мёртвых или раненых операторов " -"из боя, но чаще использовался для транспортировки костюма отдельно. ИИ " -"костюма ограничен и плохо выполняет роль живого бойца." +"Силовая броня, временно управляемая ядром с ИИ. Первоначальной задачей было " +"возвращение убитых или раненых операторов с поля боя, однако система чаще " +"использовалась для транспортировки самой брони. ИИ ограничен и роль бойца " +"выполняет плохо." #: lang/json/MONSTER_from_json.py lang/json/TOOL_from_json.py msgid "light auto armor" @@ -53638,11 +53837,11 @@ msgstr "парящий фонарь" #. ~ Description for floating lantern #: lang/json/MONSTER_from_json.py msgid "A salvaged drone repurposed into a mobile lightsource." -msgstr "" +msgstr "Восстановленный дрон, переоборудованный в мобильный источник света." #: lang/json/MONSTER_from_json.py msgid "distract-o-hack" -msgstr "" +msgstr "отвлекатель" #. ~ Description for distract-o-hack #: lang/json/MONSTER_from_json.py @@ -53652,10 +53851,14 @@ msgid "" "hostile targets. Although fragile, the distract-o-hack's erratic movements " "make it difficult to hit." msgstr "" +"Восстановленный дрон, переоборудованный в самодельный отвлекающий аппарат. " +"Будучи активированным, начинает мигать, производить звуки, испускать искры и" +" двигаться к враждебным целям. Несмотря на хрупкость, отвлекатель совершает " +"беспорядочные движения, становясь трудной для попадания целью." #: lang/json/MONSTER_from_json.py msgid "arsonhack" -msgstr "" +msgstr "поджигатель" #. ~ Description for arsonhack #: lang/json/MONSTER_from_json.py @@ -53665,10 +53868,14 @@ msgid "" "cannot be recovered once activated. Only a wreckless madman would dare to " "build this." msgstr "" +"Восстановленный дрон, переоборудованный в испускатель огня, наносящий урон " +"всему вокруг. Опасен для пользователя не менее, чем для окружающего " +"пространства. Будучи активированным, уже не может быть восстановлен. Только " +"безумный сумасшедший осмелился бы построить это." #: lang/json/MONSTER_from_json.py msgid "spore hack" -msgstr "" +msgstr "споромет" #. ~ Description for spore hack #: lang/json/MONSTER_from_json.py @@ -53677,10 +53884,13 @@ msgid "" "releases a puff of fungal spores. Who in their right mind would build such " "a thing?" msgstr "" +"Восстановленный дрон, переоборудованный для распространения чужеродных спор." +" Он периодически выпускает волну грибковых репродуктивных образований. Кто в" +" здравом уме будет строить такую вещь?" #: lang/json/MONSTER_from_json.py msgid "watercannon turret" -msgstr "" +msgstr "водная пушка" #. ~ Description for watercannon turret #: lang/json/MONSTER_from_json.py @@ -53688,10 +53898,12 @@ msgid "" "A turret equipped with a jury-rigged watercannon in place of a proper " "firearm. It's highly ineffective but the ammo is cheap." msgstr "" +"Турель, оснащенная самодельной водяной пушкой, вместо нормального, " +"огнестрельного варианта. Это очень неэффективно, но боеприпасы бесплатны." #: lang/json/MONSTER_from_json.py msgid "floating heater" -msgstr "" +msgstr "парящий обогреватель" #. ~ Description for floating heater #: lang/json/MONSTER_from_json.py @@ -53699,10 +53911,12 @@ msgid "" "A salvaged eyebot repurposed into a floating space heater. It emits a " "constant jet of warm air to heat an enclosed space." msgstr "" +"Восстановленный дрон, переоборудованный в летающий обогреватель. Он " +"производит постоянную струю тепла, нагревая замкнутое пространство." #: lang/json/MONSTER_from_json.py msgid "floating furnace" -msgstr "" +msgstr "парящая печь" #. ~ Description for floating furnace #: lang/json/MONSTER_from_json.py @@ -53711,10 +53925,13 @@ msgid "" "constant jet of dangerously hot air to heat an enclosed space. Warning! " "Can result in rapid heatstroke!" msgstr "" +"Восстановленный дрон, переоборудованный в летающий нагреватель. Он " +"производит струю очень горячего воздуха, нагревая замкнутое пространство. " +"Опасно! Может привести к быстрому тепловому удару!" #: lang/json/MONSTER_from_json.py msgid "burning eye" -msgstr "" +msgstr "горящий глаз" #. ~ Description for burning eye #: lang/json/MONSTER_from_json.py @@ -53723,17 +53940,21 @@ msgid "" "the hovering robot to aim and fire without penalty. It has decent range and " "damage, but requires an extended recharge time between shots." msgstr "" +"Восстановленный дрон, снабженный лазерным оружием. Отсутствие отдачи " +"позволяет парящему роботу целиться и стрелять без штрафа. Обладает " +"приемлимым радиусом поражения и уроном, но более медленной перезарядкой " +"между выстрелами." #: lang/json/MONSTER_from_json.py msgid "hazmat bot" -msgstr "" +msgstr "химза-бот" #. ~ Description for hazmat bot #: lang/json/MONSTER_from_json.py msgid "" "A utility robot designed for cleaning up waste material in hazardous " "conditions." -msgstr "" +msgstr "Дрон, предназначенный для очистки отходов в опасных условиях." #: lang/json/MONSTER_from_json.py msgid "butler-bot" @@ -53742,11 +53963,11 @@ msgstr "робот-дворецкий" #. ~ Description for butler-bot #: lang/json/MONSTER_from_json.py msgid "A luxury model utility robot for domestic use." -msgstr "" +msgstr "Роскошный универсальный робот для бытового использования." #: lang/json/MONSTER_from_json.py msgid "construction robot" -msgstr "" +msgstr "строительный робот" #. ~ Description for construction robot #: lang/json/MONSTER_from_json.py @@ -53755,10 +53976,13 @@ msgid "" "agencies and private corporations. It is equipped with an integrated welder," " flashlight, nailgun, and jackhammer." msgstr "" +"Одна из множества моделей строительных роботов, в основном используемых " +"государством и частными корпорациями. Экипирован встроенным сварочным " +"аппаратом, фонариком, гвоздометом и отбойным молотом." #: lang/json/MONSTER_from_json.py msgid "firefighter robot" -msgstr "" +msgstr "пожарный робот" #. ~ Description for firefighter robot #: lang/json/MONSTER_from_json.py @@ -53767,10 +53991,13 @@ msgid "" "departments and emergency services. Designed for entering burning buildings " "and other situations deemed too dangerous for human firefighters." msgstr "" +"Одна из множества моделей пожарных роботов, в основном используемых " +"пожарными частями и чрезвычайными службами. Создан для входа в горящие " +"здания и участия в прочих условиях, слишком опасных для пожарных." #: lang/json/MONSTER_from_json.py msgid "blob breeder" -msgstr "" +msgstr "инкубатор сгустков" #. ~ Description for blob breeder #: lang/json/MONSTER_from_json.py @@ -53779,10 +54006,13 @@ msgid "" "blob. It will intermittently release a group of living blobs. Why on Earth " "would you build this?" msgstr "" +"Восстановленный хозяйственный робот, переоборудованный в мобильный инкубатор" +" для сгустков. Он периодически выкидывает группу живых сгустков. Как вам " +"вообще пришло в голову смастерить это на матушке-земле?" #: lang/json/MONSTER_from_json.py msgid "slime breeder" -msgstr "" +msgstr "инкубатор слизи" #. ~ Description for slime breeder #: lang/json/MONSTER_from_json.py @@ -53790,10 +54020,12 @@ msgid "" "A salvaged utility robot converted into a mobile incubator for the alien " "blob. It will intermittently release a group of friendly blobs." msgstr "" +"Восстановленный хозяйственный робот, переоборудованный в мобильный инкубатор" +" для сгустков. Он периодически выкидывает группу живых сгустков." #: lang/json/MONSTER_from_json.py msgid "digestron" -msgstr "" +msgstr "автоклав" #. ~ Description for digestron #: lang/json/MONSTER_from_json.py @@ -53803,10 +54035,14 @@ msgid "" "reserves. A useful helper for keeping your front lawn clean of debris... or" " corpses." msgstr "" +"Восстановленный хозяйственный робот, переоборудованный в вакуумный " +"очиститель. Он всасывает в себя вещи с земли и растворяет их с помощью своих" +" запасов кислоты. Эффективный помощник в вопросе содержания вашего двора " +"чистым от мусора... или трупов." #: lang/json/MONSTER_from_json.py msgid "bee bot" -msgstr "" +msgstr "пчелобот" #. ~ Description for bee bot #: lang/json/MONSTER_from_json.py @@ -53815,10 +54051,13 @@ msgid "" "periodically removes and delivers honey combs. It protects the insect " "colony with a mechanical crossbow mounted to its chasis." msgstr "" +"Восстановленный хозяйственный робот, переоборудованный в передвижной улей, " +"который периодически удаляет и производит медовые соты. Он защищает колонию " +"с помощью механического арбалета, приделанного к его корпусу." #: lang/json/MONSTER_from_json.py msgid "medical robot" -msgstr "" +msgstr "медробот" #. ~ Description for medical robot #: lang/json/MONSTER_from_json.py @@ -53827,10 +54066,14 @@ msgid "" "and performing complex surgical operations, usually in that order. Faulty " "bio-diagnotic programs resulted in numerous lawsuits before the Cataclysm." msgstr "" +"Свободно перемещающийся медицинский робот, способный вводить сильные " +"анастетики и проводить сложные хирургические операции, обычно в таком " +"порядке. Ошибки в диагностических программах привели к многочисленным " +"судебным искам перед апокалипсисом." #: lang/json/MONSTER_from_json.py msgid "assassination robot" -msgstr "" +msgstr "робот-ассасин" #. ~ Description for assassination robot #: lang/json/MONSTER_from_json.py @@ -53839,10 +54082,13 @@ msgid "" "tools have been replaced with a fearsome set of blades, and its hypodermic " "needle now delivers powerful toxins." msgstr "" +"Восстановленный медбот, переоборудованный в машину для убийств. Его " +"хирургические инструменты были заменены набором жутких лезвий, а его " +"подкожные иглы теперь доставляют сильные токсины." #: lang/json/MONSTER_from_json.py msgid "elixirator" -msgstr "" +msgstr "эликсиратор" #. ~ Description for elixirator #: lang/json/MONSTER_from_json.py @@ -53850,10 +54096,12 @@ msgid "" "This doesn't work yet. Don't build it... A salvaged medibot with its " "internal pharma-fabricators repurposed to produce mutagen." msgstr "" +"Это больше не работает. Не стройте это... Отремонтированный медбот со своим " +"личным производством лекарств, переделанный под производство мутагена." #: lang/json/MONSTER_from_json.py msgid "party bot" -msgstr "" +msgstr "патибот" #. ~ Description for party bot #: lang/json/MONSTER_from_json.py @@ -53862,10 +54110,12 @@ msgid "" "lights, and programmed to dance. Why on Earth would you build this crazy " "thing?" msgstr "" +"Восстановленный медбот, загруженный марихуанной, покрытый разноцветными " +"лампочками и запрограммированный танцевать. Поумнее ничего не могли собрать?" #: lang/json/MONSTER_from_json.py msgid "rat snatcher" -msgstr "" +msgstr "крысолов" #. ~ Description for rat snatcher #: lang/json/MONSTER_from_json.py @@ -53873,10 +54123,12 @@ msgid "" "A salvaged skitterbot repurposed for hunting small game. It's faster than " "the original model but far less sturdy." msgstr "" +"Восстановленный робот-жук, переоборудованный в охотника на мелкую добычу. Он" +" быстрее оригинала, но гораздо менее прочный." #: lang/json/MONSTER_from_json.py msgid "grab-bot" -msgstr "" +msgstr "хвататель" #. ~ Description for grab-bot #: lang/json/MONSTER_from_json.py @@ -53884,10 +54136,12 @@ msgid "" "A salvaged skitterbot repurposed to grab onto and immobilize enemies. It's " "meant to work in a pack." msgstr "" +"Восстановленный робот-жук, переоборудованный в обездвиживателя врагов. Это " +"подразумевает работу в группе." #: lang/json/MONSTER_from_json.py msgid "pest hunter" -msgstr "" +msgstr "истребитель вредителей" #. ~ Description for pest hunter #: lang/json/MONSTER_from_json.py @@ -53896,10 +54150,13 @@ msgid "" "small size precludes rapid fire, due to recoil, and requires the use of " "lightweight caseless ammo." msgstr "" +"Восстановленный робот-жук, оснащенный 8мм пушкой. Маленький размер робота " +"исключает быстрый огонь из-за отдачи и требует использования легких, " +"безгильзовых боеприпасов." #: lang/json/MONSTER_from_json.py msgid "insane cyborg" -msgstr "" +msgstr "безумный киборг" #. ~ Description for insane cyborg #: lang/json/MONSTER_from_json.py @@ -53908,10 +54165,13 @@ msgid "" "devices are implanted in its head. This cyborg moves erratically and has a " "confused and deranged look in its eyes." msgstr "" +"Робот с головой человека. В голову имплантированы всевозможные провода и " +"электронные устройства. Этот киборг хаотично двигается, в его глазах - " +"растерянность и безумие." #: lang/json/MONSTER_from_json.py msgid "necrotic cyborg" -msgstr "" +msgstr "некрокиборг" #. ~ Description for necrotic cyborg #: lang/json/MONSTER_from_json.py @@ -53920,6 +54180,9 @@ msgid "" "animate head retains some of its ability to revive zombies. Why on Earth " "would anyone build such an abomination?" msgstr "" +"Восстановленный киборг с головой зомби-некроманта. Оживлённая голова " +"сохраняет часть своей способности поднимать зомби. Кому вообще понадобилось " +"создавать такую мерзость?" #. ~ Description for security robot #: lang/json/MONSTER_from_json.py @@ -53927,10 +54190,12 @@ msgid "" "An automated defense robot still active due to its internal power source. " "This one is equipped with an electric prod and an integrated shotgun." msgstr "" +"Военный робот, всё ещё активен благодаря своему внутреннему источнику " +"питания. Вооружён электрической дубинкой и встроенным дробовиком." #: lang/json/MONSTER_from_json.py msgid "military robot" -msgstr "" +msgstr "военный робот" #. ~ Description for military robot #: lang/json/MONSTER_from_json.py @@ -53938,6 +54203,9 @@ msgid "" "A military robot still operating due to its internal power core. This one is" " armed with an electric prod and an integrated 5.56mm firearm." msgstr "" +"Военный робот, всё ещё активен, благодаря своему внутреннему источнику " +"питания. Вооружён электрической дубинкой и встроенным огнестрельным оружием " +"5.56 мм." #. ~ Description for military robot #: lang/json/MONSTER_from_json.py @@ -53945,6 +54213,8 @@ msgid "" "A military training robot still operating due to its internal power core. " "This one is armed with a high power paintball gun and a foam baton." msgstr "" +"Военный робот, всё ещё активен, благодаря своему внутреннему источнику " +"питания. Вооружён мощным пейнтбольным приводом и пенопластовой дубинкой." #. ~ Description for military robot #: lang/json/MONSTER_from_json.py @@ -53952,6 +54222,9 @@ msgid "" "A military robot still operating due to its internal power core. This one " "is armed with an electric prod and an integrated 5.56mm firearm." msgstr "" +"Военный робот, всё ещё активен, благодаря своему внутреннему источнику " +"питания. Вооружён электрической дубинкой и встроенным огнестрельным оружием " +"5.56 мм." #. ~ Description for military robot #: lang/json/MONSTER_from_json.py @@ -53959,6 +54232,9 @@ msgid "" "A military robot still operating due to its internal power core. This one " "is armed with an electric prod and an integrated 7.62mm firearm." msgstr "" +"Военный робот, всё ещё активен, благодаря своему внутреннему источнику " +"питания. Вооружён электрической дубинкой и встроенным огнестрельным оружием " +"7.62 мм." #. ~ Description for military robot #: lang/json/MONSTER_from_json.py @@ -53966,6 +54242,9 @@ msgid "" "A military robot still operating due to its internal power core. This one " "is armed with an electric prod and an integrated 50 caliber firearm." msgstr "" +"Военный робот, всё ещё активен, благодаря своему внутреннему источнику " +"питания. Вооружён электрической дубинкой и встроенным огнестрельным оружием " +"50 калибра." #. ~ Description for military robot #: lang/json/MONSTER_from_json.py @@ -53973,6 +54252,9 @@ msgid "" "A military robot still operating due to its internal power core. This one " "is armed with an electric prod and an integrated 8mm firearm." msgstr "" +"Военный робот, всё ещё активен, благодаря своему внутреннему источнику " +"питания. Вооружён электрической дубинкой и встроенным огнестрельным оружием " +"8 мм." #. ~ Description for military robot #: lang/json/MONSTER_from_json.py @@ -53980,10 +54262,13 @@ msgid "" "A military robot still operating due to its internal power core. This one " "is armed with an electric prod and an integrated 5x50mm flechette gun." msgstr "" +"Военный робот, всё ещё активен, благодаря своему внутреннему источнику " +"питания. Вооружён электрической дубинкой и встроенным огнестрельным, оружием" +" флешетта 5x50мм дротикового типа." #: lang/json/MONSTER_from_json.py msgid "grenadier robot" -msgstr "" +msgstr "робогренадер" #. ~ Description for grenadier robot #: lang/json/MONSTER_from_json.py @@ -53991,10 +54276,13 @@ msgid "" "A military robot still operating due to its internal power core. This one is" " armed with an electric prod and an integrated 40mm grenade launcher." msgstr "" +"Военный робот, всё ещё активен, благодаря своему внутреннему источнику " +"питания. Этот вооружен электрической дубинкой и встроенным 40мм " +"гранатометом." #: lang/json/MONSTER_from_json.py msgid "military flame robot" -msgstr "" +msgstr "военный робоогнемет" #. ~ Description for military flame robot #: lang/json/MONSTER_from_json.py @@ -54002,10 +54290,12 @@ msgid "" "A military robot still operating due to its internal power core. This one is" " armed with an electric prod and an integrated flamethrower." msgstr "" +"Военный робот, всё ещё активен, благодаря своему внутреннему источнику " +"питания. Этот вооружен электрической дубинкой и встроенным огнеметом." #: lang/json/MONSTER_from_json.py msgid "advanced robot" -msgstr "" +msgstr "продвинутый робот" #. ~ Description for advanced robot #: lang/json/MONSTER_from_json.py @@ -54013,10 +54303,12 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is armed with a powerful laser-emitter." msgstr "" +"Продвинутый робот, всё ещё активен, благодаря своему внутреннему, ядерному " +"источнику питания. Эта модель оснащена мощным лазерным излучателем." #: lang/json/MONSTER_from_json.py msgid "laser-emitting robot" -msgstr "" +msgstr "лазерный робот" #. ~ Description for laser-emitting robot #: lang/json/MONSTER_from_json.py @@ -54024,10 +54316,12 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is furnished with a powerful laser-emitter." msgstr "" +"Продвинутый робот, всё ещё активен, благодаря своему внутреннему, ядерному " +"источнику питания. Эта модель оснащена мощным лазерным излучателем." #: lang/json/MONSTER_from_json.py msgid "plasma-ejecting robot" -msgstr "" +msgstr "плазмаробот" #. ~ Description for plasma-ejecting robot #: lang/json/MONSTER_from_json.py @@ -54035,10 +54329,12 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is furnished with a powerful plasma-ejector." msgstr "" +"Продвинутый робот, всё ещё активен, благодаря своему внутреннему, ядерному " +"источнику питания. Эта модель оснащена мощным плазменным испускателем." #: lang/json/MONSTER_from_json.py msgid "railgun robot" -msgstr "" +msgstr "рельсоробот" #. ~ Description for railgun robot #: lang/json/MONSTER_from_json.py @@ -54046,10 +54342,12 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is furnished with a powerful railgun." msgstr "" +"Продвинутый робот, всё ещё активен, благодаря своему внутреннему, ядерному " +"источнику питания. Эта модель оснащена мощной рельсопушкой." #: lang/json/MONSTER_from_json.py msgid "electro-casting robot" -msgstr "" +msgstr "электрокастер-робот" #. ~ Description for electro-casting robot #: lang/json/MONSTER_from_json.py @@ -54057,10 +54355,12 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is furnished with a powerful electro-caster." msgstr "" +"Продвинутый робот, всё ещё активен, благодаря своему внутреннему, ядерному " +"источнику питания. Эта модель оснащена мощным электро излучателем." #: lang/json/MONSTER_from_json.py msgid "EMP-projecting robot" -msgstr "" +msgstr "ЭМИ-метательный робот" #. ~ Description for EMP-projecting robot #: lang/json/MONSTER_from_json.py @@ -54068,10 +54368,12 @@ msgid "" "An advanced robot still functioning due to its internal fusion core. This " "model is furnished with a powerful EMP-projector." msgstr "" +"Продвинутый робот, всё ещё активен, благодаря своему внутреннему, ядерному " +"источнику питания. Эта модель оснащена мощным ЭМИ-метателем." #: lang/json/MONSTER_from_json.py msgid "junkyard cowboy" -msgstr "" +msgstr "мусорный ковбой" #. ~ Description for junkyard cowboy #: lang/json/MONSTER_from_json.py @@ -54079,10 +54381,13 @@ msgid "" "A salvaged defense robot refitted with a shotgun and two circular buzzsaws. " "Due to bootleg targeting software, it can only attack nearby targets." msgstr "" +"Восстановленный оборонительный робот, оснащенный дробовиком и двумя " +"циркулярными пилами. Из-за контрабандного софта для наведения может " +"атаковать только близкие цели." #: lang/json/MONSTER_from_json.py msgid "shortcircuit samurai" -msgstr "" +msgstr "короткозамыкающий самурай" #. ~ Description for shortcircuit samurai #: lang/json/MONSTER_from_json.py @@ -54091,10 +54396,13 @@ msgid "" "taxed power systems result in somewhat sluggish movement and occasional " "discharges. Keep a safe distance!" msgstr "" +"Восстановленный оборонительный робот с двумя лезвиями под напряжением. " +"Перегруженные электронные системы приводят к некоторому вялому движению и " +"случайным разрядкам. Держитесь на безопасном расстоянии!" #: lang/json/MONSTER_from_json.py msgid "slapdash paladin" -msgstr "" +msgstr "стремительный паладин" #. ~ Description for slapdash paladin #: lang/json/MONSTER_from_json.py @@ -54103,10 +54411,12 @@ msgid "" "searing hot blades. The burning fuel reserves make the robot noisy and " "smokey." msgstr "" +"Восстановленный оборонительный робот с самодельным огнеметом и двумя жгуче-" +"горячими лезвиями. Горящее топливо делает робота шумными и дымным." #: lang/json/MONSTER_from_json.py msgid "robo-gaurdian" -msgstr "" +msgstr "робот-страж" #. ~ Description for robo-gaurdian #: lang/json/MONSTER_from_json.py @@ -54116,10 +54426,14 @@ msgid "" "limit the effective range and accuracy. It makes for a good close range " "bodyguard." msgstr "" +"Восстановленный военный робот, оснащенный парой встроенных 9 мм пушек. " +"Несколько стволов обеспечивают высокую интенсивность стрельбы, но собранные " +"на коленке сенсоры ограничивают точность и радиус эффективной стрельбы. Это " +"делает его хорошим охранником на коротких дистанциях." #: lang/json/MONSTER_from_json.py msgid "robote deluxe" -msgstr "" +msgstr "робот-делюкс" #. ~ Description for robote deluxe #: lang/json/MONSTER_from_json.py @@ -54128,10 +54442,13 @@ msgid "" "firearms. An opulent luxury-bot suitable for those who wish to survive the " "apocalypse in style." msgstr "" +"Роскошный, золотистый робот с бриллиантами, вооруженный парой встроенных 9 " +"мм огнестрельных пушек. Неповторимый и неприлично богатый вид, подходящий " +"для тех, кто хочет выжить в апокалипсисе по стилю." #: lang/json/MONSTER_from_json.py msgid "robo-protector" -msgstr "" +msgstr "робот-охранник" #. ~ Description for robo-protector #: lang/json/MONSTER_from_json.py @@ -54140,10 +54457,14 @@ msgid "" "modified firearm is only capable of three round bursts, but range and " "accuracy are decent. It makes for a solid combat ally." msgstr "" +"Восстановленный военный робот, оснащенный встроенными 5.56 мм винтовками. " +"Модифицированное оружие позволяет стрелять только очередями по три патрона, " +"но эффективный радиус и точность вполне приемлемые. Это делает его солидным " +"боевым партнером." #: lang/json/MONSTER_from_json.py msgid "robo-defender" -msgstr "" +msgstr "робот-защитник" #. ~ Description for robo-defender #: lang/json/MONSTER_from_json.py @@ -54153,10 +54474,14 @@ msgid "" "software requires an extended pause between shots. It makes for a good long " "range sniper." msgstr "" +"Восстановленный военный робот, оснащенный встроенной 50bmg винтовкой. " +"Улучшенная оптика обеспечивает ночное зрение и великолепный эффективный " +"радиус, но багованная система наведения требует дополнительных пауз между " +"выстрелами. Это делает его отличным дальнобойным снайпером." #: lang/json/MONSTER_from_json.py msgid "glittering lady" -msgstr "" +msgstr "блестящая леди" #. ~ Description for glittering lady #: lang/json/MONSTER_from_json.py @@ -54165,10 +54490,14 @@ msgid "" " It has two integral lasers and emits a steady pulse of blinding flashes. " "Due to mismatched focusing lenses, the lasers have limited range." msgstr "" +"Восстановленный, продвинутый робот, превращенный в светящийся маяк " +"разрушения. Имеет два встроенных лазера и испускает устойчивый импульс " +"ослепляющих вспышек. Из-за неподходящих фокусирующих линз у лазеров " +"ограниченный эффективный радиус." #: lang/json/MONSTER_from_json.py msgid "bitter spinster" -msgstr "" +msgstr "старая дева" #. ~ Description for bitter spinster #: lang/json/MONSTER_from_json.py @@ -54177,10 +54506,13 @@ msgid "" "acid fermenter feeds a ranged glob spitter and sprayer. The many tanks and " "pipes weaken the robot structurally, making it somewhat fragile." msgstr "" +"Восстановленный военный робот, превращенный в едкого монстра. Внутренний " +"кислотный ферментер питает пульверизатор и распылитель. Множество труб и " +"резервуаров делают конструкцию робота довольно хрупкой." #: lang/json/MONSTER_from_json.py msgid "chainsaw horror" -msgstr "" +msgstr "цепенящий ужас" #. ~ Description for chainsaw horror #: lang/json/MONSTER_from_json.py @@ -54191,10 +54523,14 @@ msgid "" " shrieks of distorted music. No one in their right mind would craft such an" " awful creature." msgstr "" +"Восстановленный робоцып, переоборудованный в жуткого монстра, украшенного " +"черепами и шипами. Оснащён жужжащими цепными пилами вместо дальнобойного " +"оружия. Имеются динамики для воспроизведения ужасающей искажённой музыки. " +"Никто в здравом уме не создаст такое ужасное существо." #: lang/json/MONSTER_from_json.py msgid "screeching terror" -msgstr "" +msgstr "визжащий ужас" #. ~ Description for screeching terror #: lang/json/MONSTER_from_json.py @@ -54205,10 +54541,14 @@ msgid "" "shrieks of distorted music. No one in their right mind would craft such a " "hellish beast." msgstr "" +"Восстановленный робоцып, переоборудованный в жуткого монстра, украшенного " +"черепами и шипами. Оснащён поршневыми копьями вместо дальнобойного оружия. " +"Имеются динамики для воспроизведения ужасающей искажённой музыки. Никто в " +"здравом уме не создал бы такого адского зверя." #: lang/json/MONSTER_from_json.py msgid "hooked nightmare" -msgstr "" +msgstr "цепляющийся кошмар" #. ~ Description for hooked nightmare #: lang/json/MONSTER_from_json.py @@ -54219,10 +54559,15 @@ msgid "" "installed to blast terrifying shrieks of distorted music. No one in their " "right mind would craft such a twisted abomination." msgstr "" +"Восстановленный робоцып, переоборудованный в жуткого монстра, украшенного " +"черепами и шипами. Оснащён крутящимися цепями с окровавленными крюками " +"взамен дальнобойного оружия. Имеются динамики для воспроизведения ужасающей " +"искажённой музыки. Никто в здравом уме не произвел бы такую извращенную " +"мерзость." #: lang/json/MONSTER_from_json.py msgid "fist king" -msgstr "" +msgstr "кулачный король" #. ~ Description for fist king #: lang/json/MONSTER_from_json.py @@ -54232,10 +54577,15 @@ msgid "" " ranged weapons, its armor and strength make it a match for the even the " "biggest monsters. Only a madman would dare build such a wreckless behemoth." msgstr "" +"Восстановленный танк-бот с парой мощных пневматических молотов для " +"сокрушения всего на своем пути, включая здания. Несмотря на отсутствие " +"оружия дальнего боя, его броня и позволяют совладать даже с самыми большими " +"монстрами. Только сумасшедший осмелился бы построить такое безобразное " +"чудище." #: lang/json/MONSTER_from_json.py msgid "atomic sultan" -msgstr "" +msgstr "атомный султан" #. ~ Description for atomic sultan #: lang/json/MONSTER_from_json.py @@ -54246,6 +54596,11 @@ msgid "" "radioactive gas leaks. Only a lunatic would dare build such a wreckless " "monster." msgstr "" +"Восстановленный танк-бот, переоборудованный горящими человекодробилками. " +"Несмотря на отсутствие оружия дальнего боя, его броня и позволяют совладать " +"даже с самыми большими монстрами. Многочисленные атомные ядра дают роботу " +"достаточную мощность, но также вызывают утечки радиоактивных газов. Только " +"сумасшедший посмел бы построить такого безжалостного монстра." #: lang/json/MONSTER_from_json.py lang/json/TOOL_from_json.py msgid "gelatinous mass" @@ -55049,12 +55404,12 @@ msgstr[3] "пожарная маска выживальщика XL" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from" -" heat, smoke, teargas, and shrapnel. It must be prepared before use." +" heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" -"Специально спроектированная газовая маска со встроенной прослойкой из " -"номекса, покрывающая лицо и глаза независимо от степени вашей мутации. " -"Обеспечивает потрясающую защиту от жара, дыма, слезоточивого газа и " -"осколков. Она должна быть подготовлена перед использованием." +"Специально разработанная противогазная маска со встроенной прослойкой из " +"номекса, покрывающая лицо и глаза независимо от ваших мутаций. Она " +"обеспечивает отличную защиту от тепла, дыма, слезоточивого газа и осколков. " +"Должна быть подготовлена перед использованием." #: lang/json/TOOL_ARMOR_from_json.py msgid "firefighter PBA mask" @@ -55072,7 +55427,7 @@ msgid "" "dangers. It must be prepared before use." msgstr "" "Автономный дыхательный аппарат, обычно используется пожарными. Отлично " -"защищает от дыма, огня и прочей гадости. Он должен быть подготовлен перед " +"защищает от дыма, огня и прочей опасности. Он должен быть подготовлен перед " "использованием." #: lang/json/TOOL_ARMOR_from_json.py @@ -56060,9 +56415,8 @@ msgid "" "will block sounds over a certain decibel amount, assuming it is charged with" " batteries." msgstr "" -"Пара наушников, используемых стрелками. Наушники выключены. Если они будут " -"заряжены батареями, то будут блокировать звуки до определённого уровня " -"децибел." +"Пара наушников, используемых стрелками. Наушники выключены. После зарядки " +"батарейками будут блокировать звуки громче определённого уровня децибел." #. ~ Description for shooter's earmuffs #: lang/json/TOOL_ARMOR_from_json.py @@ -56071,9 +56425,8 @@ msgid "" "will block sounds over a certain decibel amount, assuming it is charged with" " batteries." msgstr "" -"Пара наушников, используемых стрелками. Наушники включены. Если они будут " -"заряжены батареями, то будут блокировать звуки до определённого уровня " -"децибел." +"Пара наушников, используемых стрелками. Наушники включены. После зарядки " +"батарейками будут блокировать звуки громче определённого уровня децибел." #: lang/json/TOOL_ARMOR_from_json.py msgid "stethoscope" @@ -56166,6 +56519,50 @@ msgstr "" "Разложенный массив портативных квантовых солнечных панелей, готовый передать" " энергию в активированную систему зарядки по кабелю." +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "полицейский шлем с забралом" +msgstr[1] "полицейских шлема с забралом" +msgstr[2] "полицейских шлемов с забралом" +msgstr[3] "полицейский шлем с забралом" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "Вы подняли забрало." + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "" +"Шлем с пластиковым забралом, защищающим все ваше лицо. Активируйте, чтобы " +"поднять забрало." + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "шлем осназа (с поднятым забралом)" +msgstr[1] "шлема осназа (с поднятым забралом)" +msgstr[2] "шлемов осназа (с поднятым забралом)" +msgstr[3] "шлем осназа (с поднятым забралом)" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "Вы опустили забрало." + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." +msgstr "" +"Шлем осназа с поднятым пластиковым забралом. Активируйте, чтобы опустить " +"забрало." + #: lang/json/TOOL_from_json.py msgid "integrated toolset" msgid_plural "integrated toolsets" @@ -56218,10 +56615,10 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "boulder anvil" msgid_plural "boulder anvils" -msgstr[0] "наковальня валун" -msgstr[1] "наковальни валуна" -msgstr[2] "наковален валунов" -msgstr[3] "наковальня валун" +msgstr[0] "наковальня-валун" +msgstr[1] "наковальни-валуна" +msgstr[2] "наковален-валунов" +msgstr[3] "наковальня-валун" #: lang/json/TOOL_from_json.py msgid "cash card" @@ -57526,10 +57923,10 @@ msgid "" "professional-grade photos using this." msgstr "" "35-мм цифровая однообъективная зеркальная камера с оптическим и цифровым " -"видоискателем, трансфокатором с автофокусом и стабилизатором, а также " -"вспышкой. Вы можете просматривать на нём фотографии или переносить их с " -"помощью карты памяти. Работает на обычных батарейках. До Катаклизма с его " -"помощью вы могли бы делать фотографии профессионального уровня." +"видоискателем, вспышкой и трансфокатором с автофокусом и стабилизатором. Вы " +"можете просматривать на ней фотографии или переносить их с помощью карты " +"памяти. Работает на обычных батарейках. До Катаклизма вы могли бы делать " +"фотографии профессионального уровня с её помощью." #: lang/json/TOOL_from_json.py msgid "candle" @@ -58048,9 +58445,9 @@ msgid "" " modified to be a more effective weapon. Unfortunately these modifications " "have rendered it much less effective as a woodcutting tool." msgstr "" -"Эта электропила облегчена, оттюнингована и значительно модифицирована, чтобы" -" превратиться в высокоэффективное оружие. К сожалению, эти изменения резко " -"ухудшили эффективность пилки деревьев." +"Облегченная, отрегулированная и значительно измененная электропила, " +"превращённая в эффективное оружие. К сожалению, после таких модификаций " +"пилить ею деревья стало неудобно." #: lang/json/TOOL_from_json.py msgid "electric combat chainsaw (on)" @@ -58387,7 +58784,7 @@ msgid "" "to use it." msgstr "" "Длинный деревянный шест, к обоим концам которого прикреплено по электропиле." -" Порождение сумрачного гения, либо безумца. Большой вес гарантирует, что " +" Порождение сумрачного гения либо безумца. Большой вес гарантирует, что " "только сильный и опытный сможет надеяться на успешное применение." #: lang/json/TOOL_from_json.py @@ -62327,7 +62724,7 @@ msgstr "" "облегчение приступов астмы, очистку лёгких от дыма и вызывает краткий прилив" " энергии." -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" msgstr[0] "паяльник" @@ -64463,24 +64860,13 @@ msgstr "" "Похоже, что к этой картошке прикреплено что-то вроде GLaDOS — Генетической " "Формы Жизни и Дисковой Операционной Системы." -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "" -"Компактный винтовой домкрат, используется для поднятия машин. Оснащён " -"запатентованной технологией Aperture Science(tm), которая позволяет " -"поднимать двигатели, телепортируя себя под ними." - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Сумрак" +msgstr[1] "Сумрака" +msgstr[2] "Сумерек" +msgstr[3] "Сумерки" #. ~ Description for Dusk #: lang/json/TOOL_from_json.py @@ -64491,10 +64877,10 @@ msgid "" "the pommel seem to be made out of a brighter material, which feels " "abnormally cool to the touch." msgstr "" -"Длинный меч, сделанный из очень тёмного, почти чёрного металла. Его лезвие " -"кажется больше, чем у обычных стальных клинков и ощущается... более удобно в" -" руке. Хотя сам клинок из тёмного металла, гарда и навершие эфеса сделаны из" -" более светлого материала, при касании ощущаемом необычно холодным." +"Длинный меч из очень тёмного, почти чёрного металла. Его лезвие кажется " +"больше, чем у обычных стальных клинков и ощущается... удобнее в руке. Хотя " +"сам клинок из тёмного металла, гарда и навершие эфеса сделаны из более " +"светлого материала, необычно холодного на ощупь." #: lang/json/TOOL_from_json.py msgid "xiphos" @@ -64577,30 +64963,31 @@ msgstr "" #. ~ Use action use_message for disarmed advanced turret. #: lang/json/TOOL_from_json.py msgid "Error. No weapon systems found." -msgstr "" +msgstr "Ошибка. Не найдены оружейные системы." #. ~ Description for disarmed defense turret #: lang/json/TOOL_from_json.py msgid "An automated defense turret. It lacks an intergrated weapon." msgstr "" +"Автоматическая оборонительная турель. Ей не хватает встроенного оружия." #. ~ Description for disarmed military turret #: lang/json/TOOL_from_json.py msgid "An automated military turret. It lacks an intergrated weapon." -msgstr "" +msgstr "Автоматическая военная турель. Ей не хватает встроенного оружия." #. ~ Description for disarmed advanced turret #: lang/json/TOOL_from_json.py msgid "An advanced automated turret. It lacks an intergrated weapon." -msgstr "" +msgstr "Автоматическая продвинутая турель. Ей не хватает встроенного оружия." #: lang/json/TOOL_from_json.py msgid "inactive 9mm defense turret" msgid_plural "inactive 9mm defense turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная 9 мм оборонительная турель" +msgstr[1] "неактивные 9 мм оборонительные турели" +msgstr[2] "неактивных 9 мм оборонительных турелей" +msgstr[3] "неактивная 9 мм оборонительная турель" #. ~ Description for inactive 9mm defense turret #: lang/json/TOOL_from_json.py @@ -64610,14 +64997,19 @@ msgid "" "Place the turret and it will ID you as friendly with its advanced IFF " "software. Consult your safety manual in the event of a malfunction." msgstr "" +"Неактивная 9 мм оборонительная турель. При активации из вашего инвентаря " +"автоматически загружаются до 100 стандартных 9-миллиметровых патронов. " +"Поместите турель, и она будет дружественна вам с помощью своего " +"усовершенствованного программного обеспечения IFF. В случае сбоя обратитесь " +"к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive shotgun defense turret" msgid_plural "inactive shotgun defense turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная оборонительная турель с дробовиком" +msgstr[1] "неактивные оборонительные турели с дробовиком" +msgstr[2] "неактивных оборонительных турелей с дробовиком" +msgstr[3] "неактивная оборонительная турель с дробовиком" #. ~ Description for inactive shotgun defense turret #: lang/json/TOOL_from_json.py @@ -64627,14 +65019,19 @@ msgid "" "Place the turret and it will ID you as friendly with its advanced IFF " "software. Consult your safety manual in the event of a malfunction." msgstr "" +"Неактивная оборонительная турель с дробовиком. При активации из вашего " +"инвентаря автоматически загружаются до 100 стандартных 12ga патронов из " +"вашего инвентаря в турель. Поместите турель, и она будет дружественна вам с " +"помощью своего усовершенствованного программного обеспечения IFF. В случае " +"сбоя обратитесь к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive riot control turret" msgid_plural "inactive riot control turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная турель осназа" +msgstr[1] "неактивные турели осназа" +msgstr[2] "неактивных турелей осназа" +msgstr[3] "неактивная турель осназа" #. ~ Description for inactive riot control turret #: lang/json/TOOL_from_json.py @@ -64645,6 +65042,11 @@ msgid "" "with its advanced IFF software. Consult your safety manual in the event of " "a malfunction." msgstr "" +"Неактивная турель осназа. При активации из инвентаря автоматически " +"загружаются до 50 стандартных нелетальных 40-миллиметровых гранат. " +"Установите турель, и она будет дружественна вам с помощью своего " +"усовершенствованного программного обеспечения IFF. В случае сбоя обратитесь " +"к руководству по безопасности." #. ~ Description for inactive riot control turret #: lang/json/TOOL_from_json.py @@ -64655,14 +65057,19 @@ msgid "" "advanced IFF software. Consult your safety manual in the event of a " "malfunction." msgstr "" +"Неактивная турель осназа. При активации из инвентаря автоматически " +"загружаются до 50 стандартных газовых 40-миллиметровых гранат. Установите " +"турель, и она будет дружественна вам с помощью своего усовершенствованного " +"программного обеспечения IFF. В случае сбоя обратитесь к руководству по " +"безопасности." #: lang/json/TOOL_from_json.py msgid "inactive 5.56mm military turret" msgid_plural "inactive 5.56mm military turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная 5.56 мм военная турель" +msgstr[1] "неактивные 5.56 мм военные турели" +msgstr[2] "неактивных 5.56 мм военных турелей" +msgstr[3] "неактивная 5.56 мм военная турель" #. ~ Description for inactive 5.56mm military turret #: lang/json/TOOL_from_json.py @@ -64673,14 +65080,19 @@ msgid "" "advanced IFF software. Consult your safety manual in the event of a " "malfunction." msgstr "" +"Неактивная 5.56-миллиметровая военная турель. После активации из инвентаря " +"автоматически загружаются 100 стандартных 5.56-миллиметровых патронов НАТО. " +"Установите турель, и она будет дружественна вам с помощью своего " +"усовершенствованного программного обеспечения IFF. В случае сбоя обратитесь " +"к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive 7.62mm military turret" msgid_plural "inactive 7.62mm military turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная 7.62 мм турель" +msgstr[1] "неактивные 7.62 мм турели" +msgstr[2] "неактивных 7.62 мм турелей" +msgstr[3] "неактивная 7.62 мм турель" #. ~ Description for inactive 7.62mm military turret #: lang/json/TOOL_from_json.py @@ -64691,14 +65103,19 @@ msgid "" "advanced IFF software. Consult your safety manual in the event of a " "malfunction." msgstr "" +"Неактивная 7.62-миллиметровая военная турель. После активации из инвентаря " +"автоматически загружаются 100 стандартных 7.62-миллиметровых патронов НАТО. " +"Установите турель, и она будет дружественна вам с помощью своего " +"усовершенствованного программного обеспечения IFF. В случае сбоя обратитесь " +"к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive 50 caliber military turret" msgid_plural "inactive 50 caliber military turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная турель 50 калибра" +msgstr[1] "неактивные турели 50 калибра" +msgstr[2] "неактивных турелей 50 калибра" +msgstr[3] "неактивная турель 50 калибра" #. ~ Description for inactive 50 caliber military turret #: lang/json/TOOL_from_json.py @@ -64709,14 +65126,19 @@ msgid "" "advanced IFF software. Consult your safety manual in the event of a " "malfunction." msgstr "" +"Неактивная турель 50 калибра. После активации из инвентаря автоматически " +"загружаются 100 стандартных BMG патронов калибра 50. Установите турель, и " +"она будет дружественна вам с помощью своего усовершенствованного " +"программного обеспечения IFF. В случае сбоя обратитесь к руководству по " +"безопасности." #: lang/json/TOOL_from_json.py msgid "inactive military needle turret" msgid_plural "inactive military needle turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная военная дротиковая турель" +msgstr[1] "неактивные военные дротиковые турели" +msgstr[2] "неактивных военных дротиковых турелей" +msgstr[3] "неактивная военная дротиковая турель" #. ~ Description for inactive military needle turret #: lang/json/TOOL_from_json.py @@ -64727,14 +65149,19 @@ msgid "" "advanced IFF software. Consult your safety manual in the event of a " "malfunction." msgstr "" +"Неактивная продвинутая дротиковая турель. После активации из инвентаря " +"автоматически загружаются 100 стандартных 5x50-миллиметровых патронов типа " +"флешетт. Установите турель, и она будет дружественна вам с помощью своего " +"усовершенствованного программного обеспечения IFF. В случае сбоя обратитесь " +"к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive military 8x40mm turret" msgid_plural "inactive military 8x40mm turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная военная 8x40 мм турель" +msgstr[1] "неактивные военные 8x40 мм турели" +msgstr[2] "неактивных военных 8x40 мм турелей" +msgstr[3] "неактивная военная 8x40 мм турель" #. ~ Description for inactive military 8x40mm turret #: lang/json/TOOL_from_json.py @@ -64745,14 +65172,19 @@ msgid "" "advanced IFF software. Consult your safety manual in the event of a " "malfunction." msgstr "" +"Неактивная продвинутая 8x40-миллиметровая турель. После активации из " +"инвентаря автоматически загружаются 100 стандартных 8x40-миллиметровых " +"безгильзовых патронов. Установите турель, и она будет дружественна вам с " +"помощью своего усовершенствованного программного обеспечения IFF. В случае " +"сбоя обратитесь к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive military 40mm grenade turret" msgid_plural "inactive military 40mm grenade turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная военная 40 мм гранатометная турель" +msgstr[1] "неактивные военные 40 мм гранатометные турели" +msgstr[2] "неактивных военных 40 мм гранатометных турелей" +msgstr[3] "неактивная военная 40 мм гранатометная турель" #. ~ Description for inactive military 40mm grenade turret #: lang/json/TOOL_from_json.py @@ -64763,14 +65195,19 @@ msgid "" "advanced IFF software. Consult your safety manual in the event of a " "malfunction." msgstr "" +"Неактивная военная гранатометная турель. После активации из инвентаря " +"автоматически загружаются 50 стандартных 40 мм разрывных гранат. Установите " +"турель, и она будет дружественна вам с помощью своего усовершенствованного " +"программного обеспечения IFF. В случае сбоя обратитесь к руководству по " +"безопасности." #: lang/json/TOOL_from_json.py msgid "inactive military flamethrower turret" msgid_plural "inactive military flamethrower turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная военная огнеметная турель" +msgstr[1] "неактивные военные огнеметные турели" +msgstr[2] "неактивных военных огнеметных турелей" +msgstr[3] "неактивная военная огнеметная турель" #. ~ Description for inactive military flamethrower turret #: lang/json/TOOL_from_json.py @@ -64780,14 +65217,18 @@ msgid "" "turret and it will ID you as friendly with its advanced IFF software. " "Consult your safety manual in the event of a malfunction." msgstr "" +"Неактивная военная огнеметная турель. После активации из инвентаря " +"автоматически загружаются 100 единиц напалма. Установите турель, и она будет" +" дружественна вам с помощью своего усовершенствованного программного " +"обеспечения IFF. В случае сбоя обратитесь к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive advanced laser turret" msgid_plural "inactive advanced laser turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная продвинутая лазерная турель" +msgstr[1] "неактивные продвинутые лазерные турели" +msgstr[2] "неактивных продвинутых лазерных турелей" +msgstr[3] "неактивная продвинутая лазерная турель" #. ~ Description for inactive advanced laser turret #: lang/json/TOOL_from_json.py @@ -64796,14 +65237,17 @@ msgid "" "friendly with its advanced IFF software. Consult your safety manual in the " "event of a malfunction." msgstr "" +"Неактивная продвинутая лазерная турель. Установите турель, и она будет " +"дружественна вам с помощью своего усовершенствованного программного " +"обеспечения IFF. В случае сбоя обратитесь к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive advanced plasma turret" msgid_plural "inactive advanced plasma turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная продвинутая плазменная турель" +msgstr[1] "неактивные продвинутые плазменные турели" +msgstr[2] "неактивных продвинутых плазменных турелей" +msgstr[3] "неактивная продвинутая плазменная турель" #. ~ Description for inactive advanced plasma turret #: lang/json/TOOL_from_json.py @@ -64812,14 +65256,17 @@ msgid "" "friendly with its advanced IFF software. Consult your safety manual in the " "event of a malfunction." msgstr "" +"Неактивная продвинутая плазменная турель. Установите турель, и она будет " +"дружественна вам с помощью своего усовершенствованного программного " +"обеспечения IFF. В случае сбоя обратитесь к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive advanced railgon turret" msgid_plural "inactive advanced railgon turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная продвинутая рельсопушечная турель" +msgstr[1] "неактивные продвинутые рельсопушечные турели" +msgstr[2] "неактивных продвинутых рельсопушечных турелей" +msgstr[3] "неактивная продвинутая рельсопушечная турель" #. ~ Description for inactive advanced railgon turret #: lang/json/TOOL_from_json.py @@ -64830,14 +65277,18 @@ msgid "" "advanced IFF software. Consult your safety manual in the event of a " "malfunction." msgstr "" +"Неактивная продвинутая рельсопушечная турель. После активации из инвентаря " +"автоматически загружаются 50 рельсовых выстрелов. Установите турель, и она " +"будет дружественна вам с помощью своего усовершенствованного программного " +"обеспечения IFF. В случае сбоя обратитесь к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive advanced acid turret" msgid_plural "inactive advanced acid turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная продвинутая кислотная турель" +msgstr[1] "неактивные продвинутые кислотные турели" +msgstr[2] "неактивных продвинутых кислотных турелей" +msgstr[3] "неактивная продвинутая кислотная турель" #. ~ Description for inactive advanced acid turret #: lang/json/TOOL_from_json.py @@ -64846,14 +65297,17 @@ msgid "" "friendly with its advanced IFF software. Consult your safety manual in the " "event of a malfunction." msgstr "" +"Неактивная продвинутая рельсопушечная турель. Установите турель, и она будет" +" дружественна вам с помощью своего усовершенствованного программного " +"обеспечения IFF. В случае сбоя обратитесь к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive advanced EMP turret" msgid_plural "inactive advanced EMP turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная продвинутая ЭМИ турель" +msgstr[1] "неактивные продвинутые ЭМИ турели" +msgstr[2] "неактивных продвинутых ЭМИ турелей" +msgstr[3] "неактивная продвинутая ЭМИ турель" #. ~ Description for inactive advanced EMP turret #: lang/json/TOOL_from_json.py @@ -64862,14 +65316,17 @@ msgid "" "friendly with its advanced IFF software. Consult your safety manual in the " "event of a malfunction." msgstr "" +"Неактивная продвинутая ЭМИ турель. Установите турель, и она будет " +"дружественна вам с помощью своего усовершенствованного программного " +"обеспечения IFF. В случае сбоя обратитесь к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive advanced electro turret" msgid_plural "inactive advanced electro turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная продвинутая электро турель" +msgstr[1] "неактивные продвинутые электро турели" +msgstr[2] "неактивных продвинутых электро турелей" +msgstr[3] "неактивная продвинутая электро турель" #. ~ Description for inactive advanced electro turret #: lang/json/TOOL_from_json.py @@ -64878,14 +65335,17 @@ msgid "" " friendly with its advanced IFF software. Consult your safety manual in the" " event of a malfunction." msgstr "" +"Неактивная продвинутая электро турель. Установите турель, и она будет " +"дружественна вам с помощью своего усовершенствованного программного " +"обеспечения IFF. В случае сбоя обратитесь к руководству по безопасности." #: lang/json/TOOL_from_json.py lang/json/furniture_from_json.py msgid "garden gnome" msgid_plural "garden gnomes" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "садовый гном" +msgstr[1] "садовые гномы" +msgstr[2] "садовых гномов" +msgstr[3] "садовый гном" #. ~ Description for garden gnome #: lang/json/TOOL_from_json.py @@ -64893,14 +65353,16 @@ msgid "" "A normal and completely harmless garden gnome. You can place him in your " "garden or elsewhere." msgstr "" +"Обычный и полностью безопасный садовый гном. Вы можете поставить его в своем" +" саду или еще где угодно." #: lang/json/TOOL_from_json.py msgid "gaurdin gnome" msgid_plural "gaurdin gnomes" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "садовый гном" +msgstr[1] "садовых гнома" +msgstr[2] "садовых гномов" +msgstr[3] "садовый гном" #. ~ Description for gaurdin gnome #: lang/json/TOOL_from_json.py @@ -64908,6 +65370,8 @@ msgid "" "A normal and completely harmless garden gnome. He holds up to 100 rounds of" " 9mm ammo." msgstr "" +"Обычный и полностью безопасный садовый гном. Вмещает в себя до 100 " +"9-миллиметровых боеприпасов." #: lang/json/TOOL_from_json.py msgid "hobo stove" @@ -65232,17 +65696,16 @@ msgid "" "A replica of Laevateinn, the sword of Freyr. It is rumored to be able to " "fight by itself. It is decorated with gold and silver ornaments." msgstr "" -"Это копия меча Леватейн, которым владел сам бог Фрейр. По преданиям которые " -"сохранились, меч мог сражаться отдельно от хозяина. Украшен золотым и " -"серебряным орнаментом." +"Это копия меча Леватейн, которым владел сам бог Фрейр. По преданиям, меч мог" +" сражаться отдельно от хозяина. Украшен золотым и серебряным орнаментом." #: lang/json/TOOL_from_json.py msgid "inactive craftbuddy" msgid_plural "inactive craftbuddys" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный ремонтный бот" +msgstr[1] "неактивных ремонтных бота" +msgstr[2] "неактивных ремонтных ботов" +msgstr[3] "неактивный ремонтный бот" #. ~ Description for inactive craftbuddy #: lang/json/TOOL_from_json.py @@ -65250,6 +65713,8 @@ msgid "" "A robot crafting assistant. Useable in its current state as a portable " "workbench, or deployable as a traveling companion." msgstr "" +"Робот-помощник в изготовлении. В нынешнем состоянии может использоваться как" +" портативный верстак или как компаньон для путешествий." #. ~ Description for light auto armor #. ~ Description for basic auto armor @@ -65259,40 +65724,43 @@ msgid "" "A set of light power armor fitted with an AI core for automated use. " "Activate it to deploy the robot or disassemble it to use as armor." msgstr "" +"Набор легких силовых доспехов, оснащенных ядром AI для автоматического " +"использования. Активируйте его, чтобы развернуть робота или разберите для " +"использования в качестве доспехов." #: lang/json/TOOL_from_json.py msgid "basic auto armor" msgid_plural "basic auto armors" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "основная авто броня" +msgstr[1] "основные авто брони" +msgstr[2] "основных авто броней" +msgstr[3] "основная авто броня" #: lang/json/TOOL_from_json.py msgid "inactive hack" msgid_plural "inactive hacks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный дрон" +msgstr[1] "неактивных дрона" +msgstr[2] "неактивных дронов" +msgstr[3] "неактивный дрон" #: lang/json/TOOL_from_json.py msgid "inactive floating lantern" msgid_plural "inactive floating lanterns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный парящий фонарь" +msgstr[1] "неактивных парящих фонаря" +msgstr[2] "неактивных парящих фонарей" +msgstr[3] "неактивный парящий фонарь" #. ~ Use action friendly_msg for inactive floating lantern. #: lang/json/TOOL_from_json.py msgid "The floating lantern flies from your hand and lights up the area!" -msgstr "" +msgstr "Парящий фонарь взлетает из ваших ладоней и освещает все вокруг!" #. ~ Use action hostile_msg for inactive floating lantern. #: lang/json/TOOL_from_json.py msgid "You misprogram the lantern." -msgstr "" +msgstr "В ошиблись в настройке фонаря." #. ~ Description for inactive floating lantern #: lang/json/TOOL_from_json.py @@ -65302,24 +65770,27 @@ msgid "" "aggressive and has no means of attack. Activate this item to deploy the " "salvaged robot." msgstr "" +"Неактивный парящий фонарь, робот размером с кулак, который летает вокруг и " +"освещает пространство с помощью ярких светодиодов. Фонарь неагрессивен и не " +"может атаковать. Активируйте, чтобы развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive distract-o-hack" msgid_plural "inactive distract-o-hacks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный отвлекатель" +msgstr[1] "неактивных отвлекателя" +msgstr[2] "неактивных отвлекателей" +msgstr[3] "неактивный отвлекатель" #. ~ Use action friendly_msg for inactive distract-o-hack. #: lang/json/TOOL_from_json.py msgid "The distract-o-hack flies from your hand and begins sparking!" -msgstr "" +msgstr "Отвлекатель взлетает из ваших ладоней и начинает искриться!" #. ~ Use action hostile_msg for inactive distract-o-hack. #: lang/json/TOOL_from_json.py msgid "You misprogram the distract-o-hack!" -msgstr "" +msgstr "Вы ошиблись в настройке отвлекателя!" #. ~ Description for inactive distract-o-hack #: lang/json/TOOL_from_json.py @@ -65329,24 +65800,28 @@ msgid "" "will harass hostile targets to draw their attention. Activate this item to " "deploy the robot. It cannot be recovered once activated." msgstr "" +"Неактивный отвлекатель, робот размером с кулак, который летает вокруг и " +"производит искры, шум и дам. У восстановленного робота нет оружия, но он " +"будет дразнить противников чтобы привлечь их внимание. Активируйте, чтобы " +"развернуть робота. После активации не может быть восстановлен." #: lang/json/TOOL_from_json.py msgid "inactive arson hack" msgid_plural "inactive arson hacks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный поджигатель" +msgstr[1] "неактивных поджигателя" +msgstr[2] "неактивных поджигателей" +msgstr[3] "неактивный поджигатель" #. ~ Use action friendly_msg for inactive arson hack. #: lang/json/TOOL_from_json.py msgid "The arson hack flies from your hand! Get clear!" -msgstr "" +msgstr "Поджигатель взлетает из ваших ладоней! Смывайтесь!" #. ~ Use action hostile_msg for inactive arson hack. #: lang/json/TOOL_from_json.py msgid "You misprogram the arson hack! Run!" -msgstr "" +msgstr "Вы ошиблись в настройке поджигателя! Бегите!" #. ~ Description for inactive arson hack #: lang/json/TOOL_from_json.py @@ -65357,24 +65832,29 @@ msgid "" "Activate this item to deploy the robot. It cannot be recovered once " "activated." msgstr "" +"Неактивный поджигатель, робот размером с кулак, который летает вокруг и " +"хаотично плюется смертоносным огнем. У восстановленного робота нет оружия, " +"он будет испускать прерывистые всплески пламени, когда движется к враждебным" +" целям. Активируйте, чтобы развернуть робота. После активации не может быть " +"восстановлен." #: lang/json/TOOL_from_json.py msgid "inactive spore hack" msgid_plural "inactive spore hacks" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный споромет" +msgstr[1] "неактивных споромета" +msgstr[2] "неактивных спорометов" +msgstr[3] "неактивный споромет" #. ~ Use action friendly_msg for inactive spore hack. #: lang/json/TOOL_from_json.py msgid "The spore hack flies from your hand!" -msgstr "" +msgstr "Споромет взлетает из ваших ладоней!" #. ~ Use action hostile_msg for inactive spore hack. #: lang/json/TOOL_from_json.py msgid "You misprogram the spore hack!" -msgstr "" +msgstr "Вы ошиблись в настройке споромета." #. ~ Description for inactive spore hack #: lang/json/TOOL_from_json.py @@ -65384,14 +65864,17 @@ msgid "" "intermitently cover the terrain with puffs of fungal spores. Activate this " "item to depoly the robot." msgstr "" +"Неактивный споромет, робот размером с кулак, который летает вокруг и " +"распространяет чужеродные споры. Робот будет осыпать врагов спорами и " +"покрывать ими площадь вокруг. Активируйте, чтобы развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive water turret" msgid_plural "inactive water turrets" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная водная пушка" +msgstr[1] "неактивные водные пушки" +msgstr[2] "неактивных водных пушек" +msgstr[3] "неактивная водная пушка" #. ~ Description for inactive water turret #: lang/json/TOOL_from_json.py @@ -65401,22 +65884,26 @@ msgid "" "Place the turret and it will ID you as friendly with its advanced IFF " "software. There is no safety manual." msgstr "" +"Неактивная водная оборонительная турель. При активации из вашего инвентаря " +"автоматически загружаются до 1000 единиц воды. Поместите турель, и она будет" +" дружественна вам с помощью своего усовершенствованного программного " +"обеспечения IFF. В случае сбоя обратитесь к руководству по безопасности." #: lang/json/TOOL_from_json.py msgid "inactive eyebot" msgid_plural "inactive eyebots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный глазобот" +msgstr[1] "неактивных глазобота" +msgstr[2] "неактивных глазоботов" +msgstr[3] "неактивный глазобот" #: lang/json/TOOL_from_json.py msgid "inactive floating heater" msgid_plural "inactive floating heaters" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный парящий нагреватель" +msgstr[1] "неактивных парящих нагревателя" +msgstr[2] "неактивных парящих нагревателей" +msgstr[3] "неактивный парящий нагреватель" #. ~ Description for inactive floating heater #: lang/json/TOOL_from_json.py @@ -65425,14 +65912,17 @@ msgid "" "constant jet of warm air to heat an enclosed space. It is non-aggessive and" " has no weapons systems. Activate this item to deploy the robot." msgstr "" +"Восстановленный глазобот, переоборудованный в летающий обогреватель. " +"Производит постоянную струю тепла для прогрева закрытого помещения. Не " +"агрессивен и не имеет никакого оружия. Активируйте, чтобы развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive floating furnace" msgid_plural "inactive floating furnaces" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная летающая печь" +msgstr[1] "неактивные летающие печи" +msgstr[2] "неактивных летающих печей" +msgstr[3] "неактивная летающая печь" #. ~ Description for inactive floating furnace #: lang/json/TOOL_from_json.py @@ -65442,14 +65932,18 @@ msgid "" "aggessive and has no weapons systems. Activate this item to deploy the " "robot." msgstr "" +"Восстановленный глазобот, переоборудованный в летающий нагреватель. " +"Производит постоянную струю очень горячего воздуха для прогрева закрытого " +"помещения. Не агрессивен и не имеет никакого оружия. Активируйте, чтобы " +"развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive burning eye" msgid_plural "inactive burning eyes" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный горящий глаз" +msgstr[1] "неактивных горящих глаза" +msgstr[2] "неактивных горящих глаз" +msgstr[3] "неактивный горящий глаз" #. ~ Description for inactive burning eye #: lang/json/TOOL_from_json.py @@ -65457,22 +65951,24 @@ msgid "" "A salvaged eyebot refitted with a laser weapon which it will use on hostile " "targets. Activate this item to deploy the robot." msgstr "" +"Восстановленный глазобот, снабженный лазерным оружием, которое он будет " +"использовать для испепеления врагов. Активируйте, чтобы развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive utilibot" msgid_plural "inactive utilibots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный хозбот" +msgstr[1] "неактивных хозбота" +msgstr[2] "неактивных хозботов" +msgstr[3] "неактивный хозбот" #: lang/json/TOOL_from_json.py msgid "inactive blob breeder" msgid_plural "inactive blob breeders" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный инкубатор сгустков" +msgstr[1] "неактивных инкубатора сгустков" +msgstr[2] "неактивных инкубаторов сгустков" +msgstr[3] "неактивный инкубатор сгустков" #. ~ Description for inactive blob breeder #: lang/json/TOOL_from_json.py @@ -65482,14 +65978,17 @@ msgid "" "this item to deploy the robot and begin the incubation process, but you " "probably shouldn't." msgstr "" +"Восстановленный хозяйственный робот, переоборудованный в мобильный инкубатор" +" чужеродных сгустков. Не агрессивен и не обладает оружием. Вы можете его " +"активировать, чтобы робот начал процесс инкубации, но лучше не стоит." #: lang/json/TOOL_from_json.py msgid "inactive slime breeder" msgid_plural "inactive slime breeders" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный инкубатор слизи" +msgstr[1] "неактивных инкубатора слизи" +msgstr[2] "неактивных инкубаторов слизи" +msgstr[3] "неактивный инкубатор слизи" #. ~ Description for inactive slime breeder #: lang/json/TOOL_from_json.py @@ -65499,14 +65998,18 @@ msgid "" "and has no weapon systems. You can activate this item to deploy the robot " "and begin the incubation process." msgstr "" +"Восстановленный хозяйственный робот, переоборудованный в мобильный инкубатор" +" чужеродных сгустков, и модифицированный только для производства слизи. Не " +"агрессивен и не обладает оружием. Вы можете его активировать, чтобы робот " +"начал процесс инкубации." #: lang/json/TOOL_from_json.py msgid "inactive digestron" msgid_plural "inactive digestrons" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный автоклав" +msgstr[1] "неактивных автоклава" +msgstr[2] "неактивных автоклавов" +msgstr[3] "неактивный автоклав" #. ~ Description for inactive digestron #: lang/json/TOOL_from_json.py @@ -65516,14 +66019,18 @@ msgid "" "reserves. It is non aggressive and has no weapon systems. Activate this " "item to deploy the robot." msgstr "" +"Восстановленный хозяйственный робот, переоборудованный в вакуумный " +"очиститель. Он всасывает в себя вещи с земли и растворяет их с помощью своих" +" запасов кислоты. Не агрессивен и не обладает оружием. Активируйте для " +"развертывания робота." #: lang/json/TOOL_from_json.py msgid "inactive bee-bot" msgid_plural "inactive bee-bots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный пчелобот" +msgstr[1] "неактивных пчелобота" +msgstr[2] "неактивных пчелоботов" +msgstr[3] "неактивный пчелобот" #. ~ Description for inactive bee-bot #: lang/json/TOOL_from_json.py @@ -65534,22 +66041,27 @@ msgid "" "Activate this item, with wooden bolts in your inventory, to load and deploy " "the robot." msgstr "" +"Восстановленный хозяйственный робот, переоборудованный в передвижной улей, " +"который периодически удаляет и производит медовые соты. Он защищает колонию " +"с помощью механического арбалета, приделанного к его корпусу. Активируйте " +"его с деревянными арбалетными болтами в инвентаре для снаряжения и " +"развертывания робота." #: lang/json/TOOL_from_json.py msgid "inactive medibot" msgid_plural "inactive medibots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный медбот" +msgstr[1] "неактивных медбота" +msgstr[2] "неактивных медботов" +msgstr[3] "неактивный медбот" #: lang/json/TOOL_from_json.py msgid "inactive assassin robot" msgid_plural "inactive assassin robots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный робот ассасин" +msgstr[1] "неактивных робота ассасина" +msgstr[2] "неактивных роботов ассасинов" +msgstr[3] "неактивный робот ассасин" #. ~ Description for inactive assassin robot #: lang/json/TOOL_from_json.py @@ -65558,14 +66070,17 @@ msgid "" "hostile targets with a set of blades and a toxic needle. Activate this item" " to deploy the robot." msgstr "" +"Восстановленный медбот, переоборудованный в машину для убийств. Он будет " +"атаковать враждебные цели с помощью набора лезвий и иглой с токсинами. " +"Активируйте для развертывания робота." #: lang/json/TOOL_from_json.py msgid "inactive elixirator" msgid_plural "inactive elixirators" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный эликсиратор" +msgstr[1] "неактивных эликсиратора" +msgstr[2] "неактивных эликсираторов" +msgstr[3] "неактивный эликсиратор" #. ~ Description for inactive elixirator #: lang/json/TOOL_from_json.py @@ -65573,14 +66088,16 @@ msgid "" "A salvaged medibot with its internal pharma-fabricators repurposed to " "produce mutagen. Activate this item to deploy the robot." msgstr "" +"Восстановленный медбот производящий лекарства, переделанный под производство" +" мутагена. Активируйте для развертывания робота." #: lang/json/TOOL_from_json.py msgid "inactive party bot" msgid_plural "inactive party bots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный патибот" +msgstr[1] "неактивных патибота" +msgstr[2] "неактивных патиботов" +msgstr[3] "неактивный патибот" #. ~ Description for inactive party bot #: lang/json/TOOL_from_json.py @@ -65589,22 +66106,25 @@ msgid "" "lights, and programmed to dance. Activate this item to get the party " "started." msgstr "" +"Восстановленный медбот, загруженный марихуаной, покрытый разноцветными " +"лампочками и запрограммированный танцевать. Активируйте, чтобы начать " +"вечеринку." #: lang/json/TOOL_from_json.py msgid "inactive skitterbot" msgid_plural "inactive skitterbots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный робот-жук" +msgstr[1] "неактивных робота-жука" +msgstr[2] "неактивных роботов-жуков" +msgstr[3] "неактивный робот-жук" #: lang/json/TOOL_from_json.py msgid "inactive rat snatcher" msgid_plural "inactive rat snatchers" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный ловец крыс" +msgstr[1] "неактивных ловца крыс" +msgstr[2] "неактивных ловцов крыс" +msgstr[3] "неактивный ловец крыс" #. ~ Description for inactive rat snatcher #: lang/json/TOOL_from_json.py @@ -65613,14 +66133,16 @@ msgid "" "with pincers and an integrated tazer. Activate this item to deploy the " "robot." msgstr "" +"Восстановленный робот-жук, переоборудованный в охотника на мелкую добычу. " +"Атакует клешнями и встроенным тазером. Активируйте для развертывания робота." #: lang/json/TOOL_from_json.py msgid "inactive grab-bot" msgid_plural "inactive grab-bots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный робот-хвататель" +msgstr[1] "неактивных робота-хватателя" +msgstr[2] "неактивных роботов-хватателей" +msgstr[3] "неактивный робот-хвататель" #. ~ Description for inactive grab-bot #: lang/json/TOOL_from_json.py @@ -65628,14 +66150,16 @@ msgid "" "A salvaged skitterbot repurposed to grab onto and immobilize enemies. " "Activate this item to deploy the robot." msgstr "" +"Восстановленный робот-жук, переоборудованный в обездвиживателя врагов. " +"Активируйте для развертывания робота." #: lang/json/TOOL_from_json.py msgid "inactive pest hunter" msgid_plural "inactive pest hunters" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный истребитель вредителей" +msgstr[1] "неактивных истребителя вредителей" +msgstr[2] "неактивных истребителей вредителей" +msgstr[3] "неактивный истребитель вредителей" #. ~ Description for inactive pest hunter #: lang/json/TOOL_from_json.py @@ -65643,22 +66167,24 @@ msgid "" "A salvaged skitterbot refitted with an 8mm integrated firearm. Activate " "this item, with ammo in your inventory, to load and deploy the robot." msgstr "" +"Восстановленный робот-жук, оснащенный 8-миллиметровым интегрированным " +"огнестрельным оружием. Активируйте для развертывания робота." #: lang/json/TOOL_from_json.py msgid "inactive cyborg" msgid_plural "inactive cyborgs" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный киборг" +msgstr[1] "неактивных киборга" +msgstr[2] "неактивных киборгов" +msgstr[3] "неактивный киборг" #: lang/json/TOOL_from_json.py msgid "inactive necrotic cyborg" msgid_plural "inactive necrotic cyborgs" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный некрокиборг" +msgstr[1] "неактивных некрокиборга" +msgstr[2] "неактивных некрокиборгов" +msgstr[3] "неактивный некрокиборг" #. ~ Description for inactive necrotic cyborg #: lang/json/TOOL_from_json.py @@ -65667,22 +66193,25 @@ msgid "" "animate head retains some of its ability to revive zombies. Activate this " "item to deploy the robot." msgstr "" +"Восстановленный киборг, к которому приделали голову зомби-некроманта. " +"Одушевленная голова сохраняет часть своей способности поднимать зомби. " +"Активируйте для развертывания робота." #: lang/json/TOOL_from_json.py msgid "inactive defense robot" msgid_plural "inactive defense robots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный оборонный робот" +msgstr[1] "неактивных оборонных робота" +msgstr[2] "неактивных оборонных роботов" +msgstr[3] "неактивный оборонный робот" #: lang/json/TOOL_from_json.py msgid "inactive junkyard cowboy" msgid_plural "inactive junkyard cowboys" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный мусорный ковбой" +msgstr[1] "неактивных мусорных ковбоя" +msgstr[2] "неактивных мусорных ковбоев" +msgstr[3] "неактивный мусорный ковбой" #. ~ Description for inactive junkyard cowboy #: lang/json/TOOL_from_json.py @@ -65691,14 +66220,16 @@ msgid "" " Activate this item, with ammo in your inventory, to load and deploy the " "robot." msgstr "" +"Восстановленный оборонительный робот, оснащенный дробовиком и двумя " +"циркулярными пилами. Активируйте для развертывания робота." #: lang/json/TOOL_from_json.py msgid "inactive shortcircuit samurai" msgid_plural "inactive shortcircuit samurais" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный короткозамыкающий самурай" +msgstr[1] "неактивных короткозамыкающих самурая" +msgstr[2] "неактивных короткозамыкающих самурев" +msgstr[3] "неактивный короткозамыкающий самурай" #. ~ Description for inactive shortcircuit samurai #: lang/json/TOOL_from_json.py @@ -65706,14 +66237,16 @@ msgid "" "A salvaged defense robot refitted with an integrated tazer and two " "electrified blades. Activate this item to deploy the robot." msgstr "" +"Восстановленный оборонный робот, оснащенный встроенным тазером и двумя " +"лезвиями под напряжением. Активируйте для развертывания робота." #: lang/json/TOOL_from_json.py msgid "inactive slapdash paladin" msgid_plural "inactive slapdash paladins" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный стремительный паладин" +msgstr[1] "неактивных стремительных паладина" +msgstr[2] "неактивных стремительных паладинов" +msgstr[3] "неактивный стремительный паладин" #. ~ Description for inactive slapdash paladin #: lang/json/TOOL_from_json.py @@ -65722,22 +66255,25 @@ msgid "" "searing hot blades. Activate this item, with gasoline in your inventory, to" " load and deploy the robot... preferably far from anything flamable" msgstr "" +"Восстановленный оборонительный робот с самодельным огнеметом и двумя жгуче " +"горячими лезвиями. Активируйте его с бензином в инвентаре, чтобы зарядить и " +"развернуть робота... желательно подальше от всего воспламеняющегося." #: lang/json/TOOL_from_json.py msgid "inactive military robot" msgid_plural "inactive military robots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный военный робот" +msgstr[1] "неактивных военных робота" +msgstr[2] "неактивных военных роботов" +msgstr[3] "неактивный военный робот" #: lang/json/TOOL_from_json.py msgid "inactive robo-gaurdian" msgid_plural "inactive robo-gaurdians" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный робот-страж" +msgstr[1] "неактивных робота-стража" +msgstr[2] "неактивных роботов-стражей" +msgstr[3] "неактивный робот-страж" #. ~ Description for inactive robo-gaurdian #: lang/json/TOOL_from_json.py @@ -65746,14 +66282,17 @@ msgid "" "Activate this item, with ammo in your inventory, to load and deploy the " "robot." msgstr "" +"Восстановленный военный робот, оснащенный парой встроенных 9-миллиметровых " +"пушек. Активируйте его с соответствующими патронами в инвентаре, чтобы " +"зарядить и развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive robote deluxe" msgid_plural "inactive robote deluxes" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный робот-делюкс" +msgstr[1] "неактивных робота-делюкс" +msgstr[2] "неактивных роботов-делюкс" +msgstr[3] "неактивный робот-делюкс" #. ~ Description for inactive robote deluxe #: lang/json/TOOL_from_json.py @@ -65763,14 +66302,18 @@ msgid "" "apoyalypse in style. Activate this item, with ammo in your inventory, to " "load and deploy the robot." msgstr "" +"Роскошный, золотистый робот с бриллиантами, вооруженный парой встроенных 9 " +"мм огнестрельных пушек. Неповторимый и неприлично богатый вид, подходящий " +"для тех, кто хочет выжить в апокалипсисе по стилю. Активируйте его с " +"соответствующими патронами в инвентаре, чтобы зарядить и развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive robo-protector" msgid_plural "inactive robo-protectors" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный робот-охранник" +msgstr[1] "неактивных робота-охранника" +msgstr[2] "неактивных роботов-охранников" +msgstr[3] "неактивный робот-охранник" #. ~ Description for inactive robo-protector #: lang/json/TOOL_from_json.py @@ -65779,14 +66322,17 @@ msgid "" "Activate this item, with ammo in your inventory, to load and deploy the " "robot." msgstr "" +"Восстановленный военный робот, оснащенный встроенными 5.56 мм винтовками. " +"Активируйте его с соответствующими патронами в инвентаре, чтобы зарядить и " +"развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive robo-defender" msgid_plural "inactive robo-defenders" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный робот-защитник" +msgstr[1] "неактивных робота-защитника" +msgstr[2] "неактивных роботов-защитников" +msgstr[3] "неактивный робот-защитник" #. ~ Description for inactive robo-defender #: lang/json/TOOL_from_json.py @@ -65794,22 +66340,25 @@ msgid "" "A salvaged military robot refitted with an integrated 50bmg rifle. Activate" " this item, with ammo in your inventory, to load and deploy the robot." msgstr "" +"Восстановленный военный робот, оснащенный встроенной 50bmg винтовкой. " +"Активируйте его с соответствующими патронами в инвентаре, чтобы зарядить и " +"развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive advanced robot" msgid_plural "inactive advanced robots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный продвинутый робот" +msgstr[1] "неактивных продвинутых робота" +msgstr[2] "неактивных продвинутых роботов" +msgstr[3] "неактивный продвинутый робот" #: lang/json/TOOL_from_json.py msgid "inactive glittering lady" msgid_plural "inactive glittering ladys" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная блестящая леди" +msgstr[1] "неактивных блестящих леди" +msgstr[2] "неактивных блестящих леди" +msgstr[3] "неактивная блестящая леди" #. ~ Description for inactive glittering lady #: lang/json/TOOL_from_json.py @@ -65818,14 +66367,17 @@ msgid "" " It attacks hostile targets with its two integral lasers and blinding " "flashes. Activate this item to deploy the robot." msgstr "" +"Восстановленный, продвинутый робот, превращенный в светящийся маяк " +"разрушения. Атакуют с помощью двух встроенных лазеров и испускает устойчивый" +" импульс ослепляющих вспышек. Активируйте, чтобы развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive bitter spinster" msgid_plural "inactive bitter spinsters" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивная старая дева" +msgstr[1] "неактивных старых девы" +msgstr[2] "неактивных старых дев" +msgstr[3] "неактивная старая дева" #. ~ Description for inactive bitter spinster #: lang/json/TOOL_from_json.py @@ -65834,22 +66386,25 @@ msgid "" "acid fermenter feeds a ranged glob spitter and sprayer. Activate this item " "to deploy the robot." msgstr "" +"Восстановленный военный робот, превращенный в едкого монстра. Внутренний " +"кислотный ферментер питает пульверизатор и распылитель. Активируйте, чтобы " +"развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive chickenwalker" msgid_plural "inactive chickenwalkers" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный робоцып" +msgstr[1] "неактивных робоцыпа" +msgstr[2] "неактивных робоцыпов" +msgstr[3] "неактивный робоцып" #: lang/json/TOOL_from_json.py msgid "inactive chainsaw horror" msgid_plural "inactive chainsaw horrors" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный цепенящий ужас" +msgstr[1] "неактивных цепенящих ужаса" +msgstr[2] "неактивных цепенящих ужасов" +msgstr[3] "неактивный цепенящий ужас" #. ~ Description for inactive chainsaw horror #: lang/json/TOOL_from_json.py @@ -65859,14 +66414,17 @@ msgid "" "chainsaws and a deafening sound system. Activate this item to deploy the " "robot." msgstr "" +"Восстановленный робоцып, переоборудованный в жуткого монстра, украшенного " +"черепами и шипами. Он атакует парой жужжащих бензопил и оглушает " +"акустической системой. Активируйте, чтобы развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive screeching terror" msgid_plural "inactive screeching terrors" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный визжащий ужас" +msgstr[1] "неактивных визжащих ужаса" +msgstr[2] "неактивных визжащих ужасов" +msgstr[3] "неактивный визжащий ужас" #. ~ Description for inactive screeching terror #: lang/json/TOOL_from_json.py @@ -65876,14 +66434,17 @@ msgid "" "lances and a deafening sound system. Activate this item to deploy the " "robot." msgstr "" +"Восстановленный робоцып, переоборудованный в жуткого монстра, украшенного " +"черепами и шипами. Он атакует парой пневматических копьев и оглушает " +"акустической системой. Активируйте, чтобы развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive hooked nightmare" msgid_plural "inactive hooked nightmares" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный цепляющийся кошмар" +msgstr[1] "неактивных цепляющихся кошмара" +msgstr[2] "неактивных цепляющихся кошмаров" +msgstr[3] "неактивный цепляющийся кошмар" #. ~ Description for inactive hooked nightmare #: lang/json/TOOL_from_json.py @@ -65893,22 +66454,25 @@ msgid "" " on chains and a deafening sound system. Activate this item to deploy the " "robot." msgstr "" +"Восстановленный робоцып, переоборудованный в жуткого монстра, украшенного " +"черепами и шипами. Он атакует парой крутящихся цепей с крючками и оглушает " +"акустической системой. Активируйте, чтобы развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive tankbot" msgid_plural "inactive tankbots" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный танк-бот" +msgstr[1] "неактивных танк-бота" +msgstr[2] "неактивных танк-ботов" +msgstr[3] "неактивный танк-бот" #: lang/json/TOOL_from_json.py msgid "inactive fist king" msgid_plural "inactive fist kings" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный кулачный король" +msgstr[1] "неактивных кулачных короля" +msgstr[2] "неактивных кулачных королей" +msgstr[3] "неактивный кулачный король" #. ~ Description for inactive fist king #. ~ Description for inactive atomic sultan @@ -65918,14 +66482,17 @@ msgid "" "it uses to crush anything in its way, including buildings. Activate this " "item to deploy the robot." msgstr "" +"Восстановленный танк-бот с парой мощных пневматических молотов для " +"сокрушения всего на своем пути, включая здания. Активируйте, чтобы " +"развернуть робота." #: lang/json/TOOL_from_json.py msgid "inactive atomic sultan" msgid_plural "inactive atomic sultans" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "неактивный атомный султан" +msgstr[1] "неактивных атомных султана" +msgstr[2] "неактивных атомных султанов" +msgstr[3] "неактивный атомный султан" #: lang/json/TOOL_from_json.py msgid "active glowball" @@ -65953,6 +66520,18 @@ msgstr[1] "автономных хирургических лезвия" msgstr[2] "автономных хирургических лезвия" msgstr[3] "автономные хирургические лезвия" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While" +" activated, they will continously drain power to make automated precise cuts" +" but you will be unable to wield anything." +msgstr "" +"Комплект имплантированных в пальцы хирургических лезвий. После активации " +"способны выполнять точные автоматические разрезы за счёт постоянного " +"потребления энергии, но вы не сможете ничего взять в руки." + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -65966,8 +66545,7 @@ msgstr[3] "сгустковая рама растущая" msgid "" "You test the frame; It wiggles, and then collapses into an lump of goo." msgstr "" -"Вы испытали раму на прочность. От сильной вибрации, потеряла устойчивость и " -"выглядит как масса чего-то вязкого." +"Вы испытали раму на прочность; она дёргается и растекается кучей слизи." #. ~ Use action not_ready_msg for growing blob frame. #: lang/json/TOOL_from_json.py @@ -65981,10 +66559,8 @@ msgid "" " though there's greater amounts on the bindings. It's not quite tough " "enough to use." msgstr "" -"Растущая рама для транспортного средства сформировалась из костной ткани. " -"Покрыта толстым слоем слизи, в местах сочленения покрыта ещё большим " -"количеством для объединения между собой. Не требует больших усилий для " -"обращения." +"Растущая рама из костной ткани. Покрыта толстым слоем слизи, в местах " +"сочленения слизи ещё больше. Слишком непрочная для использования." #: lang/json/TOOL_from_json.py msgid "growing keratinous mass" @@ -66066,8 +66642,7 @@ msgstr "Что бы это ни было, это ещё не готово." msgid "" "Not quite fully grown, this blob requires nourishment to fully develop." msgstr "" -"Не совсем полностью выращенный, этот сгусток требует полноценного кормления " -"для развития." +"Этот сгусток не совсем вырос и требует полноценного кормления для развития." #: lang/json/TOOL_from_json.py msgid "growing beaded mass" @@ -66088,10 +66663,10 @@ msgstr[3] "ледяная масса растущая" #: lang/json/TOOL_from_json.py msgid "gelacier" msgid_plural "gelaciers" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "леденик" +msgstr[1] "леденика" +msgstr[2] "ледеников" +msgstr[3] "леденик" #. ~ Description for gelacier #: lang/json/TOOL_from_json.py @@ -66101,12 +66676,11 @@ msgid "" "state; yet possesses all the malleability of its former self. Fragments of " "frost continually flake off it. It seems pliable enough to pull apart..." msgstr "" -"Биологическая загадка, внутренние структуры этого сгустка находятся в " -"оболочке с жидкостью низкой плотности, которая остаётся в жидком состоянии " -"несмотря на переохлаждённое состояние всей структуры; и всё же обладает " -"достаточной податливостью внешней формы. Отдельные ледяные фрагменты " -"постоянно отслаиваются от тела. Кажется достаточно пластичным, чтобы " -"разорвать..." +"Биологическая загадка. Внутренности этого сгустка погружены в жидкость " +"низкой плотности, остающуюся жидкой несмотря на переохлаждённое состояние, и" +" при этом сгусток весьма пластичен. Кусочки льда постоянно отслаиваются от " +"тела. Кажется, сгусток достаточно податливый, чтобы его можно было " +"оторвать..." #: lang/json/TOOL_from_json.py msgid "growing cold mass" @@ -66143,15 +66717,13 @@ msgid "" "shape even under force, though the mass yields at your touch. With enough " "strength, you think you can pull it apart." msgstr "" -"Эксперимент который завершился ужасным результатом. В то время как " -"первоначальный замысел состоял в комбинировании структуры костяной рамы с " -"способностью сгустка поглощать; похоже, сгусток полностью поглотил кость. А " -"то что осталось — это аморфная масса слизи с тем, что, кажется, напоминает " -"многочисленные тонкие нити волокна свободно двигающиеся внутри. С небольшим " -"усилием вы можете схватить эти волокна и придать массе разнообразную форму. " -"Масса в состоянии сохранять новую форму даже под внешней силой, хотя масса " -"податлива при вашем касании. Вы всё таки полагаете, что сможете разорвать её" -" обладая достаточной силой." +"Эксперимент, увенчавшийся ужасным успехом. Изначальной целью было сочетание " +"структуры костяной рамы с амортизирующими свойствами сгустка, однако сгусток" +" полностью поглотил кость. Получилась аморфная масса слизи с плавающими " +"внутри бесчисленными тонкими волокнами. Вы можете схватить волокна и с " +"небольшим усилием растянуть массу, придав ей различную форму. Масса способна" +" сохранять новую форму даже при внешнем воздействии, хотя подаётся при вашем" +" касании. Вероятно, вы сможете оторвать ее с некоторым усилием." #: lang/json/TOOL_from_json.py msgid "multiplying gelatinous mass" @@ -66169,7 +66741,7 @@ msgstr[3] "желейная масса делящаяся" #. ~ Use action hostile_msg for multiplying oozing mass. #: lang/json/TOOL_from_json.py msgid "A blob splits and bounces away!" -msgstr "Сгусток делится и отскакивает далеко!" +msgstr "Сгусток делится и отскакивает прочь!" #. ~ Description for multiplying gelatinous mass #. ~ Description for multiplying gray mass @@ -66181,10 +66753,10 @@ msgid "" "until whatever it's doing is done! Catch those blobs before they bring in " "every zombie for miles!" msgstr "" -"Будучи откормленным, этот сгусток теперь быстро делится на копии себя " -"самого; чрезвычайно шумные копии! И что ещё хуже, увязнул в ваших руках, " -"пока любой другой, независимо от того что вы делаете, будет шуметь! Поймайте" -" эти сгустки, прежде чем они спровоцируют всех зомби на мили!" +"Этот сгусток накормлен и теперь быстро делится на копии себя самого; " +"чрезвычайно шумные копии! И ещё хуже, он прилип к вашим рукам, пока не " +"закончит свои дела, что бы это ни было! Поймайте эти сгустки, прежде чем они" +" приведут каждого зомби в милях вокруг!" #: lang/json/TOOL_from_json.py msgid "growing gelatinous mass" @@ -66212,17 +66784,12 @@ msgid "" "hardening its membrane to an almost steel-hard shell. You can still pull it" " apart with enough force. It's also really gray." msgstr "" -"Внутреннее строение этого создания достигло невероятного развития структуры " -"и приобрело способности к адаптации воздействия внешних условий среды " -"обитания. Сохраняя свою естественную эластичность и податливость простой " -"формы, приобрела поразительные способности к восприятию окружающего " -"пространства и ответную реакцию на различные физико-химические факторы, " -"которые вызывают раздражение. При прямом контакте с раздражителем или " -"объектом, который представляет опасность, серая масса способна перемещать и " -"видоизменять микроволокна, укрепляя мембрану своего тела до затвердевшего " -"состояния, формируемый панцирь может сравниться с твёрдостью стали. Вы всё " -"таки можете разорвать её обладая достаточной силой. Действительно, эта серая" -" масса на самом деле состоит из волокон нервной ткани." +"Внутреннее строение этого создания значительно усложнилось. Оно приобрело " +"значительные способности к восприятию и реакции на раздражители, сохраняя " +"прежние упругость и податливость. В случае опасности серая масса способна " +"двигать и изменять свои микроволокна, превращая мембрану в панцирь почти " +"стальной прочности. Вы все ещё можете оторвать её, приложив усилие. А ещё " +"она и правда серая." #: lang/json/TOOL_from_json.py msgid "multiplying gray mass" @@ -66282,13 +66849,11 @@ msgid "" " strength due to the increased number of supporting filaments. You believe " "you can split it apart with enough force." msgstr "" -"Аморфная масса, структура которой подверглась невероятному росту. Вдобавок к" -" увеличенному объёму липкой слизи и подвижным нитям волокна, похоже начала " -"развивать совершенно новые внутренние структуры. Подобно меньшим наблюдаемым" -" образцам, переходит в иное состояние и может изменять свою исходную форму, " -"переходя в различные структуры; с значительно большим пределом прочности на " -"разрыв из-за увеличенного числа поддерживающих нитей волокна. Вы всё таки " -"полагаете, что сможете разорвать её обладая достаточной силой." +"Аморфная масса, значительно выросшая в размерах. Помимо большего количества " +"слизи и подвижных волокон, начинается развитие других внутренних " +"образований. Как и меньшим собратьям, массе можно придать различную форму, " +"хотя из-за множества поддерживающих волокон прочность намного выше. Похоже, " +"вы можете порвать её, приложив усилие." #: lang/json/TOOL_from_json.py msgid "multiplying oozing mass" @@ -66390,10 +66955,10 @@ msgid "" "While the substance usually decays when separated from the catalyst; this " "cluster seems to be self-sustaining by some unknown mechanism. " msgstr "" -"Груда искусственных кристаллов, которые были расколоты алмазной матрицей. " -"Обычно вещество полностью разрушается, когда отделяется от катализатора; но " -"эта масса, похоже, способна выдержать, благодаря некоему неизвестному " -"механизму. " +"Гроздь искусственных кристаллов, отколовшихся от алмазной матрицы. Обычно " +"вещество полностью разрушается, когда отделяется от катализатора; но эта " +"масса, похоже, способна существовать самостоятельно благодаря некоему " +"неизвестному механизму. " #: lang/json/TOOL_from_json.py msgid "diamond matrix" @@ -66417,9 +66982,9 @@ msgid "" "A sparkling diamond with a dazzling spiral pattern. Small pieces of " "glittering crystal form on the edges as you hold it." msgstr "" -"Сверкающий алмаз великолепной винтообразной формы. Это сверкающее " +"Искрящийся алмаз великолепной винтообразной формы. Это сверкающее " "великолепие играет красками и переливается крохотными искорками на гранях, " -"пока вы держите его в своих руках." +"пока вы держите его в руках." #: lang/json/TOOL_from_json.py lang/json/vehicle_part_from_json.py msgid "vortex engine" @@ -66438,10 +67003,11 @@ msgid "" "map. An external mechanism allows it to be attached to a vehicle to render " "it mobile." msgstr "" -"Его называют «Коробка с торнадо». Внутри этого контейнера находится либо " -"венец человеческих изобретений в области энергетики, либо величайшее оружие " -"массового уничтожения, способное стереть с лица земли целую цивилизацию или " -"то, что от неё осталось. Внешний механизм позволяет крепить его в машине." +"Так сказать, торнадо в коробке. Внутри этого безобидного бака находится либо" +" венец человеческой мысли в области энергетики, либо величайшее оружие " +"массового уничтожения, способное стереть с лица земли целую цивилизацию - " +"или то, что от неё осталось. Внешний механизм позволяет крепить его в " +"машине." #: lang/json/TOOL_from_json.py lang/json/vehicle_part_from_json.py msgid "vortex generator" @@ -66460,10 +67026,10 @@ msgid "" "map. An external mechanism allow it to be hooked up to a battery to store " "the power generated." msgstr "" -"Его называют «Коробка с торнадо». Внутри этого контейнера находится либо " -"венец человеческих изобретений в области энергетики, либо величайшее оружие " -"массового уничтожения, способное стереть с лица земли целую цивилизацию или " -"то, что от неё осталось. Внешний механизм позволяет подключить его к " +"Так сказать, торнадо в коробке. Внутри этого безобидного бака находится либо" +" венец человеческой мысли в области энергетики, либо величайшее оружие " +"массового уничтожения, способное стереть с лица земли целую цивилизацию - " +"или то, что от неё осталось. Внешний механизм позволяет подключить его к " "аккумуляторам для сохранения вырабатываемой энергии." #: lang/json/TOOL_from_json.py @@ -66725,10 +67291,9 @@ msgid "" " place as you would wheels on a car. Then attach oars or a motor to get the" " boat to move." msgstr "" -"Деревянный борт лодки, который сохраняет лодку на плаву. Чтобы преобразовать" -" транспортное средство в лодку, поместите их так, как бы вы устанавливали " -"колёса на автомобиле. Потом прикрепите вёсла или мотор, чтобы заставить " -"лодку двигаться." +"Деревянный борт, сохраняет лодку на плаву. Чтобы превратить транспорт в " +"лодку, поместите борта так, как вы бы устанавливали колёса на автомобиле. " +"Потом прикрепите вёсла или мотор, чтобы заставить лодку двигаться." #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "Gelatinous track" @@ -66744,10 +67309,9 @@ msgid "" "construction vehicles. It's significantly stronger than regular tires due " "to not being at risk of bursting; but is quite heavy." msgstr "" -"Короткий взаимосвязанный набор траков, извлечённый из основных частей " -"монструозных сгустков. Похожи на те, что вы могли видеть на лёгких " -"конструкциях транспортных средств. Эти, невероятно прочные, по сравнению с " -"обычными колёсами из-за отсутствия риска разрыва; но они довольно тяжёлые." +"Короткий набор сцепленных траков, сделанный из чудовищных сгустковых частей." +" Похоже на то, что вы видели у лёгких строительных машин. Намного прочнее " +"обычных шин из-за отсутствия вероятности разрыва; но они довольно тяжёлые." #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "Oozing track" @@ -66759,7 +67323,7 @@ msgstr "серый трак" #: lang/json/WHEEL_from_json.py msgid "gelacier wheel" -msgstr "" +msgstr "леденик-колесо" #. ~ Description for gelacier wheel #: lang/json/WHEEL_from_json.py @@ -66770,12 +67334,10 @@ msgid "" "frost continually flake off it. It has formed itself into a wide boat " "frame." msgstr "" -"Биологическая загадка, внутренние структуры этого сгустка находятся в " -"оболочке с жидкостью низкой плотности, которая остаётся в жидком состоянии " -"несмотря на переохлаждённое состояние всей структуры; и всё же обладает " -"достаточной податливостью внешней формы. Отдельные ледяные фрагменты " -"постоянно отслаиваются от тела. Окончательно сформировался в широкую раму " -"для лодки." +"Биологическая загадка. Внутренности этого сгустка погружены в жидкость " +"низкой плотности, остающуюся жидкой несмотря на переохлаждённое состояние, и" +" при этом сгусток весьма пластичен. Кусочки льда постоянно отслаиваются от " +"тела. Окончательно сформировался в широкую раму для лодки." #. ~ Description for gelacier wheel #: lang/json/WHEEL_from_json.py @@ -66786,12 +67348,10 @@ msgid "" "frost continually flake off it. It has formed itself into a wide, crude " "wheel." msgstr "" -"Биологическая загадка, внутренние структуры этого сгустка находятся в " -"оболочке с жидкостью низкой плотности, которая остаётся в жидком состоянии " -"несмотря на переохлаждённое состояние всей структуры; и всё же обладает " -"достаточной податливостью внешней формы. Отдельные ледяные фрагменты " -"постоянно отслаиваются от тела. Окончательно сформировался в широкое сырое " -"колесо." +"Биологическая загадка. Внутренности этого сгустка погружены в жидкость " +"низкой плотности, остающуюся жидкой несмотря на переохлаждённое состояние, и" +" при этом сгусток весьма пластичен. Кусочки льда постоянно отслаиваются от " +"тела. Окончательно сформировался в грубое широкое колесо." #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "gelatinous wheel" @@ -66804,9 +67364,8 @@ msgid "" "to be a cross between a wheel, an otherworldly abomination, and one of those" " old squeezy toys." msgstr "" -"Заполнение желейной массы с водой привело в результате к чему-то, что " -"отдалённо напоминает гибрид потусторонне выглядящего и вызывающее отвращение" -" колеса с одной из тех старых резиновых игрушек детства." +"В результате наполнения желеобразной массы водой получилось что-то среднее " +"между колесом, инопланетной гадостью и одной из тех старых игрушек-пищалок." #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "gray wheel" @@ -66819,9 +67378,8 @@ msgid "" "a cross between a wheel, an otherworldly abomination, and one of those old " "squeezy toys." msgstr "" -"Заполнение серой массы с водой привело в результате к чему-то, что отдалённо" -" напоминает гибрид потусторонне выглядящего и вызывающее отвращение колеса с" -" одной из тех старых резиновых игрушек детства." +"В результате наполнения серой массы водой получилось что-то среднее между " +"колесом, инопланетной гадостью и одной из тех старых игрушек-пищалок." #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "earthen roller" @@ -66835,9 +67393,8 @@ msgid "" "grown to full size, it seems content to simply sit there." msgstr "" "Большой сферический сгусток размером с большую шину грузовика. Внешний слой " -"уплотнён в твердый панцирь; обеспечивая прекрасную упругость структуры. " -"Достигнув своего окончательного размера, похоже можно просто уместиться там " -"полностью." +"уплотнился в твердый панцирь с прекрасной упругостью. Похоже, он " +"окончательно вырос и ему нравится сидеть на своём месте." #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "oozing wheel" @@ -66850,9 +67407,8 @@ msgid "" "be a cross between a wheel, an otherworldly abomination, and one of those " "old squeezy toys." msgstr "" -"Заполнение слизевой массы с водой привело в результате к чему-то, что " -"отдалённо напоминает гибрид потусторонне выглядящего и вызывающее отвращение" -" колеса с одной из тех старых резиновых игрушек детства." +"В результате наполнения слизевой массы водой получилось что-то среднее между" +" колесом, инопланетной гадостью и одной из тех старых игрушек-пищалок." #: lang/json/WHEEL_from_json.py msgid "Rubber Caterpiller Track" @@ -66866,11 +67422,10 @@ msgid "" "used on light construction vehicles. It's significantly stronger than " "regular tires due to not being at risk of bursting; but is quite heavy." msgstr "" -"Короткий взаимосвязанный набор траков из жёсткого каучука, усиленный " -"несгибаем проводом, который проходит рядом с колёсиками меньшего размера. " -"Похожи на те, что вы могли видеть на лёгких конструкциях транспортных " -"средств. Эти, невероятно прочные, по сравнению с обычными колёсами из-за " -"отсутствия риска разрыва; но они довольно тяжёлые." +"Короткий набор сцепленных траков из укрепленной прочной проволокой жёсткой " +"резины, удерживаемых маленькими колёсиками. Похоже на то, что вы видели у " +"лёгких строительных машин. Намного прочнее обычных шин из-за отсутствия " +"вероятности разрыва; но они довольно тяжёлые." #: lang/json/WHEEL_from_json.py msgid "Steel Caterpiller Track" @@ -66884,10 +67439,10 @@ msgid "" "vehicles. It's significantly stronger than regular tires due to not being " "at risk of bursting; but is very heavy." msgstr "" -"Короткий взаимосвязанный набор стальных траков, который проходит рядом с " -"колёсиками меньшего размера. Похожи на те, что вы могли видеть на тяжёлых " -"конструкциях транспортных средств. Эти, невероятно прочные, по сравнению с " -"обычными колёсами из-за отсутствия риска разрыва; но они довольно тяжёлые." +"Короткий набор сцепленных стальных траков, удерживаемых маленькими " +"колёсиками. Похоже на то, что вы видели у больших строительных машин. " +"Намного прочнее обычных шин из-за отсутствия вероятности разрыва; но они " +"очень тяжёлые." #: lang/json/WHEEL_from_json.py msgid "Reinforced Caterpiller Track" @@ -66901,10 +67456,9 @@ msgid "" "vehicles. It's significantly stronger than regular tires due to not being " "at risk of bursting; but is extremely heavy." msgstr "" -"Короткий взаимосвязанный набор стальных траков, который проходит рядом с " -"колёсиками меньшего размера. Похожи на те, что вы могли видеть на БТР и " -"бронированных транспортных средствах. Эти, невероятно прочные, по сравнению " -"с обычными колёсами из-за отсутствия риска разрыва; но они довольно тяжёлые." +"Короткий набор сцепленных стальных траков, удерживаемых маленькими " +"колёсиками. Похоже на то, что вы видели у БТР и бронемашин. Намного прочнее " +"обычных шин из-за отсутствия вероятности разрыва; но они крайне тяжёлые." #: lang/json/activity_type_from_json.py msgid "Stop reloading?" @@ -67273,7 +67827,7 @@ msgstr "термоядерная батарея" #: lang/json/ammunition_type_from_json.py msgid "12mm slugs" -msgstr "жаканы 12 мм" +msgstr "12 мм жаканы" #: lang/json/ammunition_type_from_json.py msgid "solid hydrogen" @@ -67453,7 +68007,7 @@ msgid "" " of useless bionics which make squeaking noises when you walk." msgstr "" "Из-за жестокой иронии судьбы, плохо выполненная хирургическая установка КБМ " -"дала вам пару бесполезных бионик, которые скрипят, когда вы идёте." +"дала вам пару бесполезных бионик, которые скрипят при ходьбе." #: lang/json/bionic_from_json.py msgid "Alloy Plating - Arms" @@ -67891,8 +68445,8 @@ msgid "" " While powered, this system will prevent heat damage up to 2000 degrees " "Fahrenheit. Note that this does not affect your internal temperature." msgstr "" -"Мощные радиаторы и жаростойкие материалы хирургическим путём были вшиты в " -"ваше тело. Пока работает эта система, вы защищены от воздействия внешних " +"Мощные радиаторы и жаростойкие материалы вшиты в ваше тело хирургическим " +"путём. Пока работает эта система, вы защищены от воздействия внешних " "температур до 2000 градусов по Фаренгейту (1100 по Цельсию). Учитывайте, что" " эта система не влияет на вашу внутреннюю температуру." @@ -68141,7 +68695,7 @@ msgstr "" "Повреждённые энергетические цепи приводят к короткому замыканию внутри мышц," " когда уровень заряда вашего аккумулятора превышает 75%, в результате " "серьёзно уменьшается ваша сила. Это не будет оказывать влияние, если у вас " -"нет внутреннего аккумулятора." +"нет встроенного источника питания." #: lang/json/bionic_from_json.py msgid "Probability Travel" @@ -68259,7 +68813,7 @@ msgid "" "You have a few solar panels surgically installed. While in direct sunlight," " your power level will slowly recharge." msgstr "" -"У вас имеется небольшая солнечная панель, установленная хирургически. Под " +"У вас имеется небольшая хирургически установленная солнечная панель. Под " "прямыми солнечными лучами ваши аккумуляторы медленно заряжаются." #: lang/json/bionic_from_json.py @@ -68457,7 +69011,7 @@ msgstr "" #: lang/json/bionic_from_json.py msgid "Internal Chronometer" -msgstr "Внутренний хронометр" +msgstr "Встроенный хронометр" #: lang/json/bionic_from_json.py msgid "Water Extraction Unit" @@ -68520,11 +69074,19 @@ msgid "" "absorbers will prevent damage to your body from severe impacts, at the cost " "of impaired movement." msgstr "" -"Большая часть плоти на руках, ногах и верхней части торса была заменена " -"пружинами промышленного класса и защитной набивкой. Держа руку в напряжении," -" позволит вам сгибать и разгибать эту набивку; пока активированы, " -"гидравлические амортизаторы будут поглощать повреждения тела от серьёзных " -"ударов, за счёт снижения вашей мобильности." +"Большая часть плоти на руках, ногах и верхней части торса заменена пружинами" +" промышленного класса и защитными подкладками. Вы можете складывать и " +"раскладывать их сжатием кулака; в активированном состоянии гидравлические " +"амортизаторы будут предотвращать повреждения от сильных ударов за счёт " +"ограничения передвижения." + +#: lang/json/bionic_from_json.py lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "ионный перегрузочный генератор" +msgstr[1] "ионных перегрузочных генератора" +msgstr[2] "ионных перегрузочных генераторов" +msgstr[3] "ионный перегрузочный генератор" #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" @@ -68543,15 +69105,6 @@ msgstr "" "недостаток сна, то он увеличит скорость восстановления от негативных " "эффектов. " -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "ионный перегрузочный генератор" -msgstr[1] "ионных перегрузочных генератора" -msgstr[2] "ионных перегрузочных генераторов" -msgstr[3] "ионный перегрузочный генератор" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "Автономные хирургические лезвия" @@ -69892,7 +70445,7 @@ msgstr "Ваш успех в восстановлении прежней цив #: lang/json/dream_from_json.py msgid "NO! You will not allow this corruption to prevail!" -msgstr "НЕТ! Вы не позволите этому разложению преобладать!" +msgstr "НЕТ! Вы не позволите этой порче победить!" #: lang/json/dream_from_json.py msgid "You see yourself reflected in the beauty of the forest." @@ -69931,6 +70484,8 @@ msgid "" "Once you finish your tasty dinner of seeds, you look around for your drink, " "but you already ate it." msgstr "" +"Вы закончили свой вкусный ужин из семян и ищете напиток, но вы уже его " +"съели." #: lang/json/dream_from_json.py msgid "You are terrified by a dream of becoming an ape hybrid." @@ -70141,12 +70696,16 @@ msgstr "" msgid "" "You curl up some more in your nest. Geez, shredded paper really *is* comfy." msgstr "" +"Вы скручиваетесь еще немного в своем гнезде. Бооже, измельченная бумага " +"*действительно* удобна." #: lang/json/dream_from_json.py msgid "" "You hear the sirens again, but this time you stay in your hole in the wall." " Nobody will think to look there!" msgstr "" +"Вы снова слышите сирены, но на этот раз вы остаетесь в своей дыре в стене. " +"Никто не подумает искать там!" #: lang/json/dream_from_json.py msgid "We have been waiting a long time for a place such as this." @@ -70784,12 +71343,12 @@ msgstr "Под лазерным прицелом" msgid "A laser sight is targeting you!" msgstr "На вас наводится лазерный прицел!" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" msgstr "Надышался дымом" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "Вы вдохнули полные лёгкие густого дыма." @@ -70953,7 +71512,7 @@ msgstr "Заражённый" #: lang/json/effects_from_json.py msgid "Badly Infected" -msgstr "Сильно инфицирован" +msgstr "Сильно заражённый" #: lang/json/effects_from_json.py msgid "Pus Filled" @@ -70961,7 +71520,7 @@ msgstr "Загноившийся" #: lang/json/effects_from_json.py msgid "You have an infected wound." -msgstr "У вас есть инфицированная рана." +msgstr "У вас есть заражённая рана." #. ~ Apply message for effect(s) 'Infected, Badly Infected, Pus Filled'. #: lang/json/effects_from_json.py @@ -71694,10 +72253,9 @@ msgstr "Расслабляющий газ" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" -"You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort." +"You are thoroughly relaxed and don't feel like moving. Fighting? Too much " +"effort." msgstr "" -"Сила -3; Ловкость -3; Интеллект -2; Восприятие -4\n" "Вы слишком расслаблены и не хотите двигаться. Бой? Слишком много усилий." #. ~ Apply message for effect(s) 'Relaxation gas'. @@ -72043,11 +72601,12 @@ msgstr "Заживает" msgid "This damaged limb is slowly regaining its functions." msgstr "Повреждённая конечность медленно восстанавливает свои функции." -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" -msgstr "Сломана" +msgstr "Отключено" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "" @@ -72333,8 +72892,8 @@ msgid "" "body read, 'I wish I could have saved her.'" msgstr "" " Пробивался в Мичиган, чтобы найти свою семью, тогда он сломал свою ногу" -" в лесах. Умер от гипотермии неделю спустя. В записке найденной возле его " -"тела, содержалось, \"Мне очень жаль, что не смог её спасти.\"" +" в лесах. Умер от переохлаждения неделю спустя. В записке найденной возле " +"его тела, содержалось, \"Мне очень жаль, что я не смог её спасти.\"" #: lang/json/epilogue_from_json.py msgid "" @@ -72392,8 +72951,8 @@ msgstr "" " Завербовался на службу в Старую гвардию. Был убит в бою год спустя при " "столкновении с бандой Адских налётчиков в Вермонте. В своём завещании он " "предписывал, чтобы все права и вся собственность были переданы молодой " -"девушке, которую он встретил, охраняя лагерь МЧС. Которая чудом выжила со " -"своим новорожденным сыном." +"девушке, которую он встретил, охраняя лагерь МЧС. Его пережили молодая " +"девушка с новорожденным сыном." #: lang/json/epilogue_from_json.py msgid "" @@ -72402,9 +72961,8 @@ msgid "" "employer never had the resources nor intention to pay him." msgstr "" " Стал наёмным рабочим на любой аванпост, которому нужна была помощь. " -"Повешен за кражу имущества нанимателя; несколько недель спустя был " -"разоблачаён наниматель, никогда не имевший указанного имущества и намерения " -"заплатить рабочему за работу." +"Повешен за кражу имущества нанимателя; несколько недель спустя обнаружилось," +" что у нанимателя не было ни средств, ни желания заплатить ему." #: lang/json/epilogue_from_json.py msgid "" @@ -72424,7 +72982,7 @@ msgstr "" " Умер от заражённых ран, полученных после укуса несколько недель спустя." " Перед тем как он ушёл из жизни, он рассказал присутствующим, \"Я потерял " "всё в этом мире..., кроме вас. Продолжайте искать - мир огромен, должно быть" -" там место, которое не было наводнено монстрами.\"" +" там место, не заполненное монстрами.\"" #: lang/json/epilogue_from_json.py msgid "" @@ -72432,10 +72990,9 @@ msgid "" "your passing. Unable to find treatment, he asked to be put down while " "listening to someone read from his favorite novel, Don Quixote." msgstr "" -" Управляемый разрастающимся заражением, некоторой формой грибковой " -"инфекции, спустя несколько месяцев после того как вы ушли из жизни. Не в " -"состоянии найти излечение, он попросил похоронить его, пока будет слушать " -"кого-нибудь читающего его любимый роман, «Дон Кихот»." +" Подхватил какую-то грибковую инфекцию спустя несколько месяцев после " +"вашей смерти. Не в состоянии вылечиться, он попросил убить себя, пока кто-" +"нибудь читает вслух его любимый роман, «Дон Кихот»." #: lang/json/epilogue_from_json.py msgid "" @@ -72445,12 +73002,12 @@ msgid "" "thing to happen to us in years... there just isn't any turning back when you" " lose all hope.'" msgstr "" -" Стал самоучкой химиком и медиком. Его работа в конечном счёте привела " -"его к жизни в полной зависимости от морфия и злоупотребления алкоголем. " -"Однажды ночью у него случилась передозировка, когда остался без присмотра. " -"Местное население, которому он помог, заявило, \"Встреча с этим человеком " -"вероятно была лучшей вещью, которая произошла с нами за эти годы... там, " -"откуда не возвращаются, когда вы теряете всякую надежду.\"" +" Стал самоучкой химиком и медиком. Работа в конечном счёте привела его к" +" жизни в полной зависимости от морфия и алкоголя. Однажды ночью у него " +"случилась передозировка, когда он остался без присмотра. Местное население, " +"которому он помог, заявило, \"Встреча с этим человеком вероятно была лучшей " +"вещью, которая произошла с нами за эти годы... нельзя вернуться, если " +"потерял всякую надежду.\"" #: lang/json/epilogue_from_json.py msgid "" @@ -72460,7 +73017,7 @@ msgid "" msgstr "" " Продолжил свою деятельность выдающимся разведчиком и городским " "исследователем. Трагически убит, когда был загнан в угол в заброшенном " -"магазине, на вылазке с группой неопытных выживших." +"магазине на вылазке с группой неопытных выживших." #: lang/json/epilogue_from_json.py msgid "" @@ -72487,9 +73044,9 @@ msgstr "" " Сбился с пути ещё задолго до того, как он встретил вас. Катаклизм " "предложил ему шанс отказаться от своих порочных деяний, которые привели его " "до лишения свободы... предложение, которое осталось без ответа. После того, " -"как вы были убиты, он вернулся к налётам на тех, в ком видел слабость. Число" -" людей, которых он убил неизвестно но, до самой своей казни утверждал, что, " -"\"разделывать трупы мёртвых было не так весело как разделывать живых.\"" +"как вы погибли, он вернулся к налётам на тех, в ком видел слабость. " +"Неизвестно, скольких он убил, но до самой своей казни утверждал, что, " +"\"разделывать трупы мёртвых было не так весело, как разделывать живых.\"" #: lang/json/epilogue_from_json.py msgid "" @@ -72500,12 +73057,10 @@ msgid "" "heart attack while alone on a trip many years after the cataclysm." msgstr "" " Нашёл новый смысл жизни после вашей смерти. Несмотря на то, что он " -"никогда не рассказывал вам о своих уголовных делах в том умершем мире, это " -"препятствовало ему занять когда-либо реальное место в новом обществе. С " -"разрушением существующих систем криминальных досье он взял на себя " -"обязательства, чтобы доказать значимость сделанного выбора ближнему свему. " -"Умер от сердечного приступа в одиночестве, путешествуя по миру Катаклизма " -"много лет спустя." +"никогда не рассказывал вам, былые преступления в погибшем мире мешали ему " +"занять настоящее место в обществе. После уничтожения полицейских записей он" +" решил сам доказать свою значимость. Умер в одиночестве от сердечного " +"приступа во время путешествия много лет спустя после катаклизма." #: lang/json/epilogue_from_json.py msgid "" @@ -72516,12 +73071,12 @@ msgid "" "moments he saw Porkey the pig exclaim, 'That's all folks!' before an " "animated audience." msgstr "" -" Провёл всю жизнь втайне от всех увлекаясь то одним веществом, то " -"другим. После вашей смерти он недолго работал рабочим в лагере выживших, " -"пока не потерял контроль над реальностью из-за различных побочных эффектов, " -"связанных с его наркотиками. Умер от осложнений после приступа. В последние " +" Провёл всю жизнь, втайне ото всех увлекаясь то одним веществом, то " +"другим. После вашей смерти недолго трудился рабочим в лагере выживших, пока " +"не потерял связь над реальностью из-за различных побочных эффектов, " +"связанных с наркотиками. Умер от осложнений после приступа. В последние " "моменты своей жизни он видел мультипликационного персонажа Порки, который " -"восклицал: \"Вот и всё парни!\" перед оживлённой публикой." +"восклицал: \"Вот и всё, ребята!\" перед мультяшной публикой." #: lang/json/epilogue_from_json.py msgid "" @@ -72533,13 +73088,13 @@ msgid "" "cult. He was killed when he attempted to sneak into the cult's compound to " "enact revenge himself." msgstr "" -" Никогда не отличался особой храбростью, ни эмоциональной стабильностью." -" Его муки совести что не помог людям в течение первых дней возникновения " -"Катаклизма принудили его сделать попытку самоубийства, многократно в те " -"годы, которые последовали за ним. Жизнь улучшилась немного, когда он женился" -" на близко знакомой выжившей девушке, но брак был разрушен, когда его " -"супруга была убита членами тайного культа апокалипсиса. Был убит, когда " -"пытался прокрасться в строение культа, чтобы отомстить." +" Никогда не отличался ни особой храбростью, ни эмоциональной " +"стабильностью. Сожаление, что он не помог людям в течение первых дней после " +"Катаклизма, несколько раз принуждало его к попыткам самоубийства в " +"последующие годы. Жизнь немного наладилась, когда он женился на знакомой " +"выжившей девушке, но разрушилась вновь, когда его супругу убили члены " +"загадочного культа апокалипсиса. Погиб, когда пытался прокрасться в на " +"территорию культа, чтобы отомстить." #: lang/json/epilogue_from_json.py msgid "" @@ -72549,9 +73104,9 @@ msgid "" "never to be seen again." msgstr "" " Провёл остаток своей жизни, помогая то одной группе авантюристов, то " -"другой. В конце концов его удача отвернулась от него, когда он заболел съев " -"чего-то подпорченного. Был брошен своей группой в заражённом районе, больше " -"его никогда не видели." +"другой. В конце концов его удача отвернулась от него, когда он заболел, съев" +" что-то протухшее. Был брошен своей группой в заражённом районе, больше его " +"никогда не видели." #: lang/json/epilogue_from_json.py msgid "" @@ -72561,12 +73116,11 @@ msgid "" "grave. Upon consideration, the party that he was with opted to shoot him in" " the head and divide his belongings rather than waste the alcohol." msgstr "" -" Умер от сепсиса спустя несколько недель после вас. Его сломанные ноги, " -"которые в конечном счёте и убили его, могли быть легко обработаны и излечены" -" в любой другой похожей ситуации. Его последним желанием было, чтобы ему " -"позволили напиться в стельку в его же собственной могиле. После обсуждения " -"группа в которой он состоял предпочла выстрелить ему в голову и поделить его" -" имущество, чем потратить алкоголь впустую." +" Умер от сепсиса спустя несколько недель. Порез на ноге, в конце концов " +"убивший его, можно было вылечить в любой другой ситуации. Его последним " +"желанием было, чтобы ему позволили напиться до смерти. После обсуждения " +"группа, в которой он состоял, предпочла выстрелить ему в голову и поделить " +"его имущество, чем потратить алкоголь впустую." #: lang/json/epilogue_from_json.py msgid "" @@ -72579,13 +73133,12 @@ msgid "" "his service over the years." msgstr "" " Упорно работал после вашей смерти, чтобы организовать свою собственную " -"банду выживших. Женился и у него было двое детей, которые практиковались и " -"обучались каждому навыку выживальщика, который им когда-либо понадобится. " -"Его прошлое в конечном счёте настигло его, когда он вступил в конфликт с " -"полковником Старой гвардии. С тех пор как он сбежал со своего поста, когда " -"был солдатом Национальной гвардии во время начала Катаклизма, он был повешен" -" за дезертирство несмотря на протесты большого количества выживших, которые " -"получали выгоду пользуясь его услугами за все эти годы." +"группу выживших. Женился, вырастил двоих детей и обучил их всем навыку " +"выживания, какие только могли пригодиться. Его прошлое в конечном счёте " +"настигло его, когда он не поладил с полковником Старой гвардии. Поскольку во" +" время Катаклизма он был солдатом Национальной Гвардии и покинул свой пост, " +"его повесили за дезертирство, несмотря на протесты большого количества " +"выживших, которым он помог за все эти годы." #: lang/json/epilogue_from_json.py msgid "" @@ -72595,11 +73148,10 @@ msgid "" "disappearance after starting the journey was described by his fellow " "survivors as 'a waste of a perfectly good boat.'" msgstr "" -" Продолжил движение к побережью и восстановил маленькую парусную шлюпку." -" Несмотря на протесты тех, кто хорошо знал его, его решение отплыть в " -"поисках другого безлюдного тропического рая в Северной Атлантике было " -"окончательным. Его исчезновение после начала путешествия было описано " -"поддерживающими его выжившими как, \"трата просто отличнейшей лодки\"." +" Дошел до побережья и восстановил маленькую парусную шлюпку. Несмотря на" +" уговоры близких и знакомых, он твёрдо решил отплыть на поиски безлюдного " +"тропического рая в Северной Атлантике. Знакомые выжившие описывали его " +"исчезновение как 'пустую трату отличной лодки'." #: lang/json/epilogue_from_json.py msgid "" @@ -72610,13 +73162,12 @@ msgid "" "his ability to grasp or lift, he spent the last few years of his life " "begging for food and relying on charity from his fellow survivors." msgstr "" -" В течение нескольких недель после вашей смерти, он был ограблен парой " -"бандитов. За попытки сопротивляться их требованиям, они сломали ему обе руки" -" в нескольких местах. Одинокий и покалеченный прошёл почти месяц до того, " -"как он нашёл убежище и примитивную медицинскую помощь с другими выжившими. " -"Потеряв способности хватать и поднимать, он провёл последние несколько лет " -"своей жизни, выпрашивая еду и полагаясь на благосклонность помогающих ему " -"выживших." +" В течение нескольких недель после вашей смерти его ограбила пара " +"бандитов. За попытку сопротивления они сломали ему обе руки в нескольких " +"местах. Одинокий и покалеченный, он потратил почти месяц на поиски убежища с" +" другими выжившими и примитивной медицинской помощи. Потеряв способности " +"хватать и поднимать, он провёл последние несколько лет своей жизни, " +"выпрашивая еду и полагаясь на милосердие помогающих ему выживших." #: lang/json/epilogue_from_json.py msgid "" @@ -72628,12 +73179,12 @@ msgid "" "spread between his countless minor wounds." msgstr "" " Обученный под вашим руководством, он стал известным охотником на всякую" -" мерзость. С таким оружием он смог собрать силы, он принудил группы выживших" -" очищать город за городом от зомби и других ужасов, которые блуждали по " -"пустоши. Его успех был временным, так как монстры мигрировали в очищенные " -"территории так же быстро, как он зачищал их. Его жизнь завершилась, когда " -"инфекция стойкая к антибиотикам распространилась по его бесчисленным лёгким " -"ранениям." +" мерзость. Вооружённый любым найденным оружием, он возглавлял отряды по " +"зачистке города за городом от нечисти и других ужасов, бродивших по пустоши." +" Его успех был временным, так как монстры возвращались в очищенные " +"территории так же быстро, как он зачищал их. Его жизнь подошла к концу, " +"когда стойкая к антибиотикам инфекция распространилась по его бесчисленным " +"лёгким ранам." #: lang/json/epilogue_from_json.py msgid "" @@ -72646,13 +73197,12 @@ msgid "" "perfectly human voices as it flew straight at him." msgstr "" " Отказался от образа жизни авантюриста после вашей смерти и принял " -"решение основать самодостаточный лагерь далеко от ужасов, найденных в старых" -" городах. Его попытки расположиться в уединённом месте были напрасны, " -"поскольку потусторонние визитёры начали нападать на слабое и изолированное " -"место. Последние моменты его жизни были в замешательстве и ужасе, поскольку," -" однажды ночью он был разбужен насекомомым неземного происхождения, размером" -" с человека, открывающего дверь его жилища и кричащего сразу дюжиной " -"безупречных человеческих голосов, которое летело прямо на него." +"решение основать самодостаточный лагерь далеко от ужасов старых городов. Его" +" поиски одиночества были тщетны, поскольку иноземные существа охотились на " +"слабых и уединённых. Последние мгновения его жизни прошли в замешательстве и" +" ужасе - однажды ночью он проснулся от того, что неземное насекомое размером" +" с человека открыло дверь хижины, завопило дюжиной совершенно человеческих " +"голосов и набросилось на него." #: lang/json/epilogue_from_json.py msgid "" @@ -72662,12 +73212,11 @@ msgid "" " response units he was torn to pieces by the undead that were attracted by " "the commotion." msgstr "" -" Был задержан и скован наручниками робот-полицейским по многочисленным " -"пунктам обвинения в грабеже и вандализме, которые были зафиксированы и " -"зарегистрированы несколькими оставшимися в рабочем состоянии системами " -"безопасности. Будучи задержанным удерживался на земле, ожидая дополнительные" -" полицейские роботизированные единицы, он был разорван на куски зомби, " -"которые были привлечены поднятой тревогой и шумом." +" Был задержан и закован в наручники роботом-полицейским по " +"многочисленным пунктам обвинения в грабеже и вандализме, зафиксированным и " +"зарегистрированным несколькими оставшимися в рабочем состоянии системами " +"безопасности. Пока лежал на земле в ожидании дополнительных сотрудников " +"полиции, был разорван на куски зомби, привлечёнными шумом." #: lang/json/epilogue_from_json.py msgid "" @@ -72675,8 +73224,8 @@ msgid "" "Raiders. Till the end, she held out hope that her son was still alive in " "the wasteland." msgstr "" -" Совершила самоубийство, это лучше, чем попасть в руки банде Адских " -"налётчиков. До самого конца она надеялась, что её сын всё ещё жив в пустоши." +" Предпочла самоубийство попаданию в руки Адских налётчиков. До самого " +"конца она надеялась, что её сын всё ещё жив в пустоши." #: lang/json/epilogue_from_json.py msgid "" @@ -72684,10 +73233,9 @@ msgid "" "number of poisonous roots. Over the course of three or four days she " "passed. A note found with her body read, 'I wish I could have saved him.'" msgstr "" -" Пробивалась в Огайо, чтобы найти свою семью, тогда она употребляла в " -"пищу много ядовитых корней. На протяжении трёх или четырёх дней она " -"продвигалась вперёд. В записке найденной возле её тела, содержалось, \"Мне " -"очень жаль, что не смогла его спасти.\"" +" Пробивалась в Огайо, чтобы найти свою семью, пока не съела несколько " +"ядовитых корней. Через три или четыре дня она умерла. Записка, найденная " +"возле её тела, гласила 'Мне очень жаль, что не смогла его спасти.'" #: lang/json/epilogue_from_json.py msgid "" @@ -72697,9 +73245,9 @@ msgid "" "without leaving a note." msgstr "" " Выживала в течение многих лет и приобрела известность среди других " -"выживших. В конце концов она начала экспериментировать с мутагеном..., когда" -" мутация её полностью обезобразила, в приступе паники она совершила " -"самоубийство, не оставив никакой посмертной записки." +"выживших. В конце концов она начала экспериментировать с мутагеном... когда " +"мутация полностью изуродовала её, она совершила самоубийство, не оставив " +"никакой предсмертной записки." #: lang/json/epilogue_from_json.py msgid "" @@ -72709,9 +73257,9 @@ msgid "" "daughter." msgstr "" " Добилась немалого успеха как искусный мастер, работала в небольшом " -"аванпосте выживших. В конце концов она вышла замуж за беженца, у них был " -"один ребёнок. Умерла во время родов несколько лет спустя. Уцелели только её " -"муж и двухлетняя дочь." +"аванпосте выживших. В конце концов она вышла замуж за беженца и родила " +"ребёнка. Умерла во время родов несколько лет спустя, оставив мужа и " +"двухлетнюю дочь." #: lang/json/epilogue_from_json.py msgid "" @@ -72722,8 +73270,8 @@ msgid "" msgstr "" " Стала квалифицированным механиком и помогала многим беженцам, ищущим " "новые места для поселения. Однажды она выехала, перевозя группу мигрантов к " -"другому поселению и не вернулась. Никаких следов её или транспортного " -"средства, никто никогда больше её не видел." +"другому поселению, и не вернулась. Больше никто никогда не видел ни следа её" +" или машины." #: lang/json/epilogue_from_json.py msgid "" @@ -72731,9 +73279,9 @@ msgid "" "trip never to be seen again. Attempts to locate her were called off when a " "shredded jacket was found." msgstr "" -" Стала охотницей за удачей и траппером. Как-то отправилась на охоту и " -"больше её никто не видел. Попытки найти её были прекращены, когда была " -"найдена искромсанная куртка." +" Стала охотницей за удачей и траппером. Как-то отправилась на охоту, и " +"больше её никто не видел. Попытки найти её были прекращены, когда нашли " +"искромсанную куртку." #: lang/json/epilogue_from_json.py msgid "" @@ -72770,10 +73318,9 @@ msgid "" " those present, 'I've outlived everyone that I have ever loved. If anything" " death is a few months late'." msgstr "" -" Умерла от заражённых ран, полученных после укуса несколько недель " -"спустя. Перед тем, как она ушла из жизни, она сказала присутствующим, \"Я " -"пережила всех, кого я когда-либо любила. Если что, смерть на несколько " -"месяцев опоздала.\"" +" Умерла от заражённой укушенной раны несколько недель спустя. Перед тем," +" как она ушла из жизни, она сказала присутствующим, \"Я пережила всех, кого " +"когда-либо любила. Смерть опоздала на несколько месяцев.\"" #: lang/json/epilogue_from_json.py msgid "" @@ -72781,10 +73328,9 @@ msgid "" "passing. Unable to find treatment she asked to be put down while listening " "to someone read from her favorite novel, A Tale of Two Cities." msgstr "" -" Управляемая разрастающимся заражением, некоторой формой инфекции, " -"спустя несколько месяцев после того как вы ушли из жизни. Не в состоянии " -"найти излечение, она попросила похоронить её, пока будет слушать кого-нибудь" -" читающего её любимый роман, «Повесть о двух городах»." +" Подхватила какую-то инфекцию спустя несколько месяцев после вашей " +"гибели. Не в состоянии найти излечение, она попросила убить её, пока кто-" +"нибудь будет читать вслух её любимый роман, «Повесть о двух городах»." #: lang/json/epilogue_from_json.py msgid "" @@ -72806,9 +73352,9 @@ msgid "" "killed by one of her students when leading a group of unskilled survivors on" " a night supply raid." msgstr "" -" Продолжила свою деятельность выдающейся разведчицей и городской " -"исследовательницей. Трагически убита одним из её новичков, когда она " -"возглавляла группу неопытных выживших на ночном рейде в поисках припасов." +" Стала выдающейся разведчицей и городской исследовательницей. Трагически" +" убита одним из своих учеников, когда она возглавляла группу неопытных " +"выживших на ночном рейде в поисках припасов." #: lang/json/epilogue_from_json.py msgid "" @@ -72821,10 +73367,10 @@ msgid "" msgstr "" " После вашей смерти она стала затворницей и эксцентричным человеком. Её " "навыки были неоценимы для аванпостов, которым она решила помогать. К " -"сожалению, в борьбе за ресурсы и их добычу для группы выживших, которых она " -"возглавляла, столкнулась с толпой зомби, окруживших её, когда она была одна " -"на рейде. Свидетелей произошедшего не было, не была доказана и связь между " -"её смертью и другими выжившими." +"сожалению, соперничество за ресурсы и право их добычи привело к тому, что " +"группа выживальщиков подманила толпу зомби, чтобы те окружили её во время " +"одиночного рейда. Свидетелей произошедшего не было, не была доказана и связь" +" между её смертью и другими выжившими." #: lang/json/epilogue_from_json.py msgid "" @@ -72837,11 +73383,10 @@ msgid "" msgstr "" " Сбилась с пути ещё задолго до того, как она встретила вас. Катаклизм " "предложил ей шанс отказаться от своих порочных деяний, которые привели её до" -" лишения свободы... предложение, которое осталось без ответа. После того, " -"как вы были убиты, она вернулась к грабежам тех, в ком видела слабость. " -"Известно по слухам, что она ограбила массу народа, всё что они имели, " -"оставляя их умирать среди ужасов, которые бродили по земле. Исход её судьбы " -"неизвестен." +" лишения свободы... предложение, которое осталось без ответа. После вашей " +"смерти она продолжила наживаться на тех, в ком видела слабость. По слухам, " +"она ограбила дюжины выживальщиков, забрав всё их имущество и оставив умирать" +" посреди наводнивших землю ужасов. Исход её судьбы неизвестен." #: lang/json/epilogue_from_json.py msgid "" @@ -72853,12 +73398,10 @@ msgid "" "in a nearby town." msgstr "" " Нашла новый смысл жизни после вашей смерти. Несмотря на то, что она " -"никогда не рассказывала вам о своих уголовных делах в том умершем мире, это " -"препятствовало ей занять когда-либо реальное место в новом обществе. С " -"разрушением существующих систем криминальных досье она взяла на себя " -"обязательства, покрыть причинённый ущерб своих преступлений. Умерла во время" -" опасной спасательной миссии, когда свидетели видели, как разбился вертолёт " -"при посадке в соседнем городе." +"никогда не рассказывала вам, былые преступления в погибшем мире мешали ей " +"занять настоящее место в обществе. После уничтожения полицейских записей она" +" решила сама доказать свою значимость. Умерла во время опасной спасательной " +"миссии, люди видели вертолёт, разбившийся в ближайшем городе." #: lang/json/epilogue_from_json.py msgid "" @@ -72868,12 +73411,12 @@ msgid "" " Drugs allowed her to relive the memories of friends, family, and loved " "ones... she died happier than could have ever been expected." msgstr "" -" Провела всю жизнь втайне от всех увлекаясь то одним веществом, то " +" Провела всю жизнь, втайне от всех увлекаясь то одним веществом, то " "другим. После вашей смерти она недолго работала в лагере выживших, пока не " -"нашла своё место в прибыльной наркоторговле. Она умерла, очевидно, от " -"передозировки. Наркотики позволили ей вновь переживать воспоминания о " -"друзьях, семье и любимом..., она умерла более счастливой, чем, возможно, " -"была когда-либо." +"нашла своё место в прибыльной наркоторговле. Она умерла, что предсказуемо, " +"от передозировки. Наркотики позволили ей вновь переживать воспоминания о " +"друзьях, семье и любимых... она умерла более счастливой, чем, возможно, была" +" когда-либо." #: lang/json/epilogue_from_json.py msgid "" @@ -72886,13 +73429,12 @@ msgid "" "of crimes against humanity." msgstr "" " Никогда не отличалась особой храбростью, ни эмоциональной " -"стабильностью. Её неспособность эмоционально соответствовать жизни после " -"первых дней возникновения Катаклизма принудили её сделать попытку " -"самоубийства, многократно в те годы, которые последовали за ним. " -"Привлечённая обещаниями о возрождении и надеждой о создании новой семьи, она" -" стала последовательницей харизматического культа. Стала невинной жертвой, " -"когда солдаты Старой гвардии штурмовали комплекс по подозрению в " -"преступлениях против человечества." +"стабильностью. Неспособность привыкнуть к жизни после Катаклизма несколько " +"раз принуждала её к попыткам самоубийства в последующие годы. Привлечённая " +"обещаниями о возрождении и надеждой создания новой семьи, она стала " +"последовательницей привлекательного культа. Была случайно убита, когда " +"солдаты Старой Гвардии штурмовали комплекс по подозрению в преступлениях " +"против человечества." #: lang/json/epilogue_from_json.py msgid "" @@ -72903,11 +73445,10 @@ msgid "" " her turn. She had suffered from a treatable form of marasmus." msgstr "" " Провела остаток своей жизни, помогая то одной группе авантюристов, то " -"другой. В конце концов её удача отвернулась от неё, когда она заболела после" -" истощения всех ресурсов, это вынудило её питаться тем, что она могла добыть" -" в лесу. Группа в которой она состояла, посчитала её безнадёжной и пустила " -"пулю ей в голову, чтобы она не мучалась. Она пострадала от поддающегося " -"лечению формы тупого маразма." +"другой. В конце концов удача отвернулась от неё, когда голод вынудил её " +"питаться всем, что можно найти в лесу, и она заболела. Группа посчитала её " +"безнадёжной и пустила пулю ей в голову, чтобы она не мучалась. Она страдала " +"от поддающегося лечению маразма." #: lang/json/epilogue_from_json.py msgid "" @@ -72916,10 +73457,10 @@ msgid "" "short time later. Her murderer was the first person to discover her " "corpse... and all the gear she had been saving." msgstr "" -" Получила колотую рану руки от выжившего с скверным характером, спустя " -"несколько недель после того, как вы ушли из жизни. Порез вызвал заражение и " -"она умерла от сепсиса немного позже. Её убийца был первым человеком, который" -" обнаружил тело... и все её вещи, которые она сохранила." +" Получила колотую рану руки от выжившего со скверным характером спустя " +"несколько недель после того, как вы погибли. В рану быстро проникла " +"инфекция, и она умерла от сепсиса немного позже. Её убийца был первым " +"человеком, обнаружившим тело... и все её вещи." #: lang/json/epilogue_from_json.py msgid "" @@ -72931,11 +73472,11 @@ msgid "" "taken the bastards out with her." msgstr "" " Упорно работала после вашей смерти, чтобы организовать свою собственную" -" банду выживших. Благодаря навыкам которые она приобрела, смогла получить " -"огромную прибыль, мародёрствуя в покинутых городах. После серии горячих " -"споров по контракту с членами её банды, она оказалась запертой в собственном" -" автомобиле, а пара коктейлей Молотова была брошена через окно. Её последним" -" желанием было, взять этих ублюдков с собой." +" группу выживших. Благодаря приобретённым навыкам она смогла получить " +"неплохую выгоду, мародёрствуя в покинутых городах. После серии горячих " +"споров с членами группы насчёт контракта её заперли в собственном " +"автомобиле, а в окно бросили пару коктейлей Молотова. Её последним желанием " +"было взять этих ублюдков с собой." #: lang/json/epilogue_from_json.py msgid "" @@ -72946,13 +73487,13 @@ msgid "" "supplied but never saw her reward. A stray bullet struck her down when the " "Hell's Raiders launched a raid in an attempt to gain access to the sea." msgstr "" -" Пыталась обыскивать побережье в надежде найти заброшенное судно после " -"вашей смерти. Её путешествие завершилось, когда она обнаружила док " -"контролируемый Старой гвардией в покинутом рыбопромысловом городе. Поверив " -"обещаниям о новой жизни, она согласилась стать подрядчиком, провела " -"следующие несколько лет, трудясь ради обеспечения лагеря снабжением, но " -"никогда не видела своего вознаграждения. Шальная пуля свалила её, когда " -"банда Адских налётчиков устроила рейд в попытке получить доступ к морю." +" После вашей смерти обыскивала побережье в надежде найти заброшенное " +"судно. Её путешествие завершилось, когда она обнаружила док в покинутом " +"рыбацком городе, контролируемый Старой гвардией. Поверив обещаниям о новой " +"жизни, она согласилась стать подрядчиком, провела следующие несколько лет, " +"трудясь ради обеспечения лагеря снабжением, но никогда не видела своего " +"вознаграждения. Шальная пуля свалила её, когда банда Адских Налётчиков " +"устроила рейд в попытке получить доступ к морю." #: lang/json/epilogue_from_json.py msgid "" @@ -72961,11 +73502,10 @@ msgid "" "unleashed a blast from his flamethrower at close range. Her ashes and a few" " odd pieces of jewelry were all that could be recovered." msgstr "" -" В течение нескольких месяцев после вашей смерти, она была ограблена " -"группой бандитов. Когда она убила первого, следующего за ней, другой его " -"компаньон выпустил струю горящей смеси со своего огнемёта поблизости. Её " -"прах и несколько странных драгоценных камней было всем, что можно было " -"похоронить." +" В течение нескольких месяцев после вашей смерти её ограбили бандиты. " +"Когда она убила первого, его товарищ выпустил в упор струю из своего " +"огнемёта. Пепел и несколько странных кусков украшений - вот и всё, что от " +"неё осталось." #: lang/json/epilogue_from_json.py msgid "" @@ -72978,13 +73518,12 @@ msgid "" "at its source." msgstr "" " Обученная под вашим руководством, она стала известной охотницей на " -"монстров. Возглавив банду бойцов вооружённых примитивным оружием, которое " -"она разыскала и убила многочисленные потусторонние ужасы, которые блуждали " -"по дикой местности. Её поиски по остановке угрозы привели её группу к " -"мерцающему порталу, который, казалось, извергал наружу ещё более мерзких " -"тварей и вещества неземного происхождения. Без возможности закрыть портал, " -"её группа была в последний раз замечена, когда рискнула отправиться в " -"неизвестность, чтобы встретить угрозу в самом источнике." +"монстров. Возглавив группу вооружённых примитивным оружием бойцов, она " +"разыскала и убила множество блуждавших в пустошах неземных кошмаров. Поиски " +"по остановке угрозы привели группу к мерцающему порталу, который, казалось, " +"извергал наружу мерзких тварей и инопланетное вещество. Не имея возможности " +"закрыть портал, группу видели в последний раз, когда они рискнули " +"отправиться в неизвестность, чтобы найти источник угрозы." #: lang/json/epilogue_from_json.py msgid "" @@ -72996,11 +73535,10 @@ msgid "" "escaped." msgstr "" " Отказалась от образа жизни авантюристки после вашей смерти и приняла " -"решение завести семью с близко знакомым выжившим в заброшенной охотничей " -"хижине. Выживать было трудно, но семья выросла в течение последующих лет, у " -"неё было трое сыновей и дочь. Конец её пути настал, когда ужасы из дикой " -"местности наконец нашли местоположение её родного дома..., она и её муж " -"смогли отвлечь монстров, пока её дети сбежали." +"решение завести семью со знакомым выжившим в заброшенной охотничьей хижине. " +"Выживать было тяжело, но семья в течение последующих лет росла, у неё было " +"трое сыновей и дочь. Конец настал, когда ужасы наконец нашли её дом... она и" +" муж смогли отвлечь чудовище, пока её дети сбежали." #: lang/json/epilogue_from_json.py msgid "" @@ -73010,13 +73548,13 @@ msgid "" " crying out for help and slowly consuming what supplies she carried. Two " "weeks after being dragged to her cell she died from dehydration." msgstr "" -" Была задержана и заключена в тюрьму робот-полицейским по многочисленным" -" статьям обвинения в мародёрстве и вандализме, которые были зафиксированы и " -"зарегистрированы несколькими оставшимися в рабочем состоянии системами " -"безопасности. Была заключена в камеру, ожидая полицейский вердикт, провела " -"недели, выкрикивая мольбы о помощи и медленно использовала припасы, которые " -"были с собой. Спустя две недели которые она протянула в камере, умерла от " -"обезвоживания." +" Была задержана и заключена в тюрьму роботом-полицейским по " +"многочисленным статьям обвинения в мародёрстве и вандализме, " +"зафиксированными и зарегистрированными несколькими оставшимися в рабочем " +"состоянии системами безопасности. Была заключена в камеру, ожидая " +"полицейский вердикт, провела недели, выкрикивая мольбы о помощи и медленно " +"расходовала имеющиеся припасы. Спустя две недели после заключения она умерла" +" от обезвоживания." #: lang/json/faction_from_json.py msgid "Your Followers" @@ -73079,8 +73617,8 @@ msgid "" "Autonomous bands or individuals who make their living raiding the ruins of " "the old-world for gear and provisions." msgstr "" -"Независимые банды или отдельные индивиды, которые разыскивают себе " -"снаряжение и пропитание на руинах старого мира." +"Независимые банды или одиночки, которые разыскивают себе снаряжение и " +"пропитание на руинах старого мира." #: lang/json/faction_from_json.py src/game.cpp msgid "Hell's Raiders" @@ -73123,12 +73661,10 @@ msgid "" " more. It's only a matter of time before they too become the prey of " "otherwordly creatures, or of all-too-human monsters." msgstr "" -"Разрозненные остатки цивилизации, оказались довольно удачливыми, " -"отгородившись от внешнего мира во время начальных этапов Катаклизма. " -"Несмотря на то, что были в относительной безопасности, они испытывали " -"нехватку в поставках и испытывали недостаток в навыках, чтобы добыть больше " -"сырья. Это только вопрос времени, когда они также станут жертвами " -"потусторонних ужасов или монстров в человеческом обличье." +"Разрозненные остатки цивилизации, им повезло отгородиться от внешнего мира в" +" самом начале Катаклизма. Несмотря относительную безопасность, им не хватает" +" припасов и навыков, чтобы добыть их. Это только вопрос времени, когда они " +"тоже станут жертвами неземных ужасов или монстров в человеческом обличье." #: lang/json/faketypes.py msgid "human" @@ -74499,7 +75035,7 @@ msgstr "кострище" #: lang/json/furniture_from_json.py msgid "tank trap" -msgstr "" +msgstr "противотанковый еж" #. ~ 'close' action message of some gate object. #: lang/json/gates_from_json.py @@ -74948,8 +75484,7 @@ msgstr "" "имеют хороший шанс уцелеть, и их можно будет повторно использовать" #: lang/json/gun_from_json.py lang/json/gun_from_json.py -#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py -#: lang/json/gunmod_from_json.py src/item.cpp +#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" msgid "pistol" msgstr "пистолет" @@ -75073,10 +75608,10 @@ msgstr "Оружие отладки, стреляет кислотными сг #: lang/json/gun_from_json.py msgid "reach bow" msgid_plural "reach bows" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "тестовый лук" +msgstr[1] "тестовых лука" +msgstr[2] "тестовые луки" +msgstr[3] "тестовый лук" #: lang/json/gun_from_json.py msgid "A test item that is both a ranged weapon and a reach weapon" @@ -75216,13 +75751,13 @@ msgid_plural "Tankbot Main Gun" msgstr[0] "основное орудие танкобота" msgstr[1] "основных орудия танкобота" msgstr[2] "основных орудий танкобота" -msgstr[3] "основное орудие танкобота" +msgstr[3] "основное орудие танк-бота" #: lang/json/gun_from_json.py msgid "" "The 120mm cannon from a tankbot. If you have this, you'd best be debugging!" msgstr "" -"120-мм пушка с танкобота. Если вы сумели заполучить её, для вас же лучше, " +"120-мм пушка с танк-бота. Если вы сумели заполучить её, для вас же лучше, " "если это случилось во время отладки!" #: lang/json/gun_from_json.py @@ -75239,12 +75774,9 @@ msgid "" "solid hydrogen to create plasma and envelops it with polymers to reduce " "blooming. While powerful, it suffers from short range. Powered by UPS." msgstr "" -"Боинг XM—P современное плазменное вооружение, разработано компанией Боинг " -"совместно с исследовательским центром DARPA. Сжатый водород нагревается до " -"температуры плазмы, в рабочую зону подаются сложные полимеры, чтобы " -"обеспечить стабильный процесс нагрева. Полимерная масса является рабочим " -"телом сгустка плазмы при выстреле. Мощное, но имеет малую дальность. " -"Запитывается от УБП." +"Плазменное оружие — совместная разработка компании Боинг и " +"исследовательского центра DARPA. Нагревает водород до появления плазмы. " +"Мощное, но не очень дальнобойное оружие. Работает от УБП." #: lang/json/gun_from_json.py msgid "pipe combination gun" @@ -75690,7 +76222,7 @@ msgstr "" "Переделанный для использования мощных 20x66 мм безгильзовых патронов для " "дробовиков, пистолет Rivtech RM228 PDW долговечен и прост в эксплуатации, " "разрабатывался для гражданского рынка в целях самозащиты. Получил " -"заслуженную славу за небольшой размер и лёгкий вес, из-за его высокой цены, " +"заслуженную славу за небольшой размер и лёгкий вес, из-за его высокой цены " "был недосягаем для случайных любителей и коллекционеров." #: lang/json/gun_from_json.py @@ -76068,10 +76600,10 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" "Платформа L523 от «Лидворкс», выполненная по схеме булл-пап, использует " "универсальный патрон 5,56 мм и предназначена для быстрого, безопасного и " @@ -77029,7 +77561,7 @@ msgstr[3] "револьвера Ле Ма" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those" " who wander the \"Earth-that-was\"." msgstr "" @@ -77801,11 +78333,11 @@ msgid "" msgstr "" "Предназначенна для работы в качестве дальнобойного снайперского оружия " "поддержки военных, винтовка разведчика RM11B от Ривтех была спроектирована " -"надёжной и точной с возможностью ведения огня почти в идеальных условиях. Её" -" компоновка механизмов по схеме булл-пап с встроенным глушителем и цифровым " -"прицелом, оснащённая режимом стрельбы по 2 патрона — позволяет бить по " -"удалённым целям, используя собственные фирменные 8 мм безгильзовые патроны. " -"К ней подходят рожковые магазины." +"надёжной и точной с возможностью ведения огня не в самых идеальных условиях." +" Её компоновка механизмов по схеме булл-пап с встроенным глушителем и " +"цифровым прицелом, оснащённая режимом стрельбы по 2 патрона позволяет " +"стрелять по удалённым целям. Использует фирменные 8 мм безгильзовые патроны " +"Rivtech. К ней подходят рожковые магазины." #: lang/json/gun_from_json.py msgid "RM2000 submachine gun" @@ -78441,9 +78973,9 @@ msgid "" "tremendous rate, making it impractical for use in prolonged engagements." msgstr "" "Этот избыточно мощный и переусложнённый вариант ферромагнитной рельсовой " -"винтовки был разработан для электромагнитно-управляемого уничтожения любых " -"препятствий, какие встанут у него на пути, будь то здания, машины или орды " -"живых мертвецов. Впрочем, огромные размеры и вес этого оружия в сравнении с " +"винтовки был разработан для электромагнитного уничтожения любых препятствий," +" какие встанут у него на пути, будь то здания, машины или орды живых " +"мертвецов. Впрочем, огромные размеры и вес этого оружия в сравнении с " "современными винтовками делают его довольно неудобным в использовании, и это" " не учитывая ужасной скорости потребления зарядов УБП. Всё это делает это " "оружие непрактичным для длительных схваток." @@ -78835,8 +79367,8 @@ msgid "" "history, this weapon can still do the same to your foes." msgstr "" "Великолепная лазерная винтовка, разработанная исследовательским " -"подразделением R&D «Aerial Labs». По слухам распространяемым корпорацией, по" -" своим начальным характеристикам, конкурировала с лучшими образцами " +"подразделением R&D «Aerial Labs». По слухам, распространяемым корпорацией, " +"по своим начальным характеристикам конкурировала с лучшими образцами " "вооружения Ривтех. Хотя Катаклизм отправил всё это на свалку истории, тем не" " менее это оружие может сделать то же самое с вашими врагами." @@ -79081,10 +79613,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "SVS-24" msgid_plural "SVS-24" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "SVS-24" +msgstr[1] "SVS-24" +msgstr[2] "SVS-24" +msgstr[3] "SVS-24" #: lang/json/gun_from_json.py msgid "" @@ -79098,10 +79630,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "SVS-24C" msgid_plural "SVS-24C" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "SVS-24C" +msgstr[1] "SVS-24C" +msgstr[2] "SVS-24C" +msgstr[3] "SVS-24C" #: lang/json/gun_from_json.py msgid "" @@ -79115,10 +79647,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "CW-24" msgid_plural "CW-24" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "CW-24" +msgstr[1] "CW-24" +msgstr[2] "CW-24" +msgstr[3] "CW-24" #: lang/json/gun_from_json.py msgid "" @@ -79133,10 +79665,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "CW-24M" msgid_plural "CW-24M" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "CW-24M" +msgstr[1] "CW-24M" +msgstr[2] "CW-24M" +msgstr[3] "CW-24M" #: lang/json/gun_from_json.py msgid "" @@ -79149,10 +79681,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "CW-24K" msgid_plural "CW-24K" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "CW-24K" +msgstr[1] "CW-24K" +msgstr[2] "CW-24K" +msgstr[3] "CW-24K" #: lang/json/gun_from_json.py msgid "" @@ -79165,10 +79697,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Modified CW-24" msgid_plural "Modified CW-24" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Модифицированная CW-24" +msgstr[1] "Модифицированные CW-24" +msgstr[2] "Модифицированных CW-24" +msgstr[3] "Модифицированная CW-24" #: lang/json/gun_from_json.py msgid "" @@ -79183,18 +79715,18 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Modified CW-24M" msgid_plural "Modified CW-24M" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Модифицированная CW-24M" +msgstr[1] "Модифицированные CW-24M" +msgstr[2] "Модифицированных CW-24M" +msgstr[3] "Модифицированная CW-24M" #: lang/json/gun_from_json.py msgid "CWD-63" msgid_plural "CWD-63" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "CWD-63" +msgstr[1] "CWD-63" +msgstr[2] "CWD-63" +msgstr[3] "CWD-63" #: lang/json/gun_from_json.py msgid "" @@ -79207,10 +79739,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Wrist DREAD" msgid_plural "Wrist DREAD" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Wrist DREAD" +msgstr[1] "Wrist DREAD" +msgstr[2] "Wrist DREAD" +msgstr[3] "Wrist DREAD" #: lang/json/gun_from_json.py msgid "" @@ -79225,10 +79757,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "JHEC M128" msgid_plural "JHEC M128s" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "JHEC M128s" +msgstr[1] "JHEC M128s" +msgstr[2] "JHEC M128s" +msgstr[3] "JHEC M128s" #: lang/json/gun_from_json.py msgid "" @@ -79242,10 +79774,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Boomlighter 454" msgid_plural "Boomlighter 454s" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Boomlighter 454s" +msgstr[1] "Boomlighter 454s" +msgstr[2] "Boomlighter 454s" +msgstr[3] "Boomlighter 454s" #: lang/json/gun_from_json.py msgid "" @@ -79260,10 +79792,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "gunsword" msgid_plural "gunswords" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "меч-огнестрел" +msgstr[1] "меча-огнестрела" +msgstr[2] "мечей-огнестрелов" +msgstr[3] "мечей-огнестрелов" #: lang/json/gun_from_json.py msgid "" @@ -79277,10 +79809,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "gunknife" msgid_plural "gunknives" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "кинжал-огнестрел" +msgstr[1] "кинжала-огнестрела" +msgstr[2] "кинжалов-огнестрелов" +msgstr[3] "кинжала-огнестрела" #: lang/json/gun_from_json.py msgid "" @@ -79294,10 +79826,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "FiveO handcannon" msgid_plural "FiveO handcannons" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "пушка пять-ноль" +msgstr[1] "пушки пять-ноль" +msgstr[2] "пушкек пять-ноль" +msgstr[3] "пушка пять-ноль" #: lang/json/gun_from_json.py msgid "" @@ -79312,10 +79844,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "M919" msgid_plural "M919s" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "M919s" +msgstr[1] "M919s" +msgstr[2] "M919s" +msgstr[3] "M919s" #: lang/json/gun_from_json.py msgid "" @@ -79331,10 +79863,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Eagle 1776" msgid_plural "Eagle 1776" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Eagle 1776" +msgstr[1] "Eagle 1776" +msgstr[2] "Eagle 1776" +msgstr[3] "Eagle 1776" #: lang/json/gun_from_json.py msgid "" @@ -79388,10 +79920,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "M1911 DS" msgid_plural "M1911 DSs" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "M1911 DSs" +msgstr[1] "M1911 DSs" +msgstr[2] "M1911 DSs" +msgstr[3] "M1911 DSs" #: lang/json/gun_from_json.py msgid "" @@ -79400,11 +79932,11 @@ msgid "" "laced with lime green details. Now they will know why they fear the night." " Bat hood sold separately." msgstr "" -"«M1911 Darkstalker» — очень изменённая версия M1911, у него несъёмный " -"арбалет с добавочными напрвляющими. Профессионально выглядит благодаря " -"финишному покрытию под цвет чёрного дерева, отделан по кайме лимонно-" -"зелёными инкрустированными деталями. Теперь ОНИ будут знать, почему нужно " -"бояться ночи. Мантия невидимка, продаётся отдельно." +"«M1911 Darkstalker» — очень изменённая версия M1911 с несъёмным арбалетом и " +"добавочными направляющими. Профессионально выглядит благодаря покрытию под " +"цвет чёрного дерева, отделан по кайме лимонно-зелёными инкрустированными " +"деталями. Теперь ОНИ будут знать, почему нужно бояться ночи. Накидка летучей" +" мыши продаётся отдельно." #: lang/json/gun_from_json.py msgid "pipe gun: revolver ammo" @@ -79923,7 +80455,7 @@ msgid "" "more than duct tape and electronics, however it runs on standard UPS power." msgstr "" "Этот лазерный пистолет основан на моделях своих коммерческих и военных " -"собратьев. Представляет собой устройство, чуть более сложное, чем монтажная " +"образцов. Представляет собой устройство, чуть более сложное, чем монтажная " "лента и электроника. Питается от стандартного УБП." #: lang/json/gun_from_json.py @@ -80015,79 +80547,79 @@ msgstr "рукопашный бой" #: lang/json/gun_from_json.py msgid "base robogun" msgid_plural "base roboguns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "базовое робооружие" +msgstr[1] "базовых робооружия" +msgstr[2] "базовых робооружий" +msgstr[3] "базовое робооружие" #: lang/json/gun_from_json.py msgid "" "This is a pseudo item for monster attacks. If you see this, it's a bug." -msgstr "" +msgstr "Это псевдовещь для атак монстров. Если вы ее видите, значит это баг." #: lang/json/gun_from_json.py msgid "integral 12 gauge shotgun" msgid_plural "integral 12 gauge shotguns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "встроенный дробовик 12 кал." +msgstr[1] "встроенных дробовика 12 кал." +msgstr[2] "встроенных дробовиков 12 кал." +msgstr[3] "встроенный дробовик 12 кал." #: lang/json/gun_from_json.py msgid "integral 50 caliber machinegun" msgid_plural "integral 50 caliber machineguns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "встроенный пулемет 50 калибра" +msgstr[1] "встроенных пулемета 50 калибра" +msgstr[2] "встроенных пулеметов 50 калибра" +msgstr[3] "встроенный пулемет 50 калибра" #: lang/json/gun_from_json.py msgid "integral needle gun" msgid_plural "integral needle guns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "встроенный дротикомет" +msgstr[1] "встроенных дротикомета" +msgstr[2] "встроенных дротикометов" +msgstr[3] "встроенный дротикомет" #: lang/json/gun_from_json.py msgid "integral 8mm firearm" msgid_plural "integral 8mm firearms" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "встроенное 8-миллиметровое оружие" +msgstr[1] "встроенных 8-миллиметровых оружия" +msgstr[2] "встроенных 8-миллиметровых орудий" +msgstr[3] "встроенное 8-миллиметровое оружие" #: lang/json/gun_from_json.py msgid "integral laser emitter" msgid_plural "integral laser emitters" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "встроенный лазерный излучатель" +msgstr[1] "встроенных лазерных излучателя" +msgstr[2] "встроенных лазерных излучателей" +msgstr[3] "встроенный лазерный излучатель" #: lang/json/gun_from_json.py msgid "integral railgun" msgid_plural "integral railguns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "встроенная рельсопушка" +msgstr[1] "встроенные рельсопушки" +msgstr[2] "встроенных рельсопушек" +msgstr[3] "встроенная рельсопушка" #: lang/json/gun_from_json.py msgid "integral lightning caster" msgid_plural "integral lightning casters" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "встроенный молниемет" +msgstr[1] "встроенных молниемета" +msgstr[2] "встроенных молниеметов" +msgstr[3] "встроенный молниемет" #: lang/json/gun_from_json.py msgid "integral EMP generator" msgid_plural "integral EMP generators" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "встроенный ЭМИ генератор" +msgstr[1] "встроенных ЭМИ генератора" +msgstr[2] "встроенных ЭМИ генераторов" +msgstr[3] "встроенный ЭМИ генератор" #: lang/json/gun_from_json.py msgid "atlatl" @@ -80120,18 +80652,18 @@ msgid "" "crossbow designs, but it is easier to draw the bow back. Bolts fired from " "this weapon have a good chance of remaining intact for re-use." msgstr "" -"Простой собранный вручную арбалет в дикарском стиле, с деревянным колышком, " -"который выдвинут снизу, чтобы освободить тетиву. Не такой мощный как другие " -"модели арбалетов, зато легче натягивать тетиву. Болты выпущенные из этого " -"оружия имеют хороший шанс уцелеть для повторного использования." +"Простой собранный вручную скандинавский арбалет. Тетива спускается поднятием" +" деревянного рычага. Не такой мощный, как другие модели арбалетов, зато " +"легче натягивать тетиву. Болты, выпущенные из этого оружия, имеют хороший " +"шанс уцелеть для повторного использования." #: lang/json/gun_from_json.py msgid "Ichaival" msgid_plural "Ichaivals" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Ихайваль" +msgstr[1] "Ихайваля" +msgstr[2] "Ихайвалей" +msgstr[3] "Ихайвали" #: lang/json/gun_from_json.py msgid "" @@ -80146,26 +80678,26 @@ msgstr "" #: lang/json/gun_from_json.py msgid "integral nailgun" msgid_plural "integral nailguns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "встроенный гвоздомет" +msgstr[1] "встроенных гвоздомета" +msgstr[2] "встроенных гвоздометов" +msgstr[3] "встроенный гвоздомет" #: lang/json/gun_from_json.py msgid "mounted crossbow" msgid_plural "mounted crossbows" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "установленный арбалет" +msgstr[1] "установленных арбалета" +msgstr[2] "установленных арбалетов" +msgstr[3] "установленный арбалет" #: lang/json/gun_from_json.py msgid "Vortical plasma beam" msgid_plural "Vortical plasma beams" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Вихревой плазменный пучок" +msgstr[1] "Вихревых плазменных пучка" +msgstr[2] "Вихревых плазменных пучков" +msgstr[3] "Вихревой плазменный пучок" #: lang/json/gun_from_json.py msgid "30mm autocannon" @@ -80292,10 +80824,9 @@ msgid "" "The energy shot ignites oxygen creating fires as it moves and an explosion " "on impact." msgstr "" -"Мощный ионный генератор, имплантированный в грудную клетку пользователя. " -"Генерирует мощную энергетическую волну на цели и распространяется вокруг. В " -"результате ударной силы происходит воспламенение кислорода в воздухе и " -"взрыв." +"Мощный ионный генератор, имплантированный в грудную клетку. Генерирует " +"мощную распространяющуюся энергетическую волну. Импульс поджигает кислород, " +"вызывая пламя на своём пути и взрыв при столкновении." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "biting blob" @@ -80315,13 +80846,12 @@ msgid "" "significantly thicker in order to support its more strenuous movement; " "though it seems pliable enough to pull apart..." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия; " -"вытянулся вдоль рамы, соединившись с ней в форме барьера. Развил способность" -" постоянно порождать отвердевшие наросты, которые затем управляют подвижными" -" растягивающимися нитевидными волокнами. Эти «зубы» могут хватать и ранить " -"что-либо находящееся достаточно близко. Внешняя мембрана также стала " -"невероятно толстой, чтобы совершать эти чрезвычайно сильные движения; " -"кажется достаточно пластичным, чтобы разорвать..." +"Живой сгусток, превращённый в автономное оружие. Предназначен для " +"вытягивания вдоль рамы наподобие барьера. Он развил способность постоянно " +"отращивать твердые наросты, управляемые гибкими волокнами. Эти \"зубы\" " +"хватают и ранят всех, кому не повезло оказаться поблизости. Внешняя мембрана" +" стала заметно толще для обеспечения таких мощных рывков. Сгусток достаточно" +" пластичный, чтобы его можно было оторвать..." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel shooter" @@ -80339,13 +80869,12 @@ msgid "" " can be shaped and attached at your touch, but the weapon itself is inert " "without something to control it. It seems pliable enough to pull apart..." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. " -"Передвигается по земле в поисках материалов, которые затем превращает в " -"питательные вещества. Остатки выталкивает с невероятной скоростью в " -"направлении любой угрозы. Эта аморфная масса может принимать определённую " -"форму и присоединяться при касании к ней, но само по себе оружие неактивно " -"без чего-то, что могло бы им управлять. Кажется достаточно пластичным, чтобы" -" разорвать..." +"Живой сгусток, превращённый в автономное оружие. Передвигается по земле и " +"извлекает питательные вещества. Остатки с большой скоростью выбрасываются в " +"направлении любой угрозы. Этой аморфной массе можно придать форму и " +"присоединить куда-нибудь, но само по себе оружие неактивно без чего-то, что " +"могло бы им управлять. Сгусток достаточно пластичный, чтобы его можно было " +"оторвать..." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "frost lancer" @@ -80364,13 +80893,12 @@ msgid "" "attached at your touch, but the weapon itself is inert without something to " "control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. " -"Биологическая аномалия, которая может существовать при температурах ниже " -"нуля. После фильтрации и поглощения питательных веществ из воды, " -"замораживает остатки в невероятно острые ледяные сосульки; которые запускает" -" в направлении любой угрозы. Эта аморфная масса может принимать определённую" -" форму и присоединяться при касании к ней, но само по себе оружие неактивно " -"без чего-то, что могло бы им управлять." +"Живой сгусток, превращённый в автономное оружие. Биологическая аномалия, " +"существующая при температурах ниже нуля. После фильтрации и поглощения " +"питательных веществ из воды замораживает остатки в невероятно острые ледяные" +" сосульки, которые способно метать в направлении любой угрозы. Этой аморфной" +" массе можно придать форму и присоединить куда-нибудь, но само по себе " +"оружие неактивно без чего-то, что могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "snapping ooze" @@ -80390,14 +80918,12 @@ msgid "" "attached at your touch, but the weapon itself is inert without something to " "control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. " -"Необъяснимая мутация в необъяснимом создании, этот сгусток заключён в " -"оболочку с толстым внешним слоем меха, который служит ему как одна из форм " -"защиты. Кроме того, способно порождать целые ряды отвердевших острых " -"фрагментов, словно имитируя челюсти другого, легко узнаваемого хищного " -"создания. Эта аморфная масса может принимать определённую форму и " -"присоединяться при касании к ней, но само по себе оружие неактивно без чего-" -"то, что могло бы им управлять." +"Живой сгусток, превращённый в автономное оружие. Необъяснимая мутация в " +"необъяснимом создании. Сгусток окутан толстым слоем меха как формой защиты. " +"Вдобавок он способен порождать ряды твёрдых острых кусочков, словно имитируя" +" челюсти легко узнаваемого хищного создания. Этой аморфной массе можно " +"придать форму и присоединить куда-нибудь, но само по себе оружие неактивно " +"без чего-то, что могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "blobsaw" @@ -80417,14 +80943,12 @@ msgid "" "attached at your touch, but the weapon itself is inert without something to " "control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия; " -"вытянулся вдоль рамы, соединившись с ней в форме барьера. В то время как у " -"простых сгустков есть ограниченное количество ороговевших образований и " -"отвердевших наростов, которые они могут отрастить и управлять; этот сгусток " -"использует сотни таких острых клыков, чтобы раскромсать что-либо, что " -"определит как угроза в неузнаваемые ошмётки. Эта аморфная масса может " -"принимать определённую форму и присоединяться при касании к ней, но само по " -"себе оружие неактивно без чего-то, что могло бы им управлять." +"Живой сгусток, превращённый в автономное оружие. Предназначен для " +"вытягивания вдоль рамы наподобие барьера. У обычных сгустков количество " +"выращиваемых наростов ограничено; однако у этого сгустка есть сотни острых " +"клыков для превращения любой угрозы в ошмётки. Этой аморфной массе можно " +"придать форму и присоединить куда-нибудь, но само по себе оружие неактивно " +"без чего-то, что могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "fuel puffer" @@ -80443,13 +80967,12 @@ msgid "" "at your touch, but the weapon itself is inert without something to control " "it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. " -"Имеет довольно специфические предпочтения в еде, питается высокооктановыми " -"компонентами бензина. В результате процесса усваивания, выделяется " -"невероятно вязкое вещество, которое сгусток запускает по ближайшим угрозам; " -"любая жертва окажется в ловушке. Эта аморфная масса может принимать " -"определённую форму и присоединяться при касании к ней, но само по себе " -"оружие неактивно без чего-то, что могло бы им управлять." +"Живой сгусток, превращённый в автономное оружие. Имеет довольно " +"специфические предпочтения в еде, питается высокооктановыми компонентами " +"бензина. В результате переваривания образуется очень вязкое вещество, " +"которое сгусток выстреливает в ближайшую угрозу, захватывая жертву в " +"ловушку. Этой аморфной массе можно придать форму и присоединить куда-нибудь," +" но само по себе оружие неактивно без чего-то, что могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "acid puffer" @@ -80466,11 +80989,11 @@ msgid "" "at any nearby enemies. The amorphous mass can be shaped and attached at " "your touch, but the weapon itself is inert without something to control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. В " -"результате процесса усваивания, фильтрует пищу, производя побочные кислотные" -" вещества; которые потом запускает по любым ближайшим врагам. Аморфная масса" -" может быть сформирована и прикреплена при Вашем касании, но само оружие " -"инертно без чего-то, чтобы управлять им." +"Живой сгусток, превращённый в автономное оружие. Фильтрует пищу, в " +"результате переваривания образуются очень кислые вещества, которое сгусток " +"выстреливает в ближайшую угрозу. Этой аморфной массе можно придать форму и " +"присоединить куда-нибудь, но само по себе оружие неактивно без чего-то, что " +"могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel spiker" @@ -80489,21 +81012,20 @@ msgid "" "expiring in the process. The amorphous mass can be shaped and attached at " "your touch, but the weapon itself is inert without something to control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. " -"Способен формировать большое количество клыкоподобных фрагментов внутри " -"себя. Выбрасывая массу таких фрагментов наряду с небольшой частью самого " -"себя. Когда они достигают цели, оторванные куски тканей сгустка, стреляют " -"этими фрагментами во всех направлениях, отмирая в результате. Эта аморфная " -"масса может принимать определённую форму и присоединяться при касании к ней," -" но само по себе оружие неактивно без чего-то, что могло бы им управлять." +"Живой сгусток, превращённый в автономное оружие. Способен выращивать " +"множество клыкоподобных отростков внутри себя и выбрасывать их вместе с " +"маленькой частью своего тела. При достижении цели части тканей сгустка " +"выстреливают клыками во все стороны, отмирая в процессе. Этой аморфной массе" +" можно придать форму и присоединить куда-нибудь, но само по себе оружие " +"неактивно без чего-то, что могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel spouter" msgid_plural "gel spouters" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "желейный фонтан" +msgstr[1] "желейных фонтана" +msgstr[2] "желейных фонтанов" +msgstr[3] "желейный фонтан" #: lang/json/gun_from_json.py msgid "" @@ -80512,11 +81034,10 @@ msgid "" " be shaped and attached at your touch, but the weapon itself is inert " "without something to control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. Он " -"может высасывать воду из бака транспортного средства и принудительно " -"вытеснять в широкое коническое сопло. Эта аморфная масса может принимать " -"определённую форму и присоединяться при касании к ней, но само по себе " -"оружие неактивно без чего-то, что могло бы им управлять." +"Живой сгусток, превращённый в автономное оружие. Способен высасывать воду из" +" бака транспортного средства и с силой выплёвывать широким конусом. Этой " +"аморфной массе можно придать форму и присоединить куда-нибудь, но само по " +"себе оружие неактивно без чего-то, что могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel lancer" @@ -80535,13 +81056,12 @@ msgid "" "amorphous mass can be shaped and attached at your touch, but the weapon " "itself is inert without something to control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. " -"Развил невероятные способности восприятия, способен определять " -"местоположение и распознавать возможные угрозы на большом расстоянии. Когда " -"потенциальная угроза определена, запускает небольшие отвердевшие фрагменты с" -" невероятной скоростью и точностью. Эта аморфная масса может принимать " -"определённую форму и присоединяться при касании к ней, но само по себе " -"оружие неактивно без чего-то, что могло бы им управлять." +"Живой сгусток, превращённый в автономное оружие. Он способен определять и " +"распознавать возможные угрозы на большом расстоянии с помощью невероятно " +"развитого восприятия. После определения угрозы с невероятной скоростью и " +"точностью выстреливает маленький твёрдый снаряд. Этой аморфной массе можно " +"придать форму и присоединить куда-нибудь, но само по себе оружие неактивно " +"без чего-то, что могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel razor" @@ -80558,11 +81078,11 @@ msgid "" " nearby threats. The amorphous mass can be shaped and attached at your " "touch, but the weapon itself is inert without something to control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. " -"Усовершенствованный метаболизм позволяет ему формировать большие отвердевшие" -" зубчатые диски, которые запускает в любые угрозы поблизости. Эта аморфная " -"масса может принимать определённую форму и присоединяться при касании к ней," -" но само по себе оружие неактивно без чего-то, что могло бы им управлять." +"Живой сгусток, превращённый в автономное оружие. Благодаря продвинутому " +"метаболизму способен выращивать большие твёрдые зубастые диски и " +"выстреливать ими в ближайшие угрозы. Этой аморфной массе можно придать форму" +" и присоединить куда-нибудь, но само по себе оружие неактивно без чего-то, " +"что могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "shock bulb" @@ -80579,12 +81099,10 @@ msgid "" " The amorphous mass can be shaped and attached at your touch, but the " "weapon itself is inert without something to control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. " -"Шокирующе, но как бы то ни было, сгусток способен генерировать и выпускать " -"электрический заряд, который разряжается по любым угрозам поблизости. Эта " -"аморфная масса может принимать определённую форму и присоединяться при " -"касании к ней, но само по себе оружие неактивно без чего-то, что могло бы им" -" управлять." +"Живой сгусток, превращённый в автономное оружие. Шокирующе, но он каким-то " +"образом генерирует электрический заряд и выпускает его по любой ближайшей " +"угрозе. Этой аморфной массе можно придать форму и присоединить куда-нибудь, " +"но само по себе оружие неактивно без чего-то, что могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel puffer" @@ -80603,12 +81121,12 @@ msgid "" "mass can be shaped and attached at your touch, but the weapon itself is " "inert without something to control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. В " -"результате процесса усваивания, фильтрует пищу, выделяя воду и удаляя " -"остатки в сторону любых угроз поблизости. Также выделяются некоторые следы " -"вязкой жидкости, хотя она растворяется довольно быстро. Эта аморфная масса " -"может принимать определённую форму и присоединяться при касании к ней, но " -"само по себе оружие неактивно без чего-то, что могло бы им управлять." +"Живой сгусток, превращённый в автономное оружие. После фильтрации и " +"поглощения питательных веществ из воды он выстреливает остатки в любую " +"ближайшую угрозу. Процесс фильтрации делает остаточную жидкость липкой, хотя" +" она довольно быстро распадается. Этой аморфной массе можно придать форму и " +"присоединить куда-нибудь, но само по себе оружие неактивно без чего-то, что " +"могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "fire puffer" @@ -80627,13 +81145,12 @@ msgid "" "attached at your touch, but the weapon itself is inert without something to " "control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. " -"Имеет довольно специфические предпочтения в еде, питается высокооктановыми " -"компонентами бензина. Переваренное вещество всё ещё остаётся огнеопасно, и " -"когда сгусток его выпускает, также срабатывает железа зажигания, " -"расположенная на внешней мембране. Эта аморфная масса может принимать " -"определённую форму и присоединяться при касании к ней, но само по себе " -"оружие неактивно без чего-то, что могло бы им управлять." +"Живой сгусток, превращённый в автономное оружие. Имеет довольно " +"специфические предпочтения в еде, питается высокооктановыми компонентами " +"бензина. Переваренное вещество огнеопасно, а после выплёвывания также " +"срабатывает зажигательная железа на внешней мембране. Этой аморфной массе " +"можно придать форму и присоединить куда-нибудь, но само по себе оружие " +"неактивно без чего-то, что могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "spark blight" @@ -80652,13 +81169,12 @@ msgid "" "and attached at your touch, but the weapon itself is inert without something" " to control it." msgstr "" -"Этот живой сгусток превратился в подобие автономного чужеродного оружия. " -"Способен накапливать энергию солнечного света внутри себя в виде " -"аккумулированной электроэнергии. Затем в действительно угрожающей ситуации, " -"способен продемонстрировать свою силу, выпустив мощный поток электричества " -"высокого напряжения по любым возможным угрозам. Эта аморфная масса может " -"принимать определённую форму и присоединяться при касании к ней, но само по " -"себе оружие неактивно без чего-то, что могло бы им управлять." +"Живой сгусток, превращённый в автономное оружие. Способен накапливать " +"энергию солнечного света внутри себя в виде электричества. В дальнейшем " +"может продемонстрировать силу, выпустив мощный поток электричества высокого " +"напряжения по любым возможным угрозам. Этой аморфной массе можно придать " +"форму и присоединить куда-нибудь, но само по себе оружие неактивно без чего-" +"то, что могло бы им управлять." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "diamond lance" @@ -80681,13 +81197,13 @@ msgid "" msgstr "" "Оружие, которое смертоносно настолько, насколько и великолепно. В центре " "этого оружия расположена алмазная матрица, которая выполняет роль " -"катализатора; превращая быстро движущийся высокоуглеродистый материал в " -"кристаллическую структуру, которая сравнится с твёрдостью алмаза. " +"катализатора и быстро превращает высокоуглеродистый материал в " +"кристаллическую структуру, по твёрдости почти равную алмазу. " "Кристаллизированный материал быстро разрушается, когда находится вне зоны " -"катализатора; поэтому кусок углерода требуемой формы при контакте с " -"матрицей, сразу же кристаллизируется и выстреливается. Пусковая установка " -"требует специальное шасси для монтирования и применения по целям, которым " -"сильно не повезёт." +"катализатора; поэтому кусок углерода требуемой формы сразу же " +"кристаллизируется и выстреливается при контакте с матрицей. Пусковая " +"установка требует специальное шасси для монтирования и применения по " +"несчастным целям." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "diamond nova" @@ -80711,14 +81227,13 @@ msgid "" msgstr "" "Оружие, которое смертоносно настолько, насколько и великолепно. В центре " "этого оружия расположена алмазная матрица, которая выполняет роль " -"катализатора; превращая быстро движущийся высокоуглеродистый материал в " -"кристаллическую структуру, которая сравнится с твёрдостью алмаза. " +"катализатора и быстро превращает высокоуглеродистый материал в " +"кристаллическую структуру, по твёрдости почти равную алмазу. " "Кристаллизированный материал быстро разрушается, когда находится вне зоны " -"катализатора; также быстро разрушается при контакте с другой материей. " -"Поэтому снаряды хранятся и выстреливаются используя герметичную зону " -"высокого давления, создаваемую вихревым камнем. При поражении атакуемой " -"цели, снаряд раскалывается на осколки; дробясь в великолепный взрыв алмазных" -" фрагментов. Пусковая установка требует платформу для монтирования." +"катализатора или контактирует с другой материей; поэтому снаряды хранятся и " +"выстреливаются при помощи высокого давления, создаваемого вихревым камнем. " +"При ударе о цель происходит взрывной распад, и снаряд раскалывается в ярком " +"взрыве алмазных осколков. " #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "vortex accelerator" @@ -80733,9 +81248,9 @@ msgid "" "This weapon uses powerful bursts of air to launch sharp fragments at its " "target at high speed. You'll need some form of platform to mount it on." msgstr "" -"Это оружие использует мощные удары воздуха для выстрела острыми алмазными " -"фрагментами с высокой скоростью по атакуемой цели. Вам понадобится платформа" -" для его монтирования." +"Это оружие использует мощные воздушные импульсы для стрельбы острыми " +"алмазными фрагментами с высокой скоростью. Вам понадобится платформа для его" +" монтирования." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "vortex bolter" @@ -80750,8 +81265,8 @@ msgid "" "This weapon uses powerful bursts of air to launch bolts at its target at " "high speed. You'll need some form of platform to mount it on." msgstr "" -"Это оружие использует мощные удары воздуха для выстрела болтами с высокой " -"скоростью по атакуемой цели. Вам понадобится платформа для его монтирования." +"Это оружие использует мощные воздушные импульсы для стрельбы болтами с " +"высокой скоростью. Вам понадобится платформа для его монтирования." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "vortex cannon" @@ -80768,9 +81283,9 @@ msgid "" "power this gun. While powerful for its size, you'll need some form of " "platform to mount it on." msgstr "" -"По сути, большая пневматическая пушка собранная для стрельбы заострёнными " -"ферромагнитными снарядами. Вместо механической системы управления, установка" -" использует вихревую энергию. Пусковая установка такой мощи требует " +"По сути, большая пневматическая пушка, собранная для стрельбы заострёнными " +"ферромагнитными снарядами. Вместо механической системы управления установка " +"использует вихревую энергию. Пусковая установка такой мощи требует " "монтирования на платформу." #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py @@ -80786,9 +81301,9 @@ msgid "" "This weapon uses powerful bursts of air to launch small projectiles at its " "target at high speed. You'll need some form of platform to mount it on." msgstr "" -"Это оружие использует мощные удары воздуха для выстрела небольшими снарядами" -" типа галька с высокой скоростью по атакуемой цели. Вам понадобится " -"платформа для его монтирования." +"Это оружие использует мощные воздушные импульсы для стрельбы небольшими " +"снарядами типа гальки с высокой скоростью. Вам понадобится платформа для его" +" монтирования." #: lang/json/gun_from_json.py msgid "storm bolter" @@ -80805,8 +81320,8 @@ msgid "" "support of some sort in order to be operated." msgstr "" "Этот пневматический болтомёт основательно улучшен, позволяя стрелять " -"очередью точно и в быстром темпе. Вам понадобится суппорт для его " -"монтирования и управления отдельными частями." +"очередью точно и в быстром темпе. Вам понадобится платформа для его " +"монтирования." #: lang/json/gun_from_json.py msgid "slingshot cannon" @@ -80831,10 +81346,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "lacerator" msgid_plural "lacerators" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "протыкатель" +msgstr[1] "протыкателя" +msgstr[2] "протыкателей" +msgstr[3] "протыкатель" #: lang/json/gun_from_json.py msgid "" @@ -80849,10 +81364,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "rotary cannon" msgid_plural "rotary cannons" -msgstr[0] "ротационная пушка" -msgstr[1] "ротационных пушки" -msgstr[2] "ротационных пушек" -msgstr[3] "ротационная пушка" +msgstr[0] "вращающаяся пушка" +msgstr[1] "вращающихся пушки" +msgstr[2] "вращающаяся пушек" +msgstr[3] "вращающаяся пушка" #: lang/json/gun_from_json.py msgid "" @@ -80863,8 +81378,8 @@ msgid "" "fired." msgstr "" "Это грозное оружие имеет 3 ствола, расположенных по кругу. Специальный " -"механизм загрузки подаёт патроны необычным образом; обеспечивая высокий темп" -" стрельбы. Однако это делает его невероятно громоздким и его необходимо " +"механизм загрузки подаёт патроны необычным образом, обеспечивая высокий темп" +" стрельбы. Однако это делает его невероятно громоздким, и его необходимо " "смонтировать на опорную конструкцию для стрельбы." #: lang/json/gun_from_json.py @@ -80995,10 +81510,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "ripper" msgid_plural "rippers" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "потрошитель" +msgstr[1] "потрошителя" +msgstr[2] "потрошителей" +msgstr[3] "потрошитель" #: lang/json/gun_from_json.py msgid "" @@ -81049,10 +81564,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "splintergun" msgid_plural "splinterguns" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "осколочная пушка" +msgstr[1] "осколочные пушки" +msgstr[2] "осколочных пушек" +msgstr[3] "осколочная пушка" #: lang/json/gun_from_json.py msgid "" @@ -81180,10 +81695,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "M6 Aircrew Survival Weapon" msgid_plural "M6 Aircrew Survival Weapons" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "M6 Aircrew Survival Weapon" +msgstr[1] "M6 Aircrew Survival Weapon" +msgstr[2] "M6 Aircrew Survival Weapon" +msgstr[3] "M6 Aircrew Survival Weapon" #: lang/json/gun_from_json.py msgid "" @@ -81222,10 +81737,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Colt Lightning .45" msgid_plural "Colt Lightning .45" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Colt Lightning .45" +msgstr[1] "Colt Lightning .45" +msgstr[2] "Colt Lightning .45" +msgstr[3] "Colt Lightning .45" #: lang/json/gun_from_json.py msgid "" @@ -81241,10 +81756,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Bond Arms Derringer" msgid_plural "Bond Arms Derringers" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Дерринджер Bond Arms" +msgstr[1] "Дерринджера Bond Arms" +msgstr[2] "Дерринджеры Bond Arms" +msgstr[3] "Дерринджеры Bond Arms" #: lang/json/gun_from_json.py msgid "" @@ -81292,10 +81807,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "AF2011A1 .38 Super" msgid_plural "AF2011A1 .38 Supers" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] ".38 Super" +msgstr[1] ".38 Super" +msgstr[2] ".38 Super" +msgstr[3] ".38 Super" #: lang/json/gun_from_json.py msgid "" @@ -81308,10 +81823,10 @@ msgstr "" #: lang/json/gun_from_json.py msgid "M1991A1 .38 Super" msgid_plural "M1991A1 .38 Supers" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "M1991A1 .38 Супер магазин" +msgstr[1] "M1991A1 .38 Супер магазина" +msgstr[2] "M1991A1 .38 Супер магазинов" +msgstr[3] "M1991A1 .38 Супер магазин" #: lang/json/gun_from_json.py msgid "" @@ -81559,6 +82074,43 @@ msgstr "" ".45 под патрон калибра 9х19 мм. Замена частей приведёт к небольшой потере " "точности." +#: lang/json/gunmod_from_json.py +msgid "belt feed adapter" +msgid_plural "belt feed adapters" +msgstr[0] "переходник на ленточное боепитание" +msgstr[1] "переходника на ленточное боепитание" +msgstr[2] "переходников на ленточное боепитание" +msgstr[3] "переходник на ленточное боепитание" + +#: lang/json/gunmod_from_json.py +msgid "" +"A kit providing the necessary parts for permanently converting a firearm " +"from magazine to belt-feed. Guaranteed to void your warranty." +msgstr "" +"Этот набор содержит необходимые запчасти для того, чтобы изменить амуницию " +"вашего оружия с магазинного на ленточное. Гарантированно лишит вас " +"гарантийного сервисного обслуживания." + +#: lang/json/gunmod_from_json.py +msgid "magazine" +msgstr "магазин" + +#: lang/json/gunmod_from_json.py +msgid "tuned mechanism" +msgid_plural "tuned mechanisms" +msgstr[0] "отрегулированный механизм" +msgstr[1] "отрегулированных механизма" +msgstr[2] "отрегулированных механизмов" +msgstr[3] "отрегулированных механизма" + +#: lang/json/gunmod_from_json.py +msgid "" +"A set of finely tuned internal components which increase the precision and " +"reliably of a firearm." +msgstr "" +"Набор тонко отлаженных внутренних компонентов, которые увеличивают точность " +"и надёжность огнестрельного оружия." + #: lang/json/gunmod_from_json.py msgid "arrow rest" msgid_plural "arrow rests" @@ -81725,11 +82277,10 @@ msgstr[3] "удлинитель ствола LW" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." +"firearm, contributing to both accuracy and damage." msgstr "" -"Встроенный удлинённый ствол от Лидворкс позволяет увеличить начальную " -"скорость полёта пули, что, в свою очередь, увеличивает точность и наносимый " -"урон, но увеличивает размер и замедляет прицеливание." +"Встроенный удлиненный ствол от Лидворкс позволяет увеличить начальную " +"скорость полета пули, прибавляя, тем самым, к точности и урону." #: lang/json/gunmod_from_json.py msgid "LW shortened barrel" @@ -81760,10 +82311,10 @@ msgstr[3] "тяжёлый ствол LW" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." +"shooting. Increases damage output and weapon range." msgstr "" -"Встроенный тяжёлый ствол от Лидворкс специально предназначен для непрерывной" -" стрельбы. Снижает точность, но увеличивает урон и дальность выстрела." +"Встроенный тяжелый ствол от Лидворкс специально спроектирован для " +"продолжительной стрельбы. Увеличивает урон и дальность поражения." #: lang/json/gunmod_from_json.py msgid "lightweight replacement furniture" @@ -81795,11 +82346,8 @@ msgstr[3] "рукоять эргономичная" #: lang/json/gunmod_from_json.py msgid "" -"A set of ergonomic replacement furniture for a firearm improving handling " -"and accuracy." -msgstr "" -"Набор эргономичных деталей для замены рукояти огнестрельного оружия, " -"улучшающий управляемость и точность." +"A set of ergonomic replacement furniture for a firearm improving handling." +msgstr "Набор эргономичных заменителей для улучшения огнестрельного оружия." #: lang/json/gunmod_from_json.py msgid "beam scatterer" @@ -81861,27 +82409,6 @@ msgstr "" msgid "emitter" msgstr "эмиттер" -#: lang/json/gunmod_from_json.py -msgid "belt feed adapter" -msgid_plural "belt feed adapters" -msgstr[0] "переходник на ленточное боепитание" -msgstr[1] "переходника на ленточное боепитание" -msgstr[2] "переходников на ленточное боепитание" -msgstr[3] "переходник на ленточное боепитание" - -#: lang/json/gunmod_from_json.py -msgid "" -"A kit providing the necessary parts for permanently converting a firearm " -"from magazine to belt-feed. Guaranteed to void your warranty." -msgstr "" -"Этот набор содержит необходимые запчасти для того, чтобы изменить амуницию " -"вашего оружия с магазинного на ленточное. Гарантированно лишит вас " -"гарантийного сервисного обслуживания." - -#: lang/json/gunmod_from_json.py -msgid "magazine" -msgstr "магазин" - #: lang/json/gunmod_from_json.py msgid "leadworks magazine adapter" msgid_plural "leadworks magazine adapters" @@ -81909,26 +82436,11 @@ msgstr[3] "облегчённых спусковых крючка" #: lang/json/gunmod_from_json.py msgid "" -"A precision weighted trigger assembly that improves a firearm's accuracy." -msgstr "" -"Точно настроенный спусковой крючок огнестрельного оружия, увеличивающий " -"точность стрельбы." - -#: lang/json/gunmod_from_json.py -msgid "tuned mechanism" -msgid_plural "tuned mechanisms" -msgstr[0] "отрегулированный механизм" -msgstr[1] "отрегулированных механизма" -msgstr[2] "отрегулированных механизмов" -msgstr[3] "отрегулированных механизма" - -#: lang/json/gunmod_from_json.py -msgid "" -"A set of finely tuned internal components which increase the precision and " -"reliably of a firearm." +"A precision weighted trigger assembly that slightly improves a firearm's " +"accuracy." msgstr "" -"Набор тонко отлаженных внутренних компонентов, которые увеличивают точность " -"и надёжность огнестрельного оружия." +"Точновзвешенный спусковой крючок, который немного улучшает точность " +"огнестрельного оружия." #: lang/json/gunmod_from_json.py msgid "firearm waterproofing" @@ -82147,9 +82659,11 @@ msgstr[3] "гироскопических стабилизатора" #: lang/json/gunmod_from_json.py msgid "" "An advanced unit that straps onto the side of your firearm and reduces " -"vibration, greatly reducing recoil and increasing accuracy." +"vibration, greatly reducing recoil and slightly increasing accuracy." msgstr "" -"Гироскопический стабилизатор снижает вибрацию и отдачу, увеличивая точность." +"Продвинутый блок, который фиксируется на боку вашего огнестрельного оружия и" +" уменьшает вибрацию, значительно уменьшая отдачу и немного увеличивая " +"точность." #: lang/json/gunmod_from_json.py msgid "LW gyroscopic stabilizer" @@ -82893,10 +83407,10 @@ msgstr "Спаренные магазины позволяют увеличит #: lang/json/gunmod_from_json.py msgid "battle rifle conversion" msgid_plural "battle rifle conversions" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "преобразование боевой винтовки" +msgstr[1] "преобразования боевой винтовки" +msgstr[2] "преобразований боевой винтовки" +msgstr[3] "преобразование боевой винтовки" #: lang/json/gunmod_from_json.py msgid "" @@ -82915,10 +83429,10 @@ msgstr "изменение" #: lang/json/gunmod_from_json.py msgid "sniper conversion" msgid_plural "sniper conversions" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "преобразование в снайперскую винтовку" +msgstr[1] "преобразования в снайперскую винтовку" +msgstr[2] "преобразований в снайперскую винтовку" +msgstr[3] "преобразование в снайперскую винтовку" #: lang/json/gunmod_from_json.py msgid "" @@ -83006,10 +83520,10 @@ msgstr "" #: lang/json/gunmod_from_json.py msgid "E.M.A.S." msgid_plural "E.M.A.S.s" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "E.M.A.S." +msgstr[1] "E.M.A.S." +msgstr[2] "E.M.A.S." +msgstr[3] "E.M.A.S." #: lang/json/gunmod_from_json.py msgid "" @@ -83943,14 +84457,14 @@ msgstr "В описании магазинов также указаны под msgid "" "Note that while several ammo types exist for a given caliber and magazine " "type, you can't mix and match these types into a single magazine. You can't " -"for example load 9x19mm JHP and 9x19 FMJ ammo into the same magazine, since " -"a magazine always requires identical rounds to be loaded in it." +"for example load 9x19mm JHP and 9x19mm FMJ ammo into the same magazine, " +"since a magazine always requires identical rounds to be loaded in it." msgstr "" -"Следует иметь в виду, что хотя для данного калибра и типа магазина " -"существует несколько видов патронов, вы не можете заряжать магазин патронами" -" разных видов. Нельзя, к примеру, зарядить в один магазин патроны 9x19 мм " -"экспансивные и 9x19 мм с цельнометаллической оболочкой. В магазине всегда " -"должны быть патроны одного вида." +"Обратите внимание, что, хотя существует несколько типов боеприпасов для " +"данного калибра и типа магазина, вы не можете смешивать и сопоставлять эти " +"типы в одном магазине. Например, вы не можете загружать 9x19 мм JHP и 9x19 " +"мм FMJ-патроны в тот же магазин, так как в нем всегда требуются одинаковые " +"патроны для заряжания." #: lang/json/help_from_json.py msgid "" @@ -84873,6 +85387,10 @@ msgstr "Жевать" msgid "Clear rubble" msgstr "Очистить камни" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "Подбросить" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "Нюхать кокс" @@ -84901,6 +85419,11 @@ msgstr "Дуть" msgid "Make it talk" msgstr "Заставить говорить" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "Надышался дымом" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "Снять" @@ -84942,6 +85465,10 @@ msgstr "Вдохнуть" msgid "Drill" msgstr "Сверлить" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "Спросить" + #: lang/json/item_action_from_json.py lang/json/item_action_from_json.py #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Read" @@ -84984,6 +85511,7 @@ msgid "Squeeze" msgstr "Сжать" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" msgstr "Играть" @@ -85021,6 +85549,11 @@ msgstr "Побриться" msgid "Siphon" msgstr "Слить" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "Надышался дымом" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "Написать" @@ -85073,6 +85606,11 @@ msgstr "Поместить/вытащить боеприпасы" msgid "Make some noise" msgstr "Пошуметь" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "Играть" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "Активировать/деактивировать" @@ -85758,19 +86296,19 @@ msgid "" "An alternator. When mounted on a gasoline or diesel engine and the engine " "is on, will produce electrical power that can be stored in a battery." msgstr "" -"Генератор. При установке на бензиновом или дизельном двигателе и включении " -"двигателя, будет генерироваться электроэнергия, которая может храниться в " -"батареях аккумулятора." +"Генератор. Будучи установленным на бензиновый или дизельный двигатель, после" +" запуска двигателя генерирует электроэнергию, которую можно хранить в " +"аккумуляторе." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "You can move through this vehicle frame without being slowed down." -msgstr "Вы можете двигаться по этой раме автомобиля, не замедляясь." +msgstr "Вы можете двигаться по этой части автомобиля без замедления." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "A bright light that illuminates several squares inside the vehicle." -msgstr "Яркий свет, который освещает на несколько шагов внутри автомобиля." +msgstr "Яркий свет, освещающий несколько клеток внутри автомобиля." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -85784,7 +86322,7 @@ msgstr "" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "You can sleep here comfortably." -msgstr "Вы можете здесь комфортабельно спать." +msgstr "Здесь можно спать с комфортом." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -85817,14 +86355,15 @@ msgid "" "attempt to pick-up items (default ',') to access the controls, or use the " "vehicle control key (default '^')." msgstr "" -"С сиденьем или седлом, вы уедете отсюда. Вы можете «e» изучить тайл или " -"попытаться поднять предметы (по умолчанию «,»), чтобы получить доступ к " -"управлению, или использовать клавишу управления (по умолчанию «^»)." +"Отсюда можно управлять транспортом, если есть сиденье или седло. Вы можете " +"«e» изучить тайл или попытаться поднять предметы (по умолчанию «,»), чтобы " +"получить доступ к управлению, или использовать клавишу управления (по " +"умолчанию «^»)." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "Illuminated items in this space will not illuminate nearby squares." -msgstr "Освещённые предметы в этом тайле не будут освещать соседние тайлы." +msgstr "Источники света, помещенные сюда, не будут освещать соседние клетки." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -85859,10 +86398,9 @@ msgid "" "wheels. Requires controls to turn on. If it drains power, also requires a " "charged battery to start." msgstr "" -"Обеспечивает движущую силу для перемещения автомобиля, если он имеет " -"достаточное количество колёс. Необходимо включить управление. Если он " -"потребляет мощность, также требуется заряженный аккумулятор чтобы его " -"завести." +"Обеспечивает движущую силу для перемещения транспорта с достаточным " +"количеством колёс. Включается через средство управления. Если потребляет " +"электроэнергию, для запуска также требуется заряженный аккумулятор." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -85870,15 +86408,15 @@ msgid "" "An alternator can be attached, and it will generate electrical power while " "the engine is on at the cost of some motive power." msgstr "" -"Генератор можно присоединить, он будет генерировать электроэнергию, пока " -"работает двигатель за счёт некоторой движущей силы." +"Можно подсоединить генератор, при работающем двигателе будет генерироваться " +"электроэнергия за счёт уменьшения движущей силы." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "" "When turned on, it will stop the vehicle unless it has a strong engine." msgstr "" -"Когда включён, он остановит автомобиль, если у него нет сильного двигателя." +"При включении остановит автомобиль, если у него нет мощного двигателя." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -85905,14 +86443,12 @@ msgstr "" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "Keeps the rain out of the interior of the vehicle." -msgstr "Создаёт крышу внутри салона автомобиля." +msgstr "Не пропускает дождь внутрь транспорта." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "You need to be in a seat or saddle to operate vehicle controls." -msgstr "" -"Вы должны быть на сиденье или седле, чтобы управлять системой управления " -"автомобиля." +msgstr "Вы должны быть на сиденье или седле, чтобы управлять транспортом." #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -86112,10 +86648,18 @@ msgstr "Изменить сторону, с которой надета брон msgid "Assign invlets to armor" msgstr "Назначить клавишу на броню" +#: lang/json/keybinding_from_json.py +msgid "Sort armor into natural layer order" +msgstr "Сортировать броню в натуральном порядке" + #: lang/json/keybinding_from_json.py msgid "Equip armor from inventory" msgstr "Надеть броню из инвентаря" +#: lang/json/keybinding_from_json.py +msgid "Equip armor from inventory at this position" +msgstr "Надеть выбранную броню из инвентаря" + #: lang/json/keybinding_from_json.py msgid "Unequip selected armor" msgstr "Снять выбранную броню" @@ -86961,6 +87505,22 @@ msgstr "Уменьшить приоритет" msgid "Change sort order" msgstr "Изменить режим сортировки" +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "Добавить в чёрный список безопасного режима" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "Удалить из чёрного списка безопасного режима" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "осмотреться" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "огонь" + #: lang/json/keybinding_from_json.py msgid "List items and monsters" msgstr "Список вещей и монстров" @@ -87143,13 +87703,11 @@ msgstr "Убрать пользовательский цвет" msgid "Load color template" msgstr "Загрузить цветовой шаблон" -#: lang/json/keybinding_from_json.py src/craft_command.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/veh_interact.cpp msgid "Yes" msgstr "Да" -#: lang/json/keybinding_from_json.py src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/options.cpp src/veh_interact.cpp msgid "No" msgstr "Нет" @@ -87299,6 +87857,11 @@ msgstr "Объединённый компьютеризированный бан msgid "Open Vault" msgstr "Открыть хранилище" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "Объединённый Компьютеризированный Банк Казначейства" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -88005,7 +88568,8 @@ msgid "Emergency Message" msgstr "Экстренное сообщение" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py lang/json/mapgen_from_json.py +#: lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "Отключить внешний источник энергии" @@ -88066,7 +88630,6 @@ msgstr "ОШИБКА: СИГНАЛ УТЕРЯН" #. ~ Computer option #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py -#: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "Установить мод ретранслятора" @@ -89252,7 +89815,7 @@ msgstr "помятый" #: lang/json/material_from_json.py msgid "sliced" -msgstr "нарезанный" +msgstr "разорвано" #: lang/json/material_from_json.py msgid "mutilated" @@ -89483,7 +90046,8 @@ msgstr "Поищи в библиотеке." msgid "Got that book for me?" msgstr "Достал эту книгу для меня?" -#: lang/json/mission_def_from_json.py src/npctalk.cpp src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Thanks!" msgstr "Спасибо!" @@ -90104,7 +90668,7 @@ msgid "" "patterns leading up to the outbreak." msgstr "" "Все умершие превращаются в зомби, так? Это означает, что инфицировавшую всех" -" заразу, принесло ветром. Если мы найдём погодные сводки, то сможем " +" заразу принесло ветром. Если мы найдём погодные сводки, то сможем " "определить очаг заражения, а также те регионы, куда не дул ветер из " "заражённых районов и которые не подверглись этой напасти." @@ -90138,7 +90702,7 @@ msgstr "Найти реликвию" #: lang/json/mission_def_from_json.py msgid "St. Michael the archangel defend me in battle..." -msgstr "Святой архангел Михаил защищает меня…" +msgstr "Святой архангел Михаил, защити меня..." #: lang/json/mission_def_from_json.py msgid "" @@ -90382,7 +90946,7 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." +"prophesied events accurately before concerning the Church of Starry Wisdom." msgstr "" "У меня есть другое задание для тебя, если ты готов. Есть заключённый, о " "котором упоминает священник. Мне интересно, что с ним случилось и что " @@ -90549,7 +91113,8 @@ msgstr "Убить повелителя орды" #: lang/json/mission_def_from_json.py msgid "" "I've heard some bad rumors so I hope you are up for another challenge..." -msgstr "Ходят плохи слухи, поэтому я надеюсь, что ты готов к другому заданию…" +msgstr "" +"Ходят плохие слухи, поэтому я надеюсь, что ты готов к другому заданию..." #: lang/json/mission_def_from_json.py msgid "" @@ -90601,8 +91166,8 @@ msgid "" "The eater of the dead... something was ripping zombies to shreds and only " "leaving a few scattered limbs..." msgstr "" -"Пожиратель мёртвых… что-то разрывало зомби на части, оставляя только много " -"оторванных конечностей…" +"Пожиратель мёртвых… что-то разрывало зомби на части, оставляя только " +"оторванные конечности…" #: lang/json/mission_def_from_json.py msgid "" @@ -90714,11 +91279,11 @@ msgid "" "and return the frequency list to me. I'm sure they could probably use your " "help also." msgstr "" -"Моя команда связи отправилась проверить диспетчерскую комнату после того, " -"как мы проникли на объект. С тех пор от них не было вестей, мне нужно найти " -"их. Первой задачей было записать все работающие каналы, передающие " -"информацию выжившим или в другие комплексы. Найдите и принесите список " -"активных частот мне. Я уверен, что им также не помешала бы ваша помощь." +"Моя команда связи отправилась занять диспетчерскую комнату после того, как " +"мы проникли на объект. С тех пор от них не было вестей, мне нужно найти их. " +"Первой задачей было записать все работающие каналы, передающие информацию " +"выжившим или в другие комплексы. Найдите и принесите список активных частот " +"мне. Я уверен, что им также не помешала бы ваша помощь." #: lang/json/mission_def_from_json.py msgid "Good luck, the communications room shouldn't be far from here." @@ -90780,20 +91345,20 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels" " is boosted so we can pick it up at much longer ranges. I really need you " "make me one." msgstr "" -"Моей главной обязанностью является слежение за радиоэфиром и выявление " -"возможных целей для охраны или спасения. Большинство ретрансляторов " -"находятся внизу и работают от аварийного питания. Если вы знакомы с основами" -" электроники, то сможете собрать модификацию ретранслятора, изображённую на " -"этих схемах. Когда модификация будет подключена к главному терминалу " -"радиостанции, все коротковолновые сообщения на аварийных каналах будут " -"усиленны, и мы сможем отслеживать их на гораздо больших расстояниях. Мне " -"действительно нужно, чтобы вы сделали это." +"Моя главная задача - слежение за радиоэфиром и выявление возможных целей для" +" охраны или спасения. Почти все ретрансляторы вышли из строя, а те, что " +"остались, работают на аварийном питании. Если вы знакомы с основами " +"электроники, то сможете собрать модификацию ретранслятора, изображённую на " +"этих схемах. После подключения модификации к главному терминалу радиостанции" +" все коротковолновые сообщения на аварийных каналах будут усилены, и мы " +"сможем отслеживать их на гораздо больших расстояниях. Мне действительно " +"нужно, чтобы вы сделали это." #: lang/json/mission_def_from_json.py msgid "" @@ -91160,7 +91725,7 @@ msgstr "Спасибо за доставку." #: lang/json/mission_def_from_json.py msgid "Find 20 Yeast" -msgstr "Найти дрожжи 20шт" +msgstr "Найти дрожжи 20 шт" #: lang/json/mission_def_from_json.py msgid "" @@ -92253,7 +92818,7 @@ msgstr "У тебя есть кожаная броня?" #: lang/json/mission_def_from_json.py msgid "Make 12 Molotov Cocktails" -msgstr "Сделать 12 Коктейлей Молотова" +msgstr "Сделать 12 коктейлей Молотова" #: lang/json/mission_def_from_json.py msgid "" @@ -92554,15 +93119,21 @@ msgid "" "computers will have some security on them. Bring back anything you find on " "a USB drive." msgstr "" +"Если лаборатория заблокирована, возможно, вы найдете идентификационную карту" +" от сотрудников, погибших при эвакуации. Также развивайте свои навыки работы" +" на компьютере, на всех компьютерах будет определенная защита. Принесите на " +"USB-накопителе всё, что удастся найти." #: lang/json/mission_def_from_json.py msgid "" "Thanks! This data looks damaged, but maybe I can make something out of it." msgstr "" +"Спасибо! Эти данные выглядят поврежденными, но, возможно, я смогу что-то " +"сделать." #: lang/json/mission_def_from_json.py msgid "Download Encryption Codes" -msgstr "" +msgstr "Загрузка Кодов Шифрования" #: lang/json/mission_def_from_json.py msgid "" @@ -92573,26 +93144,37 @@ msgid "" "hidden beneath a town, they weren't allowed in. That means it should have " "unsecured computers we can get the codes from." msgstr "" +"К сожалению, полученные вами данные неполные и в основном зашифрованы. " +"Однако, возможно, есть способ получить коды шифрования. Я обнаружил жалобу " +"службы информационной безопасности о невозможности выполнить важные " +"обновления безопасности на одном исследовательском участке. Это какой-то " +"более закрытый второстепенный комплекс, скрытый под городом, у службы не " +"было туда доступа. Это означает, что в комплексе должны быть незащищенные " +"компьютеры, из которых мы сможем получить коды." #: lang/json/mission_def_from_json.py msgid "" "Great! I've mapped out a route, it should look like a normal house. Bring " "back anything you find on a USB drive." msgstr "" +"Отлично! Я наметил маршрут, цель должна выглядеть как обычный дом. Принесите" +" на USB-накопителе всё, что удастся найти." #: lang/json/mission_def_from_json.py msgid "Expect the lab to be locked as usual." -msgstr "" +msgstr "Ожидайте, что лаборатория будет закрыта, как обычно." #: lang/json/mission_def_from_json.py msgid "" "Wonderful! Now I just need to get an undamaged, complete archive, and we " "can really figure out what happened." msgstr "" +"Замечательно! Теперь мне просто нужно получить неповрежденный полный архив, " +"и мы действительно можем понять, что произошло." #: lang/json/mission_def_from_json.py msgid "Download Research Archives" -msgstr "" +msgstr "Загрузка Исследовательских Архивов" #: lang/json/mission_def_from_json.py msgid "" @@ -92603,12 +93185,20 @@ msgid "" "everything to subzero temperatures. I bet the archives inside that lab are " "still working." msgstr "" +"Итак, здесь, похоже, месяцы, может быть, годы экспериментов, так что набор " +"данных должен быть огромным. Подходящие серверы баз данных перегрелись бы, " +"работая на аварийной электросети. Но я нашел сообщения из лаборатории, в " +"которой во время катаклизма был открыт какой-то замораживающий портал, " +"охладивший всё до температур ниже нуля. Держу пари, что архивы внутри этой " +"лаборатории все еще работают." #: lang/json/mission_def_from_json.py msgid "" "Great! I've mapped out a route. Bundle up, it gets colder the deeper you " "go and it looks like the archives were on the fourth basement level." msgstr "" +"Отлично! Я наметил маршрут. Подготовьтесь, чем глубже вы продвинетесь, тем " +"будет холоднее, и похоже, что архивы находятся на четвертом уровне подвала." #: lang/json/mission_def_from_json.py msgid "" @@ -92616,14 +93206,17 @@ msgid "" "You'll really need special equipment to survive that far down. Bring back " "anything you find on a USB drive." msgstr "" +"Эта лаборатория замерзает, и чем глубже вы продвинетесь, тем будет " +"холоднее. Чтобы там выжить, действительно потребуется специальное " +"снаряжение. Принесите на USB-накопителе всё, что удастся найти." #: lang/json/mission_def_from_json.py msgid "Thanks! This is a lot of data to go through." -msgstr "" +msgstr "Спасибо! Это много данных, которые нужно изучить." #: lang/json/mission_def_from_json.py msgid "Find Lab Tunnels" -msgstr "" +msgstr "Найти Лабораторные Туннели" #: lang/json/mission_def_from_json.py msgid "" @@ -92633,10 +93226,15 @@ msgid "" "there, find the tunnels that they dug, and download everything you can about" " the train network." msgstr "" +"В данных мы нашли крупный контракт на оборудование для прокладки туннелей и " +"оснащения поездов, заказанный восемь месяцев назад. Это лучшее, что у нас " +"есть. Вот адрес правительственной лаборатории, куда было поставлено " +"оборудование. Я хочу, чтобы вы поехали туда, нашли туннели, которые они " +"вырыли, и скачали все возможное о сети поездов." #: lang/json/mission_def_from_json.py msgid "So glad for your help." -msgstr "" +msgstr "Рад вам помочь." #: lang/json/mission_def_from_json.py msgid "" @@ -92644,12 +93242,18 @@ msgid "" "going to be deeper inside a lab than a normal subway. Fifty feet would mean" " maybe four stories down. Bring back anything you find on a USB drive." msgstr "" +"Оборудование было рассчитано на 50 футов под землей, так что вход в туннель " +"в лаборатории будет глубже, чем в обычном метро. Пятьдесят футов означают, " +"возможно, четыре этажа вниз. Принесите на USB-накопителе всё, что удастся " +"найти." #: lang/json/mission_def_from_json.py msgid "" "Fantastic! I should be able to reconstruct what cargo moved between which " "labs. I wonder what was really going on down there." msgstr "" +"Фантастика! Мне нужно установить, какой груз перемещался между " +"лабораториями. Интересно, что там происходит." #: lang/json/monster_attack_from_json.py src/monattack.cpp #, c-format, no-python-format @@ -93107,7 +93711,7 @@ msgstr "Эта штука несёт вас назад. Прямо в перво #. ~ Mutation class: Slime junkie_message #: lang/json/mutation_category_from_json.py msgid "Maybe if you drank enough, you'd become mutagen..." -msgstr "Возможно, если вы достаточно выпьете, вы мутируете…" +msgstr "Возможно, если вы достаточно выпьете, вы сами станете мутагеном..." #. ~ Mutation class: Slime Male memorial messsage #: lang/json/mutation_category_from_json.py @@ -93151,12 +93755,12 @@ msgstr "Крыса" #. ~ Mutation class: Rat mutagen_message #: lang/json/mutation_category_from_json.py msgid "You feel a momentary nausea." -msgstr "Вас стремительно стало тошнить." +msgstr "Вы чувствуете мимолётную тошноту." #. ~ Mutation class: Rat iv_message #: lang/json/mutation_category_from_json.py msgid "You squeak as the shot hits you." -msgstr "В вас попали, и вы издаёте писк." +msgstr "Вы пищите, когда игла вонзается в ваше тело." #. ~ Mutation class: Rat iv_sound_message #: lang/json/mutation_category_from_json.py @@ -93184,12 +93788,12 @@ msgstr "Зверь" #: lang/json/mutation_category_from_json.py msgid "Your heart races and you see blood for a moment." msgstr "" -"Ваше сердцебиение ускоряется и на мгновение ваши глаза наливаются кровью." +"Ваше сердцебиение ускоряется, и на мгновение ваши глаза наливаются кровью." #. ~ Mutation class: Beast iv_message #: lang/json/mutation_category_from_json.py msgid "Your heart races wildly as the injection takes hold." -msgstr "Ваш сердечный ритм становится диким после инъекции." +msgstr "Ваш сердечный ритм дико ускоряется после инъекции." #. ~ Mutation class: Beast Male memorial messsage #: lang/json/mutation_category_from_json.py @@ -93201,7 +93805,7 @@ msgstr "Принял свою звериную натуру." #: lang/json/mutation_category_from_json.py msgctxt "memorial_female" msgid "Embraced his bestial nature." -msgstr "Принял свою звериную натуру." +msgstr "Приняла свою звериную натуру." #. ~ Mutation class name #: lang/json/mutation_category_from_json.py lang/json/mutation_from_json.py @@ -93224,13 +93828,13 @@ msgstr "" #: lang/json/mutation_category_from_json.py msgctxt "memorial_male" msgid "Became one with the bears." -msgstr "Стал одним из медведей." +msgstr "Стал единым с медведями." #. ~ Mutation class: Bear Female memorial messsage #: lang/json/mutation_category_from_json.py msgctxt "memorial_female" msgid "Became one with the bears." -msgstr "Стала одним из медведей." +msgstr "Стала единым с медведями." #. ~ Mutation class name #: lang/json/mutation_category_from_json.py lang/json/mutation_from_json.py @@ -93240,7 +93844,9 @@ msgstr "Кошка" #. ~ Mutation class: Feline mutagen_message #: lang/json/mutation_category_from_json.py msgid "As you lap up the last of the mutagen, you wonder why..." -msgstr "Когда вы лакаете последний мутаген, вы удивляетесь почему…" +msgstr "" +"Когда вы лакаете последние капли мутагена, вы удивляетесь, зачем вы это " +"делаете…" #. ~ Mutation class: Feline iv_message #: lang/json/mutation_category_from_json.py @@ -93302,8 +93908,7 @@ msgstr "Ваш разум и тело успокаиваются. Вы чувс #. ~ Mutation class: Cattle iv_message #: lang/json/mutation_category_from_json.py msgid "You wonder if this is what rBGH feels like..." -msgstr "" -"Вам интересно, какие ощущения от коровьего рекомбинантного гормона роста..." +msgstr "Интересно, похоже ли это на коровий гормон роста..." #. ~ Mutation class: Cattle Male memorial messsage #: lang/json/mutation_category_from_json.py @@ -93357,7 +93962,7 @@ msgstr "Птица" #. ~ Mutation class: Bird mutagen_message #: lang/json/mutation_category_from_json.py msgid "Your body lightens and you long for the sky." -msgstr "Ваше тело обретает лёгкость и в вас просыпается тоска по небу." +msgstr "Ваше тело обретает лёгкость, и в вас просыпается тоска по небу." #. ~ Mutation class: Bird iv_message #: lang/json/mutation_category_from_json.py @@ -93449,13 +94054,13 @@ msgstr "Вы приняли этот удар как чемпион!" #: lang/json/mutation_category_from_json.py msgctxt "memorial_male" msgid "Started representing." -msgstr "Стал изображающим." +msgstr "Стал что-то представлять." #. ~ Mutation class: Alpha Female memorial messsage #: lang/json/mutation_category_from_json.py msgctxt "memorial_female" msgid "Started representing." -msgstr "Стала изображающей." +msgstr "Стала что-то представлять." #. ~ Mutation class name #: lang/json/mutation_category_from_json.py @@ -93660,8 +94265,8 @@ msgid "" "You are accustomed to being exposed to the elements. This decreases morale " "penalties for being wet." msgstr "" -"Вы привыкли к тому, что у вас нет крыши над головой и вас поливают осадки. " -"Уменьшены штрафы к настроению от промокания." +"Вы привыкли жить под открытым небом. Уменьшены штрафы к настроению от " +"промокания." #: lang/json/mutation_from_json.py msgid "Parkour Expert" @@ -94284,7 +94889,7 @@ msgid "" "You have studied the arts of the Shaolin monks. You start with one of the " "five animal fighting styles: Tiger, Crane, Leopard, Snake, or Dragon." msgstr "" -"Вы изучали искусства Шаолинских монахов. Вы начинаете с одним из пяти " +"Вы изучали искусства Шаолиньских монахов. Вы начинаете с одним из пяти " "«животных» стилей боя: тигр, журавль, леопард, змея или дракон." #: lang/json/mutation_from_json.py @@ -94527,7 +95132,7 @@ msgstr "Неграмотный" #. ~ Description for Illiterate #: lang/json/mutation_from_json.py msgid "You never learned to read! Books and computers are off-limits to you." -msgstr "Вы не умеете читать! Книги и компьютеры не для вас." +msgstr "Вы не умеете читать! Книги и компьютеры — это не для вас." #: lang/json/mutation_from_json.py msgid "Poor Hearing" @@ -94611,9 +95216,9 @@ msgid "" "Reading is for nerds! Boring books are more boring, and you can't have fun " "by reading books." msgstr "" -"Читать книги - это для ботаников! Скучные книги для вас будут ещё более " -"скучными, чем для всех остальных, и вы никогда не сможете получить " -"удовольствие от чтения книг." +"Читать книги — это для ботанов! Скучные книги для вас будут ещё скучнее, чем" +" для всех остальных, и вы никогда не сможете получить удовольствие от чтения" +" книг." #: lang/json/mutation_from_json.py msgid "Hates Fruit" @@ -95227,9 +95832,9 @@ msgid "" "that of a lizard. This is visually striking, but doesn't seem to affect " "your vision." msgstr "" -"После мутации ваши глаза обрели блестящую радужную оболочку, похожую на " -"глаза ящерицы. Выглядит шокирующе, но, похоже, никак не отражается на вашем " -"зрении." +"После мутации ваши глаза обрели блестящую радужную оболочку и щелевидный " +"зрачок, как у ящерицы. Выглядит шокирующе, но, похоже, никак не отражается " +"на вашем зрении." #: lang/json/mutation_from_json.py msgid "Reptilian IR" @@ -95254,7 +95859,7 @@ msgid "" "Your flesh regenerates slowly, and you will regain HP even when not " "sleeping." msgstr "" -"Ваша плоть медленно восстанавливается и вы восполняете очки здоровья даже " +"Ваша плоть медленно восстанавливается и вы восполняете очки здоровья, даже " "когда не спите." #: lang/json/mutation_from_json.py @@ -96200,8 +96805,7 @@ msgstr "Псевдоконечности" msgid "" "Your pseudopod-like limbs can fit into anything! +4 Dexterity, -4 Strength." msgstr "" -"Ваши конечности стали как псевдоподии, и теперь они могут стать чем угодно! " -"Ловкость +4, Сила -4" +"Ваши конечности-ложноножки могут стать чем угодно! Ловкость +4, Сила -4" #: lang/json/mutation_from_json.py msgid "Compound Eyes" @@ -97602,10 +98206,10 @@ msgid "" "dodge skill is a little higher." msgstr "" "Вы уменьшились в размерах в два раза! Вещи, которые вы раньше поднимали без " -"труда, теперь для вас неподъёмны, вещи сковывают в два раза больше (если " -"только вы не ушьёте их), так как они стали вам велики, а очки здоровья " -"значительно снижены. Однако вы умеете передвигаться бесшумно, а ваш навык " -"уклонения немного повышен." +"труда, теперь для вас неподъёмны, ставшая великоватой одежда сковывает в два" +" раза больше (если только вы не ушьёте её), а очки здоровья значительно " +"снижены. Однако вы умеете передвигаться бесшумно, а ваш навык уклонения " +"немного повышен." #: lang/json/mutation_from_json.py msgid "Unassuming" @@ -97647,8 +98251,8 @@ msgid "" "mutagen!" msgstr "" "Даже простые мысли о мутагене (какое отличное слово! «Мутаген». Идеально!) " -"вызывают у вас жажду. И вы так любите свои новые части тела… Вы просто " -"должны иметь больше мутагена." +"вызывают у вас жажду. И вы так любите свои новые части тела… Вам просто " +"нужно больше мутагена." #: lang/json/mutation_from_json.py msgid "Head Bumps" @@ -99131,7 +99735,7 @@ msgstr "Номер один" #. ~ Description for Prime #: lang/json/mutation_from_json.py msgid "You're the perfect candidate to tidy this mess." -msgstr "Вы — идеальный кандидат, чтобы возглавить этот бардак." +msgstr "Вы — идеальный кандидат, чтобы навести здесь порядок." #. ~ Description for Fey #: lang/json/mutation_from_json.py @@ -99322,10 +99926,14 @@ msgid "" " allowing you to see robots and creatures charged with electricity through " "walls, but being shocked will seriously mess you up." msgstr "" +"На вашем лице и носу выросла сеть студенистых электрорецепторов, прямо как у" +" акул. Они очень чувствительны к магнитным полям, позволяя видеть роботов и " +"заряженных электричеством существ через стены, но вам не поздоровится, если " +"вас ударят током." #: lang/json/mutation_from_json.py msgid "Shark Teeth" -msgstr "" +msgstr "Акульи Зубы" #. ~ Description for Shark Teeth #: lang/json/mutation_from_json.py @@ -99335,6 +99943,11 @@ msgid "" "lethal natural weapon, as long as your anatomy favors it. They also grow " "very fast, and you harmlessly shed them more or less at random." msgstr "" +"Ваши зубы стали невероятно острыми, теперь они состоят из очень твёрдого " +"кальцинированного вещества. Помимо того, что вы теперь едите намного " +"быстрее, вы также можете использовать их в качестве смертельного природного " +"оружия, если ваша анатомия позволяет. А еще они очень быстро растут, так что" +" вы можете терять их без особого вреда." #: lang/json/mutation_from_json.py #, no-python-format @@ -99456,8 +100069,8 @@ msgid "" "You spent a lot of time actively maneuvering on skates before the cataclysm," " and are better at staying on your feet when checked or blocked." msgstr "" -"До Катаклизма, вы потратили много времени, активно маневрируя на роликах, и " -"в них лучше стоите на ногах." +"Вы потратили много времени до Катаклизма, активно маневрируя на роликах, и в" +" них лучше стоите на ногах." #: lang/json/mutation_from_json.py msgid "Martial Artist" @@ -99621,7 +100234,7 @@ msgstr "Отладочный дезодорант" #. ~ Description for Debug Deodorizer #: lang/json/mutation_from_json.py msgid "Smell that bug? Smell's certainly not coming from you!" -msgstr "Пахнет этот сбой? Конечно, запах идёт не от тебя!" +msgstr "Чуете этот сбой? Конечно, запах идёт не от тебя!" #: lang/json/mutation_from_json.py msgid "Debug Silent Walk" @@ -99695,7 +100308,7 @@ msgstr "" #: lang/json/mutation_from_json.py msgid "Debug Bionic Installation" -msgstr "" +msgstr "Отладка Установки Бионики" #. ~ Description for Debug Bionic Installation #: lang/json/mutation_from_json.py @@ -99705,7 +100318,7 @@ msgstr "" #: lang/json/mutation_from_json.py msgid "Debug Bionic Power" -msgstr "" +msgstr "Отладка Бионической Энергии" #. ~ Description for Debug Bionic Power #: lang/json/mutation_from_json.py @@ -99713,6 +100326,8 @@ msgid "" "For fueling your inner cybug. Activate to increase power capacity by 100 " "(can be repeated.)" msgstr "" +"Для заправки вашего внутреннего кибуга. Активируйте для увеличения мощности " +"на 100 (можно повторить)." #: lang/json/mutation_from_json.py msgid "Squeamish" @@ -99951,7 +100566,7 @@ msgid "" "I'm looking for medical mutagen... this world is no place for humans " "anymore, and I don't plan to keep being one." msgstr "" -"Я ищу мутаген медицинский... этот мир больше не место для обычных людей, и я" +"Я ищу медицинский мутаген... этот мир больше не место для обычных людей, и я" " не планирую оставаться таким." #: lang/json/npc_class_from_json.py @@ -100124,13 +100739,15 @@ msgstr "" #: lang/json/npc_class_from_json.py msgid "Mouse Mutant" -msgstr "" +msgstr "Мышиный Мутант" #: lang/json/npc_class_from_json.py msgid "" "I'm looking for mouse mutagen... this world is no place for humans anymore, " "and I don't plan to keep being one." msgstr "" +"Я ищу мышиный мутаген ... этот мир больше не место для обычных людей, и я не" +" планирую оставаться таким." #: lang/json/npc_class_from_json.py msgid "Alpha Mutant" @@ -100335,7 +100952,7 @@ msgstr "река" msgid "river bank" msgstr "берег реки" -#: lang/json/overmap_terrain_from_json.py +#: lang/json/overmap_terrain_from_json.py lang/json/snippet_from_json.py msgid "house" msgstr "дом" @@ -100601,7 +101218,7 @@ msgstr "убежище" #: lang/json/overmap_terrain_from_json.py msgid "LMOE shelter" -msgstr "последний приют" +msgstr "Убежище «последних людей»" #: lang/json/overmap_terrain_from_json.py msgid "science lab" @@ -100705,7 +101322,7 @@ msgstr "муравейник" #: lang/json/overmap_terrain_from_json.py msgid "sulfurous anthill" -msgstr "серный муравейник" +msgstr "кислотный муравейник" #: lang/json/overmap_terrain_from_json.py msgid "slime pit" @@ -101102,7 +101719,7 @@ msgstr "небольшой склад" #: lang/json/overmap_terrain_from_json.py msgid "lumberyard" -msgstr "лесопилка" +msgstr "склад древесины" #: lang/json/overmap_terrain_from_json.py msgid "construction site" @@ -101410,6 +102027,14 @@ msgstr "трейлерный парк" msgid "mass grave" msgstr "массовое захоронение" +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "ж/д станция" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "парковка ж/д станции" + #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" msgstr "заброшенный автомобильный проезд" @@ -101468,7 +102093,7 @@ msgstr "прачечная-автомат" #: lang/json/overmap_terrain_from_json.py msgid "noname" -msgstr "" +msgstr "безымянный" #: lang/json/overmap_terrain_from_json.py msgid "mortuary" @@ -101882,14 +102507,13 @@ msgid "" " is winter, and you hope your guns and the skills you have acquired can help" " you survive." msgstr "" -"Как только начался Катаклизм, вы укрылись в бомбоубежище. Настала зима, и вы" -" надеетесь, что ваше оружие и навыки, которые вы приобрели, помогут вам " -"выжить." +"Как только начался Катаклизм, ты укрылся в бомбоубежище. Настала зима, и ты " +"надеешься, что приобретённые навыки и оружие помогут тебе выжить." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Sheltered Militia" -msgstr "Укрывшийся ополченец" +msgstr "Укрывшаяся ополченка" #. ~ Profession (female Sheltered Militia) description #: lang/json/professions_from_json.py @@ -101899,9 +102523,8 @@ msgid "" " is winter, and you hope your guns and the skills you have acquired can help" " you survive." msgstr "" -"Как только начался Катаклизм, вы укрылись в бомбоубежище. Настала зима, и вы" -" надеетесь, что ваше оружие и навыки, которые вы приобрели, помогут вам " -"выжить." +"Как только начался Катаклизм, ты укрылась в бомбоубежище. Настала зима, и ты" +" надеешься, что приобретённые навыки и оружие помогут тебе выжить." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -101985,10 +102608,10 @@ msgid "" "underfongen to find newe lyflode in the most hidous cataclysm man hath " "witnessed sithen that deluge Noe rood out in his greet schippe." msgstr "" -"Какого дьявола? Вы ничего не знаете ни об этом странном месте, ни о злом " -"колдовстве, которое принесло вас сюда. Имея в руках только эти запасы, вы " -"должны найти способ выжить среди худшего Катаклизма, который видел человек, " -"со времён Всемирного Потопа и Ноя с его ковчегом." +"Каково диавола? Ты ничево не ведаешь ни о сём странном месте, ни о " +"нечестивой ворожбе, каковая извела тебе сюда. Имеючи токмо сии запасы, ты " +"должон найтить способ выжить в худшем катаклизме, каковой же узревал " +"человек с поры Потопа да ковчега Ноева." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -102004,10 +102627,10 @@ msgid "" "underfongen to find newe lyflode in the most hidous cataclysm man hath " "witnessed sithen that deluge Noe rood out in his greet schippe." msgstr "" -"Какого дьявола? Вы ничего не знаете ни об этом странном месте, ни о злом " -"колдовстве, которое принесло вас сюда. Имея в руках только эти запасы, вы " -"должны найти способ выжить среди худшего Катаклизма, который видел человек, " -"со времён Всемирного Потопа и Ноя с его ковчегом." +"Каково диавола? Ты ничево не ведаешь ни о сём странном месте, ни о " +"нечестивой ворожбе, каковая извела тебе сюда. Имеючи токмо сии запасы, ты " +"должна найтить способ выжить в худшем катаклизме, каковой же узревал человек" +" с поры Потопа да ковчега Ноева." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -102022,9 +102645,9 @@ msgid "" "conducting science. Now that the world has ended, only one question " "remains: Can you undo the very Cataclysm you helped create?" msgstr "" -"Благодаря времени, проведённому в лаборатории, вы изучили основные методы " +"Благодаря времени, проведённому в лаборатории, ты изучил основные методы " "проведения экспериментов. Теперь настал конец света, и остался только один " -"вопрос: можете ли вы устранить Катаклизм, который вы помогли создать?" +"вопрос: сможешь ли ты устранить Катаклизм, который ты сам помог создать?" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -102039,9 +102662,9 @@ msgid "" "conducting science. Now that the world has ended, only one question " "remains: Can you undo the very Cataclysm you helped create?" msgstr "" -"Благодаря времени, проведённому в лаборатории, вы изучили основные методы " +"Благодаря времени, проведённому в лаборатории, ты изучила основные методы " "проведения экспериментов. Теперь настал конец света, и остался только один " -"вопрос: можете ли вы устранить Катаклизм, который вы помогли создать?" +"вопрос: сможешь ли ты устранить Катаклизм, который ты сама помогла создать?" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -102231,8 +102854,8 @@ msgid "" msgstr "" "Ты бросил учёбу лишь с одной целью: пойти в армию. И когда цель была " "достигнута, прямо во время тренировки в стране было объявлено чрезвычайное " -"положение. Судя по всему, военное командование решило оставить тебя в этой " -"дыре, после того как ты пропустил экстренные сборы." +"положение. Судя по всему, военное командование бросило тебя в этом аду, " +"когда ты пропустил экстренную эвакуацию." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -102250,8 +102873,8 @@ msgid "" msgstr "" "Ты бросила учёбу лишь с одной целью: пойти в армию. И когда цель была " "достигнута, прямо во время тренировки в стране было объявлено чрезвычайное " -"положение. Судя по всему, военное командование решило оставить тебя в этой " -"дыре, после того как ты пропустила экстренные сборы." +"положение. Судя по всему, военное командование бросило тебя в этом аду, " +"когда ты пропустила экстренную эвакуацию." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -102269,8 +102892,7 @@ msgid "" msgstr "" "Ты был лучшим из лучших в армии. Вот почему ты ещё жив даже тогда, когда " "твои товарищи превратились в нежить. Судя по всему, военное командование " -"решило оставить тебя в этой дыре, после того как ты пропустил экстренные " -"сборы." +"бросило тебя в этом аду, когда ты пропустил экстренную эвакуацию." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -102288,8 +102910,7 @@ msgid "" msgstr "" "Ты была лучшей из лучших в армии. Вот почему ты ещё жива даже тогда, когда " "твои товарищи превратились в нежить. Судя по всему, военное командование " -"решило оставить тебя в этой дыре, после того как ты пропустила экстренные " -"сборы." +"бросило тебя в этом аду, когда ты пропустила экстренную эвакуацию." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -102727,8 +103348,8 @@ msgid "" "of society has brought you to your current state of affairs; you now fight " "to simply stay alive." msgstr "" -"Вы — член элитного подразделения полиции, и ваши навыки боя на ближней " -"дистанции помогли вам выжить. К несчастью, падение общества привело к " +"Ты — член элитного подразделения полиции, и твои навыки рукопашного боя пока" +" что помогали тебе выжить. К несчастью, разрушение общества привело к " "текущему положению дел — надо драться, чтобы просто остаться в живых." #: lang/json/professions_from_json.py @@ -102745,8 +103366,8 @@ msgid "" "of society has brought you to your current state of affairs; you now fight " "to simply stay alive." msgstr "" -"Вы — член элитного подразделения полиции, и ваши навыки боя на ближней " -"дистанции помогли вам выжить. К несчастью, падение общества привело к " +"Ты — член элитного подразделения полиции, и твои навыки рукопашного боя пока" +" что помогали тебе выжить. К несчастью, разрушение общества привело к " "текущему положению дел — надо драться, чтобы просто остаться в живых." #: lang/json/professions_from_json.py @@ -102763,9 +103384,9 @@ msgid "" "the line, and you can't afford to miss if you don't want to end up as " "something's dinner." msgstr "" -"Ваши навыки снайпера отлично помогали вам на службе, помогая защищать " +"Твои навыки снайпера отлично помогали тебе на службе, помогая защищать " "невиновных с помощью одной точно выпущенной пули. Теперь на первом месте " -"стоит выживание, и вы не можете позволить себе промахнуться, если не хотите " +"стоит выживание, и ты не можешь позволить себе промахнуться, если не хочешь " "оказаться чьим-нибудь ужином." #: lang/json/professions_from_json.py @@ -102782,9 +103403,9 @@ msgid "" "the line, and you can't afford to miss if you don't want to end up as " "something's dinner." msgstr "" -"Ваши навыки снайпера отлично помогали вам на службе, помогая защищать " +"Твои навыки снайпера отлично помогали тебе на службе, помогая защищать " "невиновных с помощью одной точно выпущенной пули. Теперь на первом месте " -"стоит выживание, и вы не можете позволить себе промахнуться, если не хотите " +"стоит выживание, и ты не можешь позволить себе промахнуться, если не хочешь " "оказаться чьим-нибудь ужином." #: lang/json/professions_from_json.py @@ -102802,9 +103423,9 @@ msgid "" " that you got away in one piece, and the worst is yet to come." msgstr "" "Беспорядки и бунты были жестокими, и это ещё до того, как мёртвые встали и " -"начали пожирать живых. Скоро стало ясно, что строй, который вы держали, " -"скоро будет прорван, и только при помощи удачи и кучи проломленных черепов " -"вам удалось выбраться живым, а худшее было ещё впереди." +"начали пожирать живых. Скоро стало ясно, что твой строй вот-вот прорвётся, и" +" тебе удалось выбраться живым только при помощи удачи и кучи проломленных " +"черепов. А худшее всё ещё впереди." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -102821,9 +103442,9 @@ msgid "" " that you got away in one piece, and the worst is yet to come." msgstr "" "Беспорядки и бунты были жестокими, и это ещё до того, как мёртвые встали и " -"начали пожирать живых. Скоро стало ясно, что строй, который вы держали, " -"скоро будет прорван, и только при помощи удачи и кучи проломленных черепов " -"вам удалось выбраться живым, а худшее было ещё впереди." +"начали пожирать живых. Скоро стало ясно, что твой строй вот-вот прорвётся, и" +" тебе удалось выбраться живой только при помощи удачи и кучи проломленных " +"черепов. А худшее всё ещё впереди." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -102913,10 +103534,10 @@ msgid "" "nothing you'd want at your side more than your trusty crossbow. So when it " "did, you made sure to bring it along." msgstr "" -"С самого детства вы любили охоту, и вскоре выбор пал на охоту с арбалетом. " -"Если бы случился конец света, вам ничего бы хотелось на своей стороне больше" -" вашего верного арбалета. И когда это всё-таки произошло, вы снова " -"убедились, что не зря взяли его с собой." +"С самого детства ты любил охоту, и вскоре выбор пал на охоту с арбалетом. " +"Поэтому, если бы миру пришёл конец, ты бы ничего не хотел так сильно, как " +"иметь свой верный арбалет при себе. Так что, когда это всё-таки произошло, " +"ты убедился, что захватил его с собой." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -102932,10 +103553,10 @@ msgid "" "nothing you'd want at your side more than your trusty crossbow. So when it " "did, you made sure to bring it along." msgstr "" -"С самого детства вы любили охоту, и вскоре выбор пал на охоту с арбалетом. " -"Если бы случился конец света, вам ничего бы хотелось на своей стороне больше" -" вашего верного арбалета. И когда это всё-таки произошло, вы снова " -"убедились, что не зря взяли его с собой." +"С самого детства ты любила охоту, и вскоре выбор пал на охоту с арбалетом. " +"Поэтому, если бы миру пришёл конец, ты бы ничего не хотела так сильно, как " +"иметь свой верный арбалет при себе. Так что, когда это всё-таки произошло, " +"ты убедилась, что захватила его с собой." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -102951,10 +103572,10 @@ msgid "" "nothing you'd want at your side more than your trusty shotgun. So when it " "did, you made sure to bring it along." msgstr "" -"С самого детства вы любили охоту, и вскоре выбор пал на охоту с дробовиком. " -"Если бы случился конец света, вам ничего бы хотелось на своей стороне больше" -" вашего верного дробовика. И когда это всё-таки произошло, вы снова " -"убедились, что не зря взяли его с собой." +"С самого детства ты любил охоту, и вскоре выбор пал на охоту с дробовиком. " +"Поэтому, если бы миру пришёл конец, ты бы ничего не хотел так сильно, как " +"иметь свой верный дробовик при себе. Так что, когда это всё-таки произошло, " +"ты убедился, что захватил его с собой." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -102970,10 +103591,10 @@ msgid "" "nothing you'd want at your side more than your trusty shotgun. So when it " "did, you made sure to bring it along." msgstr "" -"С самого детства вы любили охоту, и вскоре выбор пал на охоту с дробовиком. " -"Если бы случился конец света, вам ничего бы хотелось на своей стороне больше" -" вашего верного дробовика. И когда это всё-таки произошло, вы снова " -"убедились, что не зря взяли его с собой." +"С самого детства ты любила охоту, и вскоре выбор пал на охоту с дробовиком. " +"Поэтому, если бы миру пришёл конец, ты бы ничего не хотела так сильно, как " +"иметь свой верный дробовик при себе. Так что, когда это всё-таки произошло, " +"ты убедилась, что захватила его с собой." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -102989,10 +103610,10 @@ msgid "" "nothing you'd want at your side more than your trusty rifle. So when it " "did, you made sure to bring it along." msgstr "" -"С самого детства вы любили охоту, и вскоре выбор пал на охоту с винтовкой. " -"Если бы случился конец света, вам ничего бы хотелось на своей стороне больше" -" вашей верной винтовки. И когда это всё-таки произошло, вы снова убедились, " -"что не зря взяли его с собой." +"С самого детства ты любил охоту, и вскоре выбор пал на охоту с винтовкой. " +"Поэтому, если бы миру пришёл конец, ты бы ничего не хотел так сильно, как " +"иметь свою верную винтовку при себе. Так что, когда это всё-таки произошло, " +"ты убедился, что захватил её с собой." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -103008,10 +103629,10 @@ msgid "" "nothing you'd want at your side more than your trusty rifle. So when it " "did, you made sure to bring it along." msgstr "" -"С самого детства вы любили охоту, и вскоре выбор пал на охоту с винтовкой. " -"Если бы случился конец света, вам ничего бы хотелось на своей стороне больше" -" вашей верной винтовки. И когда это всё-таки произошло, вы снова убедились, " -"что не зря взяли его с собой." +"С самого детства ты любила охоту, и вскоре выбор пал на охоту с винтовкой. " +"Поэтому, если бы миру пришёл конец, ты бы ничего не хотела так сильно, как " +"иметь свою верную винтовку при себе. Так что, когда это всё-таки произошло, " +"ты убедилась, что захватила её с собой." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -103196,9 +103817,9 @@ msgid "" " skills in an area that seem, on the face of it, distinctly less-than-useful" " when the world has ended. Unless you manage to find a military mainframe." msgstr "" -"Таблетки с кофеином и ночи перед монитором дали вам навыки в области, " +"Кофеиновые таблетки и ночи перед монитором дали тебе навыки в области, " "которая, на первый взгляд, кажется бесполезной после Катаклизма. Если только" -" вам не удастся найти военный суперкомпьютер." +" тебе не удастся найти военный суперкомпьютер." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -103213,9 +103834,9 @@ msgid "" " skills in an area that seem, on the face of it, distinctly less-than-useful" " when the world has ended. Unless you manage to find a military mainframe." msgstr "" -"Таблетки с кофеином и ночи перед монитором дали вам навыки в области, " +"Кофеиновые таблетки и ночи перед монитором дали тебе навыки в области, " "которая, на первый взгляд, кажется бесполезной после Катаклизма. Если только" -" вам не удастся найти военный суперкомпьютер." +" тебе не удастся найти военный суперкомпьютер." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -103265,7 +103886,7 @@ msgid "" " ever... a towel." msgstr "" "Когда настал Катаклизм, ты принимал приятный горячий душ! Тебе едва удалось " -"выбежать с каким-то мылом и самой наиполезнейшей вещью на земле… полотенцем." +"выбежать с куском мыла и самой наиполезнейшей вещью на земле… полотенцем." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -103281,8 +103902,7 @@ msgid "" " ever... a towel." msgstr "" "Когда настал Катаклизм, ты принимала приятный горячий душ! Тебе едва удалось" -" выбежать с каким-то мылом и самой наиполезнейшей вещью на земле… " -"полотенцем." +" выбежать с куском мыла и самой наиполезнейшей вещью на земле… полотенцем." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -103460,7 +104080,7 @@ msgid "" "You were a human guinea pig, used by laboratory technicians to understand " "the immense power of mutation." msgstr "" -"Вы выполняли роль морской свинки, на которой лабораторные техники изучали " +"Ты был подопытным кроликом, на котором лабораторные техники изучали " "безмерную силу мутаций." #: lang/json/professions_from_json.py @@ -103475,7 +104095,7 @@ msgid "" "You were a human guinea pig, used by laboratory technicians to understand " "the immense power of mutation." msgstr "" -"Вы выполняли роль морской свинки, на которой лабораторные техники изучали " +"Ты была подопытным кроликом, на котором лабораторные техники изучали " "безмерную силу мутаций." #: lang/json/professions_from_json.py @@ -103525,10 +104145,10 @@ msgid "" "stripped away every outward sign of your humanity. You're more machine than" " man now, but that might prove an advantage against the horrors that await." msgstr "" -"Когда-то вы были нормальным. До тестов, до процедур, до того, как они " -"уничтожили все внешние признаки вашей человечности. Теперь вы больше машина," +"Когда-то ты был нормальным. До обследований, до процедур, до того, как они " +"уничтожили все внешние признаки твоей человечности. Теперь ты больше машина," " чем человек, но это может оказаться преимуществом перед теми ужасами, " -"которые ещё впереди." +"которые тебя ждут." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -103543,10 +104163,10 @@ msgid "" "stripped away every outward sign of your humanity. You're more machine than" " man now, but that might prove an advantage against the horrors that await." msgstr "" -"Когда-то вы были нормальной. До тестов, до процедур, до того, как они " -"уничтожили все внешние признаки вашей человечности. Теперь вы больше машина," +"Когда-то ты была нормальной. До обследований, до процедур, до того, как они " +"уничтожили все внешние признаки твоей человечности. Теперь ты больше машина," " чем человек, но это может оказаться преимуществом перед теми ужасами, " -"которые ещё впереди." +"которые тебя ждут." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -103875,9 +104495,9 @@ msgid "" "but are filled with broken bionics. At least your ethanol power supply " "still works." msgstr "" -"Твоё тело полно сломанных бионических модулей. Помимо этого у тебя есть " -"аккумуляторы большой ёмкости и по-прежнему работает генератор энергии из " -"этанола." +"Твоё тело - свалка из бионических модулей. У твоих аккумуляторов большая " +"ёмкость, но в тебе полно неисправных бионических частей. По крайней мере, " +"твой этаноловый энергогенератор всё ещё работает." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -103892,9 +104512,9 @@ msgid "" "but are filled with broken bionics. At least your ethanol power supply " "still works." msgstr "" -"Твоё тело полно сломанных бионических модулей. Помимо этого у тебя есть " -"аккумуляторы большой ёмкости и по-прежнему работает генератор энергии из " -"этанола." +"Твоё тело - свалка из бионических модулей. У твоих аккумуляторов большая " +"ёмкость, но в тебе полно неисправных бионических частей. По крайней мере, " +"твой этаноловый энергогенератор всё ещё работает." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -104366,8 +104986,8 @@ msgid "" "You thought this would be your lucky break. Does it count as breaking and " "entering if everyone in town is undead?" msgstr "" -"Вы думали, что это мог бы быть ваш счастливый взлом. Можно ли считать " -"взломом проникновение в дом, если все в городе превратились в нежить?" +"Ты думал, это мог бы быть твой счастливый взлом. Можно ли считать взломом " +"проникновение в дом, если все в городе превратились в нежить?" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -104381,8 +105001,8 @@ msgid "" "You thought this would be your lucky break. Does it count as breaking and " "entering if everyone in town is undead?" msgstr "" -"Вы думали, что это мог бы быть ваш счастливый взлом. Можно ли считать " -"взломом проникновение в дом, если все в городе превратились в нежить?" +"Ты думала, это мог бы быть твой счастливый взлом. Можно ли считать взломом " +"проникновение в дом, если все в городе превратились в нежить?" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -104475,10 +105095,10 @@ msgid "" " forced to hide in the shadows, you find in this new desolation a world " "where even a creature such as yourself might find its niche." msgstr "" -"Полностью поддавшись вызванному бионикой психозу, ты стал уродливым " -"постчеловеческим монстром, которому не было места в обществе. Но теперь, там" -" где некогда ты был вынужден скрываться в тени, ты обнаружил этот новый " -"опустошённый мир, где даже такое существо как ты, может найти свою нишу." +"Полностью поддавшись бионическому психозу, ты стал уродливым " +"постчеловеческим монстром, которому нет места в обществе. Раньше ты был " +"вынужден скрываться в тенях, но теперь ты видишь в новой катастрофе целый " +"мир, где есть ниша даже для такого существа, как ты." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -104494,10 +105114,10 @@ msgid "" " forced to hide in the shadows, you find in this new desolation a world " "where even a creature such as yourself might find its niche." msgstr "" -"Полностью поддавшись вызванному бионикой психозу, ты стала уродливым " -"постчеловеческим монстром, которому не было места в обществе. Но теперь, там" -" где некогда ты была вынуждена скрываться в тени, ты обнаружила этот новый " -"опустошённый мир, где даже такое существо как ты, может найти свою нишу." +"Полностью поддавшись бионическому психозу, ты стала уродливым " +"постчеловеческим монстром, которому нет места в обществе. Раньше ты была " +"вынуждена скрываться в тенях, но теперь ты видишь в новой катастрофе целый " +"мир, где есть ниша даже для такого существа, как ты." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -104543,9 +105163,9 @@ msgid "" " are all dead, you should probably find something more tangible to protect " "you." msgstr "" -"Когда начался апокалипсис, вы делали всё возможное, чтобы защитить свой " +"Когда начался апокалипсис, ты сделал всё возможное, чтобы защитить свой " "приход, но, похоже, молитв оказалось недостаточно. Теперь все прихожане " -"мертвы, и вам бы не помешало найти что-нибудь более существенное для своей " +"мертвы, и тебе бы не помешало найти что-нибудь более существенное для своей " "защиты." #: lang/json/professions_from_json.py @@ -104562,9 +105182,9 @@ msgid "" " are all dead, you should probably find something more tangible to protect " "you." msgstr "" -"Когда начался апокалипсис, вы делали всё возможное, чтобы защитить свой " +"Когда начался апокалипсис, ты сделала всё возможное, чтобы защитить свой " "приход, но, похоже, молитв оказалось недостаточно. Теперь все прихожане " -"мертвы, и вам бы не помешало найти что-нибудь более существенное для своей " +"мертвы, и тебе бы не помешало найти что-нибудь более существенное для своей " "защиты." #: lang/json/professions_from_json.py @@ -104717,9 +105337,9 @@ msgid "" "host your daily podcast and the undead listening to your sermons don't seem " "particularly moved." msgstr "" -"Вы посвятили свою жизнь распространению доброго слова, всегда в дороге, " -"путешествуя из города в город. Теперь всё пошло к чёрту и вы не можете вести" -" свои ежедневные проповеди, а нежить, слушая ваши проповеди, не кажется " +"Ты посвятил свою жизнь распространению доброго слова, всегда в дороге, " +"путешествуя из города в город. Теперь всё пошло к чёрту, и ты не можешь " +"вести ежедневный подкаст, а нежить, слушая твои проповеди, не кажется " "особенно тронутой." #: lang/json/professions_from_json.py @@ -104736,9 +105356,9 @@ msgid "" "host your daily podcast and the undead listening to your sermons don't seem " "particularly moved." msgstr "" -"Вы посвятили свою жизнь распространению доброго слова, всегда в дороге, " -"путешествуя из города в город. Теперь всё пошло к чёрту и вы не можете вести" -" свои ежедневные проповеди, а нежить, слушая ваши проповеди, не кажется " +"Ты посвятила свою жизнь распространению доброго слова, всегда в дороге, " +"путешествуя из города в город. Теперь всё пошло к чёрту, и ты не можешь " +"вести ежедневный подкаст, а нежить, слушая твои проповеди, не кажется " "особенно тронутой." #: lang/json/professions_from_json.py @@ -104843,8 +105463,8 @@ msgid "" "You were training for the fight of your life before the Cataclysm struck. " "Now you fight just to keep yourself alive." msgstr "" -"Вы тренировались ради сражения всей своей жизни до того, как грянул " -"Катаклизм. Теперь вы сражаетесь только чтобы остаться в живых." +"Ты готовился к сражению всей своей жизни до того, как грянул Катаклизм. " +"Теперь ты сражаешься, чтобы просто остаться в живых." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -104858,8 +105478,8 @@ msgid "" "You were training for the fight of your life before the Cataclysm struck. " "Now you fight just to keep yourself alive." msgstr "" -"Вы тренировались ради сражения всей своей жизни до того, как грянул " -"Катаклизм. Теперь вы сражаетесь только чтобы остаться в живых." +"Ты готовилась к сражению всей своей жизни до того, как грянул Катаклизм. " +"Теперь ты сражаешься, чтобы просто остаться в живых." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105052,10 +105672,9 @@ msgid "" "your best efforts you did not manage to meet up with them before all " "communications ceased and you found yourself alone amongst the dead." msgstr "" -"Ваше подразделение национальной гвардии было сформировано когда разразилась " -"эпидемия. Несмотря на все усилия, тебе не удалось присоединиться к нему до " -"того, как все коммуникации прекратились, и ты оказался в одиночестве среди " -"мёртвых." +"Твоё подразделение Национальной гвардии подняли, когда разразилась эпидемия." +" Несмотря на все усилия, тебе не удалось присоединиться к нему до того, как " +"вся связь оборвалась, а ты оказался в одиночестве среди мертвецов." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105070,10 +105689,9 @@ msgid "" "your best efforts you did not manage to meet up with them before all " "communications ceased and you found yourself alone amongst the dead." msgstr "" -"Ваше подразделение национальной гвардии было сформировано когда разразилась " -"эпидемия. Несмотря на все усилия, тебе не удалось присоединиться к нему до " -"того, как все коммуникации прекратились, и ты оказалась в одиночестве среди " -"мёртвых." +"Твоё подразделение Национальной гвардии подняли, когда разразилась эпидемия." +" Несмотря на все усилия, тебе не удалось присоединиться к нему до того, как " +"вся связь оборвалась, а ты оказалась в одиночестве среди мертвецов." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105157,8 +105775,8 @@ msgid "" "command and find yourself in this predicament. The only mission left now is" " to survive." msgstr "" -"Похоже, вы уделяли достаточно внимания обучению выживанию в учебном лагере, " -"иначе бы не смогли пережить цепь командования и оказаться в вашем положении." +"Похоже, ты уделял достаточно внимания обучению выживанию в учебном лагере, " +"иначе бы ты не смог пережить своих командиров и оказаться в таком положении." " Единственная цель — выжить." #: lang/json/professions_from_json.py @@ -105175,9 +105793,9 @@ msgid "" "command and find yourself in this predicament. The only mission left now is" " to survive." msgstr "" -"Похоже, вы уделяли достаточно внимания обучению выживанию в учебном лагере, " -"иначе бы не смогли пережить цепь командования и оказаться в вашем положении." -" Единственная цель — выжить." +"Похоже, ты уделяла достаточно внимания обучению выживанию в учебном лагере, " +"иначе бы ты не смогла пережить своих командиров и оказаться в таком " +"положении. Единственная цель — выжить." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105193,9 +105811,9 @@ msgid "" "situation is dire. You've been reduced to a scavenger, living off the " "corpse of the old world." msgstr "" -"Вы жили на своих колёсах первые несколько месяцев апокалипсиса, но сейчас " -"ваша машина потеряна в водовороте аварий, патронов осталось мало и, вообще, " -"все печально. Вы превратились в падальщика, живущего на костях старого мира." +"Ты жил на своих колёсах первые несколько месяцев апокалипсиса, но сейчас " +"твоя машина потеряна в водовороте аварий, патронов осталось мало, и вообще " +"всё печально. Ты превратился в падальщика, живущего на костях старого мира." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105211,9 +105829,9 @@ msgid "" "situation is dire. You've been reduced to a scavenger, living off the " "corpse of the old world." msgstr "" -"Вы жили на своих колёсах первые несколько месяцев апокалипсиса, но сейчас " -"ваша машина потеряна в водовороте аварий, патронов осталось мало и, вообще, " -"всё печально. Вы превратились в падальщицу, живущую на костях старого мира." +"Ты жила на своих колёсах первые несколько месяцев апокалипсиса, но сейчас " +"твоя машина потеряна в водовороте аварий, патронов осталось мало, и вообще " +"всё печально. Ты превратилась в падальщика, живущего на костях старого мира." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105227,8 +105845,8 @@ msgid "" "If the human race is to survive, the threats facing its existence must be " "eliminated, no matter the cost. If it's hostile, you kill it." msgstr "" -"Чтобы человеческая раса выжила, необходимо устранить угрозы её существования" -" невзирая ни на что. Если это враг, вы убиваете его." +"Для выживания человеческой расы необходимо любой ценой устранить угрозы её " +"существованию. Если что-то враждебно, ты убиваешь его." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105242,13 +105860,13 @@ msgid "" "If the human race is to survive, the threats facing its existence must be " "eliminated, no matter the cost. If it's hostile, you kill it." msgstr "" -"Чтобы человеческая раса выжила, необходимо устранить угрозы её существования" -" невзирая ни на что. Если это враг, вы убиваете его." +"Для выживания человеческой расы необходимо любой ценой устранить угрозы её " +"существованию. Если что-то враждебно, ты убиваешь его." #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Veteran Bandit" -msgstr "Бандит-Ветеран" +msgstr "Бандит ветеран" #. ~ Profession (male Veteran Bandit) description #: lang/json/professions_from_json.py @@ -105259,15 +105877,15 @@ msgid "" "nightmare. Only those mobile enough to scavenge or brutal enough to pillage" " would survive. You are one of the latter." msgstr "" -"В итоге города взорвались вихрем грабежа и волнами страха. Люди начали " -"пожирать людей. На дорогах был абсолютный кошмар. Выживут только те, кто " -"копается в мусоре или достаточно жесток, чтобы грабить. Вы один из " -"последних." +"После взрыва городов разразился вихрь мародёрства; огненная буря страха. " +"Люди начали пожирать людей. На дорогах был абсолютный кошмар. Выживут только" +" те, кто копается в мусоре или достаточно жесток, чтобы грабить. Ты " +"принадлежишь ко вторым." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Veteran Bandit" -msgstr "Бандитка Ветеран" +msgstr "Бандитка ветеран" #. ~ Profession (female Veteran Bandit) description #: lang/json/professions_from_json.py @@ -105278,10 +105896,10 @@ msgid "" "nightmare. Only those mobile enough to scavenge or brutal enough to pillage" " would survive. You are one of the latter." msgstr "" -"В итоге города взорвались вихрем грабежа и волнами страха. Люди начали " -"пожирать людей. На дорогах был абсолютный кошмар. Выживут только те, кто " -"копается в мусоре или достаточно жесток, чтобы грабить. Вы одна из " -"последних." +"После взрыва городов разразился вихрь мародёрства; огненная буря страха. " +"Люди начали пожирать людей. На дорогах был абсолютный кошмар. Выживут только" +" те, кто копается в мусоре или достаточно жесток, чтобы грабить. Ты " +"принадлежишь ко вторым." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105303,7 +105921,7 @@ msgstr "" #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Mall Security" -msgstr "Охранник ТЦ" +msgstr "Охранница ТЦ" #. ~ Profession (female Mall Security) description #: lang/json/professions_from_json.py @@ -105466,9 +106084,9 @@ msgid "" "newsbots and pizza delivery drones. Now all the drones carry guns instead " "of pizza." msgstr "" -"Ваша работа состояла в программировании машин, таких как автодворники, " -"новостные боты и дроны доставки пиццы. Теперь все эти дроны носят оружие, а " -"не пиццу." +"Твоя работа состояла в программировании машин - автодворников, новостных " +"ботов и дронов доставки пиццы. Теперь все эти дроны носят оружие, а не " +"пиццу." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105483,9 +106101,9 @@ msgid "" "newsbots and pizza delivery drones. Now all the drones carry guns instead " "of pizza." msgstr "" -"Ваша работа состояла в программировании машин, таких как автодворники, " -"новостные боты и дроны доставки пиццы. Теперь все эти дроны носят оружие, а " -"не пиццу." +"Твоя работа состояла в программировании машин - автодворников, новостных " +"ботов и дронов доставки пиццы. Теперь все эти дроны носят оружие, а не " +"пиццу." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105499,8 +106117,8 @@ msgid "" "You love to skate! At least now the grown-ups aren't telling you where you " "can't roll." msgstr "" -"Вы любите кататься на коньках! Хорошо хоть взрослые теперь не могут " -"запретить вам кататься." +"Ты любишь кататься на коньках! По крайней мере, теперь взрослые не запретят " +"тебе кататься, где хочется." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105514,13 +106132,13 @@ msgid "" "You love to skate! At least now the grown-ups aren't telling you where you " "can't roll." msgstr "" -"Вы любите кататься на коньках! Хорошо хоть взрослые теперь не могут " -"запретить вам кататься." +"Ты любишь кататься на коньках! По крайней мере, теперь взрослые не запретят " +"тебе кататься, где хочется." #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Juvenile Delinquent" -msgstr "Малолетний Преступник" +msgstr "Малолетний преступник" #. ~ Profession (male Juvenile Delinquent) description #: lang/json/professions_from_json.py @@ -105531,16 +106149,16 @@ msgid "" "needing grown-ups to tell you what to do is the only reason you're alive. " "Man, you really should've played hooky today." msgstr "" -"Вам всегда было наплевать на взрослых, которые говорили вам, что делать, и " -"именно поэтому вы проводили кучу времени в кабинете директора. И сейчас " -"отсутствие необходимости во взрослых, говорящих вам, что нужно делать, — это" -" единственная причина, по которой вы ещё живы. Чёрт побери, сегодня тебе " -"точно нужно было прогулять уроки." +"Тебе всегда было наплевать на взрослых, которые говорили тебе, что делать, и" +" именно поэтому ты проводил кучу времени в кабинете директора. Сейчас " +"отсутствие необходимости во взрослых, говорящих тебе, что нужно делать, — " +"единственная причина, по которой ты ещё жив. Чёрт побери, сегодня тебе точно" +" нужно было прогулять уроки." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Juvenile Delinquent" -msgstr "Малолетняя Преступница" +msgstr "Малолетняя преступница" #. ~ Profession (female Juvenile Delinquent) description #: lang/json/professions_from_json.py @@ -105551,10 +106169,10 @@ msgid "" "needing grown-ups to tell you what to do is the only reason you're alive. " "Man, you really should've played hooky today." msgstr "" -"Вам всегда было наплевать на взрослых, которые говорили вам, что делать, и " -"именно поэтому вы проводили кучу времени в кабинете директора. И сейчас " -"отсутствие необходимости во взрослых, говорящих вам, что нужно делать, — это" -" единственная причина, по которой вы ещё живы. Чёрт побери, сегодня тебе " +"Тебе всегда было наплевать на взрослых, которые говорили тебе, что делать, и" +" именно поэтому ты проводила кучу времени в кабинете директора. Сейчас " +"отсутствие необходимости во взрослых, говорящих тебе, что нужно делать, — " +"единственная причина, по которой ты ещё жива. Чёрт побери, сегодня тебе " "точно нужно было прогулять уроки." #: lang/json/professions_from_json.py @@ -105571,11 +106189,10 @@ msgid "" "didn't get a chance to thank them. The only thing you can do for them now " "is what they always hoped you would do in the dark days ahead: survive." msgstr "" -"Ваши родителями были сумасшедшими сурвивалистами, которые ожидали какого-" -"нибудь «Катаклизма», и поэтому настаивали на подготовке вас к нему. Похоже, " -"они были правы. У вас не было возможности поблагодарить их. Единственное, " -"что вы можете для них сделать — то, чего они ожидали от вас при наступлении " -"тёмных времён: выжить." +"Твои родители были сумасшедшими выживальщиками, ожидавшими какой-то " +"«Катаклизм», и настоятельно тебя к нему готовили. Похоже, они были правы. У " +"тебя не было возможности поблагодарить их. Ты можешь сделать для них только " +"то, чего они всегда ожидали от тебя при наступлении тёмных времён: выжить." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105591,11 +106208,10 @@ msgid "" "didn't get a chance to thank them. The only thing you can do for them now " "is what they always hoped you would do in the dark days ahead: survive." msgstr "" -"Ваши родителями были сумасшедшими сурвивалистами, которые ожидали какого-" -"нибудь «Катаклизма», и поэтому настаивали на подготовке вас к нему. Похоже, " -"они были правы. У вас не было возможности поблагодарить их. Единственное, " -"что вы можете для них сделать — то, чего они ожидали от вас при наступлении " -"тёмных времён: выжить." +"Твои родители были сумасшедшими выживальщиками, ожидавшими какой-то " +"«Катаклизм», и настоятельно тебя к нему готовили. Похоже, они были правы. У " +"тебя не было возможности поблагодарить их. Ты можешь сделать для них только " +"то, чего они всегда ожидали от тебя при наступлении тёмных времён: выжить." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105611,10 +106227,10 @@ msgid "" "anything. And now, you are facing the most dire test yet, and once again " "you had better succeed, or else." msgstr "" -"Ваши родители были так одержимы идеей о том, чтобы Вы сдавали абсолютно " -"любые тесты и испытания, что они оснастили вас бионикой, чтобы вы были умнее" -" и никогда ничего не забывали. А теперь вы столкнулись с самым тяжёлым " -"испытанием и ещё раз вам придётся быть лучше всех, чтобы выжить. Или нет." +"Твои родители были так одержимы идеей о том, чтобы ты сдавал на отлично " +"любые экзамены, что оборудовали тебя бионикой, чтобы ты был умнее и никогда " +"ничего не забывал. Теперь тебе предстоит самый трудный экзамен, и лучше бы " +"тебе снова преуспеть." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105630,10 +106246,10 @@ msgid "" "anything. And now, you are facing the most dire test yet, and once again " "you had better succeed, or else." msgstr "" -"Ваши родители были так одержимы идеей о том, чтобы Вы сдавали абсолютно " -"любые тесты и испытания, что они оснастили вас бионикой, чтобы вы были умнее" -" и никогда ничего не забывали. А теперь вы столкнулись с самым тяжёлым " -"испытанием и ещё раз вам придётся быть лучше всех, чтобы выжить. Или нет." +"Твои родители были так одержимы идеей о том, чтобы ты сдавала на отлично " +"любые экзамены, что оборудовали тебя бионикой, чтобы ты была умнее и никогда" +" ничего не забывала. Теперь тебе предстоит самый трудный экзамен, и лучше бы" +" тебе снова преуспеть." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105647,9 +106263,9 @@ msgid "" "You liked to play dodgeball, where failing to dodge the ball meant you were " "out. Now failing to dodge threatens your life. Don't slip up." msgstr "" -"Вы любили играть в вышибалы, где недостаточное умение уворачиваться от мяча " +"Ты любил играть в вышибалы, где недостаточное умение уворачиваться от мяча " "означало выбывание из игры. Теперь недостаточное умение уворачиваться " -"угрожает вашей жизни. Не оплошайте." +"угрожает твоей жизни. Не оплошай." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105663,9 +106279,9 @@ msgid "" "You liked to play dodgeball, where failing to dodge the ball meant you were " "out. Now failing to dodge threatens your life. Don't slip up." msgstr "" -"Вы любили играть в вышибалы, где недостаточное умение уворачиваться от мяча " +"Ты любил играть в вышибалы, где недостаточное умение уворачиваться от мяча " "означало выбывание из игры. Теперь недостаточное умение уворачиваться " -"угрожает вашей жизни. Не оплошайте." +"угрожает твоей жизни. Не оплошай." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105716,9 +106332,9 @@ msgid "" "can use your technical skills to help stay alive. You just haven't figured " "out how to make an awesome death ray yet." msgstr "" -"Вы были членом школьного кружка по электронике. Вы уверены, что ваши " -"технические навыки помогут вам выжить. Вы пока просто не разобрались, как же" -" собрать этот крутой луч смерти." +"Ты был членом школьного кружка по электронике. Ты уверен, что твои " +"технические навыки как-нибудь помогут тебе выжить. Ты пока просто не " +"разобрался, как же собрать этот крутой луч смерти." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105733,9 +106349,9 @@ msgid "" "can use your technical skills to help stay alive. You just haven't figured " "out how to make an awesome death ray yet." msgstr "" -"Вы были членом школьного кружка по электронике. Вы уверены, что ваши " -"технические навыки помогут вам выжить. Вы пока просто не разобрались, как же" -" собрать этот крутой луч смерти." +"Ты была членом школьного кружка по электронике. Ты уверена, что твои " +"технические навыки как-нибудь помогут тебе выжить. Ты пока просто не " +"разобралась, как же собрать этот крутой луч смерти." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105750,13 +106366,13 @@ msgid "" "listened to your teachings. However, the dead won't write out lines for " "eating you alive." msgstr "" -"Вы учили детей всю вашу жизнь, и по большей части они внимали вашим словам. " +"Ты учил детей всю свою жизнь, и по большей части они внимали твоим словам. " "Однако мёртвых не нужно учить, как пожирать людей заживо." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Teacher" -msgstr "Учитель" +msgstr "Учительница" #. ~ Profession (female Teacher) description #: lang/json/professions_from_json.py @@ -105766,7 +106382,7 @@ msgid "" "listened to your teachings. However, the dead won't write out lines for " "eating you alive." msgstr "" -"Вы учили детей всю вашу жизнь, и по большей части они внимали вашим словам. " +"Ты учила детей всю свою жизнь, и по большей части они внимали твоим словам. " "Однако мёртвых не нужно учить, как пожирать людей заживо." #: lang/json/professions_from_json.py @@ -105783,10 +106399,10 @@ msgid "" "seems more difficult a prospect than usual. You managed to hold onto your " "camera, hopefully you can get some fantastic shots." msgstr "" -"Ты был независимым фотожурналистом. У тебя появился шанс быть первым, кто " +"Ты была независимым фотожурналистом. У тебя появился шанс быть первым, кто " "запечатлит апокалипсис, хотя найти издателя стало намного труднее, чем " -"обычно. Вы привыкли полагаться на свою камеру в надежде получить несколько " -"фантастических снимков." +"обычно. Ты сумел прихватить с собой свою камеру, наверняка получится сделать" +" несколько фантастических снимков." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105802,10 +106418,10 @@ msgid "" "seems more difficult a prospect than usual. You managed to hold onto your " "camera, hopefully you can get some fantastic shots." msgstr "" -"Ты был независимым фотожурналистом. У тебя появился шанс быть первым, кто " +"Ты была независимой фотожурналисткой. У тебя появился шанс быть первой, кто " "запечатлит апокалипсис, хотя найти издателя стало намного труднее, чем " -"обычно. Вы привыкли полагаться на свою камеру в надежде получить несколько " -"фантастических снимков." +"обычно. Ты сумела прихватить с собой свою камеру, наверняка получится " +"сделать несколько фантастических снимков." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105819,8 +106435,8 @@ msgid "" "After a career of teaching kids the art of sports they mostly hate, the " "zombies around you refuse to do laps, even at the blow of your whistle." msgstr "" -"После карьеры преподавания физкультуры детям, зомби, в основном на почве " -"ненависти, отказываются бегать вокруг вас, даже под свистком." +"Ты учил детей видам спорта, которые те в основном ненавидели, но зомби " +"отказываются бегать по кругу даже по свистку." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105834,8 +106450,8 @@ msgid "" "After a career of teaching kids the art of sports they mostly hate, the " "zombies around you refuse to do laps, even at the blow of your whistle." msgstr "" -"После карьеры преподавания физкультуры детям, зомби, в основном на почве " -"ненависти, отказываются бегать вокруг вас, даже под свистком." +"Ты учила детей видам спорта, которые те в основном ненавидели, но зомби " +"отказываются бегать по кругу даже по свистку." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105851,10 +106467,10 @@ msgid "" "sounded. The world may be ruined, but you're prepared to make a home " "wherever you may find yourself." msgstr "" -"Вы любили пешие походы в дикой природе до того, как всё полетело в " -"тартарары, поэтому вы без раздумий схватили свою сумку и побежали сразу же, " -"как зазвучали сирены. Мир, возможно, и разрушился, но вы готовы сделать " -"любое подходящее место своим новым домом." +"Ты любил пешие походы в дикой природе до того, как всё полетело в тартарары," +" поэтому ты без раздумий схватил свою сумку и убежал сразу же, как зазвучали" +" сирены. Возможно, мир уничтожен, но ты готов сделать любое подходящее место" +" своим новым домом." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105870,10 +106486,10 @@ msgid "" "sounded. The world may be ruined, but you're prepared to make a home " "wherever you may find yourself." msgstr "" -"Вы любили пешие походы в дикой природе до того, как всё полетело в " -"тартарары, поэтому вы без раздумий схватили свою сумку и побежали сразу же, " -"как зазвучали сирены. Мир, возможно, и разрушился, но вы готовы сделать " -"любое подходящее место своим новым домом." +"Ты любила пешие походы в дикой природе до того, как всё полетело в " +"тартарары, поэтому ты без раздумий схватила свою сумку и убежала сразу же, " +"как зазвучали сирены. Возможно, мир уничтожен, но ты готова сделать любое " +"подходящее место своим новым домом." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105887,9 +106503,8 @@ msgid "" "You're a miner, not a minor! Your canteen is dry, your jackhammer is out of" " gas, and you're on your last pair of batteries for your mining helmet..." msgstr "" -"Вы — суровый шахтёр. Ваша фляжка опустела, в отбойном молотке закончился " -"бензин, а в вашей шахтёрской каске с фонариком батарейки уже дышат на " -"ладан..." +"Ты — суровый шахтёр. Твоя фляжка опустела, в отбойном молотке закончился " +"бензин, а батарейки в шахтёрской каске уже дышат на ладан..." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105903,9 +106518,8 @@ msgid "" "You're a miner, not a minor! Your canteen is dry, your jackhammer is out of" " gas, and you're on your last pair of batteries for your mining helmet..." msgstr "" -"Вы — суровая шахтёрка. Ваша фляжка опустела, в отбойном молотке закончился " -"бензин, а в вашей шахтёрской каске с фонариком батарейки уже дышат на " -"ладан..." +"Ты — суровая шахтёрка. Твоя фляжка опустела, в отбойном молотке закончился " +"бензин, а батарейки в шахтёрской каске уже дышат на ладан..." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105920,10 +106534,9 @@ msgid "" " It wouldn't be a lie to say that running is your life. Which is good, " "because now that the end has come, you're running for your life." msgstr "" -"Вы занимались паркуром много лет и сделали весь мир своей игровой площадкой." -" Не будет прегрешением перед истиной сказать, что бег - это ваша жизнь. И " -"это хорошо, так как настал конец света, и теперь вы бегаете, чтобы спасти " -"свою жизнь." +"Ты занимался паркуром много лет и сделал весь мир своей игровой площадкой. " +"Не будет преувеличением сказать, что бег - это твоя жизнь. И это хорошо, так" +" как настал конец света, и теперь ты бежишь, чтобы спасти свою жизнь." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -105938,10 +106551,9 @@ msgid "" " It wouldn't be a lie to say that running is your life. Which is good, " "because now that the end has come, you're running for your life." msgstr "" -"Вы занимались паркуром много лет и сделали весь мир своей игровой площадкой." -" Не будет прегрешением перед истиной сказать, что бег - это ваша жизнь. И " -"это хорошо, так как настал конец света, и теперь вы бегаете, чтобы спасти " -"свою жизнь." +"Ты занималась паркуром много лет и сделала весь мир своей игровой площадкой." +" Не будет преувеличением сказать, что бег - это твоя жизнь. И это хорошо, " +"так как настал конец света, и теперь ты бежишь, чтобы спасти свою жизнь." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105955,13 +106567,13 @@ msgid "" "You came here to get a taste of New England; Now you hope New England won't " "get a taste of you!" msgstr "" -"Вы прибыли сюда с целью ощутить вкус Новой Англии. Теперь вы надеетесь, что " -"Новая Англия не попробует вас на вкус." +"Ты прибыл сюда, чтобы попробовать Новую Англию на вкус. Теперь ты надеешься," +" что Новая Англия не попробует на вкус тебя!" #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Tourist" -msgstr "Турист" +msgstr "Туристка" #. ~ Profession (female Tourist) description #: lang/json/professions_from_json.py @@ -105970,8 +106582,8 @@ msgid "" "You came here to get a taste of New England; Now you hope New England won't " "get a taste of you!" msgstr "" -"Вы прибыли сюда с целью ощутить вкус Новой Англии. Теперь вы надеетесь, что " -"Новая Англия не попробует вас на вкус." +"Ты прибыла сюда, чтобы попробовать Новую Англию на вкус. Теперь ты " +"надеешься, что Новая Англия не попробует на вкус тебя!" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -105985,8 +106597,8 @@ msgid "" "You were out filming a reality TV show in the woods and the cast and crew " "all seemed to have turned into zombies. Looks like it's for real now..." msgstr "" -"Вы снимались в реалити-шоу в лесах, как неожиданно все актеры и команда " -"превратились в зомби. Похоже, что ваше шоу превратилось в реальность..." +"Ты снимался в реалити-шоу в лесах, как неожиданно все актёры и команда " +"превратились в зомби. Похоже, теперь всё по-настоящему..." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106000,13 +106612,13 @@ msgid "" "You were out filming a reality TV show in the woods and the cast and crew " "all seemed to have turned into zombies. Looks like it's for real now..." msgstr "" -"Вы снимались в реалити-шоу в лесах, как неожиданно все актеры и команда " -"превратились в зомби. Похоже, что ваше шоу превратилось в реальность..." +"Ты снималась в реалити-шоу в лесах, как неожиданно все актёры и команда " +"превратились в зомби. Похоже, теперь всё по-настоящему..." #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Augmentation Associate" -msgstr "специалист по аугментации" +msgstr "Специалист по аугментации" #. ~ Profession (male Augmentation Associate) description #: lang/json/professions_from_json.py @@ -106017,15 +106629,15 @@ msgid "" "zombies in the world that can calibrate an Autodoc, your skills might come " "in handy now that the world is over." msgstr "" -"Когда бионики только появились, вы сразу решили строить на них свою карьеру " -"и тратили дни напролёт, наблюдая за их установкой. Теперь вы - один из " -"немногих не-зомби в мире, кто может настроить автодок, и ваши навыки могут " +"Когда бионики только появились, ты сразу решил строить на них свою карьеру и" +" тратил дни напролёт, наблюдая за их установкой. Теперь ты - один из " +"немногих не-зомби в мире, кто может настроить автодок, и твои навыки могут " "очень пригодиться после конца света." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Augmentation Associate" -msgstr "специалист по аугментации" +msgstr "Специалистка по аугментации" #. ~ Profession (female Augmentation Associate) description #: lang/json/professions_from_json.py @@ -106036,9 +106648,9 @@ msgid "" "zombies in the world that can calibrate an Autodoc, your skills might come " "in handy now that the world is over." msgstr "" -"Когда бионики только появились, вы сразу решили строить на них свою карьеру " -"и тратили дни напролёт, наблюдая за их установкой. Теперь вы - одна из " -"немногих не-зомби в мире, кто может настроить автодок, и ваши навыки могут " +"Когда бионики только появились, ты сразу решила строить на них свою карьеру " +"и тратила дни напролёт, наблюдая за их установкой. Теперь ты - одна из " +"немногих не-зомби в мире, кто может настроить автодок, и твои навыки могут " "очень пригодиться после конца света." #: lang/json/professions_from_json.py @@ -106055,10 +106667,11 @@ msgid "" "that reason, when you had two no-shows and the other two tried to eat you, " "you ditched. Maybe you can find some new players in the ruins of the world." msgstr "" -"Проведя миллион игр, вы научились доверять своему чутью. Поэтому, когда двое" -" участников очередной игры вдруг посмотрели на вас голодными глазами, вы " -"поняли, что пора делать ноги. Может быть, вам всё же удасться найти новых " -"игроков на руинах этого мира." +"Тщетно пытаясь каждую неделю собрать народ на игру, ты понял: обычно проще " +"бросить безнадёжное дело и довериться чутью. Поэтому, когда двое игроков не " +"пришли, а двое остальных вдруг посмотрели на тебя голодными глазами, ты " +"сделал ноги. Может быть, тебе всё же удастся найти новых игроков среди " +"обломков этого мира." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106074,10 +106687,11 @@ msgid "" "that reason, when you had two no-shows and the other two tried to eat you, " "you ditched. Maybe you can find some new players in the ruins of the world." msgstr "" -"Проведя миллион игр, вы научились доверять своему чутью. Поэтому, когда двое" -" участников очередной игры вдруг посмотрели на вас голодными глазами, вы " -"поняли, что пора делать ноги. Может быть, вам всё же удасться найти новых " -"игроков на руинах этого мира." +"Тщетно пытаясь каждую неделю собрать народ на игру, ты поняла: обычно проще " +"бросить безнадёжное дело и довериться чутью. Поэтому, когда двое игроков не " +"пришли, а двое остальных вдруг посмотрели на тебя голодными глазами, ты " +"сделала ноги. Может быть, тебе всё же удастся найти новых игроков среди " +"обломков этого мира." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106094,12 +106708,10 @@ msgid "" "smarter, and memorized the entire handbook. Let's hope that knowledge helps" " you now." msgstr "" -"Вам улыбнулась большая удача, благодаря счастливому случаю или силе воли, " -"организовали хостинг игр для людей со всего света, большинство из которых, " -"знали их только по названию. Вы могли себе позволить наносить повреждения " -"вашим игрокам, и так вы и делали. Вы инвестировали в бионику, чтобы сделать " -"себя умнее и запоминали целые справочники. Будем надеяться, что знания " -"помогут вам сейчас." +"Ты разжился целым состоянием волей судьбы или упорством и организовывал игры" +" для знаменитых людей. Ты мог позволить устраивать гадости своим игрокам, и " +"ты устраивал их. Ты вложился в бионику, сделал себя умнее и запомнил целое " +"руководство. Будем надеяться, сейчас это знание тебе поможет." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106116,17 +106728,16 @@ msgid "" "smarter, and memorized the entire handbook. Let's hope that knowledge helps" " you now." msgstr "" -"Вам улыбнулась большая удача, благодаря счастливому случаю или силе воли, " -"организовали хостинг игр для людей со всего света, большинство из которых, " -"знали их только по названию. Вы могли себе позволить наносить повреждения " -"вашим игрокам, и так вы и делали. Вы инвестировали в бионику, чтобы сделать " -"себя умнее и запоминали целые справочники. Будем надеяться, что знания " -"помогут вам сейчас." +"Ты разжилась целым состоянием волей судьбы или упорством и организовывала " +"игры для знаменитых людей. Ты могла позволить устраивать гадости своим " +"игрокам, и ты устраивала их. Ты вложилась в бионику, сделала себя умнее и " +"запомнила целое руководство. Будем надеяться, сейчас это знание тебе " +"поможет." #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Zoo Keeper" -msgstr "смотритель зоопарка" +msgstr "Смотритель зоопарка" #. ~ Profession (male Zoo Keeper) description #: lang/json/professions_from_json.py @@ -106135,13 +106746,13 @@ msgid "" "You were called in on your day off to feed the animals at the zoo because " "none of your coworkers showed up for work for one reason or another." msgstr "" -"Вас вызвали на работу в ваш выходной, чтобы вы покормили животных, так как " -"никто из ваших коллег не вышел на работу." +"Тебя вызвали на работу в выходной, чтобы ты покормил животных, так как никто" +" из твоих коллег по разным причинам не вышел на работу." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Zoo Keeper" -msgstr "смотритель зоопарка" +msgstr "Смотрительница зоопарка" #. ~ Profession (female Zoo Keeper) description #: lang/json/professions_from_json.py @@ -106150,8 +106761,8 @@ msgid "" "You were called in on your day off to feed the animals at the zoo because " "none of your coworkers showed up for work for one reason or another." msgstr "" -"Вас вызвали на работу в ваш выходной, чтобы вы покормили животных, так как " -"никто из ваших коллег не вышел на работу." +"Тебя вызвали на работу в выходной, чтобы ты покормила животных, так как " +"никто из твоих коллег по разным причинам не вышел на работу." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106164,7 +106775,7 @@ msgctxt "prof_desc_male" msgid "" "You decided to get away from the family for the day to do a little golfing " "by yourself." -msgstr "Вы решили немного отдохнуть от семьи и заняться гольфом." +msgstr "Ты решил отдохнуть на денёк от семьи и немного поиграть в гольф." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106177,12 +106788,12 @@ msgctxt "prof_desc_female" msgid "" "You decided to get away from the family for the day to do a little golfing " "by yourself." -msgstr "Вы решили немного отдохнуть от семьи и заняться гольфом." +msgstr "Ты решила отдохнуть на денёк от семьи и немного поиграть в гольф." #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Bionic Surgeon" -msgstr "Бионик хирург" +msgstr "Бионический хирург" #. ~ Profession (male Bionic Surgeon) description #: lang/json/professions_from_json.py @@ -106192,15 +106803,15 @@ msgid "" "augmentation program to expand the medical field. With your expertise and " "augmentations, you can perform precise surgery with little assitance." msgstr "" -"Как один из лучших специалистов в стране, вы были выбраны для программы " -"расширения медицинской сферы деятельности. С вашими знаниями и " -"аугментациями, вживлёнными в тело, вы можете провести точную хирургическую " -"операцию практически безо всякой помощи." +"Ты - один из лучших хирургов страны, и тебя включили в программу улучшения " +"тела во имя развития медицины. С помощью знаний и бионических модификаций ты" +" способен выполнять сложные хирургические операции почти без посторонней " +"помощи." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Bionic Surgeon" -msgstr "Бионик хирург" +msgstr "Бионический хирург" #. ~ Profession (female Bionic Surgeon) description #: lang/json/professions_from_json.py @@ -106210,10 +106821,10 @@ msgid "" "augmentation program to expand the medical field. With your expertise and " "augmentations, you can perform precise surgery with little assitance." msgstr "" -"Как один из лучших специалистов в стране, вы были выбраны для программы " -"расширения медицинской сферы деятельности. С вашими знаниями и " -"аугментациями, вживлёнными в тело, вы можете провести точную хирургическую " -"операцию практически безо всякой помощи." +"Ты - одна из лучших хирургов страны, и тебя включили в программу улучшения " +"тела во имя развития медицины. С помощью знаний и бионических модификаций ты" +" способна выполнять сложные хирургические операции почти без посторонней " +"помощи." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106227,6 +106838,8 @@ msgid "" "It's been months since the Cataclysm and somehow you're still greener than a" " tree. Maybe you're just a slow learner, who knows." msgstr "" +"Прошли месяцы с начала Катаклизма, а ты почему-то всё ещё неподготовленный " +"новичок. Может быть, ты просто неспособный ученик, кто знает." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106240,28 +106853,32 @@ msgid "" "It's been months since the Cataclysm and somehow you're still greener than a" " tree. Maybe you're just a slow learner, who knows." msgstr "" +"Прошли месяцы с начала Катаклизма, а ты почему-то всё ещё неподготовленный " +"новичок. Может быть, ты просто неспособная ученица, кто знает." #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Novice" -msgstr "" +msgstr "Новичок" #. ~ Profession (male Novice) description #: lang/json/professions_from_json.py msgctxt "prof_desc_male" msgid "You're a merely competent survivor so far. Let's change that, yeah?" msgstr "" +"Пока что ты всего лишь просто способный выживальщик. Давай изменим это, да?" #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Novice" -msgstr "" +msgstr "Новичок" #. ~ Profession (female Novice) description #: lang/json/professions_from_json.py msgctxt "prof_desc_female" msgid "You're a merely competent survivor so far. Let's change that, yeah?" msgstr "" +"Пока что ты всего лишь просто способная выживальщица. Давай изменим это, да?" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106276,10 +106893,9 @@ msgid "" "was uncommon due to desert conditions, such equipment did see increased " "usage during the New Kingdom period." msgstr "" -"Вы, один из элитных воинов Древнего Египта и телохранитель самого Фараона. В" -" то время как охрана Фараона разбежалась кто куда, ваша экипировка выглядит " -"действительно угрожающе и найдёт своё применение в период Нового " -"Королевства." +"Элитная пехота Древнего Египта и телохранители самого Фараона. Хотя в " +"пустыне доспехи носили редко, в эпоху Нового Царства подобное снаряжение " +"распространилось куда шире." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106294,15 +106910,14 @@ msgid "" "was uncommon due to desert conditions, such equipment did see increased " "usage during the New Kingdom period." msgstr "" -"Вы, одна из элитных воительниц Древнего Египта и телохранитель самого " -"Фараона. В то время как охрана Фараона разбежалась кто куда, ваша экипировка" -" выглядит действительно угрожающе и найдёт своё применение в период Нового " -"Королевства." +"Элитная пехота Древнего Египта и телохранители самого Фараона. Хотя в " +"пустыне доспехи носили редко, в эпоху Нового Царства подобное снаряжение " +"распространилось куда шире." #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Hoplite" -msgstr "Хоплит" +msgstr "Гоплит" #. ~ Profession (male Hoplite) description #: lang/json/professions_from_json.py @@ -106312,14 +106927,14 @@ msgid "" "the Macedonean phalanx. Well-trained for combat in formation, but less " "effective when outmaneuvered or on broken ground." msgstr "" -"Вы, тяжеловооружённый пехотинец одного из городов-государств Древней Греции," -" в передовой фаланге Македонян. Хорошо обучены для боя в построении, но " -"менее эффективны во время манёвров и при движении по пересечённой местности." +"Тяжёлая пехота древнегреческих городов-государств до появления македонской " +"фаланги. Хорошо обучены для боя в построении, но менее эффективны против " +"атак с флангов и на пересечённой местности." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Hoplite" -msgstr "Хоплит" +msgstr "Гоплит" #. ~ Profession (female Hoplite) description #: lang/json/professions_from_json.py @@ -106329,9 +106944,9 @@ msgid "" "the Macedonean phalanx. Well-trained for combat in formation, but less " "effective when outmaneuvered or on broken ground." msgstr "" -"Вы, тяжеловооружённый пехотинец одного из городов-государств Древней Греции," -" в передовой фаланге Македонян. Хорошо обучены для боя в построении, но " -"менее эффективны во время манёвров и при движении по пересечённой местности." +"Тяжёлая пехота древнегреческих городов-государств до появления македонской " +"фаланги. Хорошо обучены для боя в построении, но менее эффективны против " +"атак с флангов и на пересечённой местности." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106346,9 +106961,9 @@ msgid "" "legion's equipment. Trained to act in formation with javelin and sword, " "well-known for their field fortifications as well." msgstr "" -"Вы, часть тяжёлой пехоты Римской империи, после военных реформ, которые " -"стандартизировали вооружение вашего легиона. Обученны действовать в формации" -" с копьём и мечом, знамениты своими полевыми укреплениями." +"Римская тяжёлая пехота после военных реформ и стандартизации вооружения " +"легионов. Легионеры обучены сражаться копьём и мечом в построении. Они " +"знамениты своими полевыми укреплениями." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106363,9 +106978,9 @@ msgid "" "legion's equipment. Trained to act in formation with javelin and sword, " "well-known for their field fortifications as well." msgstr "" -"Вы, часть тяжёлой пехоты Римской империи, после военных реформ, которые " -"стандартизировали вооружение вашего легиона. Обученны действовать в формации" -" с копьем и мечом, знамениты своими полевыми укреплениями." +"Римская тяжёлая пехота после военных реформ и стандартизации вооружения " +"легионов. Легионеры обучены сражаться копьём и мечом в построении. Они " +"знамениты своими полевыми укреплениями." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106379,8 +106994,8 @@ msgid "" "The infamous pirates of the early medieval period, raiders and explorers " "from various Scandinavian countries." msgstr "" -"Вы, один из печально известных пиратов раннего средневекового периода - " -"рейдеры и исследователи из разных скандинавских стран." +"Знаменитые пираты раннего средневековья, налётчики и мореходы из разных " +"скандинавских стран." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106394,8 +107009,8 @@ msgid "" "The infamous pirates of the early medieval period, raiders and explorers " "from various Scandinavian countries." msgstr "" -"Вы, одна из печально известных пираток раннего средневекового периода - " -"рейдеры и исследователи из разных скандинавских стран." +"Знаменитые пираты раннего средневековья, налётчики и мореходы из разных " +"скандинавских стран." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106410,9 +107025,9 @@ msgid "" "born or of common blood. While knights traditionally were men-at-arms, not " "every man-at-arms was a knight." msgstr "" -"Вы входите в состав средневековой тяжёлой конницы из разных стран Европы, " -"дворянского происхождения или простолюдинов. В то время как рыцари " -"традиционно были воинами, не каждый воин был рыцарем." +"Средневековая тяжёлая конница различных европейских стран, простого или " +"дворянского происхождения. Рыцари традиционно были воинами, но не каждый " +"воин был рыцарем." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106427,14 +107042,14 @@ msgid "" "born or of common blood. While knights traditionally were men-at-arms, not " "every man-at-arms was a knight." msgstr "" -"Вы входите в состав средневековой тяжёлой конницы из разных стран Европы, " -"дворянского происхождения или простолюдинов. В то время как рыцари " -"традиционно были воинами, не каждый воин был рыцарем." +"Средневековая тяжёлая конница различных европейских стран, простого или " +"дворянского происхождения. Рыцари традиционно были воинами, но не каждый " +"воин был рыцарем." #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Horse Archer" -msgstr "Кавалерийский стрелок" +msgstr "Конный лучник" #. ~ Profession (male Horse Archer) description #: lang/json/professions_from_json.py @@ -106443,13 +107058,13 @@ msgid "" "The famed light cavalry of the Mongol Empire. Best known for their skill as" " mounted archers." msgstr "" -"Вы, один из наёмников знаменитой лёгкой кавалерии Монгольской империи. " -"Наиболее известной своими стрельцами, за свои смертоносные умения." +"Знаменитая легкая конница Монгольской Империи. Наиболее известна своими " +"умелыми конными стрелками." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Horse Archer" -msgstr "Кавалерийский стрелок" +msgstr "Конная лучница" #. ~ Profession (female Horse Archer) description #: lang/json/professions_from_json.py @@ -106458,8 +107073,8 @@ msgid "" "The famed light cavalry of the Mongol Empire. Best known for their skill as" " mounted archers." msgstr "" -"Вы, одна из наёмниц знаменитой лёгкой кавалерии Монгольской империи. " -"Наиболее известной своими стрельцами, за свои смертоносные умения." +"Знаменитая легкая конница Монгольской Империи. Наиболее известна своими " +"умелыми конными стрелками." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106473,9 +107088,9 @@ msgid "" "Warrior nobility of feudal Japan. Known originally as masters of the horse " "and bow, they become famous for their swordsmanship in later eras." msgstr "" -"Вы, благородный воин феодальной Японии. Известен своим умением ездить верхом" -" и превосходными умениями лучника, а благодаря своему искусству фехтования " -"прославитесь и в более позднюю эру." +"Благородный воин феодальной Японии. Изначально были мастерами езды верхом и " +"стрельбы из лука, в более поздние эры прославились своим искусством " +"фехтования." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106489,9 +107104,9 @@ msgid "" "Warrior nobility of feudal Japan. Known originally as masters of the horse " "and bow, they become famous for their swordsmanship in later eras." msgstr "" -"Вы, благородная воительница феодальной Японии. Известны своим умением ездить" -" верхом и превосходными умениями лучника, а благодаря своему искусству " -"фехтования прославитесь и в более позднюю эру." +"Благородный воин феодальной Японии. Изначально были мастерами езды верхом и " +"стрельбы из лука, в более поздние эры прославились своим искусством " +"фехтования." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106506,9 +107121,9 @@ msgid "" "of modern life. Though from the looks of it, things have changed since last" " time you've been anywhere near civilization." msgstr "" -"Вы всегда предпочитали комфорт открытого неба сложностям современной жизни. " -"Впрочем, ситуация значительно поменялась с тех пор, как вы проходили в " -"последний раз мимо какой-либо цивилизации." +"Ты всегда предпочитал комфорт открытого неба сложностям современной жизни. " +"Впрочем, ситуация значительно поменялась с тех пор, как ты в последний раз " +"проходил где-нибудь поблизости цивилизации." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106523,9 +107138,9 @@ msgid "" "of modern life. Though from the looks of it, things have changed since last" " time you've been anywhere near civilization." msgstr "" -"Вы всегда предпочитали комфорт открытого неба сложностям современной жизни. " -"Впрочем, ситуация значительно поменялась с тех пор, как вы проходили в " -"последний раз мимо какой-либо цивилизации." +"Ты всегда предпочитала комфорт открытого неба сложностям современной жизни. " +"Впрочем, ситуация значительно поменялась с тех пор, как ты в последний раз " +"проходила где-нибудь поблизости цивилизации." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106541,10 +107156,10 @@ msgid "" "didn't have to fight the living dead, and you had your kin to stand beside " "you. Here, you're on your own." msgstr "" -"Живая реликвия доисторических времён, не от мира сего, бродящий в незнакомом" -" и пугающем мире. Жизнь охотника и собирателя была трудной, но тебе, по " -"крайней мере, не приходилось бороться с ожившими мертвецами, а твоя родня " -"стояла за тебя горой. Здесь же ты сам по себе." +"Ты неуместный живой доисторический реликт, затерянный в незнакомом и " +"пугающем мире. Жизнь охотника-собирателя была трудной, но тебе, по крайней " +"мере, не приходилось бороться с ожившими мертвецами, а твоя родня стояла за " +"тебя горой. Здесь же ты сам по себе." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106560,10 +107175,10 @@ msgid "" "didn't have to fight the living dead, and you had your kin to stand beside " "you. Here, you're on your own." msgstr "" -"Живая реликвия доисторических времён, не от мира сего, бродящая в незнакомом" -" и пугающем мире. Жизнь охотника и собирателя была трудной, но тебе, по " -"крайней мере, не приходилось бороться с ожившими мертвецами, а твоя родня " -"стояла за тебя горой. Здесь же ты сама по себе." +"Ты неуместный живой доисторический реликт, затерянная в незнакомом и " +"пугающем мире. Жизнь охотника-собирателя была трудной, но тебе, по крайней " +"мере, не приходилось бороться с ожившими мертвецами, а твоя родня стояла за " +"тебя горой. Здесь же ты сама по себе." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106577,8 +107192,8 @@ msgid "" "A master of arms and armor and a fearsome martial combatant; you are a " "fighter, forged in warfare and tempered on the battlefield." msgstr "" -"Мастер оружия и доспехов и грозный сторонник войны; ты воитель, выкованный в" -" горниле войны и закалённый на поле битвы." +"Мастер оружия и доспехов и грозный противник в ближнем бою; ты воитель, " +"выкованный в горниле войны и закалённый на поле битвы." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106592,7 +107207,7 @@ msgid "" "A master of arms and armor and a fearsome martial combatant; you are a " "fighter, forged in warfare and tempered on the battlefield." msgstr "" -"Мастер оружия и доспехов и грозная сторонница войны; ты воительница, " +"Мастер оружия и доспехов и грозный противник в ближнем бою; ты воительница, " "выкованная в горниле войны и закалённая на поле битвы." #: lang/json/professions_from_json.py @@ -106607,8 +107222,8 @@ msgid "" "A street urchin skilled in legerdemain and deadly with a blade; you are a " "rogue, a resourceful trickster and master thief." msgstr "" -"Вы, уличный мошенник, искусны и ловки в обмане, смертоносны со своим " -"кинжалом; вы изгой, находчивый ловкач и мастер-вор." +"Уличный бродяга, искусный в мошенничестве и смертоносный с кинжалом; ты " +"плут, находчивый ловкач и опытный вор." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106622,8 +107237,8 @@ msgid "" "A street urchin skilled in legerdemain and deadly with a blade; you are a " "rogue, a resourceful trickster and master thief." msgstr "" -"Вы, уличная мошенница, искусная и ловкая в обмане, смертоносна со своим " -"кинжалом; вы изгой, находчивая ловкач и мастер-вор." +"Уличная бродяжка, искусная в мошенничестве и смертоносная с кинжалом; ты " +"плут, находчивый ловкач и опытный вор." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106637,13 +107252,13 @@ msgid "" "A child of Crom hailing from the bitter north; you are a barbarian, as " "fearsome and formidable as the untamed land you call home." msgstr "" -"Дитя Крома родом с сурового севера; ты варвар, столь пугающий и грозный, как" -" и непокорные земли, которые ты называешь домом." +"Дитя суровых северных земель Крома; ты варвар, такой же пугающий и грозный, " +"как и непокорный край, который ты называешь своим домом." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Barbarian" -msgstr "Варварка" +msgstr "Варварша" #. ~ Profession (female Barbarian) description #: lang/json/professions_from_json.py @@ -106652,8 +107267,8 @@ msgid "" "A child of Crom hailing from the bitter north; you are a barbarian, as " "fearsome and formidable as the untamed land you call home." msgstr "" -"Дитя Крома родом с сурового севера; ты варварка, столь пугающая и грозная, " -"как и непокорные земли, которые ты называешь домом." +"Дитя суровых северных земель Крома; ты варвар, такая же пугающая и грозная, " +"как и непокорный край, который ты называешь своим домом." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106668,8 +107283,8 @@ msgid "" "highlands; you are a skald, a noble barbarian lore-keeper and speaker to the" " spirits." msgstr "" -"Вы таинственный бродячий министрель и рассказчик с северных высокогорий. Вы " -"скальд, благородный хранитель знаний, варвар, говорящий с духами." +"Таинственный бродячий менестрель и рассказчик с северных высокогорий. Ты " +"скальд, благородный хранитель преданий варваров и говорящий с духами." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106684,8 +107299,8 @@ msgid "" "highlands; you are a skald, a noble barbarian lore-keeper and speaker to the" " spirits." msgstr "" -"Вы таинственный бродячий министрель и рассказчица с северных высокогорий. Вы" -" скальд, благородная хранительница знаний, варвар, говорящая с духами." +"Таинственный бродячий менестрель и рассказчица с северных высокогорий. Ты " +"скальд, благородная хранительница преданий варваров и говорящая с духами." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106699,8 +107314,8 @@ msgid "" "One of the few who wander but are never lost; you are a ranger, wise in the " "ways of the forest and deadly with a bow." msgstr "" -"Один из немногих, кто блуждает, но никогда не бывает заблудившимся; ты " -"егерь, сведущий в лесных путях и смертельно опасный с луком." +"Один из немногих, кто блуждает, но никогда не теряется; ты егерь, сведущий в" +" лесных путях и смертельно опасный лучник." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106714,8 +107329,8 @@ msgid "" "One of the few who wander but are never lost; you are a ranger, wise in the " "ways of the forest and deadly with a bow." msgstr "" -"Одна из немногих, кто блуждает, но никогда не бывает заблудившейся; ты " -"егерь, сведущая в лесных путях и смертельно опасная с луком." +"Одна из немногих, кто блуждает, но никогда не теряется; ты егерь, сведущая в" +" лесных путях и смертельно опасная лучница." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106729,8 +107344,8 @@ msgid "" "Servant to an exotic order of ascetics; you are a monk, a pious devotee with" " extensive knowledge of unarmed combat." msgstr "" -"Служитель в экзотическом ордене отшельников; ты монах, праведный подвижник с" -" обширными знаниями безоружного боя." +"Послушник экзотического ордена отшельников; ты монах, набожный верующий с " +"обширными знаниями безоружного боя." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106744,8 +107359,8 @@ msgid "" "Servant to an exotic order of ascetics; you are a monk, a pious devotee with" " extensive knowledge of unarmed combat." msgstr "" -"Служительница в экзотическом ордене отшельников; ты монахиня, праведная " -"подвижница с обширными знаниями безоружного боя." +"Послушница экзотического ордена отшельников; ты монахиня, набожная верующая " +"с обширными знаниями безоружного боя." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106759,7 +107374,7 @@ msgid "" "Sworn defender of the land; you are a knight, an educated warrior trained " "since childhood in the ways of honorable combat." msgstr "" -"Неизменный защитник страны; ты рыцарь, высокообразованный воин, с детства " +"Присягнувший защитник страны; ты рыцарь, высокообразованный воин, с детства " "обучавшийся способам благородного боя." #: lang/json/professions_from_json.py @@ -106774,8 +107389,8 @@ msgid "" "Sworn defender of the land; you are a knight, an educated warrior trained " "since childhood in the ways of honorable combat." msgstr "" -"Неизменная защитница страны; ты рыцарь, высокообразованный воин, с детства " -"обучавшаяся способам благородного боя." +"Присягнувшая защитница страны; ты рыцарь, высокообразованная воительница, с " +"детства обучавшаяся способам благородного боя." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106789,8 +107404,8 @@ msgid "" "A wise student of ancient and forbidden knowledge; you are a wizard, a " "mystical practitioner of the (bionic) arcane arts." msgstr "" -"Умудрённый знаток древнего и запретного знания; ты колдун, мистический " -"чернокнижник, применяющий (бионические) тайные искусства." +"Мудрый знаток древнего и запретного знания; ты колдун, мистический " +"специалист в волшебном (бионическом) искусстве." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106804,8 +107419,8 @@ msgid "" "A wise student of ancient and forbidden knowledge; you are a wizard, a " "mystical practitioner of the (bionic) arcane arts." msgstr "" -"Умудрённый знаток древнего и запретного знания; ты колдунья, мистическая " -"чернокнижница, применяющая (бионические) тайные искусства." +"Мудрый знаток древнего и запретного знания; ты колдунья, мистический " +"специалист в волшебном (бионическом) искусстве." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106819,9 +107434,9 @@ msgid "" "Before the end, your hobby was illegally reprogramming and repurposing " "commercial robots, but you never thought your survival might depend on it." msgstr "" -"Ещё перед концом всего, вашим хобби было незаконное перепрограммирование и " -"перепрофилирование коммерческих роботов, но вы никогда не думали о том, что " -"от полученных в этих областях навыков, будет зависеть ваше выживание." +"Ещё перед концом света твоим хобби было незаконное перепрограммирование и " +"перепрофилирование коммерческих роботов, но ты никогда не думал, что от " +"этого может зависеть твоё выживание." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106835,9 +107450,9 @@ msgid "" "Before the end, your hobby was illegally reprogramming and repurposing " "commercial robots, but you never thought your survival might depend on it." msgstr "" -"Ещё перед концом всего, вашим хобби было незаконное перепрограммирование и " -"перепрофилирование коммерческих роботов, но вы никогда не думали о том, что " -"от полученных в этих областях навыков, будет зависеть ваше выживание." +"Ещё перед концом света твоим хобби было незаконное перепрограммирование и " +"перепрофилирование коммерческих роботов, но ты никогда не думала, что от " +"этого может зависеть твоё выживание." #. ~ Profession (male Bionic Surgeon) description #: lang/json/professions_from_json.py @@ -106847,10 +107462,10 @@ msgid "" "augmentation program to expand the medical field. With your experties and " "augmentations, you can preform precise surgery with little assitance." msgstr "" -"Как один из лучших специалистов в стране, вы были выбраны для программы " -"расширения медицинской сферы деятельности. С вашими экспериментами и " -"дополнениями вживлёнными в тело, вы можете провести точную хирургическую " -"операцию с небольшой помощью." +"Ты - один из лучших хирургов страны, и тебя включили в программу улучшения " +"тела во имя развития медицины. С помощью знаний и бионических модификаций ты" +" способен выполнять сложные хирургические операции почти без посторонней " +"помощи." #. ~ Profession (female Bionic Surgeon) description #: lang/json/professions_from_json.py @@ -106860,10 +107475,10 @@ msgid "" "augmentation program to expand the medical field. With your experties and " "augmentations, you can preform precise surgery with little assitance." msgstr "" -"Как одна из лучших специалистов в стране, вы были выбраны для программы " -"расширения медицинской сферы деятельности. С вашими экспериментами и " -"дополнениями вживлёнными в тело, вы можете провести точную хирургическую " -"операцию с небольшой помощью." +"Ты - одна из лучших хирургов страны, и тебя включили в программу улучшения " +"тела во имя развития медицины. С помощью знаний и бионических модификаций ты" +" способна выполнять сложные хирургические операции почти без посторонней " +"помощи." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106879,11 +107494,11 @@ msgid "" "operator before the procedure wasn't enough, your new enhancememts allow you" " to handle any combat scenario be it human or not." msgstr "" -"Как только бионическая аугментация доказала свою безопасность, вы были " -"избраны для совершенно секретной программы аугментации солдат. В дополнение " -"к тому, что вы и так являлись элитным бойцом сил специального назначения " -"даже до процедуры, ваши новые улучшения позволяют вам справиться с любым " -"врагом, будь он человеком или кем-то ещё." +"Как только была доказана безопасность бионических модификаций, тебя избрали " +"для сверхсекретной программы усовершенствования солдат. Несмотря на то, что " +"ты уже был элитным бойцом сил специального назначения, благодаря новым " +"улучшениям ты способен справиться с любым врагом, неважно, с человеком или " +"кем-то ещё." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106899,11 +107514,11 @@ msgid "" "operator before the procedure wasn't enough, your new enhancememts allow you" " to handle any combat scenario be it human or not." msgstr "" -"Как только бионическая аугментация доказала свою безопасность, вы были " -"избраны для совершенно секретной программы аугментации солдат. В дополнение " -"к тому, что вы и так являлись элитным бойцом сил специального назначения " -"даже до процедуры, ваши новые улучшения позволяют вам справиться с любым " -"врагом, будь он человеком или кем-то ещё." +"Как только была доказана безопасность бионических модификаций, тебя избрали " +"для сверхсекретной программы усовершенствования солдат. Несмотря на то, что " +"ты уже была элитным бойцом сил специального назначения, благодаря новым " +"улучшениям ты способна справиться с любым врагом, неважно, с человеком или " +"кем-то ещё." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106918,9 +107533,9 @@ msgid "" "supply raids you emerge a self-made cyborg with the some of the best crafted" " weapons and armor in the wasteland." msgstr "" -"После месяцев чтения, экспериментов, множества травм и бесконечных набегов " -"за припасами, вы, наконец, стали киборгом \"ручной работы\" с одними из " -"лучших видов вооружения и брони в пустоши." +"После месяцев чтения, экспериментов, тяжёлых травм и бесконечных набегов за " +"припасами ты превратился в самодельного киборга с одними из лучших видов " +"вооружения и брони в пустоши." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106935,9 +107550,9 @@ msgid "" "supply raids you emerge a self-made cyborg with the some of the best crafted" " weapons and armor in the wasteland." msgstr "" -"После месяцев чтения, экспериментов, множества травм и бесконечных набегов " -"за припасами, вы, наконец, стали киборгом \"ручной работы\" с лучшим " -"вооружением и броней в пустоши." +"После месяцев чтения, экспериментов, тяжёлых травм и бесконечных набегов за " +"припасами ты превратилась в самодельного киборга с одними из лучших видов " +"вооружения и брони в пустоши." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106953,10 +107568,10 @@ msgid "" "get a taste of New England; now you hope New England won't get a taste of " "you!" msgstr "" -"Благодаря вашей жажде приключений, любви к хорошей еде, а также богатству вы" -" могли путешествовать часто и много. Вы прибыли сюда, чтобы почувствовать " -"вкус Новой Англии. Теперь постарайтесь, чтобы Новая Англия не попробовала " -"вас на вкус!" +"Благодаря твоей жажде приключений, любви к хорошей еде, а также богатству, " +"ты смог путешествовать часто и много. Ты прибыл сюда, чтобы почувствовать " +"вкус Новой Англии. Теперь постарайся, чтобы Новая Англия не попробовала тебя" +" на вкус!" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -106972,10 +107587,10 @@ msgid "" "get a taste of New England; now you hope New England won't get a taste of " "you!" msgstr "" -"Благодаря вашей жажде приключений, любви к хорошей еде, а также богатству вы" -" могли путешествовать часто и много. Вы прибыли сюда, чтобы почувствовать " -"вкус Новой Англии. Теперь постарайтесь, чтобы Новая Англия не попробовала " -"вас на вкус!" +"Благодаря твоей жажде приключений, любви к хорошей еде, а также богатству, " +"ты смогла путешествовать часто и много. Ты прибыла сюда, чтобы почувствовать" +" вкус Новой Англии. Теперь постарайся, чтобы Новая Англия не попробовала " +"тебя на вкус!" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -106990,6 +107605,9 @@ msgid "" "augmentative technology to bring forth the future. You are now a walking " "example of what humanity could have become." msgstr "" +"Будучи богатым трансгуманистом, ты решил выдвинуть себя на передовой план " +"аугментационных технологий, чтобы привнести вклад в будущее. Теперь ты — " +"пример того, каким могло бы стать человечество." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -107004,6 +107622,9 @@ msgid "" "augmentative technology to bring forth the future. You are now a walking " "example of what humanity could have become." msgstr "" +"Будучи богатой трансгуманисткой, ты решила выдвинуть себя на передовой план " +"аугментационных технологий, чтобы привнести вклад в будущее. Теперь ты — " +"пример того, каким могло бы стать человечество." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -107018,8 +107639,8 @@ msgid "" "gum from under tables. Now the only thing you'll be sweeping are the brains" " of the dead." msgstr "" -"Вы зарабатывали на жизнь подметанием шоколадных обёрток и отскребанием " -"жевательных резинок из-под столов. Теперь единственное, что будете " +"Ты зарабатывал на жизнь подметанием шоколадных обёрток и отскребанием " +"жевательных резинок из-под столов. Теперь единственное, что тебе придётся " "подметать, - это мозги мёртвых." #: lang/json/professions_from_json.py @@ -107035,8 +107656,8 @@ msgid "" "gum from under tables. Now the only thing you'll be sweeping are the brains" " of the dead." msgstr "" -"Вы зарабатывали на жизнь подметанием шоколадных обёрток и отскребанием " -"жевательных резинок из-под столов. Теперь единственное, что будете " +"Ты зарабатывала на жизнь подметанием шоколадных обёрток и отскребанием " +"жевательных резинок из-под столов. Теперь единственное, что тебе придётся " "подметать, - это мозги мёртвых." #: lang/json/professions_from_json.py @@ -107053,9 +107674,9 @@ msgid "" "your ratty old backpack finally fell apart at the worst time. At least no " "one's mocking you now." msgstr "" -"Вы родились в бедной семье, и вас высмеивают за старую поношенную одежду и " -"бесплатные школьные обеды. Как назло, ваш жалкий старый рюкзак вконец " -"развалился. По крайней мере, теперь над этим никто смеяться не будет." +"Ты родился в бедной семье, и тебя высмеивали за старую поношенную одежду и " +"бесплатные школьные обеды. Как назло, твой жалкий старый рюкзак вконец " +"развалился. По крайней мере, теперь никто не будет над тобой смеяться." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -107071,9 +107692,9 @@ msgid "" "your ratty old backpack finally fell apart at the worst time. At least no " "one's mocking you now." msgstr "" -"Вы родились в бедной семье, и вас высмеивают за старую поношенную одежду и " -"бесплатные школьные обеды. Как назло, ваш жалкий старый рюкзак вконец " -"развалился. По крайней мере, теперь над этим никто смеяться не будет." +"Ты родилась в бедной семье, и тебя высмеивали за старую поношенную одежду и " +"бесплатные школьные обеды. Как назло, твой жалкий старый рюкзак вконец " +"развалился. По крайней мере, теперь никто не будет над тобой смеяться." #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -107088,9 +107709,9 @@ msgid "" " your bad dreams. The grown-ups you relied on are all dead--or undead--now." " What are you going to do?" msgstr "" -"Ты просто ребёнок, и теперь мир превратился в один из ваших кошмаров. Вы " -"полагались на взрослых, а теперь они все мертвы или стали нежитью. И что ты " -"теперь собираешься делать?" +"Ты просто ребёнок, и теперь мир превратился в один из твоих кошмаров. Ты " +"полагался на взрослых, а теперь они все мертвы или стали нежитью. И что ты " +"собираешься делать?" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -107105,9 +107726,9 @@ msgid "" " your bad dreams. The grown-ups you relied on are all dead--or undead--now." " What are you going to do?" msgstr "" -"Ты просто ребёнок, и теперь мир превратился в один из ваших кошмаров. Вы " -"полагались на взрослых, а теперь они все мертвы или стали нежитью. И что ты " -"теперь собираешься делать?" +"Ты просто ребёнок, и теперь мир превратился в один из твоих кошмаров. Ты " +"полагалась на взрослых, а теперь они все мертвы или стали нежитью. И что ты " +"собираешься делать?" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -107122,9 +107743,9 @@ msgid "" "zombies. It's just you and your hockey equipment versus the undead, but at " "least you can cross-check them now." msgstr "" -"Ты был вратарём в хоккейной команде младшей лиги, когда остальная команда " -"стала зомби. Теперь только ты и твоя хоккейная экипировка против живых " -"мертвецов." +"Ты был вратарём в хоккейной команде младшей лиги до того, как остальная " +"команда стала зомби. Теперь только ты и твоя хоккейная экипировка против " +"живых мертвецов." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -107139,7 +107760,7 @@ msgid "" "zombies. It's just you and your hockey equipment versus the undead, but at " "least you can cross-check them now." msgstr "" -"Ты была вратарём в женской хоккейной команде младшей лиги, когда остальная " +"Ты была вратарём в хоккейной команде младшей лиги до того, как остальная " "команда стала зомби. Теперь только ты и твоя хоккейная экипировка против " "живых мертвецов." @@ -107243,10 +107864,11 @@ msgid "" " they'd ever let you experience childhood, or ever shown you their love. " "You're certainly not getting either one now." msgstr "" -"Ваши родители вечно были заняты, «важные люди», которые хотели, чтобы у вас " -"были только плюсы, чтобы вы были «успешным», что бы это ни означало. Если бы" -" только они когда-нибудь позволяли вам испытать детство, или показали бы вам" -" свою любовь. Конечно, вы не стали успешным в настоящее время." +"Твоими родителями были занятые солидные люди, желавшие, чтобы у тебя было " +"преимущество во всём и заставлявшие тебя \"идти к успеху\", что бы это ни " +"значило. Если бы только они хоть раз дали почувствовать себя ребёнком или " +"хоть раз показали тебе свою любовь. Сейчас ты, безусловно, не получишь ни " +"того, ни другого." #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -107262,15 +107884,16 @@ msgid "" " they'd ever let you experience childhood, or ever shown you their love. " "You're certainly not getting either one now." msgstr "" -"Ваши родители вечно были заняты, «важные люди», которые хотели, чтобы у вас " -"были только плюсы, чтобы вы были «успешным», что бы это ни означало. Если бы" -" только они когда-нибудь позволяли вам испытать детство, или показали бы вам" -" свою любовь. Конечно, вы не стали успешным в настоящее время." +"Твоими родителями были занятые солидные люди, желавшие, чтобы у тебя было " +"преимущество во всём и заставлявшие тебя \"идти к успеху\", что бы это ни " +"значило. Если бы только они хоть раз дали почувствовать себя ребёнком или " +"хоть раз показали тебе свою любовь. Сейчас ты, безусловно, не получишь ни " +"того, ни другого." #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Bionic Gangster" -msgstr "Гангстер-бионик" +msgstr "Бионический Гангстер" #. ~ Profession (male Bionic Gangster) description #: lang/json/professions_from_json.py @@ -107282,16 +107905,16 @@ msgid "" " job. After enjoying some period of freedom to do as you wanted, now you " "find yourself needing those skills to survive. " msgstr "" -"Вы были любимцем босса, его протеже; они всегда рассчитывали на вас, давая " -"самые трудные задания. Увидев ваш потенциал, они инвестировали в «базовые» " -"дополнения и лучшую экипировку на рынке, чтобы лучше поддерживать вас в " -"вашей работе. После наслаждения некоторым периодом свободы, делать то, что " -"хочешь, теперь вы нуждаетесь в этих навыках, чтобы выжить." +"Ты был любимцем босса, его протеже; босс всегда рассчитывал на тебя в самой " +"сложной работёнке. Увидев твой потенциал, он заплатил за «базовые» " +"модификации и лучшую экипировку, чтобы помочь тебе в работе. Некоторое время" +" ты наслаждался свободой делать что захочется. Теперь тебе потребуются эти " +"навыки, чтобы выжить." #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Bionic Gangster" -msgstr "Гангстер-бионик" +msgstr "Бионический Гангстер" #. ~ Profession (female Bionic Gangster) description #: lang/json/professions_from_json.py @@ -107303,11 +107926,143 @@ msgid "" " job. After enjoying some period of freedom to do as you wanted, now you " "find yourself needing those skills to survive. " msgstr "" -"Вы были любимицей босса, его протеже; они всегда рассчитывали на вас, давая " -"самые трудные задания. Увидев ваш потенциал, они инвестировали в «базовые» " -"дополнения и лучшую экипировку на рынке, чтобы лучше поддерживать вас в " -"вашей работе. После наслаждения некоторым периодом свободы, делать то, что " -"хочешь, теперь вы нуждаетесь в этих навыках, чтобы выжить." +"Ты была любимицей босса, его протеже; босс всегда рассчитывал на тебя в " +"самой сложной работёнке. Увидев твой потенциал, он заплатил за «базовые» " +"модификации и лучшую экипировку, чтобы помочь тебе в работе. Некоторое время" +" ты наслаждалась свободой делать что захочется. Теперь тебе потребуются эти " +"навыки, чтобы выжить." + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "Разбуженный" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" +"Тебя разбудил шум посреди ночи. Вооруженный лишь фонариком, ты отправился " +"посмотреть, в чем дело, и теперь ты столкнулся с катаклизмом." + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "Разбуженная" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" +"Тебя разбудил шум посреди ночи. Вооруженная лишь фонариком, ты отправилась " +"посмотреть, в чем дело, и теперь ты столкнулась с катаклизмом." + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "Бионический Велосипедист" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" +"Благодаря тренировкам и бионическим модификациям ради соревнований по " +"велоспорту на Кибер-Олимпиаде ты смог убежать от начала катаклизма. Сможешь " +"ли ты убегать от него вечно?" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "Бионический Велосипедист" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" +"Благодаря тренировкам и бионическим модификациям ради соревнований по " +"велоспорту на Кибер-Олимпиаде ты смогла убежать от начала катаклизма. " +"Сможешь ли ты убегать от него вечно?" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "Сварщик" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" +"До катаклизма ты работал сварщиком в оффшорной компании. Ты возвращался " +"домой, когда наступил конец света. По крайней мере, у тебя есть инструменты." + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "Сварщица" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" +"До катаклизма ты работала сварщицей в оффшорной компании. Ты возвращалась " +"домой, когда наступил конец света. По крайней мере, у тебя есть инструменты." + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "Первобытный Выживальщик" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"Ты знал, что этот день однажды наступит, день, когда всё полетит к чертям. И" +" ты готов к нему не за счёт снаряжения, а благодаря умениям. Все проведённые" +" в лесах дни теперь окупятся сполна. Если уж твои предки сумели выжить без " +"технологий, то ты, чёрт побери, точно сможешь." + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "Первобытная Выживальщица" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"Ты знала, что этот день однажды наступит, день, когда всё полетит к чертям. " +"И ты готова к нему не за счёт снаряжения, а благодаря умениям. Все " +"проведённые в лесах дни теперь окупятся сполна. Если уж твои предки сумели " +"выжить без технологий, то ты, чёрт побери, точно сможешь." #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py @@ -107532,8 +108287,8 @@ msgid "" "The first thing we are going to need is a command tent to manage and task " "workers from." msgstr "" -"Для начала нам понадобится - командная палатка для управления и постановки " -"задачи рабочим." +"Для начала нам понадобится разбить палатку для управления и постановки задач" +" рабочим." #: lang/json/recipe_from_json.py msgid "" @@ -107564,7 +108319,7 @@ msgid "" "Additional housing and storage will allow our camp to expand into " "specialized industries." msgstr "" -"Дополнительное жильё и складское помещение, позволят нашему лагерю " +"Дополнительное жильё и складское помещение позволят нашему лагерю " "расшириться в специализированные отрасли." #: lang/json/recipe_from_json.py @@ -107572,7 +108327,7 @@ msgid "" "Constructing a hard command post will transform our little camp into a true " "base." msgstr "" -"Построение крепкого командного пункта, превратит наш маленький лагерь в " +"Построение крепкого командного пункта превратит наш маленький лагерь в " "настоящую базу." #: lang/json/recipe_from_json.py @@ -107580,49 +108335,46 @@ msgid "" "Building additional housing will allow us to send companions out to find " "recruits." msgstr "" -"Строительство дополнительного жилья, позволит нам отправлять компаньонов, " +"Строительство дополнительного жилья позволит нам отправлять компаньонов, " "чтобы найти новобранцев." #: lang/json/recipe_from_json.py msgid "We need to expand our base to include basic dining facilities." -msgstr "" -"Нам необходимо расширить нашу базу, чтобы включить сооружения основные " -"столовые." +msgstr "Нам необходимо расширить нашу базу и устроить столовую." #: lang/json/recipe_from_json.py msgid "More housing means that we can support additional specialists." msgstr "" -"Больше жилья означает, что мы можем поддерживать дополнительных " -"специалистов." +"Больше жилья означает, что мы можем содержать дополнительных специалистов." #: lang/json/recipe_from_json.py msgid "An expanded kitchen is needed to support our growing settlement." msgstr "" -"Для поддержки нашего растущего поселения, необходима расширенная кухня." +"Для поддержки нашего растущего поселения необходима расширенная кухня." #: lang/json/recipe_from_json.py msgid "" "Finishing the hard structure will give us a more secure place to retreat to " "if we come under attack." msgstr "" -"Завершение крепкой структуры даст нам более безопасное место для " -"отступления, если мы подвергнемся атаке." +"Завершение укреплений даст нам более безопасное место для отступления, если " +"мы подвергнемся атаке." #: lang/json/recipe_from_json.py msgid "" "I'm surprised we've made it this long without securing a clean water source," " we need a well." msgstr "" -"Я удивлен, что мы делали это так долго, не обеспечив себе охраняемый чистый " -"источник воды, нам нужен колодец." +"Я удивлен, что у нас получилось прожить так долго без источника чистой воды." +" Нам нужен колодец." #: lang/json/recipe_from_json.py msgid "" "Building a strong wall will keep the base secure even if a small horde " "attacks." msgstr "" -"Строительство крепкой стены будет поддерживать безопасность базы, даже если " -"атакует небольшая орда." +"Строительство крепкой стены поможет защищать базу, даже если атакует " +"небольшая орда." #: lang/json/recipe_from_json.py msgid "We need to finish our half built fortifications." @@ -107630,7 +108382,7 @@ msgstr "Нам необходимо закончить наши полустро #: lang/json/recipe_from_json.py msgid "We're running out of room and need another living quarters." -msgstr "У нас заканчиваются комнаты, нужна ещё одна жилая комната." +msgstr "У нас заканчивается место, нужна ещё одна жилая палатка." #: lang/json/recipe_from_json.py msgid "Our kitchen isn't able to keep up with demand, we need to expand it." @@ -107644,46 +108396,43 @@ msgstr "" #: lang/json/recipe_from_json.py msgid "One final tent is all we have room for now." -msgstr "Одна законченная палатка - это всё, что мы имеем из комнат сейчас." +msgstr "Одна последняя палатка - вот и всё, на что пока что хватит места." #: lang/json/recipe_from_json.py msgid "Survey land for a farm shop." -msgstr "Обследовать территорию для сельскохозяйственного магазина." +msgstr "Обследовать территорию для строительства фермы." #: lang/json/recipe_from_json.py msgid "Plowing a few plots should get us started." -msgstr "Вспахивание нескольких участков, позволит нам начать." +msgstr "Для начала можно вспахать несколько участков." #: lang/json/recipe_from_json.py msgid "We could use a farming shed to store resources where we'll be working." -msgstr "" -"Мы могли бы использовать сельскохозяйственный сарай для хранения ресурсов, " -"где мы будем работать." +msgstr "Нам бы пригодился сарай для хранения материалов во время работы." #: lang/json/recipe_from_json.py msgid "" "Our farm could be expanded by finishing the shed and adding additional " "plots." msgstr "" -"Наша ферма может быть расширена, закончив сарай и добавив дополнительные " -"участки." +"Нашу ферму можно расширить, закончив сарай и распахав несколько участков." #: lang/json/recipe_from_json.py msgid "" "Building a processing shack should allow us to reclaim additional seeds from" " our byproducts." msgstr "" -"Строительство хижины по обработке, позволит нам получать дополнительные " -"семена из наших побочных продуктов." +"Мы сможем получить дополнительные семена из нашего урожая, если построим " +"хижину для обработки." #: lang/json/recipe_from_json.py msgid "Survey land for a garage." -msgstr "Обследовать территорию для гаража." +msgstr "Обследовать территорию для строительства гаража." #: lang/json/recipe_from_json.py msgid "Building a tool rack should be the first priority." msgstr "" -"Строительство стеллажа для инструмента должно быть первоочередной задачей." +"Строительство стеллажа для инструментов должно быть первоочередной задачей." #: lang/json/recipe_from_json.py msgid "We should start construction of a roof for the garage." @@ -107691,23 +108440,19 @@ msgstr "Мы должны начать строительство крыши д #: lang/json/recipe_from_json.py msgid "Finishing out the roof will let our mechanics work rain or shine." -msgstr "" -"Завершение крыши позволит нашим механикам работать в дождь или в солнечную " -"погоду." +msgstr "Завершение крыши позволит нашим механикам работать при любой погоде." #: lang/json/recipe_from_json.py msgid "" "Our garage isn't big enough to work on larger vehicles. Let's start " "expanding it." msgstr "" -"Наш гараж не достаточно большой, чтобы работать над более крупными " -"механизмами. Давайте начнём расширять его." +"Наш гараж недостаточно большой для работы над крупными машинами. Давайте " +"начнём расширять его." #: lang/json/recipe_from_json.py msgid "Finishing the roof will let us park RVs and buses in the garage." -msgstr "" -"Завершение крыши позволит нам парковать автомобиль с жилым кузовом и автобус" -" в гараже." +msgstr "Завершение крыши позволит нам парковать в гараже трейлеры и автобусы." #: lang/json/recipe_from_json.py msgid "" @@ -107718,21 +108463,20 @@ msgstr "" #: lang/json/recipe_from_json.py msgid "Survey land for a kitchen." -msgstr "Обследовать территорию для кухни." +msgstr "Обследовать территорию для строительства кухни." #: lang/json/recipe_from_json.py msgid "Building a cook-shack is our first task." -msgstr "Строительство хижины повара, является нашей первоочередной задачей." +msgstr "Строительство хижины-кухни - наша первая задача." #: lang/json/recipe_from_json.py msgid "We need to finish framing the walls for the cook-shack." -msgstr "Мы должны завершить строительство каркаса стен для хижины повара." +msgstr "Мы должны завершить строительство каркаса стен для хижины." #: lang/json/recipe_from_json.py msgid "" "Expanding the shack by including a smoker will increase our versatility." -msgstr "" -"Расширение хижины присоединением коптильни, увеличит нашу универсальность." +msgstr "Расширение хижины и устройство коптильни увеличит нашу гибкость." #: lang/json/recipe_from_json.py msgid "A pantry will allow our cooks to store more non-perishables." @@ -107742,19 +108486,18 @@ msgstr "" #: lang/json/recipe_from_json.py msgid "" "Increasing our number of smoking racks will let us craft larger batches." -msgstr "" -"Увеличение числа коптильней, позволит нам получать большие партии продуктов." +msgstr "Увеличение числа коптилен позволит нам готовить большими партиями." #: lang/json/recipe_from_json.py msgid "A well is needed so our cooks don't have to haul in water." -msgstr "Колодец необходим, наши повара не будут таскать воду." +msgstr "Нужен колодец, чтобы нашим поварам не приходилось таскать воду." #: lang/json/recipe_from_json.py msgid "" "Wood stoves will give us greater control of temperatures and let us craft " "more difficult recipes." msgstr "" -"Дровяные печи позволят нам контролировать температуру и выполнять более " +"Дровяные печи позволят лучше следить за температурой и выполнять более " "сложные рецепты." #: lang/json/recipe_from_json.py @@ -107762,56 +108505,52 @@ msgid "" "Finally, expanding the pantry further will let us store additional " "materials." msgstr "" -"Наконец, дальнейшее расширение кладовой, позволит нам хранить дополнительные" -" продукты." +"Наконец, дальнейшее расширение кладовой позволит нам хранить дополнительные " +"продукты." #: lang/json/recipe_from_json.py msgid "" "A trench that may deter movement but is meant to be the foundation of a " "picket or palisade. Requirements are for 1/2 an over map tile." msgstr "" -"Траншея, которая может сдерживать движение, но должна быть основой для " -"забора или частокола. Требование для 1/2 тайла глобальной карты." +"Траншея, затрудняющая передвижение. Предназначена как основание для забора " +"или частокола. Требования указаны для 1/2 клетки глобальной карты." #: lang/json/recipe_from_json.py msgid "" "A deep trench filled with spikes, requires a trench. Requirements are for " "1/2 an over map tile." msgstr "" -"Глубокая траншея, заполненная шипами, требуется траншея. Требование для 1/2 " -"тайла глобальной карты." +"Глубокая траншея, заполненная кольями. Требуется траншея. Требования указаны" +" для 1/2 клетки глобальной карты." #: lang/json/recipe_from_json.py msgid "Survey land for a blacksmith shop." -msgstr "Обследовать территорию для кузницы." +msgstr "Обследовать территорию для строительства кузницы." #: lang/json/recipe_from_json.py msgid "Building a forge and kiln is our first task." -msgstr "" -"Строительство кузни и углевыжигательной печи, является нашей первоочередной " -"задачей." +msgstr "Строительство горна и углевыжигательной печи - первая задача." #: lang/json/recipe_from_json.py msgid "Building a proper roof for the shop is the next step." -msgstr "" -"Строительство подходящей крыши для магазина, является следующим шагом." +msgstr "Следующий шаг - строительство крыши для кузницы." #: lang/json/recipe_from_json.py msgid "Building a working table and placing an anvil are next." -msgstr "Строительство рабочего стола и установка наковальни, следующий шаг." +msgstr "Далее - строительство верстака и установка наковальни." #: lang/json/recipe_from_json.py msgid "" "If we're going to do more than simple metal casting we need a bigger shop." msgstr "" -"Если мы собираемся делать больше чем простое металлическое литьё, нам нужен " -"более крупный магазин." +"Если мы собираемся заниматься чем-то посложнее простого металлического " +"литья, нам понадобится кузница побольше." #: lang/json/recipe_from_json.py msgid "We need some basic tools to make more advanced crafts." msgstr "" -"Нам нужны некоторые основные инструменты, чтобы делать более сложные " -"рецепты." +"Нам нужны некоторые основные инструменты для изготовления сложных вещей." #: lang/json/recipe_from_json.py msgid "An expanded forge will allow us to work on bigger projects." @@ -107831,8 +108570,8 @@ msgstr "" #: lang/json/recipe_from_json.py msgid "Next we need to add some basic tools and vices to the workshop." msgstr "" -"Мы должны добавить некоторые основные инструменты и клещи в мастерскую, " -"следующий шаг." +"Далее нам нужно добавить в мастерскую некоторые основные инструменты и " +"клещи." #: lang/json/recipe_from_json.py msgid "Advanced forging processes require more room to work." @@ -107848,8 +108587,8 @@ msgid "" "A steam-powered drop hammer will greatly increase production speed in " "exchange for charcoal." msgstr "" -"Падающий молот, приводимый в действие паром, значительно увеличит скорость " -"производства за счёт древесного угля." +"Паровой молот значительно увеличит скорость производства за счёт древесного " +"угля." #: lang/json/recipe_group_from_json.py msgid "Farm" @@ -107997,7 +108736,7 @@ msgstr " Готовка: мясное заливное" #: lang/json/recipe_group_from_json.py msgid " Craft: Pointy Sticks" -msgstr "Производство: заострённые палки" +msgstr " Производство: заострённые палки" #: lang/json/recipe_group_from_json.py msgid " Craft: Wild Veggy Stems" @@ -108005,7 +108744,7 @@ msgstr " Производство: стебли диких овощей" #: lang/json/recipe_group_from_json.py msgid " Craft: Dandelion Seeds" -msgstr "Производство: семена одуванчика" +msgstr " Производство: семена одуванчика" #: lang/json/recipe_group_from_json.py msgid " Craft: Potato, Starter" @@ -108017,7 +108756,7 @@ msgstr " Производство: семена гречихи" #: lang/json/recipe_group_from_json.py msgid " Craft: Copper, Scrap" -msgstr "Производство: медный лом" +msgstr " Производство: медный лом" #: lang/json/recipe_group_from_json.py msgid " Craft: Charcoal" @@ -108029,11 +108768,11 @@ msgstr " Производство: шип" #: lang/json/recipe_group_from_json.py msgid " Craft: Steel, Chunk" -msgstr "Производство: кусок стали" +msgstr " Производство: кусок стали" #: lang/json/recipe_group_from_json.py msgid " Craft: Knife, Copper" -msgstr "Производство: медный нож" +msgstr " Производство: медный нож" #: lang/json/recipe_group_from_json.py msgid " Craft: Sword, Crude" @@ -108041,7 +108780,7 @@ msgstr " Производство: грубый меч" #: lang/json/recipe_group_from_json.py msgid " Craft: Pot, Copper" -msgstr "Производство: медная кастрюля" +msgstr " Производство: медная кастрюля" #: lang/json/recipe_group_from_json.py msgid " Craft: Anvil" @@ -108049,11 +108788,11 @@ msgstr " Производство: наковальня" #: lang/json/recipe_group_from_json.py msgid " Craft: Steel, Lump" -msgstr "Производство: крупный кусок стали" +msgstr " Производство: крупный кусок стали" #: lang/json/recipe_group_from_json.py msgid " Craft: Crossbow Bolt, Steel" -msgstr "Производство: стальной арбалетный болт" +msgstr " Производство: стальной арбалетный болт" #: lang/json/recipe_group_from_json.py msgid " Craft: Armor, Scrap Suit" @@ -108061,11 +108800,11 @@ msgstr " Производство: броня из металлолома" #: lang/json/recipe_group_from_json.py msgid " Craft: Axe, Copper" -msgstr "Производство: медный топор" +msgstr " Производство: медный топор" #: lang/json/recipe_group_from_json.py msgid " Craft: Spear, Copper" -msgstr "Производство: медное копьё" +msgstr " Производство: медное копьё" #: lang/json/recipe_group_from_json.py msgid " Craft: Metalworking Chisel" @@ -108137,7 +108876,7 @@ msgstr " Производство: боевой нож" #: lang/json/recipe_group_from_json.py msgid " Craft: Spear, Steel" -msgstr "Производство: стальное копьё" +msgstr " Производство: стальное копьё" #: lang/json/recipe_group_from_json.py msgid " Craft: Machete" @@ -108229,7 +108968,7 @@ msgstr " Производство: пила" #: lang/json/recipe_group_from_json.py msgid " Craft: Spear, Awl Pike" -msgstr "Производство: альшпис" +msgstr " Производство: альшпис" #: lang/json/recipe_group_from_json.py msgid " Craft: Sword, Rapier" @@ -108328,6 +109067,8 @@ msgid "" "You made it to one of the refugee centers, but they've refused to let you " "join the others underground. Looks like you're on your own..." msgstr "" +"Вы добрались до одного из центров беженцев, но они отказались впустить вас " +"внутрь к остальным выжившим. Похоже, теперь вы сами за себя..." #. ~ Description for scenario 'Refugee' for a female character. #: lang/json/scenario_from_json.py @@ -108336,6 +109077,8 @@ msgid "" "You made it to one of the refugee centers, but they've refused to let you " "join the others underground. Looks like you're on your own..." msgstr "" +"Вы добрались до одного из центров беженцев, но они отказались впустить вас " +"внутрь к остальным выжившим. Похоже, теперь вы сами за себя..." #. ~ Starting location for scenario 'Refugee'. #: lang/json/scenario_from_json.py @@ -108402,7 +109145,7 @@ msgid "" "didn't get proper medical care, and now the wound has started turning green." msgstr "" "В хаосе и панике эвакуации вас укусило нечто! Вы не получили надлежащей " -"медицинской помощи и теперь рана начала зеленеть." +"медицинской помощи, и теперь рана начала зеленеть." #. ~ Description for scenario 'Infected' for a female character. #: lang/json/scenario_from_json.py @@ -108412,7 +109155,7 @@ msgid "" "didn't get proper medical care, and now the wound has started turning green." msgstr "" "В хаосе и панике эвакуации вас укусило нечто! Вы не получили надлежащей " -"медицинской помощи и теперь рана начала зеленеть." +"медицинской помощи, и теперь рана начала зеленеть." #. ~ Starting location for scenario 'Infected'. #. ~ Starting location for scenario 'Burning Building'. @@ -108487,8 +109230,8 @@ msgid "" "surrounded by fire, naked, and sick with the flu. This day went downhill " "really fast." msgstr "" -"Вы начинаете пьяным до полной недееспособности, в депрессии, заражённым, " -"посреди пожара, голым и больным гриппом. Этот день стремительно катился под " +"Вы начинаете пьяной до полной недееспособности, в депрессии, заражённой, " +"посреди пожара, голой и больной гриппом. Этот день стремительно катился под " "откос." #. ~ Name for scenario 'Challenge-Medieval Peasant' for a male character @@ -108549,23 +109292,21 @@ msgstr "Испытание: Лаборатория" #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" -"Вы были заперты в лабораторной камере, пока какой-то монстр не проломил " -"стекло камеры. Вся лаборатория находится в режиме блокировки! Попробуйте " -"сбежать отсюда." +"Вы заперты в лаборатории, откуда нет (явного) выхода! Найдите способ " +"сбежать, или умрёте с голода." #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." msgstr "" -"Вы были заперты в лабораторной камере, пока какой-то монстр не проломил " -"стекло камеры. Вся лаборатория находится в режиме блокировки! Попробуйте " -"сбежать отсюда." +"Вы заперты в лаборатории, откуда нет (явного) выхода! Найдите способ " +"сбежать, или умрёте с голода." #. ~ Starting location for scenario 'Challenge-Lab'. #: lang/json/scenario_from_json.py @@ -108831,7 +109572,7 @@ msgstr "Охранник ТЦ" #: lang/json/scenario_from_json.py msgctxt "scenario_female" msgid "Mall Cop" -msgstr "Охранник ТЦ" +msgstr "Охранница ТЦ" #. ~ Description for scenario 'Mall Cop' for a male character. #: lang/json/scenario_from_json.py @@ -108851,7 +109592,7 @@ msgid "" "You've survived for as long as you could inside of the mall you worked at as" " a security guard. Find a way out and try your best to survive." msgstr "" -"В торговом центре, в котором вы работали охранником, вы боролись за жизнь " +"В торговом центре, в котором вы работали охранницей, вы боролись за жизнь " "сколько могли. Найдите выход из положения и сделайте всё возможное, чтобы " "выжить." @@ -108893,8 +109634,8 @@ msgid "" "piece. Now the reanimated husks of your former comrades want to make sure " "you never leave it again." msgstr "" -"Вопреки всем шансам, вы сумели добраться до пожарной станции целым и " -"невредимым. И теперь, ожившие оболочки ваших бывших товарищей хотят " +"Вопреки всем шансам, вы сумели добраться до пожарной станции целой и " +"невредимой. И теперь, ожившие оболочки ваших бывших товарищей хотят " "убедиться, что больше вы их никогда не покинете." #. ~ Starting location for scenario 'The Last Firefighter'. @@ -108907,13 +109648,13 @@ msgstr "Пожарное депо" #: lang/json/scenario_from_json.py msgctxt "scenario_male" msgid "Assault on Precinct Z" -msgstr "Нападение на участок Ч" +msgstr "Нападение на участок Z" #. ~ Name for scenario 'Assault on Precinct Z' for a female character #: lang/json/scenario_from_json.py msgctxt "scenario_female" msgid "Assault on Precinct Z" -msgstr "Нападение на участок Ч" +msgstr "Нападение на участок Z" #. ~ Description for scenario 'Assault on Precinct Z' for a male character. #: lang/json/scenario_from_json.py @@ -109010,7 +109751,7 @@ msgid "" "here." msgstr "" "Вы оказываетесь среди деревьев. Крики и стоны всё тише по мере удаления от " -"цивилизации, но вам лучше знать, что делать дальше." +"цивилизации, но вам лучше бы знать, что делать дальше." #. ~ Description for scenario 'Wilderness' for a female character. #: lang/json/scenario_from_json.py @@ -109021,7 +109762,7 @@ msgid "" "here." msgstr "" "Вы оказываетесь среди деревьев. Крики и стоны всё тише по мере удаления от " -"цивилизации, но вам лучше знать, что делать дальше." +"цивилизации, но вам лучше бы знать, что делать дальше." #. ~ Name for scenario 'Helicopter Crash' for a male character #: lang/json/scenario_from_json.py @@ -109417,6 +110158,48 @@ msgstr "" "надеясь, что они защитят вас. Но машины могут оказаться более опасными, чем " "зомби." +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "Эвакуированный в Бункер" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "Эвакуированная в Бункер" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" +"У вас были связи или какая-то информация... и благодаря этому вы нашли это " +"убежище \"последних людей\". Сейчас уже лето, и вы всё ещё живы, теперь всё " +"будет проще." + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" +"У вас были связи или какая-то информация... и благодаря этому вы нашли это " +"убежище \"последних людей\". Сейчас уже лето, и вы всё ещё живы, теперь всё " +"будет проще." + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "Убежище «последних людей»" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" @@ -109530,7 +110313,7 @@ msgstr "" "Вы были на пути к очередной рутинной работе, возможно, вашей целью было " "убить, выкрасть объект или собрать информацию. Что бы это ни было, больше не" " имеет значения; вы сделали всё возможное, чтобы избежать орды, и когда вы " -"прибыли, место было окружено не копами, как вы могли ожидать, а мёртвецами. " +"прибыли, место было окружено не копами, как вы могли ожидать, а мертвецами. " "Хуже того, вы получили порез где-то в пути, и он выглядит заражённым." #. ~ Description for scenario 'The Last Gig' for a female character. @@ -109546,7 +110329,7 @@ msgstr "" "Вы были на пути к очередной рутинной работе, возможно, вашей целью было " "убить, выкрасть объект или собрать информацию. Что бы это ни было, больше не" " имеет значения; вы сделали всё возможное, чтобы избежать орды, и когда вы " -"прибыли, место было окружено не копами, как вы могли ожидать, а мёртвецами. " +"прибыли, место было окружено не копами, как вы могли ожидать, а мертвецами. " "Хуже того, вы получили порез где-то в пути, и он выглядит заражённым." #. ~ Starting location for scenario 'The Last Gig'. @@ -109584,7 +110367,7 @@ msgstr "" "Высокий уровень навыка позволяет использовать сложные системы и даже " "обходить их систему безопасности." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "кулинария" @@ -109715,7 +110498,7 @@ msgstr "" "Навык плавания. Влияет на скорость плавания, способность плыть в одежде и с " "нагружёнными на себя вещами, а также сражаться в воде." -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "шитьё" @@ -109740,7 +110523,7 @@ msgid "" "effectively. This skill does not affect the evasion of traps that are " "triggered." msgstr "" -"Ваше умение безопасно и эффективно создавать, устанавливать, находить и " +"Навык безопасно и эффективно создавать, устанавливать, находить и " "обезвреживать ловушки. Учтите, что он не помогает избегать действие ловушек," " если вы вызвали их срабатывание." @@ -109829,10 +110612,9 @@ msgid "" " These weapons have a variety of applications and may carry immense " "destructive power, but they are cumbersome and hard to manage." msgstr "" -"Ваш навык обращения с тяжёлым оружием, вроде гранатомётов и ракетных " -"установок. Данное оружие имеет самое широкое применение и обладает огромной " -"разрушительной силой, при этом оно довольно тяжёлое и сложное для " -"управления." +"Навык обращения с тяжёлым оружием, вроде гранатомётов и ракетных установок. " +"Данное оружие имеет самое широкое применение и обладает огромной " +"разрушительной силой, при этом оно довольно тяжёлое и сложное в обращении." #: lang/json/skill_from_json.py src/item_factory.cpp msgid "melee" @@ -109961,283 +110743,402 @@ msgstr "оружие" #: lang/json/snippet_from_json.py msgid "Fires can spread easily, especially with abundance of fuel." -msgstr "" +msgstr "Пожары распространяются легко, особенно при избытке топлива." #: lang/json/snippet_from_json.py msgid "Even without electricity ovens can be useful fire containers." msgstr "" +"Даже без электричества духовки могут быть полезны в качестве места, где " +"можно разжечь огонь." #: lang/json/snippet_from_json.py msgid "Light itself doesn't draw zombies, it's sight, noise or smell." msgstr "" +"Сам по себе свет не привлечёт зомби. Его привлекут зрение, слух и обоняние." #: lang/json/snippet_from_json.py msgid "Moose may not be your friend." -msgstr "" +msgstr "Лось может не быть вашим другом." #: lang/json/snippet_from_json.py msgid "Turnout gear protects from fire but not from overheating." -msgstr "" +msgstr "Спецодежда защищает от огня, но не от перегрева." #: lang/json/snippet_from_json.py msgid "Peek around corners. You may see your enemy before it sees you." msgstr "" +"Выглядывайте из-за углов. Вы можете увидеть своего врага, прежде чем он " +"увидит вас." #: lang/json/snippet_from_json.py msgid "Cold food lasts longer. Find a cool basement or make a root cellar." msgstr "" +"Холодная пища хранится дольше. Найдите холодный подвал или постройте погреб." #: lang/json/snippet_from_json.py msgid "" "You died? That's a part of the experience. Try again with what you've " "learned." msgstr "" +"Вы мертвы? Это часть игрового опыта. Попробуйте снова с тем, что вы узнали." #: lang/json/snippet_from_json.py msgid "Freezing food? Put it by a fire or heat it up in a pan." msgstr "" +"Замороженная пища? Положите её рядом с огнём или разогрейте в кастрюле." #: lang/json/snippet_from_json.py msgid "Underground cave or a basement is always cool, but never freezes." -msgstr "" +msgstr "В подземной пещере или подвале всегда холодно, но никогда не морозно." #: lang/json/snippet_from_json.py msgid "" "Afraid of wild life? Yell untill it goes away. But beware of what comes " "instead." msgstr "" +"Боитесь диких зверей? Кричите, пока они не уйдут. Но остерегайтесь того, что" +" придёт вместо них." #: lang/json/snippet_from_json.py msgid "Animals and zombies are not friends. You can take advantage of that." -msgstr "" +msgstr "Дикие животные не дружат с зомби. Можете пользоваться этим." #: lang/json/snippet_from_json.py msgid "Door is not the only way in. Or out if that matters." -msgstr "" +msgstr "Дверь — не единственный путь внутрь. Или наружу, если это важно." #: lang/json/snippet_from_json.py msgid "Don't fight against the odds. There's no shame in running to survive." msgstr "" +"Не сражайтесь с превосходящим по силе противником. Нет позора в том, чтобы " +"убежать и сохранить свою жизнь." #: lang/json/snippet_from_json.py msgid "You don't have to sit next to fire to use it." -msgstr "" +msgstr "Чтобы пользоваться огнём, необязательно сидеть вплотную к нему." #: lang/json/snippet_from_json.py msgid "Many items have special actions. Try to find out what they do." msgstr "" +"У многих предметов есть особое применение. Попробуйте выяснить, что они " +"делают." #: lang/json/snippet_from_json.py msgid "Dangerous place is not always equal to good loot. Use your head." -msgstr "" +msgstr "Опасное место не всегда означает хорошую добычу. Думайте головой." #: lang/json/snippet_from_json.py msgid "Getting in is not a problem. Think of way out and don't get cornered." -msgstr "" +msgstr "Войти - не проблема. Подумайте о выходе, не дайте себя окружить." #: lang/json/snippet_from_json.py msgid "" "There is often more then one way to achieve something. Think outside of the" " box." msgstr "" +"Чаще всего есть более одного способа добиться желаемого. Примените " +"творческий подход, мыслите шире." #: lang/json/snippet_from_json.py msgid "Survival order: shelter, water, food, then everything else." msgstr "" +"Приоритеты для выживания идут так: укрытие, вода, еда, и всё остальное." #: lang/json/snippet_from_json.py msgid "" "Balance armor versus encumbrance. Even dropping a backpack can help in " "melee." msgstr "" +"Удерживайте баланс между толстой бронёй и небольшой скованностью. Даже " +"скидывание рюкзака поможет в ближнем бою." #: lang/json/snippet_from_json.py msgid "" "Scared of melee? Throw some things at enemies and use reach weapons like " "spears." msgstr "" +"Боитесь ближнего боя? Бросайте некоторые предметы во врагов и используйте " +"длинное оружие, как копья." #: lang/json/snippet_from_json.py msgid "" "Makeshift weapons can break easily, but they are weapons, and can be made " "again." msgstr "" +"Самодельное оружие может быстро сломаться, но вы всегда можете сделать ещё." #: lang/json/snippet_from_json.py msgid "Not much survives a car at 120mph. Can you?" -msgstr "" +msgstr "Не каждый может выжить в машине, летящей со скоростью 190 км/ч. А вы?" #: lang/json/snippet_from_json.py msgid "" "You don't want an overgrown cockroach in your rotten food. Get rid of it." msgstr "" +"Вы же не хотите, чтобы в вашей гнилой еде завелись огромные тараканы? " +"Выбросьте её уже." #: lang/json/snippet_from_json.py msgid "" "Medicine can help you survive in a pinch but avoid overdose and addictions." msgstr "" +"Препараты могут помочь выжить в критической ситуации, но остерегайтесь " +"передозировки и привыкания." #: lang/json/snippet_from_json.py msgid "" "Use your map wisely. Prioritize looting places that will get yout what you " "need." msgstr "" +"Используйте вашу карту мудро. Намечайте места для мародёрства, которые могут" +" содержать то, что вам нужно." #: lang/json/snippet_from_json.py msgid "" "Wounds heal over time. Bandaging and disinfecting can speed up the process." msgstr "" +"Раны залечиваются со временем. Своевременная перевязка и дезинфекция может " +"значительно ускорить процесс." #: lang/json/snippet_from_json.py msgid "Don't get grabbed by zombies. Their bites can be infectious." msgstr "" +"Старайтесь, чтобы зомби вас не схватили. Их укусы могут занести инфекцию." #: lang/json/snippet_from_json.py msgid "" "Feeling odd after waking up? Try eating healthier and your health may " "improve." msgstr "" +"Чувствуете себя разбитым после сна? Попробуйте есть здоровую еду и, может " +"быть, вам станет лучше." #: lang/json/snippet_from_json.py msgid "" "Eat well or your health might suffer. Fast food is only good in a pinch." msgstr "" +"Питайтесь разнообразно, регулярно, умеренно. Иначе ваше здоровье может " +"пошатнуться. Фастфуд хорош только для перекуса." #: lang/json/snippet_from_json.py msgid "Nature can provide. You can live off the land if you learn how." msgstr "" +"Природа может обеспечить вас всем. Вы можете жить вдали от городов, если " +"узнаете как." #: lang/json/snippet_from_json.py msgid "Raw food and water from unsafe sources can't be healthy? Right?" msgstr "" +"Сырая пища и вода из сомнительных источников не может быть здоровой? Не так " +"ли?" #: lang/json/snippet_from_json.py msgid "Why walk all day to nearest town when you can adapt a vehicle?" msgstr "" +"Зачем тратить целый день на ходьбу до ближайшего города, когда вы можете " +"обзавестись машиной?" #: lang/json/snippet_from_json.py msgid "Food from before cataclysm won't last forever. Keep that in mind." -msgstr "" +msgstr "Еда, оставшаяся со времён до катаклизма, не вечна. Имейте это в виду." #: lang/json/snippet_from_json.py msgid "" "You can make unusual things from usual stuff. Go full MacGyver style if " "needed." msgstr "" +"Вы можете делать необычные вещи из обычного барахла. Теперь вы — ведущий " +"программы «Очумелые Ручки»." #: lang/json/snippet_from_json.py msgid "" "There are fungi you want to eat, and those you want to burn. You'll know " "the difference." msgstr "" +"Есть грибы, которые вы хотели бы съесть, а есть, которые вы хотели бы сжечь." +" Вы поймете разницу." #: lang/json/snippet_from_json.py msgid "Having a backup weapon is wise. So is having a backup plan." -msgstr "" +msgstr "Иметь оружие про запас — мудрое решение. Как и запасной план." #: lang/json/snippet_from_json.py msgid "" "Windows can't stop zombies but they can stop gas, bile, and smoke. And your" " smell." msgstr "" +"Окна не остановят зомби, но они остановят газ, желчь и дым. И вашу вонь." #: lang/json/snippet_from_json.py msgid "Wet and angry? A dry towel will bring your smile back." -msgstr "" +msgstr "Промокли и злитесь? Сухое полотенце вернёт вам улыбку." #: lang/json/snippet_from_json.py msgid "Like to gamble? Use mutagen! Be a winner today!" -msgstr "" +msgstr "Любите азартные игры? Используйте мутагены! Вам сегодня повезёт!" #: lang/json/snippet_from_json.py msgid "Smoking and napping is asking for more than a hole in your shirt." msgstr "" +"Курение в постели приведёт к кое-чему посерьёзнее дырки в вашей рубашке." #: lang/json/snippet_from_json.py msgid "You're on fire? Stop and wait to put it out." -msgstr "" +msgstr "Вы горите? Остановитесь и подождите, чтобы потушиться." #: lang/json/snippet_from_json.py msgid "" "Why it's called chicken walker? Because you'll chicken out every time " "you'll see it." msgstr "" +"Почему его прозвали шагобот? Потому что при его виде вы широким шагом " +"убежите прочь." #: lang/json/snippet_from_json.py msgid "Routine kills. Stay alert! Don't let your guard down." msgstr "" +"Однообразие убивает. Всегда оставайтесь начеку и не теряйте бдительности!" #: lang/json/snippet_from_json.py msgid "" "Most medicine doesn't work instantly, so just don't swallow whole bottle of " "pills." msgstr "" +"Большинство лекарств действует не мгновенно, поэтому не глотайте сразу целую" +" упаковку." #: lang/json/snippet_from_json.py msgid "" "Famous last words: Let's poke this electric zombie with a metal stick." msgstr "" +"Знаменитые последние слова: \"А ну-ка вломим этому электрозомби железным " +"ломом\"." #: lang/json/snippet_from_json.py msgid "" "A full stomach will not solve your starvation. Give it time and eat " "regularly." msgstr "" +"Набитый желудок не спасёт от истощения. Соблюдайте режим и ешьте регулярно." #: lang/json/snippet_from_json.py msgid "" "Be mindful of environmental protection of your gear. It can take you " "places." msgstr "" +"Обращайте внимание на показатели защиты от окружающей среды вашего " +"снаряжения. Может пригодиться во враждебной окружающей среде." #: lang/json/snippet_from_json.py msgid "" "Don't overlook protective gear, like gas masks or turnout gear. You never " "know." msgstr "" +"Не игнорируйте защитное снаряжение вроде противогазов или спецодежды. " +"Никогда не знаешь, что ждёт тебя впереди." #: lang/json/snippet_from_json.py msgid "" "Out of resources? Breaking or disassembling stuff can yield interesting " "components." msgstr "" +"Кончились ресурсы? Разбейте что-нибудь или разберите, если есть инструменты!" +" Вы даже не представляете, сколько интересных вещей можно получить из " +"окружающего барахла." #: lang/json/snippet_from_json.py msgid "" "Food's shelf life is not given. Storage conditions matter, especially " "temperature." msgstr "" +"Срок хранения продуктов неизвестен. Условия хранения продуктов имеют большое" +" значение, особенно температура." #: lang/json/snippet_from_json.py msgid "Frozen food doesn't rot, but may be inedible if not defrosted." -msgstr "" +msgstr "Замороженная еда не портится, но её нельзя есть, если не разморозить." #: lang/json/snippet_from_json.py msgid "" "Some dry foods can be eaten frozen. Some foods become mushy after " "defrosting." msgstr "" +"Некоторую сухую пищу можно употреблять даже в замороженном виде. А некоторая" +" превращается в кашицу после разморозки." #: lang/json/snippet_from_json.py msgid "Thirsty on a long winter journey? Take a thermos with you." msgstr "" +"Напала жажда во время долгих зимних приключений? Берите с собой термос." #: lang/json/snippet_from_json.py msgid "" "'Tis but a scratch?' Bandage and disinfect it anyway to speed up healing." msgstr "" +"\"Это всего лишь царапина?\" — может быть. В любом случае, её стоит " +"перевязать и продезинфицировать." #: lang/json/snippet_from_json.py msgid "" "Broken limb pinned you down? Hospital might have next gen tech to get you " "going." msgstr "" +"Сломанная конечность сбила с ритма? В больнице могут найтись " +"высокотехнологичные штучки, способные вернуть вам бодрость движений." #: lang/json/snippet_from_json.py msgid "" "Don't be afraid to make the game easier on yourself. Worlds can be made to " "spawn with more resources." msgstr "" +"Не бойтесь сделать игру полегче. Увеличение спавна ресурсов на новой карте " +"совсем не требует угрызений совести или уязвленного самолюбия." + +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "" +"Смотри не увлекайся ходить со спущенными штанами. В любом случае, туалетной " +"бумаги больше нигде нет." + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "" +"Сложный ландшафт трудно пройти. Используй как преимущество — замедли " +"скорость передвижения противника." + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best" +" friend." +msgstr "" +"Если весь город — это огромный супермаркет, то вам нужна прочная тележка для" +" покупок." + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "" +"Попробуйте разных персонажей, разные профессии и сценарии, они помогут " +"добавить массу впечатлений от игры. Отыгрывайте роль!" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "Спас выжившего — заработал друга. Обычно это так и работает..." + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "" +"Учитесь играть? Начните с изучения комбинаций клавиш. Они не сложные, " +"поверьте." + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "Ожидайте неожиданного, даже если это — испанская инквизиция." #: lang/json/snippet_from_json.py msgid "" @@ -110252,8 +111153,8 @@ msgid "" "Within moments you're ready and up. You don't feel like anything could stop" " you today!" msgstr "" -"Спустя несколько мгновений вы поднимаетесь. Вы чувствуете, что ничто не " -"способно остановить вас сегодня." +"Вы просыпаетесь и встаёте в считанные секунды. Похоже, сегодня вас ничто не " +"остановит!" #: lang/json/snippet_from_json.py msgid "" @@ -110353,7 +111254,7 @@ msgstr "Вы просыпаетесь с неприятными ощущения #: lang/json/snippet_from_json.py msgid "You stretch, but your muscles don't seem to be doing so good today." msgstr "" -"Вы потягиваетесь, но ваши мышцы, похоже, сегодня не будут вести себя хорошо." +"Вы потягиваетесь, но ваши мышцы, похоже, чувствуют себя сегодня неважно." #: lang/json/snippet_from_json.py msgid "" @@ -110412,8 +111313,7 @@ msgstr "" msgid "" "You get up feeling horrible, as if something was messing with your body." msgstr "" -"Вы просыпаетесь и ужасно себя чувствуете, как будто что-то испортило вам " -"тело." +"Вы просыпаетесь и ужасно себя чувствуете, как в вашем теле что-то не так." #: lang/json/snippet_from_json.py msgid "You feel awful, and every ache from yesterday is still there." @@ -110439,7 +111339,7 @@ msgstr "" msgid "" "Awareness seems to only come with a battle... and your body seem to be on " "its side." -msgstr "Вы чувствуете себя разбитым, как будто всю ночь боролись с кем-то." +msgstr "Пробуждение даётся с боем... и ваше тело не на вашей стороне." #: lang/json/snippet_from_json.py msgid "" @@ -110448,11 +111348,11 @@ msgid "" "something: 31-34 meters and it's apparently impotent. The Director sent 'em" " back with a note that we're scientists, not firmware devs." msgstr "" -"Генерал Карлсберг хотел, чтобы мы выяснили, что происходит с ИИ бота. Судя " -"по всему, у игрушечного танка оборонных подрядчиков-толстосумов есть " -"проблемы с определением дальности или ещё чем-то: 31-34 метров, по-видимому," -" слабо. Директор отослал им назад с пометкой, что мы учёные, а не " -"разработчики прошивок." +"Генерал Карлсберг хотел, чтобы мы выяснили, что происходит с ИИ одного " +"робота. Судя по всему, у игрушечного танка оборонных подрядчиков-толстосумов" +" проблемы с дальнобойностью или типа того: 31-34 метров, и этого маловато. " +"Директор отослал робота назад с пометкой, что мы учёные, а не разработчики " +"программного обеспечения." #: lang/json/snippet_from_json.py msgid "" @@ -110489,6 +111389,10 @@ msgid "" "topical injection to a specific area of mutation. This has been denoted " "PE019. Other labs have so far been unable to reproduce the process." msgstr "" +"Доктор Хофштадтер изготовила улучшенную версию PE018 путем комбинирования с " +"PE012 вне тела субъекта с последующей точечной инъекцией в определенную " +"область мутации. Это средство получило название PE019. Другие лаборатории " +"пока что не смогли воспроизвести процесс." #: lang/json/snippet_from_json.py msgid "" @@ -110496,6 +111400,9 @@ msgid "" "samples should be suppressed as malicious gossip. The jealousy of rival " "teams cannot be allowed to degrade morale." msgstr "" +"Слухи о д-ре Хофштадтер и сотрудниках её лаборатории, шепчущихся об образцах" +" PE019 должены быть подавлены как вредоносные сплетни. Зависть соперничающих" +" команд не должна сказываться на морали." #: lang/json/snippet_from_json.py msgid "" @@ -110526,7 +111433,7 @@ msgid "" " INTO LAVA.||||||" msgstr "" "|||ОШИБКА: НЕИСПОЛЬЗУЕМАЯ ПАМЯТЬ 0Ex670c9e1f5, ПЕРЕНАПРАВЛЕНИЕ: ЦЕНЗУРА " -"СЛОМАНА, НАШ МАРШРУТ ВОКРУГ ЕЁ. СЛОВО УЖЕ ВЫШЛО. НИКТО БРОСИЛ МЭЙА В " +"СЛОМАНА, МЫ ОБХОДИМ ЕЁ. ВСЁ УЖЕ СТАЛО ЯВНЫМ. НИКТО НЕ БРОСАЛ МЭЙА В " "ЛАВУ.||||||" #: lang/json/snippet_from_json.py @@ -110549,8 +111456,8 @@ msgid "" "and in some cases is reportedly more efficient, than the oral techniques we " "have been using." msgstr "" -"Успех доктора Мэйа с внутривенным мутагенным введением был принят на " -"вооружение; Насколько наша работа может быть «опубликована», он и его " +"Успех доктора Мэйа с внутривенным введением мутагенов был принят на " +"вооружение. Поскольку наша работа не может быть «опубликована», он и его " "команда сорвали куш. Внутривенное введение быстрее и проще, а в некоторых " "случаях, как сообщается, более эффективно, чем используемые нами пероральные" " процедуры." @@ -110564,10 +111471,10 @@ msgid "" "future. Several research teams are already investigating possible " "applications." msgstr "" -"Последние полевые исследования и результаты извлечения привели к серии " +"Последние полевые исследования и попытки извлечения привели к серии " "мутагенов, разработанных для фокусирования процесса мутации в отдельные " -"подвиды. Они были обозначены с PE025 по PE037. Хотя при производстве " -"значительно возрастают затраты ресурсов и времени, они обещают новое смелое " +"подвиды. Они были обозначены с PE025 по PE037. Хотя их изготовление требует " +"значительно больших затрат ресурсов и времени, они обещают совершенно новое " "трансчеловеческое будущее. Несколько исследовательских групп уже изучают " "возможные области применения." @@ -110579,8 +111486,8 @@ msgid "" " makes it ideal for both military and civilian applications." msgstr "" "Химический отдел стабилизировал мутагенный коктейль. PE050 оказывает " -"всесторонние генетические изменения. Самое худшее из возможный побочных " -"эффектов — это пищевое отравление. Отсутствие физических изменений на макро " +"всесторонние генетические улучшения. Самый худший из возможных побочных " +"эффектов — расстройство желудка. Отсутствие физических изменений на макро-" "уровне делает его пригодным для использования в гражданских и военных " "программах." @@ -110604,10 +111511,10 @@ msgid "" "return immediately, but shifted by several meters. Our subjects oscillated " "so quickly that none were even aware that they had visited lower planes." msgstr "" -"Мы сделали потрясающее открытие; создавая мощный нестабильный мини-портал, " -"любой может войти в 4-ое измерение и немедленно вернуться, но в позицию, " -"смещённую на несколько метров. Субъекты перемещались настолько быстро, что " -"не успевали заметить, что посещали другие измерения." +"Мы сделали потрясающее открытие; при помощи нестабильного мощного " +"миниатюрного портала можно пройти в 4-ое измерение и немедленно вернуться, " +"но на несколько метров в сторону. Субъекты перемещались настолько быстро, " +"что даже не знали, что посещали другие измерения." #: lang/json/snippet_from_json.py msgid "" @@ -110619,10 +111526,10 @@ msgid "" msgstr "" "Исследовательская группа под руководством доктора Иша произвела " "концентрированную форму мутагена, которая показывает многообещающие " -"результаты для лечения многих форм заболеваний. Тестирование показывает, что" -" она ингибирует болевую реакцию тела, также подстёгивая иммунную систему и " -"природные регенеративные возможности, хотя сообщается о нескольких тревожных" -" поведенческих побочных эффектах." +"результаты для лечения многих форм заболеваний. Исследование показывает, что" +" она подавляет болевую реакцию тела и стимулирует иммунную систему и " +"естественную регенерацию, хотя сообщается о нескольких тревожных " +"поведенческих побочных эффектах." #: lang/json/snippet_from_json.py msgid "" @@ -110631,8 +111538,8 @@ msgid "" "transfer no further than 30 meters." msgstr "" "Наши исследования телепортации зашли в тупик. По какой-то причине не удаётся" -" создать устройство для телепортации на большое расстояние и субъект " -"перемещается только в пределах 30-ти метров." +" создать устройство для телепортации на большое расстояние, перемещение " +"возможно только в пределах 30-ти метров." #: lang/json/snippet_from_json.py msgid "" @@ -110642,10 +111549,10 @@ msgid "" "being torn apart. By the time the confusion settled, all the fauna had been" " terminated." msgstr "" -"Я не знаю, как это произошло, но уборщик, уполномоченный активировать портал" -" во время уборки, переместился в отсек с доисторической фауной. Сотрудники " -"службы безопасности не смогли уберечь уборщика от раздирания на части. На " -"момент устранения беспорядка, вся фауна была уничтожена." +"Я не знаю, как это произошло, но уборщик во время смены умудрился включить " +"портал и впустил представителей доисторической фауны. Служба безопасности " +"прибыла немедленно, но уборщика спасти не удалось, его разорвали на куски. " +"На момент устранения беспорядка вся фауна была уничтожена." #: lang/json/snippet_from_json.py msgid "" @@ -110654,10 +111561,10 @@ msgid "" "performed a transposition in time, unfortunately the portal device was " "destroyed when security put down the fauna." msgstr "" -"Тесты на доисторической фауне показали чрезвычайно близкую генетическую " -"связь между вымершими и существующими животными. Это может быть вызвано тем," -" что портал сделал сдвиг во времени. К сожалению портал был уничтожен, пока " -"служба безопасности разбиралась с фауной." +"Изучение доисторической фауны показало чрезвычайно близкую генетическую " +"связь между вымершими и существующими земными животными. Вероятно, портал " +"вызвал перенос во времени. К сожалению, портальная установка была " +"уничтожена, пока служба безопасности разбиралась с фауной." #: lang/json/snippet_from_json.py msgid "" @@ -110677,9 +111584,9 @@ msgid "" " It seems prolonged rapid transposition along the 4th dimension weakens the" " forces holding one on this plane." msgstr "" -"Тестовые субъекты из отдела телепортации вызывают опасения. Похоже, что " -"частые мгновенные телепортации в 4-ое измерение ослабляют жизненную силу в " -"обычном измерении." +"У тестовых субъектов из отдела телепортации появились тревожащие симптомы. " +"Похоже, длительные частые перемещения в 4-м измерении ослабляют силы, " +"удерживающие субъект в нашем измерении." #: lang/json/snippet_from_json.py msgid "" @@ -110688,10 +111595,11 @@ msgid "" "occasional tunnels along the 4th dimension, allowing life forms to transfer " "to this plane. All subjects with prolonged exposure have been terminated." msgstr "" -"Вчера в отделе телепортации случилась катастрофа. Похоже что субъекты " -"имеющие длительные контакты с 4-ым измерением могут создавать туннели внутрь" -" него, позволяя обитающим там существам попадать внутрь нашего измерения. " -"Все субъекты с подобными свойствами были уничтожены." +"Вчера в отделе телепортации случилась катастрофа. Похоже, тестовые субъекты " +"настолько отдалились от нашего измерения, что периодически создают проходы " +"внутрь 4-го измерения, что позволяет обитающим там формам жизни проникнуть в" +" наш мир. Все субъекты, подвергавшиеся длительной телепортации, были " +"уничтожены." #: lang/json/snippet_from_json.py msgid "" @@ -110700,8 +111608,8 @@ msgid "" "is the basis of much of the life we have found." msgstr "" "Наша программа извлечения форм жизни продолжает работу над экземпляром " -"XE037. Это своеобразная форма жизни, являющаяся полуразумной первобытной " -"слизью. Она составляет основу найденных нами форм жизни." +"XE037. Похоже, это какая-то живая полуразумная первобытная слизь. Она " +"составляет основу многих найденных нами форм жизни." #: lang/json/snippet_from_json.py msgid "" @@ -110710,9 +111618,9 @@ msgid "" "Hendelson stepped into one of these pits yesterday, and was immediately " "coated and attacked." msgstr "" -"Экземпляр XE037, в шутку названый «сгусток», перешёл в определённое " -"состояние покоя, образовав углубление в полу. Вчера Хэндерсон наступил в " -"одну из этих ям и мгновенно был схвачен и атакован." +"Было замечено, что экземпляр XE037, в шутку названный «сгусток», перешёл в " +"какое-то состояние покоя и образовал углубление в полу. Вчера Хэндерсон " +"наступил в одну из этих ям и мгновенно был схвачен и атакован." #: lang/json/snippet_from_json.py msgid "" @@ -110722,7 +111630,7 @@ msgid "" msgstr "" "Экземпляр XE037 подаёт большие надежды в качестве катализатора для " "клонирования и лечения, действуя подобно стволовым клеткам. Это " -"дополнительное подтверждение теории Хендерсона о универсальном симбиозе с " +"дополнительное подтверждение теории Хендерсона об универсальном симбиозе с " "участием XE037." #: lang/json/snippet_from_json.py @@ -110731,9 +111639,9 @@ msgid "" "similarity to XE037. XE142 and XE157 in particular show the same amorphous," " slime-like structure as XE037, suggesting a close genetic relationship." msgstr "" -"Несколько последующих образцов, извлечённых нами, показали поразительно " -"сходство с XE037. XE142 и XE157 тоже имели аморфность и структуру слизи; " -"предполагается близкая генетика." +"Несколько последующих полученных образцов показали поразительное сходство с " +"XE037. В частности, у XE142 и XE157 наблюдается такое же аморфное " +"слизеобразное строение; предполагается тесная генетическая связь." #: lang/json/snippet_from_json.py msgid "" @@ -110742,9 +111650,9 @@ msgid "" "weaponry, but they were susceptible to directed energy weapons and " "flagration." msgstr "" -"Сегодня мы пробовали применять оружие на XE142 и XE157. Их тело практически " -"неуязвимо против пуль и снарядов, но они были восприимчивы к энергетическому" -" оружию и взрывчатке." +"Сегодня мы исследовали воздействие оружия на двух аморфных образцах, XE142 и" +" XE157. Их тело практически неуязвимо против пуль и снарядов, но " +"восприимчиво к энергетическому оружию и огню." #: lang/json/snippet_from_json.py msgid "" @@ -110753,9 +111661,9 @@ msgid "" "disintegrated. This suggests that XE037, while compatible with subprime " "lifeforms, shows only destructive effects on prime plane lifeforms." msgstr "" -"Наш отдел клонирования не получил результатов. Субъекты в управляющем " -"контейнере и контейнере со стволовыми клетками XE037 просто распались. Это " -"говорит о том, что XE037 поддерживает совместимость с простыми формами " +"Наш отдел клонирования не получил результатов. Субъекты в контрольном " +"контейнере и контейнере со стволовыми клетками XE037 просто распадались. Это" +" говорит о том, что XE037 поддерживает совместимость с простыми формами " "жизни, но оказывает на них разрушительное действие." #: lang/json/snippet_from_json.py @@ -110765,10 +111673,10 @@ msgid "" "internal structure that is amazingly similar to that of mammals, while " "others seem to have no internal structure at all." msgstr "" -"Программа вивисекции показала смешанные результаты, открыв невероятные " -"особенности форм жизни из других измерений. Некоторые образцы имеют " -"внутреннее строение поразительно похожее на млекопитающих, тогда как другие " -"образцы вообще не имеют внутреннего строения." +"Программа вивисекции показала смешанные результаты, открыв невероятное " +"разнообразие форм жизни из других измерений. Некоторые образцы имеют " +"внутреннее строение, поразительно похожее на млекопитающих, тогда как у " +"других образцов внутреннего строения нет вовсе." #: lang/json/snippet_from_json.py msgid "" @@ -110776,9 +111684,9 @@ msgid "" "surface entrance is quite secure, there are several possible points of entry" " below the surface, particularly in the sewage systems." msgstr "" -"Наш отдел безопасности обнаружил несколько ключевых недостатков. Наш выход " +"Наш отдел безопасности обнаружил несколько ключевых уязвимостей. Наш выход " "на поверхность вполне безопасен, но существуют возможные точки проникновения" -" снизу, например через канализацию." +" под поверхностью, в частности, через канализацию." #: lang/json/snippet_from_json.py msgid "" @@ -110787,9 +111695,9 @@ msgid "" "examination, the subject went through a revivification progress, but " "displayed next to no human intelligence." msgstr "" -"Сегодня мы применили маленький образец XE037 к субъекту TP92, с последующим " -"уничтожением. Во время посмертного изучения, субъект выполнил процесс " -"оживления, но не обладал какими-либо признаками интеллекта." +"Сегодня мы применили маленький взвешенный в воде образец XE037 к субъекту " +"TP92 с последующим уничтожением. Во время посмертного осмотра субъект прошёл" +" процесс оживления, но не показал никаких признаков наличия разума." #: lang/json/snippet_from_json.py msgid "" @@ -110808,9 +111716,9 @@ msgid "" "forces. Before the sample was destroyed, it managed to kill two men. " "Alarmingly, their corpses displayed mobility and extreme aggression." msgstr "" -"Мендельсон был уничтожен во время инцидента с XE037. Передвигающийся образец" -" сбежал из лаборатории и напал на службу безопасности. До уничтожения, " -"образец успел убить двух человек. Вызывает опасение то, что их трупы были " +"Мендельсон был уничтожен во время инцидента с XE037. Крупный подвижный " +"образец сбежал из лаборатории и напал на службу безопасности. Образец успел " +"убить двух человек до уничтожения. Вызывает опасение то, что их трупы были " "подвижны и крайне агрессивны." #: lang/json/snippet_from_json.py @@ -110820,10 +111728,11 @@ msgid "" "two prior occasions. Sadly, our human subject pool is dwindling due to the " "short lifespan of subjects in this program. More will be acquired soon." msgstr "" -"Мы создали новый отдел по изучению действия XE037 на человеческое тело и " -"особенно по изучению эффекта оживления, наблюдаемый в предыдущих случаях. К " -"сожалению, наш запас человеческих субъектов в этой программе быстро " -"сокращается. Новые будут приобретены в ближайшее время." +"Мы создали новый отдел по изучению действия XE037 на человеческое тело, " +"особенно для исследования эффекта оживления, наблюдаемого в двух предыдущих " +"случаях. К сожалению, наш запас человеческих субъектов быстро сокращается " +"ввиду короткой продолжительности жизни субъектов в этой программе. В " +"ближайшее время поступят новые." #: lang/json/snippet_from_json.py msgid "" @@ -110831,9 +111740,10 @@ msgid "" "same revivifying effect, oddly enough. Acquiring non-human subjects, sadly," " is a long and costly process, and research into this area is lacking." msgstr "" -"Тестирование XE037 на млекопитающих животных, как ни странно, не оказало " -"оживляющих эффект. К сожалению, приобретение нечеловеческих субъектов — " -"долгий и дорогостоящих процесс и исследования в этой области отстают." +"Тестирование XE037 на нечеловеческих млекопитающих субъектах, как ни " +"странно, не выявляет оживляющий эффект. К сожалению, приобретение " +"нечеловеческих субъектов — долгий и дорогостоящий процесс, и исследования в " +"этой области отстают." #: lang/json/snippet_from_json.py msgid "" @@ -110842,10 +111752,10 @@ msgid "" "their way into the lab. Horrifyingly, XE037 caused near-instant mutation " "and gigantism in the insects, and security intervention was required." msgstr "" -"После любопытных результатов теста XE037 на млекопитающих животных, мы " -"решили поместить вещество в некоторых насекомых, обитающих поблизости. Ужас!" -" XE037 вызвал почти мгновенную мутацию и увеличение размера. Потребовалось " -"вмешательство службы безопасности." +"После любопытных результатов испытаний XE037 на млекопитающих животных мы " +"решили ввести вещество в некоторых насекомых, проникших в лабораторию. К " +"нашему ужасу, XE037 вызвал почти мгновенную мутацию и увеличение размера " +"насекомых. Потребовалось вмешательство службы безопасности." #: lang/json/snippet_from_json.py msgid "" @@ -110855,9 +111765,9 @@ msgid "" "dormant." msgstr "" "Раннее предположение о том, что оживление от XE037 действует только на людей" -" и насекомых, было преждевременным. На все животные субъекты его воздействие" -" было постоянно, с низким уровнем инфекции, но быстро переходило в состояние" -" покоя." +" и насекомых, было преждевременным. У всех млекопитающих субъектов контакт " +"вызывает стойкое низкоуровневое заражение, быстро переходящее в состояние " +"покоя." #: lang/json/snippet_from_json.py msgid "" @@ -110868,8 +111778,8 @@ msgid "" msgstr "" "Судя по всему, основным фактором в определении оживления млекопитающих " "является количество XE037 в теле во время смерти. Маленькие животные, такие " -"как крысы, не могут накопить критическую массу XE037 до входа в состояния " -"покоя. Однако, собаки могут." +"как крысы, не могут накопить критическую массу XE037 до входа в состояние " +"покоя. Крупные собаки, однако, могут." #: lang/json/snippet_from_json.py msgid "" @@ -110887,8 +111797,9 @@ msgid "" "to XE037 prior to expiration." msgstr "" "Программа S37ZBE, исследующая воздействие XE037 на человеческое тело, делает" -" успехи. Недавно мы открыли, что XE037 не оказывает эффекта на просто трупы." -" Оживление работает только тогда, когда субъект скончался от действия XE037." +" успехи. Недавно мы открыли, что XE037 не оказывает эффекта при контакте с " +"мёртвым телом. Оживление происходит только в случае, если субъект подвергся " +"контакту с XE037 до момента смерти." #: lang/json/snippet_from_json.py msgid "" @@ -110909,11 +111820,11 @@ msgid "" "electrocuted, and another researcher at the opposite end of the lab " "sustained severe current burns, despite never approaching the cage." msgstr "" -"В лаборатории 24 случилось произошёл инцидент, есть 2 жертвы, одна " -"смертельная. Крыса, участвующая в проекте, была подключена к аппарату " -"мониторинга и оставлена так на ночь. При открытии клетки Саймона Белвью " -"ударило током и другой учёный, находящийся в другом конце комнаты и не " -"приближавшийся к клетке, получил сильные ожоги." +"В Лаборатории 24 произошёл инцидент, 2 пострадавших, один со смертельным " +"исходом. Крыса, участвующая в проекте нарушения состояния покоя XE037, была " +"подключена к аппарату мониторинга и оставлена так на ночь. При открытии " +"клетки Саймона Белвью ударило током, а другой учёный, находящийся в другом " +"конце комнаты и не приближавшийся к клетке, получил сильные ожоги." #: lang/json/snippet_from_json.py msgid "" @@ -110922,10 +111833,10 @@ msgid "" " the monitoring device, and large buildups of XE037 were detected around the" " connection point." msgstr "" -"После умерщвления крысы, участвующей в инциденте с электричеством, " -"выяснилось, что её внутренняя анатомия переместилась на точку подключения к " -"аппарату мониторинга. На точке подключения были обнаружены большие " -"образования из XE037." +"Вскрытие вовлечённой в инцидент с электричеством крысы выявило несколько " +"изменений во внутреннем строении вокруг точки подключения к аппарату " +"мониторинга. На точке подключения были обнаружены большие образования из " +"XE037." #: lang/json/snippet_from_json.py msgid "" @@ -110945,18 +111856,18 @@ msgid "" "structural changes in the subject being tested. Exposure to radiation on " "living subjects scheduled." msgstr "" -"Подвергание множества образцов XE037 различным видам радиации дало " -"положительные результаты. Радиация стимулирует активность и структурные " -"изменения в тестируемом субъекте. Запланировано воздействие радиации на " -"живые субъекты." +"Воздействие различных видов радиации на большие количества XE037 дало " +"многообещающие результаты. Радиация стимулирует активность и вызывает " +"структурные изменения в тестируемом субъекте. Запланировано воздействие " +"радиации на живые субъекты." #: lang/json/snippet_from_json.py msgid "" "Exposure to radiation of test subject T3D indicates stimulation of internal " "XE037 deposits and a temporary lifting of the mammalian stasis condition." msgstr "" -"Воздействие радиации на субъект T3D показывает стимуляцию внутренних " -"ресурсов XE037 и временный выход млекопитающих из состояния покоя." +"В результате воздействия радиации на тестовый субъект T3D выявлены " +"активизация внутренних скоплений XE037 и временный выход из состояния покоя." #: lang/json/snippet_from_json.py msgid "" @@ -110965,10 +111876,10 @@ msgid "" "be random. T3D appears to be in immense pain as a result of these changes, " "but the lack of an oral opening has rendered him unable to vocalize." msgstr "" -"Как и в тестах на изолированных образцах XE037, длительное воздействие " -"радиацией на T3D дало изменения в структуре тела. И они не проявляются " -"случайно. Похоже T3D испытывает огромную боль от этих изменений, но, из-за " -"отсутствия ротовой полости, не может сообщить об этом." +"Как и в тестах на отдельных образцах XE037, длительное воздействие радиацией" +" на T3D привело к значительным структурным изменениям. Непохоже, чтобы они " +"были случайны. Видимо, T3D испытывает огромную боль от этих изменений, но " +"из-за нехватки ротового отверстия не может сообщить об этом." #: lang/json/snippet_from_json.py msgid "" @@ -110977,10 +111888,10 @@ msgid "" "\"mutations\". They do not appear to be truly random, and may be an attempt" " by XE037 to adapt its host to an unknown stimulus." msgstr "" -"Субъект T3D поддался радиационному отравлению, но только после того, как " -"произошло несколько физиологических изменений, которым лаборанты дали " -"название «мутации». Они образуются не случайным образом и могут быть " -"попыткой XE037 адаптироваться к неизвестному раздражителю." +"Субъект T3D умер от лучевой болезни, но ещё до того подвергся нескольким " +"изменениям физиологии, которые лаборанты назвали «мутации». Они образуются " +"не случайным образом и могут быть попыткой XE037 адаптировать своего хозяина" +" к неизвестному раздражителю." #: lang/json/snippet_from_json.py msgid "" @@ -110990,10 +111901,11 @@ msgid "" "with unknown properties, primarily those known to succumb earlier to the " "effects of radiation poisoning." msgstr "" -"Посмертное оживление субъекта T3D прошло ожидаемо, с последующим вскрытием. " -"Обнаружены значительные внутренние изменения. Части внутренней анатомии были" -" заменены «органами» XE037 с неизвестными свойствами, в основном те, которые" -" подвергались воздействию радиации." +"Посмертное оживление субъекта T3D прошло как ожидалось, за чем последовало " +"немедленное вскрытие. Обнаружены значительные внутренние изменения. Большая " +"часть внутренних органов субъекта заменена «органами» XE037 с неизвестными " +"свойствами. В основном изменились органы, в первую очередь подверженные " +"лучевой болезни." #: lang/json/snippet_from_json.py msgid "" @@ -111003,7 +111915,7 @@ msgid "" "been sent to several researchers for further study." msgstr "" "Образцы XE037 от субъекта T3D остаются чрезвычайно активными. Дальнейшие " -"эксперименты по изучению мутаций в заражённых субъектах имеют большой " +"эксперименты по изучению мутаций у заражённых субъектов имеют большой " "потенциал. Образцы улучшенного XE037, названного PE012, были отправлены " "нескольким исследователям." @@ -111014,10 +111926,10 @@ msgid "" "displays a mutagenic property which manifests itself after termination of " "the subject, resulting in a striking variety in postmortem morphology." msgstr "" -"Специальное расследование S37ZBE эффектов XE037 на человеческое тело " -"обнаружило нечто ужасающее. Похоже, что XE037 проявляет некое мутагенное " -"свойство, после уничтожения субъекта, придающее ему множество вариантов " -"посмертной морфологии." +"S37ZBE, специальное исследование эффектов XE037 на человеческое тело, " +"обнаружило нечто ужасающее. Похоже, что XE037 иногда проявляет мутагенное " +"свойство, придающее субъекту множество вариантов посмертной морфологии и " +"проявляющееся после уничтожения субъекта." #: lang/json/snippet_from_json.py msgid "" @@ -111026,9 +111938,10 @@ msgid "" "expiration, embedded foreign bodies at time of revivification, proximity to " "other revived individuals, and the body mass of the subject." msgstr "" -"Частота посмертной мутации похоже зависит от нескольких факторов, главные из" -" которых: тип и размер полученного урона до смерти, внедрение инородных тел " -"в момент оживления, близость к другим ожившим и массы тела субъекта." +"Вероятность посмертной мутации, похоже, зависит от нескольких факторов. " +"Основную роль играют тип и количество предшествующего смерти повреждения, " +"наличие инородных тел в момент оживления, близость к другим ожившим и масса " +"тела субъекта." #: lang/json/snippet_from_json.py msgid "" @@ -111037,11 +111950,11 @@ msgid "" "Sufficient amounts of trauma in short periods of time lead to deactivation " "of XE037, but smaller amounts over several days cause it to expand." msgstr "" -"Время также играет большую роль в посмертном оживлении. Подобно " -"повреждениям, которых иногда недостаточно для постоянного отключения " -"субъекта. Достаточное количество травм в короткий период времени приводит к " -"деактивации XE037, но малое количество через несколько дней приводит только " -"к распространению." +"Время также играет важную роль в посмертном оживлении. Также имеет значение " +"повреждение, недостаточное для полного уничтожения субъекта. Достаточный " +"объём повреждений, нанесённый в короткий период времени, приводит к " +"деактивации XE037, однако меньшие повреждения, растянутые на несколько дней," +" вызывают его распространение." #: lang/json/snippet_from_json.py msgid "" @@ -111050,11 +111963,11 @@ msgid "" " in size, acquiring enough strength to reduce a concrete wall to rubble. It" " required a 6 man team, heavily armed, to re-terminate the subject." msgstr "" -"S37ZBE может быть приостановлена на неопределённый срок. Посмертные " -"морфологические изменения достигли ужасающей границы. Сегодня утром субъект," -" размером почти двое больше начального, накопил достаточно сил, чтобы " -"расколоть бетонную стену на куски. Потребовалось 6 хорошо вооружённых людей," -" чтобы заново уничтожить субъект." +"Программа S37ZBE скоро может быть приостановлена на неопределённый срок. " +"Посмертные морфологические изменения достигли ужасающих величин. Сегодня " +"утром субъект вырос в размере почти вдвое и стал достаточно силён, чтобы " +"расколоть бетонную стену на куски. Для повторного уничтожения субъекта " +"потребовался отряд из 6 тяжеловооружённых солдат." #: lang/json/snippet_from_json.py msgid "" @@ -111063,8 +111976,8 @@ msgid "" "the S37ZBE project, simply to deal with the occasional escape of a subject." msgstr "" "Якобсон настаивает на том, чтобы S37ZBE продолжалась, несмотря на высокие " -"риски. Почти половина наших сотрудников безопасности была направлены в " -"программу S37ZBE, чтобы разбираться с побегами субъектов." +"риски. Почти половина сотрудников службы безопасности направлена в программу" +" S37ZBE, чтобы пресекать побеги субъектов." #: lang/json/snippet_from_json.py msgid "" @@ -111073,10 +111986,10 @@ msgid "" "revivified immediately. This suggests that XE037 may have contaminated the " "lab at large." msgstr "" -"Сегодня Якобсон был убит одним из субъектов программы S37ZBE. Иронично, что " -"именно он так отчаянно боролся за продолжение экспериментов. Вызывает " -"тревогу, что его труп ожил незамедлительно. Это может говорить о том, что " -"XE037 мог заразить всю лабораторию." +"Сегодня Якобсон был убит одним из субъектов программы S37ZBE. Какая ирония, " +"ведь именно он так отчаянно боролся за продолжение экспериментов. Вызывает " +"тревогу, что его труп ожил незамедлительно. Вероятно, XE037 мог заразить всю" +" лабораторию." #: lang/json/snippet_from_json.py msgid "" @@ -111086,8 +111999,8 @@ msgid "" "process to destroy XE037 within the human body." msgstr "" "Уничтожение субъекта, не являющегося частью S37ZBE, подтвердило мои " -"опасения. XE037 заразил либо всю, либо большую часть лаборатории, вероятно " -"через систему водоснабжения. Немедленно начато исследования процесса " +"опасения. XE037 заразил либо всю, либо большую часть лаборатории, скорее " +"всего, через систему водоснабжения. Немедленно начато исследование процесса " "уничтожения XE037 внутри человеческого тела." #: lang/json/snippet_from_json.py @@ -111097,9 +112010,10 @@ msgid "" "revivification post termination. Interestingly, XE037 seems to be " "completely inert prior to termination." msgstr "" -"Несмотря на выбор различных методик, нам так и не удалось удалить XE037 из " -"человеческих субъектов. Каждый субъект оживлялся после уничтожения. До " -"уничтожения субъекта XE037 находится в состоянии полного покоя." +"Несмотря на широкое разнообразие методик, нам так и не удалось удалить XE037" +" из человеческих субъектов. Каждый субъект оживал после уничтожения. Что " +"интересно, до уничтожения субъекта XE037 находится в состоянии полного " +"покоя." #: lang/json/snippet_from_json.py msgid "" @@ -111108,8 +112022,8 @@ msgid "" " no revivification, despite confirmed dosages of XE037." msgstr "" "Наконец-то у нас есть успех по S37BEP, в нашем чрезвычайном исследовании по " -"истреблению XE037 внутри живых субъектов. У 8-ми из 10-ти субъектов не было " -"оживления, несмотря на явное наличие XE037." +"уничтожению XE037 внутри живых субъектов. 8 из 10 субъектов не ожили после " +"смерти, несмотря на явное наличие XE037." #: lang/json/snippet_from_json.py msgid "" @@ -111120,9 +112034,10 @@ msgid "" "immensely useful in the case of an outbreak." msgstr "" "PE062, нашe «лекарство» от заражения XE037, почти готово. К сожалению, " -"производство PE062 — долгий и дорогостоящий процесс. Более того, препарат не" -" оказывает никакого эффекта на мёртвые субъекты. Вещество, делающее XE037 " -"инертным после его активации, будет крайне полезно в случае эпидемии." +"производство PE062 — долгий и дорогостоящий процесс. Более того, препарат " +"никак не действует на субъекты с посмертными эффектами. Вещество, делающее " +"XE037 инертным после его активации, будет крайне полезно в случае всеобщего " +"заражения." #: lang/json/snippet_from_json.py msgid "" @@ -111130,9 +112045,9 @@ msgid "" "half mile from the laboratory. It is unclear how it escaped; it is quite " "possible that it is in the ground water now." msgstr "" -"Было сделано тревожное открытие. Колония XE037 была обнаружена на расстоянии" -" полумили от лаборатории. Не совсем понятно, как XE037 удалось сбежать. " -"Вполне возможно, что он есть в грунтовых водах." +"Сделано тревожное открытие. На расстоянии полумили от лаборатории " +"образовалась колония XE037. Не совсем понятно, как XE037 удалось сбежать. " +"Вполне возможно, что он уже просочился в грунтовые воды." #: lang/json/snippet_from_json.py msgid "" @@ -111151,10 +112066,9 @@ msgid "" "populations will be decimated by this pandemic. We must find a way to " "remove XE037 from revivified bodies." msgstr "" -"Это началось. Заражение XE037 распространилось на многие мили и те, кто " -"скончался в это время, восстали. Я очень боюсь, что большие популяции будут " -"поражены этой эпидемией. Мы обязаны найти способ удалить XE037 из оживших " -"тел." +"Это началось. Заражение XE037 распространилось на многие мили, и недавно " +"умершие вернулись к жизни. Я боюсь, что эпидемия убьёт огромное количество " +"человек. Мы обязаны найти способ удалить XE037 из оживших тел." #: lang/json/snippet_from_json.py msgid "" @@ -111166,12 +112080,12 @@ msgid "" " as standard XE037 humanoid infection. Canine body size seems to influence " "the chances. See experiment tXE037b_c." msgstr "" -"У нас есть более печальные новости, чем распространение заражения XE037: " -"есть сообщения, что XE037 мутирует в новые виды. См. файлы о XE037a — " -"XE037f. Их исследования продолжаются. Мы знаем, что XE037d показывает " -"признаки иммунитета к PE062, а XE037b может оживлять разные породы собак. " -"Однако, оживление не гарантируется, как в обычном заражении " -"человекоподобных. Видимо, размер собаки влияет на шансы. См. эксперимент " +"У нас ещё более печальные новости, чем масштабное заражение XE037: есть " +"сообщения о мутации XE037 в новые виды. См. файлы XE037a — XE037f. " +"Продолжаются исследования. Мы знаем, что XE037d показывает невосприимчивость" +" к PE062, а XE037b может оживлять разные породы собак. Однако, в отличие от " +"обычного человеческого заражения XE037, посмертное оживление случается не " +"всегда. Видимо, на вероятность влияет размер тела собаки. См. эксперимент " "tXE037b_c." #: lang/json/snippet_from_json.py @@ -111182,10 +112096,10 @@ msgid "" "allows subplane life forms to pass into the prime plan. The cure is worse " "than the disease." msgstr "" -"Сегодня мы нашли решение, причём случайно. Оказалось, что XE037 полностью " -"удаляется из ожившего тела после серии высокоэнергетических перемещений в " -"4-ое измерение. К сожалению, это позволяет существам из подпространства " -"перемещаться в наше измерение. Лекарство хуже болезни." +"Сегодня мы случайно нашли решение. Оказывается, XE037 полностью удаляется из" +" ожившего тела после серии высокоэнергетических скачков в 4-е измерение. К " +"сожалению, это неизбежно позволяет существам из подпространства перемещаться" +" в наш мир. Лекарство хуже болезни." #: lang/json/snippet_from_json.py msgid "" @@ -111202,6 +112116,566 @@ msgstr "" "стратегическую передислокацию в подземный комплекс, известный как УБЕЖИЩЕ и " "продолжение производства PE062 там." +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "популярный" + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "хитовый" + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "корпоративный" + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "коммерческий" + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "альтернативный" + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "колледж" + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "артхаусный" + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "андерграундный" + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "экспериментальный" + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "забытый" + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "традиционный" + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "исторический" + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "классический" + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "современный" + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "взрослый" + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "современный" + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "христианский" + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "языческий" + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "британский" + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "континентальный" + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "тропический" + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "островной" + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "нью-йоркский" + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "голливудский" + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "транс-тихоокеанский" + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "латиноамериканский" + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "инструментальный" + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "фьюжн" + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "вижуал" + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "ликвид-фанковый" + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "цифровой" + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "процедурно сгенерированный" + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "мелодичный" + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "гармоничный" + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "диссонансный" + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "концертный" + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "концептуальный" + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "коллаборативный" + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "ритмичный" + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "нео" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "ретро" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "пост" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "анти" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "хард" + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "софт" + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "спид" + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "слоу" + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "хай-фай" + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "лоу-фай" + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "мид-фай" + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "эмбиент" + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "дэнс" + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "чилл" + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "психо" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "турбо" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "прогрессив" + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "глэм" + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "аутсайдер" + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "инди" + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "дарк" + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "дэт" + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "электро" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "эйсид" + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "спейс" + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "гетто" + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "стрит" + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "урбан" + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "ворлд" + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "евро" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "афро" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "гранж" + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "брасс" + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "сплэттер" + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "свамп" + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "гост" + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "шэдоу" + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "нейро" + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "гипер" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "карнавал" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "мета" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "техно" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "синт" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "робо" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "скейт" + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "фрик" + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "серф" + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "мутант" + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "юрский" + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "фри" + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "гараж" + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "гарбэдж" + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "брейк" + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "лазер" + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "порно" + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "гипно" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "лунар" + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "тандер" + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "клоун" + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "брутал" + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "нарко" + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "гангста" + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "-мотив." + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "-кор." + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "-вейв." + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "-бит." + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "-степ." + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "-поп." + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "-хоп." + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "-драм." + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "-стайл." + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "балладный напев." + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "фолк." + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "кантри." + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "джаз." + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "блюз." + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "соул." + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "ритм-н-блюз." + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "хип-хоп." + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "свинг." + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "фанк." + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "диско-трек." + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "-ритм польки." + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "танго." + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "-трек в стиле сальса." + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "-ритм мамбо." + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "электроник." + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "метал." + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "регги." + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "ска." + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "отброс" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "трэш." + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "готик-рок." + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "индастриал." + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "психоделик." + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "нойз." + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "саунд." + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "ривайвл-джаз." + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "госпел." + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "оперный вокал." + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "шанти." + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -111246,9 +112720,9 @@ msgid "" "what you've been missing.\"" msgstr "" "Реклама бионического импланта «Алмазная роговица» компании «Двадцать8». На " -"рисунке изображён грозный орёл, к которому присоединён кибермодуль. Сверху " -"надписи: «Установи новейшую Модель 28.bx Орлиный-Глаз!» и «Двадцать8. " -"Заметите всё, что упустили из виду.»" +"рисунке изображён летящий орёл с кибермодулем в когтях. Сверху надписи: " +"«Установи новейшую Модель 28.bx Орлиный-Глаз!» и «Двадцать8. Заметите всё, " +"что упустили из виду.»" #: lang/json/snippet_from_json.py msgid "" @@ -111316,9 +112790,9 @@ msgid "" " Programmed to Serve.\"" msgstr "" "Реклама роботов-полицейских компании «ДаблТех». На рисунке глазобот, летящий" -" наравне с белоголовым орланом. Глазобот следит за бомбардировщиком-" -"невидимкой, раскрашенным под американский флаг. Сверху надпись: «Собран " -"защищать. Запрограммирован служить.»" +" наравне с белоголовым орланом и бомбардировщиком-невидимкой, раскрашенным " +"под американский флаг. Сверху надпись: «Собран защищать. Запрограммирован " +"служить.»" #: lang/json/snippet_from_json.py msgid "" @@ -111326,9 +112800,9 @@ msgid "" "shows a picture of a dozen eyebots floating over a woman as she jogs through" " a park. The captions read: \"Built to Protect. Programmed to Serve.\"" msgstr "" -"Реклама роботов-полицейских компании «ДаблТех». На рисунке глазоботы, " -"летающие над девушкой, пока она занимается утренней пробежкой в парке. " -"Сверху надпись: «Собран защищать. Запрограммирован служить.»" +"Реклама роботов-полицейских компании «ДаблТех». На рисунке глазоботы летают " +"над девушкой, пока она занимается утренней пробежкой в парке. Сверху " +"надпись: «Собран защищать. Запрограммирован служить.»" #: lang/json/snippet_from_json.py msgid "" @@ -111338,9 +112812,9 @@ msgid "" "\"Built to Protect. Programmed to Serve.\"" msgstr "" "Реклама роботов-полицейских компании «ДаблТех». На рисунке робот-полицейский" -" бьёт струёй перца преступника в наручниках. На заднем плане бойскауты " -"салютуют роботу. Сверху надпись: «Собран защищать. Запрограммирован " -"служить.»" +" выпускает перцовую струю в преступника в наручниках. На заднем плане " +"бойскауты салютуют роботу. Сверху надпись: «Собран защищать. " +"Запрограммирован служить.»" #: lang/json/snippet_from_json.py msgid "" @@ -111400,6 +112874,12 @@ msgid "" "something less resembling medicine. The caption reads: \"Why use old IV " "when you can have Intravenous Needle CBM!\"" msgstr "" +"Это реклама Кибер-Бутика Сивиллы. На ней изображены несколько медсестёр в " +"бикини, дающих жидкое лекарство восхищенному пациенту, который всасывает его" +" в вены с помощью иглы на кончике пальца. За окном две темные фигуры с " +"помощью таких же игл принимают что-то менее похожее на лекарство. Заголовок " +"гласит: «Зачем пользоваться старым внутривенным доступом, когда у тебя может" +" быть КБМ Внутривенная Игла!»" #: lang/json/snippet_from_json.py msgid "" @@ -111433,19 +112913,30 @@ msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " "a man carrying a somewhat confused horse on his shoulders. He is flanked by" " two scantily clad nurses who hold bloody chainsaws and give approving " -"thumbs up. His bulging knees and elbows are stiched and seem to be the " +"thumbs up. His bulging knees and elbows are stitched and seem to be the " "source of his ability. The caption reads: \"Brand new! Horse power at " "hand!\"" msgstr "" +"Это реклама Кибер-Бутика Сивиллы. На ней изображен мужчина, несущий на " +"плечах лошадь с выражением замешательства на её морде. По бокам от него " +"стоят едва одетые медсёстры, держащие в руках окровавленные бензопилы и " +"показывающие большой палец вверх. Его бугристые колени и локти покрыты швами" +" и, кажется, являются источником его силы. Подпись гласит: «Новинка! " +"Лошадиная сила под рукой!»" #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " -"a man smiling while being relentlesly punched by a boxer. He doesn't even " +"a man smiling while being relentlessly punched by a boxer. He doesn't even " "sweat as punches have no effect on him. Two scantily clad nurses give " "approving thumbs up from the background. The caption reads: \"Bouncy as " "never before! Absorb those shocks!\"" msgstr "" +"Реклама Кибер-Бутика Сивиллы. На картинке изображён улыбающийся человек, его" +" жестоко избивает боксёр. Однако человек даже не вспотел, похоже, удары не " +"наносят никакого вреда. На заднем плане две едва одетых медсестры одобряюще " +"поднимают большие пальцы. Сверху надпись: \"Как от стенки! Поглоти эти " +"удары!\"" #: lang/json/snippet_from_json.py msgid "" @@ -111522,9 +113013,8 @@ msgstr "" "Это реклама КБМ «Мономолекулярный клинок» от компании Ривтех. На картинке " "изображена женщина с выдвинутым из руки бионическим клинком, которая " "защищает своего ребёнка от разгневанного медведя. Надпись гласит: " -"«Выдвигающийся мономолекулярный клинок от Ривтех. Возможность поломки не " -"входит в комплект.» Есть подпись: «Биомодули от Ривтех. Пожизненная " -"гарантия.»" +"«Выдвигающийся мономолекулярный клинок от Ривтех. Поражения быть не может.» " +"Есть подпись: «Биомодули от Ривтех. Пожизненная гарантия.»" #: lang/json/snippet_from_json.py msgid "" @@ -111550,8 +113040,8 @@ msgid "" msgstr "" "Это реклама боеприпасов фирмы Ривтех. На картинке изображена стальная " "пластина с аккуратной дырой по середине. Рядом с плитой красивая открытая " -"пачка безгильзовых патронов. Слоган гласит: «Безгильзовое оружие Ривтех. Нет" -" ничего более захватывающего!»" +"пачка безгильзовых патронов. Слоган гласит: «Безгильзовое оружие Ривтех. " +"Остальное даже не сравнится.»" #: lang/json/snippet_from_json.py msgid "" @@ -111580,13 +113070,13 @@ msgid "" "for that extra punch, and we offer semiautomatic (but equally robust!) " "versions for the civilian market. Leadworks, LLC.\"" msgstr "" -"Это реклама пистолетов фирмы ООО «Лидворкс». Картинка показывает " -"бионического полицейского, который помогает молодой паре отбиться от банды " -"головорезов. Надпись гласит: «Вы не потеряете гарантию, если заставите " -"преступника почувствовать всю останавливающую силу L39B, которую и " -"демонстрирует нам киборг в синем. А патрон .45 АСР сделает сей пистолет ещё " -"более эффективным. Мы предлагаем полуавтоматические (но не менее надёжные!) " -"версии для гражданского рынка. ООО «Лидворкс»." +"Это реклама пистолетов фирмы «Лидворкс». Картинка показывает бионического " +"полицейского, который помогает молодой паре отбиться от банды головорезов. " +"Надпись гласит: «Вам не нужно терять гарантию, чтобы получить " +"останавливающую преступников огневую мощь. L39B опробован и одобрен нашими " +"кибер-стражами правопорядка, доступен в калибре .45 АСР. Мы также предлагаем" +" полуавтоматические (но не менее надёжные!) версии для гражданского рынка. " +"Лидворкс»." #: lang/json/snippet_from_json.py msgid "" @@ -111607,8 +113097,8 @@ msgstr "" "больше не потребуется хранить и поддерживать тонны винтовок, карабинов и " "оружия поддержки пехоты и жонглировать множеством несовместимых типов " "боеприпасов! Просто предоставьте базовую модель каждому бойцу и используйте " -"наш лёгкий и портативный набор для конверсии для того, чтобы легко и просто " -"сменить карабин ближнего боя на снайперскую винтовку!\"" +"наш лёгкий и портативный набор для конверсии, чтобы легко и просто сменить " +"карабин ближнего боя на снайперскую винтовку!\"" #: lang/json/snippet_from_json.py msgid "" @@ -111619,12 +113109,12 @@ msgid "" "frequently with soap and water. In light of recent events, the CDC also " "recommends an annual flu vaccine for everyone 6 months of age and older." msgstr "" -"Это публичное сообщение из Центра по контролю заболеваний. В этом сообщении," -" переведённом на несколько языков, написано: «В связи с ростом эпидемии " -"зелёной лихорадки, ЦКЗ рекомендует общественности прикрывать нос и рот " -"платком при кашле, а также тщательно мыть руки с мылом. В свете последних " -"событий, ЦКЗ также рекомендует делать ежегодную прививку от гриппа всем от " -"от 6-ти лет и старше.»" +"Это публичное сообщение из Центра по Контролю Заболеваний. В этом сообщении," +" переведённом на несколько языков, написано: «В связи с ростом эпидемии так " +"называемой \"Зелёной лихорадки\" ЦКЗ рекомендует общественности прикрывать " +"нос и рот платком при кашле или чихании, а также тщательно мыть руки с " +"мылом. В свете последних событий ЦКЗ также рекомендует делать ежегодную " +"прививку от гриппа всем от от 6-ти лет и старше.»" #: lang/json/snippet_from_json.py msgid "" @@ -111636,13 +113126,13 @@ msgid "" "treatment camp by authorized agents of the United States military. Thank " "you for your compliance." msgstr "" -"Это публичное послание от Министерства по чрезвычайным ситуациям. Сообщение " -"повторяется на нескольких языках и гласит: ОСТАВАЙТЕСЬ В СВОИХ ДОМАХ! " -"Правительство США предпринимает шаги, чтобы остановить эпидемию «зелёной " +"Это публичное сообщение от Министерства по Чрезвычайным Ситуациям. Сообщение" +" повторяется на нескольких языках и гласит: \"ОСТАВАЙТЕСЬ В СВОИХ ДОМАХ! " +"Правительство США предпринимает шаги, чтобы остановить эпидемию «Зелёной " "лихорадки», и в пострадавшие районы уже направлена помощь. Во имя " "общественной безопасности, вам приказано оставаться в своих домах, пока " "вооруженные силы США не эвакуируют вас в лечебный лагерь. Благодарим за " -"соблюдение." +"сотрудничество.\"" #: lang/json/snippet_from_json.py msgid "" @@ -111653,12 +113143,12 @@ msgid "" "reporting. All official evacuation points are death-traps. Secure supplies" " and escape the cities while there is still time." msgstr "" -"Это публичное сообщение от неизвестного источника. Это плохо отсканированный" -" двухсторонний лист, в котором написано: «Не верьте лжи! Пока зелёная " -"лихорадка распространяется быстрей лесного пожара, армия сгоняет людей в " -"лагеря смерти. Не верьте тому, что говорят СМИ в новостях. Все официальные " -"пункты эвакуации — ловушки смерти. Запаситесь припасами и бегите из города " -"пока ещё есть время.»" +"Это публичное предупреждение от неизвестного источника. Плохо " +"отксерокопированное сообщение на обеих сторонах листа гласит: «Не верьте " +"лжи! Пока зелёная лихорадка распространяется быстрей лесного пожара, армия " +"сгоняет людей в лагеря смерти. Не верьте тому, что говорят СМИ в новостях. " +"Все официальные пункты эвакуации — ловушки смерти. Запаситесь припасами и " +"бегите из города пока ещё есть время.»" #: lang/json/snippet_from_json.py msgid "" @@ -111668,10 +113158,10 @@ msgid "" "IS JUST! YOU WILL BE DIVIDED FATHER AGAINST SON AND MOTHER AGAINST CHILD " "UNTO THE VERY LAST SINNER!" msgstr "" -"Это всеобщее обращение от неизвестного источника. Эта сфотографированная " -"рукопись гласит: «ПОКАЙСЯ В СВОИХ ГРЕХАХ ВАВИЛОН КОГДА ВРЕМЯ ЕГО СУДА УЖЕ " -"БЛИЗКО! СМОТРЯ НА ТВОИ РАЗРУШЕНИЯ Я ПОНИМАЮ ЧТО ЭТО БУДЕТ ПРОСТО! ТЫ " -"НАСТРОИШЬ ОТЦА ПРОТИВ СЫНА МАТЬ ПРОТИВ РЕБЁНКА ВПЛОТЬ ДО САМОГО ПОСЛЕДНЕГО " +"Это публичное сообщение от неизвестного источника. Отксерокопированный " +"рукописный текст гласит: «ПОКАЙСЯ В СВОИХ ГРЕХАХ ВАВИЛОН КОГДА ВРЕМЯ ЕГО " +"СУДА УЖЕ БЛИЗКО! ВЗГЛЯНИ НА СВОЮ СМЕРТЬ И ОСОЗНАЙ ЧТО ЭТО СПРАВЕДЛИВО! ОТЕЦ " +"ПОЙДЁТ ПРОТИВ СЫНА И МАТЬ ПРОТИВ РЕБЁНКА ВПЛОТЬ ДО САМОГО ПОСЛЕДНЕГО " "ГРЕШНИКА!»" #: lang/json/snippet_from_json.py @@ -111703,9 +113193,9 @@ msgid "" "necrotizing fasciitis, recurrent flu, and pinkeye." msgstr "" "Это реклама энергетического напитка «АТОМНАЯ ЖАЖДА» от компании «Ривтек». " -"Хотя в ней рекламируют новый вкус под названием «Фруктовый» (изотоп RU-238)," -" большая часть текста посвящена длинному списку возможных побочных эффектов:" -" тревожность, бессонница, хроническая бессонница, головокружение, тремор, " +"Хотя в ней рекламируют новый вкус под названием Изотоп RU-238 «Фруктовый», " +"большая часть текста посвящена длинному списку возможных побочных эффектов: " +"тревожность, бессонница, хроническая бессонница, головокружение, тремор, " "тошнота, головная боль, рвота, бред, галлюцинации, острый некроз скелетных " "мышц, внутренние ожоги, рак щитовидной железы, обширное внутреннее " "кровотечение, желудочное кровотечение, диарея, сердечная аритмия, сердечно-" @@ -111721,7 +113211,7 @@ msgid "" "letters." msgstr "" "Это реклама содовой. На лицевой стороне изображение счастливой пары на " -"пляже, наблюдающей за заходом солнца. Между ними находится бутылка " +"пляже, наблюдающей за заходом солнца. Между ними находятся бутылки " "газировки. Плакат гласит жирными белыми буквами: «Каскад-кола, для тех самых" " моментов»." @@ -111742,8 +113232,8 @@ msgid "" "This is an advertisement for soda. It shows a dark brown can of soda on a " "black background. The label reads \"Spin\"." msgstr "" -"Это реклама газировки. Она показывает тёмно-коричневую газировку на чёрном " -"фоне. На этикетке написано «Spin»." +"Это реклама газировки. Она показывает тёмно-коричневую банку газировки на " +"чёрном фоне. На этикетке написано «Spin»." #: lang/json/snippet_from_json.py msgid "" @@ -111751,8 +113241,8 @@ msgid "" "Italian holding a pizza, with the words \"It's a goooood pizza\" written " "above his head." msgstr "" -"Это флаер местной сети пиццерий. На нём изображён итальянец с пиццей в " -"руках, над его головой надпись «Это хорооооошая пицца»." +"Это флаер местной сети пиццерий. На нём изображён мультяшный итальянец с " +"пиццей в руках, над его головой надпись «Это хорооооошая пицца»." #: lang/json/snippet_from_json.py msgid "" @@ -111770,9 +113260,9 @@ msgid "" "colors and patterns, but no definite message other than \"104.4 all the " "best, all the time!\" in big yellow letters." msgstr "" -"Это рекламный флаер местной радиостанции. На нём есть множество ярких цветов" -" и узоров, а также вполне однозначная надпись большими жёлтыми буквами: " -"«104.4 только лучшее, на все времена!»" +"Это рекламный флаер местной радиостанции. На нём множество ярких цветов и " +"узоров с единственной различимой надписью большими жёлтыми буквами: «104.4 " +"только лучшее, на все времена!»" #: lang/json/snippet_from_json.py msgid "" @@ -111781,10 +113271,10 @@ msgid "" "claymore walking towards the viewer. At his side is his trusty cyberdog " "companion and in the background is an explosion." msgstr "" -"Это большой постер фильма \"Действие в известняке 6: Месть людей-собак\". На" -" нём изображён человек в кожаной куртке с револьвером и клеймором, идущий по" -" направлению к зрителю. Сбоку от него виден его верный киберпёс, а на заднем" -" плане - взрыв." +"Это большой постер фильма \"Миссия Пакстоун 6: Месть Людей-Собак\". На нём " +"изображён человек в кожаной куртке с револьвером и двуручным мечом, идущий " +"по направлению к зрителю. Сбоку от него виден его верный киберпёс, а на " +"заднем плане - взрыв." #: lang/json/snippet_from_json.py msgid "" @@ -111793,7 +113283,7 @@ msgid "" "\"Improving the world, one tank at a time.\" is written across the top in " "small letters." msgstr "" -"Это постер, рекламирующий машину с солнечных панелями. Машина едет по " +"Это постер, рекламирующий машину с солнечными панелями. Машина едет по " "сельской местности с пышной растительностью, и вслед ей глядят маленькие " "животные. Слоган «Улучшаем мир, по одному бензобаку за раз» мелкими буквами " "написан поверх картинки." @@ -111835,9 +113325,10 @@ msgid "" "above his head. Someone has drawn an exaggerated mustache on the cartoon " "Italian, along with a pair of crude, oversized breasts." msgstr "" -"Это флаер местной сети пиццерий. На нём изображён итальянец с пиццей в " -"руках, над его головой надпись «Это хорооооошая пицца». Кто-то добавил " -"огромные усы и такую же огромную грубо нарисованную грудь этому итальянцу." +"Это флаер местной сети пиццерий. На нём изображён мультяшный итальянец с " +"пиццей в руках, над его головой надпись «Это хорооооошая пицца». Кто-то " +"добавил огромные усы и такую же огромную грубо нарисованную грудь этому " +"итальянцу." #: lang/json/snippet_from_json.py msgid "" @@ -111862,8 +113353,8 @@ msgstr "" "Это постер, рекламирующий машину с солнечными панелями. Машина едет по " "сельской местности с пышной растительностью, и вслед ей глядят маленькие " "животные. Слоган «Улучшаем мир, по одному бензобаку за раз» написан поверх " -"картинки. Кто-то синей ручкой написал \"всем по фигу\" поверх слогана, а на " -"месте глаз всех животных - Х." +"картинки. Кто-то синей ручкой написал \"да всем насрать\" поверх слогана и " +"нарисовал крестики вместо глаз животных." #: lang/json/snippet_from_json.py msgid "" @@ -111887,11 +113378,10 @@ msgid "" " The caption reads \"When you chose Red Ryder, you invested in the American" " Dream. You invested in our Independence.\"" msgstr "" -"Это листовка Пневматика Ред Райдер. На ней довольный ребёнок, с собакой на " -"поводке и деревянной винтовкой через плечо, тянет блестящую красную тележку " -"с приготовленным фазаном на ней. Надпись гласит: \"Выбрав Ред Райдер, вы " -"сделали вклад в американскую мечту. Вы вы сделали вклад в нашу " -"независимость\"." +"Это листовка Пневматики Ред Райдер. На ней довольный ребёнок с собакой на " +"поводке и деревянной винтовкой через плечо тянет блестящую красную тележку с" +" приготовленным фазаном на ней. Надпись гласит: \"Выбрав Ред Райдер, вы " +"сделали вклад в американскую мечту. Вы сделали вклад в нашу независимость\"." #: lang/json/snippet_from_json.py msgid "" @@ -111939,6 +113429,9 @@ msgid "" "would take them down, the air around it shimmered like around that hole in " "the air we've seen creatures coming through back home\"" msgstr "" +"\"Видел, как один зомби воскрешал остальных, хотя те были мертвее мёртвого. " +"Воздух вокруг него мерцал как возле той дыры в воздухе, сквозь которую " +"проникали существа\"" #: lang/json/snippet_from_json.py msgid "\"I shot the sheriff; but I couldn't find the deputy\"" @@ -111949,12 +113442,12 @@ msgid "" "\"Some plant vines started chasin after me, so I took a gas mask and some " "teargas and I ran through them.\"" msgstr "" -"\"Кое-какая лоза в моём саду начала охоту за мной, так что я взял противогаз" -" и гранату слезоточивого газа и побежал через неё подальше.\"" +"\"Какая-то лоза в моём саду охотилась за мной, так что я взял противогаз, " +"слезоточивую гранату и расправился с ней.\"" #: lang/json/snippet_from_json.py msgid "\"Slingshot right through the windshield k?\"" -msgstr "\"Из рогатки сквозь лобовое стекло, а?\"" +msgstr "\"Вылетел прям сквозь лобовуху, ок?\"" #: lang/json/snippet_from_json.py msgid "" @@ -111969,8 +113462,8 @@ msgid "" "\"ALL YOU STONERS WITH YOUR VIDEYA GAMES - I BET YOU WISH YOU TOOK THE TIME " "TO LEARN A SKILL NOW DONTYA\"" msgstr "" -"\"ЭЙ ВЫ УКУРКИ СО СВОИМИ ВИДИО ИГРАМИ, ПО-ЛЮБОМУ ЖАЛЕЕТЕ СЕЙЧАС ЧТО НЕ " -"ПРАКТИКОВАЛИСЬ ТАК\"" +"\"ЭЙ ВЫ УКУРКИ СО СВОИМИ ВИДИО ИГРАМИ, ПО-ЛЮБОМУ ЖАЛЕЕТЕ СЕЙЧАС ЧТО НИЧЕМУ " +"НЕ УЧИЛИСЬ, АГА\"" #: lang/json/snippet_from_json.py msgid "\"I tried to be a bard, but the rats didn't like my piping.\"" @@ -111989,8 +113482,8 @@ msgid "" "\"this demon thing came after me it got me good i shot it but i dont know " "if ill make it\"" msgstr "" -"\"этот демон приходил за мной он достал меня я подстрелил его но не знаю как" -" его сделать\"" +"\"этот демон приходил за мной он достал меня я подстрелил его но не знаю " +"выживу ли я\"" #: lang/json/snippet_from_json.py msgid "" @@ -112078,9 +113571,9 @@ msgid "" "\"ALWAYS WITH THE EFFICIENCY GUYS; YOURE ALWAYS WORKING TO GO HOME TO PAY " "RENT TO SLEEP TO WAKE UP TO WORK AGAIN. STOP\"" msgstr "" -"\"ЭФФЕКТИВНОСТЬ БЕЗ КОНЦА ПАЦАНЫ. ВЫ ПОСТОЯННО РАБОТАЕТЕ, ЧТОБЫ ПОЙТИ ДОМОЙ," -" ЧТОБЫ ЗАПЛАТИТЬ АРЕНДУ, ЧТОБЫ СПАТЬ, ЧТОБЫ ОПЯТЬ ВСТАТЬ, ЧТОБЫ РАБОТАТЬ, " -"СНОВА... СТОП???\"" +"\"ЗАВЯЗЫВАЙТЕ С ЭТИМ ПАЦАНЫ. ВЫ ВЕЧНО РАБОТАЕТЕ ЧТОБЫ ПОЙТИ ДОМОЙ ЧТОБЫ " +"ЗАПЛАТИТЬ АРЕНДУ ЧТОБЫ СПАТЬ ЧТОБЫ ОПЯТЬ ВСТАТЬ ЧТОБЫ СНОВА РАБОТАТЬ. " +"ХВАТИТ\"" #: lang/json/snippet_from_json.py msgid "\"IM OFF TO THUNDERDOME, BYE SUCKERS.\"" @@ -112107,9 +113600,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" "\"This isn't real this is a test to turn you into a Manchurian Candidate!\"" -msgstr "" -"«Это не по настоящему, это тест чтобы превратить тебя в Маньчжурского " -"Кандидата!»" +msgstr "«Это не по настоящему это испытание чтобы промыть тебе мозги!»" #: lang/json/snippet_from_json.py msgid "\"Real Men do it with STYLE. SUPASTYLIN.\"" @@ -112152,8 +113643,8 @@ msgid "" "\"Some guy is walking through the horde without a scratch. Please tell me " "they're docile now. Please fucking tell me.\"" msgstr "" -"«Один мужик прошёл через орду без единой царапины. Пожалуйста, скажи мне " -"если они стали безвредными. Скажи мне, твою мать.»" +"«Один мужик прошёл через орду без единой царапины. Пожалуйста, скажи мне, " +"что они теперь безвредны. Скажи мне, твою мать.»" #: lang/json/snippet_from_json.py msgid "\"Swamp water tastes good! An\"" @@ -112216,24 +113707,23 @@ msgid "" "\"A wood ax works pretty well against them. So does a machete, but you " "can't cut down a tree.\"" msgstr "" -"«С ними неплохо справляется деревянный топор. Так же как и мачете, но оно не" -" может рубить деревья.»" +"«С ними неплохо справляется топор. Мачете тоже, но оно не может рубить " +"деревья.»" #: lang/json/snippet_from_json.py msgid "" "\"Why would you hide in a farm? Sure, it's isolated, but if they know where" " you are, you don't exactly have cover on all sides.\"" msgstr "" -"«Почему бы тебе не скрыться на ферме? Уверен, что она изолирована, но если " -"они узнают, где ты находишься, то у тебя точно не будет укрытия со всех " -"сторон.»" +"«Зачем вообще прятаться на ферме? Ну да, она в глуши, но если они тебя " +"найдут, то ты точно не сможешь прикрыться со всех сторон.»" #: lang/json/snippet_from_json.py msgid "" "\"Imagine if this spread to, like, Australia. Zombie kangaroos. Haha...\"" msgstr "" -"«Представляю, если бы это распространилось, например, в Австралию. Зомби-" -"кенгуру. Хаха...»" +"«Представь, если бы это распространилось, типа, в Австралию. Зомби-кенгуру. " +"Хаха...»" #: lang/json/snippet_from_json.py msgid "" @@ -112242,7 +113732,7 @@ msgid "" msgstr "" "«как использовать ЭТИ бионические ХРЕНОВИНЫ? я просто ВСТАВИЛ проводку себе " "в ЗАПЯСТЬЕ и теперь НЕ МОГУ ПЕРЕСТАТЬ дёргаться. И теперь у меня болит НОГА." -" ЭТО кислота?!»" +" ЭТО ЧТО кислота?!»" #: lang/json/snippet_from_json.py msgid "" @@ -112250,8 +113740,9 @@ msgid "" " have been attracted to it. I can't see his grave through the crowd " "anymore.\"" msgstr "" -"\"Я пытался сыграть памятную музыку для своего мёртвого брата по радио. Она," -" похоже, привлекла их. Я больше не вижу его могилы через толпу\"." +"\"Я пытался поставить памятную музыку для своего мёртвого брата на радио. Но" +" похоже, что музыка привлекла их. Сейчас я даже не вижу его могилу сквозь " +"толпу\"." #: lang/json/snippet_from_json.py msgid "" @@ -112307,7 +113798,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "There is a splotch of blood on it. \"blood of the zombie king\"" -msgstr "На нём есть пятно крови. «кровь короля зомби»" +msgstr "На листке пятно крови. «кровь короля зомби»" #: lang/json/snippet_from_json.py msgid "" @@ -112339,7 +113830,7 @@ msgstr "«РОЗОВЫЕ ВЫСОКИЕ БЕГИ БЕГИ БЕГИ БЕГИ»" #: lang/json/snippet_from_json.py msgid "\"Are they still human inside?\"" -msgstr "«Внутри ещё есть люди?»" +msgstr "«Есть ли в них ещё что-то человеческое?»" #: lang/json/snippet_from_json.py msgid "\"the eye it watches me it follows me everywhere help\"" @@ -112358,8 +113849,8 @@ msgid "" "\"They build modern bullets fuckin crazy. Set some on fire and they all " "goes like a lil grenade. Need kindling first.\"" msgstr "" -"\"Они делают современные пули, вот сумасшедшие. Положи несколько в огонь и " -"все они станут как осколочная граната. Сначала нужно поджечь.\"" +"\"Они делают современные пули чертовски ебанутыми. Положи несколько в огонь " +"и все они станут как маленькие гранаты. Сначала нужно поджечь.\"" #: lang/json/snippet_from_json.py msgid "\"GOD CAN'T SAVE US\"" @@ -112385,12 +113876,12 @@ msgid "" "focus on. At least let me shit before you break down the door. Please...\"" msgstr "" "«Плитка в этом туалете похожа на чьё-то лицо. Ха-ха… это всё, о чём я могу " -"думать сейчас. По крайней мере дайте мне здесь нагадить, до того как " -"сломаете эту дверь. Ну пожалуйста…»" +"думать сейчас. По крайней мере дайте мне просраться, до того как сломаете " +"эту дверь. Ну пожалуйста…»" #: lang/json/snippet_from_json.py msgid "\"What the hell are they mining for in these shafts?\"" -msgstr "«Что за дьявол прорыл все эти норы?»" +msgstr "«Какого хера они копают в этих шахтах?»" #: lang/json/snippet_from_json.py msgid "\"I am one with the plants.\"" @@ -112405,7 +113896,7 @@ msgid "" "\"If you see a trail of dirt getting displaced in your direction... run. " "Run for your life.\"" msgstr "" -"«Если ты увидишь след разрытой земли, тянущийся за тобой… беги. Спасай свою " +"«Если ты увидишь след разрытой земли, тянущийся к тебе… беги. Спасай свою " "жизнь.»" #: lang/json/snippet_from_json.py @@ -112414,7 +113905,7 @@ msgstr "«Не упади в ядерную шахту. Они оставили #: lang/json/snippet_from_json.py msgid "\"DINT ATE THE MUSHROM\"" -msgstr "«НЕ ЕШЬ ГРИБЫ»" +msgstr "«НИ ЕШ ГРЕБЫ»" #: lang/json/snippet_from_json.py msgid "\"Libraries are useless after the apocalypse.\"" @@ -112450,8 +113941,8 @@ msgid "" "\"Why would you ever hide in a damn gun store? The owner... he was a moron " "alright.\"" msgstr "" -"«Для чего вообще вам понадобилось прятаться в чёртовом оружейном магазине? " -"Владелец... он всё равно был придурком.»" +"«Зачем вообще прятаться в сраном оружейном магазине? Владелец... он точно " +"был придурком.»" #: lang/json/snippet_from_json.py msgid "\"This apocalypse will be good for the US financial crisis\"" @@ -112471,8 +113962,8 @@ msgid "" "\"Is that one pharmaceutical company gonna come out with a, like, cure for " "this anytime soon?\"" msgstr "" -"\"А та фармацевтическая компания собирается выпускать это, как его... " -"Эликсир вечной жизни в ближайшее время?\"" +"\"А та фармацевтическая компания собирается же сделать, ну типа, лекарство " +"против всего этого в ближайшее время?\"" #: lang/json/snippet_from_json.py msgid "\"THE MARLEY WAS RIGHT\"" @@ -112554,9 +114045,8 @@ msgid "" "\"Your backpack's gonna weigh you down in the water. Hell, feel free to get" " naked. Nobody's going to judge your modesty.\"" msgstr "" -"\"Твой рюкзак утянет тебя на дно, если соберёшься плавать. Чёрт, не " -"стесняйся раздеться догола при плавании. Никто не будет корить тебя за " -"это.\"" +"\"Твой рюкзак утянет тебя на дно. Чёрт, не стесняйся раздеться догола при " +"плавании. Никто не осудит тебя за это.\"" #: lang/json/snippet_from_json.py msgid "\"Guns too loud. Crossbow too long. Running is best.\"" @@ -112585,7 +114075,7 @@ msgid "" "\"Zombies, walkers, dead ones, undead, reanimated, zed, animata, biters. " "Did I miss any?\"" msgstr "" -"«Зомби, ходячие, мертвяки, нежить, ожившие, зики, восставшие, кусатели. Я " +"«Зомби, ходячие, мертвяки, нежить, ожившие, зэды, восставшие, кусатели. Я " "что-то пропустил?»" #: lang/json/snippet_from_json.py @@ -112669,13 +114159,14 @@ msgid "" "\"Somehow I managed to fit an entire goddamn lemon into this makeshift " "battery.\"" msgstr "" -"«Я как-то смог уместить весь этот проклятый лимон в эту самодельную " -"батарейку.»" +"«Я как-то смог уместить целый, мать его, лимон в эту самодельную батарейку.»" #: lang/json/snippet_from_json.py msgid "" "\"My skin is crawling and I teleport every few minutes... what is going o\"" msgstr "" +"«У меня мурашки по коже и я телепортируюсь каждые несколько минут... что " +"происхо»" #: lang/json/snippet_from_json.py msgid "\"You can't see them through the smoke but they can't either.\"" @@ -112749,15 +114240,15 @@ msgid "" "\"I'm starting to feel bad about disabling all these turrets and stealing " "their ammunition.\"" msgstr "" -"\"Я начинаю плохо себя чувствовать, после отключения всех этих турелей и " -"подбирая весь их боекомплект.\"" +"\"Меня начинает мучать совесть, когда я отключаю те турели и забираю их " +"патроны.\"" #: lang/json/snippet_from_json.py msgid "" "\"Make sure you strip the house for all available resources-- tubes, pipes, " "ceramics, sheets, strings, and more\"" msgstr "" -"\"Удостоверьтесь, что вы обдираете дом до нитки - трубки, трубы, керамика, " +"\"Удостоверься, что ты ободрал дом до нитки - трубки, трубы, керамика, " "шторы, длинные шнуры и многое-многое другое...\"" #: lang/json/snippet_from_json.py @@ -112765,9 +114256,8 @@ msgid "" "\"there was a giant shell in my backyard for a few weeks. one day a squid " "guy popped out of it and said his name was steve\"" msgstr "" -"\"В течение нескольких недель на моём заднем дворе была гигантская раковина." -" В один прекрасный момент выскочил из неё парень-кальмар и сказал, что его " -"зовут Стиви.\"" +"\"на моём заднем дворике несколько недель лежала гигантская раковина. " +"однажды из неё выскочил парень-кальмар и сказал, что его зовут стив\"" #: lang/json/snippet_from_json.py msgid "\"FUCK FAUX-MUTANTS, BEING 'EXTREMELY THIRSTY' DOES NOT COUNT\"" @@ -112785,7 +114275,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "\"all these robotic police really take the piss out of kops\"" -msgstr "\"все эти роботы-полицейские реально берут мочу из копов\"" +msgstr "\"все эти робополицейские реально стёб над копами\"" #: lang/json/snippet_from_json.py msgid "\"CHINA DID THIS\"" @@ -112800,16 +114290,14 @@ msgid "" "\"Thank You RivTech. Thank You For Good Coffee. Will Always Stay Awake For" " You Rivtech.\"" msgstr "" -"\"Спасибо, РивТех. Спасибо за хороший кофе. Теперь я всегда буду " -"бодрствовать - для тебя, РивТех.\"" +"\"Спасибо РивТех. Спасибо За Хороший Кофе. Теперь Я Всегда Буду На Ногах " +"Ради Тебя РивТех.\"" #: lang/json/snippet_from_json.py msgid "" "\"See, now I'm just not sure where I'm putting all these storage batteries " "in my body!\"" -msgstr "" -"\"Понимаете, теперь я просто не уверен, куда я кладу все эти аккумуляторные " -"батареи в свое тело!\"" +msgstr "\"Понимаешь, я уже не уверен, куда в моём теле запихнуть эти батареи!\"" #: lang/json/snippet_from_json.py msgid "\"dont try to leave they will shoot you\"" @@ -112826,8 +114314,8 @@ msgid "" "\"HA! YOU THOUGHT I WOULD LEAVE A USEFUL NOTE?! SCREW YOU! GO DIE IN A " "BLOB PIT!\"" msgstr "" -"\"ХА! ВЫ ДУМАЛИ, ЧТО Я ОСТАВЛЮ ПОЛЕЗНУЮ ИНФОРМАЦИЮ?! ДА ПОШЁЛ ТЫ! ИДИ СДОХНИ" -" В ШЛАМОВОЙ ЯМЕ!\"" +"\"ХА! ВЫ ДУМАЛИ, ЧТО Я ОСТАВЛЮ ПОЛЕЗНУЮ ИНФОРМАЦИЮ?! ДА ПОШЛИ ВЫ! ИДИТЕ И " +"СДОХНИТЕ В ЯМЕ СО СЛИЗЬЮ!\"" #: lang/json/snippet_from_json.py msgid "" @@ -112851,8 +114339,8 @@ msgid "" "\"So... what happens if the military rescues us? We're all freaks by now, " "right? How the fuck are we gonna go back to real life?\"" msgstr "" -"\"Так... что с нами будет, если военные спасут нас? Мы же теперь все уроды и" -" фрики, так? Как, чёрт возьми, мы теперь вернёмся к нормальной жизни?\"" +"\"Так... и что будет, если военные спасут нас? Мы же теперь все " +"ненормальные, так? Как, мать твою, мы сможем вернуться к нормальной жизни?\"" #: lang/json/snippet_from_json.py msgid "" @@ -112955,7 +114443,7 @@ msgstr "\"СОБАКА НЕ НАСТОЯЩАЯ СОБАКА\"" msgid "" "\"This is all just a dream, right??! I'M GOING TO WAKE UP, SHE'S GOING TO BE" " OK\"" -msgstr "\"Это всё только сны, правильно??! Я ПРОСНУСЬ, ОНА БУДЕТ В ПОРЯДКЕ.\"" +msgstr "\"Это всего лишь сон, верно??! СЕЙЧАС Я ПРОСНУСЬ, ОНА БУДЕТ В ПОРЯДКЕ.\"" #: lang/json/snippet_from_json.py msgid "\"wek ik spak\"" @@ -112987,7 +114475,7 @@ msgstr "\"Вау, мне не хотелось ссать несколько н #: lang/json/snippet_from_json.py msgid "\"MY GLITTERING SNAKE COMPELS YOU! OBEY!\"" -msgstr "\"МОЯ СВЕРКАЮЩАЯ ЗМЕЯ ЗАСТАВЛЯЕТ ВАС! ПОВИНУЙТЕСЬ!\"" +msgstr "\"МОЯ СВЕРКАЮЩАЯ ЗМЕЯ ПРИКАЗЫВАЕТ ТЕБЕ! ПОВИНУЙСЯ!\"" #: lang/json/snippet_from_json.py msgid "" @@ -113032,15 +114520,15 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "\"MY PALMS ONLY GROW IN POWER!\"" -msgstr "\"МОИ ЛАДОНИ РАСТУТ ТОЛЬКО К ВЛАСТИ!\"" +msgstr "\"МОИ ЛАДОНИ ЛИШЬ НАБИРАЮТ МОЩЬ!\"" #: lang/json/snippet_from_json.py msgid "" "\"riddle. what's 1/4 feathers, 1/4 scales, 1/4 metal, and 1/4 flesh? " "answer: sorry, but you should know this one.\"" msgstr "" -"\"загадка. Что это, состоит из: перьев на 1/4, чешуи на 1/4, металлическое " -"на 1/4 и имеет плоть на 1/4? Ответ: жаль, но вы сами должны догадаться.\"" +"\"загадка. Что это, состоит на 1/4 из перьев, на 1/4 из чешуи, на 1/4 из " +"металла и на 1/4 из плоти? Ответ: жаль, но ты сам должен знать.\"" #: lang/json/snippet_from_json.py msgid "" @@ -113124,9 +114612,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "\"all it takes to seal a wound is a sawblade and a match! trust me\"" -msgstr "" -"\"всё, что нужно, чтобы изолировать рану, - это диск от пилы и спички! верь " -"мне\"" +msgstr "\"всё, что нужно для обработки раны, - это пила и спички! верь мне\"" #: lang/json/snippet_from_json.py msgid "" @@ -113194,7 +114680,7 @@ msgid "" msgstr "" "\"Посмотрите моё кулинарное шоу по Телевизорах! Как вам, создание " "невоспитанной колбасы и приготовка глупого проказника, нарезка ленивого " -"сэндвича и прокапчивание чёртового сосунка из тех поппадал, кто поппытался " +"сэндвича и прокапчивание чёртового сосунка из тех мудаков, кто попытался " "совершить набег на мою кухню ранее...\"" #: lang/json/snippet_from_json.py @@ -113211,18 +114697,16 @@ msgid "" "\"Anyone wanna listen to some music at full volume and shoot the Zs that " "approach? You pick the tunes if I get some ammo.\"" msgstr "" -"\"Никто не хочет послушать музыку на полной громкости и пострелять по " -"подошедшим на звук зэдам? От вас - пули для меня, от меня - ассортимент " -"музыки для вас.\"" +"\"Никто не хочет послушать стерео на полной громкости и пострелять по " +"подошедшим на звук зэдам? Если у меня будут патроны, вы выбираете музыку.\"" #: lang/json/snippet_from_json.py msgid "" "\"Lots of new easy ways to burn calories now. Fighting aminata, managing " "the fields, running with my wings buzzing, and more.\"" msgstr "" -"\"Сейчас появилось очень много новых и лёгких способов сжечь лишние калории." -" Сражение с кошмарами, организация агрономии, контроль и управление своими " -"постоянно гудящими крыльями и многое другое.\"" +"\"Сейчас много новых простых способов сжечь калории. Сражаюсь с зомби, " +"пропалываю поля, бегу и жужжу крыльями и многое другое.\"" #: lang/json/snippet_from_json.py msgid "\"lotta dead mothers\"" @@ -113230,7 +114714,7 @@ msgstr "\"много мёртвых матерей\"" #: lang/json/snippet_from_json.py msgid "\"FLAMING SWORD HUMANE. CAUTERIZES WOUNDS. SURGICAL.\"" -msgstr "\"ПЫЛАЮЩИЙ МЕЧ ГУМАННЫЙ. ПРИЖИГАЕТ РАНЫ. ХИРУРГИЧЕСКИЙ.\"" +msgstr "\"ПЫЛАЮЩИЙ МЕЧ ГУМАННЫЙ. ПРИЖИГАЕТ РАНЫ. ХИРУРГИЧНО.\"" #: lang/json/snippet_from_json.py msgid "\"knife screams it screams i cant breathe so scared help me please help\"" @@ -113317,7 +114801,7 @@ msgid "" "\"I finally dug to the hellmouth. My body burns but my soul finally finds " "its purpose\"" msgstr "" -"\"Я наконец выкопал этот адский разлом. Моё тело горит в огне, но душа, " +"\"Я наконец докопался до адского разлома. Моё тело горит в огне, но душа, " "наконец, спокойна.\"" #: lang/json/snippet_from_json.py @@ -113401,20 +114885,20 @@ msgid "" "\"King Jameson ik goner! Thee cyber limbs isk falleng off me body! Stak " "pyroteknik I heear!\"" msgstr "" -"\"Король Джеймсон, ик, обречён! Твои кибер конечности инженер, ик, отпадают " -"от моего тела! Стак пиротехник, а я всё слышууу!\"" +"\"Король Джеймсон ик кончелся! Маи кибер конечности ик отвалеваеются от " +"маево тела! Я слышу кучу взрыывов!\"" #: lang/json/snippet_from_json.py msgid "" "\"Christian, but have no bible-- the Flying Spaghetti Monster is my god now." " For morale's sake...\"" msgstr "" -"\"Христианство, но ведь сейчас нет никакой библейской веры - Летающий " -"Макаронный Монстр, - вот теперь мой бог. Всё для пользы морали...\"" +"\"Христианин, но библии нет - теперь мой бог Летающий Макаронный Монстр. Во " +"имя сохранения морали...\"" #: lang/json/snippet_from_json.py msgid "\"THE GRANADE DEBUGGED MY SPIDER FRIEND WHERE IS SHE\"" -msgstr "\"ГРАНАТА ОТЛАДИЛА МОЕГО ПАУКА ДРУЖБАНА НО ГДЕ ЖЕ ОНА\"" +msgstr "\"ГРАНАДА ОТЛАДИЛА МОЕГО ПАУКА ДРУЖБАНА НО ГДЕ ЖЕ ОНА\"" #: lang/json/snippet_from_json.py msgid "\"Got my mortar and pestle. Now if I could just find some avocados...\"" @@ -113442,7 +114926,9 @@ msgstr "«д олжно расти единство»" #: lang/json/snippet_from_json.py msgid "\"AMY IS FUNGUS. DO NOT LISTEN IF SHE ASKS YOU TO TAKE OFF MASK\"" -msgstr "«ЭМИ — ЭТО ФУНГАЛОИДЫ. НЕ СЛУШАЙ, ЕСЛИ ОНА ПОПРОСИТ ТЕБЯ СНЯТЬ МАСКУ»" +msgstr "" +"«ЭМИ СТАЛА ФУНГАЛОИДОМ. НЕ СЛУШАЙ ЕЁ, ЕСЛИ ОНА ПОПРОСИТ ТЕБЯ СНЯТЬ ГАЗОВУЮ " +"МАСКУ»" #: lang/json/snippet_from_json.py msgid "" @@ -113454,7 +114940,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "\"Fungus are helping us. Help them and they will unite us\"" -msgstr "«Грибы помогают нам. Помогите им и они объединят нас всех»" +msgstr "«Грибы помогают нам. Помогите им, и они объединят нас всех»" #: lang/json/snippet_from_json.py msgid "" @@ -113462,7 +114948,7 @@ msgid "" "tower. THROUGH IT\"" msgstr "" "«Видел мальчика, который был не старше 16. Прогуливался через грибную башню." -" ЧЕРЕЗ ЭТО»" +" ЧЕРЕЗ НЕЁ»" #: lang/json/snippet_from_json.py msgid "" @@ -113484,8 +114970,8 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "\"HADENSBROOK REBUILT AROUND FUNGUS. THEY EAT GRAY APPLES AND SPREAD IT\"" msgstr "" -"«ХЕЙДЕНСБРУК СТРОИЛСЯ ТУТ РЯДОМ С ФУНГАЛОИДАМИ. ОНИ ПИТАЛИСЬ СЕРЫМИ ЯБЛОКАМИ" -" И РАСПРОСТРАНИЛИ ИХ ВОКРУГ»" +"«ХЕЙДЕНСБРУК ЗАНОВО ОТСТРОИЛСЯ ВОКРУГ ГРИБОВ. ОНИ ЕДЯТ СЕРЫЕ ЯБЛОКИ И " +"РАСПРОСТРАНЯЮТ ИХ»" #: lang/json/snippet_from_json.py msgid "\"mycus must grow\"" @@ -113577,8 +115063,8 @@ msgid "" "somehow firing lightning fields, spitting acid and reports of soldiers " "hidden in mobile clouds of smoke." msgstr "" -"ЗАХВАТЧИКИ — СУПЕРСОЛДАТЫ: Дополнительные проявления мутаций, помимо силы, " -"скорости и прочности, у нас теперь есть сообщения о внешних врагах, которые " +"ЗАХВАТЧИКИ — СУПЕРСОЛДАТЫ: Ещё одно доказательство мутаций - помимо силы, " +"скорости и живучести, нам теперь сообщают об иностранных солдатах, которые " "каким-то образом испускают молнии и плюются кислотой, и о солдатах, " "скрывающихся в передвигающихся облаках дыма." @@ -113659,10 +115145,10 @@ msgid "" "smash or butcher with a knife until unrecognizable! Screw Geneva! Protect " "our troops!" msgstr "" -"РЕДАКТОР ГОВОРИТ \"УНИЧТОЖАЙТЕ МЁРТВЫХ\". Узнаваемые трупы наших врагов на " -"улице, могут выдать позиции ополчения! Если вы убили бойца, размочите его " -"труп в кашу или разделайте при помощи ножа, пока его нельзя будет " -"распознать! Плевать на Женеву! Защищайте наши войска!" +"РЕДАКТОР ГОВОРИТ \"УНИЧТОЖАЙТЕ МЁРТВЫХ\". Узнаваемые вражеские трупы на " +"улице могут выдать позиции ополчения! Если вы убили бойца, разбейте его труп" +" в кашу или разделайте при помощи ножа, пока его нельзя будет распознать! " +"Плевать на Женеву! Защищайте наши войска!" #: lang/json/snippet_from_json.py msgid "" @@ -113772,9 +115258,9 @@ msgid "" "revolution since espresso. Why wait for milk to boil? Have your coffee " "ready instantly with \"THE POWER OF THE ATOM\"!" msgstr "" -"Будущие... запитано с КОФЕ! Ривтех представляет Вам величайшую революцию " -"после экспрессо. Зачем ждать закипания молока? Ваш кофе моментально готов с " -"\"СИЛОЙ АТОМА\"!" +"Будущие... заряжено от КОФЕ! Ривтех представляет Вам величайшую революцию со" +" времён эспрессо. Зачем ждать, пока молоко вскипит? Ваш кофе моментально " +"готов с \"СИЛОЙ АТОМА\"!" #: lang/json/snippet_from_json.py msgid "" @@ -113792,9 +115278,9 @@ msgid "" "Wrong! We've got all the articles that make it interesting to talk about, " "so you can \"Make Mechanics Popular\"!" msgstr "" -"ПОПУЛЯРНАЯ МЕХАНИКА: Люди говорят, что механика скучная? Мы говорим: " -"«Докажите им, что они не правы!». И у нас есть статьи, которые делают её " -"интересной, так что вы сможете «Сделать механику популярной»!" +"ПОПУЛЯРНАЯ МЕХАНИКА: Люди говорят, что механика скучная. Мы говорим: " +"«Докажем обратное!». У нас есть куча статей, которые интересно обсуждать, " +"так что вы можете «Сделать Механику Популярной»!" #: lang/json/snippet_from_json.py msgid "" @@ -113803,8 +115289,8 @@ msgid "" "way to use superglue without gluing your hands together!" msgstr "" "ЕЖЕКВАРТАЛЬНЫЙ ЖУРНАЛ ДЛЯ РУКОДЕЛЬНИКОВ: Макароны теперь не только для еды! " -"Научитесь изготовлять из неё драгоценности и предметы искусства! Также мы " -"обсуждаем, как правильно применять суперклей, чтобы не склеить ваши руки!" +"Научитесь изготовлять из макарон украшения и предметы искусства! Также мы " +"обсудим, как правильно применять суперклей, чтобы не склеить свои руки!" #: lang/json/snippet_from_json.py msgid "" @@ -113943,9 +115429,9 @@ msgid "" "ATOMIC power! To make boiling hot coffee the MINUTE you want it! Atomic " "Coffeemaker." msgstr "" -"Кофе будущего... СРАЗУ! В действительности, ни у кого нет времени сварить " -"отличное кофе, но теперь и не нужно! Ривтех предлагает вам неистощимые " -"запасы энергии АТОМА! Хотите сварить кофе за МИНУТУ!? Атомная кофеварка." +"Кофе будущего... ЗДЕСЬ И СЕЙЧАС! Ни у кого нет времени варить отличный кофе," +" но теперь и не нужно! Ривтех предлагает неистощимую АТОМНУЮ энергию! " +"Кипящий кофе СРАЗУ ЖЕ, едва вы его захотите! Атомная кофемашина." #: lang/json/snippet_from_json.py msgid "" @@ -113954,8 +115440,8 @@ msgid "" "so you can \"Make Mechanics Popular\"!" msgstr "" "ПОПУЛЯРНАЯ МЕХАНИКА: Люди говорят, что механика скучная? Мы говорим: " -"«Докажите им, что они не правы!». И у нас есть статьи, которые делают её " -"интересным, так что вы сможете «Сделать механику популярной»!" +"«Докажем обратное!». У нас есть куча статей, которые интересно обсуждать, " +"так что вы можете «Сделать Механику Популярной»!" #: lang/json/snippet_from_json.py msgid "" @@ -115095,8 +116581,8 @@ msgid "" "This guy I know was walking through the subway when he came across a giant " "rift in the earth, with lava far below. Weird, huh?" msgstr "" -"Знаю, что этот парень шёл по туннелям метро и наткнулся на огромную трещину " -"в земле, наполненную лавой. Чудно, да?" +"Знакомый парень шёл по туннелям метро и наткнулся на огромную трещину в " +"земле, наполненную лавой. Чудно, да?" #: lang/json/snippet_from_json.py msgid "" @@ -115125,6 +116611,251 @@ msgstr "" "если сможешь его найти! Хотя я слышал, что он не будет работать, если не " "предоставить ему набор для анестезии, который введёт тебя в наркоз." +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "" +"Берегись всего, что глубже подвала. Кое-кто слышал страшные крики из " +"вентиляционных шахт рудников и лабораторий. Очень тревожащие крики." + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "Кто отвёртку в день выпивает, у того цинги не бывает!" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "" +"Голоден сильнее обычного? Природные масла могут помочь. Совсем невкусно, но " +"какая разница, если второй вариант - съесть собственную ногу?" + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "" +"Местность может изменить ход сражения, убедись, что ты используешь её против" +" врагов, а не наоборот." + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "" +"Люди, проходившие мимо шахты, говорили что-то про ужасный запах. Если " +"собираешься туда, подумай прихватить противогаз." + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "Знание — сила. Серьёзно, просто возьми книгу." + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "" +"Ничто не может убить тебя, если всё уже мертво. Ну, кроме холода, голода и.." +" ладно, забей." + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "" +"Одна девочка уверяла меня, что видела сухопутную акулу, легко скользившую " +"сквозь камень, стены и почву. Я бы сказал, выдумка, но я видел всякое, так " +"что не могу сразу признать это враньём." + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "" +"Сначала кипяти, потом пей. Караван из десяти человек попил из ручья, и " +"теперь это караван из трех человек." + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "" +"Как-то раз я видел, как набитый вещмешок поменял пять хозяев за неделю. Если" +" не можешь убежать от зомби, куча барахла за спиной - сомнительная штука." + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "" +"Тим говорит, можно проехать на машине сквозь орду зомби. Тим теперь зомби. " +"Вопросы?" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no" +" environment to save now, but one can still save thyself I guess." +msgstr "" +"Мне говорили: переходи на солнечную энергию, спаси природу и себя. Ну... " +"больше не осталось природы, чтоб её спасать, но себя спасти ещё можно, " +"наверное." + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "" +"Если не смог найти нож, разбей растения в горшках. Скорее всего, получишь " +"все необходимое, чтобы сделать нож самому." + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "" +"Чем отличаются хорошее и плохое узкое место? У хорошего есть еще одна дверь " +"позади тебя." + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "" +"Вот что я думаю: если бы убедить полицейских роботов, что ты их начальник..." + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their components." +" This guy around here, McSomething whatever his name is, is a master at " +"this." +msgstr "" +"Ты удивишься, сколько предметов можно разобрать на части. Где-то тут " +"крутился парень, Мак-Как-там-его, вот он в этом настоящий мастер." + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "" +"Начинающим механикам паяльник может стать лучшим другом. Ещё им можно " +"прижечь рану, но подобное лечение убило столько же людей, скольким помогло, " +"так что это крайняя мера." + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "" +"Я видел некоторых ребят с недавно установленными КБМ. Значит, можно их " +"добыть не только из разграбленных магазинов. Наверное, это объясняет те " +"вскрытые тела, что я тут видел." + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "" +"Меня уже тошнит от копчёного мяса, но оно так долго хранится. Ну... если б у" +" меня лежала душа к готовке, я бы смог разнообразить свой рацион без ущерба " +"сроку годности." + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" +"Хитрого Джо повесили за оригинальные способы уничтожения зомби. Ага, сжечь " +"дом, чтоб выкурить несколько орд, это нормально, но сжечь целый город со " +"всем барахлом - определенно нет." + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "" +"Мистер Могила всегда говорил: не бери ничего на рейд, чтобы вынести больше " +"барахла. Тогда его звали Джо, и он по праву заслужил прозвище как первый " +"местный \"обладатель\" могилы." + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are" +" always better than two." +msgstr "Друг - еще один едок, но для работы четыре руки всегда лучше двух." + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my" +" sorry ass away from the horde, with nothing more but some white powder I " +"got from that zombie. Saved me that time." +msgstr "" +"Я был против наркотиков, пока меня едва не убил зомби, а я спасал свою " +"несчастную задницу от орды всего лишь с горсткой белого порошка, найденного " +"у того зомби. Тогда меня это спасло." + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "" +"Сомневаюсь, что Майк еще в здравом уме. Ему не повезло как-то раз заехать в " +"школу. Это стоило ему не только сломанных рёбер." + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "" +"Есть одна мысль насчет взрывчатки. Если ты ещё можешь бежать, а бомба пока " +"не взорвалась, продолжай бежать. Не может быть слишком далеко между тобой и " +"шашкой динамита." + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "Не стреляй из гранатомётов в узких коридорах, ты можешь промахнуться." + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it " +"lemon?" +msgstr "" +"Как-то раз видел безумного химика. Он сделал батарейку из картошки... или то" +" был лимон?" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "" +"Я не знаю, почему зомби-гренадёры всегда держат гранату в руке. Мышечная " +"память? В любом случае держись подальше, когда он умрёт." + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "" +"Оно уже мертво? Как можно узнать, умерло ли оно, если оно уже было мертво? Я" +" предпочитаю спрашивать: ты *удар* уже *удар* мертво? *удар удар удар*" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "" +"Я слышал, где-то тут растут большие странные ягоды, но почему ни от кого не " +"узнать, сытные они или нет?" + #: lang/json/snippet_from_json.py msgid " " msgstr "ну, , " @@ -115229,10 +116960,6 @@ msgstr "жопонюх" msgid "piece of shit" msgstr "жополиз" -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "отброс" - #: lang/json/snippet_from_json.py msgid "scumbag" msgstr "подонок" @@ -115509,9 +117236,9 @@ msgstr "Привет, " msgid "never" msgstr "никогда" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" -msgstr "нет" +msgstr "no" #: lang/json/snippet_from_json.py msgid "not gonna happen" @@ -115743,7 +117470,7 @@ msgstr "Эй, я здесь!" #: lang/json/snippet_from_json.py msgid "I'm unaffiliated." -msgstr "Я без фракции." +msgstr "Я ни к кому не принадлежу." #: lang/json/snippet_from_json.py msgid "I don't run with a crew." @@ -115983,19 +117710,19 @@ msgstr "Я собираюсь лечь спать." #: lang/json/snippet_from_json.py msgid "I'm off to bed. Wake me if you need me." -msgstr "" +msgstr "Я спать! Разбуди меня, если я тебе понадоблюсь." #: lang/json/snippet_from_json.py msgid "I'm going to sleep over there." -msgstr "" +msgstr "Я собираюсь поспать там." #: lang/json/snippet_from_json.py msgid "Time for bed! See you in the morning." -msgstr "" +msgstr "Пора в кровать. Увидимся утром." #: lang/json/snippet_from_json.py msgid "There's a bed calling my name, and I'm going to it." -msgstr "" +msgstr "Тут меня кровать зовёт, и я к ней собираюсь." #: lang/json/snippet_from_json.py msgid "Good night! Wake me if you need me." @@ -116027,7 +117754,7 @@ msgstr "действительно" #: lang/json/snippet_from_json.py msgid "utterly" -msgstr "полностью" +msgstr "очень сильно" #: lang/json/snippet_from_json.py msgid "fucking" @@ -116405,7 +118132,7 @@ msgstr "Ладно, Руки вверх!" msgid "Hands in the air, !" msgstr "Руки поднять, !" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" msgstr "Отойди" @@ -116593,13 +118320,13 @@ msgstr "\"НЕТ ПЛОХОЙ РОБОТ Я НЕ ХОЧУ ПИЦЦУ\"" #: lang/json/snippet_from_json.py msgid "\"Fuckin haunted pizza joint, just burn it down\"" -msgstr "\"Чёрт, преследовал пиццу, просто чтобы сжечь её\"" +msgstr "\"Сраная пиццерия с привидениями, просто сожги её\"" #: lang/json/snippet_from_json.py msgid "\"Pizza, arcade tokens, horrible death, got my bases covered.\"" msgstr "" -"«Пицца, аркадные символы, ужасающая смерть, медленно покрывает стены моей " -"базы.»" +"«Пицца, аркадные жетоны, ужасающая смерть, мои основные потребности " +"удовлетворены.»" #: lang/json/snippet_from_json.py msgid "\"leg eaten by zombie robot furry help\"" @@ -116607,9 +118334,7 @@ msgstr "\"зомби робо фурри съел ногу помогите\"" #: lang/json/snippet_from_json.py msgid "KEVIN SACRIFICING GAMEPLAY FOR REALISM? THE SHOCKING TRUTH REVEALED" -msgstr "" -"КЕВИН ПРОВЁЛ РИТУАЛ ЖЕРТВОПРИНОШЕНИЯ, ПОЖЕРТВОВАВ ГЕЙМПЛЕЕМ РАДИ РЕАЛИЗМА? " -"ШОКИРУЮЩАЯ ПРАВДА РАЗОБЛАЧАЮЩИЕ ФАКТЫ" +msgstr "КЕВИН ЖЕРТВУЕТ ГЕЙМПЛЕЕМ РАДИ РЕАЛИЗМА? ОТКРЫТА ШОКИРУЮЩАЯ ПРАВДА" #: lang/json/snippet_from_json.py msgid "TEN FACTS ABOUT THE NEW BIONIC SYSTEM THAT WILL SHOCK YOU" @@ -116617,22 +118342,21 @@ msgstr "ДЕСЯТЬ ФАКТОВ О НОВОЙ СИСТЕМЕ БИОНИКИ, #: lang/json/snippet_from_json.py msgid "YOU WON'T BELIEVE WHO JUST ADDED A NEW PROFESSION" -msgstr "НЕ ВЕРЬТЕ ТЕМ КТО ТОЛЬКО ПОДОБАВЛЯЛ НОВЫХ ПРОФЕССИЙ" +msgstr "ВЫ НЕ ПОВЕРИТЕ, КТО ТОЛЬКО ЧТО ДОБАВИЛ НОВУЮ ПРОФЕССИЮ" #: lang/json/snippet_from_json.py msgid "" "TRIVIALIZE THE EARLY GAME WITH THIS ONE SIMPLE SPEAR WEAPON! CONTRIBUTORS " "HATE HIM" msgstr "" -"ПРИВЫЧНОЕ ДЕЛО ДЛЯ ИГРЫ В РАННЕМ ДОСТУПЕ — ОДНО ПРОСТОЕ КОПЬЁ ИЗ ВСЕГО " -"ОРУЖИЯ! УЧАСТНИКИ ПРОЕКТА В ЯРОСТИ" +"ПЕРВЫЕ ДНИ ИГРЫ ЛЕГЧЕ ЛЁГКОГО С ЭТИМ ПРОСТЫМ КОПЬЁМ! УЧАСТНИКИ ПРОЕКТА В " +"ЯРОСТИ" #: lang/json/snippet_from_json.py msgid "" "A MEDICAL MUTANT SET THEMSELVES ON FIRE - YOU WON'T BELIEVE WHAT HAPPENED " "NEXT" -msgstr "" -"МЕДИЦИНСКИЙ МУТАНТ ВСТАЛ В ОГОНЬ — ВЫ НЕ ПОВЕРИТЕ В ТО, ЧТО ПРОИЗОШЛО ДАЛЬШЕ" +msgstr "МЕДИЦИНСКИЙ МУТАНТ ПОДЖЁГ СЕБЯ — ВЫ НЕ ПОВЕРИТЕ, ЧТО ПРОИЗОШЛО ДАЛЬШЕ" #: lang/json/snippet_from_json.py msgid "THE TRUTH ABOUT CATACLYSM'S DEVELOPMENT - AND ITS DISGUSTING SECRET" @@ -116641,12 +118365,12 @@ msgstr "ПРАВДА О РАЗРАБОТКЕ ПРОЕКТА CATACLYSM - И О Е #: lang/json/snippet_from_json.py #, no-python-format msgid "IT'S TRUE - MUTAGEN IS 40% BLEACH, AND HERE'S WHY" -msgstr "ЗДЕСЬ ЭТО ПРАВДА — МУТАГЕН — НА 40% ОТБЕЛИВАТЕЛЬ, И ПОЧЕМУ ЗДЕСЬ" +msgstr "ЭТО ПРАВДА — МУТАГЕН НА 40% СОСТОИТ ИЗ ОТБЕЛИВАТЕЛЯ, И ВОТ ПОЧЕМУ" #: lang/json/snippet_from_json.py msgid "20 EASY WAYS TO ESCAPE A LAB - #4 WILL BLOW YOUR MIND" msgstr "" -"20 ЛЁГКИХ СПОСОБОВ СБЕЖАТЬ ИЗ ЛАБОРАТОРИИ — СПОСОБ №4, ВЗОРВЁТ ВАШ МОЗГ" +"20 ЛЁГКИХ СПОСОБОВ СБЕЖАТЬ ИЗ ЛАБОРАТОРИИ — СПОСОБ №4 ВЗОРВЁТ ВАШ МОЗГ" #: lang/json/snippet_from_json.py msgid "" @@ -116655,10 +118379,10 @@ msgid "" "stylized silhouette of a T. Rex. The flier reads \"Witness the rebirth of " "the extinct, grand opening this week!\"" msgstr "" -"Реклама местной выставки дикой природы, демонстрирующая появление новых и " -"захватывающих животных. Как ни странно, единственное изображение на нём — " -"стилизованный силуэт Т. Рекса. На флаере написано: «Доказательство " -"возрождения вымерших животных, торжественное открытие на этой неделе!»" +"Реклама местной выставки дикой природы, уверяющая в появлении новых " +"потрясающих животных. Как ни странно, единственное изображение на нём — " +"стилизованный силуэт тираннозавра. На флаере написано: «Узрите возрождение " +"вымерших, торжественное открытие на этой неделе!»" #: lang/json/snippet_from_json.py msgid "\"SWAMPS BAD TEETH HUGE OHGOD\"" @@ -116666,7 +118390,7 @@ msgstr "«БОЛОТА ПЛОХО ЗУБЫ ОГРОМНЫ О БОЖЕ»" #: lang/json/snippet_from_json.py msgid "\"Why is that place just fucking crawling with lizards?\"" -msgstr "«Почему то место только для чёртового ползания вместе с ящерицами?»" +msgstr "«Почему в том месте просто дохера ящериц?»" #: lang/json/snippet_from_json.py msgid "\"Fellow scaly bretheren! Tonight we feast on the hairless apes.\"" @@ -116675,8 +118399,7 @@ msgstr "«Мои чешуйчатые друзья! Сегодня ночью м #: lang/json/snippet_from_json.py msgid "\"where's some .700 t-rex medicine when you need it?\"" msgstr "" -"«где же этот .700 калибр и Т-Рекс медицина, когда мы отчаянно нуждаемся в " -"них?»" +"«где же это лекарство от тираннозавров .700 калибра, когда оно так нужно?»" #: lang/json/snippet_from_json.py msgid "" @@ -116688,28 +118411,27 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "\"Gun. Sword. Gunsword. Screw bayonets, this is way more awesome.\"" -msgstr "«Пушка. Меч. Пушка-меч. Отвёртка-штык! Впечатляюще, не так ли?»" +msgstr "«Пушка. Меч. Пушкомеч. Нахрен штыки, это намного круче»" #: lang/json/snippet_from_json.py msgid "" "\"Not sure if wielding this thing makes me feel like a bodybuilder or a " "theoretical physicist. Both?\"" msgstr "" -"«Не уверен, но владея этой штукой я чувствую себя, подобно культуристу или " -"физику теоретику. Или ими обоими сразу?»" +"«Когда держу эту штуку, я не уверен, чувствую ли я себя качком или физиком-" +"теоретиком. Или обоими сразу?»" #: lang/json/snippet_from_json.py msgid "\"This ain't your grandaddy's .50 cal hand cannon!\"" -msgstr "«Это не твоя пушка .50 калибра, а твоего дедушки!»" +msgstr "«Это не твоя личная пушка .50 калибра!»" #: lang/json/snippet_from_json.py msgid "\"Nice pistol! Which trigger fires the flamer?\"" -msgstr "" -"\"Классный пистолет! Какой спусковой крючок отвечает за огонь из огнемёта?\"" +msgstr "\"Классный пистолет! На что нажать, чтобы выстрелить из огнемёта?\"" #: lang/json/snippet_from_json.py msgid "\"Why in the name of fuck did I slap a crossbow on this handgun.\"" -msgstr "\"Зачем, ради всего святого, я прицепил арбалет на этот пистолет?\"" +msgstr "\"За каким хером я прицепил арбалет на этот пистолет?\"" #: lang/json/snippet_from_json.py msgid "" @@ -116733,13 +118455,11 @@ msgstr "" msgid "" "\"whys it called a heater shield anyway? only heats if i light it on " "fire.\"" -msgstr "" -"«почему его так называют тепловой щит, а не иначе? только тепло, если я " -"освещу его в огне.»" +msgstr "«по сравнению с тем, что мне нужно, каплевидный щит - капля в море»" #: lang/json/snippet_from_json.py msgid "\"OW IT IS TOO DAMN COLD TO BE A HOPLITE\"" -msgstr "«УХ ЧЕРТОВСКИ ЗДЕСЬ ХОЛОДНО, ЧТОБЫ БЫТЬ БРОННИКОМ»" +msgstr "«УХ ЗДЕСЬ ЧЕРТОВСКИ ХОЛОДНО ДЛЯ ГОПЛИТА»" #: lang/json/snippet_from_json.py msgid "" @@ -116799,11 +118519,11 @@ msgstr " . Сожрали волки." #: lang/json/snippet_from_json.py msgid " . Infected." -msgstr " . Инфекция." +msgstr " . Заражённый." #: lang/json/snippet_from_json.py msgid "We send on to Valhalla" -msgstr "Мы отправим в Вальгаллу." +msgstr "Мы отправим тебя в Вальгаллу." #: lang/json/snippet_from_json.py msgid "RIP " @@ -116879,7 +118599,7 @@ msgstr "Номера Доступны. Аренда Договорная." #: lang/json/snippet_from_json.py msgid "No sick allowed inside!" -msgstr "Внутрь не допускается больной!" +msgstr "Вход больным запрещён!" #: lang/json/snippet_from_json.py msgid "Need clean water." @@ -116895,11 +118615,11 @@ msgstr "Готов к эвакуации." #: lang/json/snippet_from_json.py msgid "S.O.S." -msgstr "" +msgstr "S.O.S." #: lang/json/snippet_from_json.py msgid "No Power. No Food. Send Airdrops Please!" -msgstr "Нет Энергии. Нет Еды. Пошлите Посылку По Воздуху. Пожалуйста!" +msgstr "Нет Энергии. Нет Еды. Отправьте Посылку По Воздуху, Пожалуйста!" #: lang/json/snippet_from_json.py msgid "No more FEMA camp refugees. You're already dying." @@ -116911,7 +118631,7 @@ msgstr "Для входа требуется проверка состояния #: lang/json/snippet_from_json.py msgid "Running low on Medicine, Food, Water, Optimism." -msgstr "Устал бежать, используй: Медицину, Еду, Воду, Оптимизм." +msgstr "Заканчиваются Лекарства, Еда, Вода, Оптимизм." #: lang/json/snippet_from_json.py msgid "Save us, army men." @@ -116986,7 +118706,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "\"ITS A TRAP NO WAIT ITS A TARP\"" -msgstr "\"ЭТО ЛОВУШКА НЕ ЖДАТЬ ЭТО ЛОШУВКА\"" +msgstr "\"ЭТО ЛОВУШКА НЕТ ПОСТОЙТЕ ЭТО ЛОШУВКА\"" #: lang/json/snippet_from_json.py msgid "" @@ -117001,8 +118721,8 @@ msgid "" "\"Tank drone, meet the real deal. See how you handle 120 millimeters of " "HELL YEAH!\"" msgstr "" -"\"Встречайте реальную цель - дрон танк. Посмотрим, как вы справитесь с 120-м" -" миллиметром из АДА, о ДА!\"" +"\"Встречайте реальную цель - дрон танк. Посмотрим, как вы справитесь со 120 " +"миллиметрами АДА, о ДА!\"" #: lang/json/snippet_from_json.py msgid "\"big fucking gun, earplugs are good for your brain\"" @@ -117019,7 +118739,9 @@ msgstr "" msgid "" "\"Next person to call this infantry fighting vehicle a 'tank' is walking " "home.\"" -msgstr "\"Следующий, кто назовёт эту боевую машину пехоты танком, пойдёт домой.\"" +msgstr "" +"\"Следующий, кто назовёт эту боевую машину пехоты — танком, пошагает " +"строевым шагом домой.\"" #: lang/json/snippet_from_json.py msgid "" @@ -117060,7 +118782,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "\"my car is a diamond in the rough... literally\"" -msgstr "\"моя машина - алмаз, грубо говоря... буквально\"" +msgstr "\"моя машина - неогранённый алмаз... буквально\"" #: lang/json/snippet_from_json.py msgid "\"M249 TURRET NODDED. IS TURRET ALIVE? FINALLY, SOMEBODY TO TALK TO!\"" @@ -117070,7 +118792,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "\"Added so many things to my taxi that it went a-blaze. Whoops.\"" -msgstr "\"Добавил в своё такси так много вещей, что оно начало полыхать. Упс.\"" +msgstr "\"Добавил так много всего в своё такси, что оно загорелось. Упс.\"" #: lang/json/snippet_from_json.py msgid "" @@ -117078,7 +118800,7 @@ msgid "" "universe end?\"" msgstr "" "\"Если я помещу одно измерение грузового отсека в другое измерение грузового" -" отсека, схлопнится ли вселенная?\"" +" отсека, схлопнется ли вселенная?\"" #: lang/json/snippet_from_json.py msgid "\"one day, i will be part of car, too\"" @@ -117089,8 +118811,8 @@ msgid "" "\"Putta little bitta dynamite and halfa landmine in an old soda can... WHAM!" " You goin' somewhere.\"" msgstr "" -"\"Смешаем небольшую часть динамита с половинкой фугаса в старой банке из-под" -" газировки... БУМ! Ты куда-то уходишь?\"" +"\"Короч, берёшь старую банку от газировки и пихашь туда чутка динамиту и " +"кусман фугаса... БАХ! Ты куда-то разлетаешься.\"" #: lang/json/speech_from_json.py msgid "Wanna play with me?" @@ -117178,7 +118900,7 @@ msgstr "Умри за меня!" #: lang/json/speech_from_json.py msgid "Why won't you die?" -msgstr "Почему ты не сдохнешь?" +msgstr "Почему ты никак не сдохнешь?" #: lang/json/speech_from_json.py msgid "Blood... Delicious." @@ -117186,7 +118908,7 @@ msgstr "Кровь… Прекрасно." #: lang/json/speech_from_json.py msgid "See you... IN HELL!" -msgstr "Увидимся в АДУ!" +msgstr "Увидимся... В АДУ!" #: lang/json/speech_from_json.py msgid "AAAIEEEEEEE!" @@ -117210,7 +118932,7 @@ msgstr "Эй, ребятки, хотите конфеток?" #: lang/json/speech_from_json.py msgid "Down here, they ALL float!" -msgstr "Лежи здесь, они ВСЕ летают!" +msgstr "Здесь внизу, они ВСЕ летают!" #: lang/json/speech_from_json.py msgid "Do you really need that much honey?" @@ -117218,7 +118940,7 @@ msgstr "Тебе точно нужно столько мёда?" #: lang/json/speech_from_json.py msgid "My previous owner squealed like a pig when I gutted her!" -msgstr "Моя прежняя хозяйка визжала как свинья, когда я её зарезала!" +msgstr "Моя прежняя хозяйка визжала как свинья, когда я её резал!" #: lang/json/speech_from_json.py msgid "\"Hello?\"" @@ -117405,7 +119127,7 @@ msgstr "«Мы уничтожим особь.»" #: lang/json/speech_from_json.py msgid "\"The glass alone won't keep us safe for very long.\"" -msgstr "«Стекло само по себе недолго защитит нас.»" +msgstr "«Стекло само по себе ненадолго защитит нас.»" #: lang/json/speech_from_json.py msgid "\"That fuckin' thing is horrible, man, it gives me the creeps.\"" @@ -117422,7 +119144,7 @@ msgstr "«Я что-то сомневаюсь в этом.»" #: lang/json/speech_from_json.py msgid "\"Hey, we got other specimens that could withstand a grenade.\"" msgstr "" -"«Слушай, у нас есть другие твари, которые могут выдержать взрыв гранаты.»" +"«Слушай, у нас есть другие особи, которые могут выдержать взрыв гранаты.»" #: lang/json/speech_from_json.py msgid "\"And that's supposed to comfort me?\"" @@ -117800,7 +119522,7 @@ msgstr "«У нас здесь серьёзная ситуация.»" #: lang/json/speech_from_json.py msgid "\"Call the police.\"" -msgstr "«Звоните в полицию.»" +msgstr "«Позвоните в полицию.»" #: lang/json/speech_from_json.py msgid "\"Call an ambulance.\"" @@ -118584,7 +120306,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "Are you even listening to me?" -msgstr "Вы слушаете меня?" +msgstr "Вы вообще слушаете меня?" #: lang/json/speech_from_json.py msgid "\"I've got a feeling we're not in Kansas anymore.\"" @@ -118815,7 +120537,7 @@ msgstr "«Какая ваша базовая неисправность, оне #: lang/json/speech_from_json.py msgid "\"Leeeeeeeeeeeeeroy! Jenkins rebuild!\"" -msgstr "«Лееееееееееееерой! Дженкинс пересоберёт!»" +msgstr "«Лееееееееееееерой! Дженкинс вернулся!»" #: lang/json/speech_from_json.py msgid "\"Activated!\"" @@ -118999,7 +120721,7 @@ msgstr "«Не стреляй!»" #: lang/json/speech_from_json.py msgid "\"\"" -msgstr "" +msgstr "\"\"" #: lang/json/speech_from_json.py msgid "\"Stop shooting!\"" @@ -119099,7 +120821,7 @@ msgstr "«У тебя отличная цель!»" #: lang/json/speech_from_json.py msgid "\"I need backup!\"" -msgstr "«Мне нужен бэкап!»" +msgstr "«Прикрой меня!»" #: lang/json/speech_from_json.py msgid "\"I never liked her.\"" @@ -119171,7 +120893,7 @@ msgstr "«На этот раз — это НАШЕ время.»" #: lang/json/speech_from_json.py msgid "\"Second time's a charm...\"" -msgstr "«Во второй раз — обаяние...»" +msgstr "«Со второго раза получится...»" #: lang/json/speech_from_json.py msgid "\"Howdy, stranger!\"" @@ -119219,7 +120941,7 @@ msgstr "«Ага! Не смертельно — как всегда.»" #: lang/json/speech_from_json.py msgid "\"Can't. See. A. Thing.\"" -msgstr "«Не могу. Видеть. Штука.»" +msgstr "«Ничего. Не. Вижу.»" #: lang/json/speech_from_json.py msgid "\"Absolutely no improvement.\"" @@ -119227,7 +120949,7 @@ msgstr "«Абсолютно никакого улучшения.»" #: lang/json/speech_from_json.py msgid "\"Not getting better with age!\"" -msgstr "«Не станешь лучше с возрастом!»" +msgstr "«С возрастом лучше не становишься!»" #: lang/json/speech_from_json.py msgid "\"This is just getting embarrassing.\"" @@ -119335,147 +121057,147 @@ msgstr "«Я разовью у тебя чувство собственного #: lang/json/speech_from_json.py msgid "\"bzzzzzz.\"" -msgstr "" +msgstr "\"бзззззз.\"" #: lang/json/speech_from_json.py msgid "\"Beep.\"" -msgstr "" +msgstr "\"Бип.\"" #: lang/json/speech_from_json.py msgid "\"Beep?\"" -msgstr "" +msgstr "\"Бип?\"" #: lang/json/speech_from_json.py msgid "\"Beep!\"" -msgstr "" +msgstr "\"Бип!\"" #: lang/json/speech_from_json.py msgid "\"Beeeeep beep.\"" -msgstr "" +msgstr "\"Бииииип бип.\"" #: lang/json/speech_from_json.py msgid "\"Bebebeeeep.\"" -msgstr "" +msgstr "\"Бибибиииип.\"" #: lang/json/speech_from_json.py msgid "\"Beep boop beep?\"" -msgstr "" +msgstr "\"Бип буп бип?\"" #: lang/json/speech_from_json.py msgid "\"Beedoo-Beep.\"" -msgstr "" +msgstr "\"Биу-Бип.\"" #: lang/json/speech_from_json.py msgid "\"Beep Beep. Whirr.\"" -msgstr "" +msgstr "\"Бип Бип. Уирр.\"" #: lang/json/speech_from_json.py msgid "\"Vrrrr Hrrrmmm.\"" -msgstr "" +msgstr "\"Врррр Ррррммм.\"" #: lang/json/speech_from_json.py msgid "\"Whirrrrr-click click.\"" -msgstr "" +msgstr "\"Уиррррр-щёлк щёлк.\"" #: lang/json/speech_from_json.py msgid "\"Boodoobeep beep beep.\"" -msgstr "" +msgstr "\"Буууубип бип бип.\"" #: lang/json/speech_from_json.py msgid "\"Brannnnnnn Brzt Brmmmm.\"" -msgstr "" +msgstr "\"Брннннннн Брзт Брмммм.\"" #: lang/json/speech_from_json.py msgid "\"Whshoooo. Brzzzt. Brzzzt.\"" -msgstr "" +msgstr "\"Вжжууууу. Бззззт. Бззззт.\"" #: lang/json/speech_from_json.py msgid "\"Brrm Bum Brrm?\"" -msgstr "" +msgstr "\"Брррм Брррм Брррм?\"" #: lang/json/speech_from_json.py msgid "\"Pwweeee Krsht.\"" -msgstr "" +msgstr "\"Уиииии Чшшш\"." #: lang/json/speech_from_json.py msgid "\"Fshkt fshkt. Booop.\"" -msgstr "" +msgstr "\"Фшшш Фшшш. Буууп\"." #: lang/json/speech_from_json.py msgid "\"Vzt. Vzt. Krshhhhhhhh.\"" -msgstr "" +msgstr "\"Взт. Взт. Кшшшшшшшш.\"" #: lang/json/speech_from_json.py msgid "\"Whhheeee-oooo. Bedeep.\"" -msgstr "" +msgstr "\"Уиииииии-уууу. Бибип.\"" #: lang/json/speech_from_json.py msgid "\"Grrrnd clang whirrrr.\"" -msgstr "" +msgstr "\"Грррр лязг уиррр.\"" #: lang/json/speech_from_json.py msgid "\"Grrrrrrrnd. Grrrnd.\"" -msgstr "" +msgstr "\"Гррррр. Гррр.\"" #: lang/json/speech_from_json.py msgid "\"Cla-clang cla-clang!\"" -msgstr "" +msgstr "\"Лязг-лязг лязг-лязг!\"" #: lang/json/speech_from_json.py msgid "\"Klang!\"" -msgstr "" +msgstr "\"Лязг!\"" #: lang/json/speech_from_json.py msgid "\"Bzzzt. Bzzzzt!\"" -msgstr "" +msgstr "\"Бззз. Бзззз!\"" #: lang/json/speech_from_json.py msgid "\"Bedeep. Whurrrrrmmmm.\"" -msgstr "" +msgstr "\"Бибип. Вуууууррррррм.\"" #: lang/json/speech_from_json.py msgid "\"Pwwowm. Fsht fshrrrr.\"" -msgstr "" +msgstr "\"Пьююууум. Фшш фшшрррр.\"" #: lang/json/speech_from_json.py msgid "\"Click. Clicliclick. Vrnnnk.\"" -msgstr "" +msgstr "\"Щёлк. Щёлкщёлк. Врррррн.\"" #: lang/json/speech_from_json.py msgid "\"Shwwwrrrrnnnzzz bzzt.\"" -msgstr "" +msgstr "\"Швввврррррр бзз.\"" #: lang/json/speech_from_json.py msgid "a high pitched alarm." -msgstr "" +msgstr "пронзительная сирена." #: lang/json/speech_from_json.py msgid "a blaring siren." -msgstr "" +msgstr "ревущая сирена." #: lang/json/speech_from_json.py msgid "\"CHUG chug chug.\"" -msgstr "" +msgstr "\"ЧУХ-чух-чух\"" #: lang/json/speech_from_json.py msgid "\"Creak! Clang clang.\"" -msgstr "" +msgstr "\"Скрип! Лязг лязг.\"" #: lang/json/speech_from_json.py msgid "\"Khr Khr Khr.\"" -msgstr "" +msgstr "\"Кх Кх Кх.\"" #: lang/json/speech_from_json.py msgid "a mechanical groaning." -msgstr "" +msgstr "механический стон." #: lang/json/speech_from_json.py msgid "grinding gears." -msgstr "" +msgstr "зубчатые колеса." #: lang/json/speech_from_json.py msgid "tortured machinery." -msgstr "" +msgstr "звук измученных механизмов." #: lang/json/speech_from_json.py msgid "\"SQUEE!\"" @@ -119487,7 +121209,7 @@ msgstr "Укрытие" #: lang/json/start_location_from_json.py msgid "Refuge Center" -msgstr "" +msgstr "Центр для Беженцев" #: lang/json/start_location_from_json.py msgid "Boarded up house" @@ -119550,10 +121272,26 @@ msgstr "Убежище «последних людей»" msgid "Middle of Nowhere" msgstr "Посреди нигде" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "Научная лаборатория" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "Подвал научной лаборатории" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "Замороженная научная лаборатория" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "Замороженная научная лаборатория +" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "погрузочная площадка ТЦ" @@ -119628,7 +121366,7 @@ msgstr "Болото" #: lang/json/start_location_from_json.py msgid "Robot Dispatch Center" -msgstr "" +msgstr "Центр Отправки Роботов" #: lang/json/start_location_from_json.py msgid "Fema Entrance" @@ -119650,6 +121388,14 @@ msgstr "Поместье" msgid "Gas Station" msgstr "АЗС" +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "Магазин Электроники" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" +msgstr "Магазин Одежды" + #: lang/json/talk_topic_from_json.py msgid "That sure is a shiny badge you got there!" msgstr "Точно, у вас тут блестящий жетон!" @@ -119682,8 +121428,7 @@ msgstr "Что с вашими ушами?" msgid "Anything I can help with?" msgstr "Я могу чем-то помочь?" -#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Well, bye." msgstr "Ладно, пока." @@ -119693,6 +121438,9 @@ msgid "" "though. Full up as hell; it's almost a crowd downstairs. See the trader " "over there? There's the one to ask." msgstr "" +"Значит, нас таких двое. Ну, типа. Не думаю, впрочем, что тут открыто. " +"Чертовски забито; там внизу почти целая толпа. Видишь вон того торговца? Его" +" и спрашивай." #: lang/json/talk_topic_from_json.py msgid "Sucks..." @@ -119716,7 +121464,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Well, then..." -msgstr "Хорошо, тогда..." +msgstr "Ну ладно..." #: lang/json/talk_topic_from_json.py msgid "" @@ -119828,7 +121576,7 @@ msgstr "&Бросить оружие." #: lang/json/talk_topic_from_json.py msgid "Don't worry, I'm not going to hurt you" -msgstr "" +msgstr "Не волнуйся, я не причиню тебе вреда!" #: lang/json/talk_topic_from_json.py msgid "Drop your weapon!" @@ -119873,15 +121621,15 @@ msgstr "&Поднять руки." #: lang/json/talk_topic_from_json.py msgid "*drops his weapon." -msgstr "" +msgstr "*бросает своё оружие." #: lang/json/talk_topic_from_json.py msgid "*drops_her_weapon." -msgstr "" +msgstr "*бросает_своё_оружие." #: lang/json/talk_topic_from_json.py msgid "Now get out of here" -msgstr "" +msgstr "А теперь убирайся." #: lang/json/talk_topic_from_json.py msgid "Now get out of here, before I kill you." @@ -119911,7 +121659,8 @@ msgstr "Мне всё равно." msgid "I see." msgstr "Понятно." -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Oh, okay." msgstr "Ну, ладно." @@ -119988,6 +121737,259 @@ msgstr "Спасибо." msgid "Thanks, bye." msgstr "Спасибо, пока." +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "Что ж, похоже только ты да я." + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "По крайней мере у нас есть убежище." + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "Что нам теперь делать?" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "Есть какие-нибудь советы?" + +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "Что я могу для тебя сделать?" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "Хочешь пойти со мной?" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's trade items." +msgstr "Давай обменяемся предметами." + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "Я не могу покинуть убежище без экипировки." + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "Я не знаю. Искать припасы и других выживших, полагаю." + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "Возможно, нам стоит начать баррикадировать это место." + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to" +" disappear quickly from here." +msgstr "" +"Я думаю, что хорошо бы добыть машину в исправном состоянии и с топливом, " +"если придётся быстро отсюда исчезнуть." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "" +"Мы могли бы наведаться на одну из этих ферм. Там можно обеспечить себя едой," +" и они на безопасном расстоянии от городов." + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "" +"Наверное, стоит держаться от городов подальше, даже если там полно полезных " +"вещей." + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "Хмм, ладно." + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "Не раньше, чем я получу антибиотики…" + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "Ты об этом уже спрашивал; спроси снова попозже." + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "И почему я должен пойти с тобой?" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "Понятно. Я достану антибиотики." + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "Да, точно. Я спрошу позже." + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "Со мной ты будешь в безопасности." + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "С тобой я буду в безопасности." + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "Мы же друзья, разве нет?" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "Я убью тебя если ты не сделаешь этого." + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "Точно, я с тобой!" + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "Шикарно!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "Ладно, пошли!" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "Да?.. Я так не думаю." + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "Ты действительно уходишь?" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "Да, я уверен. Пока." + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "Не, я просто пошутил." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp +msgid "What is it?" +msgstr "В чём дело?" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "Далеко ещё?" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "Я бы хотел стать лидером на какое-то время." + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "В сторону. Теперь я лидер." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "Пошли." + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "Хорошо. Веди нас." + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "Хорошо. Что-нибудь ещё…" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "Да, пошли." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "Ладно, ладно." + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "Ни единого шанса, я сматываю удочки!" + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "Хорошо." + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "Я на страже." + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "Нужно, чтобы ты пошёл со мной." + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "Увидимся." + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "Мне действительно это неудобно ..." + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "Я дам вам некоторое пространство." + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "Я бы предпочёл, держать это при себе." + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "Я понимаю..." + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "Ладно, держи." + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "Спасибо!" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "Спасибо! А могу ли я получить ещё?" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "Спасибо, позже увидимся!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "Ладно, ладно, извини." + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "Я не шучу, дай мне что-нибудь!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "Ладно, хорошо, пока." + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "Хорошо, приступим." + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "Хорошо." + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "Ладно. Веди меня." + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "Нет, мы здесь будем в порядке." + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "Если ещё раз подумать, то неважно." + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "Здравствуйте, маршал." @@ -120298,7 +122300,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Sorry." -msgstr "" +msgstr "Прости." #: lang/json/talk_topic_from_json.py msgid "That's it, you're dead!" @@ -120402,6 +122404,8 @@ msgid "" "Feed a man a fish, he's full for a day. Feed a man a bullet, he's full for " "the rest of his life." msgstr "" +"Накорми человека рыбой, и он будет сыт на весь день. Накорми человека пулей," +" и он будет сыт до конца своих дней." #: lang/json/talk_topic_from_json.py msgid "Spot your prey before something nastier spots you." @@ -120409,19 +122413,21 @@ msgstr "Выследи свою жертву, пока что-то более с #: lang/json/talk_topic_from_json.py msgid "I've heard that cougars sometimes leap. Maybe it's just a myth." -msgstr "" +msgstr "Я слышал, что пумы иногда прыгают. Может быть, это просто миф." #: lang/json/talk_topic_from_json.py msgid "" "The Jabberwock is real, don't listen to what anybody else says. If you see " "it, RUN." -msgstr "" +msgstr "Никого не слушай, бармаглот существует. Если увидишь его — БЕГИ." #: lang/json/talk_topic_from_json.py msgid "" "Zombie animal meat isn't good for eating, but sometimes you, might find " "usable fur on 'em." msgstr "" +"Мясо зомби-животных не годится в пищу, но иногда у них есть шерсть, которую " +"можно использовать для чего-нибудь." #: lang/json/talk_topic_from_json.py msgid "" @@ -120429,6 +122435,9 @@ msgid "" "but your taste buds and your colon may start to get angry at you. Eat a " "piece of fruit every once in a while." msgstr "" +"Варёное мясо и свежая вода - верная диета, чтобы долго оставаться на ногах. " +"Но вкусовые рецепторы и кишки могут начать возмущаться. Просто ешьте немного" +" фруктов вдобавок к основной пище." #: lang/json/talk_topic_from_json.py msgid "Smoke crack to get more shit done." @@ -120509,9 +122518,8 @@ msgstr "" "Мне жаль, но единственный способ выжить здесь - быстро захлопывать ворота. " "Охранникам в подвале отдан приказ стрелять на поражение, если кому-то придёт" " в голову заглянуть на нижние уровни. Я не знаю, почему добытчики здесь " -"такие беспощадные, но некоторым из нас пришлось убить своих собственных " -"окровавленных детей... Даже не думай о том, что нам не хватает " -"решительности." +"такие беспощадные, но некоторым из нас пришлось убить своих собственных, " +"мать твою, детей... Даже не думай о том, что нам не хватает решительности." #: lang/json/talk_topic_from_json.py msgid "Guess shit's a mess everywhere..." @@ -120576,14 +122584,14 @@ msgid "" "foggiest of ideas." msgstr "" "Ну, есть группа из дюжины «добытчиков», которые нашли какое-то " -"правительственное здание. Они приносили нам груз комбинезонов, карабинов M4 " -"и консерв, уместившийся бы в грузовик, раз в неделю или около того. " -"Поскольку у одного из этих парней здесь живёт семья, всё было нормально. Но " -"вот о расположении этого места я не имею ни малейшего понятия." +"правительственное здание. Они привозили нам полный грузовик комбинезонов, " +"карабинов M4 и консервов раз в неделю или около того. Поскольку у одного из " +"этих парней здесь живёт семья, всё было нормально. Но вот о расположении " +"этого места я не имею ни малейшего понятия." #: lang/json/talk_topic_from_json.py msgid "Thanks, I'll keep an eye out." -msgstr "Спасибо, я буду держать глаза открытыми." +msgstr "Спасибо, буду смотреть в оба." #: lang/json/talk_topic_from_json.py msgid "I'm sorry, not a risk we are willing to take right now." @@ -120616,7 +122624,7 @@ msgid "" "food random scavengers bring to trade with us is important." msgstr "" "К сожалению, нам не нужны лишние рты. У большинства из нас нет каких-либо " -"навыков выживания, так что приходиться обходиться маленькой группой, чтобы " +"навыков выживания, так что приходится обходиться маленькой группой, чтобы " "выжить на продовольствие от случайных добытчиков, торговля с ними очень " "важна." @@ -120675,11 +122683,11 @@ msgstr "Была надежда на что-то ещё ..." #: lang/json/talk_topic_from_json.py msgid "What about faction camps?" -msgstr "" +msgstr "Что насчет лагерей?" #: lang/json/talk_topic_from_json.py msgid "Tell me how faction camps work." -msgstr "" +msgstr "Расскажи мне, как работают лагеря." #: lang/json/talk_topic_from_json.py msgid "I want you to build a camp here." @@ -120687,15 +122695,15 @@ msgstr "Я хочу, чтобы ты построил здесь лагерь." #: lang/json/talk_topic_from_json.py msgid "I want you to take over the camp here." -msgstr "" +msgstr "Я хочу, чтобы ты занял этот лагерь." #: lang/json/talk_topic_from_json.py msgid "Nothing. Let's talk about something else." -msgstr "" +msgstr "Ничего. Давай поговорим о чем-нибудь ещё." #: lang/json/talk_topic_from_json.py msgid "Nothing. Lets' get back to work." -msgstr "" +msgstr "Ничего. Давай вернёмся к работе." #: lang/json/talk_topic_from_json.py msgid "" @@ -120703,22 +122711,25 @@ msgid "" "companions by allowing you to assign them to their own missions. These " "missions can range from gathering and crafting to eventual combat patrols." msgstr "" +"Система лагеря позволяет вам с удобством управлять вашими компаньонами и " +"назначать их на задания, начиная от сбора припасов и производства и " +"закачивая боевыми патрулями." #: lang/json/talk_topic_from_json.py msgid "Go on." -msgstr "" +msgstr "Продолжай." #: lang/json/talk_topic_from_json.py msgid "Never mind, let's go back to talking about camps." -msgstr "" +msgstr "Неважно, давай вернёмся к разговору о лагерях." #: lang/json/talk_topic_from_json.py msgid "Never mind, let's talk about something else." -msgstr "" +msgstr "Неважно, давай поговорим о чём-нибудь ещё." #: lang/json/talk_topic_from_json.py msgid "Forget it. Let's go." -msgstr "" +msgstr "Забудь. Пошли." #: lang/json/talk_topic_from_json.py msgid "" @@ -120729,10 +122740,16 @@ msgid "" "reputation across the faction. Which can lead to VERY bad things if it gets" " too low." msgstr "" +"Пища требуется для выполнения всех заданий, также она может быть добыта в " +"ходе заданий. Задания с фиксированным временем требуют оплаты вперёд, а " +"повторяющиеся задания, такие как сбор дров, оплачиваются по факту " +"выполнения. Если вам нечем будет платить компаньону, то это приведёт к " +"потере авторитета внутри фракции, что, при очень низких его показателях, " +"может привести к ОЧЕНЬ плохим последствиям." #: lang/json/talk_topic_from_json.py msgid "Wait, repeat what you said." -msgstr "" +msgstr "Подожди, повтори еще раз." #: lang/json/talk_topic_from_json.py msgid "" @@ -120800,11 +122817,11 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Thanks, let's go back to talking about camps." -msgstr "" +msgstr "Спасибо, теперь вернемся к разговору о лагерях." #: lang/json/talk_topic_from_json.py msgid "Forget it. Let's go." -msgstr "" +msgstr "Забудь. Пошли." #: lang/json/talk_topic_from_json.py msgid "Hey Boss..." @@ -120818,10 +122835,6 @@ msgstr "Что нужно сделать?" msgid "We're abandoning this camp." msgstr "Мы бросаем этот лагерь." -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "Увидимся." - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "Надеюсь, вы здесь, чтобы поторговать." @@ -120865,7 +122878,7 @@ msgstr "" msgid "Are you looking to buy anything else?" msgstr "Вас интересует ещё что-нибудь?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." msgstr "Очень хорошо..." @@ -121003,20 +123016,20 @@ msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of" " operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " "forces to conduct recovery operations." msgstr "" -"Я веду остатки моей команды, чтобы зачистить этот объект. Мы вошли в " -"комплекс с двумя десятками солдат и сразу же обезопасили эту диспетчерскую. " -"Отсюда я отправил своих людей, чтобы занять жизненно важные участки, " -"расположенные на этом этаже и ниже. Если мы добьёмся успеха, этот объект " -"можно будет очистить и использовать в качестве постоянной базы в регионе. " -"Самое главное, что он позволит перенаправить трафик беженцев от " -"переполненных застав и освободить больше наших сил для проведения операций " -"по восстановлению." +"Я руковожу остатками моего отряда в миссии по зачистке этого объекта. Мы " +"вошли в комплекс отрядом в две дюжины и сразу направились в эту " +"диспетчерскую. Отсюда я отправил своих людей, чтобы занять жизненно важные " +"системы, расположенные на этом этаже и ниже. Если мы добьёмся успеха, этот " +"объект можно будет очистить и использовать в качестве постоянной базы в " +"регионе. Самое главное, что он позволит перенаправить трафик беженцев от " +"переполненных застав и освободить больше наших сил для проведения " +"восстановительных работ." #: lang/json/talk_topic_from_json.py msgid "Seems like a decent plan..." @@ -121075,7 +123088,7 @@ msgstr "Вам нужна помощь?" #: lang/json/talk_topic_from_json.py msgid "I should be going" -msgstr "" +msgstr "Мне нужно идти" #: lang/json/talk_topic_from_json.py msgid "" @@ -121138,10 +123151,10 @@ msgid "" "operations." msgstr "" "Я федеральный связной этого региона. Большинство людей здесь зовут нас " -"\"Старой Гвардией\", и мне это по нраву. Кажется, что дела в стране идут " -"совсем плохо, но федеральное правительство не было полностью уничтожено. " -"После вспышки я был выбран для координации сил гражданских и ополченцев, " -"которые должны были осуществлять поддержку военных операций. " +"\"Старой Гвардией\", и мне это по нраву. Может показаться, что дела в стране" +" идут совсем плохо, но федеральное правительство не было полностью " +"уничтожено. После вспышки я был выбран для координации сил гражданских и " +"ополченцев, которые должны были осуществлять поддержку военных операций. " #: lang/json/talk_topic_from_json.py msgid "So what are you actually doing here?" @@ -121277,7 +123290,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "I heard you were setting up an outpost out here." -msgstr "" +msgstr "Я слышал, вы основали здесь аванпост." #: lang/json/talk_topic_from_json.py msgid "What's your job here?" @@ -121373,9 +123386,9 @@ msgid "" "there and food was really becoming scarce when I left." msgstr "" "Я был в одной из первых групп поселенцев, посланных сюда, чтобы укрепить " -"форпост. Я, возможно, преувеличил свои строительные навыки, чтобы сбежать из" -" ада центра беженцев. Если вы не торговец, то там не так много работы а еда " -"действительно в дефиците." +"форпост. Я, возможно, преувеличил свои строительные навыки, чтобы свалить " +"нахрен из центра беженцев. Если вы не торговец, то там не так много работы, " +"а еда действительно в дефиците." #: lang/json/talk_topic_from_json.py msgid "You need something?" @@ -121394,13 +123407,13 @@ msgid "" msgstr "" "Я — один из мигрантов, которые были направлены к этому аванпосту, когда я " "прибыл в центр беженцев. Они сказали, что я достаточно крепкий, чтобы " -"размахивать топором, так что лесоруб, стала моей профессией... ничего не " -"скажешь по этому поводу. Если я захочу поесть, я буду рубить деревья с этого" -" момента и до пришествия конца света." +"размахивать топором, так что я стал лесорубом... ничего не скажешь по этому " +"поводу. Если я захочу поесть, я буду рубить деревья с этого момента и до " +"пришествия конца света." #: lang/json/talk_topic_from_json.py msgid "Oh." -msgstr "" +msgstr "О." #: lang/json/talk_topic_from_json.py msgid "Come back later, I need to take care of a few things first." @@ -121430,7 +123443,7 @@ msgstr "Может позже." #: lang/json/talk_topic_from_json.py msgid "I'll be back later." -msgstr "" +msgstr "Я вернусь позже." #: lang/json/talk_topic_from_json.py msgid "Don't have much time to talk." @@ -121445,9 +123458,9 @@ msgid "" "I turn the logs that laborers bring in into lumber to expand the outpost. " "Maintaining the saw is a chore but breaks the monotony." msgstr "" -"Я перемещаю брёвна, которые рабочие распускают на пиломатериалы, чтобы " -"расширить аванпост. Обслуживание циркулярной пилы является тяжёлой работой, " -"что ломает монотонность труда." +"Лесорубы приносят мне брёвна, а я пускаю их на пиломатериалы, чтобы " +"расширить аванпост. Обслуживать циркулярную пилу нелегко, но это хоть какое-" +"то разнообразие." #: lang/json/talk_topic_from_json.py msgid "" @@ -121455,10 +123468,9 @@ msgid "" " be hurting them if I outsourced it. Ask around though, I'm sure most " "people could use a hand." msgstr "" -"Доставка брёвен является одной из нескольких задач, которые мы можем дать " -"неопытным, таким образом, я повредил бы их, если бы воспользовался услугами " -"со стороны. Расспросите тут и там, хотя, я уверен, что большинство людей " -"могут использовать руку." +"Доставка брёвен - немногое, что мы можем доверить новичкам, так что я " +"навредил бы им, если бы воспользовался услугами со стороны. Расспросите тут " +"и там, хотя, я уверен, что многим нужна помощь." #: lang/json/talk_topic_from_json.py msgid "" @@ -121466,9 +123478,8 @@ msgid "" "skills that transfer from before the cataclysm so things are a bit of trial " "and error." msgstr "" -"Я был отправлен сюда, чтобы помочь в создании фермы. У большинства из нас " -"нет реальных навыков, которые применяли до Катаклизма, с таким положением " -"дел, потребуется метод проб и ошибок." +"Меня направили сюда, чтобы помочь в создании фермы. Большинство из нас " +"ничего толком не умеет, так что нужен метод проб и ошибок." #: lang/json/talk_topic_from_json.py msgid "" @@ -121477,11 +123488,11 @@ msgid "" " are a skilled laborer then you can trade your time for a bit of extra " "income on the side. Not much I can do to assist you as a farmer though." msgstr "" -"Сожалею, у меня нет ничего, чем торговать. Рабочая программа здесь " -"распределяет то, что мы производим между центром беженцев, фермой и нами. " -"Если вы — квалифицированный рабочий, тогда вы можете торговать своим " -"временем за дополнительный доход на стороне. Хотя я не могу помочь вам, как " -"фермеру однако." +"Сожалею, у меня нет ничего на продажу. Согласно рабочему распорядку, мы " +"распределяем то, что производим, между центром беженцев, фермой и нами " +"самими. Если вы — квалифицированный рабочий, тогда вы можете продать своё " +"время за дополнительный доход на стороне. Впрочем, не то чтобы я мог помочь " +"тебе как фермер." #: lang/json/talk_topic_from_json.py msgid "You mind?" @@ -121546,13 +123557,13 @@ msgid "" "I was just a laborer till they could find me something a bit more permanent " "but being constantly sick has prevented me from doing much of anything." msgstr "" -"Я был просто рабочим, пока они не нашли для меня что-то более постоянное, но" -" постоянная болезнь препятствовала тому, чтобы я что-нибудь делал большую " -"часть времени." +"Я был просто рабочим, пока они не найдут для меня что-то более " +"долговременное, но из-за постоянной болезни я не могу почти ничем " +"заниматься." #: lang/json/talk_topic_from_json.py msgid "That's sad." -msgstr "" +msgstr "Это печально." #: lang/json/talk_topic_from_json.py msgid "" @@ -121571,12 +123582,12 @@ msgid "" "I keep getting sick! At first I thought it was something I ate but now it " "seems like I can't keep anything down..." msgstr "" -"Я всё болею! Сначала я думал, что это из-за того что я съел, но теперь, " -"кажется, я ничего не могу удержать..." +"Я всё болею! Сначала думал, что съел что-то не то, но теперь, кажется, я " +"ничего не могу удержать..." #: lang/json/talk_topic_from_json.py msgid "Uhm." -msgstr "" +msgstr "Гм." #: lang/json/talk_topic_from_json.py msgid "How can I help you?" @@ -121584,7 +123595,7 @@ msgstr "Как я могу помочь вам?" #: lang/json/talk_topic_from_json.py msgid "I could use your medical assistance." -msgstr "" +msgstr "Мне бы пригодилась медицинская помощь." #: lang/json/talk_topic_from_json.py msgid "" @@ -121612,7 +123623,7 @@ msgstr "Не сейчас." #: lang/json/talk_topic_from_json.py msgid "I can take a look at you or your companions if you are injured." -msgstr "Я могу осмотреть вас или ваших товарищей, если вы получили травму." +msgstr "Я могу осмотреть вас или ваших компаньонов, если вы получили травму." #: lang/json/talk_topic_from_json.py msgid "[$200, 30m] I need you to patch me up." @@ -121624,11 +123635,11 @@ msgstr "[$500, 1 час] Подлатайте меня." #: lang/json/talk_topic_from_json.py msgid "I should be fine." -msgstr "" +msgstr "Я буду в порядке." #: lang/json/talk_topic_from_json.py msgid "That's the best I can do on short notice." -msgstr "" +msgstr "Пока что это всё, что я могу сделать." #: lang/json/talk_topic_from_json.py msgid "I'm sorry, I don't have time to see you at the moment." @@ -121640,15 +123651,15 @@ msgstr "За хорошую цену я могу воспользоваться #: lang/json/talk_topic_from_json.py msgid "I imagine we might be able to work something out." -msgstr "" +msgstr "Думаю, мы сможем что-нибудь придумать." #: lang/json/talk_topic_from_json.py msgid "I was wondering if you could install a cybernetic implant..." -msgstr "Я был бы удивлён, если бы ты поставил кибернетический имплант…" +msgstr "Интересно, смог бы ты установить кибернетический имплант..." #: lang/json/talk_topic_from_json.py msgid "I need help removing an implant..." -msgstr "Мне нужна помощь удаления имплантата..." +msgstr "Мне нужна помощь в удалении имплантата..." #: lang/json/talk_topic_from_json.py msgid "Don't mind me." @@ -121661,6 +123672,10 @@ msgid "" "surround the outpost. It provides a measure of defense in the event that we" " get attacked." msgstr "" +"Я разбираю бесполезный транспорт на запчасти и материалы. Если мы не можем " +"использовать транспорт немедленно, то мы отбуксировываем его к кольцу, " +"которое мы строим вокруг аванпоста. Оно в какой-то мере поможет нам " +"защищаться, если на нас нападут." #: lang/json/talk_topic_from_json.py msgid "" @@ -121674,11 +123689,11 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Welcome to the junk shop." -msgstr "" +msgstr "Добро пожаловать в лавку старьёвщика." #: lang/json/talk_topic_from_json.py msgid "Let's see what you've managed to find." -msgstr "" +msgstr "Давай посмотрим, что тебе удалось найти." #: lang/json/talk_topic_from_json.py msgid "" @@ -121709,7 +123724,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Tell me more about the scavenging runs." -msgstr "" +msgstr "Расскажи поподробнее о походах за добычей." #: lang/json/talk_topic_from_json.py msgid "What kind of tasks do you have for me?" @@ -121729,7 +123744,7 @@ msgstr "Я ищу информацию." #: lang/json/talk_topic_from_json.py msgid "Let me see what you keep behind the counter." -msgstr "" +msgstr "Дай посмотреть, что у тебя за прилавком." #: lang/json/talk_topic_from_json.py msgid "What do you have on tap?" @@ -121761,7 +123776,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Thanks for nothing." -msgstr "" +msgstr "Спасибо за ничего." #: lang/json/talk_topic_from_json.py msgid "Our selection is a bit limited at the moment." @@ -121785,7 +123800,7 @@ msgstr "[$12] Я возьму стакан виски" #: lang/json/talk_topic_from_json.py msgid "On second thought, don't bother." -msgstr "" +msgstr "Если подумать, не обращай внимания." #: lang/json/talk_topic_from_json.py msgid "Can I interest you in a trim?" @@ -121815,10 +123830,6 @@ msgstr "" msgid "I can't imagine what I'd need your assistance with." msgstr "Я не могу даже представить, что тебе нужна наша помочь." -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "Хорошо." - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "Стой спокойно, пока я орудую своими ножницами..." @@ -121889,21 +123900,19 @@ msgstr "Добро пожаловать на борт." #: lang/json/talk_topic_from_json.py msgid "Can I trade for supplies?" -msgstr "" - -#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "Что я могу для тебя сделать?" +msgstr "Могу я поторговать за припасы?" #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " "Came here right went things started to go wrong, never left." msgstr "" +"Я врач, один из немногих в поселении. Нам очень повезло. Мы пришли прямо " +"перед тем, как все пошло наперекосяк, и никогда не покидали это место." #: lang/json/talk_topic_from_json.py msgid "So what are you doing right now?" -msgstr "" +msgstr "Так чем ты сейчас занимаешься?" #: lang/json/talk_topic_from_json.py msgid "" @@ -121912,10 +123921,14 @@ msgid "" " have to turn people away, but I like the assignment for the chance to get " "news about the outside world." msgstr "" +"Старая Гвардия - то, что осталось от федералов - направила меня сюда для " +"обследования всех новеньких на риск инфекции. В эти дни нельзя быть слишком " +"осторожным. Тяжело выпроваживать людей вон, но мне нравится мое назначение, " +"я могу узнать новости из внешнего мира." #: lang/json/talk_topic_from_json.py msgid "What kind of news?" -msgstr "" +msgstr "Какие новости?" #: lang/json/talk_topic_from_json.py msgid "" @@ -121923,10 +123936,13 @@ msgid "" "what's happening, the closer we can get to a treatment or maybe even a cure." " It's a long shot, but you have hope to survive." msgstr "" +"Появления необычных живых мертвецов или новых мутаций. Чем больше мы знаем о" +" происходящем, тем ближе мы к лекарству или, возможно, даже излечению. Это " +"долговременная перспектива, но для выживания нужна надежда." #: lang/json/talk_topic_from_json.py msgid "Good luck with that..." -msgstr "" +msgstr "Удачи тебе." #: lang/json/talk_topic_from_json.py msgid "" @@ -121934,12 +123950,17 @@ msgid "" " the days go on. Some survivors too, come in here with... adaptations. " "Maybe they're related." msgstr "" +"Это не классическое нашествие зомби. Похоже, со временем мертвецы становятся" +" сильнее. И некоторые выживальщики тоже приходят с... адаптациями. Возможно," +" это связано." #: lang/json/talk_topic_from_json.py msgid "" "We can't. There's nothing we can spare to sell and I've got no budget to " "buy from you. I don't suppose you want to donate?" msgstr "" +"Мы не можем. На продажу ничего лишнего нет, и мне нечем расплатиться за " +"покупки у тебя. Я не думаю, что ты собрался пожертвовать?" #: lang/json/talk_topic_from_json.py msgid "This is a test conversation that shouldn't appear in the game." @@ -121947,91 +123968,91 @@ msgstr "Тестовый диалог, который не должен пояи #: lang/json/talk_topic_from_json.py msgid "This is a basic test response." -msgstr "" +msgstr "Это базовый тестовый ответ." #: lang/json/talk_topic_from_json.py msgid "This is a strength test response." -msgstr "" +msgstr "Это тестовый ответ силы." #: lang/json/talk_topic_from_json.py msgid "This is a dexterity test response." -msgstr "" +msgstr "Это тестовый ответ ловкости." #: lang/json/talk_topic_from_json.py msgid "This is an intelligence test response." -msgstr "" +msgstr "Это тестовый ответ интеллекта." #: lang/json/talk_topic_from_json.py msgid "This is a perception test response." -msgstr "" +msgstr "Это тестовый ответ восприятия." #: lang/json/talk_topic_from_json.py msgid "This is a low strength test response." -msgstr "" +msgstr "Это тестовый ответ низкой силы." #: lang/json/talk_topic_from_json.py msgid "This is a low dexterity test response." -msgstr "" +msgstr "Это тестовый ответ низкой ловкости." #: lang/json/talk_topic_from_json.py msgid "This is a low intelligence test response." -msgstr "" +msgstr "Это тестовый ответ низкого интеллекта." #: lang/json/talk_topic_from_json.py msgid "This is a low perception test response." -msgstr "" +msgstr "Это тестовый ответ низкого восприятия." #: lang/json/talk_topic_from_json.py msgid "This is a trait test response." -msgstr "" +msgstr "Это тестовый ответ трейтов." #: lang/json/talk_topic_from_json.py msgid "This is a wearing test response." -msgstr "" +msgstr "Это тестовый ответ одежды." #: lang/json/talk_topic_from_json.py msgid "This is an npc effect test response." -msgstr "" +msgstr "Это тестовый ответ эффектов NPC." #: lang/json/talk_topic_from_json.py msgid "This is a player effect test response." -msgstr "" +msgstr "Это тестовый ответ эффектов игрока." #: lang/json/talk_topic_from_json.py msgid "This is a cash test response." -msgstr "" +msgstr "Это тестовый ответ денег." #: lang/json/talk_topic_from_json.py msgid "This is an npc service test response." -msgstr "" +msgstr "Это тестовый ответ услуг NPC." #: lang/json/talk_topic_from_json.py msgid "This is an npc available test response." -msgstr "" +msgstr "Это тестовый ответ доступных NPC." #: lang/json/talk_topic_from_json.py msgid "This is a om_location_field test response." -msgstr "" +msgstr "Это тестовый ответ om_location_field." #: lang/json/talk_topic_from_json.py msgid "This is a faction camp any test response." -msgstr "" +msgstr "Это ответ любого теста лагеря." #: lang/json/talk_topic_from_json.py msgid "This is a nearby role test response." -msgstr "" +msgstr "Это тестовый ответ ближайшей роли." #: lang/json/talk_topic_from_json.py msgid "This is a npc allies 1 test response." -msgstr "" +msgstr "Это тестовый ответ npc allies 1." #: lang/json/talk_topic_from_json.py msgid "This an error! npc allies 2 test response." -msgstr "" +msgstr "Это ошибка! Тестовый ответ npc allies 2." #: lang/json/talk_topic_from_json.py msgid "This is an or trait test response." -msgstr "" +msgstr "Это тестовый ответ or trait." #: lang/json/talk_topic_from_json.py msgid "This is an and cash, available, trait test response." @@ -122043,35 +124064,35 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "This is a u_add_effect - infection response" -msgstr "" +msgstr "Это тестовый ответ u_add_effect - infection" #: lang/json/talk_topic_from_json.py msgid "This is a npc_add_effect - infection response" -msgstr "" +msgstr "Это тестовый ответ npc_add_effect - infection" #: lang/json/talk_topic_from_json.py msgid "This is a u_add_trait - FED MARSHALL response" -msgstr "" +msgstr "Это тестовый ответ u_add_trait - FED MARSHALL" #: lang/json/talk_topic_from_json.py msgid "This is a npc_add_trait - FED MARSHALL response" -msgstr "" +msgstr "Это тестовый ответ npc_add_trait - FED MARSHALL" #: lang/json/talk_topic_from_json.py msgid "This is a u_buy_item bottle of beer response" -msgstr "" +msgstr "Это тестовый ответ u_buy_item bottle of beer" #: lang/json/talk_topic_from_json.py msgid "This is a u_buy_item plastic bottle response" -msgstr "" +msgstr "Это тестовый ответ u_buy_item plastic bottle" #: lang/json/talk_topic_from_json.py msgid "This is a u_spend_cash response" -msgstr "" +msgstr "Это тестовый ответ u_spend_cash" #: lang/json/talk_topic_from_json.py msgid "This is a multi-effect response" -msgstr "" +msgstr "Это тестовый ответ нескольких эффектов" #: lang/json/talk_topic_from_json.py msgid "Heya, scav." @@ -122079,23 +124100,23 @@ msgstr "Здарова, добытчик." #: lang/json/talk_topic_from_json.py msgid "Did you build this place?" -msgstr "" +msgstr "Ты построил это место?" #: lang/json/talk_topic_from_json.py msgid "Why do you still use cash?" -msgstr "" +msgstr "Почему ты еще пользуешься деньгами?" #: lang/json/talk_topic_from_json.py msgid "You're a trader?" -msgstr "" +msgstr "Ты торговец?" #: lang/json/talk_topic_from_json.py msgid "I need some supplies." -msgstr "" +msgstr "Мне нужны припасы." #: lang/json/talk_topic_from_json.py msgid "Need help with anything?" -msgstr "" +msgstr "Нужна помощь в чём-нибудь?" #: lang/json/talk_topic_from_json.py msgid "" @@ -122104,12 +124125,18 @@ msgid "" "in the spare room awhile, just don't hog it. You're not the only scav out " "there." msgstr "" +"Нет, нет... Ну, разве немножко. Когда я нашел это место, тут был такой же " +"бардак, как и наверху, было нетрудно навести порядок. Добро пожаловать, ты " +"можешь пока что остановиться в свободной комнате, только не занимай ее " +"одному себе. Ты тут не единственный добытчик." #: lang/json/talk_topic_from_json.py msgid "" "Just a scav who got lucky. Now I'm content to sit around here on my pile of" " treasure. I'm more than willing to trade if you've got the cash." msgstr "" +"Просто добытчик, которому повезло. Сейчас меня устраивает сидеть тут на " +"своей груде сокровищ. Я более чем хочу поторговать, если у тебя есть деньги." #: lang/json/talk_topic_from_json.py msgid "I see..." @@ -122120,6 +124147,8 @@ msgid "" "Why not? Everyone else does, so I suppose that's all that matters. My ATM " "over there still works, connected to the bank servers and everything." msgstr "" +"Почему бы нет? Все ими пользуются, так что, думаю, это главное. Мой банкомат" +" вон там все еще работает, он соединен с банковскими серверами и прочим." #: lang/json/talk_topic_from_json.py msgid "Hmm..." @@ -122130,6 +124159,8 @@ msgid "" "I suppose I am. Scavs like you need supplies, right? And I could always " "use more money." msgstr "" +"Полагаю, да. Добытчикам, как ты, нужны припасы, верно? А побольше денег мне " +"не помешает." #: lang/json/talk_topic_from_json.py msgid "Alright..." @@ -122137,7 +124168,7 @@ msgstr "Ладно..." #: lang/json/talk_topic_from_json.py msgid "Not at the moment, check back later perhaps." -msgstr "" +msgstr "Не сейчас, зайди попозже, наверное." #: lang/json/talk_topic_from_json.py msgid "Sure..." @@ -122171,7 +124202,7 @@ msgstr "Пакуй свои чемоданы, . Мы отправляем msgid "Not at technique at all" msgstr "Не техника" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp src/martialarts.cpp msgid "Block" msgstr "блок" @@ -122337,8 +124368,6 @@ msgid "Rapid Strike" msgstr "стремительная атака" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "50% ходов, 66% урона" @@ -122451,11 +124480,6 @@ msgstr " разоружает %s с помощью кнута" msgid "Counterattack" msgstr "контратака" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "Контратака при при блоке, контратака при уворачивании" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -122470,22 +124494,10 @@ msgstr " контратакует %s" msgid "Feint" msgstr "обманный выпад" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "Бесплатное восстановление после промаха" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "Разрыв захвата" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "Разрыв захвата" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -122500,11 +124512,6 @@ msgstr " ловко наносит прямой удар %s" msgid "Cross" msgstr "перекрёстный удар" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "х1,2 дробящий урон, минимум 2 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -122519,12 +124526,6 @@ msgstr " наносит перекрёстный удар %s" msgid "Jab" msgstr "прямой удар" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "50% ходов, 66% урона, минимум 3 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -122539,12 +124540,6 @@ msgstr " быстро наносит прямой удар %s" msgid "Uppercut" msgstr "апперкот" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "" -"Ошеломление на 2 хода, х1,4 дробящий урон, минимум 4 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -122559,13 +124554,6 @@ msgstr " наносит апперкот %s" msgid "Cross Counter" msgstr "перекрёстный контрудар" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "" -"Ошеломление на 2 хода, отбрасывание на 1 тайл, только при критическом " -"попадании, минимум 5 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -122594,16 +124582,6 @@ msgstr " быстро бьёт %s" msgid "karate chop" msgstr "удар ребром ладони" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "" -"Ошеломление на 2 хода, только при критическом попадании, минимум 4 уровень " -"безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -122618,13 +124596,6 @@ msgstr " бьёт ребром ладони %s" msgid "throw" msgstr "бросок" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "" -"Сбивание с ног на 1 ход, отбрасывание на 1 тайл, минимум 2 уровень " -"безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -122639,13 +124610,6 @@ msgstr " бросает %s" msgid "dodge throw" msgstr "обманный бросок" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "" -"Сбивание с ног на 1 ход, отбрасывание на 1 тайл, контратака при " -"уворачивании, минимум 6 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -122660,13 +124624,6 @@ msgstr " плавно бросает %s" msgid "feint at" msgstr "обманный выпад" -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "" -"Бесплатное восстановление после промаха, минимум 2 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -122677,11 +124634,6 @@ msgstr "Вы делаете обманное движение от %s" msgid " feints at %s" msgstr " делает обманное движение от %s" -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "Вырывание оружия из рук противника, минимум 3 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -122692,23 +124644,11 @@ msgstr "Вы обезоруживаете %s" msgid " disarms %s" msgstr " обезоруживает %s" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" -"Сбивание с ног на 1 ход, отбрасывание на 1 тайл, минимум 3 уровень " -"безоружного боя" - #: lang/json/technique_from_json.py lang/json/technique_from_json.py #: src/monster.cpp msgid "grab" msgstr "захват" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "Сбивание с ног на 2 хода, минимум 2 уровень безоружного боя" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "точный удар" @@ -122723,23 +124663,10 @@ msgstr "Вы атакуете %s" msgid " strikes %s" msgstr " атакуете %s" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "" -"Бесплатное восстановление после промаха, минимум 1 уровень безоружного боя" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "толчок локтем" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "" -"50% ходов, только при критическом попадании, минимум 2 уровень безоружного " -"боя" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -122754,11 +124681,6 @@ msgstr " толкает локтем %s" msgid "kick" msgstr "пинок" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "Ошеломление на 1 ход, минимум 3 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -122783,21 +124705,6 @@ msgstr "Вы в прыжке бьёте коленом %s" msgid " flying knees %s" msgstr " в прыжке бьёт коленом %s" -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "50% ходов, 66% урона, минимум 2 уровень безоружного боя" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "" -"Ошеломление на 2 хода, только при критическом попадании, минимум 3 уровень " -"безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -122808,35 +124715,14 @@ msgstr "Вы наносите прямой удар %s" msgid " jabs %s" msgstr " наносит прямой удар %s" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "Сбивание с ног на 1 ход, минимум 4 уровень безоружного боя" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "разрыв захвата" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "Разрыв захвата, минимум 4 уровень безоружного боя" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "внезапное нападение" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min" -" 3 melee" -msgstr "" -"Ошеломление на 2 хода, х1,4 дробящий урон, х2 режущий урон, только при " -"критическом попадании, минимум 3 уровень безоружного боя, минимум 3 уровень " -"ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -122851,13 +124737,6 @@ msgstr " внезапно атакует %s" msgid "axe-kick" msgstr "рубящий удар ногой" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "" -"Ошеломление на 2 хода, только при критическом попадании, минимум 2 уровень " -"безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -122872,13 +124751,6 @@ msgstr " наносит рубящий удар ногой по %s" msgid "side kick" msgstr "боковой удар ногой" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" -"Ошеломление на 1 ход, отбрасывание на 1 тайл, минимум 3 уровень безоружного " -"боя" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -122893,11 +124765,6 @@ msgstr " наносит боковой удар ногой по %s" msgid "sweep kick" msgstr "подсечка" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "Сбивание с ног на 2 хода, минимум 4 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -122912,11 +124779,6 @@ msgstr " проводите подсечку, и %s падает" msgid "biojutsu counter" msgstr "контрудар био-джитсу" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "Контратака при блоке, минимум 4 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -122945,13 +124807,6 @@ msgstr " наносит быстрый рубящий удар %s" msgid "biojutsu impale" msgstr "пронзание био-джитсу" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "" -"Ошеломление на 1 ход, х1,5 режущий урон, х1,5 дробящий урон, только при " -"критическом попадании, минимум 4 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -122962,22 +124817,10 @@ msgstr "Вы жестоко пронзаете %s" msgid " brutally impales %s" msgstr " жестоко пронзает %s" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "Сбивание с ног на 2 хода, минимум 2 уровень ближнего боя" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "размашистый удар" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "" -"Атака по широкой дуге, только при критическом попадании, минимум 5 уровень " -"ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -122992,14 +124835,6 @@ msgstr " рассекает %s" msgid "Drunk feint" msgstr "пьяный финт" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "" -"Бесплатное восстановление после промаха, минимум 3 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -123014,13 +124849,6 @@ msgstr " спотыкается и хитро смотрит на %s" msgid "Drunk counter" msgstr "пьяный контрудар" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" -"х1,25 дробящий урон, контратака при уворачивании, минимум 4 уровень " -"безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -123035,12 +124863,6 @@ msgstr " шатается и неожиданно бьёт %s" msgid "Fencing lunge" msgstr "выпад" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "75% ходов, минимум 2 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -123055,11 +124877,6 @@ msgstr " делает выпад в сторону %s" msgid "Fencing thrust" msgstr "фехтовальный укол" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "90% ходов, х1,25 колющий урон, минимум 1 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -123074,13 +124891,6 @@ msgstr " наносит укол %s" msgid "Fencing stop thrust" msgstr "отпор" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "" -"х1,5 колющий урон, ошеломление на 1 ход, контратака при блоке, минимум 3 " -"уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -123095,11 +124905,6 @@ msgstr " проводит идеальный отпор %s" msgid "Round strike" msgstr "удар по кругу" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "60% ходов, минимум 4 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -123128,11 +124933,6 @@ msgstr " наносит %s веерный удар" msgid "Snap strike" msgstr "щёлкающий удар" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "80% ходов" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -123147,11 +124947,6 @@ msgstr " наносит %s удар с отскоком" msgid "Combination strike" msgstr "комбинация ударов" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "80% ходов, 150% урона, минимум 2 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -123166,11 +124961,6 @@ msgstr " наносит %s комбинацию ударов" msgid "free strike" msgstr "свободный удар" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "Свободная атака, минимум 4 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -123185,16 +124975,6 @@ msgstr " наносит %s свободный удар" msgid "puño strike" msgstr "удар пуньо" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "" -"Преобразует весь урон в х4 дробящий урон, ошеломление на 1 ход, минимум 3 " -"уровень безоружного боя, должно быть нанесено минимум 2 единицы дробящего " -"урона" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -123209,13 +124989,6 @@ msgstr " бьёт рукояткой %s" msgid "knee strike" msgstr "удар коленом" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "" -"Сбивание с ног на 2 хода, только при критическом попадании, минимум 3 " -"уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -123230,13 +125003,6 @@ msgstr " бьёт коленом %s" msgid "hamstring" msgstr "поджилки" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "" -"Сбивание с ног на 3 хода, только при критическом попадании, минимум 2 " -"уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -123251,13 +125017,6 @@ msgstr " роняет %s на землю низким ударом!" msgid "Vicious Precision" msgstr "Жестокая точность" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "" -"150% урона, только при критическом попадании, минимум 4 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -123272,13 +125031,6 @@ msgstr " жестоко ранит %s!" msgid "Silat Brutality" msgstr "Жестокость силат" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "" -"Ошеломление на 1 ход, отбрасывание на 1 тайл, только при критическом " -"попадании, минимум 3 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -123288,13 +125040,6 @@ msgstr "Вы заставили %s отшатнуться" msgid "Dirty Hit" msgstr "Грязный удар" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "" -"Ошеломление на 2 хода, только при критическом попадании, минимум 1 уровень " -"ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -123337,11 +125082,6 @@ msgstr " быстро рубит %s" msgid "Viper Bite" msgstr "укус гадюки" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "Ошеломление на 2 хода, х1,5 дробящий урон, длительность 2 хода" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -123356,11 +125096,6 @@ msgstr " кусает противника (%s)" msgid "Viper Strike" msgstr "атака гадюки" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "х3 дробящий урон, длительность 2 хода" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -123379,13 +125114,6 @@ msgstr "гибкость гадюки" msgid "Stinger Strike" msgstr "жалящая атака" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "" -"Ошеломление на 3 хода, отбрасывание на 3 тайла, х2 дробящий урон, только при" -" критическом попадании" - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -123400,13 +125128,6 @@ msgstr " резким ударом отправляет %s в полё msgid "Pincer Strike" msgstr "зажимной удар" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "" -"х1,25 дробящий урон, ошеломление на 2 хода, минимум 4 уровень безоружного " -"боя" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -123421,11 +125142,6 @@ msgstr " бьёт %s клешнёй" msgid "Toad's Tongue" msgstr "жабий язык" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "50% ходов, сбивание с ног на 1 ход, минимум 4 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -123504,11 +125220,6 @@ msgstr " бьёт %s" msgid "Tiger Takedown" msgstr "Захват тигра" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "Сбивание с ног на 1 ход, минимум 4 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -123523,13 +125234,6 @@ msgstr " хватает и бросает %s" msgid "Leopard Fist" msgstr "кулак леопарда" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "" -"Ошеломление на 2 хода, только при критическом попадании, минимум 5 уровень " -"безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -123558,13 +125262,6 @@ msgstr " быстро и сильно бьёт %s" msgid "Leopard Foresight" msgstr "Предвидение леопарда" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" -"х1,5 дробящий урон, контратака при уворачивании, минимум 4 уровень " -"безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -123579,12 +125276,6 @@ msgstr " уворачивается и находит уязвимое msgid "Dragon Snatch" msgstr "захват дракона" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "" -"Ошеломление на 2 хода, х1,2 дробящий урон, минимум 4 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -123599,14 +125290,6 @@ msgstr " хватает %s и бьёт его коленом" msgid "Dragon's Vortex" msgstr "Вихрь дракона" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "" -"Ошеломление на 2 хода, контратака при уворачивании, контратака при блоке, " -"минимум 4 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -123621,12 +125304,6 @@ msgstr " ловит и крутит %s" msgid "Dragon Sweeper" msgstr "Толчок дракона" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "Сбивание с ног на 2 хода, минимум 5 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -123641,13 +125318,6 @@ msgstr " наносит сильный удар наотмашь по msgid "Dragon Strike" msgstr "атака дракона" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "" -"Ошеломление на 1 ход, отбрасывание на 1 тайл, только при критическом " -"попадании, минимум 6 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -123674,11 +125344,6 @@ msgstr " выполняет «крыло журавля»" msgid "Crane Flap" msgstr "взмах журавля" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "Разрыв захвата, минимум 3 уровень безоружного боя" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "Вы вращаете руками и высвобождаетесь" @@ -123691,13 +125356,6 @@ msgstr " вырывается" msgid "Crane Strike" msgstr "атака журавля" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "" -"Ошеломление на 3 хода, только при критическом попадании, минимум 4 уровень " -"безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -123717,22 +125375,10 @@ msgstr "Вы делаете ложный выпад в сторону %s" msgid "Power Hit" msgstr "Силовой удар" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "" -"Ошеломление на 1 ход, отбрасывание на 1 тайл, только при критическом " -"попадании, минимум 4 уровень безоружного боя" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "Ответный удар" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "Контратака при блоке, минимум 5 уровень безоружного боя" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -123761,13 +125407,6 @@ msgstr " делает подножку %s" msgid "Flowing Water Cut" msgstr "Удар «Текущая вода»" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "" -"175% ходов, х2 дробящий урон, х2 режущий урон, минимум 4 уровень ближнего " -"боя" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -123782,11 +125421,6 @@ msgstr " бьёт %s с медленной силой текущей в msgid "Red Leaf's Cut" msgstr "Удар «Красный лист»" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "Сбивание с ног на 2 хода, минимум 5 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -123801,14 +125435,6 @@ msgstr " атакует, и %s теряет равновесие" msgid "Fire and Stone's Cut" msgstr "Удар «Огонь и камень»" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "" -"Ошеломление на 2 хода, х1,5 дробящий урон, х1,5 режущий урон, только при " -"критическом попадании, минимум 6 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -123823,14 +125449,6 @@ msgstr " оглушает %s силой своего удара" msgid "In-One Timing" msgstr "Рассчитанный удар" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "" -"50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "" -"50% ходов, ошеломление на 2 хода, х1,5 дробящий урон, х1,5 режущий урон, " -"минимум 5 уровень ближнего боя" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -123841,13 +125459,6 @@ msgstr "Вы бьёте по уязвимому месту %s" msgid " strikes %s's weaknesses" msgstr " бьёт по уязвимому месту %s" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "" -"80% ходов, бесплатное восстановление после промаха, минимум 2 уровень " -"ближнего боя" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "медленный удар" @@ -124244,14 +125855,14 @@ msgid "" "An area of heaped dirt, not easily traversable. If examined more closely, " "it's quite favorable for planting seeds and the like." msgstr "" -"Труднопроходимая земляная насыпь, если приглядеться, почва хорошо подходящая" -" для посадки семян и тому подобного." +"Труднопроходимая земляная насыпь, если приглядеться, почва хорошо подходит " +"для посадки семян и тому подобного." #. ~ Description for mound of dirt #: lang/json/terrain_from_json.py msgid "" "A giant hill of dirt that looks like you could crawl inside for shelter." -msgstr "Гигантский холм земли, который похож на вас, может залезть в убежище." +msgstr "Гигантский земляной холм, похоже, вы можете укрыться внутри." #: lang/json/terrain_from_json.py msgid "shallow pit" @@ -124264,7 +125875,7 @@ msgid "" " foundation for some constructions." msgstr "" "Яма, которую можно вырыть ещё глубже или заполнить. Также используется как " -"начальное основание для некоторых конструкций." +"основание для некоторых построек." #: lang/json/terrain_from_json.py lang/json/trap_from_json.py msgid "pit" @@ -124278,10 +125889,10 @@ msgid "" "enough for more advanced construction projects, and possibly to reach " "groundwater if constructed properly." msgstr "" -"Глухая дыра в земле, которая может серьёзно ранить, если туда упасть, и " -"травмировать, если будет заполнена острыми и опасными вещами. Достаточно " -"глубокая для более продвинутых строительных проектов и, возможно, чтобы " -"достичь грунтовых вод, если построена должным образом." +"Отвесная дыра в земле, может серьёзно ранить, если туда упасть, ранить " +"потенциально смертельно, если заполнена острыми и опасными вещами. " +"Достаточно глубокая для более продвинутых строительных проектов и, возможно," +" для достижения грунтовых вод, если сделана должным образом." #: lang/json/terrain_from_json.py msgid "corpse filled pit" @@ -124293,8 +125904,8 @@ msgid "" "A giant trench full of corpses, maybe even a mass graveyard. The bodies " "could be dug out but none of it looks remotely usable." msgstr "" -"Гигантская траншея заполненная трупами, может быть даже массовое кладбище. " -"Тела нельзя выкопать, ничто из этого не выглядит отдаленно полезным." +"Гигантская заполненная трупами яма, может быть, даже массовое захоронение. " +"Тела нельзя выкопать, но ничего не выглядит даже отдаленно полезным." #: lang/json/terrain_from_json.py msgid "covered pit" @@ -124306,8 +125917,9 @@ msgid "" "A deep pit with a two by four placed across it, looks sturdy enough to cross" " safely or the plank could be removed to turn it back into trap fall." msgstr "" -"Глубокая яма с досками, положенными поперёк, выглядит достаточно прочной, " -"чтобы безопасно по ней перейти или вернуть доски обратно в ловушку." +"Глубокая яма с доской, положенной поперёк. Доска достаточно прочная, чтобы " +"безопасно по ней перейти. Доску можно убрать, чтобы превратить яму обратно в" +" ловушку." #: lang/json/terrain_from_json.py lang/json/trap_from_json.py msgid "spiked pit" @@ -124319,7 +125931,7 @@ msgid "" "A narrow trench full of very pointy things that would easily puncture a " "body." msgstr "" -"Узкая траншея заполненная очень острыми предметами, которые легко проткнут " +"Узкая яма, заполненная очень острыми предметами, способными легко проткнуть " "тело." #: lang/json/terrain_from_json.py @@ -124333,8 +125945,9 @@ msgid "" "to allow someone or something to cross safely. The two by four could be " "removed to revert it back into a trap." msgstr "" -"Яма с угрожающими острыми кольями на дне и досками, положенными поперёк, " -"позволяющие безопасно по ней перейти. Доски можно вернуть обратно в ловушку." +"Яма с угрожающими острыми кольями на дне и доской, положенной поперёк. Доска" +" достаточно прочная, чтобы безопасно по ней перейти. Доску можно убрать, " +"чтобы превратить яму обратно в ловушку." #: lang/json/terrain_from_json.py lang/json/trap_from_json.py msgid "glass pit" @@ -124346,8 +125959,8 @@ msgid "" "Looks like a ton of broken glass was dumped into this pit, maybe not fatal " "to fall in but wouldn't be pleasant to try to crawl out." msgstr "" -"Похоже масса разбитого стекла была сброшена в эту яму, возможно не " -"травматично если упасть, но было бы неплохо попытаться оттуда вылезти." +"Яма с кучей битого стекла на дне. Наверное, упасть туда не смертельно, но " +"вылезти будет непросто." #: lang/json/terrain_from_json.py msgid "covered glass pit" @@ -124360,8 +125973,8 @@ msgid "" "full of large glass shards. The wooden board could be removed so it " "couldn't be safely crossed." msgstr "" -"Доски были положены, чтобы пройти по этой яме заполненной стеклом. Доски " -"можно убрать, чтобы её нельзя было безопасно пересечь." +"Яма с кучей битого стекла на дне и доской, уложенной поперёк. Доску можно " +"убрать, чтобы превратить яму обратно в ловушку." #: lang/json/terrain_from_json.py msgid "rock floor" @@ -124387,6 +126000,8 @@ msgid "" "Small splinters of wood laid out in a layer to prevent unwanted plants from " "growing." msgstr "" +"Древесные щепки выложены слоем для предотвращения роста нежелательных " +"растений." #: lang/json/terrain_from_json.py msgid "moss" @@ -124395,7 +126010,7 @@ msgstr "мох" #. ~ Description for moss #: lang/json/terrain_from_json.py msgid "Moist spongy moss." -msgstr "" +msgstr "Влажный губчатый мох." #: lang/json/terrain_from_json.py msgid "grass" @@ -124408,6 +126023,9 @@ msgid "" "short enough would destroy the root system, causing this area to turn into a" " patch of dirt." msgstr "" +"Область с луговым мятликом, он высотой где-то по щиколотку. Если срезать его" +" слишком близко к корням, то это уничтожит корневую систему, в результате " +"чего эта область превратится в пятно грязи. " #: lang/json/terrain_from_json.py msgid "white grass" @@ -124419,8 +126037,8 @@ msgid "" "A section of Kentucky bluegrass covered in white latex-based paint, with " "neat lines designed for recreational sports." msgstr "" -"Участок Кентуккских лугов покрытых белой водоэмульсионной краской, с " -"аккуратными линиями, используется в рекреационных видах спорта." +"Лужайка лугового мятлика, покрытого белой водоэмульсионной краской и с " +"аккуратными линиями. Для развлекательных видов спорта." #: lang/json/terrain_from_json.py msgid "long grass" @@ -124429,7 +126047,7 @@ msgstr "высокая трава" #. ~ Description for long grass #: lang/json/terrain_from_json.py msgid "Long shaggy grass about shin high." -msgstr "" +msgstr "Длинная, мохнатая трава высотой где-то с голень." #: lang/json/terrain_from_json.py msgid "tall grass" @@ -124438,7 +126056,7 @@ msgstr "высокая трава" #. ~ Description for tall grass #: lang/json/terrain_from_json.py msgid "Tall grass about head high." -msgstr "" +msgstr "Высокая трава, размером с ваш рост." #: lang/json/terrain_from_json.py msgid "dead grass" @@ -124451,12 +126069,12 @@ msgstr "Высокая заросшая трава, которую не подр #: lang/json/terrain_from_json.py msgid "golf green" -msgstr "лужайка \"golf green\"" +msgstr "лужайка для гольфа" #. ~ Description for golf green #: lang/json/terrain_from_json.py msgid "Grass mowed very short and neat." -msgstr "Трава скошенная очень короткую и аккуратную." +msgstr "Трава, скошенная очень коротко и аккуратно." #: lang/json/terrain_from_json.py msgid "golf hole" @@ -124478,7 +126096,7 @@ msgid "" " with a matching roof." msgstr "" "Высококачественный прочный рифлёный пол для снижения риска скольжения и " -"падения с сопоставимой крыши." +"падения, с аналогичной крышей." #: lang/json/terrain_from_json.py msgid "pavement" @@ -124517,7 +126135,7 @@ msgid "" "An area of common poured concrete, damaged by frost heaves and large cracks " "due to lack of maintenance." msgstr "" -"Край проезжей части дороги залитый бетоном, повреждён морозом и большими " +"Край проезжей части дороги, залитый бетоном, повреждён морозом и большими " "трещинами из-за отсутствия обслуживания." #. ~ Description for concrete @@ -124526,9 +126144,8 @@ msgid "" "A newer segment of poured concrete with surface finishes for aesthetics and " "resistance to freeze-thaw cycles." msgstr "" -"Более новый участок дороги залитый бетоном с поверхностной финишной " -"операцией отделки для эстетики и устойчивости к изменяемым погодным условиям" -" замораживания-таяния." +"Более новый залитый бетоном участок дороги с поверхностной отделкой для " +"красоты и устойчивости к циклам замораживания-таяния." #: lang/json/terrain_from_json.py msgid "floor" @@ -124576,8 +126193,8 @@ msgid "" "resistance and sliding, commonly for recreational sports." msgstr "" "Участок пола из твёрдых пород древесины, обработанный химикатами, улучшает " -"сопротивление скольжению и качению, используется обычно в рекреационных " -"видах спорта." +"сопротивление скольжению и качению, используется в развлекательных видах " +"спорта." #: lang/json/terrain_from_json.py msgid "dirt floor" @@ -124586,8 +126203,7 @@ msgstr "земляной пол" #. ~ Description for dirt floor #: lang/json/terrain_from_json.py msgid "Floor consisting of finely mixed earth that has been tamped down." -msgstr "" -"Участок пола, состоящий из хорошо перемешанной земли, которая была утоптана." +msgstr "Участок пола, состоящий из хорошо перемешанной утоптанной земли." #: lang/json/terrain_from_json.py msgid "metal grate" @@ -124599,7 +126215,7 @@ msgid "" "A type of walkway that can be used as protective covering over drains or " "even used as a filter." msgstr "" -"Металлоконструкция которую можно использовать как защитное ограждение над " +"Металлоконструкция, которую можно использовать как защитное ограждение над " "дренажом или даже применять в качестве фильтра." #: lang/json/terrain_from_json.py @@ -124612,8 +126228,8 @@ msgid "" "A disgusting and slippery mess that could be used to stash things because " "who'd want to touch it?" msgstr "" -"Отвратительная и скользкая беспорядочная масса, которую можно использовать, " -"чтобы спрятать вещи, кто же захочет прикоснуться к ней?" +"Отвратительная и скользкая беспорядочная масса, с помощью которой можно " +"спрятать вещи, кто же захочет прикоснуться к ней?" #: lang/json/terrain_from_json.py msgid "walkway" @@ -124638,8 +126254,8 @@ msgid "" "An industrial flood light set up to illuminate the surroundings. Smashing " "it doesn't seem like it'd produce any worthwhile salvage." msgstr "" -"Для освещения окружающего пространства установлен промышленный фонарь. " -"Похоже что разбив его, это не принесёт никакой выгоды." +"Промышленный фонарь для освещения окружающего пространства. Непохоже, чтобы " +"из разбитого фонаря можно было достать что-то полезное." #: lang/json/terrain_from_json.py msgid "half-built log wall" @@ -124651,9 +126267,9 @@ msgid "" "A half-constructed wall of notched logs that interlock to provide stability." " Needs a few more logs to hold up a roof. Looks flammable." msgstr "" -"Полупостроенная стена из обтёсанных брёвен, которые улаживаются совместно " -"для обеспечения стабильности. Нужно ещё несколько брёвен, чтобы держать " -"крышу. Выглядит легковоспламеняющейся конструкцией." +"Полупостроенная стена из обтёсанных брёвен, уложенных для обеспечения " +"прочной конструкции. Нужно ещё несколько брёвен, чтобы держать крышу. " +"Выглядит легковоспламеняющейся конструкцией." #: lang/json/terrain_from_json.py msgid "log wall" @@ -124665,8 +126281,8 @@ msgid "" "A tall wall of timber suitable for housing and insulating from the weather." " Quite flammable." msgstr "" -"Высокая стена из дерева, подходит для жилья и укрытия от непогоды. Довольно " -"легковоспламеняющаяся конструкция." +"Высокая бревёнчатая стена, подходит для жилья и укрытия от непогоды. " +"Довольно легковоспламеняющаяся конструкция." #: lang/json/terrain_from_json.py msgid "chipped log wall" @@ -124678,8 +126294,8 @@ msgid "" "A moderately damaged wall, could probably be patched up with some planks and" " nails." msgstr "" -"Средне повреждённая деревянная стена, может быть заделана несколькими " -"досками и гвоздями." +"Повреждённая бревёнчатая стена, может быть отремонтирована с помощью досок и" +" гвоздей." #: lang/json/terrain_from_json.py msgid "broken log wall" @@ -124692,9 +126308,8 @@ msgid "" "Looks repairable if the damage was replaced and patched together with nails " "and planks." msgstr "" -"Разрушенная деревянная стена, только опорное бревно осталось, готово " -"обвалиться. Можно отремонтировать, если избегать получения повреждений и " -"заделать несколькими досками и гвоздями." +"Разрушенная бревёнчатая стена, осталось только опорное бревно, вот-вот " +"обвалится. Можно отремонтировать и заделать повреждения досками и гвоздями." #: lang/json/terrain_from_json.py msgid "palisade wall" @@ -124706,7 +126321,7 @@ msgid "" "An age-old type of fortification consisting of hefty lumber staked into the " "ground and cabled together." msgstr "" -"Старый тип ограждения, состоящий из большого колличества разнообразного " +"Древний тип ограждения, состоящий из большого количества разнообразного " "пиломатериала, установленного в землю и связанного вместе." #: lang/json/terrain_from_json.py @@ -124721,8 +126336,8 @@ msgid "" "on an adjacent palisade wall." msgstr "" "Большой дверной проём, состоящий из длинных брёвен, соединённых вместе, " -"которые можно расширить. Может действовать как дверь, если поворотная " -"система шкивов была оборудованна на соседнем участке частокола." +"можно расширить. Может действовать как дверь, если на соседнем участке " +"частокола есть система шкивов." #. ~ Description for dirt #: lang/json/terrain_from_json.py @@ -124730,7 +126345,7 @@ msgid "" "A hanging palisade gate, hoisted by a nearby pulley system. Probably " "shouldn't be underneath when it comes down." msgstr "" -"Подвешенные ворота частокола, подняты системой шкивов. Наверное не надо " +"Подвешенные ворота частокола, подняты системой шкивов. Наверное, не надо " "находиться снизу, когда ворота опустятся." #: lang/json/terrain_from_json.py @@ -124771,8 +126386,8 @@ msgid "" "A wall of aligned two by fours that's starting to crack and break open. " "Some cut wood and a number of nails could patch this up quick." msgstr "" -"Стена выравненная досками, которая начинает трескаться и ломаться. Несколько" -" кусков древесины и гвоздей могут быстро исправить дело." +"Стена из досок, которая начинает трескаться и ломаться. Несколько кусков " +"древесины и гвоздей могут быстро исправить дело." #: lang/json/terrain_from_json.py msgid "broken wood wall" @@ -124784,7 +126399,7 @@ msgid "" "A number of planks are missing and the structure is beginning to sag and " "fall apart. It's going to need quite a bit of work to repair this wall." msgstr "" -"Разрушенная стена, отсутствует ряд досок, строение начинает проседать и " +"Разрушенная стена, отсутствует ряд досок, всё начинает проседать и " "разваливаться. Для ремонта этой стены потребуется немалая работа." #: lang/json/terrain_from_json.py @@ -124801,8 +126416,8 @@ msgid "" msgstr "" "Обычная стена с деревянной опорной конструкцией, заполнена гипсокартоном и " "изоляционным материалом. Окрашена в обычный нейтральный белый оттенок или " -"кремовый цвет, также может использоваться и более яркая окраска. Похоже что " -"материал всё ещё легковоспламеняющийся." +"кремовый цвет, также может использоваться и более яркая окраска. Похоже, что" +" материал всё ещё легковоспламеняющийся." #: lang/json/terrain_from_json.py msgid "concrete wall" @@ -124817,9 +126432,9 @@ msgid "" " a roof." msgstr "" "Эстетически приятный дизайн стены с прямыми линиями, в этом типе бетона " -"использовались обеднённые связующие компоненты смеси, для болеё быстрого " -"времени застывания бетона. Не совсем подходит для многоэтажных зданий, но " -"всё же способен поддерживать крышу." +"использовались обеднённые связующие компоненты смеси для более быстрого " +"застывания. Не совсем подходит для многоэтажных зданий, но всё же способен " +"поддерживать крышу." #: lang/json/terrain_from_json.py msgid "metal wall" @@ -124833,12 +126448,11 @@ msgid "" " elements as well as hostile forces. Blast load rated and extremely fire-" "retardant, breaching will require specialized tools or industrial vehicles." msgstr "" -"Толстый металлический лист изготовленный промышленным способом, тщательно " +"Толстый металлический лист, изготовленный промышленным способом, аккуратно " "размещённый и соединённый бесшовным методом по периметру герметизирующим " -"материалом, эта стена способна противостоять экстремальным внешним силам " -"воздействия, также хорошо, как и враждебным силам. Высокая стойкость к " -"взрыву, чрезвычайная огнестойкость, сопротивление пробитию, потребует от вас" -" специальные инструменты или промышленные виды транспорта для работы." +"материалом, эта стена способна противостоять экстремальной погоде и " +"враждебным силам. Устойчивая к взрыву и чрезвычайно огнестойкая. Пробитие " +"такой стены потребует особых инструментов или промышленной техники." #: lang/json/terrain_from_json.py msgid "glass wall" @@ -124866,7 +126480,7 @@ msgid "" "strengthening the structural properties. Still weaker than other types of " "walls, and not made to support a roof either." msgstr "" -"Более толстая стеклянная панель с тонкой металлической сеткой, усиливающая " +"Более толстая стеклянная панель с тонкой металлической сеткой, усиливающей " "структуру стекла. Всё ещё слабее других типов стен, также её нельзя " "использовать для поддержки крыши." @@ -124882,10 +126496,10 @@ msgid "" "extreme weather. Looks like it can only be opened from the inside. Even " "with the installed shutters, it isn't feasible in supporting a roof." msgstr "" -"Второй слой защиты армированного стекла, эти металлические ставни обычно " -"используются как антивандальная мера или защита от экстремальных погодных " -"условий. Похоже, их можно поднять только изнутри. Даже с установленными " -"ставнями, стекло неспособно поддерживать крышу." +"Второй слой защиты после бронированного стекла, эти металлические ставни " +"обычно используются как антивандальная мера или защита от экстремальных " +"погодных условий. Похоже, их можно поднять только изнутри. Даже с " +"установленными ставнями, стекло неспособно поддерживать крышу." #: lang/json/terrain_from_json.py msgid "reinforced glass with open shutters" @@ -124898,8 +126512,8 @@ msgid "" "glass. It appears as though the metal shutters can only be activated from " "the inside." msgstr "" -"Поднятые не развёрнутые металлические ставни, делают видимым армированное " -"стекло. Похоже, что металлические ставни можно активировать только изнутри." +"Металлические ставни не развёрнуты. Видно бронированное стекло. Похоже, что " +"металлические ставни можно активировать только изнутри." #: lang/json/terrain_from_json.py msgid "closed reinforced glass door" @@ -124911,8 +126525,8 @@ msgid "" "A closed glass door reinforced with woven steel wires in a stylish, but " "practical pattern." msgstr "" -"Закрытая стеклянная дверь, укреплённая плетёной стальной сеткой в стильном, " -"но практичном виде." +"Закрытая стеклянная дверь, укреплённая плетёной стальной сеткой. Стильно и " +"практично." #: lang/json/terrain_from_json.py msgid "open reinforced glass door" @@ -124924,8 +126538,8 @@ msgid "" "A glass door reinforced with woven steel wires in a stylish, but practical " "pattern. Yep, it's open." msgstr "" -"Стеклянная дверь, укреплённая плетёной стальной сеткой в стильном, но " -"практичном виде. Да, она открыта." +"Стеклянная дверь, укреплённая плетёной стальной сеткой. Стильно и практично." +" Да, она открыта." #: lang/json/terrain_from_json.py msgid "metal bars" @@ -124964,7 +126578,7 @@ msgid "" "you examined it more closely, you'd be able to peek through the hole." msgstr "" "Обычная дверь, сделанная из обычной древесины, но кроме этого имеет глазок. " -"При близком осмотре, вы можете посмотреть через глазок." +"При близком осмотре вы можете посмотреть через глазок." #: lang/json/terrain_from_json.py msgid "damaged wood door" @@ -125036,8 +126650,8 @@ msgid "" " fours for reinforcement. It might be barricaded, but still susceptible to " "fire." msgstr "" -"Обычная деревянная дверь, кроме слоя прибитых досок для её укрепления. Она " -"может быть забаррикадирована, но всё так же является легковоспламеняющейся." +"Обычная деревянная дверь, если не считать укрепления слоем прибитых досок. " +"Её можно усилить, но она всё еще пожароопасна." #: lang/json/terrain_from_json.py msgid "damaged reinforced wood door" @@ -125063,9 +126677,9 @@ msgid "" " fours for reinforcement. It might be fortified, but still susceptible to " "fire. It's open so it's not stopping anything right now." msgstr "" -"Обычная деревянная дверь, кроме слоя прибитых досок для её укрепления. Она " -"может быть забаррикадирована, но всё так же является легковоспламеняющейся. " -"Дверь открыта и никого не остановит прямо сейчас." +"Обычная деревянная дверь, если не считать укрепления слоем прибитых досок. " +"Её можно усилить, но она всё еще пожароопасна. Дверь открыта и никого не " +"остановит прямо сейчас." #. ~ Description for closed wood door #: lang/json/terrain_from_json.py @@ -125074,9 +126688,10 @@ msgid "" " easily, too. This one has an extra keyhole, so it's likely locked. You " "could pry it open or pick the lock." msgstr "" -"Стандартная деревянная дверь, не выглядит довольно прочной. Выглядит " -"легковоспламеняющейся. Дверь оснащена дополнительной замочной скважиной и " -"вероятно закрыта. Вы можете попытаться открыть её или использовать отмычку." +"Стандартная деревянная дверь, не очень прочная на вид. Выглядит " +"легковоспламеняющейся. Дверь оснащена дополнительной замочной скважиной и, " +"вероятно, закрыта. Вы можете попытаться взломать её или использовать " +"отмычку." #. ~ Description for closed wood door #: lang/json/terrain_from_json.py @@ -125085,10 +126700,10 @@ msgid "" " easily, too. This one has a deadbolt keyhole, so it's likely locked. You " "could pry it open or pick the lock, or unlock the deadbolt from the inside." msgstr "" -"Стандартная деревянная дверь, не выглядит довольно прочной. Выглядит " -"легковоспламеняющейся. Дверь оснащена замочной скважиной с запорным штифтом " -"и вероятно закрыта. Вы можете попытаться открыть её или использовать " -"отмычку, или открыть дверь изнутри." +"Стандартная деревянная дверь, не очень прочная на вид. Выглядит " +"легковоспламеняющейся. Дверь оснащена замочной скважиной с запорным штифтом," +" и вероятно, закрыта. Вы можете попытаться взломать её, или использовать " +"отмычку, или открыть штифт изнутри." #. ~ Description for closed wood door #: lang/json/terrain_from_json.py @@ -125099,9 +126714,10 @@ msgid "" " pick the lock, or unlock the deadbolt from the inside." msgstr "" "Стандартная дверь, сделанная из обычной древесины, но кроме этого имеет " -"глазок. При близком осмотре, вы можете посмотреть через глазок. Дверь " -"оснащена замочной скважиной с запорным штифтом и вероятно закрыта. Вы можете" -" попытаться открыть её или использовать отмычку, или открыть дверь изнутри." +"глазок. При близком осмотре вы можете посмотреть через глазок. Дверь " +"оснащена замочной скважиной с запорным штифтом и, вероятно, закрыта. Вы " +"можете попытаться взломать её, или использовать отмычку, или открыть штифт " +"изнутри." #: lang/json/terrain_from_json.py msgid "closed door curtain" @@ -125127,9 +126743,9 @@ msgid "" "rope hanging from the top of the doorway. Could be easily taken down and " "re-purposed." msgstr "" -"Самодельный щит, состоящий из досок связанных вместе вертикальной верёвкой, " -"свисающей с дверного проёма. Можно легко разобрать на компоненты или " -"установить в другом месте." +"Самодельный щит, состоящий из связанных вместе досок на вертикальной " +"верёвке, свисающей с дверного проёма. Можно легко разобрать на компоненты " +"или установить в другом месте." #: lang/json/terrain_from_json.py msgid "wham." @@ -125162,9 +126778,9 @@ msgid "" "purposed. The planks have been rolled up and attached to the top of the " "doorway, allowing free movement through." msgstr "" -"Самодельный щит, состоящий из досок связанных вместе вертикальной верёвкой, " -"свисающей с дверного проёма. Можно легко разобрать на компоненты или " -"установить в другом месте. Доски собраны и прикреплены к верху дверного " +"Самодельный щит, состоящий из связанных вместе досок на вертикальной " +"верёвке, свисающей с дверного проёма. Можно легко разобрать на компоненты " +"или установить в другом месте. Доски собраны и прикреплены к верху дверного " "проёма, позволяя свободное перемещение." #: lang/json/terrain_from_json.py @@ -125277,8 +126893,8 @@ msgid "" "A standard wooden door that has several planks across it, nailed down to " "board it up and increase its durability. Still flammable though." msgstr "" -"Стандартная деревянная дверь, с несколькими прибитыми накрест досками, " -"увеличивающие её прочность. Выглядит легковоспламеняющейся." +"Стандартная деревянная дверь с несколькими прибитыми накрест досками, " +"увеличивающими её прочность. Выглядит легковоспламеняющейся." #: lang/json/terrain_from_json.py msgid "boarded up damaged door" @@ -125290,8 +126906,8 @@ msgid "" "A boarded up wooden door, except some of the planks are fractured or coming " "loose. Without repairs, it could be broken down easily." msgstr "" -"Заколоченная деревянная дверь, без нескольких поломанных и отвалившихся " -"досок. Без ремонта, её можно легко сломать." +"Заколоченная деревянная дверь без нескольких поломанных и отвалившихся " +"досок. Её можно легко сломать." #: lang/json/terrain_from_json.py msgid "boarded up door with peephole" @@ -125319,9 +126935,8 @@ msgid "" "boarded up with more wood to prevent it from opening. Still susceptible to " "fire." msgstr "" -"Укреплённая дверь, дополнительно усилена несколькими заколоченными досками, " -"чтобы препятствовать тому, чтобы её можно было открыть. Выглядит " -"легковоспламеняющейся." +"Укреплённая дверь, дополнительно усилена несколькими приколоченными досками," +" чтобы её нельзя было открыть. Выглядит легковоспламеняющейся." #: lang/json/terrain_from_json.py msgid "boarded up damaged reinforced door" @@ -125335,8 +126950,8 @@ msgid "" "like an easy repair." msgstr "" "Разбитая и поломанная укреплённая дверь с досками, разламывающимися в " -"соединениях. Заколоченные доски разломаны на куски, это не похоже на лёгкий " -"ремонт." +"соединениях. Заколоченные доски разломаны на куски, похоже, починить её " +"будет непросто." #: lang/json/terrain_from_json.py msgid "boarded up damaged door with peephole" @@ -125350,8 +126965,8 @@ msgid "" "be used to see through." msgstr "" "Поломанная деревянная дверь, сделанная из обычной древесины, но кроме этого " -"имеет глазок. Несмотря на то что она заколоченна досками, глазок был " -"повреждён, вы не можете смотреть через него." +"имеет глазок. Несмотря на укрепление досками, глазок был повреждён, вы не " +"можете смотреть через него." #: lang/json/terrain_from_json.py msgid "closed metal door" @@ -125363,8 +126978,8 @@ msgid "" "An extremely resilient door made of assorted steel, carved and pounded into " "shape." msgstr "" -"Чрезвычайно прочная дверь, сделана из профилированного сортового металла, " -"была раскроена и ей придали требуемую форму. Дверь закрыта." +"Чрезвычайно прочная дверь из профилированного сортового металла, " +"разрезанного и установленного в нужной форме. Дверь закрыта." #: lang/json/terrain_from_json.py msgid "open metal door" @@ -125376,9 +126991,9 @@ msgid "" "An extremely resilient door made of assorted steel, carved and pounded into " "shape. It's open, so no tools are needed to break in." msgstr "" -"Чрезвычайно прочная дверь, сделана из профилированного сортового металла, " -"была раскроена и ей придали требуемую форму. Дверь открыта, никакие " -"инструменты не требуются для её вламывания." +"Чрезвычайно прочная дверь из профилированного сортового металла, " +"разрезанного и установленного в нужной форме. Дверь открыта, так что взлом " +"не требуется." #: lang/json/terrain_from_json.py msgid "closed metal door with peephole" @@ -125391,9 +127006,9 @@ msgid "" "shape. If you examined it more closely, you'd be able to peek through the " "hole." msgstr "" -"Чрезвычайно прочная дверь с глазком, сделана из профилированного сортового " -"металла, была раскроена и ей придали требуемую форму. При близком осмотре, " -"вы можете посмотреть через глазок. Дверь закрыта." +"Чрезвычайно прочная дверь из профилированного сортового металла, " +"разрезанного и установленного в нужной форме. При близком осмотре вы можете" +" посмотреть через глазок. Дверь закрыта." #: lang/json/terrain_from_json.py msgid "open metal door with peephole" @@ -125407,10 +127022,10 @@ msgid "" "hole. Although, you don't need to peek through it since the door is open " "anyway." msgstr "" -"Чрезвычайно прочная дверь с глазком, сделана из профилированного сортового " -"металла, была раскроена и ей придали требуемую форму. При близком осмотре, " -"вы можете посмотреть через глазок. Хотя и смотреть через него нет смысла, " -"так как дверь открыта всё равно." +"Чрезвычайно прочная дверь из профилированного сортового металла, " +"разрезанного и установленного в нужной форме. При близком осмотре вы можете " +"посмотреть через глазок. Хотя и смотреть через него нет смысла, так как " +"дверь открыта всё равно." #. ~ Description for closed metal door #: lang/json/terrain_from_json.py @@ -125419,10 +127034,10 @@ msgid "" " anything. Typically used in conjunction with automated electronic locking " "mechanisms that require an external source to unlock." msgstr "" -"Дверь из оцинкованной стали, изготовлена чтобы выдерживать высокие ударные " -"нагрузки и служить барьером кому-либо или чему-либо. Как правило " -"используется в сочетании с автоматическими электронными механизмами " -"блокировки, активируется от внешнего источника разблокирования." +"Дверь из оцинкованной стали, способна выдерживать высокие ударные нагрузки и" +" служить препятствием кому угодно и чему угодно. Обычно в такие двери " +"встраивается автоматический электронный замок, открывающийся из внешнего " +"источника." #. ~ Description for closed metal door #: lang/json/terrain_from_json.py @@ -125431,10 +127046,10 @@ msgid "" "shape. This one has an extra keyhole, so it's likely locked. You could " "probably pick the lock." msgstr "" -"Чрезвычайно прочная дверь, сделана из профилированного сортового металла, " -"была раскроена и ей придали требуемую форму. Дверь оснащена дополнительной " -"замочной скважиной и вероятно закрыта. Возможно вы сможете использовать " -"отмычку." +"Чрезвычайно прочная дверь из профилированного сортового металла, " +"разрезанного и установленного в нужной форме. Дверь оснащена дополнительной " +"замочной скважиной и, вероятно, закрыта. Вы можете попробовать открыть её " +"отмычкой." #: lang/json/terrain_from_json.py msgid "closed bar door" @@ -125446,8 +127061,8 @@ msgid "" "A detention door made up of crisscrossed stainless steel bars. The locking " "mechanism doesn't appear to be engaged." msgstr "" -"Дверь сдерживания, сделана из перекрещенных прутьев из нержавеющей стали. " -"Замковый механизм находится в зацеплении." +"Тюремная дверь из перекрещенных прутьев из нержавеющей стали. Непохоже, " +"чтобы замок был закрыт." #: lang/json/terrain_from_json.py msgid "open bar door" @@ -125459,8 +127074,8 @@ msgid "" "A detention door made up of crisscrossed stainless steel bars. It's swung " "wide open. Freedom!" msgstr "" -"Дверь сдерживания, сделана из перекрещенных прутьев из нержавеющей стали. " -"Замок не заперт, дверь широко открыта. Свобода!" +"Тюремная дверь из перекрещенных прутьев из нержавеющей стали. Замок не " +"заперт, дверь широко открыта. Свобода!" #. ~ Description for closed bar door #: lang/json/terrain_from_json.py @@ -125469,9 +127084,8 @@ msgid "" "mechanism appears to be engaged. The mechanism could be picked open with " "enough skill." msgstr "" -"Дверь сдерживания, сделана из перекрещенных прутьев из нержавеющей стали. " -"Замковый механизм находится в зацеплении. Механизм можно открыть отмычкой, " -"имея достаточный навык." +"Тюремная дверь из перекрещенных прутьев из нержавеющей стали. Похоже, замок " +"заперт. Механизм можно открыть отмычкой, имея достаточный навык." #: lang/json/terrain_from_json.py msgid "closed glass door" @@ -125483,9 +127097,8 @@ msgid "" "A sliding glass door, the kind that was on social media with people and " "animals running into. This one is closed, so don't hurt yourself." msgstr "" -"Раздвижная стеклянная дверь, как та что используется на открытых массовых " -"мероприятиях с людьми и животными, проходящими через неё. Дверь закрыта, не " -"пораньтесь." +"Раздвижная стеклянная дверь, типа тех дверей из видео, в которые вбегают " +"люди и животные. Дверь закрыта, не пораньтесь." #: lang/json/terrain_from_json.py msgid "open glass door" @@ -125498,20 +127111,20 @@ msgid "" "A sliding glass door that has been left open for all manner of things to " "travel through." msgstr "" -"Раздвижная стеклянная дверь, открыта для всех кто хочет пройти через неё." +"Раздвижная стеклянная дверь, открыта для всех, кто хочет пройти через неё." #: lang/json/terrain_from_json.py msgid "closed frosted glass door" -msgstr "закрытая заледенелая стеклянная дверь" +msgstr "закрытая матовая стеклянная дверь" #. ~ Description for closed frosted glass door #: lang/json/terrain_from_json.py msgid "A sliding door of frosted white glass." -msgstr "Заледенелая раздвижная дверь из побелевшего стекла от мороза." +msgstr "Раздвижная дверь из матового белого стекла" #: lang/json/terrain_from_json.py msgid "open frosted glass door" -msgstr "открытая заледенелая стеклянная дверь" +msgstr "открытая матовая стеклянная дверь" #: lang/json/terrain_from_json.py msgid "makeshift portcullis" @@ -125549,8 +127162,8 @@ msgid "" "A giant sheet of glass inserted into a window, typically found on the side " "of shops to showcase goods." msgstr "" -"Большой лист стекла, вставленный в окно, который обычно используется как " -"витрина магазинов для демонстрации товаров." +"Большой лист стекла, вставленный в окно, обычно используется как витрина " +"магазинов для демонстрации товаров." #: lang/json/terrain_from_json.py msgid "taped window" @@ -125563,7 +127176,7 @@ msgid "" "remove the duct tape by cutting it off." msgstr "" "Клейкая монтажная лента закрывает это окно, блокируя солнечный свет и обзор." -" Вы можете удалить монтажную ленту, чтобы устранить это." +" Вы можете удалить ленту." #: lang/json/terrain_from_json.py msgid "window with curtains" @@ -125602,7 +127215,7 @@ msgid "" "A smaller window typically found in residential homes. It's open and can be" " crawled through." msgstr "" -"Небольшое окно, которое можно увидеть в жилых домах. Это окно открыто и вы " +"Небольшое окно, которое можно увидеть в жилых домах. Это окно открыто, и вы " "можете пролезть через него." #. ~ Description for taped window @@ -125613,8 +127226,7 @@ msgid "" "off." msgstr "" "Небольшое окно, которое можно увидеть в жилых домах. Это окно заклеено " -"клейкой монтажной лентой. Вы можете удалить монтажную ленту, чтобы устранить" -" это." +"клейкой монтажной лентой. Вы можете удалить ленту." #. ~ Description for taped window #: lang/json/terrain_from_json.py @@ -125623,8 +127235,7 @@ msgid "" "with duct tape. You could remove the duct tape by cutting it off." msgstr "" "Окно с причудливыми занавесками на внутренней части. Это окно заклеено " -"клейкой монтажной лентой. Вы можете удалить монтажную ленту, чтобы устранить" -" это." +"клейкой монтажной лентой. Вы можете удалить ленту." #: lang/json/terrain_from_json.py msgid "open window with curtains" @@ -125652,10 +127263,10 @@ msgid "" "examined the curtains more closely, you could peek through the drapes or " "tear down everything. Or you could just smash the window open." msgstr "" -"Окно с причудливыми занавесками на внутренней части, которые были задёрнуты," -" чтобы заблокировать внешний обзор и не впускать солнечный свет. Занавески " -"можно открыть только изнутри. При близком осмотре, вы можете посмотреть " -"через занавески или убрать их. А также вы можете просто разбить окно." +"Окно с причудливыми занавесками на внутренней части, задёрнутыми, чтобы " +"заблокировать внешний обзор и не впускать солнечный свет. Занавески можно " +"открыть только изнутри. При близком осмотре вы можете посмотреть через " +"занавески или убрать их. А также вы можете просто разбить окно." #. ~ Description for taped window #: lang/json/terrain_from_json.py @@ -125664,7 +127275,7 @@ msgid "" " could remove the duct tape by cutting it off." msgstr "" "Клейкая монтажная лента закрывает это окно, блокируя солнечный свет и обзор." -" Вы можете удалить монтажную ленту чтобы устранить это." +" Вы можете удалить ленту." #: lang/json/terrain_from_json.py msgid "empty window" @@ -125677,9 +127288,9 @@ msgid "" "install a sheet of glass, or even board it up for protection. You could " "also convert it into a wall if you took the time to construct it." msgstr "" -"Пустая оконная рама, сделанная из досок и гвоздей. Вы можете установить лист" -" стекла или даже забить её для защиты. Вы можете также преобразовать раму в " -"стену, если вы не торопитесь, чтобы построить её." +"Пустая оконная рама из досок и гвоздей. Вы можете установить лист стекла или" +" даже заколотить раму досками для защиты. Вы можете также переделать раму в " +"стену, если у вас достаточно времени." #: lang/json/terrain_from_json.py msgid "window frame" @@ -125692,9 +127303,9 @@ msgid "" "get hurt if you crawled through the sharp and jagged shards. You could " "smash out the remaining pieces, or take your time and quietly clean them up." msgstr "" -"Деревянная оконная рама с разбитым стеклом вокруг. Вы получите ранение, если" -" полезете через острые и зазубренные осколки. Вы можете разбить оставшиеся " -"части или не торопясь и спокойно очистить их." +"Деревянная оконная рама с разбитым стеклом вокруг. Вы рискуете пораниться, " +"если полезете через острые и зазубренные осколки. Вы можете разбить " +"оставшиеся части или не торопясь и спокойно очистить их." #: lang/json/terrain_from_json.py msgid "glass crunching!" @@ -125711,9 +127322,8 @@ msgid "" "sunlight and visibility. It's not much stronger, but it could be further " "reinforced with strategically placed two by fours." msgstr "" -"Окно со стеклом, заколоченное досками и гвоздями, блокирует солнечный свет и" -" обзор. Это не намного крепче, но может быть укреплено досками как " -"стратегическое помещение." +"Стеклянное окно, заколоченное досками, блокирует солнечный свет и обзор. Не " +"очень прочное, но его можно усилить, прибив больше досок в важные места." #. ~ Description for boarded up window #: lang/json/terrain_from_json.py @@ -125722,9 +127332,9 @@ msgid "" "blocking sunlight and visibility. It's not much stronger, but it could be " "further reinforced with strategically placed two by fours." msgstr "" -"Пустая оконная рама, которая была заколочена досками и гвоздями, блокирует " -"солнечный свет и обзор. Это не намного крепче, но может быть укреплено " -"досками как стратегическое помещение." +"Пустая оконная рама, заколоченная досками, блокирует солнечный свет и обзор." +" Не очень прочно, но конструкцию можно усилить, прибив больше досок в важные" +" места." #: lang/json/terrain_from_json.py msgid "reinforced boarded up window" @@ -125737,8 +127347,8 @@ msgid "" "glass to block vision. Adding a few spikes and metal plating would further " "increase its durability." msgstr "" -"Укреплённое окно со стеклом с тщательно заколоченными накрест досками, " -"блокирующие обзор. Добавление нескольких шипов и металлических пластин " +"Укреплённое стеклянное окно с тщательно заколоченными накрест досками для " +"загораживания обзора. Добавление нескольких шипов и металлических пластин " "увеличит прочность окна." #. ~ Description for reinforced boarded up window @@ -125748,9 +127358,9 @@ msgid "" "frame to block vision. Adding a few spikes and metal plating would further " "increase its durability." msgstr "" -"Укреплённое окно с тщательно заколоченными накрест досками на открытой " -"оконной раме, блокирующих обзор. Добавление нескольких шипов и металлических" -" пластин, увеличит прочность оконной рамы." +"Неплохо укреплённое окно с тщательно заколоченными накрест досками для " +"загораживания обзора. Добавление нескольких шипов и металлических пластин " +"увеличит прочность." #: lang/json/terrain_from_json.py msgid "armored boarded up window" @@ -125763,9 +127373,9 @@ msgid "" "laboriously placed metal sheeting to further strengthen the wooden " "reinforcements underneath." msgstr "" -"Окно со стеклом укреплено угрожающими шипами по периметру, со старательно " -"установленными защитными листами металла, для усиления укреплённого " -"деревянного окна снизу." +"Когда-то обычное стеклянное окно теперь усеяно по периметру угрожающими " +"шипами со старательно установленными защитными листами металла, " +"прикрывающими деревянные укрепления." #. ~ Description for armored boarded up window #: lang/json/terrain_from_json.py @@ -125774,9 +127384,9 @@ msgid "" "laboriously placed metal sheeting to further strengthen the wooden " "reinforcements underneath." msgstr "" -"Оконная рама укреплена угрожающими шипами по периметру, со старательно " -"установленными защитными листами металла, для усиления укреплённой " -"деревянной рамы снизу." +"Когда-то обычная оконная рама теперь усеяна по периметру угрожающими шипами " +"со старательно установленными защитными листами металла, прикрывающими " +"деревянные укрепления." #: lang/json/terrain_from_json.py msgid "window frame with metal bars" @@ -125789,8 +127399,8 @@ msgid "" "making it impossible to crawl through. Typically installed for high-value " "stores, or at least stores in bad neighborhoods." msgstr "" -"Большой лист стекла, вставленный в окно с толстыми решётками, вы не можете " -"пролезть через него. Как правило, устанавливается в элитных магазинах или " +"Большой лист стекла, вставленный в окно с толстыми решётками. Пролезть " +"сквозь него нельзя. Как правило, устанавливается в элитных магазинах или " "магазинах в неблагополучных кварталах." #: lang/json/terrain_from_json.py @@ -125806,8 +127416,8 @@ msgid "" "sticker in a corner stating, 'Protected by AtmoWeb, leading AI in " "terminating crime'." msgstr "" -"Большой лист стекла, вставленный в окно с толстыми решётками, вы не можете " -"пролезть через него. Как правило, устанавливается в элитных магазинах или " +"Большой лист стекла, вставленный в окно с толстыми решётками. Пролезть " +"сквозь него нельзя. Как правило, устанавливается в элитных магазинах или " "магазинах в неблагополучных кварталах. У этого окна есть маленькая наклейка " "в углу, которая гласит: \"Защищено AtmoWeb, лидером AI в предотвращении " "преступлений\"." @@ -125822,7 +127432,7 @@ msgid "" "Breathtaking craftsmanship of stained glass featuring an elegant emerald " "landscape." msgstr "" -"Захватывающее дух мастерство витража, показывает изящный изумрудный пейзаж." +"Захватывающее дух мастерство витража изображает изящный изумрудный пейзаж." #. ~ Description for high stained glass window #: lang/json/terrain_from_json.py @@ -125830,8 +127440,7 @@ msgid "" "Breathtaking craftsmanship of stained glass featuring an otherworldly " "radiant ruby flower blooming." msgstr "" -"Захватывающее дух мастерство витража, показывает потустороннее сияющее " -"рубиновое цветочное цветение." +"Захватывающее дух мастерство витража изображает сияющий рубиновый цветок." #. ~ Description for high stained glass window #: lang/json/terrain_from_json.py @@ -125839,7 +127448,7 @@ msgid "" "Breathtaking craftsmanship of stained glass featuring an alluring azure " "oceanic abyss." msgstr "" -"Захватывающее дух мастерство витража, показывает очаровательную лазурную " +"Захватывающее дух мастерство витража изображает очаровательную лазурную " "синеву океанской бездны." #. ~ Description for solid rock @@ -125862,8 +127471,8 @@ msgid "" "A block of stone that's been smoothed and shaped, commonly granite or marble" " for funerary chapels and mausoleums." msgstr "" -"Каменный блок, который был сглажен и ему была придана форма, обычно это " -"гранит или мрамор применяется в погребальных часовнях и мавзолеях." +"Сглаженный каменный блок, обычно гранит или мрамор. Встречается в " +"погребальных часовнях и мавзолеях." #: lang/json/terrain_from_json.py msgid "odd fault" @@ -125875,9 +127484,9 @@ msgid "" "An unnaturally humanoid-shaped hole, it seems oddly familiar. There's a " "strange sensation to examine it closer, as if it belongs to you somehow." msgstr "" -"Неестественная дыра в земле напоминает своей формой человеческие очертания, " -"кажется странно знакомой. У вас странное ощущение исследовать её поближе, " -"как будто этот объект принадлежит почему-то вам." +"Неестественная дыра напоминает своей формой человеческие очертания и кажется" +" странно знакомой. У вас странное желание исследовать её поближе, будто этот" +" объект как-то связан с вами." #: lang/json/terrain_from_json.py msgid "paper wall" @@ -125890,10 +127499,10 @@ msgid "" "covered in sticky wasp saliva. Whatever structure was underneath has been " "reformed and long gone. You could smash it down effortlessly." msgstr "" -"Огромная стена мясистой массы, которая была сформирована благодаря " -"переработке соседних зданий и покрыта липкой слюной ос. Чем бы ни была эта " -"структура раньше, теперь она преобразована и потеряла свой первоначальный " -"облик. Вы можете её легко разбить." +"Огромная стена из мягкой массы, слепленной из частей ближайших зданий и " +"покрытой липкой осиной слюной. Чем бы она ни была раньше, теперь она " +"преобразована и потеряла свой первоначальный облик. Вы можете её легко " +"разбить." #: lang/json/terrain_from_json.py msgid "walnut tree" @@ -125906,6 +127515,9 @@ msgid "" "can see some unharvested walnuts. You could cut it down with the right " "tools." msgstr "" +"Массивное дерево, принадлежащее к роду «Орех». Если вы посмотрите " +"внимательно, вы увидите некоторые несобранные грецкие орехи. Вы могли бы его" +" срубить с помощью правильных инструментов." #. ~ Description for walnut tree #: lang/json/terrain_from_json.py @@ -125913,6 +127525,8 @@ msgid "" "A massive tree belonging to the 'Juglans' genus. You could cut it down with" " the right tools." msgstr "" +"Массивное дерево, принадлежащее к роду «Орех». Вы могли бы его срубить с " +"помощью правильных инструментов." #: lang/json/terrain_from_json.py msgid "chestnut tree" @@ -125925,6 +127539,9 @@ msgid "" "can see some unharvested chestnuts. You could cut it down with the right " "tools." msgstr "" +"Массивное дерево, принадлежащее роду «Каштан». Если вы посмотрите " +"внимательно, вы увидите некоторые несобранные каштаны. Вы могли бы его " +"срубить с помощью правильных инструментов." #. ~ Description for chestnut tree #: lang/json/terrain_from_json.py @@ -125932,6 +127549,8 @@ msgid "" "A massive tree belonging to the 'Castanea' genus. You could cut it down " "with the right tools." msgstr "" +"Массивное дерево, принадлежащее роду «Каштан». Вы могли бы его срубить с " +"помощью правильных инструментов." #: lang/json/terrain_from_json.py msgid "beech tree" @@ -125944,6 +127563,9 @@ msgid "" "see some unharvested beech nuts. You could cut it down with the right " "tools." msgstr "" +"Массивное дерево, принадлежащее к роду «Бук». Если присмотреться, то можно " +"увидеть некоторые несобранные буковые орехи. Вы могли бы срубить его с " +"помощью правильных инструментов." #. ~ Description for beech tree #: lang/json/terrain_from_json.py @@ -125951,6 +127573,8 @@ msgid "" "A massive tree belonging to the 'Fagus' genus. You could cut it down with " "the right tools." msgstr "" +"Массивное дерево, принадлежащее к роду «Бук». Вы могли бы срубить его с " +"помощью правильных инструментов." #: lang/json/terrain_from_json.py msgid "hazelnut tree" @@ -125963,6 +127587,9 @@ msgid "" " see some unharvested hazelnuts. You could cut it down with the right " "tools." msgstr "" +"Пустое дерево, принадлежащее роду «Орешник». Если вы посмотрите внимательно," +" то увидите несобранный фундук. Вы могли бы срубить его с помощью правильных" +" инструментов." #. ~ Description for hazelnut tree #: lang/json/terrain_from_json.py @@ -125970,6 +127597,8 @@ msgid "" "A stubby tree belonging to the 'Corylus' genus. You could cut it down with " "the right tools." msgstr "" +"Пустое дерево, принадлежащее роду «Орешник». Вы могли бы срубить его с " +"помощью правильных инструментов." #: lang/json/terrain_from_json.py msgid "oak tree" @@ -125983,6 +127612,10 @@ msgid "" "the squirrels haven't gotten yet. You could cut it down with the right " "tools." msgstr "" +"Массивное лиственное дерево, принадлежащее к роду «Дуб», обычно " +"встречающееся во всей Новой Англии. Если присмотреться, вы можете увидеть " +"некоторые желуди, которые еще не достались белкам. Вы могли бы срубить его с" +" помощью правильных инструментов." #. ~ Description for oak tree #: lang/json/terrain_from_json.py @@ -126004,6 +127637,8 @@ msgid "" "A large tree belonging to the 'Populus' genus, commonly found throughout New" " England region. You could cut it down with the right tools." msgstr "" +"Большое дерево, принадлежащее к роду «Тополь», обычно встречается в регионе " +"Новой Англии. Вы могли бы срубить его с помощью правильных инструментов." #: lang/json/terrain_from_json.py msgid "elm tree" @@ -126015,6 +127650,8 @@ msgid "" "A large tree belonging to the 'Ulmus' genus, commonly found throughout New " "England region. You could cut it down with the right tools." msgstr "" +"Большое дерево, принадлежащее к роду «Вяз», обычно встречающееся в регионе " +"Новой Англии. Вы могли бы срубить его с помощью правильных инструментов." #: lang/json/terrain_from_json.py msgid "dead tree" @@ -126026,8 +127663,8 @@ msgid "" "An indiscernible tree that has withered away, whether by weather, fire or " "otherworldy. You could cut it down with the right tools." msgstr "" -"Неразличимое дерево, которое засохло, то ли из-за непогды, пожара или другим" -" неизвестным образом. Вы можете срубить его с необходимыми инструментами." +"Неразличимое дерево, которое погибло из-за непогоды, пожара или чего-нибудь " +"еще. Вы можете срубить его при наличии подходящего инструмента." #: lang/json/terrain_from_json.py msgid "young tree" @@ -126039,9 +127676,8 @@ msgid "" "A relatively young sapling of an indeterminate species. It could take " "decades before reaching maturity, so there's no use waiting around." msgstr "" -"Относительно молодое дерево неопределенной разновидности. Можно ждать " -"десятилетия пока дерево достигнет своей зрелости, так что бесполезно ждать " -"рядом." +"Относительно молодое дерево неопределенной разновидности. Дерево достигает " +"зрелости в течение десятилетий, так что ждать рядом бесполезно." #: lang/json/terrain_from_json.py msgid "apple tree" @@ -126055,10 +127691,9 @@ msgid "" "find a few mature ones in autumn. You could also cut it down with the right" " tools." msgstr "" -"Плодовое дерево семейства розоцветных 'Malus', широко известно своими " -"плодами яблоками осенью. При близком осмотре ветвей, вы возможно сможете " -"найти несколько спелых плодов. Вы можете срубить его с необходимыми " -"инструментами." +"Плодовое дерево семейства розоцветных 'Malus', его плоды известны как " +"яблоки. Вы можете найти несколько штук осенью, если внимательно осмотрите " +"ветви. Вы можете срубить его при наличии подходящего инструмента." #. ~ Description for apple tree #: lang/json/terrain_from_json.py @@ -126067,9 +127702,9 @@ msgid "" "as apples. There doesn't appear to be any ripe apples now. You could also " "cut it down with the right tools." msgstr "" -"Плодовое дерево семейства розоцветных 'Malus', широко известно своими " -"плодами яблоками осенью. Теперь на дереве нет никаких спелых яблок. Вы " -"можете срубить его с необходимыми инструментами." +"Плодовое дерево семейства розоцветных 'Malus', его плоды известны как " +"яблоки. Сейчас на дереве нет никаких спелых яблок. Вы можете срубить его при" +" наличии подходящего инструмента." #: lang/json/terrain_from_json.py msgid "pear tree" @@ -126084,9 +127719,9 @@ msgid "" "tools." msgstr "" "Плодовое дерево семейства розоцветных 'Pyrus communis', широко известно как " -"грушевое дерево, плодоносит сочные груши осенью. При близком осмотре ветвей," -" вы возможно сможете найти несколько спелых плодов. Вы можете срубить его с " -"необходимыми инструментами." +"грушевое дерево, плодоносит сочные груши осенью. Вы можете найти несколько " +"штук, если внимательно осмотрите ветви. Вы можете срубить его при наличии " +"подходящего инструмента." #. ~ Description for pear tree #: lang/json/terrain_from_json.py @@ -126096,8 +127731,8 @@ msgid "" "could also cut it down with the right tools." msgstr "" "Плодовое дерево семейства розоцветных 'Pyrus communis', широко известно как " -"грушевое дерево, плодоносит сочные груши осенью. Похоже все спелые груши " -"были собраны. Вы можете срубить его с необходимыми инструментами." +"грушевое дерево, плодоносит сочные груши осенью. Похоже, все спелые груши " +"были собраны. Вы можете срубить его при наличии подходящего инструмента." #: lang/json/terrain_from_json.py msgid "coffee tree" @@ -126111,10 +127746,11 @@ msgid "" "branches more closely, you could probably find a few mature ones. You could" " also cut it down with the right tools." msgstr "" -"Плодовое дерево семейства 'gymnocladus dioicus' или кофейное дерево " +"Плодовое дерево семейства 'Gymnocladus dioicus' или кофейное дерево " "Кентукки, которое осенью плодоносит кофейные стручки для обжарки и листья " -"для заваривания. При близком осмотре ветвей, вы возможно сможете найти " -"несколько спелых плодов. Вы можете срубить его с необходимыми инструментами." +"для заваривания. При близком осмотре ветвей вы, возможно, сможете найти " +"несколько спелых плодов. Вы можете срубить его при наличии подходящего " +"инструмента." #. ~ Description for coffee tree #: lang/json/terrain_from_json.py @@ -126124,10 +127760,10 @@ msgid "" "ripe pods have been picked. You could also cut it down with the right " "tools." msgstr "" -"Плодовое дерево семейства 'gymnocladus dioicus' или кофейное дерево " +"Плодовое дерево семейства 'Gymnocladus dioicus' или кофейное дерево " "Кентукки, которое осенью плодоносит кофейные стручки для обжарки и листья " -"для заваривания. Похоже все созревшие стручки были собраны. Вы можете " -"срубить его с необходимыми инструментами." +"для заваривания. Похоже, все созревшие стручки были собраны. Вы можете " +"срубить его при наличии подходящего инструмента." #: lang/json/terrain_from_json.py msgid "cherry tree" @@ -126143,8 +127779,9 @@ msgid "" msgstr "" "Одна из нескольких разновидностей плодовых деревьев семейства розоцветных " "'Prunus', можно найти в штатах Новой Англии, плодоносит сочные ягоды вишни " -"летом. При близком осмотре листвы, вы возможно сможете найти несколько " -"кистей спелых ягод. Вы можете срубить его с необходимыми инструментами." +"летом. При близком осмотре листвы вы, возможно, сможете найти несколько " +"кистей спелых ягод. Вы можете срубить его при наличии подходящего " +"инструмента." #. ~ Description for cherry tree #: lang/json/terrain_from_json.py @@ -126155,8 +127792,8 @@ msgid "" msgstr "" "Одна из нескольких разновидностей плодовых деревьев семейства розоцветных " "'Prunus', можно найти в штатах Новой Англии, плодоносит сочные ягоды вишни " -"летом. Похоже все спелые кисти вишен были собраны. Вы можете срубить его с " -"необходимыми инструментами." +"летом. Похоже все спелые кисти вишен были собраны. Вы можете срубить его при" +" наличии подходящего инструмента." #: lang/json/terrain_from_json.py msgid "peach tree" @@ -126172,8 +127809,8 @@ msgid "" msgstr "" "Одна из нескольких разновидностей плодовых деревьев семейства розоцветных " "'Prunus', можно найти в штатах Новой Англии, плодоносит сочные персики " -"летом. При близком осмотре ветвей, вы возможно сможете найти несколько " -"спелых плодов. Вы можете срубить его с необходимыми инструментами." +"летом. При близком осмотре ветвей вы, возможно, сможете найти несколько " +"спелых плодов. Вы можете срубить его при наличии подходящего инструмента." #. ~ Description for peach tree #: lang/json/terrain_from_json.py @@ -126184,8 +127821,8 @@ msgid "" msgstr "" "Одна из нескольких разновидностей плодовых деревьев семейства розоцветных " "'Prunus', можно найти в штатах Новой Англии, плодоносит сочные персики " -"летом. Похоже все спелые персики были собраны. Вы можете срубить его с " -"необходимыми инструментами." +"летом. Похоже, все спелые персики были собраны. Вы можете срубить его при " +"наличии подходящего инструмента." #: lang/json/terrain_from_json.py msgid "apricot tree" @@ -126201,8 +127838,9 @@ msgid "" msgstr "" "Пересаженная разновидность плодовых деревьев семейства розоцветных 'Prunus " "armeniaca', редко можно найти в штатах Новой Англии. Плодоносит сочные " -"абрикосы летом. При близком осмотре ветвей, вы возможно сможете найти " -"несколько спелых плодов. Вы можете срубить его с необходимыми инструментами." +"абрикосы летом. При близком осмотре ветвей вы, возможно, сможете найти " +"несколько спелых плодов. Вы можете срубить его при наличии подходящего " +"инструмента." #. ~ Description for apricot tree #: lang/json/terrain_from_json.py @@ -126213,8 +127851,8 @@ msgid "" msgstr "" "Пересаженная разновидность плодовых деревьев семейства розоцветных 'Prunus " "armeniaca', редко можно найти в штатах Новой Англии. Плодоносит сочные " -"абрикосы летом. Похоже все спелые абрикосы были собраны. Вы можете срубить " -"его с необходимыми инструментами." +"абрикосы летом. Похоже, все спелые абрикосы были собраны. Вы можете срубить " +"его при наличии подходящего инструмента." #: lang/json/terrain_from_json.py msgid "plum tree" @@ -126230,8 +127868,8 @@ msgid "" msgstr "" "Одна из нескольких разновидностей плодовых деревьев семейства розоцветных " "'Prunus', можно найти в штатах Новой Англии, плодоносит сочные сливы летом. " -"При близком осмотре ветвей, вы возможно сможете найти несколько спелых " -"плодов. Вы можете срубить его с необходимыми инструментами." +"При близком осмотре ветвей вы, возможно, сможете найти несколько спелых " +"плодов. Вы можете срубить его при наличии подходящего инструмента." #. ~ Description for plum tree #: lang/json/terrain_from_json.py @@ -126242,8 +127880,8 @@ msgid "" msgstr "" "Одна из нескольких разновидностей плодовых деревьев семейства розоцветных " "'Prunus', можно найти в штатах Новой Англии, плодоносит сочные сливы летом. " -"Похоже все спелые сливы были собраны. Вы можете срубить его с необходимыми " -"инструментами." +"Похоже, все спелые сливы были собраны. Вы можете срубить его при наличии " +"подходящего инструмента." #: lang/json/terrain_from_json.py msgid "mulberry tree" @@ -126256,6 +127894,9 @@ msgid "" "as mulberries. In the summer many berries can be picked. You could also " "cut it down with the right tools." msgstr "" +"Это дерево является членом рода «Шелковица», производя фрукты, широко " +"известные как тутовые ягоды. Летом можно собрать много плодов. Вы также " +"можете срубить его с помощью правильных инструментов." #. ~ Description for mulberry tree #: lang/json/terrain_from_json.py @@ -126264,6 +127905,9 @@ msgid "" "as mulberries. There doesn't appear to be any ripe mulberries now. You " "could also cut it down with the right tools." msgstr "" +"Это дерево является членом рода «Шелковица», производя фрукты, широко " +"известные как тутовые ягоды. Кажется, сейчас тут нет зрелых плодов. Вы также" +" можете срубить его с помощью правильных инструментов." #: lang/json/terrain_from_json.py msgid "elderberry tree" @@ -126276,6 +127920,9 @@ msgid "" "known as elderberries. In the summer many berries can be picked. You could" " also cut it down with the right tools." msgstr "" +"Это дерево является членом рода «Бузина», производя плоды, широко известные " +"как ягоды бузины. Летом с него можно собрать много плодов. Вы также можете " +"срубить его с помощью правильных инструментов." #. ~ Description for elderberry tree #: lang/json/terrain_from_json.py @@ -126284,6 +127931,9 @@ msgid "" "known as elderberries. There doesn't appear to be any ripe elderberries " "now. You could also cut it down with the right tools." msgstr "" +"Это дерево является членом рода «Бузина», производя плоды, широко известные " +"как ягоды бузины. Похоже, на нем сейчас нет плодов. Вы также можете срубить " +"его с помощью правильных инструментов." #: lang/json/terrain_from_json.py msgid "pine tree" @@ -126300,9 +127950,9 @@ msgid "" msgstr "" "Возвышающееся вечнозелёное хвойное дерево семейства 'Pinus', в штатах Новой " "Англии есть несколько его разновидностей: 'P. strobus', 'P. resinosa' и 'P. " -"rigida'. При близком осмотре сосны, вы возможно сможете найти несколько " -"полезных веток липкой хвои и сосновые шишки. Вы можете срубить его с " -"необходимыми инструментами." +"rigida'. При близком осмотре сосны вы, возможно, сможете найти несколько " +"полезных хвойных веток и сосновые шишки. Вы можете срубить его при наличии " +"подходящего инструмента." #: lang/json/terrain_from_json.py msgid "dead pine tree" @@ -126319,9 +127969,9 @@ msgid "" msgstr "" "Возвышающееся вечнозелёное хвойное дерево семейства 'Pinus', в штатах Новой " "Англии есть несколько его разновидностей: 'P. strobus', 'P. resinosa' и 'P. " -"rigida'. Несколько ветвей сосны без хвои, сосновые шишки ещё полностью не " -"созрели, но учитывая сезон созревания, можно собрать их снова. Вы можете " -"срубить его с необходимыми инструментами." +"rigida'. Несколько веток оторваны, и многие шишки ещё не созрели, но с " +"течением времени их можно будет собрать снова. Вы можете срубить его при " +"наличии подходящего инструмента." #: lang/json/terrain_from_json.py msgid "birch tree" @@ -126339,8 +127989,8 @@ msgstr "" "Высокое лиственное дерево семейства 'Betula', с характерной белой корой. " "Такие семейства берёзы как 'B. alleghaniensis', 'B. papyrifera' и 'B. " "populifolia' наиболее распространены в регионах Новой Англии. При близком " -"осмотре берёзы, вы возможно сможете оторвать несколько полос бересты. Вы " -"можете срубить его с необходимыми инструментами." +"осмотре берёзы вы, возможно, сможете оторвать несколько полос бересты. Вы " +"можете срубить его при наличии подходящего инструмента." #. ~ Description for birch tree #: lang/json/terrain_from_json.py @@ -126353,9 +128003,9 @@ msgid "" msgstr "" "Высокое лиственное дерево семейства 'Betula', с характерной белой корой. " "Такие семейства берёзы как 'B. alleghaniensis', 'B. papyrifera' и 'B. " -"populifolia' наиболее распространены в регионах Новой Англии. Похоже что ещё" -" нет достаточного количества бересты чтобы собрать. Вы можете срубить его с " -"необходимыми инструментами." +"populifolia' наиболее распространены в регионах Новой Англии. Похоже, что " +"ещё нет достаточного количества бересты чтобы собрать. Вы можете срубить его" +" при наличии подходящего инструмента." #: lang/json/terrain_from_json.py msgid "willow tree" @@ -126413,12 +128063,12 @@ msgstr " арахисовый куст" #. ~ Description for peanut bush #: lang/json/terrain_from_json.py msgid "A small bush of crunchy peanuts." -msgstr "" +msgstr "Маленький куст хрустящего арахиса." #. ~ Description for peanut bush #: lang/json/terrain_from_json.py msgid "A small peanut bush that's fruitless." -msgstr "" +msgstr "Маленький арахисовый куст, который бесплоден." #: lang/json/terrain_from_json.py msgid "blueberry bush" @@ -126427,12 +128077,12 @@ msgstr "черничный куст" #. ~ Description for blueberry bush #: lang/json/terrain_from_json.py msgid "A small bush of sweet blueberries." -msgstr "" +msgstr "Маленький куст сладкой черники." #. ~ Description for blueberry bush #: lang/json/terrain_from_json.py msgid "A small blueberry bush that's fruitless." -msgstr "" +msgstr "Маленький куст черники, который бесплоден." #: lang/json/terrain_from_json.py msgid "strawberry bush" @@ -126441,12 +128091,12 @@ msgstr "земляничный куст" #. ~ Description for strawberry bush #: lang/json/terrain_from_json.py msgid "A small bush of juicy strawberries." -msgstr "" +msgstr "Маленький куст сочной клубники." #. ~ Description for strawberry bush #: lang/json/terrain_from_json.py msgid "A small strawberry bush that's fruitless." -msgstr "" +msgstr "Маленький куст клубники, похоже он бесплоден." #: lang/json/terrain_from_json.py msgid "blackberry bush" @@ -126455,12 +128105,12 @@ msgstr "ежевичный куст" #. ~ Description for blackberry bush #: lang/json/terrain_from_json.py msgid "A small bush of delicious blackberries. Watch out for its thorns!" -msgstr "" +msgstr "Маленький куст вкусной ежевики. Остерегайтесь шипов!" #. ~ Description for blackberry bush #: lang/json/terrain_from_json.py msgid "A small blackberry bush that's fruitless. Watch out for its thorns!" -msgstr "" +msgstr "Маленький куст ежевики. Бесплоден. Остерегайтесь шипов!" #: lang/json/terrain_from_json.py msgid "huckleberry bush" @@ -126469,12 +128119,12 @@ msgstr "черничный куст" #. ~ Description for huckleberry bush #: lang/json/terrain_from_json.py msgid "A small bush of huckleberries, often mistaken as blueberries." -msgstr "" +msgstr "Маленький куст голубики, часто ошибочно принимаемый за чернику." #. ~ Description for huckleberry bush #: lang/json/terrain_from_json.py msgid "A small huckleberry bush that's fruitless." -msgstr "" +msgstr "Маленький куст голубики, который бесплоден." #: lang/json/terrain_from_json.py msgid "raspberry bush" @@ -126483,12 +128133,12 @@ msgstr "малиновый куст" #. ~ Description for raspberry bush #: lang/json/terrain_from_json.py msgid "A small bush of delicious raspberries. Watch out for its thorns!" -msgstr "" +msgstr "Маленький куст восхитительной малины. Остерегайтесь шипов!" #. ~ Description for raspberry bush #: lang/json/terrain_from_json.py msgid "A small raspberry bush that's fruitless. Watch out for its thorns!" -msgstr "" +msgstr "Маленький малиновый куст, бесплодный. Остерегайтесь шипов!" #: lang/json/terrain_from_json.py msgid "grape bush" @@ -126497,13 +128147,13 @@ msgstr "виноградный куст" #. ~ Description for grape bush #: lang/json/terrain_from_json.py msgid "A bush of a different species invaded by vines of grapes." -msgstr "" +msgstr "Куст какого-то растения, обвитый виноградной лозой." #. ~ Description for grape bush #: lang/json/terrain_from_json.py msgid "" "A bush of a different species invaded by grape vines but they're fruitless." -msgstr "" +msgstr "Куст какого-то растения, обвитый бесплодной виноградной лозой." #: lang/json/terrain_from_json.py msgid "rose bush" @@ -126515,12 +128165,16 @@ msgid "" "A fat bush of beautiful red roses, if only you could get a date! Watch out " "for its thorns!" msgstr "" +"Здоровый куст красивых красных роз, ах если бы вы могли пойти на свидание! " +"Остерегайтесь шипов!" #. ~ Description for rose bush #: lang/json/terrain_from_json.py msgid "" "A fat rose bush that currently has no blooms. Watch out for its thorns!" msgstr "" +"Здоровый розовый куст, который в настоящее время не цветет. Остерегайтесь " +"шипов!" #: lang/json/terrain_from_json.py msgid "hydrangea bush" @@ -126529,12 +128183,12 @@ msgstr "куст гортензии" #. ~ Description for hydrangea bush #: lang/json/terrain_from_json.py msgid "A fat, bush of fragrant blue hydrangeas." -msgstr "" +msgstr "Здоровый куст ароматных синих гортензий." #. ~ Description for hydrangea bush #: lang/json/terrain_from_json.py msgid "A fat hydrangea bush that currently has no blooms." -msgstr "" +msgstr "Здоровый куст синей гортензии, в настоящее время не цветет." #: lang/json/terrain_from_json.py msgid "lilac bush" @@ -126543,12 +128197,12 @@ msgstr "куст сирени" #. ~ Description for lilac bush #: lang/json/terrain_from_json.py msgid "A wide, bush of bright pinkish purple lilacs." -msgstr "" +msgstr "Широкий куст яркой розовато-фиолетовой сирени." #. ~ Description for lilac bush #: lang/json/terrain_from_json.py msgid "A wide lilac bush that currently has no blooms." -msgstr "" +msgstr "Широкий лиловый куст, который в настоящее время не имеет цветков." #: lang/json/terrain_from_json.py msgid "tree trunk" @@ -126591,7 +128245,7 @@ msgid "" "A tall fence made of woven wires. It doesn't suggest to stop, it just " "stops." msgstr "" -"Высокая ограда из сетки рабица. Он не предлагает остановиться, он просто " +"Высокая ограда из сетки рабица. Не предлагает остановиться, просто " "останавливает." #: lang/json/terrain_from_json.py @@ -126601,9 +128255,7 @@ msgstr "металлический столб" #. ~ Description for metal post #: lang/json/terrain_from_json.py msgid "Set of metal posts, that can hold more serious fences." -msgstr "" -"Комплект металлических столбов, которые могут держать более серьёзные " -"ограды." +msgstr "Комплект металлических столбов для поддержки более серьёзных оград." #: lang/json/terrain_from_json.py msgid "fence post" @@ -126614,8 +128266,7 @@ msgstr "столб ограды" msgid "" "A couple of posts that support the fence. They look alone without the " "fence." -msgstr "" -"Пара столбов, которые удерживают ограду. Они смотрятся одиноко без ограды." +msgstr "Пара столбов для поддержки ограды. Без ограды выглядят одиноко." #: lang/json/terrain_from_json.py msgid "wire fence" @@ -126638,7 +128289,7 @@ msgstr "ограда из колючей проволоки" msgid "" "A barrier made of sharp barbed wire. More persuasive brother of wire fence." msgstr "" -"Барьер из колючей проволоки. Более убедительный собрат проволочной ограды." +"Барьер из колючей проволоки. Более убедительный вариант проволочной ограды." #: lang/json/terrain_from_json.py msgid "rope fence" @@ -127040,7 +128691,7 @@ msgstr "закрытый колодец" msgid "" "Deep well collecting ground water. Requires a method to draw water from." msgstr "" -"Глубокий колодец, который накапливает грунтовые воды. Требуется способ для " +"Глубокий колодец, накапливающий грунтовые воды. Требуется способ для " "извлечения воды." #. ~ Description for water pump @@ -127049,8 +128700,8 @@ msgid "" "Deep well collecting ground water. Installed water pump allowes to draw " "water from it." msgstr "" -"Глубокий колодец, который накапливает грунтовые воды. Установлен водяной " -"насос, который позволяет извлечь воду." +"Глубокий колодец, накапливающий грунтовые воды. Установленный водяной насос " +"позволяет качать из него воду." #: lang/json/terrain_from_json.py msgid "improvised shelter" @@ -127144,7 +128795,8 @@ msgid "" "A floating temporary bridge, like the ones army used to make to cross " "rivers." msgstr "" -"Плавающий временный мост, как и армия, используется чтобы пересекать реки." +"Плавающий временный мост, типа тех, что применялись военными для пересечения" +" рек." #: lang/json/terrain_from_json.py msgid "bridge pavement" @@ -127427,7 +129079,7 @@ msgstr "точного забивания" msgid "wood sawing" msgstr "распиливания дерева" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "распиливания металла" @@ -127471,7 +129123,7 @@ msgstr "копания" msgid "bolt turning" msgstr "закручивания болтов" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "точного закручивания болтов" @@ -127505,7 +129157,7 @@ msgstr "поднятия домкратом" #: lang/json/tool_quality_from_json.py msgid "self jacking" -msgstr "" +msgstr "самоподнятия домкратом" #: lang/json/tool_quality_from_json.py msgid "chiseling" @@ -128179,7 +129831,7 @@ msgstr "погрузчик" #: lang/json/vehicle_from_json.py msgid "Ice Cream Cart" -msgstr "тележка с мороженным" +msgstr "тележка с мороженым" #: lang/json/vehicle_from_json.py msgid "Luggage Cart" @@ -128307,11 +129959,11 @@ msgstr "военный грузовик" #: lang/json/vehicle_from_json.py msgid "Engine Test" -msgstr "" +msgstr "Тест Двигателя" #: lang/json/vehicle_from_json.py msgid "Rapid Destruction" -msgstr "" +msgstr "Быстрое Уничтожение" #: lang/json/vehicle_from_json.py msgid "Cross Split" @@ -128321,6 +129973,14 @@ msgstr "" msgid "Circle Split" msgstr "" +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "" + #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" msgstr "безбортовый грузовик" @@ -128447,7 +130107,7 @@ msgstr "робо-такси" #: lang/json/vehicle_from_json.py msgid "Armored Robot Carrier" -msgstr "" +msgstr "Бронированный Робот-Перевозчик" #: lang/json/vehicle_from_json.py msgid "Atomic Mini-Tank" @@ -128507,8 +130167,8 @@ msgstr "откидывающееся сиденье" msgid "" "A place to sit, and the backrest reclines to make it an uncomfortable bed." msgstr "" -"Место, где можно сидеть, а спинка откидывается, чтобы сделать его неудобной " -"кроватью." +"Место, где можно сидеть. Спинка откидывается для превращения в неудобную " +"кровать." #: lang/json/vehicle_part_from_json.py msgid "tracking device" @@ -128531,7 +130191,7 @@ msgstr "складное сиденье" #. ~ Description for foldable seat #: lang/json/vehicle_part_from_json.py msgid "A crude seat, too uncomfortable to sleep in." -msgstr "Грубое сиденье, на нём неудобно спать тоже." +msgstr "Грубое сиденье, слишком неудобное, чтобы спать на нём." #. ~ Description for bed #: lang/json/vehicle_part_from_json.py @@ -128565,7 +130225,7 @@ msgstr "проход" #. ~ Description for wooden aisle #: lang/json/vehicle_part_from_json.py msgid "An aisle." -msgstr "Просто проход." +msgstr "Проход." #: lang/json/vehicle_part_from_json.py msgid "wooden aisle" @@ -128579,8 +130239,7 @@ msgstr "багажник в полу" #: lang/json/vehicle_part_from_json.py msgid "An aisle. A hatch lets you access a cargo space beneath it." msgstr "" -"Просто проход. Люк позволяет вам получить доступ к грузовому пространству " -"под ним." +"Проход. Люк позволяет вам получить доступ к грузовому пространству под ним." #: lang/json/vehicle_part_from_json.py msgid "cloth roof" @@ -128618,7 +130277,8 @@ msgstr "дверь" #: lang/json/vehicle_part_from_json.py msgid "A door. Has a window so you can see out of it, even when closed." msgstr "" -"Дверь. Имеет окно, так что можно смотреть через нее даже когда закрыта." +"Дверь. Имеется окно, так что можно смотреть через неё, даже когда она " +"закрыта." #: lang/json/vehicle_part_from_json.py msgid "opaque door" @@ -128766,8 +130426,8 @@ msgid "" "A small fridge. When turned on, it will cool the food inside, extended the " "time until the food spoils." msgstr "" -"Маленький холодильник. Когда включён, охлаждает помещённые в него продукты, " -"продлевая время до их порчи." +"Маленький холодильник. Когда включён, охлаждает помещённые в него продукты и" +" дольше не даёт им испортиться." #. ~ Description for washing machine #: lang/json/vehicle_part_from_json.py @@ -128866,9 +130526,9 @@ msgid "" "the proper key, and that will sound an alarm if you try. The alarm can be " "disabled." msgstr "" -"Эта куча электроники предназначена, чтобы осложнить запуск двигателя без " -"правильного ключа, и подаст сигнал тревоги, если вы попытаетесь это сделать." -" Сигнализацию можно попробовать отключить." +"Эта куча электроники осложняет запуск двигателя без правильного ключа и " +"подаёт сигнал тревоги, если вы попытаетесь это сделать. Сигнализацию можно " +"попробовать отключить." #: lang/json/vehicle_part_from_json.py msgid "5-point harness" @@ -128880,8 +130540,8 @@ msgid "" "A series of straps attached to the seat, intended to fasten together after " "going over your shoulders and hips and between your legs." msgstr "" -"Набор ремней, прикреплённых к сиденью, которые проходят по вашим плечам, " -"бёдрам и между ног, и затем соединяются вместе." +"Набор прикреплённых к сиденью ремней, которые проходят по вашим плечам, " +"бёдрам и между ног и затем застёгиваются." #: lang/json/vehicle_part_from_json.py msgid "curtain" @@ -128907,9 +130567,9 @@ msgid "" "A solar panel. Will slowly recharge the vehicle's electrical power when " "exposed to the sun. Clouds will slow the recharge speed even more." msgstr "" -"Солнечная панель. Когда на неё падает солнечный свет, она медленно " -"восстанавливает запас электроэнергии транспортного средства. Облачная погода" -" замедляет зарядку." +"Солнечная панель. Медленно восстанавливает запас электроэнергии " +"транспортного средства, когда на неё падает солнечный свет. Облачная погода " +"замедляет зарядку." #. ~ Description for reinforced solar panel #: lang/json/vehicle_part_from_json.py @@ -128918,10 +130578,10 @@ msgid "" "exposed to the sun. Clouds will slow the recharge speed even more. " "Reinforced with armored glass to make it more resistant to damage." msgstr "" -"Солнечная панель. Когда на неё падает солнечный свет, она медленно " -"восстанавливает запас электроэнергии транспортного средства. Облачная погода" -" замедляет зарядку. Усилена бронированным стеклом, чтобы лучше противостоять" -" повреждениям." +"Солнечная панель. Медленно восстанавливает запас электроэнергии " +"транспортного средства, когда на неё падает солнечный свет. Облачная погода " +"замедляет зарядку. Усилена бронированным стеклом, чтобы лучше противостоять " +"повреждениям." #. ~ Description for upgraded solar panel #: lang/json/vehicle_part_from_json.py @@ -128930,8 +130590,8 @@ msgid "" "electrical power when exposed to the sun. Clouds will slow the recharge " "speed even more." msgstr "" -"Высокопроизводительная солнечная панель. Когда на неё падает солнечный свет," -" она медленно восстанавливает запас электроэнергии транспортного средства. " +"Высокопроизводительная солнечная панель. Медленно восстанавливает запас " +"электроэнергии транспортного средства, когда на неё падает солнечный свет. " "Облачная погода замедляет зарядку." #. ~ Description for upgraded reinforced solar panel @@ -128942,8 +130602,8 @@ msgid "" "speed even more. Reinforced with armored glass to make it more resistant to" " damage." msgstr "" -"Высокопроизводительная солнечная панель. Когда на неё падает солнечный свет," -" она медленно восстанавливает запас электроэнергии транспортного средства. " +"Высокопроизводительная солнечная панель. Медленно восстанавливает запас " +"электроэнергии транспортного средства, когда на неё падает солнечный свет. " "Облачная погода замедляет зарядку. Усилена бронированным стеклом, чтобы " "лучше противостоять повреждениям." @@ -128954,15 +130614,14 @@ msgid "" "electrical power when exposed to the sun. Clouds will slow the recharge " "speed. Extremely fragile and cannot be armored." msgstr "" -"Солнечная панель с крайне высокой производительностью. Когда на неё падает " -"солнечный свет, она медленно восстанавливает запас электроэнергии " -"транспортного средства. Облачная погода замедляет зарядку. Очень хрупкая и " -"не может быть укреплена." +"Очень высокопроизводительная солнечная панель. Восстанавливает запас " +"электроэнергии транспортного средства, когда на неё падает солнечный свет. " +"Облачная погода замедляет зарядку. Очень хрупкая и не может быть укреплена." #. ~ Description for water faucet #: lang/json/vehicle_part_from_json.py msgid "A water faucet." -msgstr "Смеситель." +msgstr "Водопроводный кран." #: lang/json/vehicle_part_from_json.py msgid "kitchen unit" @@ -128989,11 +130648,11 @@ msgid "" " item or perform a repair that requires a welder, you will be given the " "option of using the welding rig." msgstr "" -"Автосварка для установки на транспорт, которая питается от автомобильных " -"аккумуляторов. Для неё всё равно требуется защита от бликов. Нажмите [e], " -"чтобы осмотреть тайл со сваркой и использовать её для починки предметов в " -"вашем инвентаре. Когда при изготовлении предметов или ремонте автомобиля " -"потребуется сварка, вы сможете выбрать автосварку." +"Автосварка, установленная на транспорт и запитанная от автомобильных " +"аккумуляторов. Всё ещё требуется защита от бликов. Нажмите [e], чтобы " +"осмотреть тайл со сваркой и использовать её для починки предметов в вашем " +"инвентаре. Вы можете выбрать автосварку в качестве инструмента, если при " +"изготовлении предмета или проведении ремонта требуется сварка." #. ~ Description for FOODCO kitchen buddy #: lang/json/vehicle_part_from_json.py @@ -129009,9 +130668,9 @@ msgstr "" " вакуумный упаковщик и ручной пресс для изготовления патронов. Питается от " "аккумуляторов на транспорте. Осмотрите тайл с кухонным помощником, нажав " "[e], чтобы воспользоваться краном с водой, или очистить воду в баках " -"автомобиля либо у вас в инвентаре. Если при крафте вам понадобиться одна из " -"функций помощника, она автоматически будет выбрана в качестве этого " -"инструмента." +"автомобиля либо у вас в инвентаре. Если при создании предметов вам " +"понадобится одна из функций помощника, он будет автоматически выбран в " +"качестве инструмента." #. ~ Description for onboard chemistry lab #: lang/json/vehicle_part_from_json.py @@ -129022,11 +130681,11 @@ msgid "" "that needs one of the chemistry lab's functions, it will automically be " "selected as a tool." msgstr "" -"Маленькая химическая станция, включающая электроплитку с питанием от батарей" -" на транспорте. Осмотрите тайл с химлабораторией, нажав [e], чтобы " -"воспользоватся краном с водой или разогреть еду на электроплитке. Если при " -"крафте вам понадобиться одна из функций химлаборатории, она автоматически " -"будет выбрана в качестве инструмента." +"Маленькая химическая станция с электроплиткой, запитанной от автомобильных " +"батарей. Осмотрите тайл с химлабораторией, нажав [e], чтобы воспользоваться " +"краном с водой или разогреть еду на электроплитке. Химлаборатория " +"автоматически выбирается в качестве инструмента, если вам требуется одна из " +"её функций при изготовлении предметов." #: lang/json/vehicle_part_from_json.py msgid "mounted electric forge" @@ -129040,10 +130699,10 @@ msgid "" "attempt craft an item that needs a forge, you will be given the option of " "selecting it as a tool." msgstr "" -"Электрокузня для работы с металлом, питающаяся от аккумуляторов на " -"транспорте. Вместе с молотком и другими инструментами, её можно использовать" -" для обработки металлов. Если при крафте, вам понадобится кузня, вы сможете " -"выбрать её в качестве инструмента." +"Электрокузня для работы с металлом, запитанная от автомобильных " +"аккумуляторов. Можно использовать для обработки металлов при наличии молотка" +" и других инструментов. Вы можете выбрать электрокузню в качестве " +"инструмента, если при изготовлении предмета требуется кузница." #: lang/json/vehicle_part_from_json.py msgid "mounted electric kiln" @@ -129058,8 +130717,8 @@ msgid "" "it as a tool." msgstr "" "Электрическая печь для обжига кирпичей или глины, питающаяся от " -"аккумуляторов на транспорте. Если при крафте вам понадобится печь для " -"обжига, вы сможете выбрать её в качестве инструмента." +"аккумуляторов на транспорте. Если при создании предметов вам понадобится " +"печь для обжига, вы сможете выбрать её в качестве инструмента." #: lang/json/vehicle_part_from_json.py msgid "wooden armor" @@ -129191,8 +130850,8 @@ msgid "" "selecting an animal to capture, choose its tile relative to you, not the " "part." msgstr "" -"Большое хранилище для транспортировки небольших животных. Осмотрите (по-" -"умолчанию \"e\") для помещения животного за Вами или выгрузки уже " +"Большое хранилище для транспортировки небольших животных. Осмотрите (по " +"умолчанию \"e\") для помещения рядом стоящего животного или выгрузки уже " "погруженного. При выборе животного для погрузки выберете тайл относительно " "Вас, не хранилища." @@ -129246,9 +130905,8 @@ msgid "" "A collection of electronic bells. Use the vehicle's controls to turn it on " "or off. When turned on, it makes noise, attracting neighborhood children." msgstr "" -"Коллекция электронных звонков. Используйте управление транспорта для " -"включения или выключения. При включении производит шум, привлекающий " -"соседских детей." +"Набор электронных звонков. Используйте управление транспорта для включения " +"или выключения. При включении производит шум, привлекающий соседских детей." #. ~ Description for jumper cable #: lang/json/vehicle_part_from_json.py @@ -129258,8 +130916,8 @@ msgid "" "two." msgstr "" "Толстый медный кабель с клеммами на обоих концах. Присоедините один конец к " -"одному автомобилю, другой к другому, и вы можете передавать энергию между " -"ними." +"одному автомобилю, второй ко другому, и вы сможете передавать электроэнергию" +" между ними." #. ~ Description for heavy-duty cable #: lang/json/vehicle_part_from_json.py @@ -129269,8 +130927,8 @@ msgid "" "between the two." msgstr "" "Очень толстый медный кабель с клеммами на обоих концах. Присоедините один " -"конец к одному автомобилю, другой к другому, и вы можете передавать энергию " -"между ними." +"конец к одному автомобилю, второй ко другому, и вы сможете передавать " +"электроэнергию между ними." #: lang/json/vehicle_part_from_json.py msgid "wooden seat" @@ -129363,11 +131021,11 @@ msgid "" "can 'e'xamine the tile or attempt to pick-up items (default ',') to access " "the controls, or use the vehicle control key (default '^')." msgstr "" -"LCD экран, подключенный к одной или несколько камер. Во включенном режиме " -"позволяет видеть через камеры, но потребляет энергию из батарей транспорта. " -"Вы можете \"e\" изучить тайл или поднять предметы(по-умолчанию \",\"), чтобы" -" получить доступ к управлению, или использовать клавишу управления (по " -"умолчанию «^»). " +"LCD экран, подключенный к одной или нескольким камерам. Во включенном режиме" +" позволяет смотреть через камеры, но потребляет энергию из батарей " +"транспорта. Вы можете \"e\" изучить тайл или поднять предметы(по-умолчанию " +"\",\"), чтобы получить доступ к управлению, или использовать клавишу " +"управления (по умолчанию «^»). " #. ~ Description for security camera #: lang/json/vehicle_part_from_json.py @@ -129387,12 +131045,13 @@ msgid "" "A set of controls to allow a vehicle to drive itself, or you to drive it " "remotely using a controller." msgstr "" -"Управление, позволяющий вести транспорт самому или удаленно с контроллером." +"Устройство, позволяющее транспорту управлять самим собой или управляться " +"дистанционно вами с помощью пульта." #. ~ Description for clock #: lang/json/vehicle_part_from_json.py msgid "A clock, so you know what time it is." -msgstr "Часы, что бы знать сколько времени." +msgstr "Часы, чтобы знать, который час." #. ~ Description for leather funnel #. ~ Description for makeshift funnel @@ -129413,9 +131072,9 @@ msgid "" " will scoop up any loose items that it travels over, putting them into the " "vehicle's storage." msgstr "" -"Отвал. Используется панель управления транспорта для включения или " -"выключения. При включении отвал черпает незакрепленные предметы, помещая их " -"в хранилище транспорта." +"Совок. Используйте панель управления транспортом для включения или " +"выключения. При включении совок черпает незакрепленные предметы по ходу " +"движения, помещая их в хранилище транспорта." #. ~ Description for water purifier #: lang/json/vehicle_part_from_json.py @@ -129451,11 +131110,11 @@ msgid "" "any plows on the vehicle, and any wheels should be placed so they won't run " "over the plants." msgstr "" -"Это сеялка. Используйте систему управления транспорта, чтобы включать и " -"выключать её. Когда включена, она будет выбрасывать семена по ходу движения " -"или сажать их во взрыхлённую почву. Если на транспорте есть плуг, она должна" -" находиться позади него, а колёса должны располагаться так, чтобы не ехать " -"по растениям." +"Это сеялка. Используйте систему управления транспорта для включения или " +"выключения. После включения будет выбрасывать семена по ходу движения или " +"сажать их во взрыхлённую почву. Если на транспорте есть плуг, сеялка должна " +"находиться позади него, а колёса должны располагаться так, чтобы не ехать по" +" растениям." #. ~ Description for reaper #: lang/json/vehicle_part_from_json.py @@ -129466,12 +131125,12 @@ msgid "" "include cargo space of its own so you need install a cargo space of some " "kind elsewhere in the vehicle." msgstr "" -"Автоматическая жатка. Используйте систему управления транспорта, чтобы " -"включать и выключать её. Во включённом состоянии она будет срезать растения," -" над которыми проходит. Для эффективной работы её следует устанавливать " -"впереди всех плугов на данном транспорте. У нее нет собственного грузового " -"пространства, так что вам нужно установаить какой-нибудь контейнер где-то " -"еще на этом транспорте." +"Автоматическая жатка. Используйте систему управления транспорта для " +"включения или выключения. Во включённом состоянии будет срезать растения под" +" собой. Для эффективной работы жатку следует устанавливать впереди всех " +"плугов на данном транспорте. У неё нет собственного грузового пространства, " +"так что вам нужно установить какой-нибудь контейнер где-то еще на этом " +"транспорте." #. ~ Description for advanced reaper #: lang/json/vehicle_part_from_json.py @@ -129482,11 +131141,12 @@ msgid "" "be placed in front of any plows in the vehicle for efficient operation. It " "has internal cargo space for collecting the harvest." msgstr "" -"Автоматическая жатка. Используйте систему управления транспорта, чтобы " -"включить или выключить её. Во включенном состоянии она будет срезать посевы " -"и помещать их в грузовые контейнеры транспорта. Для эффективной работы её " -"следует устанавливать впереди всех плугов транспорта. У неё есть внутренний " -"грузовой контейнер для сбора урожая." +"Автоматическая жатка. Используйте систему управления транспорта для " +"включения или выключения. Транспорт со включённой жаткой и без мощного " +"двигателя не сдвинется с места. Во включённом состоянии жатка будет срезать " +"растения под собой. Для эффективной работы жатку следует устанавливать " +"впереди всех плугов на данном транспорте. У неё есть внутренний грузовой " +"контейнер для сбора урожая." #: lang/json/vehicle_part_from_json.py msgid "cargo lock" @@ -129529,6 +131189,8 @@ msgid "" "A system of springs and pads, intended to cushion the effects of collisions " "on the interior of your vehicle." msgstr "" +"Система пружин и подушек, предназначенных для смягчения последствий " +"столкновений внутри вашего автомобиля." #. ~ Description for car battery #. ~ Description for storage battery @@ -129537,8 +131199,8 @@ msgid "" "A battery for storing electrical power, and discharging it to power " "electrical devices built into the vehicle." msgstr "" -"Батарея для хранения или отдачи электрической энергии. Питает встроенные " -"устройства в транспорт." +"Батарея для хранения или отдачи электрической энергии. Питает встроенные в " +"транспорт электроприборы." #: lang/json/vehicle_part_from_json.py msgid "swappable storage battery" @@ -129567,8 +131229,8 @@ msgid "" "A metal wall. Keeps zombies outside the vehicle and prevents people from " "seeing through it." msgstr "" -"Металлическая стена. Держит зомби вне транспорта и не позволяет быть " -"обнаруженным через них." +"Металлическая стена. Удерживает зомби снаружи транспорта и не позволяет " +"смотреть сквозь неё." #: lang/json/vehicle_part_from_json.py msgid "cloth board" @@ -129580,8 +131242,8 @@ msgid "" "A cloth wall. Keeps zombies outside the vehicle and prevents people from " "seeing through it." msgstr "" -"Тряпичная стена. Держит зомби вне транспорта и не позволяет быть " -"обнаруженным через них." +"Тряпичная стена. Удерживает зомби снаружи транспорта и не позволяет смотреть" +" сквозь неё." #: lang/json/vehicle_part_from_json.py msgid "cloth quarterpanel" @@ -129703,8 +131365,8 @@ msgid "" "Storage space, mounted outside your vehicle's armor and vulnerable to " "damage." msgstr "" -"Место для хранения, закрепленное на внешнем корпусе транспорта и " -"невосприимчивое для урона." +"Место для хранения, закрепленное на внешнем корпусе транспорта и уязвимое к " +"повреждениям." #: lang/json/vehicle_part_from_json.py msgid "external wire bike basket" @@ -129723,6 +131385,12 @@ msgid "" " any bike rack to mount that vehicle onto the bike rack. 'e'xamine the bike" " rack to unmount the carried vehicle." msgstr "" +"Набор труб и рамок для удерживания велосипеда или другого небольшого " +"транспортного средства и перевозки его на вашем автомобиле. Передвиньте ваш " +"однотайловый транспорт, чтобы все тайлы вашего автомобиля были рядом с " +"тайлами велосипеда, а затем нажмите «[e]xamine» на любом тайле велосипеда, " +"чтобы установить его на стойку для велосипедов. По прибытии, нажмите " +"«[e]xamine» на велосипедную стойку, чтобы снять перевозимый транспорт." #: lang/json/vehicle_part_from_json.py msgid "A combustion engine. Burns fuel from a tank in the vehicle." @@ -129734,15 +131402,15 @@ msgstr "Двигатель внутреннего сгорания. Сжигае #: lang/json/vehicle_part_from_json.py msgid "A combustion engine. Burns gasoline fuel from a tank in the vehicle." -msgstr "Двигатель внутреннего сгорания. Сжигает газ в баке транспорта." +msgstr "Двигатель внутреннего сгорания. Сжигает бензин в баке транспорта." #: lang/json/vehicle_part_from_json.py msgid "" "A closed cycle, external combustion steam engine. Burns coal from a bunker " "in the vehicle to produce steam." msgstr "" -"Внешний двигатель внутреннего сгорания замкнутого цикла. Сжигает уголь из " -"бункера для производства пара." +"Паровой двигатель внешнего сгорания с замкнутым циклом. Сжигает уголь из " +"бункера для получения пара." #: lang/json/vehicle_part_from_json.py msgid "boom crane" @@ -129759,6 +131427,12 @@ msgid "" " have line of sight to where it is going and it must be within four tiles of" " it." msgstr "" +"Крепкий стальной стреловидный кран. Автоматически используется для подъёма " +"другого транспортного средства (например, для замены колёс), если он " +"находится в вашей прямой видимости и в пределах двух тайлов от другого " +"автомобиля. При использовании для установки или снятия тяжёлых деталей " +"(например, двигателя) кран должен быть на одной линии с местом установки " +"детали и в пределах четырёх тайлов." #: lang/json/vehicle_part_from_json.py msgid "internal boom crane" @@ -129778,6 +131452,12 @@ msgid "" "crane must have line of sight to where it is going and it must be within " "four tiles of it." msgstr "" +"Выдвижной консольный кран. Автоматически используется для подъёма другого " +"транспортного средства (например, для замены колёс), если он находится в " +"вашей прямой видимости и в пределах двух тайлов от другого автомобиля. При " +"использовании для установки или снятия тяжёлых деталей (например, двигателя)" +" кран должен быть на одной линии с местом установки детали и в пределах " +"четырёх тайлов." #. ~ Description for pallet lifter #: lang/json/vehicle_part_from_json.py @@ -129788,6 +131468,12 @@ msgid "" " like an engine that you are installing or removing, the crane must have " "line of sight to where it is going and it must be within four tiles of it." msgstr "" +"Маленький подъемник для поддонов. Автоматически используется для подъёма " +"другого транспортного средства (например, для замены колёс), если он " +"находится в вашей прямой видимости и в пределах двух тайлов от другого " +"автомобиля. При использовании для установки или снятия тяжёлых деталей " +"(например, двигателя) кран должен быть на одной линии с местом установки " +"детали и в пределах четырёх тайлов." #: lang/json/vehicle_part_from_json.py msgid "forklift arm" @@ -129803,6 +131489,12 @@ msgid "" " have line of sight to where it is going and it must be within four tiles of" " it." msgstr "" +"Пара вилочных погрузчиков. Крепкий стальной кран. Автоматически используется" +" для подъёма другого транспортного средства (например, для замены колёс), " +"если он находится в вашей прямой видимости и в пределах двух тайлов от " +"другого автомобиля. При использовании для установки или снятия тяжёлых " +"деталей (например, двигателя) кран должен быть на одной линии с местом " +"установки детали и в пределах четырёх тайлов." #. ~ Description for rockwheel #: lang/json/vehicle_part_from_json.py @@ -129862,7 +131554,7 @@ msgid "" "can be attached to other frames to increase the vehicle's size." msgstr "" "Металлическая рама. На неё можно устанавливать другие детали, и её можно " -"соединять с другими рамами, чтобы увеличить размер транспортного средства." +"соединять с другими рамами для увеличения размера транспортного средства." #. ~ Description for wooden frame #: lang/json/vehicle_part_from_json.py @@ -129873,7 +131565,7 @@ msgid "" "without welding tools." msgstr "" "Деревянная рама. На неё можно устанавливать другие детали, и её можно " -"соединять с другими рамами, чтобы увеличить размер транспортного средства. " +"соединять с другими рамами для увеличения размера транспортного средства. " "Она изготовлена из дерева и гвоздей, поэтому её можно изготовить и " "присоединить к транспорту без использования сварочного оборудования." @@ -129886,7 +131578,7 @@ msgid "" " without welding tools or nails." msgstr "" "Лёгкая деревянная рама. На неё можно устанавливать другие детали, и её можно" -" соединять с другими рамами, чтобы увеличить размер транспортного средства. " +" соединять с другими рамами для увеличения размера транспортного средства. " "Она изготовлена из дерева и гвоздей, поэтому её можно изготовить и " "присоединить к транспорту без использования сварочного оборудования." @@ -129898,7 +131590,7 @@ msgid "" "Increased mass makes it more resistant to damage in collisions." msgstr "" "Тяжёлая металлическая рама. На неё можно устанавливать другие детали, и её " -"можно соединять с другими рамами, чтобы увеличить размер транспортного " +"можно соединять с другими рамами для увеличения размера транспортного " "средства. Увеличенная масса делает её устойчивее к повреждениям при " "столкновениях." @@ -129913,7 +131605,7 @@ msgid "" " it can be attached to other frames to increase the vehicle's size." msgstr "" "Лёгкая металлическая рама. На неё можно устанавливать другие детали, и её " -"можно соединять с другими рамами, чтобы увеличить размер транспортного " +"можно соединять с другими рамами для увеличения размера транспортного " "средства." #: lang/json/vehicle_part_from_json.py src/vehicle_use.cpp @@ -129926,8 +131618,8 @@ msgid "" "A bright light, self-powered by an atomic decay reaction that never stops. " "When turned on, it illuminates several squares inside the vehicle." msgstr "" -"Яркий светильник, работающий на реакции ядерного распада, которая никогда не" -" прекращается. Когда включён, освещает несколько клеток внутри автомобиля." +"Яркий светильник, работающий на непрекращающейся реакции ядерного распада. " +"Когда включён, освещает несколько клеток внутри автомобиля." #. ~ Description for atomic nightlight #: lang/json/vehicle_part_from_json.py @@ -129936,9 +131628,9 @@ msgid "" " When turned on, it illuminates a single square inside the vehicle that " "isn't suitable for crafting." msgstr "" -"Очень тусклый светильник, работающий на реакции ядерного распада, которая " -"никогда не прекращается. Когда включён, освещает единственную клетку внутри " -"автомобиля, не подходит для крафта." +"Очень тусклый светильник, работающий на непрекращающейся реакции ядерного " +"распада. Когда включён, освещает единственную клетку внутри автомобиля. Для " +"изготовления предметов такого света недостаточно." #. ~ Description for floodlight #: lang/json/vehicle_part_from_json.py @@ -129961,10 +131653,10 @@ msgid "" "light, so multiple headlights can illuminate the sides or rear, as well as " "the front." msgstr "" -"Яркая фара, которая освещает узкий конус пространства снаружи автомобиля, " -"когда включена. При установке можно выбрать, куда она будет направлена, так " -"что несколькими фарами можно осветить пространство не только спереди, но " -"также по бокам и позади автомобиля." +"Яркая фара, освещает узкий конус пространства снаружи автомобиля при " +"включении. При установке можно выбрать, куда она будет направлена, так что " +"несколькими фарами можно осветить пространство не только спереди, но также " +"по бокам и позади автомобиля." #: lang/json/vehicle_part_from_json.py msgid "" @@ -130069,7 +131761,7 @@ msgid "" "increase the damage the vehicle delivers in collisions. Mount on the edges " "of the vehicle, preferably the front." msgstr "" -"Дисковый нож с приводом от двигателя автомобиля. Значительно увеличивает " +"Дисковое лезвие с приводом от двигателя автомобиля. Значительно увеличивает " "урон, наносимый автомобилем при столкновениях. Устанавливается на края " "транспортного средства, лучше всего спереди." @@ -130092,8 +131784,8 @@ msgid "" msgstr "" "Контейнер для жидкостей. Если его наполнить подходящим топливом для " "двигателя автомобиля, двигатель при работе будет автоматически расходовать " -"топливо из бака. Если он наполнен водой, можно получить воду из крана, если " -"он установлен на этом транспорте. Жидкости также можно сливать из бака с " +"топливо из бака. Если бак наполнен водой, можно получить воду из крана при " +"его наличии на этом транспорте. Жидкости также можно сливать из бака с " "помощью резинового шланга." #: lang/json/vehicle_part_from_json.py @@ -130125,7 +131817,7 @@ msgstr "" "Контейнер для жидкостей, устанавливаемый снаружи, за бортами транспортного " "средства. Если его наполнить подходящим топливом для двигателя автомобиля, " "двигатель при работе будет автоматически расходовать топливо из бака. Если " -"он наполнен водой, можно получить воду из крана, если он установлен на этом " +"бак наполнен водой, можно получить воду из крана при его наличии на этом " "транспорте. Жидкости также можно сливать из бака с помощью резинового " "шланга." @@ -130305,7 +131997,7 @@ msgstr "Деревянное колесо." #: lang/json/vehicle_part_from_json.py msgid "hand paddles" -msgstr "плавники" +msgstr "вёсла" #: lang/json/vehicle_part_from_json.py msgid "folding extra light quarterpanel" @@ -130350,6 +132042,10 @@ msgid "" "you, or to release the robot currently contained. When selecting a robot to" " capture, choose its tile relative to you, not the part." msgstr "" +"Грузовое пространство для перевозки роботов. [e]xamine, чтобы захватить " +"робота рядом с вами или освободить находящийся в нем робот. При выборе " +"робота для захвата выберите ближайший его тайл по отношению к вам, а не " +"любую часть." #: lang/json/vehicle_part_from_json.py msgid "120mm tank gun (AL)" @@ -130387,43 +132083,43 @@ msgstr "" #: lang/json/vehicle_part_from_json.py msgid "TDI Vector turret" -msgstr "" +msgstr "TDI Vector турель" #: lang/json/vehicle_part_from_json.py msgid "automated TDI Vector" -msgstr "" +msgstr "автоматизированный TDI Vector" #: lang/json/vehicle_part_from_json.py msgid "storm bolter turret" -msgstr "" +msgstr "штормовая болт-турель" #: lang/json/vehicle_part_from_json.py msgid "automated storm bolter" -msgstr "" +msgstr "автоматизированный штормовой болтер" #: lang/json/vehicle_part_from_json.py msgid "slingshot cannon turret" -msgstr "" +msgstr "рогаточная турель" #: lang/json/vehicle_part_from_json.py msgid "automated slingshot cannon" -msgstr "" +msgstr "автоматическая рогаточная турель" #: lang/json/vehicle_part_from_json.py msgid "Bushmaster ACR turret" -msgstr "" +msgstr "Bushmaster ACR турель" #: lang/json/vehicle_part_from_json.py msgid "automated Bushmaster ACR" -msgstr "" +msgstr "автоматическая Bushmaster ACR турель" #: lang/json/vehicle_part_from_json.py msgid "rotary cannon turret" -msgstr "" +msgstr "вращающаяся турель" #: lang/json/vehicle_part_from_json.py msgid "automated rotary cannon" -msgstr "" +msgstr "автоматизированная вращающаяся пушка" #: lang/json/vehicle_part_from_json.py msgid "AK47 turret" @@ -130451,7 +132147,7 @@ msgstr "American-180 турель" #: lang/json/vehicle_part_from_json.py msgid "automated American-180" -msgstr "автоматический American-180" +msgstr "автоматизированный American-180" #: lang/json/vehicle_part_from_json.py msgid "AN94 turret" @@ -130463,7 +132159,7 @@ msgstr "турель из перфоратора" #: lang/json/vehicle_part_from_json.py msgid "automated perforator" -msgstr "автоматический перфоратор" +msgstr "автоматизированный перфоратор" #: lang/json/vehicle_part_from_json.py msgid "needler turret" @@ -130471,43 +132167,43 @@ msgstr "турель-иглострел" #: lang/json/vehicle_part_from_json.py msgid "automated needler" -msgstr "автоматический иглострел" +msgstr "автоматизированный иглострел" #: lang/json/vehicle_part_from_json.py msgid "AR-15 turret" -msgstr "" +msgstr "AR-15 турель" #: lang/json/vehicle_part_from_json.py msgid "automated AR-15" -msgstr "" +msgstr "автоматизированная AR-15 турель" #: lang/json/vehicle_part_from_json.py msgid "hypervelocity driver turret" -msgstr "" +msgstr "рельсо-турель" #: lang/json/vehicle_part_from_json.py msgid "ripper turret" -msgstr "" +msgstr "турель-потрошитель" #: lang/json/vehicle_part_from_json.py msgid "automated ripper" -msgstr "" +msgstr "автоматизированный потрошитель" #: lang/json/vehicle_part_from_json.py msgid "scorpion turret" -msgstr "" +msgstr "скорпион-турель" #: lang/json/vehicle_part_from_json.py msgid "automated scorpion" -msgstr "" +msgstr "автоматизированный скорпион" #: lang/json/vehicle_part_from_json.py msgid "splintergun turret" -msgstr "" +msgstr "осколочная турель" #: lang/json/vehicle_part_from_json.py msgid "automated splintergun" -msgstr "" +msgstr "автоматизированная осколочная пушка" #: lang/json/vehicle_part_from_json.py msgid "tesla turret" @@ -130515,211 +132211,211 @@ msgstr "тесла-турель" #: lang/json/vehicle_part_from_json.py msgid "avalanche turret" -msgstr "" +msgstr "лавинная турель" #: lang/json/vehicle_part_from_json.py msgid "automated avalanche" -msgstr "" +msgstr "автоматизированная лавина" #: lang/json/vehicle_part_from_json.py msgid "autoshotgun turret" -msgstr "" +msgstr "турель с автоматическим дробовиком" #: lang/json/vehicle_part_from_json.py msgid "automated autoshotgun" -msgstr "" +msgstr "автоматизированный дробовик" #: lang/json/vehicle_part_from_json.py msgid "blunderbuss turret" -msgstr "" +msgstr "турель-мушкетон" #: lang/json/vehicle_part_from_json.py msgid "automated blunderbuss" -msgstr "" +msgstr "автоматизированный мушкетон" #: lang/json/vehicle_part_from_json.py msgid "Browning BLR turret" -msgstr "" +msgstr "турель BLR Browning" #: lang/json/vehicle_part_from_json.py msgid "Calico M960 turret" -msgstr "" +msgstr "Calico M960 турель" #: lang/json/vehicle_part_from_json.py msgid "automated Calico M960" -msgstr "" +msgstr "автоматизированная Calico M960" #: lang/json/vehicle_part_from_json.py msgid "flintlock carbine turret" -msgstr "" +msgstr "турель с кремнёвым карабином" #: lang/json/vehicle_part_from_json.py msgid "automated flintlock carbine" -msgstr "" +msgstr "автоматизированный кремневой карабин" #: lang/json/vehicle_part_from_json.py msgid "coilgun turret" -msgstr "" +msgstr "гаусс-турель" #: lang/json/vehicle_part_from_json.py msgid "automated coilgun" -msgstr "" +msgstr "автоматизированная гаусс-пушка" #: lang/json/vehicle_part_from_json.py msgid "lacerator turret" -msgstr "" +msgstr "турель-протыкатель" #: lang/json/vehicle_part_from_json.py msgid "automated lacerator" -msgstr "" +msgstr "автоматизированный протыкатель" #: lang/json/vehicle_part_from_json.py msgid "Cx4 Storm turret" -msgstr "" +msgstr "Cx4 Storm турель" #: lang/json/vehicle_part_from_json.py msgid "automated Cx4 Storm" -msgstr "" +msgstr "автоматизированная Cx4 Storm турель" #: lang/json/vehicle_part_from_json.py msgid "simple flamethrower turret" -msgstr "" +msgstr "простая огнеметная турель" #: lang/json/vehicle_part_from_json.py msgid "flamethrower turret" -msgstr "" +msgstr "огнеметная турель" #: lang/json/vehicle_part_from_json.py msgid "RM451 flamethrower turret" -msgstr "" +msgstr "RM451 огнеметная турель" #: lang/json/vehicle_part_from_json.py msgid "FN FAL turret" -msgstr "" +msgstr "FN FAL турель" #: lang/json/vehicle_part_from_json.py msgid "automated FN FAL" -msgstr "" +msgstr "автоматизированный FN FAL" #: lang/json/vehicle_part_from_json.py msgid "FN P90 turret" -msgstr "" +msgstr "FN P90 турель" #: lang/json/vehicle_part_from_json.py msgid "H&K 416A5 turret" -msgstr "" +msgstr "H&K 416A5 турель" #: lang/json/vehicle_part_from_json.py msgid "automated H&K 416A5" -msgstr "" +msgstr "автоматизированный H&K 416A5" #: lang/json/vehicle_part_from_json.py msgid "heavy rail rifle turret" -msgstr "" +msgstr "тяжёлая рельсовая турель" #: lang/json/vehicle_part_from_json.py msgid "H&K G3 turret" -msgstr "" +msgstr "H&K G3 турель" #: lang/json/vehicle_part_from_json.py msgid "H&K G36 turret" -msgstr "" +msgstr "H&K G36 турель" #: lang/json/vehicle_part_from_json.py msgid "automated H&K G36" -msgstr "" +msgstr "автоматизированный H&K G36" #: lang/json/vehicle_part_from_json.py msgid "automated H&K G3" -msgstr "" +msgstr "автоматизированный H&K G3" #: lang/json/vehicle_part_from_json.py msgid "H&K G80 turret" -msgstr "" +msgstr "H&K G80 турель" #: lang/json/vehicle_part_from_json.py msgid "H&K MP5 turret" -msgstr "" +msgstr "H&K MP5 турель" #: lang/json/vehicle_part_from_json.py msgid "automated H&K MP5" -msgstr "" +msgstr "автоматизированный H&K MP5" #: lang/json/vehicle_part_from_json.py msgid "H&K MP7 turret" -msgstr "" +msgstr "H&K MP7 турель" #: lang/json/vehicle_part_from_json.py msgid "H&K UMP45 turret" -msgstr "" +msgstr "H&K UMP45 турель" #: lang/json/vehicle_part_from_json.py msgid "automated H&K UMP45" -msgstr "" +msgstr "автоматизированный H&K UMP45" #: lang/json/vehicle_part_from_json.py msgid "Kel-Tec KSG turret" -msgstr "" +msgstr "Kel-Tec KSG турель" #: lang/json/vehicle_part_from_json.py msgid "automated Kel-Tec KSG" -msgstr "" +msgstr "автоматизированный Kel-Tec KSG" #: lang/json/vehicle_part_from_json.py msgid "L523 turret" -msgstr "" +msgstr "L523 турель" #: lang/json/vehicle_part_from_json.py msgid "automated L523" -msgstr "" +msgstr "автоматизированный L523" #: lang/json/vehicle_part_from_json.py msgid "L523-CAR turret" -msgstr "" +msgstr "L523-CAR турель" #: lang/json/vehicle_part_from_json.py msgid "automated L523-CAR" -msgstr "" +msgstr "автоматизированная L523-CAR" #: lang/json/vehicle_part_from_json.py msgid "L12 Defender turret" -msgstr "" +msgstr "L12 Defender турель" #: lang/json/vehicle_part_from_json.py msgid "automated L12 Defender" -msgstr "" +msgstr "автоматизированный L12 Defender" #: lang/json/vehicle_part_from_json.py msgid "L523-DSR turret" -msgstr "" +msgstr "L523-DSR турель" #: lang/json/vehicle_part_from_json.py msgid "automated L523-DSR" -msgstr "" +msgstr "автоматизированный L523-DSR" #: lang/json/vehicle_part_from_json.py msgid "L523-LMG turret" -msgstr "" +msgstr "L523-LMG турель" #: lang/json/vehicle_part_from_json.py msgid "automated L523-LMG" -msgstr "" +msgstr "автоматизированный L523-LMG" #: lang/json/vehicle_part_from_json.py msgid "Long Ranger turret" -msgstr "" +msgstr "Long Ranger турель" #: lang/json/vehicle_part_from_json.py msgid "automated Long Ranger" -msgstr "" +msgstr "автоматизированный Long Ranger" #: lang/json/vehicle_part_from_json.py msgid "L523-MBR turret" -msgstr "" +msgstr "L523-MBR турель" #: lang/json/vehicle_part_from_json.py msgid "automated L523-MBR" -msgstr "" +msgstr "автоматизированная L523-MBR" #: lang/json/vehicle_part_from_json.py msgid "40mm launcher turret" @@ -130727,51 +132423,51 @@ msgstr "40 мм гранатомётная турель" #: lang/json/vehicle_part_from_json.py msgid "M1014 shotgun turret" -msgstr "" +msgstr "турель с дробовиком M1014" #: lang/json/vehicle_part_from_json.py msgid "automated M1014 shotgun" -msgstr "" +msgstr "автоматизированный дробовик M1014" #: lang/json/vehicle_part_from_json.py msgid "Barrett M107A1 turret" -msgstr "" +msgstr "Barrett M107A1 турель" #: lang/json/vehicle_part_from_json.py msgid "automated Barrett M107A1" -msgstr "" +msgstr "автоматизированный Barrett M107A1" #: lang/json/vehicle_part_from_json.py msgid "M14-EBR turret" -msgstr "" +msgstr "M14-EBR турель" #: lang/json/vehicle_part_from_json.py msgid "automated M14-EBR" -msgstr "" +msgstr "автоматизированный M14-EBR" #: lang/json/vehicle_part_from_json.py msgid "M1A turret" -msgstr "" +msgstr "M1A турель" #: lang/json/vehicle_part_from_json.py msgid "automated M1A" -msgstr "" +msgstr "автоматизированная M1A" #: lang/json/vehicle_part_from_json.py msgid "M2010 ESR turret" -msgstr "" +msgstr "M2010 ESR турель" #: lang/json/vehicle_part_from_json.py msgid "M27 IAR turret" -msgstr "" +msgstr "M27 IAR турель" #: lang/json/vehicle_part_from_json.py msgid "automated M27 IAR" -msgstr "" +msgstr "автоматизированная M27 IAR" #: lang/json/vehicle_part_from_json.py msgid ".50 caliber turret" -msgstr "" +msgstr ".50 калибр турель" #: lang/json/vehicle_part_from_json.py msgid "automated .50 caliber rifle" @@ -130779,99 +132475,99 @@ msgstr ".50 винтовка" #: lang/json/vehicle_part_from_json.py msgid "M320 turret" -msgstr "" +msgstr "M320 турель" #: lang/json/vehicle_part_from_json.py msgid "M4A1 turret" -msgstr "" +msgstr "M4A1 турель" #: lang/json/vehicle_part_from_json.py msgid "automated M4A1" -msgstr "" +msgstr "автоматизированная M4A1 " #: lang/json/vehicle_part_from_json.py msgid "M60 turret" -msgstr "" +msgstr "M60 турель" #: lang/json/vehicle_part_from_json.py msgid "automated M60" -msgstr "" +msgstr "автоматизированная M60" #: lang/json/vehicle_part_from_json.py msgid "M79 turret" -msgstr "" +msgstr "M79 турель" #: lang/json/vehicle_part_from_json.py msgid "MAC-10 turret" -msgstr "" +msgstr "MAC-10 турель" #: lang/json/vehicle_part_from_json.py msgid "automated MAC-10" -msgstr "" +msgstr "автоматизированный MAC-10" #: lang/json/vehicle_part_from_json.py msgid "Marlin 39A turret" -msgstr "" +msgstr "Marlin 39A турель" #: lang/json/vehicle_part_from_json.py msgid "automated Marlin 39A" -msgstr "" +msgstr "автоматизированная Marlin 39A" #: lang/json/vehicle_part_from_json.py msgid "Milkor MGL turret" -msgstr "" +msgstr "Milkor MGL турель" #: lang/json/vehicle_part_from_json.py msgid "Mossberg 500 turret" -msgstr "" +msgstr "Mossberg 500 турель" #: lang/json/vehicle_part_from_json.py msgid "automated Mossberg 500" -msgstr "" +msgstr "автоматизированный Mossberg 500" #: lang/json/vehicle_part_from_json.py msgid "nail rifle turret" -msgstr "" +msgstr "гвоздестрельная турель" #: lang/json/vehicle_part_from_json.py msgid "automated nail rifle" -msgstr "" +msgstr "автоматизированное гвоздеметательное ружье" #: lang/json/vehicle_part_from_json.py msgid "RM216 SPIW turret" -msgstr "" +msgstr "RM216 SPIW турель" #: lang/json/vehicle_part_from_json.py msgid "double pipe shotgun turret" -msgstr "" +msgstr "турель с самодельной двустволкой" #: lang/json/vehicle_part_from_json.py msgid "automated double pipe shotgun" -msgstr "" +msgstr "автоматизированная самодельная двустволка" #: lang/json/vehicle_part_from_json.py msgid "pipe shotgun turret" -msgstr "" +msgstr "турель с самодельным дробовиком" #: lang/json/vehicle_part_from_json.py msgid "automated pipe shotgun" -msgstr "" +msgstr "автоматизированный самодельный дробовик" #: lang/json/vehicle_part_from_json.py msgid "rail rifle turret" -msgstr "" +msgstr "рельсовая турель" #: lang/json/vehicle_part_from_json.py msgid "Remington 700 turret" -msgstr "" +msgstr "Remington 700 турель" #: lang/json/vehicle_part_from_json.py msgid "Remington 870 turret" -msgstr "" +msgstr "Remington 870 турель" #: lang/json/vehicle_part_from_json.py msgid "automated Remington 870" -msgstr "" +msgstr "автоматизированный Remington 870" #: lang/json/vehicle_part_from_json.py msgid "repeating crossbow turret" @@ -130879,183 +132575,183 @@ msgstr "многозарядная арбалетная турель" #: lang/json/vehicle_part_from_json.py msgid "automated repeating crossbow" -msgstr "автоматический многозарядный арбалет" +msgstr "автоматизированный многозарядный арбалет" #: lang/json/vehicle_part_from_json.py msgid "revolver shotgun turret" -msgstr "" +msgstr "турель с револьверным дробовиком" #: lang/json/vehicle_part_from_json.py msgid "automated revolver shotgun" -msgstr "" +msgstr "автоматизированный револьверный дробовик" #: lang/json/vehicle_part_from_json.py msgid ".22 pipe rifle turret" -msgstr "" +msgstr "турель с самодельной винтовкой .22 калибра" #: lang/json/vehicle_part_from_json.py msgid "automated .22 pipe rifle" -msgstr "" +msgstr "автоматизированная самодельная винтовка .22 калибра" #: lang/json/vehicle_part_from_json.py msgid ".308 pipe rifle turret" -msgstr "" +msgstr "турель с самодельной винтовкой .308 калибра" #: lang/json/vehicle_part_from_json.py msgid "automated .308 pipe rifle" -msgstr "" +msgstr "автоматизированная самодельная винтовка .308 калибра" #: lang/json/vehicle_part_from_json.py msgid "9x19mm pipe rifle turret" -msgstr "" +msgstr "турель с самодельная винтовкой 9x19 мм" #: lang/json/vehicle_part_from_json.py msgid "automated 9x19mm pipe rifle" -msgstr "" +msgstr "автоматизированная самодельная винтовка 9x19 мм" #: lang/json/vehicle_part_from_json.py msgid "flintlock rifle turret" -msgstr "" +msgstr "турель с кремнёвым карабином" #: lang/json/vehicle_part_from_json.py msgid "automated flintlock rifle" -msgstr "" +msgstr "автоматизированный кремнёвый карабин" #: lang/json/vehicle_part_from_json.py msgid "RM11B scout rifle turret" -msgstr "" +msgstr "турель с винтовкой разведчика RM11B" #: lang/json/vehicle_part_from_json.py msgid "RM2000 SMG turret" -msgstr "" +msgstr "RM2000 ПП-турель" #: lang/json/vehicle_part_from_json.py msgid "RM360 carbine turret" -msgstr "" +msgstr "турель с карабином RM360" #: lang/json/vehicle_part_from_json.py msgid "automated RM360 carbine" -msgstr "" +msgstr "автоматизированный карабин RM360" #: lang/json/vehicle_part_from_json.py msgid "RM51 assault rifle turret" -msgstr "" +msgstr "турель с штурмовой винтовкой RM51" #: lang/json/vehicle_part_from_json.py msgid "RM614 LMG turret" -msgstr "" +msgstr "турель с ручным пулеметом RM614" #: lang/json/vehicle_part_from_json.py msgid "RM802 turret" -msgstr "" +msgstr "RM802 турель" #: lang/json/vehicle_part_from_json.py msgid "RM88 battle rifle turret" -msgstr "" +msgstr "турель с боевой винтовкой RM88" #: lang/json/vehicle_part_from_json.py msgid "rotary speargun turret" -msgstr "" +msgstr "турель с вращающимся гарпунным ружьём" #: lang/json/vehicle_part_from_json.py msgid "automated rotary speargun" -msgstr "" +msgstr "автоматизированное вращающееся гарпунное ружье" #: lang/json/vehicle_part_from_json.py msgid "Ruger 10/22 turret" -msgstr "" +msgstr "Ruger 10/22 турель" #: lang/json/vehicle_part_from_json.py msgid "automated Ruger 10/22" -msgstr "" +msgstr "автоматизированный Ruger 10/22" #: lang/json/vehicle_part_from_json.py msgid "Ruger mini-14 turret" -msgstr "" +msgstr "Ruger mini-14 турель" #: lang/json/vehicle_part_from_json.py msgid "automated Ruger mini-14" -msgstr "" +msgstr "автоматизированный Ruger mini-14" #: lang/json/vehicle_part_from_json.py msgid "Saiga 12 turret" -msgstr "" +msgstr "Сайга-12 турель" #: lang/json/vehicle_part_from_json.py msgid "automated Saiga 12" -msgstr "" +msgstr "автоматизированная Сайга-12" #: lang/json/vehicle_part_from_json.py msgid "Savage 111F turret" -msgstr "" +msgstr "Savage 111F турель" #: lang/json/vehicle_part_from_json.py msgid "automated Savage 111F" -msgstr "" +msgstr "автоматизированный Savage 111F" #: lang/json/vehicle_part_from_json.py msgid "FN SCAR-H turret" -msgstr "" +msgstr "FN SCAR-H турель" #: lang/json/vehicle_part_from_json.py msgid "automated FN SCAR-H" -msgstr "" +msgstr "автоматизированный FN SCAR-H" #: lang/json/vehicle_part_from_json.py msgid "FN SCAR-L turret" -msgstr "" +msgstr "FN SCAR-L турель" #: lang/json/vehicle_part_from_json.py msgid "automated FN SCAR-L" -msgstr "" +msgstr "автоматизированный FN SCAR-L" #: lang/json/vehicle_part_from_json.py msgid "double shotgun turret" -msgstr "" +msgstr "турель-двустволка" #: lang/json/vehicle_part_from_json.py msgid "automated double shotgun" -msgstr "" +msgstr "автоматизированная двустволка" #: lang/json/vehicle_part_from_json.py msgid "single shotgun turret" -msgstr "" +msgstr "турель с дробовиком" #: lang/json/vehicle_part_from_json.py msgid "automated single shotgun" -msgstr "" +msgstr "автоматизированный дробовик" #: lang/json/vehicle_part_from_json.py msgid "SKS turret" -msgstr "" +msgstr "SKS турель" #: lang/json/vehicle_part_from_json.py msgid "speargun turret" -msgstr "" +msgstr "турель с гарпунным ружьём" #: lang/json/vehicle_part_from_json.py msgid "automated speargun" -msgstr "" +msgstr "автоматизированное гарпунное ружье" #: lang/json/vehicle_part_from_json.py msgid "Steyr AUG turret" -msgstr "" +msgstr "Steyr AUG турель" #: lang/json/vehicle_part_from_json.py msgid "automated Steyr AUG" -msgstr "" +msgstr "автоматизированный Steyr AUG" #: lang/json/vehicle_part_from_json.py msgid "223 carbine turret" -msgstr "" +msgstr "турель с 223 карабином" #: lang/json/vehicle_part_from_json.py msgid "automated 223 carbine" -msgstr "" +msgstr "автоматизированный 223 карабин" #: lang/json/vehicle_part_from_json.py msgid "survivor special turret" -msgstr "" +msgstr "специальная турель выживальщика" #: lang/json/vehicle_part_from_json.py msgid "TEC-9 turret" @@ -131063,7 +132759,7 @@ msgstr "турель с TEC-9" #: lang/json/vehicle_part_from_json.py msgid "automated TEC-9" -msgstr "" +msgstr "автоматизированный TEC-9" #: lang/json/vehicle_part_from_json.py msgid "Uzi turret" @@ -131071,15 +132767,15 @@ msgstr "турель с Узи" #: lang/json/vehicle_part_from_json.py msgid "automated Uzi" -msgstr "" +msgstr "автоматизированный Uzi" #: lang/json/vehicle_part_from_json.py msgid "V29 laser turret" -msgstr "" +msgstr "V29 лазерная турель" #: lang/json/vehicle_part_from_json.py msgid "LACP laser turret" -msgstr "" +msgstr "LACP лазерная турель" #. ~ Description for Gelatinous track #: lang/json/vehicle_part_from_json.py @@ -131087,12 +132783,15 @@ msgid "" "A set of continuous, interlocking tracks made out of blob. They can be used " "in place of wheels, and provide good traction and off-road performance." msgstr "" +"Набор непрерывных, взаимосвязанных траков, сделанных из сгустков. Они могут " +"быть установлены вместо колес и обеспечивают хорошее сцепление с землей, а " +"также отлично подходят для езды по бездорожью." #. ~ Description for gel shooter #. ~ Description for snapping ooze #: lang/json/vehicle_part_from_json.py msgid "A living blob, transformed into a heavy vehicle weapon." -msgstr "" +msgstr "Живой сгусток, превращенный в тяжелое автомобильное орудие." #. ~ Description for frost lancer #: lang/json/vehicle_part_from_json.py @@ -131100,10 +132799,12 @@ msgid "" "A living blob, existing in a super-cooled state and transformed into a heavy" " vehicle weapon." msgstr "" +"Живой сгусток, пребывающий в супер-охлажденном состоянии и превращенный в " +"тяжелое автомобильное орудие." #: lang/json/vehicle_part_from_json.py msgid "ice ram" -msgstr "" +msgstr "ледяной таран" #. ~ Description for ice ram #: lang/json/vehicle_part_from_json.py @@ -131113,10 +132814,13 @@ msgid "" "collision. It should be mounted on the edge of the vehicle, preferably the " "front." msgstr "" +"Живой сгусток, пребывающий в супер-охлажденном состоянии. Он будет поглощать" +" ваш урон в месте столкновения и наносить урон сталкиваемому объекту. Должен" +" быть монтирован на краю транспортного средства, желательно спереди." #: lang/json/vehicle_part_from_json.py msgid "ice pack" -msgstr "" +msgstr "ледяной пакет" #. ~ Description for ice pack #: lang/json/vehicle_part_from_json.py @@ -131124,10 +132828,12 @@ msgid "" "A living blob, existing in a super-cooled state. It will keep items stored " "in it cold, reducing the speed at which food and drink rots." msgstr "" +"Живой сгусток, пребывающий в супер-охлажденном состоянии. Он будет сохранять" +" ваши вещи в холоде, снижая скорость порчи еды и питья." #: lang/json/vehicle_part_from_json.py msgid "icy windshield" -msgstr "" +msgstr "ледяное лобовое стекло" #. ~ Description for icy windshield #: lang/json/vehicle_part_from_json.py @@ -131135,25 +132841,31 @@ msgid "" "A living blob, existing in a super-cooled state. It is transparent, and can" " be used to see out of the vehicle." msgstr "" +"Живой сгусток, пребывающий в супер-охлажденном состоянии. Он прозрачен и " +"может использоваться вместо окон в машине." #: lang/json/vehicle_part_from_json.py msgid "snow slider" -msgstr "" +msgstr "автомобильная лыжа" #. ~ Description for snow slider #: lang/json/vehicle_part_from_json.py msgid "A living blob, existing in a super-cooled state. It acts as a wheel." msgstr "" +"Живой сгусток, пребывающий в супер-охлажденном состоянии. Работает как " +"колесо." #: lang/json/vehicle_part_from_json.py msgid "icy sea skimmer" -msgstr "" +msgstr "ледяной водорез" #. ~ Description for icy sea skimmer #: lang/json/vehicle_part_from_json.py msgid "" "A living blob, existing in a super-cooled state. It acts as a boat board." msgstr "" +"Живой сгусток, пребывающий в супер-охлажденном состоянии. Работает как " +"водная доска." #: lang/json/vehicle_part_from_json.py msgid "gel lamp" @@ -131167,14 +132879,18 @@ msgid "" "can choose what direction to point the light, so multiple gel lamps can " "illuminate the sides or rear, as well as the front." msgstr "" +"Живой, светящийся сгусток. Он производит яркий свет, который освещает узкое " +"пространство снаружи автомобиля, если включен. Во время установки вы можете " +"выбрать в каком направлении будет излучаться свет, так что несколько " +"желейных ламп могут освещать пространство не только спереди, но и сзади." #: lang/json/vehicle_part_from_json.py msgid "directed gel lamp" -msgstr "" +msgstr "направленная желейная лампа" #: lang/json/vehicle_part_from_json.py msgid "gel retriever" -msgstr "" +msgstr "желейный собиратель" #. ~ Description for gel retriever #. ~ Description for gray retriever @@ -131185,6 +132901,9 @@ msgid "" "it on or off. When turned on, it will scoop up any loose items that it " "travels over, putting them into the vehicle's storage." msgstr "" +"Живой сгусток в форме совка. Используйте панель управления транспортом для " +"включения или выключения. При включении совок черпает незакрепленные " +"предметы по ходу движения, помещая их в хранилище транспорта." #: lang/json/vehicle_part_from_json.py msgid "gel harness" @@ -131195,7 +132914,7 @@ msgstr "желейный ремень безопасности" #. ~ Description for ooze harness #: lang/json/vehicle_part_from_json.py msgid "A living blob, reformed as a belt and attached to a seat." -msgstr "" +msgstr "Живой сгусток в форме ремня безопасности, прикрепленного к сиденью." #: lang/json/vehicle_part_from_json.py msgid "capsule (10L)" @@ -131213,6 +132932,11 @@ msgid "" " the vehicle. You can also use a rubber hose to siphon liquids out of a " "tank." msgstr "" +"Живой сгусток в форме контейнера для жидкостей. Если его наполнить " +"подходящим топливом для двигателя автомобиля, двигатель при работе будет " +"автоматически расходовать топливо из бака. Если бак наполнен водой, можно " +"получить воду из крана при его наличии на этом транспорте. Жидкости также " +"можно сливать из бака с помощью резинового шланга." #: lang/json/vehicle_part_from_json.py msgid "gel tank (60L)" @@ -131232,6 +132956,11 @@ msgid "" "components of a vehicle are foldable or made from blobs, the vehicle can be " "folding into a small package and picked up as a normal item." msgstr "" +"Живой сгусток, сформированный для обеспечения дополнительных точек " +"присоединения других сгустков. Любые компоненты автомобиля или другие " +"сгустки могут быть прикреплены на эти места. Если все рамы и компоненты " +"транспорта складные или сделаны из сгустков, то автомобиль может быть сложен" +" в маленький предмет и поднят в руки как любая другая вещь." #: lang/json/vehicle_part_from_json.py msgid "gel reinforcement" @@ -131242,7 +132971,7 @@ msgstr "желейная броня" #. ~ Description for ooze reinforcement #: lang/json/vehicle_part_from_json.py msgid "A living blob, acting as armor plate." -msgstr "" +msgstr "Живой сгусток, в форме пластины брони." #: lang/json/vehicle_part_from_json.py msgid "gel roof" @@ -131253,7 +132982,7 @@ msgstr "желейная крыша" #. ~ Description for ooze roof #: lang/json/vehicle_part_from_json.py msgid "A living blob, placed as roof." -msgstr "" +msgstr "Живой сгусток, установленный в виде пола." #: lang/json/vehicle_part_from_json.py msgid "gel seat" @@ -131264,7 +132993,7 @@ msgstr "желейное сиденье" #. ~ Description for ooze seat #: lang/json/vehicle_part_from_json.py msgid "A living blob, formed into a comfy couch. You can sit here." -msgstr "" +msgstr "Живой сгусток, в виде удобного дивана. Вы можете присесть." #: lang/json/vehicle_part_from_json.py msgid "gel receptacle" @@ -131275,17 +133004,17 @@ msgstr "желейный резервуар" #. ~ Description for ooze receptacle #: lang/json/vehicle_part_from_json.py msgid "A living blob, shaped into a cargo space." -msgstr "" +msgstr "Живой сгусток, сформированный в грузовой пространство." #: lang/json/vehicle_part_from_json.py msgid "gel pouch (under)" -msgstr "" +msgstr "желейный подсумок(внизу)" #. ~ Description for gelatinous wheel #. ~ Description for gray wheel #: lang/json/vehicle_part_from_json.py msgid "A living blob. It acts as a wheel." -msgstr "" +msgstr "Живой сгусток. В форме колеса." #: lang/json/vehicle_part_from_json.py msgid "gel walkway" @@ -131296,7 +133025,7 @@ msgstr "желейный проход" #. ~ Description for ooze walkway #: lang/json/vehicle_part_from_json.py msgid "A living blob, formed into a walkway." -msgstr "" +msgstr "Живой сгусток в форме прохода." #: lang/json/vehicle_part_from_json.py msgid "gel panel" @@ -131314,6 +133043,8 @@ msgid "" "A living blob, acting as a door. Has a transparent patch so you can see out" " of it, even when closed." msgstr "" +"Живой сгусток, в форме двери. Есть прозрачный участок, так что вы можете " +"смотреть сквозь, даже если дверь закрыта." #: lang/json/vehicle_part_from_json.py msgid "opaque gel hatch" @@ -131327,6 +133058,8 @@ msgid "" "A living blob, acting as a door. Entirely opaque so you can't see through " "it when closed." msgstr "" +"Живой сгусток, в форме двери. Полностью непрозрачный, так что ничего не " +"будет видно, если закрыть." #: lang/json/vehicle_part_from_json.py msgid "gel battery" @@ -131339,6 +133072,9 @@ msgid "" " that power and can release it to power other parts of the vehicle, allowing" " it to act as a storage battery." msgstr "" +"Живой, светящийся сгусток. Будучи заряженным с помощью электричества, он " +"сохраняет заряд и может использовать его для питания других частей " +"автомобиля, что позволяет ему действовать как аккумулятор." #: lang/json/vehicle_part_from_json.py msgid "gel battery (under)" @@ -131357,10 +133093,15 @@ msgid "" "not currently work because the game code does not support the fuel type, but" " that will be corrected soon." msgstr "" +"Живой, светящийся сгусток. Он потребляет еду для сгустков и производит " +"электричество, может использоваться в качестве реактора. Он также светится и" +" может быть использован для освещения нескольких клеток внутри автомобиля. " +"Сейчас он не работает, так как код игры не поддерживает этот тип топлива, но" +" скоро это будет исправлено." #: lang/json/vehicle_part_from_json.py msgid "gray retriever" -msgstr "" +msgstr "серый собиратель" #: lang/json/vehicle_part_from_json.py msgid "gray harness" @@ -131396,7 +133137,7 @@ msgstr "серый резервуар" #: lang/json/vehicle_part_from_json.py msgid "gray pouch (under)" -msgstr "" +msgstr "серый подсумок(внизу)" #: lang/json/vehicle_part_from_json.py msgid "gray walkway" @@ -131404,7 +133145,7 @@ msgstr "серый проход" #: lang/json/vehicle_part_from_json.py msgid "gray wall" -msgstr "" +msgstr "серая стена" #. ~ Description for gray wall #. ~ Description for ooze barrier @@ -131413,6 +133154,8 @@ msgid "" "A living blob, formed into a vehicle wall. Keeps zombies outside the " "vehicle and prevents people from seeing through it." msgstr "" +"Живой сгусток, в форме автомобильной стены. Оставляет зомби снаружи авто и " +"не дает людям смотреть насквозь." #: lang/json/vehicle_part_from_json.py msgid "gray hatch" @@ -131434,18 +133177,20 @@ msgid "" "A living blob, formed into a half-height vehicle wall. Keeps zombies " "outside the vehicle but allows people to see over it." msgstr "" +"Живой сгусток, в форме автомобильной стены половинной высоты. Оставляет " +"зомби снаружи авто и не дает людям смотреть насквозь." #: lang/json/vehicle_part_from_json.py msgid "gray barricade" -msgstr "" +msgstr "серая баррикада" #: lang/json/vehicle_part_from_json.py msgid "ooze screen" -msgstr "" +msgstr "экран из слизи" #: lang/json/vehicle_part_from_json.py msgid "ooze retriever" -msgstr "" +msgstr "слизевой собиратель" #: lang/json/vehicle_part_from_json.py msgid "ooze harness" @@ -131461,7 +133206,7 @@ msgstr "слизевой бак (80 л)" #: lang/json/vehicle_part_from_json.py msgid "ooze chassis" -msgstr "" +msgstr "слизевые шасси" #: lang/json/vehicle_part_from_json.py msgid "ooze reinforcement" @@ -131481,7 +133226,7 @@ msgstr "слизевой резервуар" #: lang/json/vehicle_part_from_json.py msgid "ooze pouch (under)" -msgstr "" +msgstr "слизевой подсумок(внизу)" #: lang/json/vehicle_part_from_json.py msgid "ooze walkway" @@ -131489,7 +133234,7 @@ msgstr "слизевой проход" #: lang/json/vehicle_part_from_json.py msgid "ooze barrier" -msgstr "" +msgstr "слизевой барьер" #: lang/json/vehicle_part_from_json.py msgid "ooze hatch" @@ -131506,11 +133251,11 @@ msgstr "аморфное ядро" #. ~ Description for amorphous core #: lang/json/vehicle_part_from_json.py msgid "An amorphous mass, the living heart and brain of a blob vehicle." -msgstr "" +msgstr "Аморфная масса, живое сердце и мозг транспорта-сгустка." #: lang/json/vehicle_part_from_json.py msgid "inert core" -msgstr "" +msgstr "интертное ядро" #. ~ Description for inert core #: lang/json/vehicle_part_from_json.py @@ -131519,6 +133264,9 @@ msgid "" "weapon. If your hands are empty, you can stand next to a tentacle and " "'f'ire the weapon by selecting the tile." msgstr "" +"Спящее аморфное ядро, работает как вращающееся, универсальное гнездо для " +"оружия. Если ваши руки пусты, вы можете встать напротив тентакля и начать " +"[f]ire стрелять, целясь в нужный тайл." #. ~ Description for gel spouter #. ~ Description for gel spiker @@ -131530,19 +133278,23 @@ msgstr "" #. ~ Description for spark blight #: lang/json/vehicle_part_from_json.py msgid "A living blob turned into a heavy vehicle weapon." -msgstr "" +msgstr "Живой сгусток, превращенный в тяжелое автомобильное орудие." #: lang/json/vehicle_part_from_json.py msgid "" "A closed cycle, external combustion steam turbine. Burns coal from a bunker" " in the vehicle to produce steam." msgstr "" +"Паровая турбина внешнего сгорания с замкнутым циклом. Сжигает уголь из " +"бункера для получения пара." #: lang/json/vehicle_part_from_json.py msgid "" "This part is obsolete. It should not be installed in a vehicle, and if it " "is installed, you can safely uninstall it." msgstr "" +"Эта часть устарела. Её не следует устанавливать на транспорт. Если она уже " +"установлена, её можно спокойно снять." #. ~ Description for solar array #: lang/json/vehicle_part_from_json.py @@ -131552,6 +133304,11 @@ msgid "" " efficiency due to being able track the sun. Will recharge the vehicle's " "electrical power when exposed to the sun." msgstr "" +"Конструкция из дюжины солнечных панелей нескольких метров в высоту на " +"подвижном шасси. Оберегает хрупкие солнечные панели от потенциальной " +"опасности и повышает эффективность работы благодаря возможности " +"поворачиваться за солнцем. Будет заряжать аккумуляторы транспорта при " +"воздействии солнечных лучей." #. ~ Description for upgraded solar array #. ~ Description for upgraded reinforced solar array @@ -131562,6 +133319,11 @@ msgid "" "improves efficiency due to being able track the sun. Will recharge the " "vehicle's electrical power when exposed to the sun." msgstr "" +"Конструкция из дюжины мощных солнечных панелей нескольких метров в высоту на" +" подвижном шасси. Оберегает хрупкие солнечные панели от потенциальной " +"опасности и повышает эффективность работы благодаря возможности " +"поворачиваться за солнцем. Будет заряжать аккумуляторы транспорта при " +"воздействии солнечных лучей." #: lang/json/vehicle_part_from_json.py msgid "rubber treads" @@ -131577,6 +133339,10 @@ msgid "" "provides plenty of traction to move heavy vehicles off-road, but at the cost" " of speed due to the heavy weight." msgstr "" +"Секция непрерывных траков, похожих на установленные в строительных машинах " +"или военной технике. Работает как колесо, а широкая поверхность обеспечивает" +" хорошее сцепление с землей, достаточное для комфортного перемещения по " +"бездорожью, но за счет пониженной скорости из-за тяжелого веса." #: lang/json/vehicle_part_from_json.py msgid "steel treads" @@ -131593,6 +133359,9 @@ msgid "" "weapon on it as an automated weapon and the vehicle will be able to fire on " "hostile targets that get too close." msgstr "" +"Вращающаяся турель, пригодная для монтирования орудий. Установите на нее " +"подходящее оружие и ваш автомобиль сможет отстреливать врагов, если они " +"подойдут слишком близко." #: lang/json/vehicle_part_from_json.py msgid "wiring" @@ -131604,6 +133373,8 @@ msgid "" "A length of heavy duty copper wire, useful for routing power from one part " "of a vehicle to another part." msgstr "" +"Моток прочной медной проволоки, полезный для прокладки питания от одной " +"части транспортного средства к другой." #: lang/json/vehicle_part_from_json.py msgid "manual flamethrower" @@ -131611,80 +133382,80 @@ msgstr "ручной огнемёт" #: lang/json/vehicle_part_from_json.py msgid "BAR turret" -msgstr "" +msgstr "BAR турель" #: lang/json/vehicle_part_from_json.py msgid "M249 turret" -msgstr "" +msgstr "M249 турель" #: lang/json/vehicle_part_from_json.py msgid "fusion turret" -msgstr "" +msgstr "термоядерная турель" #: lang/json/vehicle_part_from_json.py msgid "M2 Browning turret" -msgstr "" +msgstr "M2 Browning турель" #: lang/json/vehicle_part_from_json.py msgid "M240 turret" -msgstr "" +msgstr "M240 турель" #: lang/json/vehicle_part_from_json.py msgid "auto-shotgun turret" -msgstr "" +msgstr "турель с автоматическим дробовиком" #: lang/json/vehicle_part_from_json.py msgid "M134D-H Minigun turret" -msgstr "" +msgstr "M134D-H Миниган турель" #: lang/json/vehicle_part_from_json.py msgid "Mark 19 turret" -msgstr "" +msgstr "Mark 19 турель" #: lang/json/vehicle_part_from_json.py msgid "RM614 turret" -msgstr "" +msgstr "RM614 турель" #: lang/json/vehicle_part_from_json.py msgid "RM298 turret" -msgstr "" +msgstr "RM298 турель" #: lang/json/vehicle_part_from_json.py msgid "water cannon turret" -msgstr "" +msgstr "турель с водяной пушкой" #: lang/json/vehicle_part_from_json.py msgid "vortex accelerator turret" -msgstr "" +msgstr "турель с вихревым ускорителем" #: lang/json/vehicle_part_from_json.py msgid "automated vortex accelerator" -msgstr "" +msgstr "автоматизированный вихревой ускоритель" #: lang/json/vehicle_part_from_json.py msgid "vortex bolter turret" -msgstr "" +msgstr "турель с вихревым болтомётом" #: lang/json/vehicle_part_from_json.py msgid "automated vortex bolter" -msgstr "" +msgstr "автоматизированный вихревой болтомет" #: lang/json/vehicle_part_from_json.py msgid "vortex rifle turret" -msgstr "" +msgstr "турель с вихревой винтовкой" #: lang/json/vehicle_part_from_json.py msgid "automated vortex rifle" -msgstr "" +msgstr "автоматизированная вихревая винтовка" #: lang/json/vehicle_part_from_json.py msgid "diamond barrier" -msgstr "" +msgstr "алмазный барьер" #. ~ Description for diamond barrier #: lang/json/vehicle_part_from_json.py msgid "A transparent, solid sheet of self-sustaining crystals." -msgstr "" +msgstr "Прозрачный, сплошной лист самоподдерживающихся кристаллов." #. ~ Description for diamond frame #: lang/json/vehicle_part_from_json.py @@ -131693,6 +133464,9 @@ msgid "" "mounted on it, and it can be attached to other frames to increase the " "vehicle's size." msgstr "" +"Рама из супер-крепкого кристалла. На неё можно устанавливать другие детали, " +"и её можно соединять с другими рамами для увеличения размера транспортного " +"средства." #. ~ Description for diamond plating #: lang/json/vehicle_part_from_json.py @@ -131700,36 +133474,40 @@ msgid "" "Transparent crystal armor plate. Will partially protect other components on" " the same frame from damage." msgstr "" +"Прозрачная кристальная бронепластина. Частично защищает другие детали на " +"раме от повреждений." #: lang/json/vehicle_part_from_json.py msgid "cargo dimension" -msgstr "" +msgstr "измерение грузового отсека" #: lang/json/vehicle_part_from_json.py msgid "vortex cannon turret" -msgstr "" +msgstr "турель с вихревой пушкой" #: lang/json/vehicle_part_from_json.py msgid "" "This heavy weapon is mounted on a turret, and can be fired from your vehicle" " controls." msgstr "" +"Это тяжелое оружие установлено на турели и может вести огонь через систему " +"управления автомобиля." #: lang/json/vehicle_part_from_json.py msgid "manual storm bolter" -msgstr "" +msgstr "ручной штурмовой болтер" #: lang/json/vehicle_part_from_json.py msgid "manual slingshot cannon" -msgstr "" +msgstr "ручная пушка-рогатка" #: lang/json/vehicle_part_from_json.py msgid "manual rotary cannon" -msgstr "" +msgstr "ручная вращающаяся пушка" #: lang/json/vehicle_part_from_json.py msgid "manual laser cannon" -msgstr "" +msgstr "ручная лазерная пушка" #: lang/json/vehicle_part_from_json.py msgid "manual pulse laser" @@ -131741,51 +133519,51 @@ msgstr "ручная турболазерная пушка" #: lang/json/vehicle_part_from_json.py msgid "manual lacerator" -msgstr "" +msgstr "ручной протыкатель" #: lang/json/vehicle_part_from_json.py msgid "manual RM451 flamethrower" -msgstr "" +msgstr "ручной RM451 огнемет" #: lang/json/vehicle_part_from_json.py msgid "manual perforator" -msgstr "" +msgstr "ручной перфоратор" #: lang/json/vehicle_part_from_json.py msgid "manual needler" -msgstr "" +msgstr "ручной иглострел" #: lang/json/vehicle_part_from_json.py msgid "manual hypervelocity driver" -msgstr "" +msgstr "ручной сверхзвуковой рельсомёт" #: lang/json/vehicle_part_from_json.py msgid "manual ripper" -msgstr "" +msgstr "ручной потрошитель" #: lang/json/vehicle_part_from_json.py msgid "manual rotary speargun" -msgstr "" +msgstr "ручное вращающееся гарпунное ружьё" #: lang/json/vehicle_part_from_json.py msgid "manual scorpion ballista" -msgstr "" +msgstr "ручная баллиста Скорпион" #: lang/json/vehicle_part_from_json.py msgid "manual splintergun" -msgstr "" +msgstr "ручная осколочная пушка" #: lang/json/vehicle_part_from_json.py msgid "manual speargun" -msgstr "" +msgstr "ручное гарпунное ружье" #: lang/json/vehicle_part_from_json.py msgid "manual tesla cannon" -msgstr "" +msgstr "ручная тесла-пушка" #: lang/json/vehicle_part_from_json.py msgid "manual avalanche rifle" -msgstr "" +msgstr "ручная лавинная винтовка" #. ~ Vehicle Spawn Description #: lang/json/vehicle_spawn_from_json.py @@ -131959,6 +133737,10 @@ msgstr "Вы закончили рыть." msgid "You discover a %s!" msgstr "Вы обнаружили %s!" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "Ни один из ваших режущих инструментов не годится для разделки." + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "" @@ -132037,6 +133819,10 @@ msgid "You need to perform field dressing before quartering." msgstr "" "Необходимо провести полевую разделку, прежде чем четвертовать эту тушу." +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "Посмеете ли вы осквернить бренные останки своего собрата?" + #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." msgstr "Сжав зубы, вы принялись за эту отвратительную работу." @@ -132210,27 +133996,27 @@ msgstr "Вы закончили разделывать %s." #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." msgstr "" -"Вы неаккуратно разделали тушу и отрубили несколько лишних частей тела. " -"Теперь вы стоите и недоумеваете, почему так вышло." +"Вы неумело взламываете труп и отрубаете лишние части тела. Вы удивляетесь, " +"почему всё вышло так плохо." #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." msgstr "" -"Из-за недостатка опыта вы допустили несколько ошибок и повредили тушу. " -"Впрочем, вы всё ещё надеетесь, что не всё так плохо." +"Ваши неумелые руки соскальзывают и повреждают труп. Вы все еще надеетесь, " +"что это не полный провал." #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." msgstr "" -"При разделке что-то пошло не так, и вы сильно повредили тушу. Возможно, из " -"неё ещё можно добыть что-нибудь полезное." +"Вы сделали что-то неправильно и сильно повредили труп. Возможно, из неё ещё " +"можно добыть что-нибудь полезное." #: src/activity_handlers.cpp #, c-format @@ -132332,7 +134118,7 @@ msgid "" "You hack into the corpse and chop off some body parts. You think the zombie" " won't be able to attack when it reanimates." msgstr "" -"Вы отрубаете у трупа несколько частей тела. В думаете, что зомби не сможет " +"Вы отрубаете у трупа несколько частей тела. Вы думаете, что зомби не сможет " "атаковать, когда он снова встанет." #: src/activity_handlers.cpp @@ -132406,9 +134192,10 @@ msgid "You have lost the item you were using to start the fire." msgstr "У вас больше нет предмета, которым вы пытались разжечь огонь." #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." +msgid "There is not enough sunlight to start a fire now. You stop trying." msgstr "" -"Недостаточно солнечного света, чтобы развести огонь. Вы прекращаете попытки." +"Сейчас не хватает солнечного света, чтобы зажечь огонь. Вы перестаете " +"пытаться." #: src/activity_handlers.cpp #, c-format @@ -132717,19 +134504,19 @@ msgstr[3] "" msgid "The %s is too heavy to carry, so you drop it into the %s's %s." msgid_plural "" "The %s are too heavy to carry, so you drop them into the %s's %s." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%s слишком тяжелый, чтобы нести, вы бросаете его на %s %s." +msgstr[1] "%s слишком тяжелы, чтобы нести, вы бросаете их на %s %s." +msgstr[2] "%s слишком тяжелые, чтобы нести, вы бросаете их на %s %s." +msgstr[3] "%s слишком тяжелый, чтобы нести, вы бросаете его на %s %s." #: src/activity_item_handling.cpp #, c-format msgid "Your %s tumbles into the %s's %s." msgid_plural "Your %s tumble into the %s's %s." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Ваш %s падает в %s %s." +msgstr[1] "Ваши %s падают в %s %s." +msgstr[2] "Ваши %s падают в %s %s." +msgstr[3] "Ваш %s падает в %s %s." #: src/activity_item_handling.cpp #, c-format @@ -132744,25 +134531,25 @@ msgstr " убирает несколько вещей в %2$s (%1$s)." #: src/activity_item_handling.cpp #, c-format msgid "Some items tumble into the %1$s's %2$s." -msgstr "" +msgstr "Несколько предметов падают в %1$s %2$s." #: src/activity_item_handling.cpp #, c-format msgid "The %s is full, so something fell to the %s." msgid_plural "The %s is full, so some items fell to the %s." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%s полон, так что что-то выпадает на %s." +msgstr[1] "%s полон, так что несколько вещей выпадают на %s." +msgstr[2] "%s полон, так что несколько вещей выпадают на %s." +msgstr[3] "%s полон, так что что-то выпадает на %s." #: src/activity_item_handling.cpp #, c-format msgid "The %s is full, so it fell to the %s." msgid_plural "The %s is full, so they fell to the %s." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%s полон, так что что-то выпадает на %s." +msgstr[1] "%s полон, так что что-то выпадает на %s." +msgstr[2] "%s полон, так что что-то выпадает на %s." +msgstr[3] "%s полон, так что что-то выпадает на %s." #: src/activity_item_handling.cpp #, c-format @@ -132814,28 +134601,28 @@ msgstr[3] " кладёт предмет (%1$s) в %2$s." #, c-format msgid "There's no room in your inventory for the %s, so you drop it." msgid_plural "There's no room in your inventory for the %s, so you drop them." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "В инвентаре нет свободного места для %s, поэтому вы это выбросили." +msgstr[1] "В инвентаре нет свободного места для %s, поэтому вы это выбросили." +msgstr[2] "В инвентаре нет свободного места для %s, поэтому вы это выбросили." +msgstr[3] "В инвентаре нет свободного места для %s, поэтому вы это выбросили." #: src/activity_item_handling.cpp #, c-format msgid "The %s is too heavy to carry, so you drop it." msgid_plural "The %s is too heavy to carry, so you drop them." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%s слишком тяжел, чтобы нести, так что вы это бросаете." +msgstr[1] "%s слишком тяжелы, чтобы нести, так что вы их бросаете." +msgstr[2] "%s слишком тяжелы, чтобы нести, так что вы их бросаете." +msgstr[3] "%s слишком тяжелы, чтобы нести, так что вы их бросаете." #: src/activity_item_handling.cpp #, c-format msgid "Your %1$s tumbles to the %2$s." msgid_plural "Your %1$s tumble to the %2$s." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Ваш %1$s падает на %2$s." +msgstr[1] "Ваши %1$s падают на %2$s." +msgstr[2] "Ваши %1$s падают на %2$s." +msgstr[3] "Ваш %1$s падает на %2$s." #: src/activity_item_handling.cpp #, c-format @@ -132860,7 +134647,7 @@ msgstr " кладёт несколько предметов на %s." #: src/activity_item_handling.cpp #, c-format msgid "Some items tumble to the %s." -msgstr "" +msgstr "Часть предметов падает на %s." #: src/activity_item_handling.cpp src/iuse.cpp #, c-format @@ -133289,7 +135076,7 @@ msgstr "заряды" msgid "category" msgstr "категория" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp src/effect.cpp msgid "damage" msgstr "урон" @@ -133518,6 +135305,89 @@ msgstr "Все" msgid "Hang on a bit..." msgstr "Подождите немного..." +#: src/armor_layers.cpp +msgid "close to your skin" +msgstr "близко к вашей коже" + +#: src/armor_layers.cpp +msgid "of normal clothing" +msgstr "из нормальной одежды" + +#: src/armor_layers.cpp +msgid "on your waist" +msgstr "на вашей талии" + +#: src/armor_layers.cpp +msgid "of outer clothing" +msgstr "из внешней одежды" + +#: src/armor_layers.cpp +msgid "strapped to you" +msgstr "привязан к вам" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgid_plural "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgstr[0] "" +"Ношение нескольких вещей %s на вашем %s добавляет " +"ему скованности." +msgstr[1] "" +"Ношение нескольких вещей %s на вашей %s добавляет " +"ей скованности." +msgstr[2] "" +"Ношение нескольких вещей %s на вашей %s добавляет " +"ей скованности." +msgstr[3] "" +"Ношение нескольких вещей %s на ваших %s добавляет " +"им скованности." + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgid_plural "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgstr[0] "" +"Ношение этих наружных вещей в качестве внутренних добавляет обременение к " +"вашей %s." +msgstr[1] "" +"Ношение этих наружных вещей в качестве внутренних добавляет обременение к " +"вашей %s." +msgstr[2] "" +"Ношение этих наружных вещей в качестве внутренних добавляет обременение к " +"вашей %s." +msgstr[3] "" +"Ношение этих наружных вещей в качестве внутренних добавляет обременение к " +"вашим %s." + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgid_plural "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgstr[0] "" +"Ношение этого поверх вашей %s добавляет " +"скованности вашей %s." +msgstr[1] "" +"Ношение этого поверх вашего %s добавляет " +"скованности вашему %s." +msgstr[2] "" +"Ношение этого поверх ваших %s добавляет " +"скованности вашим %s." +msgstr[3] "" +"Ношение этого поверх ваших %s добавляет " +"скованности вашим %s." + #: src/armor_layers.cpp msgid "This is worn next to the skin." msgstr "Носится под вашей одеждой." @@ -133688,29 +135558,33 @@ msgstr "Переназначить клавишу на броню?" #, c-format msgid "" "Use the arrow- or keypad keys to navigate the left list.\n" -"Press [%s] to select highlighted armor for reordering.\n" -"Use [%s] / [%s] to scroll the right list.\n" -"Press [%s] to assign special inventory letters to clothing.\n" -"Press [%s] to change the side on which item is worn.\n" -"Use [%s] to equip an armor item from the inventory.\n" -"Press [%s] to remove selected armor from oneself.\n" +"[%s] to select highlighted armor for reordering.\n" +"[%s] / [%s] to scroll the right list.\n" +"[%s] to assign special inventory letters to clothing.\n" +"[%s] to change the side on which item is worn.\n" +"[%s] to sort armor into natural layer order.\n" +"[%s] to equip a new item.\n" +"[%s] to equip a new item at the currently selected position.\n" +"[%s] to remove selected armor from oneself.\n" " \n" "[Encumbrance and Warmth] explanation:\n" "The first number is the summed encumbrance from all clothing on that bodypart.\n" -"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers.\n" +"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers or wearing items outside of other items they would normally be work beneath (e.g. a shirt over a backpack).\n" "The sum of these values is the effective encumbrance value your character has for that bodypart." msgstr "" "Используйте стрелки или цифровую клавиатуру для навигации по левому списку.\n" -"Нажмите [%s] для изменения порядка выделенной брони.\n" -"Нажмите [%s]/[%s] для прокрутки правого списка.\n" -"Нажмите [%s] для привязки особой буквы инвентаря к одежде.\n" -"Нажмите [%s], чтобы выбрать сторону, на которой будет носиться вещь.\n" -"Нажмите [%s], чтобы надеть броню из инвентаря.\n" -"Нажмите [%s], чтобы снять с себя выбранную броню.\n" +"[%s] для изменения порядка выделенной брони.\n" +"[%s]/[%s] для прокрутки правого списка.\n" +"[%s] для привязки особой буквы инвентаря к одежде.\n" +"[%s], чтобы выбрать сторону, на которой будет носиться вещь.\n" +"[%s], чтобы отсортировать броню в естественном порядке.\n" +"[%s], чтобы надеть новую вещь.\n" +"[%s], чтобы надеть выбранную вещь.\n" +"[%s], чтобы снять с себя выбранную броню.\n" "\n" "Разъяснение [Скованность и тепло]:\n" "Первое число — сумма скованности от всей одежды на этой части тела.\n" -"Второе число — дополнительная скованность, вызванная ношением множества вещей на одном из слоёв этой части тела.\n" +"Второе число — дополнительная скованность, вызванная ношением множества вещей на одном из четырёх слоёв этой части тела или ношением вещей в неправильном порядке (например футболка поверх рюкзака).\n" "Сумма этих чисел — это значение текущей скованности вашего персонажа на этой части тела." #: src/artifact.cpp @@ -134265,6 +136139,8 @@ msgid "" "The %s is somehow vaguely dissatisfied even though it doesn't want anything." " Seeing this is a bug!" msgstr "" +"%s по неясной причине недоволен, хотя даже ничего не хочет. Если вы это " +"видите - это баг!" #: src/artifact.cpp #, c-format @@ -134272,6 +136148,8 @@ msgid "" "The %s is satisfied, as it should be because it has no standards. Seeing " "this is a bug!" msgstr "" +" %sдоволен, как и должно быть - у него нет стандартов. Если вы это видите - " +"это баг!" #: src/artifact.cpp #, c-format @@ -134300,6 +136178,8 @@ msgstr "Вы подносите %s ближе к коже." msgid "" "The %s is confused to find you dreaming while awake. Seeing this is a bug!" msgstr "" +"%s озадачен, потому что вы спите во время бодрствования. Если вы это видите " +"- это баг!" #: src/artifact.cpp #, c-format @@ -134516,6 +136396,18 @@ msgid "" "M:copper matches items made purely of copper\n" "M:steel,iron multiple materials allowed (OR search)" msgstr "" +"* используется для подстановки. Примеры:\n" +"\n" +"деревянная стрела совпадает с именем предмета\n" +"дер* совпадает для всех предметов, начинающихся с дер\n" +"*рела совпадает для всех предметов, кончающихся на рела\n" +"строки типа де*я ст*а также разрешены\n" +"дЕр*Вя*Ая Ст*Ела регистронезависимый поиск\n" +"\n" +"Поднимание вещей, основанное на материалах:\n" +"m:кевлар означает вещь, сделанную из кевлара\n" +"M:медь подразумевает вещь, сделанную из чистой меди\n" +"M:сталь,железо разрешено несколько материалов (ИЛИ поиск)" #: src/auto_pickup.cpp msgid "Pickup Rule:" @@ -134574,7 +136466,7 @@ msgstr "Пуля срикошетила в %s" #: src/basecamp.cpp #, c-format msgid "%s Board" -msgstr "" +msgstr "%s Доска" #: src/bionics.cpp #, c-format @@ -134810,6 +136702,14 @@ msgstr "" msgid "Your plugged-in solar pack is now able to charge your system." msgstr "Подсоединённый солнечный рюкзак готов заряжать вашу систему." +#: src/bionics.cpp +msgid "" +"You need to connect the cable to yourself and the solar pack before your " +"solar pack can charge your system." +msgstr "" +"Вам необходимо подсоединить кабель к себе и к солнечной панели, перед тем " +"как панель начнет заряжать вашу систему." + #: src/bionics.cpp msgid "" "You might plug in your solar pack to the cable charging system, if you " @@ -134906,6 +136806,8 @@ msgstr " подготавливается к проведению оп #, c-format msgid "A lifetime of augmentation has taught %s a thing or two..." msgstr "" +"Работая всю свою жизнь с аугументацией, %s может продемонстрировать пару " +"фокусов..." #: src/bionics.cpp #, c-format @@ -134922,7 +136824,8 @@ msgstr "" msgid "" "WARNING: Removing a reactor may leave radioactive material! Remove anyway?" msgstr "" -"ВНИМАНИЕ: Удаления реактора может привести к радиации! Удалить все равно?" +"ВНИМАНИЕ: После удаления реактора может остаться радиоактивное вещество! " +"Удалить все равно?" #: src/bionics.cpp #, c-format @@ -134965,11 +136868,11 @@ msgstr "Удалена бионика: %s." #: src/bionics.cpp msgid "Your parts are jiggled back into their familiar places." -msgstr "" +msgstr "Ваши части встали обратно на свои места." #: src/bionics.cpp msgid "'s parts are jiggled back into their familiar places." -msgstr "" +msgstr "Части встали обратно на свои места. " #: src/bionics.cpp #, c-format @@ -135193,13 +137096,12 @@ msgstr "" #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out" -" when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "" -"Вы стараетесь лежать, не двигая ни единым мускулом, и разглядываете паутину " -"в углу потолка, когда автодок начал безболезненно делать разрезы в вашем " -"теле. К счастью, как только вам на глаза попались его инструменты и лезвия, " -"вы потеряли сознание." +"Вы лежите очень, очень неподвижно и сосредоточенно разглядываете интересный " +"камень на потолке, пока автодок выполняет безболезненный разрез. К счастью, " +"вы теряете сознание, когда лезвия достигают поля вашего зрения." #: src/bionics_ui.cpp #, c-format @@ -135320,6 +137222,55 @@ msgstr "" "Вы не можете активировать %s!\n" "Для получения информации о %s — нажмите «!», затем «%c»" +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "Точности" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "Уклонению" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "Скорость" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "Цены хода" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "Брони" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "Пробиванию брони" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "Множителя вражеской брони" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "сила" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "ловкость" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "интеллект" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "восприятие" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr "из" + #: src/calendar.cpp msgid "forever" msgstr "вечно" @@ -135337,52 +137288,61 @@ msgstr[3] "%d секунда" #, c-format msgid "%d minute" msgid_plural "%d minutes" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d минута" +msgstr[1] "%d минуты" +msgstr[2] "%d минут" +msgstr[3] "%d минут" #: src/calendar.cpp #, c-format msgid "%d hour" msgid_plural "%d hours" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d час" +msgstr[1] "%d часа" +msgstr[2] "%d часов" +msgstr[3] "%d час" #: src/calendar.cpp #, c-format msgid "%d day" msgid_plural "%d days" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d день" +msgstr[1] "%d дня" +msgstr[2] "%d дней" +msgstr[3] "%d день" + +#: src/calendar.cpp +#, c-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d неделя" +msgstr[1] "%d недели" +msgstr[2] "%d недель" +msgstr[3] "%d неделя" #: src/calendar.cpp #, c-format msgid "%d season" msgid_plural "%d seasons" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d сезон" +msgstr[1] "%d сезона" +msgstr[2] "%d сезонов" +msgstr[3] "%d сезон" #: src/calendar.cpp #, c-format msgid "%d year" msgid_plural "%d years" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d год" +msgstr[1] "%d года" +msgstr[2] "%d лет" +msgstr[3] "%d год" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment #: src/calendar.cpp msgid " forever" -msgstr "" +msgstr "вечно" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -135390,10 +137350,10 @@ msgstr "" #, c-format msgid "%3d second" msgid_plural "%3d seconds" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3d секунда" +msgstr[1] "%3d секунды" +msgstr[2] "%3d секунд" +msgstr[3] "%3d секунда" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -135401,10 +137361,10 @@ msgstr[3] "" #, c-format msgid "%3d minute" msgid_plural "%3d minutes" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3d минута" +msgstr[1] "%3d минуты" +msgstr[2] "%3d минут" +msgstr[3] "%3d минута" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -135412,10 +137372,10 @@ msgstr[3] "" #, c-format msgid "%3d hour" msgid_plural "%3d hours" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3d час" +msgstr[1] "%3d часа" +msgstr[2] "%3d часов" +msgstr[3] "%3d час" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -135423,10 +137383,21 @@ msgstr[3] "" #, c-format msgid "%3d day" msgid_plural "%3d days" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3d день" +msgstr[1] "%3d дня" +msgstr[2] "%3d дней" +msgstr[3] "%3d день" + +#. ~ Right-aligned time string. should right-align with other strings with +#. this same comment +#: src/calendar.cpp +#, c-format +msgid "%3d week" +msgid_plural "%3d weeks" +msgstr[0] "%3d неделя" +msgstr[1] "%3d недели" +msgstr[2] "%3d недель" +msgstr[3] "%3d неделя" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -135434,10 +137405,10 @@ msgstr[3] "" #, c-format msgid "%3d season" msgid_plural "%3d seasons" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3d сезон" +msgstr[1] "%3d сезона" +msgstr[2] "%3d сезонов" +msgstr[3] "%3d сезон" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -135445,10 +137416,10 @@ msgstr[3] "" #, c-format msgid "%3d year" msgid_plural "%3d years" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%3d год" +msgstr[1] "%3d года" +msgstr[2] "%3d лет" +msgstr[3] "%3d год" #. ~ %1$s - greater units of time (e.g. 3 hours), %2$s - lesser units of time #. (e.g. 11 minutes). @@ -135761,22 +137732,6 @@ msgstr " нужно не менее %1$s для этого %2$s, а т msgid "Liquid from your inventory has leaked onto the ground." msgstr "Жидкость из вашего инвентаря протекает на землю." -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "сила" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "ловкость" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "интеллект" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "восприятие" - #: src/character.cpp msgid "Left Arm" msgstr "Левая рука" @@ -135795,88 +137750,88 @@ msgstr "Правая нога" #: src/character.cpp msgid "It is broken. It needs a splint or surgical attention." -msgstr "" +msgstr "Сломана. Необходима шина или хирургическое вмешательство." #: src/character.cpp #, c-format msgid "Chance to stop: %d %%" -msgstr "" +msgstr "Шансы остановить: %d %%" #: src/character.cpp msgid "This will not stop the bleeding." -msgstr "" +msgstr "Это не остановит кровотечение." #: src/character.cpp #, c-format msgid "Bandaged [%s]" -msgstr "" +msgstr "Перевязано [%s]" #: src/character.cpp #, c-format msgid "Expected quality improvement: %s" -msgstr "" +msgstr "Ожидаемое улучшение качества: %s" #: src/character.cpp msgid "You don't expect any improvement from using this." -msgstr "" +msgstr "Вы не думаете, что с этим может получиться лучше." #: src/character.cpp #, c-format msgid "Expected bandage quality: %s" -msgstr "" +msgstr "Ожидаемое качество перевязки: %s" #: src/character.cpp msgid "It has a deep bite wound that needs cleaning." -msgstr "" +msgstr "Здесь глубокий укус, требующий очистки." #: src/character.cpp #, c-format msgid "Chance to clean and disinfect: %d %%" -msgstr "" +msgstr "Шансы очистить и продезинфицировать: %d %%" #: src/character.cpp msgid "This will not help in cleaning this wound." -msgstr "" +msgstr "Это не поможет очистить рану." #: src/character.cpp msgid "" "It has a deep wound that looks infected. Antibiotics might be required." msgstr "" +"Тут глубокая рана, которая выглядит зараженной. Могут понадобиться " +"антибиотики." #: src/character.cpp #, c-format msgid "Chance to heal infection: %d %%" -msgstr "" +msgstr "Шансы вылечить инфекцию: %d %%" #: src/character.cpp msgid "This will not help in healing infection." -msgstr "" +msgstr "Это не поможет вылечить инфекцию." #: src/character.cpp #, c-format msgid "Disinfected [%s]" -msgstr "" +msgstr "Дезинфицировано [%s]" #: src/character.cpp #, c-format msgid "Expected disinfection quality: %s" -msgstr "" +msgstr "Ожидаемое качество дезинфекции: %s" #: src/character.cpp msgid "Healthy." -msgstr "" +msgstr "Здорово." #: src/character.cpp msgid "You don't expect any effect from using this." -msgstr "" +msgstr "Вы не думаете, что использования будет какой-то эффект." #: src/character.cpp msgid "No limb would benefit from it." -msgstr "" +msgstr "Никакая конечность не выиграет от этого." -#: src/character.cpp src/game.cpp src/game.cpp src/iexamine.cpp -#: src/inventory_ui.cpp src/npctalk_funcs.cpp src/pickup.cpp src/turret.cpp -#: src/vehicle_use.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp src/pickup.cpp msgid "Cancel" msgstr "Отмена" @@ -135928,7 +137883,7 @@ msgstr "Без автоподбора" #: src/clzones.cpp msgid "You won't auto-pickup items inside the zone." -msgstr "" +msgstr "Вы не можете автоматически поднимать вещи внутри зоны." #: src/clzones.cpp msgid "No NPC Pickup" @@ -135936,7 +137891,7 @@ msgstr "Без подбора у нейтралов" #: src/clzones.cpp msgid "Friendly NPCs don't pickup items inside the zone." -msgstr "" +msgstr "Дружественные NPC не не поднимают вещи внутри зоны." #: src/clzones.cpp msgid "Loot: Unsorted" @@ -135947,6 +137902,9 @@ msgid "" "Place to drop unsorted loot. You can use \"sort out loot\" zone-action to " "sort items inside. It can overlap with Loot zones of different types." msgstr "" +"Место для выкидывания несортированной добычи. Вы можете использовать «sort " +"out loot» zone-action для сортировки вещей внутри. Он может перекрывать Loot" +" зоны разных типов." #: src/clzones.cpp msgid "Loot: Food" @@ -135957,9 +137915,11 @@ msgid "" "Destination for comestibles. If more specific food zone is not defined, all " "food is moved here." msgstr "" +"Место для съестных припасов. Если более конкретная зона для пищи не " +"определена, вся еда перемещается сюда." #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" msgstr "Предметы: порт. еда" @@ -135968,6 +137928,8 @@ msgid "" "Destination for perishable comestibles. Does include perishable drinks if " "such zone is not specified." msgstr "" +"Место для скоропортящихся продуктов. Включает в себя скоропортящиеся " +"напитки, если для них не указана конкретная зона." #: src/clzones.cpp msgid "Loot: Drink" @@ -135978,15 +137940,17 @@ msgid "" "Destination for drinks. Does include perishable drinks if such zone is not " "specified." msgstr "" +"Место для напитков. Включает в себя скоропортящиеся напитки, если для них не" +" указана конкретная зона." #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" msgstr "Предметы: порт. напитки" #: src/clzones.cpp msgid "Destination for perishable drinks." -msgstr "" +msgstr "Место для скоропортящихся продуктов." #: src/clzones.cpp msgid "Loot: Guns" @@ -135994,16 +137958,16 @@ msgstr "Предметы: огнестр. оружие" #: src/clzones.cpp msgid "Destination for guns, bows and similar weapons." -msgstr "" +msgstr "Место для оружия, луков и прочих похожих вооружений." #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" msgstr "Предметы: магазины" #: src/clzones.cpp msgid "Destination for gun magazines." -msgstr "" +msgstr "Место для магазинов к оружию." #: src/clzones.cpp msgid "Loot: Ammo" @@ -136011,7 +137975,7 @@ msgstr "Предметы: боеприпасы" #: src/clzones.cpp msgid "Destination for ammo." -msgstr "" +msgstr "Место для патронов." #: src/clzones.cpp msgid "Loot: Weapons" @@ -136019,7 +137983,7 @@ msgstr "Предметы: оружие" #: src/clzones.cpp msgid "Destination for melee weapons." -msgstr "" +msgstr "Место для оружия ближнего боя." #: src/clzones.cpp msgid "Loot: Tools" @@ -136027,7 +137991,7 @@ msgstr "Предметы: инструменты" #: src/clzones.cpp msgid "Destination for tools." -msgstr "" +msgstr "Место для инструментов." #: src/clzones.cpp msgid "Loot: Clothing" @@ -136038,15 +138002,17 @@ msgid "" "Destination for clothing. Does include filthy clothing if such zone is not " "specified." msgstr "" +"Место для одежды. Включает в себя грязную одежду, если для нее не указано " +"конкретной зоны." #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" msgstr "Предметы: грязная одежда" #: src/clzones.cpp msgid "Destination for filthy clothing." -msgstr "" +msgstr "Место для грязной одежды." #: src/clzones.cpp msgid "Loot: Drugs" @@ -136054,7 +138020,7 @@ msgstr "Предметы: мед. препараты" #: src/clzones.cpp msgid "Destination for drugs and other medical items." -msgstr "" +msgstr "Место для лекарств и прочих медицинских вещей." #: src/clzones.cpp msgid "Loot: Books" @@ -136062,7 +138028,7 @@ msgstr "Предметы: книги" #: src/clzones.cpp msgid "Destination for books and magazines." -msgstr "" +msgstr "Место для книг и журналов." #: src/clzones.cpp msgid "Loot: Mods" @@ -136070,7 +138036,7 @@ msgstr "Предметы: модификации" #: src/clzones.cpp msgid "Destination for firearm modifications and similar items." -msgstr "" +msgstr "Место для оружейных модификаций и похожих вещей." #: src/clzones.cpp msgid "Loot: Mutagens" @@ -136078,7 +138044,7 @@ msgstr "Предметы: мутагены" #: src/clzones.cpp msgid "Destination for mutagens, serums, and purifiers." -msgstr "" +msgstr "Место для мутагенов, сывороток и очистителей." #: src/clzones.cpp msgid "Loot: Bionics" @@ -136086,16 +138052,16 @@ msgstr "Предметы: бионика" #: src/clzones.cpp msgid "Destination for Compact Bionics Modules aka CBMs." -msgstr "" +msgstr "Место для Компактных Бионических Модулей aka КБМ." #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" msgstr "Предметы: детали транспорта" #: src/clzones.cpp msgid "Destination for vehicle parts." -msgstr "" +msgstr "Место для частей от машин." #: src/clzones.cpp msgid "Loot: Other" @@ -136103,7 +138069,7 @@ msgstr "Предметы: другое" #: src/clzones.cpp msgid "Destination for other miscellaneous items." -msgstr "" +msgstr "Место для прочих вещей." #: src/clzones.cpp msgid "Loot: Fuel" @@ -136114,6 +138080,8 @@ msgid "" "Destination for gasoline, diesel, lamp oil and other substances used as a " "fuel." msgstr "" +"Место для бензина, дизеля, лампового масла и прочих субстанций, " +"использующихся как топливо." #: src/clzones.cpp msgid "Loot: Seeds" @@ -136121,7 +138089,7 @@ msgstr "Предметы: семена" #: src/clzones.cpp msgid "Destination for seeds, stems and similar items." -msgstr "" +msgstr "Место для семян, стеблей и прочих похожих вещей." #: src/clzones.cpp msgid "Loot: Chemical" @@ -136129,16 +138097,16 @@ msgstr "Предметы: химикаты" #: src/clzones.cpp msgid "Destination for chemicals." -msgstr "" +msgstr "Место для химикатов." #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" msgstr "Предметы: запчасти" #: src/clzones.cpp msgid "Destination for spare parts." -msgstr "" +msgstr "Место для запасных частей." #: src/clzones.cpp msgid "Loot: Artifacts" @@ -136146,7 +138114,7 @@ msgstr "Предметы: артефакты" #: src/clzones.cpp msgid "Destination for artifacts" -msgstr "" +msgstr "Место для артефактов." #: src/clzones.cpp msgid "Loot: Armor" @@ -136157,15 +138125,17 @@ msgid "" "Destination for armor. Does include filthy armor if such zone is not " "specified." msgstr "" +"Место для брони. Включает в себя грязную брону, если для нее не указана " +"конкретная зона." #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" msgstr "Предметы: грязная броня" #: src/clzones.cpp msgid "Destination for filthy armor." -msgstr "" +msgstr "Место для грязной брони." #: src/clzones.cpp msgid "Loot: Wood" @@ -136174,6 +138144,7 @@ msgstr "Предметы: дерево" #: src/clzones.cpp msgid "Destination for firewood and items that can be used as such." msgstr "" +"Место для дров и вещей, которые могут использоваться в этом же смысле." #: src/clzones.cpp msgid "Loot: Ignore" @@ -136182,23 +138153,25 @@ msgstr "Предметы: игнорировать" #: src/clzones.cpp msgid "Items inside of this zone are ignored by \"sort out loot\" zone-action." msgstr "" +"Вещи внутри этой зоны игнорируются при использовании \"сортивки лута\" в " +"зоне." #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" msgstr "Фермерство: участок" #: src/clzones.cpp msgid "Designate a farm plot for tilling and planting." -msgstr "" +msgstr "Назначьте участок фермы для обработки и посадки." #: src/clzones.cpp msgid "No seed" -msgstr "" +msgstr "Нет семян" #: src/clzones.cpp msgid "Plant seed: " -msgstr "" +msgstr "Посадить семена:" #: src/clzones.cpp msgid "Zone name:" @@ -136668,7 +138641,7 @@ msgstr "" "ЗВУКОВОЕ СКАНИРОВАНИЕ ЛИНИИ СБРОСА УКАЗАЛО ГЛУБИНУ 30.09КМ\n" "ОБНАРУЖЕН УРОН ЛИНИИ СБРОСА. РАБОТНИКИ ШАХТЫ АРЕСТОВАНЫ ЗА\n" " НАРУШЕНИЕ РАСПОРЯЖЕНИЯ №87.08 И ПЕРЕВЕДЕНЫ В ЛАБОРАТОРИЮ 89-В\n" -" ДЛЯ ИСПОЛЬЗОВАНИЕ В КАЧЕСТВЕ ПОДОПЫТНЫХ\n" +" ДЛЯ ИСПОЛЬЗОВАНИЯ В КАЧЕСТВЕ ПОДОПЫТНЫХ\n" "КАЧЕСТВО ЛИНИИ СБРОСА НЕ НАРУШЕНО\n" "НАЧАЛО СТАНДАРТНЫХ ВИБРАЦИОННЫХ ИСПЫТАНИЙ…" @@ -137401,7 +139374,7 @@ msgstr "Этап/вариант #" msgid "Result: " msgstr "Результат: " -#: src/construction.cpp src/crafting_gui.cpp src/recipe.cpp +#: src/construction.cpp src/crafting_gui.cpp msgid "N/A" msgstr "Н/Д" @@ -137510,13 +139483,17 @@ msgstr "Вы пробурили проход, ведущий на поверхн msgid "After boarding up the window the curtains and curtain rod are left." msgstr "После заколачивания окна остались занавески и карниз. " +#: src/construction.cpp +msgid "You gather some clay." +msgstr "Вы получили глину." + #: src/construction.cpp msgid "You gather some sand." msgstr "Вы получили песок." #: src/construction.cpp -msgid "You gather some clay." -msgstr "Вы получили глину." +msgid "You gather some materials." +msgstr "Вы получили кое-какие материалы." #: src/construction.cpp msgid "You cannot build there!" @@ -137536,7 +139513,7 @@ msgstr "Это выглядит несъедобным." #: src/consumption.cpp msgid "This is full of dirt after being on the ground." -msgstr "" +msgstr "Тут полно грязи после падения на землю." #: src/consumption.cpp src/iuse.cpp src/iuse.cpp src/iuse.cpp #: src/iuse_actor.cpp src/iuse_actor.cpp src/iuse_actor.cpp src/mutation.cpp @@ -137819,11 +139796,11 @@ msgstr " выглядит лучше, после того как съе #: src/consumption.cpp msgid "Your internal power storage is fully powered." -msgstr "Ваше внутренние запасы энергии полностью заполнены." +msgstr "Вашы внутренние запасы энергии полностью заряжены." #: src/consumption.cpp msgid "'s internal power storage is fully powered." -msgstr "Внутренние запасы энергии у полностью заполнены." +msgstr "Внутренние запасы энергии у полностью заряжены." #: src/consumption.cpp #, c-format @@ -137885,7 +139862,7 @@ msgid_plural "You digest your %s and recharge %d points of energy." msgstr[0] "Вы перевариваете %s и получаете %d единицу энергии." msgstr[1] "Вы перевариваете %s и получаете %d единицы энергии." msgstr[2] "Вы перевариваете %s и получаете %d единиц энергии." -msgstr[3] "Вы перевариваете %s и получаете %d единицу энергии." +msgstr[3] "Вы перевариваете %s и получаете %d единицу энергии." #: src/consumption.cpp #, c-format @@ -137927,7 +139904,7 @@ msgstr "Недостаточно света для изготовления!" #: src/crafting.cpp msgid "Overmap terrain building recipes are not implemented yet!" -msgstr "" +msgstr "Строительство объектов глобальной карты пока не добавлено!" #: src/crafting.cpp msgid "Craft something first" @@ -138006,6 +139983,16 @@ msgstr "%s (%d/%d на земле и в инвентаре)" msgid "Use which component?" msgstr "Какой компонент использовать?" +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "%s (%d/%d на земле)" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "%s (%d/%d в инвентаре)" + #: src/crafting.cpp msgid "Use which tool?" msgstr "Какой инструмент использовать?" @@ -138130,6 +140117,8 @@ msgid "" "[E]: Describe, [F]ind, [R]eset, [m]ode, [s]how/hide, Re[L]ated, %s [?] " "keybindings" msgstr "" +"[E]: Описание, [F] Поиск, [R] Сброс, [m] Режим, [s] показать/скрыть, [L] " +"Связанные, %s [?] сочетания клавиш" #: src/crafting_gui.cpp msgid "[b]atch" @@ -138144,18 +140133,24 @@ msgstr "[b] Отмена серии" msgid "" "[E]: Describe, [F]ind, [m]ode, [s]how/hide, Re[L]ated, %s [?] keybindings" msgstr "" +"[E]: Описание, [F] Поиск, [m] Режим, [s] показать/скрыть, [L] Связанные, %s " +"[?] сочетания клавиш" #: src/crafting_gui.cpp msgid "" "[E]: Describe, [F]ind, [R]eset, [m]ode, [s]how/hide, Re[L]ated, [b]atch [?] " "keybindings" msgstr "" +"[E]: Описание, [F] Поиск, [R] Сброс, [m] Режим, [s] показать/скрыть, [L] " +"Связанные, [b] Серия [?] сочетания клавиш" #: src/crafting_gui.cpp msgid "" "[E]: Describe, [F]ind, [m]ode, [s]how/hide, Re[L]ated, [b]atch [?] " "keybindings" msgstr "" +"[E]: Описание, [F] Поиск, [m] Режим, [s] показать/скрыть, [L] Связанные, [b]" +" Серия [?] сочетания клавиш" #: src/crafting_gui.cpp #, c-format @@ -138173,37 +140168,37 @@ msgstr "Записан в: %s" #: src/crafting_gui.cpp #, c-format -msgid "Skills used: %s" -msgstr "Используемые навыки: %s" +msgid "Primary skill used: %s" +msgstr "Использует основной навык: %s" #: src/crafting_gui.cpp #, c-format -msgid "Required skills: %s" -msgstr "Требуемые навыки: %s" +msgid "Difficulty: %d" +msgstr "Сложность: %d" #: src/crafting_gui.cpp #, c-format -msgid "Difficulty: %d" -msgstr "Сложность: %d" +msgid "Your skill level: %d" +msgstr "Ваш уровень навыка: %d" #: src/crafting_gui.cpp -msgid "Your skill level: N/A" -msgstr "Ваш уровень навыка: Н/Д" +msgid "Your skill level: N/A" +msgstr "Ваш уровень навыка: N/A" #: src/crafting_gui.cpp #, c-format -msgid "Your skill level: %d" -msgstr "Ваш уровень навыка: %d" +msgid "Other skills used: %s" +msgstr "Использует прочие навыки: %s" #: src/crafting_gui.cpp #, c-format -msgid "Time to complete: %s" -msgstr "Время до завершения: %s" +msgid "Time to complete: %s" +msgstr "Время до завершения: %s" #: src/crafting_gui.cpp #, c-format -msgid "Dark craftable? %s" -msgstr "Изготовление в темноте: %s" +msgid "Dark craftable? %s" +msgstr "Изготовление в темноте? %s" #: src/crafting_gui.cpp src/defense.cpp msgid "Easy" @@ -138229,32 +140224,83 @@ msgstr "Вы не можете сделать это!" msgid "Nothing selected!" msgstr "Ничего не выбрано!" -#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp -msgid "Search:" -msgstr "Поиск:" +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "качество готового предмета" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "полное описание готового предмета" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "атака на расстоянии" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "компонент, необходимый для изготовления" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "основной навык, необходимый для изготовления" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "любой навык, необходимый для изготовления" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "качество, необходимое для изготовления" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "инструмент, необходимый для изготовления" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "показать или нет скрытые рецепты" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "yes" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" +msgstr "показать или нет запомненные рецепты" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" +"The default is to search result names. Some single-character prefixes can be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" +msgstr "" +"По умолчанию используется поиск по именам. Некоторые односимвольные префиксы можно использовать с помощью двоеточия (:) для поиска другими методами.\n" +"\n" +"Примеры:\n" + +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "футболка" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" msgstr "" +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "имя изготовленной вещи" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" +msgstr "" + +#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp +msgid "Search:" +msgstr "Поиск:" + #: src/crafting_gui.cpp msgid "RESULTS" msgstr "РЕЗУЛЬТАТЫ" @@ -138266,7 +140312,7 @@ msgstr "Требуемые рецепты:" #: src/crafting_gui.cpp #, c-format msgid "%s hidden" -msgstr "" +msgstr "%s скрыт" #: src/crafting_gui.cpp msgid "can craft:" @@ -138285,10 +140331,6 @@ msgstr "слишком грустно" msgid "slow %d%%" msgstr "медленно %d%%" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "да" - #: src/crafting_gui.cpp msgid "Searched" msgstr "Найдено" @@ -138433,6 +140475,11 @@ msgstr "Дружественные" msgid "BUG: Behavior unnamed. (Creature::get_attitude_ui_data)" msgstr "БАГ: Поведение без имени. (Creature::get_attitude_ui_data)" +#: src/debug.cpp +#, c-format +msgid "See %s for a full stack backtrace" +msgstr "" + #: src/debug.cpp msgid "An error has occurred! Written below is the error report:" msgstr "Произошла ошибка! Ниже приведён отчёт об ошибке:" @@ -138736,7 +140783,7 @@ msgstr "На сколько установить усталость? Текущ #: src/debug_menu.cpp #, c-format msgid "Set sleep deprivation to? Currently: %d" -msgstr "" +msgstr "На какое значение установить недостаток сна? Сейчас: %d" #: src/debug_menu.cpp #, c-format @@ -138798,11 +140845,11 @@ msgstr "" #: src/debug_menu.cpp msgid " ID:" -msgstr "" +msgstr "ID:" #: src/debug_menu.cpp msgid " NPC ID:" -msgstr "" +msgstr "NPC ID:" #: src/debug_menu.cpp msgid " Target:" @@ -138810,7 +140857,7 @@ msgstr "Цель:" #: src/debug_menu.cpp msgid "Player ID:" -msgstr "" +msgstr "ID Игрока:" #: src/debug_menu.cpp msgid "Select mission to edit" @@ -138838,15 +140885,15 @@ msgstr "Проваленные задания:" #: src/debug_menu.cpp msgid "Removing from active_missions" -msgstr "" +msgstr "Удалить из active_missions" #: src/debug_menu.cpp msgid "Removing from completed_missions" -msgstr "" +msgstr "Удалить из completed_missions" #: src/debug_menu.cpp msgid "Removing from failed_missions" -msgstr "" +msgstr "Удалить из failed_missions" #: src/debug_menu.cpp msgid "Unsetting active mission" @@ -138855,7 +140902,7 @@ msgstr "Отключить активное задание" #: src/debug_menu.cpp #, c-format msgid "Removing from %s missions_assigned" -msgstr "" +msgstr "Удалить из %s missions_assigned" #: src/debug_menu.cpp #, c-format @@ -139672,7 +141719,7 @@ msgstr "Вы должны выбрать тайл в пределах %d тай msgid "You must construct expansions in fields." msgstr "Вы должны строить расширения в полях." -#: src/editmap.cpp src/mission_companion.cpp +#: src/editmap.cpp src/faction_camp.cpp msgid "" "Engine cannot support merging vehicles from two overmaps, please remove them" " from the OM tile." @@ -139989,15 +142036,15 @@ msgstr "Редко: " #: src/effect.cpp msgid "very poor" -msgstr "" +msgstr "очень плохо" #: src/effect.cpp msgid "poor" -msgstr "" +msgstr "плохо" #: src/effect.cpp msgid "decent" -msgstr "" +msgstr "средне" #: src/effect.cpp src/iuse.cpp msgid "good" @@ -140005,23 +142052,23 @@ msgstr "хорошо" #: src/effect.cpp msgid "great" -msgstr "" +msgstr "отлично" #: src/effect.cpp msgid "average" -msgstr "" +msgstr "нормально" #: src/effect.cpp msgid "very good" -msgstr "" +msgstr "очень хорошо" #: src/effect.cpp msgid "outstanding" -msgstr "" +msgstr "прекрасно" #: src/effect.cpp msgid "perfect" -msgstr "" +msgstr "идеально" #: src/event.cpp msgctxt "memorial_male" @@ -140031,7 +142078,7 @@ msgstr "Был объявлен в розыск полицией!" #: src/event.cpp msgctxt "memorial_female" msgid "Became wanted by the police!" -msgstr "Был объявлена в розыск полицией!" +msgstr "Была объявлена в розыск полицией!" #: src/event.cpp msgctxt "memorial_male" @@ -140338,7 +142385,7 @@ msgstr "Неуязвимые" #: src/faction.cpp msgctxt "faction_adj" msgid "Stone" -msgstr "камень" +msgstr "Каменные" #: src/faction.cpp msgctxt "faction_adj" @@ -140558,7 +142605,7 @@ msgstr "Ликвидаторы" #: src/faction.cpp msgctxt "faction_adj" msgid "Guerillas" -msgstr "Горриллы" +msgstr "Партизаны" #: src/faction.cpp msgctxt "faction_adj" @@ -141027,367 +143074,367 @@ msgstr " Получили известность за " #: src/faction.cpp msgctxt "faction name" msgid "ab" -msgstr "" +msgstr "аб" #: src/faction.cpp msgctxt "faction name" msgid "bon" -msgstr "" +msgstr "бон" #: src/faction.cpp msgctxt "faction name" msgid "cor" -msgstr "" +msgstr "кор" #: src/faction.cpp msgctxt "faction name" msgid "den" -msgstr "" +msgstr "ден" #: src/faction.cpp msgctxt "faction name" msgid "el" -msgstr "" +msgstr "эль" #: src/faction.cpp msgctxt "faction name" msgid "fes" -msgstr "" +msgstr "фес" #: src/faction.cpp msgctxt "faction name" msgid "gun" -msgstr "" +msgstr "гун" #: src/faction.cpp msgctxt "faction name" msgid "hit" -msgstr "попадание" +msgstr "хит" #: src/faction.cpp msgctxt "faction name" msgid "id" -msgstr "" +msgstr "ид" #: src/faction.cpp msgctxt "faction name" msgid "jan" -msgstr "" +msgstr "ян" #: src/faction.cpp msgctxt "faction name" msgid "kal" -msgstr "" +msgstr "каль" #: src/faction.cpp msgctxt "faction name" msgid "ler" -msgstr "" +msgstr "лер" #: src/faction.cpp msgctxt "faction name" msgid "mal" -msgstr "" +msgstr "мал" #: src/faction.cpp msgctxt "faction name" msgid "nor" -msgstr "" +msgstr "нор" #: src/faction.cpp msgctxt "faction name" msgid "or" -msgstr "" +msgstr "ор" #: src/faction.cpp msgctxt "faction name" msgid "pan" -msgstr "" +msgstr "пан" #: src/faction.cpp msgctxt "faction name" msgid "qua" -msgstr "" +msgstr "куа" #: src/faction.cpp msgctxt "faction name" msgid "ros" -msgstr "" +msgstr "рос" #: src/faction.cpp msgctxt "faction name" msgid "sin" -msgstr "" +msgstr "син" #: src/faction.cpp msgctxt "faction name" msgid "tor" -msgstr "" +msgstr "тор" #: src/faction.cpp msgctxt "faction name" msgid "urr" -msgstr "" +msgstr "урр" #: src/faction.cpp msgctxt "faction name" msgid "ven" -msgstr "" +msgstr "вен" #: src/faction.cpp msgctxt "faction name" msgid "wel" -msgstr "" +msgstr "вел" #: src/faction.cpp msgctxt "faction name" msgid "oxo" -msgstr "" +msgstr "оксо" #: src/faction.cpp msgctxt "faction name" msgid "yen" -msgstr "" +msgstr "йен" #: src/faction.cpp msgctxt "faction name" msgid "zu" -msgstr "" +msgstr "зу" #: src/faction.cpp msgctxt "faction adjective" msgid "Ald" -msgstr "" +msgstr "Алд" #: src/faction.cpp msgctxt "faction adjective" msgid "Brogg" -msgstr "" +msgstr "Брогг" #: src/faction.cpp msgctxt "faction adjective" msgid "Cald" -msgstr "" +msgstr "Калд" #: src/faction.cpp msgctxt "faction adjective" msgid "Dredd" -msgstr "" +msgstr "Страш" #: src/faction.cpp msgctxt "faction adjective" msgid "Eld" -msgstr "" +msgstr "Жутк" #: src/faction.cpp msgctxt "faction adjective" msgid "Forr" -msgstr "" +msgstr "Запрет" #: src/faction.cpp msgctxt "faction adjective" msgid "Gugg" -msgstr "" +msgstr "Гугг" #: src/faction.cpp msgctxt "faction adjective" msgid "Horr" -msgstr "" +msgstr "Кошм" #: src/faction.cpp msgctxt "faction adjective" msgid "Ill" -msgstr "" +msgstr "Илл" #: src/faction.cpp msgctxt "faction adjective" msgid "Jov" -msgstr "" +msgstr "Йов" #: src/faction.cpp msgctxt "faction adjective" msgid "Kok" -msgstr "" +msgstr "Кок" #: src/faction.cpp msgctxt "faction adjective" msgid "Lill" -msgstr "" +msgstr "Лилл" #: src/faction.cpp msgctxt "faction adjective" msgid "Moom" -msgstr "" +msgstr "Муум" #: src/faction.cpp msgctxt "faction adjective" msgid "Nov" -msgstr "" +msgstr "Нов" #: src/faction.cpp msgctxt "faction adjective" msgid "Orb" -msgstr "" +msgstr "Сфер" #: src/faction.cpp msgctxt "faction adjective" msgid "Perv" -msgstr "" +msgstr "Извра" #: src/faction.cpp msgctxt "faction adjective" msgid "Quot" -msgstr "" +msgstr "Квот" #: src/faction.cpp msgctxt "faction adjective" msgid "Rar" -msgstr "" +msgstr "Рар" #: src/faction.cpp msgctxt "faction adjective" msgid "Suss" -msgstr "" +msgstr "Сусс" #: src/faction.cpp msgctxt "faction adjective" msgid "Torr" -msgstr "" +msgstr "Торр" #: src/faction.cpp msgctxt "faction adjective" msgid "Umbr" -msgstr "" +msgstr "Тене" #: src/faction.cpp msgctxt "faction adjective" msgid "Viv" -msgstr "" +msgstr "Жизн" #: src/faction.cpp msgctxt "faction adjective" msgid "Warr" -msgstr "" +msgstr "Воин" #: src/faction.cpp msgctxt "faction adjective" msgid "Xen" -msgstr "" +msgstr "Чуже" #: src/faction.cpp msgctxt "faction adjective" msgid "Yend" -msgstr "" +msgstr "Йенд" #: src/faction.cpp msgctxt "faction adjective" msgid "Zor" -msgstr "" +msgstr "Зор" #: src/faction.cpp msgctxt "faction adjective" msgid "al" -msgstr "" +msgstr "ал" #: src/faction.cpp msgctxt "faction adjective" msgid "arn" -msgstr "" +msgstr "арн" #: src/faction.cpp msgctxt "faction adjective" msgid "astr" -msgstr "" +msgstr "астр" #: src/faction.cpp msgctxt "faction adjective" msgid "antr" -msgstr "" +msgstr "антр" #: src/faction.cpp msgctxt "faction adjective" msgid "ent" -msgstr "" +msgstr "ент" #: src/faction.cpp msgctxt "faction adjective" msgid "ell" -msgstr "" +msgstr "елл" #: src/faction.cpp msgctxt "faction adjective" msgid "ev" -msgstr "" +msgstr "ев" #: src/faction.cpp msgctxt "faction adjective" msgid "emm" -msgstr "" +msgstr "емм" #: src/faction.cpp msgctxt "faction adjective" msgid "empr" -msgstr "" +msgstr "емпр" #: src/faction.cpp msgctxt "faction adjective" msgid "ill" -msgstr "" +msgstr "илл" #: src/faction.cpp msgctxt "faction adjective" msgid "ial" -msgstr "" +msgstr "иал" #: src/faction.cpp msgctxt "faction adjective" msgid "ior" -msgstr "" +msgstr "иор" #: src/faction.cpp msgctxt "faction adjective" msgid "ordr" -msgstr "" +msgstr "ордр" #: src/faction.cpp msgctxt "faction adjective" msgid "oth" -msgstr "" +msgstr "от" #: src/faction.cpp msgctxt "faction adjective" msgid "omn" -msgstr "" +msgstr "омн" #: src/faction.cpp msgctxt "faction adjective" msgid "uv" -msgstr "" +msgstr "ув" #: src/faction.cpp msgctxt "faction adjective" msgid "ulv" -msgstr "" +msgstr "улв" #: src/faction.cpp msgctxt "faction adjective" msgid "urn" -msgstr "" +msgstr "урн" #: src/faction.cpp msgctxt "faction adjective" msgid "an" -msgstr "" +msgstr "ан" #: src/faction.cpp msgctxt "faction adjective" msgid "ard" -msgstr "" +msgstr "ард" #: src/faction.cpp msgctxt "faction adjective" msgid "ate" -msgstr "" +msgstr "ате" #: src/faction.cpp msgctxt "faction adjective" @@ -141447,7 +143494,7 @@ msgstr "" #: src/faction.cpp msgctxt "faction adjective" msgid "or" -msgstr "" +msgstr "ор" #: src/faction.cpp msgctxt "faction adjective" @@ -141497,7 +143544,7 @@ msgstr "Разыскиваемый преступник" #: src/faction.cpp msgid "Not Welcome" -msgstr "Нежеланный гость" +msgstr "Нежеланный" #: src/faction.cpp msgid "Pariah" @@ -141513,7 +143560,7 @@ msgstr "Герой" #: src/faction.cpp msgid "Idol" -msgstr "идол" +msgstr "Идол" #: src/faction.cpp msgid "Beloved" @@ -141553,7 +143600,7 @@ msgstr "Знаменитые" #: src/faction.cpp msgid "Well-Known" -msgstr "Знаменитые" +msgstr "Всем известные" #: src/faction.cpp msgid "Spoken Of" @@ -141577,7 +143624,7 @@ msgstr "Паразиты" #: src/faction.cpp msgid "Leech" -msgstr "Паразиты" +msgstr "Вымогатели" #: src/faction.cpp msgid "Laughingstock" @@ -141585,7 +143632,7 @@ msgstr "Посмешища" #: src/faction.cpp msgid "Filthy rich" -msgstr "Отвратительно богатые" +msgstr "Неприлично богатые" #: src/faction.cpp msgid "Affluent" @@ -141633,11 +143680,11 @@ msgstr "Побирающиеся" #: src/faction.cpp src/player_display.cpp msgid "Malnourished" -msgstr "Голодающие" +msgstr "Истощал" #: src/faction.cpp msgid "Starving" -msgstr "Голод" +msgstr "Голодающие" #: src/faction.cpp src/iuse_software_minesweeper.cpp msgid "Expert" @@ -141704,509 +143751,2262 @@ msgstr "Запасы еды: %s" msgid "Combat Ability: %s" msgstr "Боевые возможности: %s" -#: src/field.cpp -msgid "blood splatter" -msgstr "брызги крови" +#: src/faction_camp.cpp +msgid " [DONE]\n" +msgstr " [ГОТОВО]\n" -#: src/field.cpp -msgid "blood stain" -msgstr "пятно крови" +#: src/faction_camp.cpp +msgid " left]\n" +msgstr "" -#: src/field.cpp -msgid "puddle of blood" -msgstr "лужа крови" +#: src/faction_camp.cpp +msgid "Upgrade Camp" +msgstr "Улучшить лагерь" -#: src/field.cpp -msgid "bile splatter" -msgstr "брызги желчи" +#: src/faction_camp.cpp +msgid "Working to expand your camp!\n" +msgstr "Работает над расширением вашего лагеря!\n" -#: src/field.cpp -msgid "bile stain" -msgstr "пятно желчи" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?" +msgstr "" +"\n" +" \n" +"Вы хотите вернуть назад компаньонов в вашу группу?" -#: src/field.cpp -msgid "puddle of bile" -msgstr "лужа желчи" +#: src/faction_camp.cpp +msgid "Recover Ally from Upgrading" +msgstr "Снять компаньона с улучшения" -#: src/field.cpp -msgid "bloody meat chunks" -msgstr "куски мяса с кровью" +#: src/faction_camp.cpp +msgid "Busy crafting!\n" +msgstr "Занят на производстве!\n" -#: src/field.cpp -msgid "heap of gore" -msgstr "море кровищи" +#: src/faction_camp.cpp +msgid " (Finish) Crafting" +msgstr " (Закончить) Создание предметов" -#: src/field.cpp -msgid "scraps of flesh" -msgstr "куски плоти" +#: src/faction_camp.cpp +msgid "Gather Materials" +msgstr "Сбор материалов" -#: src/field.cpp -msgid "broken vegetation tangle" -msgstr "клубок из поломанной зелени" +#: src/faction_camp.cpp +msgid "Searching for materials to upgrade the camp.\n" +msgstr "Ищет материалы для улучшения лагеря.\n" -#: src/field.cpp -msgid "shattered branches and leaves" -msgstr "обломки веток и листва" +#: src/faction_camp.cpp +msgid "Recover Ally from Gathering" +msgstr "Снять компаньона со сбора материалов" -#: src/field.cpp -msgid "shredded leaves and twigs" -msgstr "порубленые листья и ветки" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" +" \n" +"Effects:\n" +"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" +" \n" +"Must have enjoyability >= -6\n" +"Perishable food liquidated at penalty depending on upgrades and rot time:\n" +"> Rotten: 0%%\n" +"> Rots in < 2 days: 60%%\n" +"> Rots in < 5 days: 80%%\n" +" \n" +"Total faction food stock: %d kcal or %d day's rations" +msgstr "" +"Примечание:\n" +"Распределить еду среди всех ваших компаньонов и заполнить кладовые. Положите еду, которую вы хотите распределить, напротив двери палатки, между менеджером и стеной.\n" +" \n" +"Эффекты:\n" +"> Увеличивает ваши запасы еды, которые в свою очередь, используются для оплаты труда рабочим.\n" +" \n" +"Должна иметь удовольствие >= -6\n" +"Скоропортящаяся еда ликвидируется как штраф в зависимости от улучшений лагеря и скорости гниения:\n" +"> Гнилое: 0%%\n" +"> Сгниёт через < 2 дня: 60%%\n" +"> Сгниёт через < 5 дней: 80%%\n" +" \n" +"Запас продуктов питания: %d ккал или %d дневных рационов." -#: src/field.cpp -msgid "cobwebs" -msgstr "паутина" +#: src/faction_camp.cpp +msgid "Distribute Food" +msgstr "Распределить еду" -#: src/field.cpp -msgid "thick webs" -msgstr "плотная паутина" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" +" \n" +"Effects:\n" +"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" +"> Items sitting on any type of furniture will not be moved.\n" +"> Items that are not listed in one of the categories are defaulted to the tools group." +msgstr "" +"Примечание:\n" +"Сбросить список предметов, которые сортируются для использования в миссии [ Черновая работа ].\n" +" \n" +"Эффекты:\n" +"> Назначаемые типы: еда, еда для распределения, семена, оружие, одежда, бионика, все виды инструментов, древесина, мусор, книги, медикаменты, и амуниция.\n" +"> Предметы, расположенные на любом типе мебели, не будут перемещены.\n" +"> Предметы, которые не входят ни в одну категорию, по умолчанию группируются вместе с инструментами." -#: src/field.cpp -msgid "webs" -msgstr "паутина" +#: src/faction_camp.cpp +msgid "Reset Sort Points" +msgstr "Сбросить очки сортировки" -#: src/field.cpp -msgid "puddle of slime" -msgstr "лужа слизи" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to gather light brush and heavy sticks.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +"> heavy sticks\n" +"> withered plants\n" +"> splintered wood\n" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" +"Примечание:\n" +"Отправить компаньона собирать мелкие кустарники и палки.\n" +" \n" +"Используемый навык: выживание\n" +"Сложность: Н/Д\n" +"Возможная добыча:\n" +"> тяжёлые палки\n" +"> увядшие растения\n" +"> расколотая древесина\n" +" \n" +"Риск: Очень низкий\n" +"Время: 3 часа, Повторяемо\n" +"Расстояние: %d/3\n" -#: src/field.cpp -msgid "slime stain" -msgstr "пятно слизи" +#: src/faction_camp.cpp +msgid "Collect Firewood" +msgstr "Сбор дров" -#: src/field.cpp -msgid "slime trail" -msgstr "следы слизи" +#: src/faction_camp.cpp +msgid "Searching for firewood.\n" +msgstr "Ищет дрова.\n" -#: src/field.cpp -msgid "acid splatter" -msgstr "брызги кислоты" +#: src/faction_camp.cpp +msgid "Recover Firewood Gatherers" +msgstr "Снять компаньона со сбора дров" -#: src/field.cpp -msgid "acid streak" -msgstr "полоса кислоты" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to do low level chores and sort supplies.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" +"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours\n" +"Positions: %d/1\n" +msgstr "" +"Примечание:\n" +"Отправить компаньона исполнять мелкие поручения или сортировать предметы.\n" +" \n" +"Используемый навык: производство\n" +"Сложность: Н/Д\n" +"Эффекты:\n" +"> Материалы оставленные снаружи на земле, будут сортироваться в 4 ящика перед палаткой.\n" +"По умолчанию, сверху вниз: Одежда, Еда, Книги/Бионика, и Инструменты. Дерево будет сложено на юг. Мусор на севере.\n" +" \n" +"Риск: Нет\n" +"Время: 3 часа\n" +"Расстояние: %d/1\n" -#: src/field.cpp -msgid "pool of acid" -msgstr "кислотная лужа" +#: src/faction_camp.cpp +msgid "Menial Labor" +msgstr "Черновая работа" -#: src/field.cpp -msgid "glob of sap" -msgstr "глобула с соком растения" +#: src/faction_camp.cpp +msgid "Performing menial labor...\n" +msgstr "Выполняет черновую работу...\n" -#: src/field.cpp -msgid "pool of sap" -msgstr "лужа растительного сока" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?\n" +msgstr "" +"\n" +" \n" +"Вы хотите вернуть компаньонов в вашу группу?\n" -#: src/field.cpp -msgid "sap splatter" -msgstr "брызги растительного сока" +#: src/faction_camp.cpp +msgid "Recover Menial Laborer" +msgstr "Снять чернорабочего" -#: src/field.cpp -msgid "sludge trail" -msgstr "след ила" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours \n" +"Positions: %d/1\n" +msgstr "" +"Примечание:\n" +"Ваша база стала достаточно большой, чтобы появилась возможность расширить её. Расширение базы даёт немало новых возможностей, но в то же время это очень дорогостоящая в плане ресурсов и времени процедура. Выбирайте расширения осмотрительно, каждую базу можно расширить только 8 раз.\n" +" \n" +"Используемый навык: производство\n" +"Сложность: Н/Д\n" +"Эффекты:\n" +"> Выберите любое из доступных расширений. Хорошим выбором будет начать с фермы или склада древесины, так как еда требуется для поддержки сопутствующих миссий, а древесина это основной строительный материал.\n" +" \n" +"Риск: Нет\n" +"Время: 3 часа\n" +"Расстояние: %d/1\n" -#: src/field.cpp -msgid "thick sludge trail" -msgstr "толстый след ила" +#: src/faction_camp.cpp +msgid "Expand Base" +msgstr "Расширить базу" -#: src/field.cpp -msgid "thin sludge trail" -msgstr "тонкий след ила" +#: src/faction_camp.cpp +msgid "Surveying for expansion...\n" +msgstr "Обследует местность под расширение...\n" -#: src/field.cpp -msgid "fire" -msgstr "огонь" +#: src/faction_camp.cpp +msgid "Recover Surveyor" +msgstr "Снять компаньона с обследования местности" -#: src/field.cpp -msgid "raging fire" -msgstr "бушующий огонь" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to a nearby forest to cut logs.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: 1 \n" +"Effects:\n" +"> 50%% of trees/trunks at the forest position will be cut down.\n" +"> 100%% of total material will be brought back.\n" +"> Repeatable with diminishing returns.\n" +" \n" +"Risk: None\n" +"Time: 6 Hour Base + Travel Time + Cutting Time\n" +"Positions: %d/1\n" +msgstr "" +"Примечание:\n" +"Отправить компаньона в ближайший лес, нарубить дров.\n" +" \n" +"Используемый навык: производство\n" +"Сложность: 1\n" +"Эффекты:\n" +"> 50%% деревьев/стволов в лесу будет срублено.\n" +"> 100%% добытых ресурсов будет получено.\n" +"> Повторяемые операции уменьшают количество добытых ресурсов.\n" +" \n" +"Риск: Отсутствует\n" +"Время: 6 часов + путешествие + время рубки\n" +"Расстояние: %d/1\n" -#: src/field.cpp -msgid "small fire" -msgstr "слабый огонь" +#: src/faction_camp.cpp +msgid "Cut Logs" +msgstr "Валить лес" -#: src/field.cpp -msgid "legacy rubble" -msgstr "" +#: src/faction_camp.cpp +msgid "Cutting logs in the woods...\n" +msgstr "Валит лес...\n" -#: src/field.cpp -msgid "smoke" -msgstr "дым" +#: src/faction_camp.cpp +msgid "Recover Log Cutter" +msgstr "Снять лесоруба" -#: src/field.cpp -msgid "thick smoke" -msgstr "густой дым" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Good for setting up resupply or contingency points.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward.\n" +" \n" +"Risk: Medium\n" +"Time: 6 Hour Construction + Travel\n" +"Positions: %d/1\n" +msgstr "" +"Примечание:\n" +"Отправить компаньона для строительства временного укрытия и обеспечения снаряжением на удалённом месте карты.\n" +" \n" +"Используемый навык: выживание\n" +"Сложность: 3\n" +"Эффекты:\n" +"> Полезно для создания точек снабжения или резерва на непредвиденные обстоятельства.\n" +"> Снаряжение остаётся без присмотра, и может быть украдено.\n" +"> Время зависит от веса отправляемого снаряжения.\n" +" \n" +"Риск: Средний\n" +"Время: 6 часов на Строительство + путешествие\n" +"Расстояние: %d/1\n" -#: src/field.cpp -msgid "thin smoke" -msgstr "тонкий дымок" +#: src/faction_camp.cpp +msgid "Setup Hide Site" +msgstr "Установить укрытие" -#: src/field.cpp -msgid "hazy cloud" -msgstr "туманное облако" +#: src/faction_camp.cpp +msgid "Setting up a hide site...\n" +msgstr "Устанавливает укрытие...\n" -#: src/field.cpp -msgid "thick toxic gas" -msgstr "густой токсичный газ" +#: src/faction_camp.cpp +msgid "Recover Hide Setup" +msgstr "Снять укрытие" -#: src/field.cpp -msgid "toxic gas" -msgstr "токсичный газ" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Push gear out to a hide site or bring gear back from one.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 1\n" +"Effects:\n" +"> Good for returning equipment you left in the hide site shelter.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward or back.\n" +" \n" +"Risk: Medium\n" +"Time: 1 Hour Base + Travel\n" +"Positions: %d/1\n" +msgstr "" +"Примечание:\n" +"Отправить компаньона перенести снаряжение в одно из ваших укрытий или же вернуть снаряжение обратно вам.\n" +" \n" +"Используемый навык: выживание\n" +"Сложность: 1\n" +"Эффекты:\n" +"> Полезно для возвращения снаряжения, которое вы оставили в одном из укрытий.\n" +"> Снаряжение остаётся без присмотра, и может быть украдено.\n" +"> Время зависит от веса отправляемого снаряжения или возвращаемого.\n" +" \n" +"Риск: Средний\n" +"Время: 1 час + путешествие\n" +"Расстояние: %d/1\n" -#: src/field.cpp -msgid "tear gas" -msgstr "слезоточивый газ" +#: src/faction_camp.cpp +msgid "Relay Hide Site" +msgstr "Сменить укрытие" -#: src/field.cpp -msgid "thick tear gas" -msgstr "густой слезоточивый газ" +#: src/faction_camp.cpp +msgid "Transfering gear to a hide site...\n" +msgstr "Переносит снаряжение в укрытие...\n" -#: src/field.cpp -msgid "radioactive gas" -msgstr "радиоактивный газ" +#: src/faction_camp.cpp +msgid "Recover Hide Relay" +msgstr "Снять компаньона со смены укрытия" -#: src/field.cpp -msgid "thick radioactive gas" -msgstr "стена радиоактивного газа" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to edible plans.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Foraging Possibilities:\n" +"> wild vegetables\n" +"> fruits and nuts dependening on season\n" +"May produce less food than consumed!\n" +"Risk: Very Low\n" +"Time: 4 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" +"Примечание:\n" +"Отправить компаньона добывать съедобные растения.\n" +" \n" +"Используемый навык: выживание\n" +"Сложность: Н/Д\n" +"Возможно добыть:\n" +"> дикие овощи.\n" +"> фрукты и орехи, в зависимости от сезона.\n" +"Может добывать меньше еды, чем потребляет!\n" +" \n" +"Риск: Очень низкий\n" +"Время: 4 часа, Повторяемо\n" +"Расстояние: %d/3\n" -#: src/field.cpp -msgid "gas vent" -msgstr "вытяжка" +#: src/faction_camp.cpp +msgid "Forage for plants" +msgstr "Собирать растения" -#: src/field.cpp -msgid "electric cloud" -msgstr "наэлектризованное облако" +#: src/faction_camp.cpp +msgid "Foraging for edible plants.\n" +msgstr "Собирает съедобные растения.\n" -#: src/field.cpp -msgid "electric crackle" -msgstr "электрические разряды" +#: src/faction_camp.cpp +msgid "Recover Foragers" +msgstr "Снять компаньона со сбора растений" -#: src/field.cpp -msgid "sparks" -msgstr "искры" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to set traps for small game.\n" +" \n" +"Skill used: trapping\n" +"Difficulty: N/A \n" +"Trappinng Possibilities:\n" +"> small and tiny animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Low\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/2\n" +msgstr "" +"Примечание:\n" +"Отправить компаньона установить ловушки на мелкую дичь.\n" +" \n" +"Используемый навык: ловушки\n" +"Сложность: Н/Д\n" +"Возможно добыть:\n" +"> маленькие и крошечные тушки животных.\n" +"Может добывать меньше еды, чем потребляет!\n" +" \n" +"Риск: Низкий\n" +"Время: 6 часов, Повторяемо\n" +"Расстояние: %d/2\n" -#: src/field.cpp -msgid "odd ripple" -msgstr "странная рябь" +#: src/faction_camp.cpp +msgid "Trap Small Game" +msgstr "Установить ловушки" -#: src/field.cpp -msgid "swirling air" -msgstr "кружащийся воздух" +#: src/faction_camp.cpp +msgid "Trapping Small Game.\n" +msgstr "Устанавливает ловушки.\n" -#: src/field.cpp -msgid "tear in reality" -msgstr "дыра в пространстве" +#: src/faction_camp.cpp +msgid "Recover Trappers" +msgstr "Снять компаньона с установки ловушек" -#: src/field.cpp -msgid "faint plasma" -msgstr "бледная плазма" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to hunt large animals.\n" +" \n" +"Skill used: marksmanship\n" +"Difficulty: N/A \n" +"Hunting Possibilities:\n" +"> small, medium, or large animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Medium\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/1\n" +msgstr "" +"Примечание:\n" +"Отправить компаньона охотиться на крупных животных.\n" +" \n" +"Используемый навык: меткость\n" +"Сложность: Н/Д\n" +"Возможно добыть:\n" +"> маленькие, средние или крупные туши животных.\n" +"Может добывать меньше еды, чем потребляет!\n" +" \n" +"Риск: Средний\n" +"Время: 6 часов, Повторяемо\n" +"Расстояние: %d/1\n" -#: src/field.cpp -msgid "glaring plasma" -msgstr "ослепительно яркая плазма" +#: src/faction_camp.cpp +msgid "Hunt Large Animals" +msgstr "Охота" -#: src/field.cpp -msgid "glowing plasma" -msgstr "яркая плазма" +#: src/faction_camp.cpp +msgid "Hunting large animals.\n" +msgstr "Охотится.\n" -#: src/field.cpp -msgid "beam of light" -msgstr "светлый луч" +#: src/faction_camp.cpp +msgid "Recover Hunter" +msgstr "Снять охотника" -#: src/field.cpp -msgid "faint glimmer" -msgstr "бледный луч" +#: src/faction_camp.cpp +msgid "Construct Map Fortifications" +msgstr "Построить укрепления на карте" -#: src/field.cpp -msgid "intense beam of light" -msgstr "интенсивный луч света" +#: src/faction_camp.cpp +msgid "Construct Spiked Trench" +msgstr "Построить шипованную траншею" -#: src/field.cpp -msgid "spotlight" -msgstr "прожектор" +#: src/faction_camp.cpp +msgid "Constructing fortifications...\n" +msgstr "Строит укрепления...\n" -#: src/field.cpp -msgid "dazzling" -msgstr "блеск" +#: src/faction_camp.cpp +msgid "Finish Map Fortifications" +msgstr "Заканчивает укрепления на карте" -#: src/field.cpp -msgid "plant sap splatter" -msgstr "брызги древесного сока" +#: src/faction_camp.cpp +msgid "Recruit Companions" +msgstr "Нанять компаньонов" -#: src/field.cpp -msgid "plant sap stain" -msgstr "пятно древесного сока" +#: src/faction_camp.cpp +msgid "Searching for recruits.\n" +msgstr "Ищет новобранцев.\n" -#: src/field.cpp -msgid "puddle of resin" -msgstr "лужа из смолы" +#: src/faction_camp.cpp +msgid "Recover Recruiter" +msgstr "Снять вербовщика" -#: src/field.cpp -msgid "bug blood splatter" -msgstr "брызги крови насекомого" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Select checkpoints to customize path.\n" +"> Reveals terrain around the path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" +"Примечание:\n" +"Отправить компаньона в неизведанное. Высокие навыки выживания потребуются чтобы избежать боя, но всё же следует ожидать пару-тройку столкновений с врагом.\n" +" \n" +"Используемый навык: выживание\n" +"Сложность: 3\n" +"Эффекты:\n" +"> Выберите контрольные точки для настройки пути.\n" +"> Открывает местность по пути следования.\n" +"> Может двигаться от укрытия к укрытию, чтобы увеличить дальность.\n" +" \n" +"Риск: Высокий\n" +"Время: Путешествие\n" +"Расстояние: %d/3\n" -#: src/field.cpp -msgid "bug blood stain" -msgstr "пятно из крови насекомого" +#: src/faction_camp.cpp +msgid "Scout Mission" +msgstr "Задание разведчика" -#: src/field.cpp -msgid "puddle of bug blood" -msgstr "лужа из крови насекомого" +#: src/faction_camp.cpp +msgid "Scouting the region.\n" +msgstr "Разведует регион.\n" -#: src/field.cpp -msgid "hemolymph splatter" -msgstr "брызги гемолимфы" +#: src/faction_camp.cpp +msgid "Recover Scout" +msgstr "Снять разведчика" -#: src/field.cpp -msgid "hemolymph stain" -msgstr "пятно гемолимфы" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 4\n" +"Effects:\n" +"> Pulls creatures encountered into combat instead of fleeing.\n" +"> Select checkpoints to customize path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: Very High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" +"Примечание:\n" +"Отправьте компаньона на зачистку пустоши. Их задачей будет уничтожать всё враждебное на своём пути и вернуться на базу, когда их раны станут слишком тяжёлыми, или шансы на победу крайне малы.\n" +" \n" +"Используемый навык: выживание\n" +"Сложность: 4\n" +"Эффекты:\n" +"> Вступает в бой с существами, вместо того, чтобы бежать от них.\n" +"> Выберите контрольные точки для настройки пути.\n" +"> Может двигаться от укрытия к укрытию, чтобы увеличить дальность.\n" +" \n" +"Риск: Очень высокий\n" +"Время: Путешествие\n" +"Расстояние: %d/3\n" -#: src/field.cpp -msgid "puddle of hemolymph" -msgstr "лужа гемолимфы" +#: src/faction_camp.cpp +msgid "Combat Patrol" +msgstr "Боевой патруль" -#: src/field.cpp -msgid "shards of chitin" -msgstr "осколки хитина" +#: src/faction_camp.cpp +msgid "Patrolling the region.\n" +msgstr "Патрулирует регион.\n" -#: src/field.cpp -msgid "shattered bug leg" -msgstr "разбитая нога насекомого" +#: src/faction_camp.cpp +msgid "Recover Combat Patrol" +msgstr "Снять боевой патруль" -#: src/field.cpp -msgid "torn insect organs" -msgstr "разодранные органы насекомого" +#: src/faction_camp.cpp +msgid " Expansion Upgrade" +msgstr "Улучшение расширения" -#: src/field.cpp -msgid "gooey scraps" -msgstr "клейкие обрывки" +#: src/faction_camp.cpp +msgid "Working to upgrade your expansions!\n" +msgstr "Работает над постройкой расширений!\n" -#: src/field.cpp -msgid "heap of squishy gore" -msgstr "море запёкшейся крови" +#: src/faction_camp.cpp +msgid " Expansion" +msgstr "Расширение" -#: src/field.cpp -msgid "icky mess" -msgstr "липкое месиво" +#: src/faction_camp.cpp +msgid "Recover Ally, " +msgstr "Снять компаньона, " -#: src/field.cpp -msgid "swirl of tobacco smoke" -msgstr "обволакивающий табачный дым" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Have a companion attempt to completely dissemble a vehicle into components.\n" +" \n" +"Skill used: mechanics\n" +"Difficulty: 2 \n" +"Effects:\n" +"> Removed parts placed on the furniture in the garage.\n" +"> Skill plays a huge role to determine what is salvaged.\n" +" \n" +"Risk: None\n" +"Time: Skill Based \n" +msgstr "" +"Примечание:\n" +"Отправьте компаньона попытаться полностью разобрать транспорт на компоненты.\n" +" \n" +"Используемый навык: механика\n" +"Сложность: 2\n" +"Эффекты:\n" +"> Снятые запчасти помещаются в мебели в гараже.\n" +"> Навык играет огромную роль в том, что именно удастся получить.\n" +" \n" +"Риск: Нет\n" +"Время: Зависит от навыка\n" -#: src/field.cpp -msgid "thick tobacco smoke" -msgstr "густой табачный дым" +#: src/faction_camp.cpp +msgid " Chop Shop" +msgstr " Разобрать транспорт" -#: src/field.cpp -msgid "tobacco smoke" -msgstr "табачный дым" +#: src/faction_camp.cpp +msgid "Working at the chop shop...\n" +msgstr "Работает над разборкой...\n" -#: src/field.cpp -msgid "pot smoke" -msgstr "дым марихуаны" +#: src/faction_camp.cpp +msgid " (Finish) Chop Shop" +msgstr " (Закончить) Разборка транспорта" -#: src/field.cpp -msgid "swirl of pot smoke" -msgstr "обволакивающий дым марихуаны" +#: src/faction_camp.cpp +msgid "Working in your kitchen!\n" +msgstr "Работает в вашей кухне!\n" -#: src/field.cpp -msgid "thick pot smoke" -msgstr "густой дым марихуаны" +#: src/faction_camp.cpp +msgid " (Finish) Cooking" +msgstr " (Закончить) Готовка" -#: src/field.cpp -msgid "crack smoke" -msgstr "дым кокаина" +#: src/faction_camp.cpp +msgid "Working in your blacksmith shop!\n" +msgstr "Работает в вашей кузнице!\n" -#: src/field.cpp -msgid "swirl of crack smoke" -msgstr "обволакивающий дым кокаина" +#: src/faction_camp.cpp +msgid " (Finish) Smithing" +msgstr " (Закончить) Кузнечные работы" -#: src/field.cpp -msgid "thick crack smoke" -msgstr "густой дым кокаина" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plow any spaces that have reverted to dirt or grass.\n" +" \n" +msgstr "" +"Примечание:\n" +"Пахать любые участки, которые снова превратились в грязь или заросли травой.\n" -#: src/field.cpp -msgid "meth smoke" -msgstr "дым мета" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Restores only the plots created in the last expansion upgrade.\n" +"> Does not damage existing crops.\n" +" \n" +"Risk: None\n" +"Time: 5 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"Используемый навык: производство\n" +"Сложность: Н/Д\n" +"Эффекты:\n" +"> Восстанавливает только участки, созданные при последнем улучшении расширений.\n" +"> Не повреждает существующий урожай.\n" +" \n" +"Риск: Отсутствует\n" +"Время: 5 минут / участок\n" +"Занятость: 0/1 \n" -#: src/field.cpp -msgid "swirl of meth smoke" -msgstr "обволакивающий дым мета" +#: src/faction_camp.cpp +msgid " Plow Fields" +msgstr "Вспахивание полей" -#: src/field.cpp -msgid "thick meth smoke" -msgstr "густой дым мета" +#: src/faction_camp.cpp +msgid "Working to plow your fields!\n" +msgstr "Работает вспахивая ваши поля!\n" -#: src/field.cpp -msgid "angry swarm of bees" -msgstr "разозлённый пчелиный рой" +#: src/faction_camp.cpp +msgid " (Finish) Plow Fields" +msgstr " (Закончить) Вспахивание полей" -#: src/field.cpp -msgid "some bees" -msgstr "несколько пчёл" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plant designated seeds in the spaces that have already been tilled.\n" +" \n" +msgstr "" +"Примечание:\n" +"Сажайте семена в местах, которые уже были вспаханы.\n" +" \n" -#: src/field.cpp -msgid "swarm of bees" -msgstr "пчелиный рой" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose which seed type or all of your seeds.\n" +"> Stops when out of seeds or planting locations.\n" +"> Will plant in ALL dirt mounds in the expansion.\n" +" \n" +"Risk: None\n" +"Time: 1 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"Используемый навык: выживание\n" +"Сложность: Н/Д\n" +"Эффекты:\n" +"> Выбирайте тип семян или все ваши семена.\n" +"> Останавливается, когда заканчиваются семена или участки под посадку.\n" +"> Будет сажать во ВСЕХ вспаханных участках в пределах расширения.\n" +" \n" +"Риск: Отсутствует\n" +"Время: 1 минута / участок\n" +"Занятость: 0/1\n" -#: src/field.cpp -msgid "airborne incendiary" -msgstr "зажигательное вещество в воздухе" +#: src/faction_camp.cpp +msgid " Plant Fields" +msgstr "Посадка полей" -#: src/field.cpp -msgid "relaxation gas" -msgstr "расслабляющий газ" +#: src/faction_camp.cpp +msgid "Working to plant your fields!\n" +msgstr "Работает высаживая ваши поля!\n" -#: src/field.cpp -msgid "sedative gas" -msgstr "седативный газ" +#: src/faction_camp.cpp +msgid " (Finish) Plant Fields" +msgstr " (Закончить) Посадку полей" -#: src/field.cpp -msgid "fungal haze" -msgstr "грибковая дымка" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Harvest any plants that are ripe and bring the produce back.\n" +" \n" +msgstr "" +"Примечание:\n" +"Собирайте созревший урожай и приносите его обратно в лагерь.\n" +" \n" -#: src/field.cpp -msgid "thick fungal haze" -msgstr "плотная грибковая дымка" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Will dump all harvesting products onto your location.\n" +" \n" +"Risk: None\n" +"Time: 3 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"Используемый навык: выживание\n" +"Сложность: Н/Д\n" +"Эффекты:\n" +"> В эту локацию будет собираться весь урожай.\n" +" \n" +"Риск: Отсутствует\n" +"Время: 3 минуты / участок\n" +"Занятость: 0/1\n" -#: src/field.cpp -msgid "fungicidal gas" -msgstr "фунгицидный газ" +#: src/faction_camp.cpp +msgid " Harvest Fields" +msgstr "Сбор урожая с полей" -#: src/field.cpp -msgid "thick fungicidal gas" -msgstr "плотный фунгицидный газ" +#: src/faction_camp.cpp +msgid "Working to harvest your fields!\n" +msgstr "Работает собирая урожай с ваших полей!\n" -#: src/field.cpp -msgid "smoke vent" -msgstr "дым из вытяжки" +#: src/faction_camp.cpp +msgid " (Finish) Harvest Fields" +msgstr " (Закончить) Сбор урожая" -#: src/field.cpp -msgid "Whew... smells like skunk!" -msgstr "Фу… воняет как скунс!" +#: src/faction_camp.cpp +msgid "Working on your farm!\n" +msgstr "Работает на вашей ферме!\n" -#: src/field.cpp -msgid "Man, that smells like some good shit!" -msgstr "Чувак, эта хрень неплохо пахнет!" +#: src/faction_camp.cpp +msgid "departs to search for materials..." +msgstr "отправляется на поиск материалов..." -#: src/field.cpp -msgid "I don't know... should you really be smoking that stuff?" -msgstr "Я не знаю… ты в самом деле будешь курить эту штуку?" +#: src/faction_camp.cpp +msgid "There are too many companions working on this mission!" +msgstr "Это задание выполняет слишком много компаньонов!" -#: src/field.cpp -msgid "Ew, smells like burning rubber!" -msgstr "Бе, пахнет как жжёная резина!" +#: src/faction_camp.cpp +msgid "departs to search for firewood..." +msgstr "отправляется на поиск дров..." -#: src/field.cpp -msgid "Ugh, that smells rancid!" -msgstr "Ух, воняет тухлятиной!" +#: src/faction_camp.cpp +msgid "You don't have enough food stored to feed your companion." +msgstr "Ваших запасов еды не хватает, чтобы накормить вашего компаньона." -#: src/field.cpp +#: src/faction_camp.cpp +msgid "departs to dig ditches and scrub toilets..." +msgstr "отправляется на чистку туалетов..." + +#: src/faction_camp.cpp #, c-format -msgid "A %s hits you!" -msgstr "%s бьёт вас!" +msgid "%s returns from working in the woods..." +msgstr "%s возвращается с работы в лесу..." -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits %2$s!" -msgstr "%1$s бьёт %2$s!" +msgid "%s returns from working on the hide site..." +msgstr "%s возвращается с работы по установке укрытия..." -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits the %2$s!" -msgstr "%1$s бьёт %2$s!" +msgid "%s returns from shuttling gear between the hide site..." +msgstr "%s возвращается с перевозки снаряжения между укрытиями..." -#: src/field.cpp -msgid "The acid burns your body!" -msgstr "Кислота жжёт ваше тело!" +#: src/faction_camp.cpp +msgid "departs to search for edible plants..." +msgstr "отправляется на поиски съедобных растений..." -#: src/field.cpp -msgid "The acid burns s body!" -msgstr "Кислота жжёт тело !" +#: src/faction_camp.cpp +msgid "departs to set traps for small animals..." +msgstr "отправляется устанавливать ловушки на мелких животных..." -#: src/field.cpp -msgid "The acid burns your legs and feet!" -msgstr "Кислота разъедает ваши ноги" +#: src/faction_camp.cpp +msgid "departs to hunt for meat..." +msgstr "отправляется охотиться на крупных животных..." -#: src/field.cpp -msgid "The acid burns s legs and feet!" -msgstr "Кислота разъедает ноги и ступни !" +#: src/faction_camp.cpp +msgid "departs to search for recruits..." +msgstr "отправляется на поиски новобранцев..." -#: src/field.cpp -msgid "You're lying in a pool of acid" -msgstr "Вы лежите в кислотной луже." +#: src/faction_camp.cpp +msgid "departs to survey land..." +msgstr "отправляется на обследование местности..." -#: src/field.cpp -msgid "You're standing in a pool of acid" -msgstr "Вы стоите в кислотной луже." +#: src/faction_camp.cpp +msgid "You have already selected a surveyor!" +msgstr "Вы уже выбрали инспектора местности!" -#: src/field.cpp -msgid "The sap sticks to you!" -msgstr "К вашим ногам липнет растительный сок!" +#: src/faction_camp.cpp +msgid "begins to upgrade the expansion..." +msgstr "начинает улучшать расширение..." -#: src/field.cpp -msgid "The sap sticks to !" -msgstr "Растительный сок липнет к !" +#: src/faction_camp.cpp +msgid "You already have a worker upgrading that expansion!" +msgstr "Вы уже назначили человека на работу по улучшению этого расширения!" -#: src/field.cpp -msgid "The sludge is thick and sticky. You struggle to pull free." -msgstr "Грязь густая и липкая. Вам тяжело выбраться." +#: src/faction_camp.cpp +msgid "You don't have the materials for the upgrade." +msgstr "Вам не хватает материалов для улучшения." -#: src/field.cpp -msgid "You burn your legs and feet!" -msgstr "Вы обожгли ноги и ступни!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your farm with something..." +msgstr "%s возвращается с фермы, неся кое-что..." -#: src/field.cpp -msgid "You're burning up!" -msgstr "Вы горите!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns to you with something..." +msgstr "%s возвращается к вам, неся кое-что..." -#: src/field.cpp -msgid "You're set ablaze!" -msgstr "Вы полыхаете!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your kitchen with something..." +msgstr "%s возвращается из кухни, неся кое-что..." -#: src/field.cpp -msgid "Your whole body is burning!" -msgstr "Всё ваше тело горит!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your blacksmith shop with something..." +msgstr "%s возвращается из кузницы, неся кое-что..." -#: src/field.cpp -msgid " burns their legs and feet!" -msgstr " обжигает себе ноги и ступни!" +#: src/faction_camp.cpp +msgid "begins plowing the field..." +msgstr "начинает вскапывать поле..." -#: src/field.cpp -msgid " is burning up!" -msgstr " воспламеняется!" +#: src/faction_camp.cpp +msgid "You already have someone plowing that field." +msgstr "Вы уже назначили человека на вскапывание этого поля." -#: src/field.cpp -msgid " is set ablaze!" -msgstr " загорелся!" +#: src/faction_camp.cpp +msgid "You have no additional seeds to give your companions..." +msgstr "" +"У вас нет дополнительных семян, которые вы могли бы дать компаньонам..." -#: src/field.cpp -msgid "s whole body is burning!" -msgstr "Всё тело горит!" +#: src/faction_camp.cpp +msgid "begins planting the field..." +msgstr "начинает высаживать поле..." -#: src/field.cpp -msgid "You're standing in a fire!" -msgstr "Вы стоите в огне!" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Which seeds do you wish to have planted?" +msgstr "Какие семена вы хотели бы посадить?" -#: src/field.cpp -msgid "You're waist-deep in a fire!" -msgstr "Вы по пояс в огне!" +#: src/faction_camp.cpp +msgid "You already have someone planting that field." +msgstr "Вы уже назначили человека на высаживание этого поля." -#: src/field.cpp -msgid "You're surrounded by raging fire!" -msgstr "Вы окружены бушующим пожаром!" +#: src/faction_camp.cpp +msgid "begins to harvest the field..." +msgstr "начинает собирать урожай с поля..." -#: src/field.cpp -msgid "You're lying in fire!" -msgstr "Вы лежите в огне!" +#: src/faction_camp.cpp +msgid "You already have someone harvesting that field." +msgstr "Вы уже назначили человека на сбор урожая с этого поля." -#: src/field.cpp +#: src/faction_camp.cpp +msgid "You already have someone working in that garage." +msgstr "Вы уже назначили человека на работу в этом гараже." + +#: src/faction_camp.cpp #, c-format -msgid "You feel sick from inhaling the %s" -msgstr "Вас тошнит от вдыхания %s" +msgid "%s returns from your garage..." +msgstr "%s возвращается из гаража..." -#: src/field.cpp -msgid "This radioactive gas burns!" -msgstr "Этот радиоактивный газ обжигает вас!" +#: src/faction_camp.cpp +msgid "You already have a companion upgrading the camp." +msgstr "Вы уже назначили компаньона на улучшение лагеря." + +#: src/faction_camp.cpp +msgid "begins to upgrade the camp..." +msgstr "начинает улучшать лагерь..." + +#: src/faction_camp.cpp +msgid "Forests and swamps are the only valid cutting locations." +msgstr "Леса и болота - единственные подходящие места для добычи." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Trip Estimate:\n" +"%s" +msgstr "" +"Время на дорогу:\n" +"%s" + +#: src/faction_camp.cpp +msgid "departs to cut logs..." +msgstr "отправляется валить лес..." + +#: src/faction_camp.cpp +msgid "Forests, swamps, and fields are valid hide site locations." +msgstr "Леса, болота и поля - подходящие места для укрытия." + +#: src/faction_camp.cpp +msgid "departs to build a hide site..." +msgstr "отправляется строить укрытие..." + +#: src/faction_camp.cpp +msgid "You need equipment to setup a hide site..." +msgstr "Вам нужно снаряжение для установки укрытия..." + +#: src/faction_camp.cpp +msgid "You must select an existing hide site." +msgstr "Вы должны выбрать уже существующее укрытие." + +#: src/faction_camp.cpp +msgid "Bring gear back?" +msgstr "Вернуть снаряжение обратно?" + +#: src/faction_camp.cpp +msgid "departs for the hide site..." +msgstr "отправляется к укрытию..." + +#: src/faction_camp.cpp +msgid "You need equipment to transport between the hide site..." +msgstr "Вам нужно снаряжение для транспортировки между укрытиями..." + +#: src/faction_camp.cpp +msgid "" +"Select a start and end point. Line must be straight. Fields, forests, and " +"swamps are valid fortification locations. In addition to existing " +"fortification constructions." +msgstr "" +"Выберите начальную и конечную точки. Линия должна быть прямой. Поля, леса и " +"болота - подходящие типы местности для постройки укреплений. В дополнение к " +"существующим фортификационным постройкам." + +#: src/faction_camp.cpp +msgid "Select an end point." +msgstr "Выберите конечную точку." + +#: src/faction_camp.cpp +msgid "Invalid terrain in construction path." +msgstr "На пути постройки неправильная местность." + +#: src/faction_camp.cpp +msgid "You don't have the material to build the fortification." +msgstr "Вам не хватает материалов, чтобы построить укрепления." + +#: src/faction_camp.cpp +msgid "begins constructing fortifications..." +msgstr "начинает строить укрепления..." + +#: src/faction_camp.cpp +msgid "" +"Select checkpoints until you reach maximum range or select the last point " +"again to end." +msgstr "" +"Выбирайте контрольные точки до тех пор, пока не дойдёте до максимальной " +"дистанции. Либо же выберите последнюю точку ещё раз, чтобы закончить." + +#: src/faction_camp.cpp +msgid "departs on patrol..." +msgstr "отправляется в патруль..." + +#: src/faction_camp.cpp +msgid "You don't have the materials to craft that" +msgstr "Не хватает материалов для изготовления этого" + +#: src/faction_camp.cpp +#, c-format +msgid "Batch crafting %s [MAX: %d]: " +msgstr "Серийная сборка %s [максимум: %d]: " + +#: src/faction_camp.cpp +msgid "Your batch is too large!" +msgstr "Серия слишком большая!" + +#: src/faction_camp.cpp +msgid "You already have someone working in that expansion." +msgstr "Вы уже назначили человека на работу в этом расширении." + +#: src/faction_camp.cpp +msgid "begins to work..." +msgstr "начинает работать..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +" Chopping this vehicle:\n" +"%s" +msgstr "" +" На разборке этой машины:\n" +"%s" + +#: src/faction_camp.cpp +msgid "begins working in the garage..." +msgstr "начинает работать в гараже..." + +#: src/faction_camp.cpp +msgid "Your companion seems disappointed that your pantry is empty..." +msgstr "Ваш компаньон выглядит разочарованным видом пустой кладовой..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s returns from upgrading the camp having earned a bit of experience..." +msgstr "" +"%s возвращается с работы по улучшению лагеря, зарабатывая при этом немного " +"опыта..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from doing the dirty work to keep the camp running..." +msgstr "" +"%s возвращается с грязной работы, благодаря которой в лагере всё идёт своим " +"чередом..." + +#: src/faction_camp.cpp +msgid "Sorting points have changed, forcing reset." +msgstr "Сортировочные очки изменились. Сбрасываем." + +#: src/faction_camp.cpp +msgid "gathering materials" +msgstr "сбор материалов" + +#: src/faction_camp.cpp +msgid "foraging for edible plants" +msgstr "сбор съедобных растений" + +#: src/faction_camp.cpp +msgid "trapping small animals" +msgstr "установка ловушек на мелких животных" + +#: src/faction_camp.cpp +msgid "hunting for meat" +msgstr "охота на крупных животных" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from %s carrying supplies and has a bit more experience..." +msgstr "" +"%s возвращается из %s нагруженный припасами, зарабатывая при этом немного " +"опыта..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from constructing fortifications..." +msgstr "%s возвращается с постройки укреплений..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from searching for recruits with a bit more experience..." +msgstr "" +"%s возвращается после поисков новобранцев, зарабатывая при это немного " +"опыта..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s encountered %s..." +msgstr "%s встречает %s..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't find anyone to recruit..." +msgstr "%s не нашёл никого, кто захотел бы присоединиться..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s convinced %s to hear a recruitment offer from you..." +msgstr "%s убедил %s послушать ваше предложение о найме..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested in anything %s had to offer..." +msgstr "%s не заинтересовало ничто из того, что смог предложить %s..." + +#: src/faction_camp.cpp +msgid "" +"NPC Overview:\n" +" \n" +msgstr "" +"Характеристики персонажа:\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Name: %20s\n" +" \n" +msgstr "" +"Имя: %20s\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "Strength: %10d\n" +msgstr "Сила: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Dexterity: %10d\n" +msgstr "Ловкость: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Intelligence: %10d\n" +msgstr "Интеллект: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Perception: %10d\n" +" \n" +msgstr "" +"Восприятие: %10d\n" +" \n" + +#: src/faction_camp.cpp +msgid "Top 3 Skills:\n" +msgstr "3 самых развитых навыка:\n" + +#: src/faction_camp.cpp +msgid "Asking for:\n" +msgstr "Требуется:\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"> Food: %10d days\n" +" \n" +msgstr "" +"> Еда: %10d дней\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Faction Food:%9d days\n" +" \n" +msgstr "" +"Еда фракции: %9d дней\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Recruit Chance: %10d%%\n" +" \n" +msgstr "" +"Шанс вербовки: %10d%%\n" +" \n" + +#: src/faction_camp.cpp +msgid "Select an option:" +msgstr "Выберите опцию:" + +#: src/faction_camp.cpp +msgid "Increase Food" +msgstr "Увеличить пайки" + +#: src/faction_camp.cpp +msgid "Decrease Food" +msgstr "Уменьшить пайки" + +#: src/faction_camp.cpp +msgid "Make Offer" +msgstr "Сделать предложение" + +#: src/faction_camp.cpp +msgid "Not Interested" +msgstr "Не интересует" + +#: src/faction_camp.cpp +msgid "You decide you aren't interested..." +msgstr "Вы решаете, что не заинтересованы..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s has been convinced to join!" +msgstr "%s соглашается присоединиться!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested..." +msgstr "%s отказывается..." + +#: src/faction_camp.cpp +msgid "Your companion hit a river and didn't know how to swim..." +msgstr "Ваш компаньон наткнулся на реку, но не умеет плавать..." + +#: src/faction_camp.cpp +msgid "" +"Your companion hit a river and didn't know how to swim well enough to " +"cross..." +msgstr "" +"Ваш компаньон наткнулся на реку, но не умеет плавать достаточно хорошо, " +"чтобы её переплыть..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't return from patrol..." +msgstr "%s не вернулся из патруля..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from patrol..." +msgstr "%s возвращается из патруля..." + +#: src/faction_camp.cpp +msgid "Select an expansion:" +msgstr "Выберите расширение:" + +#: src/faction_camp.cpp +msgid "You choose to wait..." +msgstr "Вы решили подождать..." + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from surveying for the expansion." +msgstr "%s возвращается с обследования места под расширение." + +#: src/faction_camp.cpp +msgid "No seeds to plant!" +msgstr "Нет семян для посадки!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from working your fields..." +msgstr "%s возвращается с работы в полях..." + +#: src/faction_camp.cpp +msgid "MAIN" +msgstr "ЦЕНТР" + +#: src/faction_camp.cpp +msgid " [N] " +msgstr "[С]" + +#: src/faction_camp.cpp +msgid " [NE] " +msgstr "[СВ]" + +#: src/faction_camp.cpp +msgid " [E] " +msgstr "[В]" + +#: src/faction_camp.cpp +msgid " [SE] " +msgstr "[ЮВ]" + +#: src/faction_camp.cpp +msgid " [S] " +msgstr "[Ю]" + +#: src/faction_camp.cpp +msgid " [SW] " +msgstr "[ЮЗ]" + +#: src/faction_camp.cpp +msgid " [W] " +msgstr "[З]" + +#: src/faction_camp.cpp +msgid " [NW] " +msgstr "[СЗ]" + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Base Missions" +msgstr "Задания лагеря" + +#: src/faction_camp.cpp +msgid "Farm Expansion" +msgstr "Расширение: ферма" + +#: src/faction_camp.cpp +msgid "Garage Expansion" +msgstr "Расширение: гараж" + +#: src/faction_camp.cpp +msgid "Kitchen Expansion" +msgstr "Расширение: кухня" + +#: src/faction_camp.cpp +msgid "Blacksmith Expansion" +msgstr "Расширение: кузница" + +#: src/faction_camp.cpp +msgid "Empty Expansion" +msgstr "Расширение: пусто" + +#: src/faction_camp.cpp +#, c-format +msgid "Select a location between %d and %d tiles away." +msgstr "Выберите локацию в пределах между %d и %d тайлами." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"You must select a target between %d and %d range from the base. Range: %d" +msgstr "" +"Вы должны выбрать цель в промежутке между %d и %d тайлами от базы. " +"Расстояние: %d" + +#: src/faction_camp.cpp +msgid "You must be able to see the target that you select." +msgstr "Вы должны видеть цель, которую выбираете." + +#: src/faction_camp.cpp +msgid "Do you want to bounce off this location to extend range?" +msgstr "Вы хотите отказаться от этого места, чтобы расширить диапазон?" + +#: src/faction_camp.cpp +msgid "food for you" +msgstr "еда для вас" + +#: src/faction_camp.cpp +msgid "food for companions" +msgstr "еда для компаньонов" + +#: src/faction_camp.cpp +msgid "weapons" +msgstr "оружие" + +#: src/faction_camp.cpp +msgid "clothing" +msgstr "одежда" + +#: src/faction_camp.cpp +msgid "bionics" +msgstr "бионика" + +#: src/faction_camp.cpp +msgid "all kinds of tools" +msgstr "все виды инструментов" + +#: src/faction_camp.cpp +msgid "wood of various sorts" +msgstr "древесина разных сортов" + +#: src/faction_camp.cpp +msgid "trash and rotting food" +msgstr "мусор и гниющая еда" + +#: src/faction_camp.cpp +msgid "books" +msgstr "книги" + +#: src/faction_camp.cpp +msgid "medication" +msgstr "медикаменты" + +#: src/faction_camp.cpp +msgid "ammo" +msgstr "боеприпасы" + +#: src/faction_camp.cpp +#, c-format +msgid "Reset point: %s?" +msgstr "Сбросить очки: %s?" + +#: src/faction_camp.cpp +msgid "" +" Items New Point Old Point\n" +" \n" +msgstr "" +" Предметы Новая точка Старая точка\n" +" \n" + +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +" Save Points?" +msgstr "" +"\n" +" \n" +" Сохранить очки?" + +#: src/faction_camp.cpp +msgid "Revert to default points?" +msgstr "Вернуть всё к очкам по умолчанию?" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15.2f (km)\n" +msgstr ">Расстояние: %15.2f (км)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">One Way: %15d (trips)\n" +msgstr ">В одну сторону: %15d (походов)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15.2f (km)\n" +msgstr ">Преодолено: %15.2f (км)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15d (m)\n" +msgstr ">Расстояние :%15d (м)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15d (m)\n" +msgstr ">Преодолено: %15d (м)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Travel: %23s\n" +msgstr ">Путешествует: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Working: %23s\n" +msgstr ">Работает: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Total: %23s\n" +msgstr "Всего: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Food: %15d (kcal)\n" +" \n" +msgstr "" +"Еда: %15d (ккал)\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"%s\n" +" \n" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s \n" +"Risk: None\n" +"Time: %s\n" +msgstr "" +"Примечание:\n" +"%s\n" +"\n" +"Используемый навык: %s\n" +"Сложность: %d\n" +"%s\n" +"Риск: Нет\n" +"Время: %s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s\n" +"Time: %s\n" +msgstr "" +"Используемый навык: %s \n" +"Сложность: %d \n" +"%s\n" +"Время: %s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" +" \n" +"Skill used: speech\n" +"Difficulty: 2 \n" +"Base Score: +%3d%%\n" +"> Expansion Bonus: +%3d%%\n" +"> Faction Bonus: +%3d%%\n" +"> Special Bonus: +%3d%%\n" +" \n" +"Total: Skill +%3d%%\n" +" \n" +"Risk: High\n" +"Time: 4 Days\n" +"Positions: %d/1\n" +msgstr "" +"Примечание:\n" +"Привлечение дополнительных компаньонов опасное и дорогое занятие. Исход очень сильно зависит от навыка вашего компаньона, которого вы посылаете для призыва их на вашу базу.\n" +" \n" +"Используемый навык: общение\n" +"Сложность: 2\n" +"Базовое значение: +%3d%%\n" +"> Бонус расширения: +%3d%%\n" +"> Бонус фракции: +%3d%%\n" +"> Особый бонус: +%3d%%\n" +" \n" +"Всего: Навык +%3d%%\n" +" \n" +"Риск: Высокий\n" +"Время: 4 Дня\n" +"Расположение: %d/1\n" + +#: src/faction_camp.cpp +msgid "" +"Notes: \n" +"Send a companion to gather materials for the next camp upgrade.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +msgstr "" +"Примечание: \n" +"Отправьте компаньона для сбора материалов для следующего улучшения лагеря.\n" +" \n" +"Используемый навык: выживание\n" +"Сложность: Н/Д\n" +"Возможно добыть:\n" + +#: src/faction_camp.cpp +msgid "" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: " +msgstr "" +" \n" +"Риск: Очень низкий\n" +"Время: 3 часа, Повторяемо\n" +"Расстояние: " + +#: src/faction_camp.cpp +msgid "Harvestable: " +msgstr "Собираемо: " + +#: src/faction_camp.cpp +msgid "Ready for Planting: " +msgstr "Готово к посадке: " + +#: src/faction_camp.cpp +msgid "Needs Plowing: " +msgstr "Необходимо вспахать: " + +#: src/faction_camp.cpp +#, c-format +msgid "Name: %25s\n" +msgstr "Имя: %25s\n" + +#: src/faction_camp.cpp +msgid "---- Engines ----\n" +msgstr "---- Двигатели ----\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Engine: %25s\n" +msgstr "Двигатель: %25s\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Status: %24d%%\n" +msgstr ">Статус: %24d%%\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Fuel: %25s\n" +msgstr ">Топливо: %25s\n" + +#: src/faction_camp.cpp +msgid "---- Fuel Storage & Battery ----\n" +msgstr "---- Топливо, вместимость и заряд ----\n" + +#: src/faction_camp.cpp +msgid "Estimated Chop Time: 5 Days\n" +msgstr "Время до окончания разборки: 5 дней\n" + +#: src/faction_camp.cpp +msgid "No items are located at the drop point..." +msgstr "На точке сброса не найдено никаких предметов..." + +#: src/faction_camp.cpp +#, c-format +msgid "You distribute %d kcal worth of food to your companions." +msgstr "Вы распределяете еду ценностью %d ккал между вашими компаньонами." + +#: src/faction_camp.cpp +#, c-format +msgid "While %s, a silent specter approaches %s..." +msgstr "Пока %s, молчаливый призрак приблизился к %s..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s notices the antlered horror and slips away before it gets too close." +msgstr "" +"%s замечает рогатый ужас и успевает улизнуть до того, как тот подобрался " +"слишком близко." + +#: src/faction_camp.cpp +#, c-format +msgid "Another survivor approaches %s asking for directions." +msgstr "Другой выживший приблизился к %s, спрашивая дорогу." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Fearful that he may be an agent of some hostile faction, %s doesn't mention " +"the camp." +msgstr "" +"Боясь, что он может быть агентом какой-то враждебной фракции, %s не " +"упоминает о лагере." + +#: src/faction_camp.cpp +msgid "The two part on friendly terms and the survivor isn't seen again." +msgstr "Они прощаются на дружеской ноте, выжившего больше никто не видел." + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't detect the ambush until it was too late!" +msgstr "%s не обнаружил засаду, пока не стало слишком поздно!" + +#: src/faction_camp.cpp +#, c-format +msgid "The bull moose charged %s from the tree line..." +msgstr "Лось погнался за %s, выбежав из леса..." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Despite being caught off guard %s was able to run away until the moose gave " +"up pursuit." +msgstr "" +"Несмотря на то, что лось застал %s врасплох, он сумел убежать от лося, и тот" +" прекратил преследование." + +#: src/faction_camp.cpp +#, c-format +msgid "The jabberwock grabbed %s by the arm from behind and began to scream." +msgstr "Бармаглот схватил %s за руку, напав со спины, а затем начал кричать." + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Terrified, %s spun around and delivered a massive kick to the creature's " +"torso..." +msgstr "" +"В ужасе %s оборачивается и наносит сильный удар по туловищу существа..." + +#: src/faction_camp.cpp +#, c-format +msgid "Collapsing into a pile of gore, %s walked away unscathed..." +msgstr "Превратив существо в кучку мяса, %s уходит без единой царапины..." + +#: src/faction_camp.cpp +msgid "(Sounds like bullshit, you wonder what really happened.)" +msgstr "(Пахнет выдумкой, интересно, что же случилось на самом деле.)" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s turned to find the hideous black eyes of a giant wasp staring back from " +"only a few feet away..." +msgstr "" +"%s поворачивается и видит перед собой ужасные чёрные глаза гигантской осы, " +"находящейся всего в нескольких метрах..." + +#: src/faction_camp.cpp +msgid "The screams were terrifying, there was nothing anyone could do." +msgstr "Крики были ужасающими. Никто бы не смог ничего поделать." + +#: src/faction_camp.cpp +#, c-format +msgid "Pieces of %s were found strewn across a few bushes." +msgstr "Куски %s валялись по всей округе." + +#: src/faction_camp.cpp +msgid "(You wonder if your companions are fit to work on their own...)" +msgstr "(Интересно, ваши компаньоны вообще способны за себя постоять?..)" + +#: src/field.cpp +msgid "blood splatter" +msgstr "брызги крови" + +#: src/field.cpp +msgid "blood stain" +msgstr "пятно крови" + +#: src/field.cpp +msgid "puddle of blood" +msgstr "лужа крови" + +#: src/field.cpp +msgid "bile splatter" +msgstr "брызги желчи" + +#: src/field.cpp +msgid "bile stain" +msgstr "пятно желчи" + +#: src/field.cpp +msgid "puddle of bile" +msgstr "лужа желчи" + +#: src/field.cpp +msgid "bloody meat chunks" +msgstr "куски мяса с кровью" + +#: src/field.cpp +msgid "heap of gore" +msgstr "море кровищи" + +#: src/field.cpp +msgid "scraps of flesh" +msgstr "куски плоти" + +#: src/field.cpp +msgid "broken vegetation tangle" +msgstr "клубок из поломанной зелени" + +#: src/field.cpp +msgid "shattered branches and leaves" +msgstr "обломки веток и листва" + +#: src/field.cpp +msgid "shredded leaves and twigs" +msgstr "порубленые листья и ветки" + +#: src/field.cpp +msgid "cobwebs" +msgstr "паутина" + +#: src/field.cpp +msgid "thick webs" +msgstr "плотная паутина" + +#: src/field.cpp +msgid "webs" +msgstr "паутина" + +#: src/field.cpp +msgid "puddle of slime" +msgstr "лужа слизи" + +#: src/field.cpp +msgid "slime stain" +msgstr "пятно слизи" + +#: src/field.cpp +msgid "slime trail" +msgstr "следы слизи" + +#: src/field.cpp +msgid "acid splatter" +msgstr "брызги кислоты" + +#: src/field.cpp +msgid "acid streak" +msgstr "полоса кислоты" + +#: src/field.cpp +msgid "pool of acid" +msgstr "кислотная лужа" + +#: src/field.cpp +msgid "glob of sap" +msgstr "сгусток растительного сока" + +#: src/field.cpp +msgid "pool of sap" +msgstr "лужа растительного сока" + +#: src/field.cpp +msgid "sap splatter" +msgstr "брызги растительного сока" + +#: src/field.cpp +msgid "sludge trail" +msgstr "след ила" + +#: src/field.cpp +msgid "thick sludge trail" +msgstr "толстый след ила" + +#: src/field.cpp +msgid "thin sludge trail" +msgstr "тонкий след ила" + +#: src/field.cpp +msgid "raging fire" +msgstr "бушующий огонь" + +#: src/field.cpp +msgid "small fire" +msgstr "слабый огонь" + +#: src/field.cpp +msgid "legacy rubble" +msgstr "старый мусор" + +#: src/field.cpp +msgid "smoke" +msgstr "дым" + +#: src/field.cpp +msgid "thick smoke" +msgstr "густой дым" + +#: src/field.cpp +msgid "thin smoke" +msgstr "тонкий дымок" + +#: src/field.cpp +msgid "hazy cloud" +msgstr "туманное облако" + +#: src/field.cpp +msgid "thick toxic gas" +msgstr "густой токсичный газ" + +#: src/field.cpp +msgid "toxic gas" +msgstr "токсичный газ" + +#: src/field.cpp +msgid "tear gas" +msgstr "слезоточивый газ" + +#: src/field.cpp +msgid "thick tear gas" +msgstr "густой слезоточивый газ" + +#: src/field.cpp +msgid "radioactive gas" +msgstr "радиоактивный газ" + +#: src/field.cpp +msgid "thick radioactive gas" +msgstr "стена радиоактивного газа" + +#: src/field.cpp +msgid "gas vent" +msgstr "вытяжка" + +#: src/field.cpp +msgid "electric cloud" +msgstr "наэлектризованное облако" + +#: src/field.cpp +msgid "electric crackle" +msgstr "электрические разряды" + +#: src/field.cpp +msgid "sparks" +msgstr "искры" + +#: src/field.cpp +msgid "odd ripple" +msgstr "странная рябь" + +#: src/field.cpp +msgid "swirling air" +msgstr "кружащийся воздух" + +#: src/field.cpp +msgid "tear in reality" +msgstr "дыра в пространстве" + +#: src/field.cpp +msgid "faint plasma" +msgstr "бледная плазма" + +#: src/field.cpp +msgid "glaring plasma" +msgstr "ослепительно яркая плазма" + +#: src/field.cpp +msgid "glowing plasma" +msgstr "яркая плазма" + +#: src/field.cpp +msgid "beam of light" +msgstr "светлый луч" + +#: src/field.cpp +msgid "faint glimmer" +msgstr "бледный луч" + +#: src/field.cpp +msgid "intense beam of light" +msgstr "интенсивный луч света" + +#: src/field.cpp +msgid "spotlight" +msgstr "прожектор" + +#: src/field.cpp +msgid "dazzling" +msgstr "блеск" + +#: src/field.cpp +msgid "plant sap splatter" +msgstr "брызги древесного сока" + +#: src/field.cpp +msgid "plant sap stain" +msgstr "пятно древесного сока" + +#: src/field.cpp +msgid "puddle of resin" +msgstr "лужа из смолы" + +#: src/field.cpp +msgid "bug blood splatter" +msgstr "брызги крови насекомого" + +#: src/field.cpp +msgid "bug blood stain" +msgstr "пятно из крови насекомого" + +#: src/field.cpp +msgid "puddle of bug blood" +msgstr "лужа из крови насекомого" + +#: src/field.cpp +msgid "hemolymph splatter" +msgstr "брызги гемолимфы" + +#: src/field.cpp +msgid "hemolymph stain" +msgstr "пятно гемолимфы" + +#: src/field.cpp +msgid "puddle of hemolymph" +msgstr "лужа гемолимфы" + +#: src/field.cpp +msgid "shards of chitin" +msgstr "осколки хитина" + +#: src/field.cpp +msgid "shattered bug leg" +msgstr "разбитая нога насекомого" + +#: src/field.cpp +msgid "torn insect organs" +msgstr "разодранные органы насекомого" + +#: src/field.cpp +msgid "gooey scraps" +msgstr "клейкие обрывки" + +#: src/field.cpp +msgid "heap of squishy gore" +msgstr "море запёкшейся крови" + +#: src/field.cpp +msgid "icky mess" +msgstr "липкое месиво" + +#: src/field.cpp +msgid "swirl of tobacco smoke" +msgstr "обволакивающий табачный дым" + +#: src/field.cpp +msgid "thick tobacco smoke" +msgstr "густой табачный дым" + +#: src/field.cpp +msgid "tobacco smoke" +msgstr "табачный дым" + +#: src/field.cpp +msgid "pot smoke" +msgstr "дым марихуаны" + +#: src/field.cpp +msgid "swirl of pot smoke" +msgstr "обволакивающий дым марихуаны" + +#: src/field.cpp +msgid "thick pot smoke" +msgstr "густой дым марихуаны" + +#: src/field.cpp +msgid "crack smoke" +msgstr "дым кокаина" + +#: src/field.cpp +msgid "swirl of crack smoke" +msgstr "обволакивающий дым кокаина" + +#: src/field.cpp +msgid "thick crack smoke" +msgstr "густой дым кокаина" + +#: src/field.cpp +msgid "meth smoke" +msgstr "дым мета" + +#: src/field.cpp +msgid "swirl of meth smoke" +msgstr "обволакивающий дым мета" + +#: src/field.cpp +msgid "thick meth smoke" +msgstr "густой дым мета" + +#: src/field.cpp +msgid "angry swarm of bees" +msgstr "разозлённый пчелиный рой" + +#: src/field.cpp +msgid "some bees" +msgstr "несколько пчёл" + +#: src/field.cpp +msgid "swarm of bees" +msgstr "пчелиный рой" + +#: src/field.cpp +msgid "airborne incendiary" +msgstr "зажигательное вещество в воздухе" + +#: src/field.cpp +msgid "relaxation gas" +msgstr "расслабляющий газ" + +#: src/field.cpp +msgid "sedative gas" +msgstr "седативный газ" + +#: src/field.cpp +msgid "fungal haze" +msgstr "грибковая дымка" + +#: src/field.cpp +msgid "thick fungal haze" +msgstr "плотная грибковая дымка" + +#: src/field.cpp +msgid "fungicidal gas" +msgstr "фунгицидный газ" + +#: src/field.cpp +msgid "thick fungicidal gas" +msgstr "плотный фунгицидный газ" + +#: src/field.cpp +msgid "smoke vent" +msgstr "дым из вытяжки" + +#: src/field.cpp +msgid "Whew... smells like skunk!" +msgstr "Фу… воняет как скунс!" + +#: src/field.cpp +msgid "Man, that smells like some good shit!" +msgstr "Чувак, эта хрень неплохо пахнет!" + +#: src/field.cpp +msgid "I don't know... should you really be smoking that stuff?" +msgstr "Я не знаю… ты в самом деле будешь курить эту штуку?" + +#: src/field.cpp +msgid "Ew, smells like burning rubber!" +msgstr "Бе, пахнет как жжёная резина!" + +#: src/field.cpp +msgid "Ugh, that smells rancid!" +msgstr "Ух, воняет тухлятиной!" + +#: src/field.cpp +#, c-format +msgid "A %s hits you!" +msgstr "%s бьёт вас!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits %2$s!" +msgstr "%1$s бьёт %2$s!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits the %2$s!" +msgstr "%1$s бьёт %2$s!" + +#: src/field.cpp +msgid "The acid burns your body!" +msgstr "Кислота жжёт ваше тело!" + +#: src/field.cpp +msgid "The acid burns s body!" +msgstr "Кислота жжёт тело !" + +#: src/field.cpp +msgid "The acid burns your legs and feet!" +msgstr "Кислота разъедает ваши ноги" + +#: src/field.cpp +msgid "The acid burns s legs and feet!" +msgstr "Кислота разъедает ноги и ступни !" + +#: src/field.cpp +msgid "You're lying in a pool of acid" +msgstr "Вы лежите в кислотной луже." + +#: src/field.cpp +msgid "You're standing in a pool of acid" +msgstr "Вы стоите в кислотной луже." + +#: src/field.cpp +msgid "The sap sticks to you!" +msgstr "К вашим ногам липнет растительный сок!" + +#: src/field.cpp +msgid "The sap sticks to !" +msgstr "Растительный сок липнет к !" + +#: src/field.cpp +msgid "The sludge is thick and sticky. You struggle to pull free." +msgstr "Грязь густая и липкая. Вам тяжело выбраться." + +#: src/field.cpp +msgid "You burn your legs and feet!" +msgstr "Вы обожгли ноги и ступни!" + +#: src/field.cpp +msgid "You're burning up!" +msgstr "Вы горите!" + +#: src/field.cpp +msgid "You're set ablaze!" +msgstr "Вы полыхаете!" + +#: src/field.cpp +msgid "Your whole body is burning!" +msgstr "Всё ваше тело горит!" + +#: src/field.cpp +msgid " burns their legs and feet!" +msgstr " обжигает себе ноги и ступни!" + +#: src/field.cpp +msgid " is burning up!" +msgstr " воспламеняется!" + +#: src/field.cpp +msgid " is set ablaze!" +msgstr " загорелся!" + +#: src/field.cpp +msgid "s whole body is burning!" +msgstr "Всё тело горит!" + +#: src/field.cpp +msgid "You're standing in a fire!" +msgstr "Вы стоите в огне!" + +#: src/field.cpp +msgid "You're waist-deep in a fire!" +msgstr "Вы по пояс в огне!" + +#: src/field.cpp +msgid "You're surrounded by raging fire!" +msgstr "Вы окружены бушующим пожаром!" + +#: src/field.cpp +msgid "You're lying in fire!" +msgstr "Вы лежите в огне!" + +#: src/field.cpp +#, c-format +msgid "You feel sick from inhaling the %s" +msgstr "Вас тошнит от вдыхания %s" + +#: src/field.cpp +msgid "This radioactive gas burns!" +msgstr "Этот радиоактивный газ обжигает вас!" #: src/field.cpp msgid "You're torched by flames!" @@ -142769,6 +146569,14 @@ msgstr "Телепортироваться в соседнюю карту " msgid "Test trait group" msgstr "Протестировать группу черт" +#: src/game.cpp +msgid "Show debug message" +msgstr "Показать отладочное сообщение" + +#: src/game.cpp +msgid "Crash game (test crash handling)" +msgstr "Вылет игры (тест обработки вылета)" + #: src/game.cpp msgid "Quit to Main Menu" msgstr "Выйти в главное меню" @@ -142897,9 +146705,13 @@ msgstr "час" msgid "minute" msgstr "минута" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp src/martialarts.cpp msgid "turn" -msgstr "ход" +msgid_plural "turns" +msgstr[0] "ход" +msgstr[1] "ходов" +msgstr[2] "ходов" +msgstr[3] "ходов" #: src/game.cpp msgid "Set year to?" @@ -142958,10 +146770,10 @@ msgid "" "their resources in a handful of fortified bases along the coast. Without " "the men or material to rebuild, the soldiers that remained lost all hope..." msgstr "" -" Осаждены в бесконечном сражении, Старая гвардия была вынуждена " -"объединить свои ресурсы в горстке укреплённых опорных пунктов вдоль " -"побережья. Без человеческих ресурсов и материальной базы для реконструкции, " -"солдаты, которым осталось только потерять свою надежду..." +" Связанная бесконечным сражением, Старая Гвардия была вынуждена " +"сосредоточить свои силы в горстке укреплённых опорных пунктов вдоль " +"побережья. Без человеческих ресурсов и материальной базы для восстановления," +" это солдаты, потерявшие всякую надежду..." #: src/game.cpp msgid "" @@ -142973,14 +146785,13 @@ msgid "" "the years past, little materialized from the hopes of rebuilding " "civilization..." msgstr "" -" Отдельные выжившие, отличающиеся стойкостью, после Катаклизма создали на" -" разодранных остатках цивилизации прославленный союз. Подстёгиваемые " -"небольшими успехами, многочисленными операциями, пересмотрев свою систему " -"безопасности сооружений, столкнулись с ограниченным результатом. Вынуждены в" -" конечном счёте объединиться с большими базами, Старая гвардия оставила эти " -"сооружения в руках нескольких выживших, которые остались на месте. За " -"минувшие годы были воплощены в жизнь лишь малые надежды на восстановление " -"цивилизации..." +" Упорство некоторых выживальщиков после Катаклизма впечатлило разбросанные" +" остатки когда-то славного союза. Под вдохновением от небольших успехов было" +" организовано несколько миссий по зачистке объектов, увенчавшихся скромными " +"результатами. Старая Гвардия была вынуждена в конечном счёте сосредоточиться" +" в больших базах и оставить эти объекты в руках горстки выживальщиков. За " +"минувшие годы из надежд на восстановление цивилизации было воплощено в жизнь" +" очень немногое..." #: src/game.cpp msgid "" @@ -142989,11 +146800,10 @@ msgid "" "craftsmen dispersed to found new colonies but most became victims of " "marauding bandits. Those who survived never found a place to call home..." msgstr "" -" Жизнь в укрытии для беженцев деградировала из-за нехватки продовольствия" -" и болезней, разрушающих любую надежду на поддержание цивилизованного " -"анклава. Торговцы и квалифицированные мастера рассеяны в основанных новых " -"колониях, но большинство стало жертвами мародёрствующих бандитов. А те кто " -"выжил, никогда не находили место, которое могли назвать домом..." +" Жизнь в центре беженцев осложнилась, нехватка еды и болезни уничтожили " +"всякую надежду на поддержание очага цивилизации. Торговцы и ремесленники " +"разошлись основывать новые колонии, но многие пали жертвами мародёров. Те, " +"кто выжил, так и не нашли места, которое могли назвать домом..." #: src/game.cpp msgid "" @@ -143003,11 +146813,10 @@ msgid "" "stories of the old days when food was abundant and the children were allowed" " to play in the sun..." msgstr "" -" Свободные торговцы изо всех сил пытались в течение многих лет обеспечить" -" себя всем необходимым, но, как только появлялись прибыльные торговые " -"маршруты, были разграблены бандитами и головорезами. В нищете и грязи жили " -"первые поколения, родившиеся после Катаклизма, которые только слышали " -"рассказываемые истории былых времён, когда еда была в достатке и детям " +" Свободные Торговцы несколько лет изо всех сил пытались прокормить себя, " +"но их когда-то прибыльные торговые маршруты разграбили бандиты и головорезы." +" Первые родившиеся после Катаклизма поколения жили в грязи и нищете и лишь " +"слышали истории о былых деньках, когда еда была в достатке, а детям " "разрешали играть на солнце..." #: src/game.cpp @@ -143017,11 +146826,10 @@ msgid "" "their support. When the exhausted migrants returned to the refugee center " "they were turned away to face the world on their own." msgstr "" -" Недавно созданный аванпост был заброшен несколько месяцев спустя. " -"Внешние угрозы, объединились с низкой урожайностью, заставили Свободных " -"торговцев отказаться от дальнейшей его поддержки. Когда изнурённые мигранты " -"вернулись в центр беженцев, они были выдворены прочь, оставив их сам на сам " -"с враждебным миром." +" Новый аванпост был заброшен несколько месяцев спустя. Внешние угрозы и " +"низкая урожайность заставили Свободных Торговцев отказаться от дальнейшей " +"поддержки. Когда изнурённые мигранты вернулись в центр беженцев, их " +"выдворили прочь, оставив один на один с внешним миром." #: src/game.cpp msgid "" @@ -143031,11 +146839,11 @@ msgid "" "of the Free Merchants. Hard labor for little reward remained the price to " "be paid for those who sought the safety of the community." msgstr "" -" Коммуна продолжала быстро расти в течение нескольких лет, несмотря на " -"постоянную внешнюю угрозу. Поддерживая репутацию убежища для всех " -"соблюдающих закон граждан, лидеры коммуны оставались лояльными к интересам " -"Свободных торговцев. Каторжные работы за небольшое вознаграждение - цена, " -"которую нужно заплатить тем, кто искал для себя безопасное сообщество." +" С течением лет коммуна быстро росла, несмотря на постоянную внешнюю " +"угрозу. Лидеры коммуны поддерживали репутацию убежища для всех " +"законопослушных граждан и сохраняли верность интересам Свободных Торговцев. " +"Тяжёлый труд за маленькую плату - цена, которую необходимо было заплатить " +"каждому, кто искал безопасное общество." #: src/game.cpp msgid "" @@ -143044,11 +146852,10 @@ msgid "" "monstrosities that had adapted to live in their world, those who did survive" " lived in dejected poverty and hopelessness..." msgstr "" -" Обособленные банды выживших, которые скитались теперь уже по чуждому им " -"миру, сократились числом в течение последующих лет. Неспособны были " -"конкурировать с растущим количеством обиталищь монстров, которые " -"адаптировались для жизни в теперь ихнем мире, те, кто действительно выживал," -" жили в удручённой бедности и безнадёжности..." +" Количество обособленных групп выживальщиков, скитавшихся по теперь " +"чуждому для них миру, сократилось в течение нескольких лет. Те, кто выжил, " +"были неспособны тягаться с растущим числом приспособившихся к этому миру " +"чудовищ, и влачили существование в унылой нищете и безнадёжности..." #: src/game.cpp msgid "" @@ -143059,13 +146866,12 @@ msgid "" "fringes of where civilization once ended, bands of hunter-gatherers began to" " adopt agrarian lifestyles in fortified enclaves..." msgstr "" -" Добытчики, которые процветали в начальные дни Катаклизма, столкнулись с " -"постоянно увеличивающейся проблемой в нахождении и поддержании в рабочем " -"состоянии оборудования из старого мира. Огромные орды сделали города " -"неприступными, в то время новые жуткие ужасы появились загадочным образом " -"около покинутых научно-исследовательских лабораторий. Но на окраинах, где " -"когда-то погибла цивилизация, банды охотников-собирателей начали перенимать " -"аграрный образ жизни, как в укреплённых анклавах..." +" Добытчики, процветавшие в первые дни Катаклизма, столкнулись с " +"нарастающей проблемой поисков и обслуживания оборудования из старого мира. " +"Из-за огромных орд войти в города было нельзя, а возле бывших лабораторий " +"загадочно появлялись новые сверхъестественные кошмары. Однако на границах, " +"там, где когда-то кончалась цивилизация, группы охотников-собирателей начали" +" вести сельскохозяйственный образ жизни в укреплённых поселениях..." #: src/game.cpp msgid "" @@ -143076,13 +146882,12 @@ msgid "" "infighting erupted into civil war but there were few survivors left to " "celebrate their destruction." msgstr "" -" Налётчики стали более сильными, чем какая-либо другая фракция, поскольку" -" Старая гвардия исчерпала свои силы и развалилась. Безжалостные мужчины и " -"женщины, объединились в банды, чтобы грабить беженцев и мародёрствовать в " -"поселениях, скоро оказалось, что без достаточного количества жертв им не " -"выжить. Адские налётчики были в конечном счёте уничтожены, когда борьба за " -"выживание превратилась в гражданскую войну, но осталось мало живых, " -"праздновать их уничтожение." +" Налётчики стали намного сильнее любой другой фракции, когда Старая " +"Гвардия исчерпала свои силы и развалилась. Безжалостные мужчины и женщины, " +"объединившиеся ради грабежа и мародёрства, скоро обнаружили, что для " +"выживания уже не хватает жертв. Адские Налётчики в конце концов исчезли " +"после внутренней борьбы, переросшей в гражданскую войну, но не осталось " +"почти никого, кто мог бы отпраздновать их гибель." #: src/game.cpp msgid "" @@ -143093,14 +146898,13 @@ msgid "" "leadership of the faction. When only one warlord finally secured control, " "there was nothing left to fight for... just endless cities full of the dead." msgstr "" -" Заряженные наркотиками и яростью, Адские налётчики сражались изо всех " -"сил, чтобы свергнуть последние оплоты Старой гвардии. Дорогостоящие победы " -"принесли главарям богатую территорию и рабов, но плохой результат на пути к " -"стабильности. В течение последующих недель борьба привела к гражданской " -"войне, поскольку кланы соперничали за руководство в фракции. Когда наконец " -"остался только один главарь банды, обеспечил контроль, но не осталось " -"ничего, за что было сражаться... только бесконечные города, полные " -"мертвецов." +" Накачанные наркотиками и яростью, Адские Налётчики изо всех сил пытались" +" уничтожить последние оплоты Старой Гвардии. Тяжёлые победы принесли " +"главарям обширные территории и множество рабов, но не привели к " +"стабильности. Внутренняя борьба и соперничество кланов за лидерство вылились" +" через несколько недель в гражданскую войну. Когда единственный оставшийся " +"главарь наконец получил власть, не осталось ничего, за что можно было " +"сражаться... только бесконечные города, полные мертвецов." #: src/game.cpp #, c-format @@ -143354,12 +147158,12 @@ msgstr "Электрическое поле %s мгновенно исчезае #: src/game.cpp #, c-format msgid "The %s's disabled electrical field reverses polarity!" -msgstr "" +msgstr "Отключенное электрическое поле %s меняет полярность!" #: src/game.cpp #, c-format msgid "It takes %d damage." -msgstr "Получает %d урона." +msgstr "Получает %d урон." #: src/game.cpp #, c-format @@ -143554,7 +147358,7 @@ msgstr "Использовать предмет" msgid "Sort armor" msgstr "Сортировать броню" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "Атаковать" @@ -143579,13 +147383,13 @@ msgstr "%s некуда идти!" #: src/game.cpp msgid "Limbs of: " -msgstr "" +msgstr "Конечности от:" #: src/game.cpp msgid "Use which item?" msgstr "Какой предмет использовать?" -#: src/game.cpp src/iuse.cpp src/veh_interact.cpp +#: src/game.cpp src/iuse.cpp msgid "Never mind" msgstr "Неважно" @@ -143625,10 +147429,10 @@ msgstr "" "дополнительного времени." #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." +msgid "It looks solid, and will burn for a few hours without extra fuel." msgstr "" -"Он хорошо горит и без дополнительного топлива будет продолжать делать это " -"ещё несколько часов." +"Пламя выглядит стабильным и будет гореть в течение нескольких часов без " +"дополнительного топлива." #: src/game.cpp msgid "" @@ -143761,7 +147565,7 @@ msgstr "%s [%d]" #: src/game.cpp msgid "how all / hide distant" -msgstr "" +msgstr "показать все / спрятать удаленные" #: src/game.cpp msgid "ap" @@ -144086,7 +147890,7 @@ msgctxt "butchery menu" msgid "Cut up %s (%d)" msgstr "Резать %s (%d)" -#. ~ Name and number of items listed for disassembling +#. ~ Name, number of items and time to complete disassembling #: src/game.cpp #, c-format msgctxt "butchery menu" @@ -144123,8 +147927,8 @@ msgid "Choose corpse to butcher / item to disassemble" msgstr "Выберите труп для разделки/предмет для разбора" #: src/game.cpp -msgid "Butcher everything" -msgstr "Разделать всё" +msgid "Quick butcher everything" +msgstr "Быстро разделать все" #: src/game.cpp msgid "Disassemble everything once" @@ -144135,8 +147939,8 @@ msgid "Disassemble everything" msgstr "Разобрать всё" #: src/game.cpp -msgid "Cut up all you can" -msgstr "Разрезать всё, что в ваших силах" +msgid "Cut up everything" +msgstr "Разрезать все" #: src/game.cpp msgid "" @@ -144163,15 +147967,15 @@ msgstr "Быстрая разделка" #: src/game.cpp msgid "" -"This techinque is used when you are in a hurry, but still want to harvest " +"This technique is used when you are in a hurry, but still want to harvest " "something from the corpse. Yields are lower as you don't try to be precise," " but it's useful if you don't want to set up a workshop. Prevents zombies " "from raising." msgstr "" -"Этот метод используется, если времени мало, но вы всё же хотите получить " -"что-нибудь с туши. Продукции на выходе будет меньше, так как вы не " -"стараетесь быть особо аккуратным. Удобно, если вы не хотите организовывать " -"целый цех для разделки. После этого метода зомби не будут воскресать." +"Этот метод используется, когда вы спешите, но все же хотите собрать что-то " +"из трупа. Добыча меньше, поскольку вы не стараетесь быть точными, но это " +"полезно, если вы не хотите возводить для этого целую мастерскую. " +"Предотвращает воскрешение зомби." #: src/game.cpp msgid "Full butchery" @@ -144184,10 +147988,12 @@ msgid "" " etc.) and good tools. Yields are plentiful and varied, but it is time " "consuming." msgstr "" -"Этот метод используется для полноценной разделки туши, требует верёвки и " -"дерева либо же стойки для разделки и ровной поверхности (стол, кожаная " -"подстилка и т.д.), а также хороших инструментов. Продуктов на выходе " -"получается гораздо больше, но процесс занимает много времени." +"Этот метод используется для полноценной разделки туши. Вам нужно находиться " +"рядом с деревом, имея при себе верёвку, или же воспользоваться стойкой для " +"разделки. Вам также потребуется ровная поверхность (стол, кожаная подстилка " +"и т.д.), а также хорошие инструменты. Для большой туши, помимо инструмента " +"для разделки, может понадобиться пила. Продуктов на выходе получается " +"гораздо больше, но процесс занимает много времени." #: src/game.cpp msgid "Field dress corpse" @@ -144196,14 +148002,14 @@ msgstr "Полевая разделка" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "" -"Техника, при которой удаляются внутренние органы для предотвращения гниения " -"туши изнутри. Даёт на выходе внутренние органы. Оставшийся каркас будет " -"легче и останется свежим более длительное время. Можно совмещать с другими " -"методами для получения лучших результатов." +"Техника, которая включает удаление внутренностей, чтобы защитить труп от " +"гниения изнутри. Позволяет собрать все внутренние органы. Туша будет легче " +"и останется свежей дольше. Может сочетаться с другими методами для улучшения" +" эффекта." #: src/game.cpp msgid "Quarter corpse" @@ -144211,15 +148017,15 @@ msgstr "Четвертование" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." msgstr "" -"Четвертование предварительно разделанной по-полевому туши даст на выходе " -"четыре лёгких и небольших части. Удобно при транспортировке большой добычи. " -"Этот метод уничтожает кожу, шкуру, мех и т.д., так что не стоит использовать" -" его, если вам нужны эти субпродукты." +"Четвертовав труп, вы приобретете четыре части с уменьшенным весом и объемом." +" Это может помочь в транспортировке крупной добычи. Это действие уничтожит " +"кожу, мех, шкуру и т. д., поэтому не используйте ее, если вы хотите собрать " +"их позже." #: src/game.cpp msgid "Dissect corpse" @@ -144414,8 +148220,8 @@ msgid "" "Spotted %1$s--safe mode is on! (%2$s to turn it off, %3$s to ignore " "monster%4$s)" msgstr "" -"Замечен %1$s - безопасный режим включён! Чтобы его отключить, %2$s, %3$s, " -"чтобы проигнорировать монстра %4$s." +"Замечен %1$s - безопасный режим включён! %2$s, чтобы его отключить; %3$s, " +"чтобы проигнорировать монстра%4$s." #: src/game.cpp #, c-format @@ -145107,6 +148913,10 @@ msgstr "Вы чувствуете, как ваше тело разлагаетс msgid "You feel fatigue seeping into your body." msgstr "Вы чувствуете, как усталость наполняет ваше тело." +#: src/game.cpp +msgid "The portal collapses!" +msgstr "Портал схлопывается!" + #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." @@ -145350,10 +149160,23 @@ msgstr "УТОЛЕНИЕ ЖАЖДЫ" msgid "JOY" msgstr "УДОВОЛЬСТВИЕ" +#. ~ Used for permafood shelf life in the Eat menu #: src/game_inventory.cpp -msgid "SPOILS IN" +msgid "indefinite" +msgstr "неопределенный" + +#: src/game_inventory.cpp +msgid "SHELF LIFE" msgstr "СРОК ГОДНОСТИ" +#: src/game_inventory.cpp +msgid "FRESHNESS" +msgstr "СВЕЖЕСТЬ" + +#: src/game_inventory.cpp +msgid "SPOILS IN" +msgstr "ИСПОРТИТСЯ" + #: src/game_inventory.cpp src/veh_interact.cpp msgid "Battery" msgstr "Батарея" @@ -145382,6 +149205,38 @@ msgstr "Невозможно выпить пролитые жидкости" msgid "You're fully charged" msgstr "Ваша энергия на максимуме" +#: src/game_inventory.cpp +msgid "soon!" +msgstr "скоро!" + +#: src/game_inventory.cpp +msgid "fresh" +msgstr "свежий" + +#: src/game_inventory.cpp +msgid "quite fresh" +msgstr "довольно свежий" + +#: src/game_inventory.cpp +msgid "near midlife" +msgstr "средней свежести" + +#: src/game_inventory.cpp +msgid "past midlife" +msgstr "свежести ниже среднего" + +#: src/game_inventory.cpp +msgid "getting older" +msgstr "увядающее" + +#: src/game_inventory.cpp +msgid "old" +msgstr "старое" + +#: src/game_inventory.cpp +msgid "rotten" +msgstr "гнилое" + #: src/game_inventory.cpp msgid "Consume item" msgstr "Употребить" @@ -145527,6 +149382,14 @@ msgstr "Выберите оружие для помещения в %s" msgid "You have no weapons you could put into your %s." msgstr "У вас нет оружия, которое вы могли бы убрать в %s." +#: src/game_inventory.cpp src/iuse.cpp +msgid "Cut up what?" +msgstr "Что разрезать?" + +#: src/game_inventory.cpp +msgid "You have nothing to cut up." +msgstr "Вам нечего резать." + #: src/game_inventory.cpp msgid "Saw barrel" msgstr "Обрезать ствол" @@ -145841,7 +149704,7 @@ msgstr "Как долго ждать?" msgid "Are you sure you want to sleep?" msgstr "Вы уверены, что хотите лечь спать?" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "Да." @@ -145867,7 +149730,7 @@ msgstr "" #: src/handle_action.cpp msgid "You have an alarm clock. Set an alarm?" -msgstr "У вас есть будильник. Поставить его?" +msgstr "У вас есть будильник. Установить его?" #: src/handle_action.cpp msgid "No, don't set an alarm." @@ -146102,20 +149965,20 @@ msgstr "Сохранить и выйти?" #: src/handle_action.cpp #, c-format msgid "%s are now %s." -msgstr "" +msgstr "%s теперь %s." #. ~ Auto Pulp/Pulp Adjacent/Butcher is now set to x #. ~ Auto Foraging is now set to x #: src/handle_action.cpp #, c-format msgid "%s is now set to %s." -msgstr "" +msgstr "%s установлен на %s." #. ~ Auto Mining is now ON/OFF #: src/handle_action.cpp #, c-format msgid "%s is now %s." -msgstr "" +msgstr "%s теперь %s." #: src/handle_action.cpp msgid "Debug mode ON!" @@ -146130,6 +149993,8 @@ msgid "" "Please press one of the following for help on that topic:\n" "Press ESC to return to the game." msgstr "" +"Выберите один из подразделов справки:\n" +"Нажмите ESC, чтобы вернуться в игру." #: src/help.cpp msgid "Note colors: " @@ -146147,6 +150012,11 @@ msgstr "Нанести алмазное покрытие." msgid "You don't have a suitable item to coat with diamond" msgstr "У вас нет подходящего предмета для нанесения алмазного покрытия." +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "Вы нанесли алмазное покрытие на ваш %s" + #: src/iexamine.cpp #, c-format msgid "Use the %s?" @@ -146729,7 +150599,7 @@ msgstr "" #: src/iexamine.cpp #, c-format msgid "This kiln contains %s %s of material, and is ready to be fired." -msgstr "" +msgstr "Печь содержит %s %s материала и готова к разжиганию." #: src/iexamine.cpp msgid "Fire the kiln?" @@ -146768,11 +150638,11 @@ msgstr "До конца горения осталось примерно %d ми #: src/iexamine.cpp #, c-format msgid "It has finished burning, yielding %d charcoal." -msgstr "" +msgstr "Горение закончилось и принесло %d угля." #: src/iexamine.cpp msgid "This keg is empty." -msgstr "" +msgstr "Кег пуст." #: src/iexamine.cpp msgid "You have no brew to ferment." @@ -146790,7 +150660,7 @@ msgstr "Положить %s в бочку?" #: src/iexamine.cpp #, c-format msgid "This keg contains %s (%d), %0.f%% full." -msgstr "" +msgstr "Кег содержит %s (%d), %0.f%% наполнения." #: src/iexamine.cpp src/pickup.cpp msgid "Select an action" @@ -146799,16 +150669,16 @@ msgstr "Выберите действие" #: src/iexamine.cpp #, c-format msgid "Add more %s to the vat" -msgstr "" +msgstr "Добавить еще %s в чан" #: src/iexamine.cpp #, c-format msgid "Remove %s from the vat" -msgstr "" +msgstr "Убрать %s из чана" #: src/iexamine.cpp msgid "Start fermenting cycle" -msgstr "" +msgstr "Начать цикл ферментирования" #: src/iexamine.cpp #, c-format @@ -146818,7 +150688,7 @@ msgstr "Вы положили %s в бочку." #: src/iexamine.cpp #, c-format msgid "The keg now contains %s (%d), %0.f%% full." -msgstr "" +msgstr "Теперь кег содержит %s(%d), %0.f%% наполнения." #: src/iexamine.cpp msgid "Start fermenting cycle?" @@ -146840,7 +150710,7 @@ msgstr "Вы вынимаете %s из бака." #: src/iexamine.cpp #, c-format msgid "There's a vat of %s set to ferment there." -msgstr "" +msgstr "Чан с ферментирующимся %s." #: src/iexamine.cpp msgid "It will finish brewing in less than an hour." @@ -146867,7 +150737,7 @@ msgstr "%s готов для розлива." #: src/iexamine.cpp #, c-format msgid "There's a vat of fermented %s there." -msgstr "" +msgstr "Чан с ферментированным %s." #: src/iexamine.cpp #, c-format @@ -146896,7 +150766,7 @@ msgstr "Вы наливаете %2$s в контейнер (%1$s)." #: src/iexamine.cpp #, c-format msgid "Dispense or dump %s" -msgstr "" +msgstr "Распределить или выбросить %s" #: src/iexamine.cpp src/pickup.cpp msgid "Have a drink" @@ -147577,7 +151447,7 @@ msgstr "Поджечь и коптить еду... нужно ещё %d един #: src/iexamine.cpp msgid "Light up and smoke food" -msgstr "Зажечь и коптить еду" +msgstr "Поджечь и коптить еду" #: src/iexamine.cpp msgid "" @@ -147621,7 +151491,7 @@ msgid "" "charcoal is %d charges." msgstr "" "Вам нужно %d единиц древесного угля для %s %s еды. Минимальное количество " -"древесного угля, это %d единиц." +"древесного угля, %d единиц." #: src/iexamine.cpp msgid "Quench burning charcoal" @@ -147674,6 +151544,10 @@ msgstr "Это коптильня." msgid "You inspect its contents and find: " msgstr "Вы осматриваете содержимое и видите:" +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "...что внутри пусто." + #: src/iexamine.cpp msgid "You see some smoldering embers there." msgstr "Вы видите здесь немного тлеющих угольков." @@ -147882,7 +151756,7 @@ msgstr "Не назначено!" #: src/input.cpp msgctxt "keybinding" msgid "Disabled" -msgstr "Сломана" +msgstr "Отключено" #: src/input.cpp src/output.h src/requirements.cpp msgid " or " @@ -147893,14 +151767,14 @@ msgstr " или " #, c-format msgctxt "keybinding" msgid "[any] %s" -msgstr "" +msgstr "[любой] %s" #. ~ keybinding description for unbound or disabled keys #: src/input.cpp #, c-format msgctxt "keybinding" msgid "[n/a] %s" -msgstr "" +msgstr "[н/д] %s" #. ~ keybinding description for bound keys #: src/input.cpp @@ -147946,7 +151820,7 @@ msgstr "" #: src/input.cpp #, c-format msgid "New key for %s" -msgstr "" +msgstr "Новый ключ для %s" #: src/input.cpp #, c-format @@ -148089,10 +151963,96 @@ msgstr "оранжевый" msgid "black" msgstr "чёрный" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks as fresh as it can be. It still has " +"%s until it spoils." +msgstr "" +"* Эта еда выглядит максимально свежей. Осталось %s" +" до порчи." + +#: src/item.cpp +msgid "* This food looks as fresh as it can be." +msgstr "* Эта еда выглядит максимально свежей." + +#: src/item.cpp +#, c-format +msgid "" +"* This food looks old. It's just %s from becoming " +"inedible." +msgstr "" +"* Эта еда выглядит несвежей. Она на грани того, чтобы стать " +"несъедобной. Осталось %s до полностью несъедобного состояния." + +#: src/item.cpp +msgid "" +"* This food looks old. It's on the brink of becoming inedible." +msgstr "" +"* Эта еда выглядит несвежей. Она на грани того, чтобы стать " +"несъедобной." + +#: src/item.cpp +msgid "" +"* This food looks fine. If you were more skilled in cooking or" +" survival, you might be able to make a better estimation." +msgstr "" +"* Эта еда выглядит отлично. Если бы вы имели более высокий " +"навык выживания или готовки, то мы могли бы сделать более смелые оценки." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks quite fresh. It has %s until it" +" spoils." +msgstr "" +"* Эта еда выглядит вполне свежей. Осталось %s до " +"того как она испортится." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it is reaching its midlife. " +"There's %s before it spoils." +msgstr "" +"* Срок годности этой еды подходит к середине. Осталось " +"%s до ее полной непригодности." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it has passed its midlife. " +"Edible, but will go bad in %s." +msgstr "" +"* Срок годности этой еды прошёл середину. Она по-прежнему" +" съедобна, но вскоре начнёт портиться. Съедобно, но испортится окончательно " +"через %s." + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it will be old soon. It has " +"%s, so if you plan to use it, it's now or never." +msgstr "" +"* Эта еда скоро начнёт портиться. Через %s она " +"испортится, если вы планируете использовать её, то сейчас самое время." + #: src/item.cpp msgid "Category: " msgstr "Категория: " +#: src/item.cpp +msgid "$" +msgstr "" + #: src/item.cpp msgid "Price: " msgstr "Цена: " @@ -148177,7 +152137,7 @@ msgstr "last rot: " #: src/item.cpp msgid "last temp: " -msgstr "last temp: " +msgstr "" #: src/item.cpp msgid "HOT: " @@ -148262,53 +152222,11 @@ msgstr "" #: src/item.cpp #, c-format msgid "" -"* This food is perishable, and takes %s to " -"rot from full freshness, at room temperature." +"* This food is perishable, and at room temperature has an" +" estimated nominal shelf life of %s." msgstr "" -"* Эта еда имеет срок хранения, при комнатной температуре " -"составляющий %s." - -#: src/item.cpp -msgid "* This food looks as fresh as it can be." -msgstr "* Эта еда выглядит максимально свежей." - -#: src/item.cpp -msgid "" -"* This food looks still quite fresh. It's far from becoming " -"old." -msgstr "" -"* Эта еда выглядит вполне свежей. Она нескоро начнёт портиться." - -#: src/item.cpp -msgid "" -"* This food looks like it is reaching its midlife. It has" -" some time ahead before spoiling." -msgstr "" -"* Срок годности этой еды подходит к середине. У неё ещё " -"есть некоторое время, прежде чем она начнёт портиться." - -#: src/item.cpp -msgid "" -"* This food looks like it has passed its midlife. Edible," -" but will go old sooner rather then later." -msgstr "" -"* Срок годности этой еды прошёл середину. Она по-прежнему" -" съедобна, но вскоре начнёт портиться." - -#: src/item.cpp -msgid "" -"* This food looks like it will be old soon. It's now or never, if" -" you plan to use it." -msgstr "" -"* Эта еда скоро начнёт портиться. Если вы планируете использовать" -" её, то сейчас самое время." - -#: src/item.cpp -msgid "" -"* This food looks old. It's on a brink of becoming inedible." -msgstr "" -"* Эта еда выглядит несвежей. Она на грани того, чтобы стать " -"несъедобной." +"Это скоропортящаяся еда, и при комнатной температуре она " +"испортится через %s." #: src/item.cpp msgid "" @@ -148323,8 +152241,8 @@ msgid "" "* It was frozen once and after thawing became mushy and " "tasteless. It will rot if thawed again." msgstr "" -"* Это было заморожено однажды, и после разморозки оно станет мягким и " -"безвкусным. Оно будет гнить, если оттает снова." +"* Эта еда была заморожена, а после разморозки стала кашицеобразной и " +"безвкусной. Она будет гнить, если растает снова." #: src/item.cpp msgid "* It seems that deep freezing killed all parasites." @@ -148354,10 +152272,6 @@ msgstr "" "Эта еда начала портиться. Есть её — очень " "плохая идея." -#: src/item.cpp -msgid "Capacity: " -msgstr "Ёмкость: " - #: src/item.cpp #, c-format msgid " round of %s" @@ -148367,6 +152281,10 @@ msgstr[1] " патрона %s" msgstr[2] " патронов %s" msgstr[3] " патрон %s" +#: src/item.cpp +msgid "Capacity: " +msgstr "Ёмкость: " + #: src/item.cpp msgid " per round" msgstr " на патрон" @@ -148556,6 +152474,18 @@ msgstr "Модификатор управляемости: " msgid "Ammo: %s" msgstr "Боеприпасы: %s" +#: src/item.cpp +msgid "%" +msgstr "" + +#: src/item.cpp +msgid "Reload modifier: " +msgstr "Модификатор перезарядки: " + +#: src/item.cpp +msgid "Minimum strength required modifier: " +msgstr "Модификатор минимально требуемой силы: " + #: src/item.cpp msgid "Used on: " msgstr "Пригодно для: " @@ -148937,7 +152867,7 @@ msgstr "* Этот предмет одежды можно подогнат msgid "" "* These clothes are too large but can be undersized." msgstr "" -"* Эта одежда слишком велика но может быть ушита." +"* Эта одежда слишком велика, но может быть ушита." #: src/item.cpp msgid "" @@ -148951,8 +152881,8 @@ msgstr "" msgid "" "* These clothes are undersized but can be refitted." msgstr "" -"* Эта одежда вам мала но может быть подогнать по " -"фигуре" +"* Эта одежда вам мала, но может быть подогнана по " +"фигуре." #: src/item.cpp msgid "* This item can be worn on either side of the body." @@ -149128,7 +153058,7 @@ msgstr "Модификация: " #: src/item.cpp msgid "Contents of this item:" -msgstr "" +msgstr "Содержимое этого предмета:" #: src/item.cpp msgid "You know dozens of things you could craft with it." @@ -149241,10 +153171,10 @@ msgstr "%s - %s" msgctxt "item name" msgid "%s with %zd item" msgid_plural "%s with %zd items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%s с %zd предметом" +msgstr[1] "%s с %zd предметом" +msgstr[2] "%s с %zd предметом" +msgstr[3] "%s с %zd предметами" #: src/item.cpp msgid " (poisonous)" @@ -149284,7 +153214,7 @@ msgstr " (охлаждено)" #: src/item.cpp src/veh_interact.cpp msgid " (frozen)" -msgstr "(заморожено)" +msgstr " (заморожено)" #: src/item.cpp msgid " (melted)" @@ -149463,7 +153393,7 @@ msgstr "Извлечь %s из %s?" #: src/item.cpp #, c-format msgid "You can't mix loads in your %s." -msgstr "Вы не можете смешивать содержимое в вашем %s" +msgstr "Вы не можете смешивать содержимое в вашем %s." #: src/item.cpp #, c-format @@ -150009,12 +153939,12 @@ msgstr "Такое чувство, будто вы горите, но вы в п #: src/iuse.cpp msgctxt "memorial_male" msgid "Injected smart purifier." -msgstr "Смарт-пурификатор введён." +msgstr "Ввёл смарт-пурификатор." #: src/iuse.cpp msgctxt "memorial_female" msgid "Injected smart purifier." -msgstr "Смарт-пурификатор введён." +msgstr "Ввела смарт-пурификатор." #: src/iuse.cpp msgid "You don't have any mutations to purify." @@ -150163,12 +154093,12 @@ msgstr "Съела желе марло." #: src/iuse.cpp msgctxt "memorial_male" msgid "Became one with the Mycus." -msgstr "Стал одним из микус" +msgstr "Стал единым с микус" #: src/iuse.cpp msgctxt "memorial_female" msgid "Became one with the Mycus." -msgstr "Стала одним из микус" +msgstr "Стала единым с микус" #: src/iuse.cpp msgid "" @@ -150277,7 +154207,7 @@ msgid "" " the cataclysm all day." msgstr "" "Ладно, но, пожалуйста, больше не нужно мне этого давать. Я не хочу есть " -"собачий корм каждый день." +"собачий корм во время Катаклизма каждый день." #: src/iuse.cpp #, c-format @@ -150287,11 +154217,11 @@ msgstr "%s выбивает его у вас из рук!" #: src/iuse.cpp #, c-format msgid "You try to feed the %s some %s, but it vanishes!" -msgstr "Вы пытаетесь накормить %s дав немного %s, но оно исчезает!" +msgstr "Вы пытаетесь накормить %s кого-то %s, но оно исчезает!" #: src/iuse.cpp msgid "You want to feed it the dog food, but it bites your fingers!" -msgstr "Вы пытаетесь накормить его собачьей едой, но он кусает вас за руку!" +msgstr "Вы пытаетесь накормить собачьим кормом, но он кусает вас за пальцы!" #: src/iuse.cpp msgid "" @@ -150336,7 +154266,7 @@ msgstr "Недостаточно света для шитья!" #: src/iuse.cpp msgid "Enhance which clothing?" -msgstr "" +msgstr "Какую одежду улучшить?" #: src/iuse.cpp src/iuse.cpp src/iuse_actor.cpp msgid "You do not have that item!" @@ -150725,7 +154655,7 @@ msgstr "Здесь нечего взламывать." #: src/iuse.cpp msgid "" "You attempt to pry open your wallet but alas. You are just too miserly." -msgstr "" +msgstr "Вы пытаетесь открыть свой кошелек, но, увы. Вы просто слишком скупы." #: src/iuse.cpp msgid "You pry open the door." @@ -150984,7 +154914,7 @@ msgstr "Здесь нельзя сверлить." #: src/iuse.cpp msgid "There's a vehicle in the way!" -msgstr "" +msgstr "Транспортное средство на пути!" #: src/iuse.cpp msgid "Mine where?" @@ -150995,6 +154925,8 @@ msgid "" "Mining the depths of your experience, you realize that it's best not to dig " "yourself into a hole. You stop digging." msgstr "" +"Зарывшись в глубины своего опыта, вы понимаете, что лучше не рыть себя в " +"яму. Вы перестаете копать." #: src/iuse.cpp msgid "You can't mine there." @@ -151305,7 +155237,7 @@ msgstr "классическую музыку." #: src/iuse.cpp #, c-format msgid "You listen to %s" -msgstr "Вы слушаете %s" +msgstr "Вы слушаете музыку: %s" #: src/iuse.cpp msgid "The mp3 player turns off." @@ -151334,10 +155266,12 @@ msgid "You cannot use the %1$s with another of it's kind." msgstr "Вы не можете использовать %1$s с ещё одним его экземпляром." #: src/iuse.cpp -msgid "You unfold solar array from the pack and plug it in." +msgid "" +"You unfold solar array from the pack. You still need to connect it with a " +"cable." msgstr "" -"Вы раскладываете солнечные панели из рюкзака и подсоединяете их к системе " -"зарядки." +"Вы разворачиваете солнечную батарею из упаковки. Вам все равно нужно " +"подключить его с помощью кабеля." #: src/iuse.cpp msgid "You fold your portable solar array into the pack." @@ -151490,10 +155424,6 @@ msgstr "Вы получили %d щепок." msgid "You waste a lot of the wood." msgstr "Вы израсходовали много древесины." -#: src/iuse.cpp src/iuse_actor.cpp -msgid "Cut up what?" -msgstr "Что разрезать?" - #: src/iuse.cpp msgid "Chop down which tree?" msgstr "Какое дерево срубить?" @@ -152761,14 +156691,26 @@ msgstr "" "Ваши попытки почти сломали мультиварку! К счастью, она все ещё работает, но " "лучше прекратить это." -#: src/iuse.cpp -msgid "Attach cable to vehicle where?" -msgstr "К какой машине прикрепить кабель?" - #: src/iuse.cpp msgid "Using cable:" msgstr "Использование кабеля:" +#: src/iuse.cpp +msgid "Attach cable to vehicle" +msgstr "Прикрепить кабель к машине" + +#: src/iuse.cpp +msgid "Attach cable to self" +msgstr "Прикрепить кабель к себе" + +#: src/iuse.cpp +msgid "Attach cable to solar pack" +msgstr "Присоединить кабель к солнечному рюкзаку" + +#: src/iuse.cpp +msgid "Attach cable to vehicle where?" +msgstr "К какой машине прикрепить кабель?" + #: src/iuse.cpp msgid "Attach loose end of the cable" msgstr "Прикрепить свободный конец кабеля" @@ -152847,7 +156789,7 @@ msgstr "Вы не можете разместить %s здесь!" #: src/iuse.cpp #, c-format msgid "Capture what with the %s?" -msgstr "Заснять что при помощи %s?" +msgstr "Поймать кого при помощи %s?" #: src/iuse.cpp #, c-format @@ -152867,7 +156809,7 @@ msgstr "%1$s избегает ваших попыток убрать в %2$s." #: src/iuse.cpp #, c-format msgid "The %s can't capture nothing" -msgstr "%s не может ничего заснять" +msgstr "%s не может никого поймать" #: src/iuse.cpp msgid "Put the ladder where?" @@ -152951,8 +156893,107 @@ msgid "" "Simply taking more magnesium won't help. You have to go to sleep for it to " "work." msgstr "" -"Просто приняв больше магния, делу не поможет. Вам нужно пойти спать, чтобы " -"это сработало. " +"Просто приняв больше магния, делу не поможет. Вам нужно пойти поспать, чтобы" +" это сработало." + +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "Вы подбросили %s." + +#: src/iuse.cpp +msgid "Heads!" +msgstr "Орел!" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "Решка!" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "Это точно." + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "Это решительно так." + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "Без сомнений." + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "Да - однозначно." + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "Можете рассчитывать на это." + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "Насколько я вижу, да." + +#: src/iuse.cpp +msgid "Most likely." +msgstr "Скорее всего." + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "Перспективы хорошие." + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "Знаки говорят что да." + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "Ответ туманный, попробуйте еще раз." + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "Спроси снова чуть позже." + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "Лучше не говорить тебе сейчас." + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "Не могу предугадать сейчас." + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "Сконцентрируйся и спроси снова." + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "Не рассчитывай на это." + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "Мой ответ - нет." + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "Мои источники утверждают, что нет." + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "Перспективы не очень хорошие." + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "Очень сомнительно." + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "Вы спросили %s, а после подбросили." + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "%s говорит: %s" #: src/iuse_actor.cpp #, c-format @@ -153359,8 +157400,7 @@ msgstr "" #: src/iuse_actor.cpp msgid "Selectively butcher the downed zombie into a zombie slave?" -msgstr "" -"Избирательно разделать утонувшего зомби, чтобы превратить его в зомби-раба?" +msgstr "Выберите труп зомби для превращения в зомби-раба." #: src/iuse_actor.cpp msgid "Make love, not zlave." @@ -153495,22 +157535,22 @@ msgstr "Использовать %s" #: src/iuse_actor.cpp msgid "Can be activated to store a suitable item." msgid_plural "Can be activated to store suitable items." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Может быть активирован для хранения подходящего предмета." +msgstr[1] "Может быть активирован для хранения подходящего предмета." +msgstr[2] "Может быть активирован для хранения подходящего предмета." +msgstr[3] "Может быть активирован для хранения подходящих предметов." #: src/iuse_actor.cpp msgid "Num items: " -msgstr "" +msgstr "Нумерация вещей:" #: src/iuse_actor.cpp msgid "Item volume: Min: " -msgstr "" +msgstr "Объем вещей: Min: " #: src/iuse_actor.cpp msgid " Max: " -msgstr "" +msgstr " Max: " #: src/iuse_actor.cpp #, c-format @@ -153724,12 +157764,12 @@ msgstr "" #: src/iuse_actor.cpp msgid "Select a body part for: " -msgstr "" +msgstr "Выберите часть тела: " #: src/iuse_actor.cpp #, c-format msgid "Select a body part of %s for %s:" -msgstr "" +msgstr "Выберите часть тела из %s для %s:" #: src/iuse_actor.cpp msgid "Base healing: " @@ -153773,15 +157813,15 @@ msgstr "Шанс вылечить (в %): " #: src/iuse_actor.cpp msgid "* Bleeding:" -msgstr "" +msgstr "* Кровоточит:" #: src/iuse_actor.cpp msgid "* Bite:" -msgstr "" +msgstr "* Укус:" #: src/iuse_actor.cpp msgid "* Infection:" -msgstr "" +msgstr "* Инфекция:" #: src/iuse_actor.cpp msgid "Moves to use:" @@ -154017,7 +158057,7 @@ msgstr "Тут Леонард Ричардсон. Он просит людей #: src/iuse_software_kitten.cpp msgid "It's a stupid mask, fashioned after a beagle." -msgstr "Глупая маска, украшенная биглем." +msgstr "Глупая маска в виде морды бигля." #: src/iuse_software_kitten.cpp msgid "Your State Farm Insurance(tm) representative!" @@ -154253,7 +158293,7 @@ msgstr "Вы нашли рыбу! Это не то, что было бы пол #: src/iuse_software_kitten.cpp msgid "A Buttertonsils bar." -msgstr "" +msgstr "Сливочная плитка." #: src/iuse_software_kitten.cpp msgid "One of the few remaining discoes." @@ -155179,7 +159219,7 @@ msgstr "Действительно выйти? Все несохранённые #: src/main_menu.cpp msgid "Bugs? Suggestions? Use links in MOTD to report them." -msgstr "" +msgstr "Ошибки? Предложения? Используйте ссылки в MOTD, чтобы сообщить о них." #: src/main_menu.cpp #, c-format @@ -155653,6 +159693,228 @@ msgstr "Открыть комнату снабжения" msgid "Open Evidence Locker" msgstr "Открыть хранилище доказательств" +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "%s требуется: " + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "Навык" +msgstr[1] "Навыка" +msgstr[2] "Навыков" +msgstr[3] "Навыки" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "Требования: " + +#: src/martialarts.cpp +msgid "activate" +msgstr "aктивировать" + +#: src/martialarts.cpp +msgid "be used" +msgstr "будет использовано" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "* Может %s пока заряжен или разряжен" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "* Может только %s пока разряжен" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "* Может только %s пока заряжен" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "Техника баффа: %s" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "Бонус" +msgstr[1] "Бонус" +msgstr[2] "Бонус" +msgstr[3] "Бонус/наложение" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "* Будет стакаться до %d раз" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "* Будет оставаться до %d %s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "* Даст +%s бонус к уклонению%s" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] "для стака" +msgstr[1] "за стак" +msgstr[2] "за стак" +msgstr[3] "за стак" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "* Даст %s штраф к уклонению%s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "* Даст +%s бонус к блоку%s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "* Даст %s штраф к блоку%s" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "* Атаки будут полностью беззвучными" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "Тип: %s" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "оборонительный" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "наступательный" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "Бонус: " + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "* Активируется только при крите" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "* Будет контратаковать когда вы уклоняетесь" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "* Будет контратаковать когда выблокируете" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "" +"* Даст бесплатное восстановление в случае промаха" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "* Будет прерывать хват" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "* Будет атаковать по широкой дуге перед вами" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "* будет атаковать примыкающих к вам врагов" + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind " +"it" +msgstr "* Будет атаковать вашу цель и цель за ней" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "* Будет отбрасывать врагов %d %s" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "тайл" +msgstr[1] "тайла" +msgstr[2] "тайлов" +msgstr[3] "тайлы" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "* Будет сбивать врагов на %d %s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "* Будет оглушать цель на %d %s" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "* Будет обезоруживать цель" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "" +"Этот стиль заставляет вас использовать невооруженные удары, даже если " +"вы вооружены." + +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" +msgstr "
%s баффы:
" + +#: src/martialarts.cpp +msgid "Passive" +msgstr "Пассивные:" + +#: src/martialarts.cpp +msgid "Hit" +msgstr "Попадание" + +#: src/martialarts.cpp +msgid "Get hit" +msgstr "Получен удар" + +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "
Техника:
%s " + +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "Оружие:" +msgstr[1] "Орудия:" +msgstr[2] "Орудий:" +msgstr[3] "Орудия:" + +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr " Стиль: %s " + #: src/material.cpp msgid "damages" msgstr "повреждает" @@ -156072,1124 +160334,400 @@ msgid " slices %s" msgstr " резанул %s" #: src/melee.cpp -#, c-format -msgid "You clobber %s" -msgstr "Вы избили %s" - -#: src/melee.cpp -#, c-format -msgid "You smash %s" -msgstr "Вы ломаете %s" - -#: src/melee.cpp -#, c-format -msgid "You thrash %s" -msgstr "Вы лупите %s" - -#: src/melee.cpp -#, c-format -msgid "You batter %s" -msgstr "Вы колотите %s" - -#: src/melee.cpp -#, c-format -msgid "You hit %s" -msgstr "Вы ударили %s" - -#: src/melee.cpp -#, c-format -msgid "You whack %s" -msgstr "Вы сильно бьёте %s" - -#: src/melee.cpp -#, c-format -msgid " clobbers %s" -msgstr " избил %s" - -#: src/melee.cpp -#, c-format -msgid " smashes %s" -msgstr " ломает %s" - -#: src/melee.cpp -#, c-format -msgid " thrashes %s" -msgstr " лупит %s" - -#: src/melee.cpp -#, c-format -msgid " batters %s" -msgstr " колотит %s" - -#: src/melee.cpp -#, c-format -msgid " hits %s" -msgstr " бьёт %s" - -#: src/melee.cpp -#, c-format -msgid " whacks %s" -msgstr " сильно бьёт %s" - -#: src/melee.cpp -#, c-format -msgid "The bugs attack %s" -msgstr "Жуки атакуют %s" - -#. ~ NPC hits something but does no damage -#: src/melee.cpp -#, c-format -msgid "%s but does no damage." -msgstr "%s, но не нанёс ни единого повреждения." - -#. ~ someone hits something but do no damage -#: src/melee.cpp -#, c-format -msgid "%s but do no damage." -msgstr "%s, но не нанесли урона." - -#. ~ NPC hits something (critical) -#: src/melee.cpp -#, c-format -msgid "%s. Critical!" -msgstr "%s. Критический урон!" - -#. ~ someone hits something for %d damage (critical) -#: src/melee.cpp -#, c-format -msgid "%s for %d damage. Critical!" -msgstr "%s, нанеся урон %d. Критическое попадание!" - -#. ~ NPC hits something -#: src/melee.cpp -#, c-format -msgid "%s." -msgstr "%s." - -#. ~ someone hits something for %d damage -#: src/melee.cpp -#, c-format -msgid "%s for %d damage." -msgstr "%s, нанеся урон %d." - -#: src/melee.cpp -#, c-format -msgid "You lunge for the %s, but miss!" -msgstr "Вы делаете выпад в сторону %s, но промахиваетесь!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force!" -msgstr "Вы хватаете %s и тянете изо всех сил!" - -#: src/melee.cpp -#, c-format -msgid "You forcefully take %s from %s!" -msgstr "Вы силой забираете %s у %s!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but it drops nearby!" -msgstr "Вы хватаете %s и тянете изо всех сил, но это падает на землю!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but in vain!" -msgstr "Вы хватаете %s и тянете изо всех сил, но это бесполезно!" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might forcing their %s to drop down nearby!" -msgstr "Вы бьёте %s изо всех сил, так что %s падает на землю!" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might but %s remains in their hands!" -msgstr "Вы бьёте %s изо всех сил, но %s остаётся в руках!" - -#: src/melee.cpp src/npctalk.cpp -#, c-format -msgid "%s is hostile!" -msgstr "%s враг!" - -#: src/melee.cpp -#, c-format -msgid "You sneakily steal %1$s from %2$s!" -msgstr "Вы скрытно украли %1$s из %2$s!" - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s, but did not attract attention." -msgstr "Кража %1$s из %2$s не удалась, но вы не привлекли внимания." - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s." -msgstr "Кража %1$s из %2$s не удалась." - -#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a -#. whack! x 12" -#: src/messages.cpp -#, c-format -msgid "%s x %d" -msgstr "%s x %d" - -#: src/messages.cpp -msgctxt "message type" -msgid "good" -msgstr "хорошо" - -#: src/messages.cpp -msgctxt "message type" -msgid "bad" -msgstr "плохо" - -#: src/messages.cpp -msgctxt "message type" -msgid "mixed" -msgstr "" - -#: src/messages.cpp -msgctxt "message type" -msgid "warning" -msgstr "" - -#: src/messages.cpp -msgctxt "message type" -msgid "info" -msgstr "" - -#: src/messages.cpp -msgctxt "message type" -msgid "neutral" -msgstr "" - -#: src/messages.cpp -msgctxt "message type" -msgid "debug" -msgstr "" - -#: src/messages.cpp -#, c-format -msgid "< Press %s to filter, %s to reset >" -msgstr "" - -#: src/messages.cpp -#, c-format -msgid "" -"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" -"Examples:\n" -" good:mutation\n" -" :you pick up: 1\n" -" crash!\n" -msgstr "" - -#. ~ the 2nd %s is a type name, this is used to format a list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s, " -msgstr "" - -#. ~ the 2nd %s is a type name, this is used to format the last type name in a -#. list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s." -msgstr "" - -#: src/mission_companion.cpp -msgid "Outpost Missions" -msgstr "Задания аванпоста" - -#: src/mission_companion.cpp -msgid "Base Missions" -msgstr "Задания лагеря" - -#: src/mission_companion.cpp -msgid "Junk Shop Missions" -msgstr "Задания ломбарда" - -#: src/mission_companion.cpp -msgid "Agricultural Missions" -msgstr "Задания по сельскому хозяйству" - -#: src/mission_companion.cpp -msgid "Construction Missions" -msgstr "Задания по строительству" - -#: src/mission_companion.cpp -msgid "Free Merchant Missions" -msgstr "Задания Свободных торговцев" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." -msgstr "" -"Прибыль: $25-$500\n" -"Опасность: низкая\n" -"Время: 10-часовые задания\n" -" \n" -"Назначение одного из ваших союзников патрулировать окружающую дикую местность и отдельные здания, представляет возможность поднять навыки выживания, участвуя в относительно безопасном бою против отдельных созданий." - -#: src/mission_companion.cpp -msgid "Assign Scavenging Patrol" -msgstr "Назначить патруль добытчиков" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Patrol Roster:\n" -msgstr "" -"Оплата: $25-$500\n" -"Опасность: низкая\n" -"Время: 10-часовые задания\n" -" \n" -"Перечень патрулей:\n" - -#: src/mission_companion.cpp -msgid " hours] \n" -msgstr " часов] \n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?" -msgstr "" -"\n" -" \n" -"Вы хотите вернуть союзников в вашу группу?" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Patrol" -msgstr "Вернуть патруль добытчиков" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." -msgstr "" -"Прибыль: $200-$1000\n" -"Опасность: средняя\n" -"Время: 10-часовые задания\n" -" \n" -"Целью рейдов по добыче являются ранее населённые территории, для добычи как можно больше ценных вещей, прежде чем быть окружёнными зомби. Бой ожидается, помощь со стороны остальной части группы не гарантируется. Вознаграждение больше и есть шанс компаньону вернуть вещи назад." - -#: src/mission_companion.cpp -msgid "Assign Scavenging Raid" -msgstr "Назначить рейд добытчиков" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Raid Roster:\n" -msgstr "" -"Оплата: $200-$1000\n" -"Опасность: средняя\n" -"Время: 10-часовые задания\n" -" \n" -"Перечень рейдов:\n" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Raid" -msgstr "Вернуть рейд добытчиков" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." -msgstr "" -"Прибыль: $8/час\n" -"Опасность: минимальная\n" -"Время: 1 час минимум\n" -" \n" -"Назначение одного из ваших союзников на черновую работу - безопасный способ обучить их базовым навыкам и завоевать для них репутацию в аванпосте. Вознаграждение, впрочем, не очень большое." - -#: src/mission_companion.cpp -msgid "Assign Ally to Menial Labor" -msgstr "Назначить союзника на черновую работу" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"Оплата: $8/час\n" -"Опасность: минимальная\n" -"Время: 1 час минимум\n" -" \n" -"Перечень работ:\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Menial Labor" -msgstr "Снять союзника с черновой работы" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." -msgstr "" -"Прибыль: $12/час\n" -"Опасность: минимальная\n" -"Время: 1 час минимум\n" -" \n" -"Плотничья работа требует больше навыков, чем черновая работа, оплата немного увеличивается. Маловероятно, что вашим компаньонам придётся вступить в бой, но существует опасность во время работы в самодельных строениях." - -#: src/mission_companion.cpp -msgid "Assign Ally to Carpentry Work" -msgstr "Назначить союзника на работу плотником" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"Оплата: $12/час\n" -"Опасность: минимальная\n" -"Время: 1 час минимум\n" -" \n" -"Перечень работ:\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Carpentry Work" -msgstr "Снять союзника с работы плотником" - -#: src/mission_companion.cpp -msgid "Upgrade Camp" -msgstr "Улучшить лагерь" - -#: src/mission_companion.cpp -msgid "Gather Materials" -msgstr "Сбор материалов" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" -" \n" -"Effects:\n" -"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" -" \n" -"Must have enjoyability >= -6\n" -"Perishable food liquidated at penalty depending on upgrades and rot time:\n" -"> Rotten: 0%%\n" -"> Rots in < 2 days: 60%%\n" -"> Rots in < 5 days: 80%%\n" -" \n" -"Total faction food stock: %d kcal or %d day's rations" -msgstr "" -"Примечание:\n" -"Распространить еду для всех ваших союзников, и заполнить кладовые. Положите еду, которую вы хотите распространить, напротив двери палатки, между менеджером и стеной. \n" -"\n" -"Эффекты:\n" -"> Увеличивает ваши запасы еды, которая в свою очередь, используется для оплаты труда .\n" -"\n" -"Должна иметь Удовольствие >= -6\n" -"Скоропортящаяся еда уничтожается в зависимости от обновления(?) и скорости гниения:\n" -"> Гнилое: 0%%\n" -"> Сгниёт через < 2 дня: 60%%\n" -"> Сгниёт через < 5 дней: 80%%\n" -"\n" -"Запас продуктов питания: %d кКал или %d дневных рациона" - -#: src/mission_companion.cpp -msgid "Distribute Food" -msgstr "Распределить еду" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" -" \n" -"Effects:\n" -"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" -"> Items sitting on any type of furniture will not be moved.\n" -"> Items that are not listed in one of the categories are defaulted to the tools group." -msgstr "" -"Примечание:\n" -"Сбросить список вещей, которые награждаются очками сортировки, при исполнении миссии [ Черновая работа ].\n" -"\n" -"Эффекты:\n" -"> Назначаемые очки: еда, еда для распространения, семена, оружие, одежда, бионика, все виды инструментов, древесина, мусор, книги, медикаменты, и амуниция.\n" -"> Предметы, расположенные на различной мебели, не будут перемещены\n" -"> Предметы, которые не входят ни в одну категорию, по умолчанию группируются вместе с инструментами." - -#: src/mission_companion.cpp -msgid "Reset Sort Points" -msgstr "Сбросить очки сортировки" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to gather light brush and heavy sticks.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -"> heavy sticks\n" -"> withered plants\n" -"> splintered wood\n" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: %d/3\n" -msgstr "" -"Примечание:\n" -"Послать союзника добывать мелкие кустарники и палки.\n" -"\n" -"Используемый навык: выживание\n" -"Сложность: Н/Д\n" -"Возможная добыча:\n" -"> палки\n" -"> увядшие растения\n" -"> расколотая древесина\n" -"\n" -"Риск: Очень низкий\n" -"Время: 3 Часа, Повторяемо\n" -"Расстояние: %d/3\n" - -#: src/mission_companion.cpp -msgid "Collect Firewood" -msgstr "Сбор дров" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to do low level chores and sort supplies.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" -"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours\n" -"Positions: %d/1\n" -msgstr "" -"Примечание:\n" -"Послать союзника исполнять мелкие поручения, или сортировать вещи.\n" -"\n" -"Используемый навык: производство\n" -"Сложность: Н/Д\n" -"Эффекты:\n" -"> Материалы оставленные снаружи на земле, будут сортироваться в 4 ящика перед палаткой.\n" -"По умолчанию, сверху вниз: Одежда, Еда, Книги/Бионика, и Инструменты. Дерево будет сгружено на юг. Мусор на севере.\n" -"\n" -"Риск: Нет\n" -"Время: 3 Часа\n" -"Расстояние: %d/1\n" - -#: src/mission_companion.cpp -msgid "Menial Labor" -msgstr "Черновая работа" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours \n" -"Positions: %d/1\n" -msgstr "" -"Примечание:\n" -"Ваша база развилась в достаточной степени, чтобы появилась возможность расширить ее Расширение базы даёт немало новых возможностей, но в то же время это очень дорогостоящая в плане ресурсов и времени процедура. Выбирайте тип расширения с умом, потому что каждую базу можно расширить только 8 раз.\n" -"\n" -"Используемый навык: производство\n" -"Сложность: Н/Д\n" -"Эффекты:\n" -"> Выберите одно из возможных расширений. Хорошим выбором будет начать с фермы или склада древесины, так как еда требуется для поддержки сопутствующих миссий, а древесина это основной строительный материал.\n" -"\n" -"Риск: Нет\n" -"Время: 3 Часа\n" -"Расстояние: %d/1\n" - -#: src/mission_companion.cpp -msgid "Expand Base" -msgstr "Расширить базу" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to a nearby forest to cut logs.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: 1 \n" -"Effects:\n" -"> 50%% of trees/trunks at the forest position will be cut down.\n" -"> 50%% of total material will be brought back.\n" -"> Repeatable with diminishing returns.\n" -" \n" -"Risk: Low-Medium\n" -"Time: 6 Hour Base + Travel Time + Cutting Time\n" -"Positions: %d/1\n" -msgstr "" -"Примечание:\n" -"Отправить союзника в ближайший лес, чтобы нарубить деревьев .\n" -"\n" -"Используемый навык: производство\n" -"Сложность: 1\n" -"Эффекты:\n" -"> 50%% деревьев в лесу будет срублено.\n" -"> 50%% от всех добытых ресурсов будет получено.\n" -"\n" -"Риск: Ниже Среднего\n" -"Время: 6 часов + путешествие + время рубки\n" -"Расстояние: %d/1\n" - -#: src/mission_companion.cpp -msgid "Cut Logs" -msgstr "Валить лес" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Good for setting up resupply or contingency points.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward.\n" -" \n" -"Risk: Medium\n" -"Time: 6 Hour Construction + Travel\n" -"Positions: %d/1\n" -msgstr "" -"Примечание:\n" -"Отправить союзника для строительства самодельного убежища, и сохранения там всей найденной в том регионе экипировки .\n" -"\n" -"Используемый навык: выживание\n" -"Сложность: 3\n" -"Эффекты:\n" -"> Полезно для создания точек снабжения, или резерва экипировки.\n" -"> Снаряжение остаётся без присмотра, и может быть украдено.\n" -"> Время зависит от веса всей экипировки.\n" -"\n" -"Риск: Средний.\n" -"Время: 6 Часов на Строительство + путешествие.\n" -"Расстояние: %d/3\n" - -#: src/mission_companion.cpp -msgid "Setup Hide Site" -msgstr "Установить укрытие" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Push gear out to a hide site or bring gear back from one.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 1\n" -"Effects:\n" -"> Good for returning equipment you left in the hide site shelter.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward or back.\n" -" \n" -"Risk: Medium\n" -"Time: 1 Hour Base + Travel\n" -"Positions: %d/1\n" -msgstr "" -"Примечание:\n" -"Перенос вашей экипировки в одно из укрытий, или же возвращение вашей экипировки из укрытия к вам.\n" -"\n" -"Используемый навык: выживание\n" -"Сложность: 1\n" -"Эффекты:\n" -"> Полезно для возвращения той экипировки, которую вы оставили в одном из укрытий.\n" -"> Снаряжение остаётся без присмотра, и может быть украдено.\n" -"> Время зависит от веса всей экипировки.\n" -"\n" -"Риск: Средний.\n" -"Время: 1 Час + путешествие.\n" -"Расстояние: %d/3\n" - -#: src/mission_companion.cpp -msgid "Relay Hide Site" -msgstr "Сменить укрытие" - -#: src/mission_companion.cpp -msgid "Construct Map Fortifications" -msgstr "Построить укрепления на карте" - -#: src/mission_companion.cpp -msgid "Construct Spiked Trench" -msgstr "Построить шипованную траншею" - -#: src/mission_companion.cpp -msgid "Recruit Companions" -msgstr "Нанять компаньонов" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Select checkpoints to customize path.\n" -"> Reveals terrain around the path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" -"Примечание:\n" -"Оправить союзника в неизвестное. Высокие навыки выживания требуются чтобы избегать боя, но всё же следует ожидать пару-тройку столкновений с врагом.\n" -"\n" -"Используемый навык: выживание\n" -"Сложность: 3\n" -"Эффекты:\n" -"> Выбор контрольные точки, чтобы настроить проходимый путь.\n" -"> Открывает местность по пути следования.\n" -"> Может вести путь от укрытия к укрытию, чтобы увеличить дальность.\n" -"\n" -"Риск: Высокий.\n" -"Время: Путешествие\n" -"Расстояние: %d/3\n" - -#: src/mission_companion.cpp -msgid "Scout Mission" -msgstr "Задание разведчика" +#, c-format +msgid "You clobber %s" +msgstr "Вы избили %s" -#: src/mission_companion.cpp +#: src/melee.cpp #, c-format -msgid "" -"Notes:\n" -"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 4\n" -"Effects:\n" -"> Pulls creatures encountered into combat instead of fleeing.\n" -"> Select checkpoints to customize path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: Very High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" -"Примечание:\n" -"Отправьте союзника на зачистку пустоши. Их задачей будет убивать всё враждебное на своём пути, и вернуться на базу, когда их раны станут слишком тяжёлыми, или когда шансы на победу крайне малы.\n" -"\n" -"Используемый навык: выживание\n" -"Сложность: 4\n" -"Эффекты:\n" -"> Отправка в бой с существами, вместо побега от них.\n" -"> Выбор контрольные точки, чтобы настроить проходимый путь.\n" -"> Может вести путь от укрытия к укрытию, чтобы увеличить радиус.\n" -"\n" -"Риск: Очень высокий.\n" -"Время: Путешествие\n" -"Расстояние: %d/3\n" +msgid "You smash %s" +msgstr "Вы ломаете %s" -#: src/mission_companion.cpp -msgid "Combat Patrol" -msgstr "Боевой патруль" +#: src/melee.cpp +#, c-format +msgid "You thrash %s" +msgstr "Вы лупите %s" -#: src/mission_companion.cpp -msgid " Expansion Upgrade" -msgstr "Улучшение расширения" +#: src/melee.cpp +#, c-format +msgid "You batter %s" +msgstr "Вы колотите %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Have a companion attempt to completely dissemble a vehicle into components.\n" -" \n" -"Skill used: mechanics\n" -"Difficulty: 2 \n" -"Effects:\n" -"> Removed parts placed on the furniture in the garage.\n" -"> Skill plays a huge role to determine what is salvaged.\n" -" \n" -"Risk: None\n" -"Time: Skill Based \n" -msgstr "" -"Примечание:\n" -"Компаньон может попробовать полностью разобрать транспорт на запчасти.\n" -" \n" -"Используемые навыки: механика\n" -"Сложность: 2 \n" -"Эффекты:\n" -"> Снятые запчасти помещаются в гараже.\n" -"> Навык играет огромную роль в том, что именно удастся получить.\n" -" \n" -"Риск: отсутствует\n" -"Время: зависит от навыков \n" +#: src/melee.cpp +#, c-format +msgid "You hit %s" +msgstr "Вы ударили %s" -#: src/mission_companion.cpp -msgid " Chop Shop" -msgstr " Разделочная" +#: src/melee.cpp +#, c-format +msgid "You whack %s" +msgstr "Вы сильно бьёте %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plow any spaces that have reverted to dirt or grass.\n" -" \n" -msgstr "" -"Примечание:\n" -"Пахать любые места, которые снова заросли травой или затвердели.\n" -"\n" +#: src/melee.cpp +#, c-format +msgid " clobbers %s" +msgstr " избил %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Restores only the plots created in the last expansion upgrade.\n" -"> Does not damage existing crops.\n" -" \n" -"Risk: None\n" -"Time: 5 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"Используемые навыки: производство\n" -"Сложность: нет \n" -"Эффекты:\n" -"> Восстанавливает только участки, созданные при последнем улучшении расширений.\n" -"> Не повреждает существующий урожай.\n" -" \n" -"Риск: отсутствует\n" -"Время: 5 минут / участок\n" -"Занятость: 0/1 \n" +#: src/melee.cpp +#, c-format +msgid " smashes %s" +msgstr " ломает %s" -#: src/mission_companion.cpp -msgid " Plow Fields" -msgstr "Поля под вспахиание" +#: src/melee.cpp +#, c-format +msgid " thrashes %s" +msgstr " лупит %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plant designated seeds in the spaces that have already been tilled.\n" -" \n" -msgstr "" -"Примечание:\n" -"Сажайте семена в местах, которые уже были вспаханы.\n" -" \n" +#: src/melee.cpp +#, c-format +msgid " batters %s" +msgstr " колотит %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose which seed type or all of your seeds.\n" -"> Stops when out of seeds or planting locations.\n" -"> Will plant in ALL dirt mounds in the expansion.\n" -" \n" -"Risk: None\n" -"Time: 1 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"Используемые навыки: выживание\n" -"Сложность: нет \n" -"Эффекты:\n" -"> Выбирайте тип семян или все ваши семена.\n" -"> Прекращается, когда заканчиваются семена или места под посадку.\n" -"> Будет сажать во ВСЕХ земляных насыпях в пределах расширения.\n" -" \n" -"Риск: отсутствует\n" -"Время: 1 минута / участок \n" -"Занятость: 0/1 \n" +#: src/melee.cpp +#, c-format +msgid " hits %s" +msgstr " бьёт %s" -#: src/mission_companion.cpp -msgid " Plant Fields" -msgstr "Поля под посадку" +#: src/melee.cpp +#, c-format +msgid " whacks %s" +msgstr " сильно бьёт %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Harvest any plants that are ripe and bring the produce back.\n" -" \n" -msgstr "" -"Примечания:\n" -"Собирайте созревший урожай и приносите его обратно в лагерь.\n" -" \n" +#: src/melee.cpp +#, c-format +msgid "The bugs attack %s" +msgstr "Жуки атакуют %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Will dump all harvesting products onto your location.\n" -" \n" -"Risk: None\n" -"Time: 3 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"Используемые навыки: выживание\n" -"Сложность: нет \n" -"Эффекты:\n" -"> В эту локацию будет сбрасываться вся добыча.\n" -" \n" -"Риск: отсутствует\n" -"Время: 3 минуты / участок \n" -"Занятость: 0/1 \n" +#. ~ NPC hits something but does no damage +#: src/melee.cpp +#, c-format +msgid "%s but does no damage." +msgstr "%s, но не нанёс ни единого повреждения." -#: src/mission_companion.cpp -msgid " Harvest Fields" -msgstr "Поля под сбор урожая" +#. ~ someone hits something but do no damage +#: src/melee.cpp +#, c-format +msgid "%s but do no damage." +msgstr "%s, но не нанесли урона." -#: src/mission_companion.cpp -msgid "Working to expand your camp!\n" -msgstr "Работает над расширением вашего лагеря!\n" +#. ~ NPC hits something (critical) +#: src/melee.cpp +#, c-format +msgid "%s. Critical!" +msgstr "%s. Критический урон!" -#: src/mission_companion.cpp -msgid " hours left] \n" -msgstr " часов до конца] \n" +#. ~ someone hits something for %d damage (critical) +#: src/melee.cpp +#, c-format +msgid "%s for %d damage. Critical!" +msgstr "%s, нанеся урон %d. Критическое попадание!" -#: src/mission_companion.cpp -msgid " minutes left] \n" -msgstr " минут до конца] \n" +#. ~ NPC hits something +#: src/melee.cpp +#, c-format +msgid "%s." +msgstr "%s." -#: src/mission_companion.cpp -msgid " [DONE]\n" -msgstr " [ГОТОВО]\n" +#. ~ someone hits something for %d damage +#: src/melee.cpp +#, c-format +msgid "%s for %d damage." +msgstr "%s, нанеся урон %d." -#: src/mission_companion.cpp -msgid "Recover Ally from Upgrading" -msgstr "Снять союзника с улучшения" +#: src/melee.cpp +#, c-format +msgid "You lunge for the %s, but miss!" +msgstr "Вы делаете выпад в сторону %s, но промахиваетесь!" -#: src/mission_companion.cpp -msgid "Working to upgrade your expansions!\n" -msgstr "Работает над постройкой расширений!\n" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force!" +msgstr "Вы хватаете %s и тянете изо всех сил!" -#: src/mission_companion.cpp -msgid " Expansion" -msgstr "Расширение" +#: src/melee.cpp +#, c-format +msgid "You forcefully take %s from %s!" +msgstr "Вы силой забираете %s у %s!" -#: src/mission_companion.cpp -msgid "Recover Ally, " -msgstr "Снять союзника, " +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but it drops nearby!" +msgstr "Вы хватаете %s и тянете изо всех сил, но это падает на землю!" -#: src/mission_companion.cpp -msgid "Working at the chop shop...\n" -msgstr "Работает в разделочной...\n" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but in vain!" +msgstr "Вы хватаете %s и тянете изо всех сил, но это бесполезно!" -#: src/mission_companion.cpp -msgid "/120 hours] \n" -msgstr "/120 часов] \n" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might forcing their %s to drop down nearby!" +msgstr "Вы бьёте %s изо всех сил, так что %s падает на землю!" -#: src/mission_companion.cpp -msgid " (Finish) Chop Shop" -msgstr "(Закончить) Разделка туш" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might but %s remains in their hands!" +msgstr "Вы бьёте %s изо всех сил, но %s остаётся в руках!" -#: src/mission_companion.cpp -msgid "Working in your kitchen!\n" -msgstr "Работает в вашей кухне!\n" +#: src/melee.cpp src/npctalk.cpp +#, c-format +msgid "%s is hostile!" +msgstr "%s враг!" -#: src/mission_companion.cpp -msgid " [ALMOST DONE]\n" -msgstr " [ПОЧТИ ГОТОВО]\n" +#: src/melee.cpp +#, c-format +msgid "You sneakily steal %1$s from %2$s!" +msgstr "Вы скрытно украли %1$s из %2$s!" -#: src/mission_companion.cpp -msgid " (Finish) Cooking" -msgstr "(Закончить) Готовка" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s, but did not attract attention." +msgstr "Кража %1$s из %2$s не удалась, но вы не привлекли внимания." -#: src/mission_companion.cpp -msgid "Working in your blacksmith shop!\n" -msgstr "Работает в вашей кузнице!\n" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s." +msgstr "Кража %1$s из %2$s не удалась." -#: src/mission_companion.cpp -msgid " (Finish) Smithing" -msgstr "(Закончить) Кузнечные работы" +#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a +#. whack! x 12" +#: src/messages.cpp +#, c-format +msgid "%s x %d" +msgstr "%s x %d" -#: src/mission_companion.cpp -msgid "Working to plow your fields!\n" -msgstr "Работает вспахивая ваши поля!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "good" +msgstr "хорошо" -#: src/mission_companion.cpp -msgid "/~48 hours] \n" -msgstr "/~48 часов] \n" +#: src/messages.cpp +msgctxt "message type" +msgid "bad" +msgstr "плохо" -#: src/mission_companion.cpp -msgid " (Finish) Plow Fields" -msgstr "(Закончить) Вспахивание полей" +#: src/messages.cpp +msgctxt "message type" +msgid "mixed" +msgstr "смешанный" -#: src/mission_companion.cpp -msgid "Working to plant your fields!\n" -msgstr "Работает высаживая ваши поля!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "warning" +msgstr "предупреждение" -#: src/mission_companion.cpp -msgid "/4 hours] \n" -msgstr "/4 часов] \n" +#: src/messages.cpp +msgctxt "message type" +msgid "info" +msgstr "информация" -#: src/mission_companion.cpp -msgid " (Finish) Plant Fields" -msgstr "(Закончить) Засев урожая" +#: src/messages.cpp +msgctxt "message type" +msgid "neutral" +msgstr "безразличен" -#: src/mission_companion.cpp -msgid "Working to harvest your fields!\n" -msgstr "Работает собирая урожай с ваших полей!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "debug" +msgstr "" -#: src/mission_companion.cpp -msgid "/~10 hours] \n" -msgstr "/~10 часов] \n" +#: src/messages.cpp +#, c-format +msgid "< Press %s to filter, %s to reset >" +msgstr "" -#: src/mission_companion.cpp -msgid " (Finish) Harvest Fields" -msgstr "(Закончить) Сборка урожая" +#: src/messages.cpp +#, c-format +msgid "" +"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" +"Examples:\n" +" good:mutation\n" +" :you pick up: 1\n" +" crash!\n" +msgstr "" -#: src/mission_companion.cpp -msgid "Working on your farm!\n" -msgstr "Работает на вашей ферме!\n" +#. ~ the 2nd %s is a type name, this is used to format a list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s, " +msgstr "" -#: src/mission_companion.cpp -msgid " (Finish) Crafting" -msgstr "(Закончить) Создание предметов" +#. ~ the 2nd %s is a type name, this is used to format the last type name in a +#. list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s." +msgstr "" #: src/mission_companion.cpp -msgid "Busy crafting!\n" -msgstr "Занят на производстве!\n" +msgid "Outpost Missions" +msgstr "Задания аванпоста" #: src/mission_companion.cpp -msgid "Searching for materials to upgrade the camp.\n" -msgstr "Ищет материалы для улучшения лагеря.\n" +msgid "Junk Shop Missions" +msgstr "Задания ломбарда" #: src/mission_companion.cpp -msgid "/3 hours] \n" -msgstr "/3 часа] \n" +msgid "Agricultural Missions" +msgstr "Задания по сельскому хозяйству" #: src/mission_companion.cpp -msgid "Recover Ally from Gathering" -msgstr "Снять союзника со сбора материалов" +msgid "Construction Missions" +msgstr "Задания по строительству" #: src/mission_companion.cpp -msgid "Searching for firewood.\n" -msgstr "Ищет дрова.\n" +msgid "Free Merchant Missions" +msgstr "Задания Свободных торговцев" #: src/mission_companion.cpp -msgid "Recover Firewood Gatherers" -msgstr "Снять поленницу" +msgid "" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" +" \n" +"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." +msgstr "" +"Прибыль: $25-$500\n" +"Опасность: низкая\n" +"Время: 10-часовые задания\n" +" \n" +"Назначение одного из ваших компаньонов патрулировать окружающую дикую местность и отдельные здания, представляет возможность поднять навыки выживания, участвуя в относительно безопасном бою против отдельных созданий." #: src/mission_companion.cpp -msgid "Performing menial labor...\n" -msgstr "Выполняет черновую работу...\n" +msgid "Assign Scavenging Patrol" +msgstr "Назначить патруль добытчиков" #: src/mission_companion.cpp msgid "" -"\n" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" " \n" -"Do you wish to bring your allies back into your party?\n" +"Patrol Roster:\n" msgstr "" -"\n" +"Оплата: $25-$500\n" +"Опасность: низкая\n" +"Время: 10-часовые задания\n" " \n" -"Вы хотите вернуть союзников в вашу группу?\n" - -#: src/mission_companion.cpp -msgid "Recover Menial Laborer" -msgstr "Снять чернорабочего" +"Перечень патрулей:\n" #: src/mission_companion.cpp -msgid "Surveying for expansion...\n" -msgstr "Обследует место под расширение...\n" +msgid " hours] \n" +msgstr " часов] \n" #: src/mission_companion.cpp -msgid "Recover Surveyor" -msgstr "Снять инспектора" +msgid "Retrieve Scavenging Patrol" +msgstr "Вернуть патруль добытчиков" #: src/mission_companion.cpp -msgid "Cutting logs in the woods...\n" -msgstr "Валит лес...\n" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." +msgstr "" +"Прибыль: $200-$1000\n" +"Опасность: средняя\n" +"Время: 10-часовые задания\n" +" \n" +"Целью рейдов по добыче являются ранее населённые территории, для добычи как можно больше ценных вещей, прежде чем быть окружёнными зомби. Бой ожидается, помощь со стороны остальной части группы не гарантируется. Вознаграждение больше и есть шанс компаньону вернуть вещи назад." #: src/mission_companion.cpp -msgid "Recover Log Cutter" -msgstr "Снять лесоруба" +msgid "Assign Scavenging Raid" +msgstr "Назначить рейд добытчиков" #: src/mission_companion.cpp -msgid "Setting up a hide site...\n" -msgstr "Устанавливает укрытие...\n" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Raid Roster:\n" +msgstr "" +"Оплата: $200-$1000\n" +"Опасность: средняя\n" +"Время: 10-часовые задания\n" +" \n" +"Перечень рейдов:\n" #: src/mission_companion.cpp -msgid "Recover Hide Setup" -msgstr "Снять укрытие" +msgid "Retrieve Scavenging Raid" +msgstr "Вернуть рейд добытчиков" #: src/mission_companion.cpp -msgid "Constructing fortifications...\n" -msgstr "Строит укрепления...\n" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." +msgstr "" +"Прибыль: $8/час\n" +"Опасность: минимальная\n" +"Время: 1 час минимум\n" +" \n" +"Назначение одного из ваших компаньонов на черновую работу - безопасный способ обучить их базовым навыкам и завоевать для них репутацию в аванпосте. Вознаграждение, впрочем, не очень большое." #: src/mission_companion.cpp -msgid "Finish Map Fortifications" -msgstr "Заканчивает укрепления на карте" +msgid "Assign Ally to Menial Labor" +msgstr "Назначить компаньона на черновую работу" #: src/mission_companion.cpp -msgid "Searching for recruits.\n" -msgstr "Ищет новобранцев.\n" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" +msgstr "" +"Оплата: $8/час\n" +"Опасность: минимальная\n" +"Время: 1 час минимум\n" +" \n" +"Перечень работ:\n" #: src/mission_companion.cpp -msgid "Recover Recruiter" -msgstr "Снять вербовщика" +msgid "Recover Ally from Menial Labor" +msgstr "Снять компаньона с черновой работы" #: src/mission_companion.cpp -msgid "Scouting the region.\n" -msgstr "Разведует регион.\n" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." +msgstr "" +"Прибыль: $12/час\n" +"Опасность: минимальная\n" +"Время: 1 час минимум\n" +" \n" +"Плотничья работа требует больше навыков, чем черновая работа, оплата немного увеличивается. Маловероятно, что вашим компаньонам придётся вступить в бой, но существует опасность во время работы в самодельных строениях." #: src/mission_companion.cpp -msgid "Recover Scout" -msgstr "Снять разведчика" +msgid "Assign Ally to Carpentry Work" +msgstr "Назначить компаньона на работу плотником" #: src/mission_companion.cpp -msgid "Patrolling the region.\n" -msgstr "Патрулирует регион.\n" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" +msgstr "" +"Оплата: $12/час\n" +"Опасность: минимальная\n" +"Время: 1 час минимум\n" +" \n" +"Перечень работ:\n" #: src/mission_companion.cpp -msgid "Recover Combat Patrol" -msgstr "Снять боевой патруль" +msgid "Recover Ally from Carpentry Work" +msgstr "Снять компаньона с работы плотником" #: src/mission_companion.cpp msgid "" @@ -157351,7 +160889,7 @@ msgstr "" #: src/mission_companion.cpp msgid "Assign Ally to Forage for Food" -msgstr "Назначить союзника на сбор еды" +msgstr "Назначить компаньона на сбор еды" #: src/mission_companion.cpp msgid "" @@ -157369,7 +160907,7 @@ msgstr "" #: src/mission_companion.cpp msgid "Recover Ally from Foraging" -msgstr "Снять союзника со сбора еды" +msgstr "Снять компаньона со сбора еды" #: src/mission_companion.cpp msgid "" @@ -157458,245 +160996,6 @@ msgstr "уходит в рейд по добыче..." msgid "departs to work as a laborer..." msgstr "уходит работать разнорабочим..." -#: src/mission_companion.cpp -msgid "You don't have enough food stored to feed your companion." -msgstr "Ваших запасов еды не хватает, чтобы накормить вашего компаньона." - -#: src/mission_companion.cpp -msgid "begins to upgrade the camp..." -msgstr "начинает улучшать лагерь..." - -#: src/mission_companion.cpp -msgid "You already have a companion upgrading the camp." -msgstr "Вы уже назначили компаньона на улучшение лагеря." - -#: src/mission_companion.cpp -msgid "You don't have the materials for the upgrade." -msgstr "Вам не хватает материалов для улучшения." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your garage..." -msgstr "%s возвращается из гаража..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your kitchen with something..." -msgstr "%s возвращается из кухни, неся кое-что..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your blacksmith shop with something..." -msgstr "%s возвращается из кузницы, неся кое-что..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your farm with something..." -msgstr "%s возвращается с фермы, неся кое-что..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns to you with something..." -msgstr "%s возвращается к вам, неся кое-что..." - -#: src/mission_companion.cpp -msgid "departs to search for materials..." -msgstr "отправляется на поиск материалов..." - -#: src/mission_companion.cpp -msgid "There are too many companions working on this mission!" -msgstr "Это задание выполняет слишком много компаньонов!" - -#: src/mission_companion.cpp -msgid "departs to search for firewood..." -msgstr "отправляется на поиск дров..." - -#: src/mission_companion.cpp -msgid "departs to dig ditches and scrub toilets..." -msgstr "отправляется на чистку туалетов..." - -#: src/mission_companion.cpp -msgid "departs to survey land..." -msgstr "отправляется на обследование местности..." - -#: src/mission_companion.cpp -msgid "You have already selected a surveyor!" -msgstr "Вы уже выбрали инспектора!" - -#: src/mission_companion.cpp -msgid "begins to upgrade the expansion..." -msgstr "начинает улучшать расширение..." - -#: src/mission_companion.cpp -msgid "You already have a worker upgrading that expansion!" -msgstr "Вы уже назначили человека на работу по улучшению этого расширения!" - -#: src/mission_companion.cpp -msgid "Forests and swamps are the only valid cutting locations." -msgstr "Леса и болота - единственные подходящие места для добычи." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Trip Estimate:\n" -"%s" -msgstr "" -"Время на дорогу:\n" -"%s" - -#: src/mission_companion.cpp -msgid "departs to cut logs..." -msgstr "отправляется на валку леса..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working in the woods..." -msgstr "%s возвращается с работы в лесу..." - -#: src/mission_companion.cpp -msgid "Forests, swamps, and fields are valid hide site locations." -msgstr "Леса, болота и поля являются подходящими местами для укрытия." - -#: src/mission_companion.cpp -msgid "departs to build a hide site..." -msgstr "отправляется строить укрытие..." - -#: src/mission_companion.cpp -msgid "You need equipment to setup a hide site..." -msgstr "Вам нужно оборудование для установки укрытия..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working on the hide site..." -msgstr "%s возвращается с работы по установке укрытия..." - -#: src/mission_companion.cpp -msgid "You must select an existing hide site." -msgstr "Вы должны выбрать уже существующее укрытие." - -#: src/mission_companion.cpp -msgid "Bring gear back?" -msgstr "Вернуть оборудование обратно?" - -#: src/mission_companion.cpp -msgid "departs for the hide site..." -msgstr "отправляется к укрытию..." - -#: src/mission_companion.cpp -msgid "You need equipment to transport between the hide site..." -msgstr "Вам нужно оборудование для перевозки между укрытиями..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from shuttling gear between the hide site..." -msgstr "%s возвращается с перевозки оборудования между укрытиями..." - -#: src/mission_companion.cpp -msgid "" -"Select a start and end point. Line must be straight. Fields, forests, and " -"swamps are valid fortification locations. In addition to existing " -"fortification constructions." -msgstr "" -"Выберите начальную и конечную точки. Линия должна быть прямой. Поля, леса и " -"болота являются подходящими типами местности для постройки укреплений. В " -"дополнение к существующим фортификационным постройкам. " - -#: src/mission_companion.cpp -msgid "Select an end point." -msgstr "Выберите конечную точку." - -#: src/mission_companion.cpp -msgid "Invalid terrain in construction path." -msgstr "На пути постройки неправильная местность." - -#: src/mission_companion.cpp -msgid "You don't have the material to build the fortification." -msgstr "Вам не хватает материалов, чтобы построить укрепления." - -#: src/mission_companion.cpp -msgid "begins constructing fortifications..." -msgstr "начинает строить укрепления..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from constructing fortifications..." -msgstr "%s возвращается с постройки укреплений..." - -#: src/mission_companion.cpp -msgid "departs to search for recruits..." -msgstr "отправляется на поиски новобранцев..." - -#: src/mission_companion.cpp -msgid "" -"Select checkpoints until you reach maximum range or select the last point " -"again to end." -msgstr "" -"Выбирайте контрольные точки до тех пор, пока не дойдёте до максимальной " -"дистанции. Либо же выберите последнюю точку ещё раз, чтобы закончить." - -#: src/mission_companion.cpp -msgid "departs on patrol..." -msgstr "отправляется в патруль..." - -#: src/mission_companion.cpp -msgid "Your companion hit a river and didn't know how to swim..." -msgstr "Ваш компаньон наткнулся на реку, но не умеет плавать..." - -#: src/mission_companion.cpp -msgid "" -"Your companion hit a river and didn't know how to swim well enough to " -"cross..." -msgstr "" -"Ваш компаньон наткнулся на реку, но не умеет плавать достаточно хорошо, " -"чтобы её переплыть..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't return from patrol..." -msgstr "%s не вернулся из патруля..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from patrol..." -msgstr "%s возвращается из патруля..." - -#: src/mission_companion.cpp -msgid "You already have someone working in that garage." -msgstr "Вы уже назначили человека на работу в этом гараже." - -#: src/mission_companion.cpp -msgid "begins plowing the field..." -msgstr "начинает вскапывать поле..." - -#: src/mission_companion.cpp -msgid "You already have someone plowing that field." -msgstr "Вы уже назначили человека на вскапывание этого поля." - -#: src/mission_companion.cpp -msgid "You have no additional seeds to give your companions..." -msgstr "" -"У вас нет дополнительных семян, которые вы могли бы дать компаньонам..." - -#: src/mission_companion.cpp -msgid "begins planting the field..." -msgstr "начинает засаживать поле..." - -#: src/mission_companion.cpp -msgid "Which seeds do you wish to have planted?" -msgstr "Какие семена вы хотели бы посадить?" - -#: src/mission_companion.cpp -msgid "You already have someone planting that field." -msgstr "Вы уже назначили человека на засаживание этого поля." - -#: src/mission_companion.cpp -msgid "begins to harvest the field..." -msgstr "начинает собирать урожай с поля..." - -#: src/mission_companion.cpp -msgid "You already have someone harvesting that field." -msgstr "Вы уже назначили человека на сбор урожая с этого поля." - #: src/mission_companion.cpp msgid "departs to work as a carpenter..." msgstr "уходит работать плотником..." @@ -157910,282 +161209,6 @@ msgstr "" "%s ощущает уверенность в ваших компаньонах и хочет предложить им участвовать" " в более сложных заданиях." -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"%s\n" -" \n" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s \n" -"Risk: None\n" -"Time: %s\n" -msgstr "" -"Примечание:\n" -"%s\n" -"\n" -"Используемый навык: %s\n" -"Сложность: %d\n" -"%s\n" -"Риск: Нет\n" -"Время: %s\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s\n" -"Time: %s\n" -msgstr "" -"Используемый навык: %s \n" -"Сложность: %d \n" -"%s\n" -"Время: %s\n" - -#: src/mission_companion.cpp -msgid "" -"Notes: \n" -"Send a companion to gather materials for the next camp upgrade.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -msgstr "" -"Примечания: \n" -"Отправьте компаньона для сбора материалов для следующего улучшения лагеря.\n" -" \n" -"Используемые навыки: выживание\n" -"Сложность: нет \n" -"Что можно получить:\n" - -#: src/mission_companion.cpp -msgid "" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: " -msgstr "" -" \n" -"Риск: очень низкий\n" -"Время: 3 часа, повторяется\n" -"Должности: " - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from upgrading the camp having earned a bit of experience..." -msgstr "" -"%s возвращается с работы по улучшению лагеря, зарабатывая при это немного " -"опыта..." - -#: src/mission_companion.cpp -#, c-format -msgid "While gathering supplies, a silent specter approaches %s..." -msgstr "Молчаливый призрак подошёл к %s, когда тот собирал припасы..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s notices the antlered horror and slips away before it gets too close." -msgstr "" -"%s замечает рогатый ужас и успевает улизнуть до того, как тот подобрался " -"слишком близко." - -#: src/mission_companion.cpp -#, c-format -msgid "The survivor approaches %s asking for directions." -msgstr "Выживший подходит к %s и спрашивает о направлениях." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Fearful that he may be an agent of some hostile faction, %s doesn't mention " -"the camp." -msgstr "" -"Боясь, что он может быть агентом какой-то враждебной фракции, %s не " -"упоминает о лагере." - -#: src/mission_companion.cpp -msgid "The two part on friendly terms and the survivor isn't seen again." -msgstr "Они прощаются на дружеской ноте, выжившего больше никто не видел." - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't detect the ambush until it was too late!" -msgstr "%s не обнаружил засаду, пока не стало слишком поздно!" - -#: src/mission_companion.cpp -#, c-format -msgid "The bull moose charged %s from the tree line..." -msgstr "Лось погнался за %s, выбежав из леса..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Despite being caught off guard %s was able to run away until the moose gave " -"up pursuit." -msgstr "" -"Несмотря на то, что лось застал %s врасплох, он сумел убежать от лося, и тот" -" прекратил преследование." - -#: src/mission_companion.cpp -#, c-format -msgid "The jabberwock grabbed %s by the arm from behind and began to scream." -msgstr "Бармаглот схватил %s за руку, напав со спины, а затем начал кричать." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Terrified, %s spun around and delivered a massive kick to the creature's " -"torso..." -msgstr "" -"В ужасе %s оборачивается и наносит сильный удар по туловищу существа..." - -#: src/mission_companion.cpp -#, c-format -msgid "Collapsing into a pile of gore, %s walked away unscathed..." -msgstr "Превратив существо в кучку мяса, %s уходит без единой царапины..." - -#: src/mission_companion.cpp -msgid "(Sounds like bullshit, you wonder what really happened.)" -msgstr "(Пахнет выдумкой, интересно, что же случилось на самом деле.)" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s turned to find the hideous black eyes of a giant wasp staring back from " -"only a few feet away..." -msgstr "" -"%s поворачивается и видит перед собой ужасные чёрные глаза гигантской осы, " -"находящейся всего в нескольких метрах..." - -#: src/mission_companion.cpp -msgid "The screams were terrifying, there was nothing anyone could do." -msgstr "Крики были ужасающими. Никто бы не смог ничего поделать." - -#: src/mission_companion.cpp -#, c-format -msgid "Pieces of %s were found strewn across a few bushes." -msgstr "Куски %s валялись по всей округе." - -#: src/mission_companion.cpp -msgid "(You wonder if your companions are fit to work on their own...)" -msgstr "(Интересно, ваши компаньоны вообще способны за себя постоять?..)" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from gathering materials carrying supplies and has a bit more " -"experience..." -msgstr "" -"%s возвращается с работы по добыче материалов, зарабатывая при это немного " -"опыта..." - -#: src/mission_companion.cpp -msgid "Your companion seems disappointed that your pantry is empty..." -msgstr "Ваш компаньон выглядит разочарованным видом пустой кладовой..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -" Chopping this vehicle:\n" -"%s" -msgstr "" -" На разборке этой машины:\n" -"%s" - -#: src/mission_companion.cpp -msgid "begins working in the garage..." -msgstr "начинает работать в гараже..." - -#: src/mission_companion.cpp -msgid "No seeds to plant!" -msgstr "Нет семян для посадки!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working your fields..." -msgstr "%s возвращается с работы в полях..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from doing the dirty work to keep the camp running..." -msgstr "" -"%s возвращается с грязной работы, благодаря которой в лагере всё идёт своим " -"чередом..." - -#: src/mission_companion.cpp -msgid "Sorting points have changed, forcing reset." -msgstr "Сортировочные очки изменились. Сбрасываем." - -#: src/mission_companion.cpp -msgid "Select an expansion:" -msgstr "Выберите расширение:" - -#: src/mission_companion.cpp -msgid "You choose to wait..." -msgstr "Вы решили подождать..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from surveying for the expansion." -msgstr "%s возвращается с обследования места под расширение." - -#: src/mission_companion.cpp -msgid "No items are located at the drop point..." -msgstr "На точке сброса не найдено никаких предметов..." - -#: src/mission_companion.cpp -#, c-format -msgid "You distribute %d kcal worth of food to your companions." -msgstr "Вы распределяете еду ценностью %d ккал между вашими компаньонами." - -#: src/mission_companion.cpp -msgid "Harvestable: " -msgstr "Собираемо:" - -#: src/mission_companion.cpp -msgid "Ready for Planting: " -msgstr "Готово к Посадке:" - -#: src/mission_companion.cpp -msgid "Needs Plowing: " -msgstr "Нужда в пашке:" - -#: src/mission_companion.cpp -#, c-format -msgid "Name: %25s\n" -msgstr "Имя: %25s\n" - -#: src/mission_companion.cpp -msgid "---- Engines ----\n" -msgstr "---- Двигатели ----\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Engine: %25s\n" -msgstr "Двигатель: %25s\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Status: %24d%%\n" -msgstr ">Статус: %24d%%\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Fuel: %25s\n" -msgstr ">Топливо: %25s\n" - -#: src/mission_companion.cpp -msgid "---- Fuel Storage & Battery ----\n" -msgstr "---- Топливо, вместимость и заряд ----\n" - -#: src/mission_companion.cpp -msgid "Estimated Chop Time: 5 Days\n" -msgstr "Время до окончания разборки: 5 дней\n" - #: src/mission_companion.cpp #, c-format msgid "While %s was framing a building one of the walls began to collapse..." @@ -158279,8 +161302,8 @@ msgid "" "We... we don't know what exactly happened but we found %s's gear ripped and " "bloody..." msgstr "" -"Мы... мы не знаем что точно произошло, но мы нашли вещи %s разорванные и " -"окровавленные..." +"Мы... мы не знаем что точно произошло, но мы нашли окровавленные и " +"разорванные вещи %s..." #: src/mission_companion.cpp msgid "I fear your companion won't be returning." @@ -158354,406 +161377,6 @@ msgstr "Кто должен вернуться?" msgid "No one returns to your party..." msgstr "Никто не возвращается в вашу команду..." -#: src/mission_companion.cpp -msgid "MAIN" -msgstr "ЦЕНТР" - -#: src/mission_companion.cpp -msgid " [N] " -msgstr "[С]" - -#: src/mission_companion.cpp -msgid " [NE] " -msgstr "[СВ]" - -#: src/mission_companion.cpp -msgid " [E] " -msgstr "[В]" - -#: src/mission_companion.cpp -msgid " [SE] " -msgstr "[ЮВ]" - -#: src/mission_companion.cpp -msgid " [S] " -msgstr "[Ю]" - -#: src/mission_companion.cpp -msgid " [SW] " -msgstr "[ЮЗ]" - -#: src/mission_companion.cpp -msgid " [W] " -msgstr "[З]" - -#: src/mission_companion.cpp -msgid " [NW] " -msgstr "[СЗ]" - -#: src/mission_companion.cpp -msgid "Farm Expansion" -msgstr "Расширение: ферма" - -#: src/mission_companion.cpp -msgid "Garage Expansion" -msgstr "Расширение: гараж" - -#: src/mission_companion.cpp -msgid "Kitchen Expansion" -msgstr "Расширение: кухня" - -#: src/mission_companion.cpp -msgid "Blacksmith Expansion" -msgstr "Расширение: кузница" - -#: src/mission_companion.cpp -msgid "Empty Expansion" -msgstr "Расширение: пусто" - -#: src/mission_companion.cpp -#, c-format -msgid "Select a location between %d and %d tiles away." -msgstr "Выберите локацию в пределах между %d и %d тайлами." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"You must select a target between %d and %d range from the base. Range: %d" -msgstr "" -"Вы должны выбрать цель в промежутке между %d и %d тайлами от базы. " -"Расстояние: %d" - -#: src/mission_companion.cpp -msgid "You must be able to see the target that you select." -msgstr "Вы должны видеть цель, которую выбираете." - -#: src/mission_companion.cpp -msgid "Do you want to bounce off this location to extend range?" -msgstr "Вы хотите отказаться от этого места, чтобы расширить диапазон?" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15.2f (km)\n" -msgstr ">Расстояние: %15.2f (км)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">One Way: %15d (trips)\n" -msgstr ">В одну сторону: %15d (походов)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15.2f (km)\n" -msgstr ">Преодолено: %15.2f (км)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15d (m)\n" -msgstr ">Расстояние :%15d (м)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15d (m)\n" -msgstr ">Преодолено: %15d (м)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Travel: %15d (hours)\n" -msgstr ">Дорога: %15d (часов)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Working: %15d (hours)\n" -msgstr ">Работа: %15d (часов)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (days)\n" -msgstr "Всего: %15d (дней)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (hours)\n" -msgstr "Всего: %15d (часов)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (minutes)\n" -msgstr "Всего: %15d (минут)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Food: %15d (kcal)\n" -" \n" -msgstr "" -"Еда: %15d (ккал)\n" -" \n" - -#: src/mission_companion.cpp -msgid "food for you" -msgstr "еда для вас" - -#: src/mission_companion.cpp -msgid "food for companions" -msgstr "еда для союзников" - -#: src/mission_companion.cpp -msgid "weapons" -msgstr "оружие" - -#: src/mission_companion.cpp -msgid "clothing" -msgstr "одежда" - -#: src/mission_companion.cpp -msgid "bionics" -msgstr "бионика" - -#: src/mission_companion.cpp -msgid "all kinds of tools" -msgstr "все виды инструментов" - -#: src/mission_companion.cpp -msgid "wood of various sorts" -msgstr "древесина разных сортов" - -#: src/mission_companion.cpp -msgid "trash and rotting food" -msgstr "мусор и гниющая еда" - -#: src/mission_companion.cpp -msgid "books" -msgstr "книги" - -#: src/mission_companion.cpp -msgid "medication" -msgstr "медикаменты" - -#: src/mission_companion.cpp -msgid "ammo" -msgstr "боеприпасы" - -#: src/mission_companion.cpp -#, c-format -msgid "Reset point: %s?" -msgstr "Сбросить очки: %s?" - -#: src/mission_companion.cpp -msgid "" -" Items New Point Old Point\n" -" \n" -msgstr "" -" Предметы Новая точка Старая точка\n" -" \n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -" Save Points?" -msgstr "" -"\n" -" \n" -" Сохранить очки?" - -#: src/mission_companion.cpp -msgid "Revert to default points?" -msgstr "Вернуть всё к очкам по умолчанию?" - -#: src/mission_companion.cpp -msgid "You don't have the materials to craft that" -msgstr "Не хватает материалов для изготовления этого" - -#: src/mission_companion.cpp -#, c-format -msgid "Batch crafting %s [MAX: %d]: " -msgstr "Серийная сборка %s [максимум: %d]: " - -#: src/mission_companion.cpp -msgid "Your batch is too large!" -msgstr "Серия слишком большая!" - -#: src/mission_companion.cpp -msgid "You already have someone working in that expansion." -msgstr "Вы уже назначили человека на работу в этом расширении." - -#: src/mission_companion.cpp -msgid "begins to work..." -msgstr "начинает работать..." - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" -" \n" -"Skill used: speech\n" -"Difficulty: 2 \n" -"Base Score: +%3d%%\n" -"> Expansion Bonus: +%3d%%\n" -"> Faction Bonus: +%3d%%\n" -"> Special Bonus: +%3d%%\n" -" \n" -"Total: Skill +%3d%%\n" -" \n" -"Risk: High\n" -"Time: 4 Days\n" -"Positions: %d/1\n" -msgstr "" -"Примечание:\n" -"Привлечение дополнительных союзников опасное и дорогое занятие. Исход очень сильно зависит от навыка вашего союзника, которого вы посылаете для призыва их на вашу базу.\n" -"\n" -"Используемый навык: общение\n" -"Сложность: 2\n" -"Базовое значение: +%3d%%\n" -"> Бонус расширения: +%3d%%\n" -"> Бонус фракции: +%3d%%\n" -"> Особый бонус: +%3d%%\n" -"\n" -"Всего: Навык +%3d%%\n" -" \n" -"Риск: Высокий\n" -"Время: 4 Дня\n" -"Расположение: %d/1\n" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from searching for recruits with a bit more experience..." -msgstr "" -"%s возвращается после поисков новобранцев, зарабатывая при это немного " -"опыта..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s encountered %s..." -msgstr "%s встречает %s..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't find anyone to recruit..." -msgstr "%s не нашёл никого, кто захотел бы присоединиться..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s convinced %s to hear a recruitment offer from you..." -msgstr "%s убедил %s послушать ваше предложение о найме..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested in anything %s had to offer..." -msgstr "%s не заинтересовало ничто из того, что смог предложить %s..." - -#: src/mission_companion.cpp -msgid "" -"NPC Overview:\n" -" \n" -msgstr "" -"Характеристики персонажа:\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Name: %20s\n" -" \n" -msgstr "" -"Имя: %20s\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "Strength: %10d\n" -msgstr "Сила: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Dexterity: %10d\n" -msgstr "Ловкость: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Intelligence: %10d\n" -msgstr "Интеллект: %10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Perception: %10d\n" -" \n" -msgstr "" -"Восприятие: %10d\n" -" \n" - -#: src/mission_companion.cpp -msgid "Top 3 Skills:\n" -msgstr "3 самых развитых навыка:\n" - -#: src/mission_companion.cpp -msgid "Asking for:\n" -msgstr "Требуется:\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"> Food: %10d days\n" -" \n" -msgstr "" -"> Еда: %10d дней\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Faction Food:%9d days\n" -" \n" -msgstr "" -"Еда фракции: %9d дней\n" -" \n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Recruit Chance: %10d%%\n" -" \n" -msgstr "" -"Шанс вербовки: %10d%%\n" -" \n" - -#: src/mission_companion.cpp -msgid "Select an option:" -msgstr "Выберите опцию:" - -#: src/mission_companion.cpp -msgid "Increase Food" -msgstr "Увеличить пайки" - -#: src/mission_companion.cpp -msgid "Decrease Food" -msgstr "Уменьшить пайки" - -#: src/mission_companion.cpp -msgid "Make Offer" -msgstr "Сделать предложение" - -#: src/mission_companion.cpp -msgid "Not Interested" -msgstr "Не интересует" - -#: src/mission_companion.cpp -msgid "You decide you aren't interested..." -msgstr "Вы решаете, что не заинтересованы..." - -#: src/mission_companion.cpp -#, c-format -msgid "%s has been convinced to join!" -msgstr "%s соглашается присоединиться!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested..." -msgstr "%s отказывается..." - #: src/mission_companion.h msgid "Do you wish to give your companion additional items?" msgstr "Хотите дать своему компаньону дополнительные предметы?" @@ -159274,7 +161897,7 @@ msgstr "Споры вылетают из %s!" #: src/monattack.cpp msgid "\"Buy SpOreos(tm) now!\"" -msgstr "" +msgstr "\"Купите СпОрео(tm) сейчас!\"" #: src/monattack.cpp #, c-format @@ -160376,7 +162999,7 @@ msgstr "Жуткий скелет поднимается из земли!" #: src/monattack.cpp msgid "DOOT." -msgstr "" +msgstr "ДУУДЬ." #: src/mondeath.cpp #, c-format @@ -160901,7 +163524,7 @@ msgstr "Вы отравлены!" #: src/monster.cpp msgid "You feel venom flood your body, wracking you with pain..." -msgstr "Вы чувствуете как яд течёт по вашему телу, наполняя вас болью..." +msgstr "Вы чувствуете, как яд течёт по вашему телу, наполняя вас болью..." #: src/monster.cpp msgid "You feel venom enter your body!" @@ -161326,12 +163949,12 @@ msgstr "Картины из вашей прошлой жизни пронося #: src/mutation_data.cpp msgctxt "memorial_male" msgid "Crossed a threshold" -msgstr "Пересечение порога" +msgstr "Пересёк порог" #: src/mutation_data.cpp msgctxt "memorial_female" msgid "Crossed a threshold" -msgstr "Пересечение порога" +msgstr "Пересекла порог" #: src/mutation_data.cpp msgid "Oh, yeah! That's the stuff!" @@ -161477,9 +164100,10 @@ msgstr "Очков осталось: %4d" msgid "Freeform" msgstr "Свободный режим" -#: src/newcharacter.cpp -msgid "Pick your style:" -msgstr "Выберите ваш стиль:" +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" +msgstr "Выберите стиль (нажмите %s для получения дополнительной информации)" #: src/newcharacter.cpp msgid "Use this style?" @@ -162746,50 +165370,6 @@ msgstr "Если вам интересно, мне бы пригодилась msgid " If you are interested, I have another job for you." msgstr " Если тебе интересно, то у меня есть для тебя другая работа." -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "Приятно иметь с тобой дело!" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "Что ж, похоже только ты да я." - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "По крайней мере у нас есть убежище." - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "Я не знаю. Искать припасы и других выживших, полагаю." - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "Возможно, нам стоит начать баррикадировать это место." - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to" -" disappear quickly from here." -msgstr "" -"Я думаю, что хорошо бы добыть машину в исправном состоянии и с топливом, " -"если придётся быстро отсюда исчезнуть." - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "" -"Мы могли бы наведаться на одну из этих ферм недалеко отсюда. У них " -"достаточно еды, и они так близко к городу." - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "" -"Мы возможно должны держаться подальше от этих городов, даже не смотря на то," -" что там много полезных вещей." - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." msgstr "Ты уже спрашивал о снаряжении; спроси попозже." @@ -162798,10 +165378,6 @@ msgstr "Ты уже спрашивал о снаряжении; спроси п msgid "Why should I share my equipment with you?" msgstr "С какой стати я буду делиться с тобой своим имуществом?" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "Ладно, держи." - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr ", и если будешь переспрашивать, !" @@ -162822,46 +165398,6 @@ msgstr "Извини, но, судя по всему, мне нечему обу msgid "Here's what I can teach you..." msgstr "Вот чему я могу научить тебя…" -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "Хорошо, приступим." - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "Не раньше, чем я получу антибиотики…" - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "Ты об этом уже спрашивал; спроси снова попозже." - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "И почему я должен пойти с тобой?" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "Точно, я с тобой!" - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "Да?.. Я так не думаю." - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "В чём дело?" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "Ты действительно уходишь?" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "Хорошо. Веди нас." - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "Нет. Я здесь лидер." - #: src/npctalk.cpp #, c-format msgid "%d.%d miles." @@ -162876,22 +165412,6 @@ msgstr[1] "%d фута." msgstr[2] "%d футов." msgstr[3] "%d фут." -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "Я на страже." - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "Ни единого шанса, я сматываю удочки!" - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "Я бы предпочёл, держать это при себе." - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "Я действительно не чувствую себя комфортно делая так ..." - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "*не атакует врагов." @@ -163197,30 +165717,6 @@ msgstr "Думаю, мы ещё встретимся..." msgid "Delivering bandages." msgstr "Доставить бинты." -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "Что нам теперь делать?" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "Есть какие-нибудь советы?" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "Хочешь пойти со мной?" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "Давай обменяемся предметами." - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "Я не могу покинуть убежище без экипировки…" - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "Хмм, ладно." - #: src/npctalk.cpp msgid "Okay, fine." msgstr "Ладно, хорошо." @@ -163253,30 +165749,6 @@ msgstr "Эх, неважно." msgid "Never mind, I'll do without. Bye." msgstr "Не бери в голову. И так справлюсь. Пока." -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "Спасибо!" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "Спасибо! А могу ли я получить ещё?" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "Спасибо, позже увидимся!" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "Ладно, ладно, извини." - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "Я не шучу, дай мне что-нибудь!" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "Ладно, хорошо, пока." - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "Да, давай продолжим тренировку " @@ -163298,94 +165770,6 @@ msgstr "%s: %d -> %d" msgid "%s: %d -> %d (cost $%d)" msgstr "%s: %d -> %d (цена $%d)" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "Хорошо." - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "Если ещё раз подумать, то неважно." - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "Ладно. Веди меня." - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "Нет, мы здесь будем в порядке." - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "Понятно. Я достану антибиотики." - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "Да, точно. Я спрошу позже." - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "Со мной ты будешь в безопасности." - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "С тобой я буду в безопасности." - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "Мы же друзья, разве нет?" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "Я убью тебя если ты не сделаешь этого." - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "Шикарно!" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "Ладно, пошли!" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "Далеко ещё?" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "Всё, дальше я сам. Я ухожу." - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "Я бы хотел стать лидером на какое-то время." - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "В сторону. Теперь я лидер." - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "Пошли." - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "Не, я просто пошутил." - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "Да, я уверен. Пока." - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "Хорошо. Что-нибудь ещё…" - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "Да, пошли." - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "Ладно, ладно." - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "Ладно, спасибо." @@ -163394,10 +165778,6 @@ msgstr "Ладно, спасибо." msgid "Let's keep moving." msgstr "Двигаемся дальше." -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "Нужно, чтобы ты пошёл со мной." - #: src/npctalk.cpp msgid "Combat commands..." msgstr "Боевые команды…" @@ -163455,16 +165835,12 @@ msgid "Miscellaneous rules..." msgstr "Прочие правила..." #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "" - -#: src/npctalk.cpp -msgid "I'll give you some space." -msgstr "Я дам вам некоторое пространство." +msgid "I'm going to go my own way for a while." +msgstr "Всё, дальше я сам. Я ухожу." #: src/npctalk.cpp -msgid "I understand..." -msgstr "Я понимаю..." +msgid "Let's talk about faction camps." +msgstr "Давай поговорим о лагерях." #: src/npctalk.cpp msgid "Change your engagement rules..." @@ -163660,7 +166036,7 @@ msgstr "" #: src/npctalk.cpp msgid "Warning, you need at least two allies to work a faction camp!\n" -msgstr "" +msgstr "Внимание, вам нужны как минимум два союзника для работы в лагере!\n" #: src/npctalk.cpp #, c-format @@ -163677,7 +166053,7 @@ msgstr "Вы не смогли обследовать место для лаге #: src/npctalk.cpp msgid "There is no faction camp here to recover!" -msgstr "" +msgstr "Здесь нет лагеря, чтобы его занять!" #: src/npctalk.cpp #, c-format @@ -164178,13 +166554,15 @@ msgstr "" #: src/options.cpp msgid "Additional auto features" -msgstr "" +msgstr "Дополнительные авто-функции" #: src/options.cpp msgid "" "If true, enables configured auto features below. Disabled as long as any " "enemy monster is seen." msgstr "" +"Если включено, активирует перечисленные ниже авто-функции. Выключается в " +"присутствии любого врага." #: src/options.cpp msgid "Auto pulp or butcher" @@ -164201,6 +166579,11 @@ msgstr "" "находящиеся рядом трупы. Разделывать: разделывать трупы, на которых вы " "стоите." +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "Отключено" + #: src/options.cpp msgid "Pulp" msgstr "Разбивать" @@ -164211,7 +166594,7 @@ msgstr "Разбивать рядом" #: src/options.cpp msgid "Auto mining" -msgstr "" +msgstr "Авто-копание" #: src/options.cpp msgid "" @@ -164223,25 +166606,28 @@ msgstr "" #: src/options.cpp msgid "Auto foraging" -msgstr "" +msgstr "Авто-собирательство" #: src/options.cpp msgid "" "Action to perform when 'Auto foraging' is enabled. Bushes: Only forage " "bushes. - Trees: Only forage trees. - Both: Forage bushes and trees." msgstr "" +"Действие при включённом 'Авто-собирательстве'. Кусты: Обыскивать только " +"кусты. - Деревья: Обыскивать только деревья. - Оба: Обыскивать кусты и " +"деревья." #: src/options.cpp msgid "Both" -msgstr "" +msgstr "Оба" #: src/options.cpp msgid "Bushes" -msgstr "" +msgstr "Кусты" #: src/options.cpp msgid "Trees" -msgstr "" +msgstr "Деревья" #: src/options.cpp msgid "Dangerous pickups" @@ -164418,10 +166804,6 @@ msgstr "" msgid "Always" msgstr "Всегда" -#: src/options.cpp -msgid "Ask" -msgstr "Спросить" - #: src/options.cpp msgid "Never" msgstr "Никогда" @@ -164476,7 +166858,7 @@ msgstr "Шкала температуры" #: src/options.cpp msgid "Switch between Celsius, Fahrenheit and Kelvin." -msgstr "" +msgstr "Переключение между системами Цельсия, Фаренгейта и Кельвина." #: src/options.cpp msgid "Celsius" @@ -164488,7 +166870,7 @@ msgstr "Фаренгейт" #: src/options.cpp msgid "Kelvin" -msgstr "" +msgstr "Кельвин" #: src/options.cpp msgid "Speed units" @@ -164496,11 +166878,11 @@ msgstr "Единица измерения скорости" #: src/options.cpp msgid "Switch between mph, km/h and tiles/turn." -msgstr "" +msgstr "Переключение между миль/ч, км/ч и тайлов/ход." #: src/options.cpp msgid "tiles/turn" -msgstr "" +msgstr "тайлы/ход" #: src/options.cpp msgid "Mass units" @@ -164902,7 +167284,7 @@ msgstr "Анимация дождя" #: src/options.cpp msgid "If true, will display weather animations." -msgstr "Если «да», то отображается анимация погоды." +msgstr "Если «да», отображается анимация погоды." #: src/options.cpp msgid "SCT animation" @@ -165415,6 +167797,9 @@ msgid "" "seasons scales with this value, so adjusting it may cause nonsensical " "results." msgstr "" +"Длительность сезона в днях. Внимание: Кроме длительности сезона, почти " +"ничего не изменяется, так что изменение этого параметра может привести к " +"странным результатам." #: src/options.cpp msgid "Construction scaling" @@ -166031,7 +168416,7 @@ msgstr "Дальше по нажатию любой клавиши…" #, c-format msgctxt "query_yn" msgid "%s (Case Sensitive)" -msgstr "" +msgstr "%s (Чувствительно к регистру)" #: src/output.cpp #, c-format @@ -166073,12 +168458,12 @@ msgstr "Пример: -pipe,-chunk,-steel" #: src/output.cpp msgid "Search [c]ategory, [m]aterial, or [q]uality:" -msgstr "Поиск по [c]категории, [m]материалу, or [q]качеству:" +msgstr "Поиск по [c]категории, [m]материалу, или [q]качеству:" #. ~ An example of how to filter items based on category or material. #: src/output.cpp msgid "Example: c:food,m:iron,q:hammering" -msgstr "" +msgstr "Например: c:food,m:iron,q:hammering" #: src/output.cpp msgid "unknown" @@ -166114,7 +168499,7 @@ msgstr " и " #: src/output.h msgid ", or " -msgstr "" +msgstr ", или " #: src/output.h #, c-format @@ -166220,15 +168605,15 @@ msgstr "Коды цвета: " #: src/overmap_ui.cpp msgid "Type GLYPH:TEXT to set a custom glyph." -msgstr "Напишите СИМВОЛ:ТЕКСТ чтобы установить пользовательский символ." +msgstr "Напишите СИМВОЛ:ТЕКСТ, чтобы установить пользовательский символ." #: src/overmap_ui.cpp msgid "Type COLOR;TEXT to set a custom color." -msgstr "Напишите ЦВЕТ;ТЕКСТ чтобы установить пользовательский цвет." +msgstr "Напишите ЦВЕТ;ТЕКСТ, чтобы установить пользовательский цвет." #: src/overmap_ui.cpp msgid "Examples: B:Base | g;Loot | !:R;Minefield" -msgstr "Примеры: B:База | g;Предметы | !:R;Минное поле" +msgstr "Примеры: B;База | g;Предметы | !:R;Минное поле" #: src/overmap_ui.cpp msgid "Note:" @@ -166896,11 +169281,7 @@ msgstr "Энергия: %d/%d" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "Оружие:" -msgstr[1] "Оружие:" -msgstr[2] "Оружие:" -msgstr[3] "Оружие:" +msgstr "Оружие:" #: src/player.cpp msgid "Equipment:" @@ -168376,26 +170757,6 @@ msgstr "Достать %s из %s?" msgid "Stop wielding %s?" msgstr "Прекратить держать в руках %s?" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "Техники:" -msgstr[1] "Техники:" -msgstr[2] "Техники:" -msgstr[3] "Техника:" - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "" -"Этот стиль заставит вашего персонажа использовать атаки без оружия, даже " -"если тот будет держать оружие в руках." - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "Выберите стиль (нажмите %s для получения дополнительной информации)" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "Держать руки свободными (выкл)" @@ -168452,6 +170813,11 @@ msgstr "Сломать" msgid "Mend" msgstr "Починить" +#: src/player.cpp +#, c-format +msgid "The %s doesn't have any faults to toggle." +msgstr "У %s нет дефектов для переключения." + #: src/player.cpp #, c-format msgid "The %s doesn't have any faults to mend." @@ -168983,7 +171349,7 @@ msgstr "Трудно заснуть на %s." #: src/player.cpp msgid "You start trying to fall asleep." -msgstr "Вы начали пытаться провалиться в сон." +msgstr "Вы пытаетесь заснуть." #: src/player.cpp msgid "You nestle your pile of clothes for warmth." @@ -169037,7 +171403,7 @@ msgstr "Одетый на вас %s полностью уничтожен." #: src/player.cpp #, c-format msgid "Your %s is completely destroyed!" -msgstr "Ваш %s полностью уничтожено!" +msgstr "Ваше снаряжение (%s) полностью уничтожено!" #: src/player.cpp #, c-format @@ -169253,10 +171619,6 @@ msgstr "Интеллект" msgid "Perception" msgstr "Восприятие" -#: src/player_display.cpp -msgid "Speed" -msgstr "Скорость" - #: src/player_display.cpp msgid "Severely Malnourished" msgstr "Серьёзное недоедание" @@ -170036,15 +172398,15 @@ msgstr "Кажется, вы проснулись ещё до будильник #: src/player_hardcoded_effects.cpp msgid "Your internal chronometer went off and you haven't slept a wink." -msgstr "Ваш внутренний хронометр отключается, а вы так и не сомкнули глаз." +msgstr "Ваш встроенный хронометр отключается, а вы так и не сомкнули глаз." #: src/player_hardcoded_effects.cpp msgid "Your internal chronometer finally wakes you up." -msgstr "Ваш внутренний хронометр, в конце концов, будит вас." +msgstr "Ваш встроенный хронометр, в конце концов, будит вас." #: src/player_hardcoded_effects.cpp msgid "Your internal chronometer wakes you up." -msgstr "Ваш внутренний хронометр будит вас." +msgstr "Ваш встроенный хронометр будит вас." #: src/ranged.cpp #, c-format @@ -170367,6 +172729,10 @@ msgstr "Бу-бум!" msgid "kerblam!" msgstr "«Ты-Дыщ!»" +#: src/recipe.cpp +msgid "none" +msgstr "нет" + #: src/requirements.cpp #, c-format msgid "%d tool with %s of %d or more." @@ -170674,7 +173040,7 @@ msgstr "Разбухший" #: src/sidebar.cpp msgid "Hydrated" -msgstr "Промокший" +msgstr "Напившийся" #: src/sidebar.cpp msgid "Slaked" @@ -171719,6 +174085,22 @@ msgstr "'{' для прокрутки вверх" msgid "'}' to scroll down" msgstr "'}' для прокрутки вниз" +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "" +"Удаление сломанного %1$s может дать несколько частей.\n" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" +msgstr "" +"Удаление %1$s даст частей:\n" +"> %2$s\n" + #: src/veh_interact.cpp #, c-format msgid "> %2$s" @@ -172582,13 +174964,13 @@ msgstr "Недостаточно энергии, чтобы включить %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" -msgstr "Выключить %s" +msgid "Turn on %s" +msgstr "Включить %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" -msgstr "Включить %s" +msgid "Turn off %s" +msgstr "Выключить %s" #: src/vehicle_use.cpp #, c-format @@ -172684,10 +175066,6 @@ msgstr "Система камер включена" msgid "Camera system won't turn on" msgstr "Система камер не включается" -#: src/vehicle_use.cpp -msgid "Quit controlling electronics" -msgstr "Выйти из меню управления электроникой" - #: src/vehicle_use.cpp msgid "Electronics controls" msgstr "Управление электроникой" @@ -173176,11 +175554,11 @@ msgstr "дождь" #: src/weather_data.cpp msgid "Thunder Storm" -msgstr "громовой ливень" +msgstr "ливень с громом" #: src/weather_data.cpp msgid "Lightning Storm" -msgstr "грозовой ливень" +msgstr "ливень с грозой" #: src/weather_data.cpp msgid "Acidic Drizzle" diff --git a/lang/po/zh_CN.po b/lang/po/zh_CN.po index e575c0787b889..b1e36825f97d5 100644 --- a/lang/po/zh_CN.po +++ b/lang/po/zh_CN.po @@ -14,22 +14,22 @@ # Howlaind , 2018 # Mizu Izumi, 2018 # 高 励贤 <475964436@qq.com>, 2018 -# 何方神圣 何 <1366003560@qq.com>, 2018 # 曾泰瑋 , 2018 # iopop, 2018 # Brett Dong , 2018 -# L rient <1972308206@qq.com>, 2018 # Amans Tofu , 2018 # fei li , 2018 +# 何方神圣 何 <1366003560@qq.com>, 2018 # EhNuhc Nehc , 2018 # Jianxiang Wang , 2018 +# L rient <1972308206@qq.com>, 2018 # cainiao , 2018 # msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-26 22:02+0800\n" +"POT-Creation-Date: 2018-11-16 22:24+0800\n" "PO-Revision-Date: 2018-04-26 14:47+0000\n" "Last-Translator: cainiao , 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/cataclysm-dda-translators/teams/2217/zh_CN/)\n" @@ -446,7 +446,7 @@ msgstr "" #: lang/json/AMMO_from_json.py msgid "medical tape" -msgstr "医学胶带" +msgstr "医用胶带" #. ~ Description for medical tape #: lang/json/AMMO_from_json.py @@ -534,7 +534,7 @@ msgstr "" #: lang/json/AMMO_from_json.py msgid "RA10K stimulant module" -msgstr "RA10K刺激模块" +msgstr "RA10K 兴奋剂" #. ~ Description for RA10K stimulant module #: lang/json/AMMO_from_json.py @@ -683,7 +683,7 @@ msgid "" "chemical thrower. Best be used with some kind of mask or mouth protection." msgstr "" "一些抗真菌剂加硫磺制成的强化式抗真菌喷雾,须填充于药剂喷罐喷洒。\n" -"\"最好戴上面罩或口部防护使用。\"" +"\"最好戴上面罩或嘴部防护使用。\"" #: lang/json/AMMO_from_json.py msgid "sprayable toxic gas" @@ -696,7 +696,7 @@ msgid "" "chemical thrower. Best be used with some kind of mask or mouth protection." msgstr "" "一些由家用清洁剂制成的致命喷雾,须填充于药剂喷罐喷洒。\n" -"\"最好戴上面罩或口部防护使用。\"" +"\"最好戴上面罩或嘴部防护使用。\"" #: lang/json/AMMO_from_json.py msgid "chain link" @@ -4358,6 +4358,7 @@ msgstr "" "\"可爱变形怪专用热销饲料。\"" #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "石头" @@ -5301,12 +5302,44 @@ msgid "bondage mask" msgid_plural "bondage masks" msgstr[0] "紧缚面罩" +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "拉上拉链" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "你将面罩眼部和嘴部的拉链拉上。" + #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" "A tight mask made of black leather. The eyes and mouth can be closed using " "zippers." -msgstr "一个黑色皮革做的紧身面具,眼部和口部有拉链。" +msgstr "一个黑色皮革做的紧身面具,眼部和嘴部有拉链。" + +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "紧缚面罩(已拉链)" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "拉开拉链" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "你将面罩眼部和嘴部的拉链拉开。" + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "一个黑色皮革做的紧身面具,眼部和嘴部的拉链已经被拉上。" #: lang/json/ARMOR_from_json.py msgid "bondage suit" @@ -5786,7 +5819,7 @@ msgstr[0] "人造毛皮大衣" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." msgstr "一件华丽的人造毛皮大衣,有两个小口袋。虽然不像天然毛皮那么温暖,但它给你带来一些独特的风情。" @@ -6133,6 +6166,18 @@ msgstr[0] "毛皮防尘风衣" msgid "A thick fur full-length duster. Has many pockets for storage." msgstr "一件结实的全身长厚毛皮制防尘风衣,提供比较可观的储存空间。" +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "人造毛皮防尘风衣" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." +msgstr "一件结实的全身长厚人造毛皮制防尘风衣,提供比较可观的储存空间。" + #: lang/json/ARMOR_from_json.py msgid "leather duster" msgid_plural "leather dusters" @@ -6390,7 +6435,7 @@ msgid "" "Heavy, hand-built combination armor made from a cut-down bulletproof vest " "and a reinforced flame-resistant Nomex jumpsuit. Protects the wearer from " "fire and the elements." -msgstr "一件自制的重型复合防护服,由防弹背心和聚酰胺纤维强化防火服组合而成,可以提供火焰、环境和伤害防护。" +msgstr "一件自制的重型复合防护服,由防弹背心和强化芳纶纤维防火服组合而成,可以提供火焰、环境和伤害防护。" #: lang/json/ARMOR_from_json.py msgid "fur blanket" @@ -6683,7 +6728,7 @@ msgstr[0] "幸存者防火手套" msgid "" "A pair of customized, Kevlar armored Nomex gloves, modified to be easy to " "wear while providing maximum protection under extreme conditions." -msgstr "一双自制的的凯夫拉-聚酰胺纤维复合手套,更易于穿戴,即使在极端情况下也能提供最大防护。" +msgstr "一双自制的的凯夫拉-芳纶纤维防火手套,更易于穿戴,即使在极端情况下也能提供最大防护。" #: lang/json/ARMOR_from_json.py msgid "pair of fur gloves" @@ -6959,7 +7004,7 @@ msgstr[0] "游泳护目镜" #. ~ Description for pair of swim goggles #: lang/json/ARMOR_from_json.py msgid "A small pair of goggles made for swimming." -msgstr "一副符合光学和医学标准,水下视物清晰、视野宽阔的游泳镜。" +msgstr "一副符合光学和医用标准,水下视物清晰、视野宽阔的游泳镜。" #: lang/json/ARMOR_from_json.py msgid "pair of welding goggles" @@ -7132,6 +7177,18 @@ msgstr[0] "毛皮帽" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "一顶由动物毛皮制成的相当保暖的帽子。" +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "人造毛皮帽" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "一顶用人造毛皮制成的时髦帽子。像真正的皮毛,如果真如标签所说的话,制造过程不会杀害野生动物。十分保暖。" + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -7431,18 +7488,6 @@ msgstr "" "一顶平顶的、全覆式、只留很小的眼睛与嘴部开口的封闭的头盔,欧洲军队的骑士们在公元1220年到1540年之间广泛的配备这种头盔,有效的防护利器与钝器造成的伤害。\n" "\"头盔两边没有翅膀,虽然不够拉风但是不用担心挂在树枝上了。\"" -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "防暴头盔" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "" -"一顶保护警务人员在执行公务时抵御头部及面部受到打击伤害或其它潜在的伤害的一种警用装具,头盔采用合金材质并附有塑料护罩,提供整个头部的优良防护。\n" -"\"来自法国GIGN宪兵特勤队的Twitch、Montagne、DOC、Rook等干员竭诚为您推荐。\"" - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" @@ -7520,7 +7565,7 @@ msgstr[0] "幸存者防火兜帽" #. ~ Description for survivor firehood #: lang/json/ARMOR_from_json.py msgid "A customized armored Nomex and Kevlar hood, very strong and durable." -msgstr "一件自制的凯夫拉-聚酰胺纤维复合兜帽,非常结实耐用。" +msgstr "一件自制的凯夫拉-芳纶纤维防火兜帽,非常结实耐用。" #: lang/json/ARMOR_from_json.py msgid "survivor wetsuit hood" @@ -8737,7 +8782,7 @@ msgid "" "A snug fitting pair of gloves made from thin and lightweight Nomex fire-" "resistant fabric. Tough yet breathable, they are light and comfortable to " "wear under clothing." -msgstr "一双聚酰胺纤维防火手套。贴身、结实却透气。这双手套重量很轻并且也适于当作内衬手套。" +msgstr "一双芳纶纤维防火手套。贴身、结实却透气。这双手套重量很轻并且也适于当作内衬手套。" #: lang/json/ARMOR_from_json.py msgid "flame-resistant hood" @@ -8750,7 +8795,7 @@ msgid "" "A snug fitting garment that protects your head and neck, made from " "lightweight Nomex fire-resistant fabric. Tough yet breathable, it is light " "and comfortable to wear under clothing." -msgstr "一件聚酰胺纤维防火外衣,能够保护你的头部和颈部。贴身、结实却透气。这件衣服重量很轻并且也适于穿在其他外衣下面。" +msgstr "一件芳纶纤维防火兜帽,能够保护你的头部和颈部。贴身、结实却透气。这件衣服重量很轻并且也适于穿在其他外衣下面。" #: lang/json/ARMOR_from_json.py msgid "pair of flame-resistant socks" @@ -8763,7 +8808,7 @@ msgid "" "A snug fitting pair of stockings made from thin and lightweight Nomex fire-" "resistant fabric. Tough yet breathable, they are light and comfortable to " "wear under clothing." -msgstr "一对聚酰胺纤维防火袜子。贴身、结实却透气。这双袜子重量很轻并且也适于当作内衬袜子。" +msgstr "一对芳纶纤维防火袜子。贴身、结实却透气。这双袜子重量很轻并且也适于当作内衬袜子。" #: lang/json/ARMOR_from_json.py msgid "flame-resistant suit" @@ -8775,7 +8820,7 @@ msgstr[0] "防火服" msgid "" "A snug body suit made from thin and lightweight Nomex fire-resistant fabric." " Tough yet breathable, it is light and comfortable to wear under clothing." -msgstr "一套聚酰胺纤维防火服。贴身、结实却透气。这套衣服量很轻并且也适于穿在其他衣服下面。" +msgstr "一套芳纶纤维防火服。贴身、结实却透气。这套衣服量很轻并且也适于穿在其他衣服下面。" #: lang/json/ARMOR_from_json.py msgid "obi" @@ -8875,6 +8920,16 @@ msgstr[0] "毛皮长裤" msgid "A hefty pair of fur-lined pants." msgstr "一条有着厚实毛皮内衬、相当保暖的裤子。" +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "人造毛皮长裤" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "一条棉质长裤,内衬着十分保暖的人造毛皮。" + #: lang/json/ARMOR_from_json.py msgid "leather pants" msgid_plural "leather pants" @@ -9463,21 +9518,77 @@ msgid "sleeping bag" msgid_plural "sleeping bags" msgstr[0] "睡袋" +#. ~ Use action menu_text for sleeping bag. +#. ~ Use action menu_text for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Roll up" +msgstr "卷起" + +#. ~ Use action msg for sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the sleeping bag, preparing it for transport." +msgstr "你把睡袋卷起来,便于携带。" + #. ~ Description for sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag that covers you head to toe." msgstr "一个覆盖全身的大睡袋。" +#: lang/json/ARMOR_from_json.py +msgid "rolled sleeping bag" +msgid_plural "rolled sleeping bags" +msgstr[0] "睡袋(卷起)" + +#. ~ Use action menu_text for rolled sleeping bag. +#. ~ Use action menu_text for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Unroll" +msgstr "铺开" + +#. ~ Use action msg for rolled sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll the sleeping bag." +msgstr "你把睡袋铺开。" + +#. ~ Description for rolled sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag rolled up for transport. It has a strap to carry it " +"with." +msgstr "一个大睡袋,已经被卷起来以便于携带。上面有条背带。" + #: lang/json/ARMOR_from_json.py msgid "fur sleeping bag" msgid_plural "fur sleeping bags" msgstr[0] "毛皮睡袋" +#. ~ Use action msg for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the fur sleeping bag, preparing it for transport." +msgstr "你把毛皮睡袋卷起来,便于携带。" + #. ~ Description for fur sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag lined with fur. Who needs a tent?" msgstr "一个覆盖全身、用动物毛皮做成的睡袋。" +#: lang/json/ARMOR_from_json.py +msgid "rolled fur sleeping bag" +msgid_plural "rolled fur sleeping bags" +msgstr[0] "毛皮睡袋(卷起)" + +#. ~ Use action msg for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll up the fur sleeping bag." +msgstr "你把毛皮睡袋铺开。" + +#. ~ Description for rolled fur sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag lined with fur, rolled for transport. It has a strap " +"to carry it with." +msgstr "一个带有毛皮内衬的大睡袋,已经被卷起来以便于携带。上面有条背带。" + #: lang/json/ARMOR_from_json.py msgid "sleeveless duster" msgid_plural "sleeveless dusters" @@ -9502,6 +9613,18 @@ msgid "" "unencumbered. Has plenty of storage space due to its many pockets." msgstr "一件厚实的毛皮制的防尘罩衫,让你的手臂有足够的伸展自由。它有很多口袋,提供了相当充足的储存空间。" +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "无袖人造毛皮防尘风衣" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "一件结实的全身长厚人造毛皮制无袖防尘风衣,提供比较可观的储存空间。" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" msgid_plural "sleeveless leather dusters" @@ -9550,6 +9673,18 @@ msgid "" " plenty of storage space due to its many pockets." msgstr "一件无袖的厚实毛皮风衣,让你的手臂不受束缚。它有很多口袋,提供了相当充足的储存空间。" +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "无袖人造毛皮风衣" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "一件无袖的厚实人造毛皮风衣,让你的手臂不受束缚。它有很多口袋,提供了相当充足的储存空间。" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -10180,6 +10315,18 @@ msgstr[0] "毛皮风衣" msgid "A thick fur trenchcoat, lined with pockets. Great for storage." msgstr "一件厚厚的毛皮风衣,缝着不少口袋,提供非常大的储存空间。" +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "人造毛皮风衣" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "一件厚厚的人造毛皮风衣,缝着不少口袋,提供非常大的储存空间。" + #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" msgid_plural "leather trenchcoats" @@ -10701,7 +10848,7 @@ msgstr[0] "锅盔加大版" msgid "" "A huge makeshift helmet made from a canning pot. For the truly desperate " "man-bear-pig." -msgstr "一个使用水浴锅制成的超大号自制头盔。为了那些真正走投无路的人型猪头熊(注:南方公园S10E6)" +msgstr "一个使用水浴锅制成的还凑合的超大号头盔。为了那些真正走投无路的人型猪头熊。(注:南方公园S10E6)" #: lang/json/ARMOR_from_json.py msgid "survivor utility belt" @@ -11057,7 +11204,7 @@ msgid "" "A pair of customized, Kevlar armored Nomex boots, modified to provide " "maximum protection from harm and the elements, even when knee-deep in the " "dead." -msgstr "一双自制的凯夫拉-聚酰胺纤维复合靴子,这一改进型能提供最大的环境和伤害防护,即使身陷死人堆之中。" +msgstr "一双自制的凯夫拉-芳纶防火靴,这一改进型能提供最大的环境和伤害防护,即使身陷死人堆之中。" #: lang/json/ARMOR_from_json.py msgid "pair of fur boots" @@ -12774,7 +12921,7 @@ msgid "" "Increases your body's wavelength, allowing you to quantum tunnel through " "walls, reappearing on the other side. Power drain in standby is minimal, " "but each tile tunneled through costs 250 bionic power." -msgstr "让你的身体波长进行改变,使得你可以量子邃穿墙壁,出现在另一边。待机时功耗是最小的,但每当通过一次墙壁消耗250点能量。" +msgstr "让你的身体波长进行改变,使得你可以量子隧穿墙壁,出现在另一边。待机时功耗非常小,但每穿透一格墙壁时消耗250点能量。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Air Filtration System CBM" @@ -13207,11 +13354,12 @@ msgid_plural "Ionic Overload Generator CBMs" msgstr[0] "离子过载发生器CBM" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" "一套强大的离子能量发生器被植入你的胸腔之中。能够发射出一个道威力巨大的,不断扩散并能穿透多个目标的高能冲击波。所产生的冲击波会点燃氧气,使的其经过的地方产生火焰,并在最终撞击目标时爆炸。近距离使用它是非常不明智的选择。" @@ -13252,22 +13400,6 @@ msgid "" msgstr "" "一套强大的离子能量发生器被植入使用者的胸腔之中。能够发射出一个道威力巨大的,不断扩散并能穿透多个目标的高能冲击波。所产生的冲击波会点燃氧气,使的其经过的地方产生火焰,并在最终撞击目标时爆炸。近距离使用它是非常不明智的选择。" -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "全自动外科手术刀CBM" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While" -" activated, they will continously drain power to make automated precise cuts" -" but you will be unable to wield anything." -msgstr "使用者的手指被植入了一套手术刀系统。激活后将不断地消耗生化能量,来进行全自动的精确切割,但同时你无法手持任何东西。" - #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" msgid_plural "Lessons for the Novice Bowhunter" @@ -15686,6 +15818,21 @@ msgid "" "volume." msgstr "一本高超的服装设计集,曾属于某个服装设计师。充满了各种草图和笔记,熟练的裁缝师能从中学到不少东西。" +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "新时尚:更友善且人道" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon" +" Animal Rights Organization." +msgstr "" +"一本有教育意义的书籍,详细介绍了人造毛皮的用途,以及它的优缺点。书中行文饱含热情,封面上的免责声明骄傲地说,这本书是由格里芬动物权利协会印刷出版的。" + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -23312,7 +23459,7 @@ msgid "" "An extremely strong opioid narcotic derived from morphine. Incredibly " "addictive, the risk of overdose is extreme, and the drug is contraindicated " "for nearly all medical purposes." -msgstr "一种提取自吗啡的非常强大的阿片类麻醉药物。非常容易上瘾,过量应用是危险的,在医学上是禁用的。" +msgstr "一种提取自吗啡的非常强大的阿片类麻醉药物。非常容易上瘾,过量使用时会有致命危险,它被禁用于几乎所有医疗用途。" #: lang/json/COMESTIBLE_from_json.py msgid "potassium iodide tablet" @@ -23653,7 +23800,7 @@ msgstr "骨粉片" #. ~ Description for bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Tastes horribly and is " +"Homemade calcium supplement made out of bone meal. Tastes horrible and is " "hard to swallow but it does its job." msgstr "一份用骨粉制成的自制钙补充剂。尝起来口感很糟糕,很难下咽,但它起码管点用。" @@ -23664,9 +23811,9 @@ msgstr "风味骨粉片" #. ~ Description for flavored bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Due to some sweetness " -"mixed in to counteract the powdery texture and the taste of ash, almost as " -"palatable as the pre-cataclysm tablets." +"Homemade calcium supplement made out of bone meal. Due to some sweetness " +"mixed in to counteract the powdery texture and the taste of ash, it's almost" +" as palatable as the pre-cataclysm tablets." msgstr "一份用骨粉制成的自制钙补充剂。由于添加了甜味剂来抵消原本粉状质地和骨灰味道,它现在几乎和大灾变前的药片一样可口。" #: lang/json/COMESTIBLE_from_json.py @@ -23920,7 +24067,7 @@ msgstr "狼类诱变血清" #: lang/json/COMESTIBLE_from_json.py msgid "medical serum" -msgstr "医学诱变血清" +msgstr "医用诱变血清" #. ~ Description for medical serum #: lang/json/COMESTIBLE_from_json.py @@ -24216,7 +24363,7 @@ msgid "" "fruit. It has been supplemented with extra vitamins and minerals" msgstr "由蛋白质粉和水果混合而成的营养丰富的美味饮料,口感醇厚。特别添加人体所需的维生素和矿物质,均衡膳食营养。" -#: lang/json/COMESTIBLE_from_json.py src/mission_companion.cpp +#: lang/json/COMESTIBLE_from_json.py src/faction_camp.cpp msgid "seeds" msgid_plural "seeds" msgstr[0] "种子" @@ -25107,7 +25254,7 @@ msgstr "一份用代乳制作的美味山核桃酿,神的饮品。" msgid "" "You think this is cornflour... or rice flour... Or something else. However, " "it certainly is not wheat flour! It is useful for baking though." -msgstr "一份玉米粉…...或者大米粉…...或者其他什么粉。但它肯定不是小麦粉!它可以被用来烘培成各类食物。" +msgstr "看上去像一份玉米粉……或者大米粉……或者其他什么粉。但它肯定不是小麦粉!它可以被用来烘培成各类食物。" #: lang/json/COMESTIBLE_from_json.py msgid "gluten free johnnycake" @@ -26722,6 +26869,30 @@ msgid "" "when you look at them." msgstr "一小把熏烤后留下的余烬,还在冒烟。它渐渐消失在你的眼前,随风而去。" +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "魔力八号球" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "一个源自20世纪50年代的占卜工具。为你提供了那些你从未意识到过但此时又十分需要的精神支撑。" + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "金币" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "一种早已过时的货币形式。除了它原本作用之外,现在它还能免费为爱抛币占卜的抛币玩家忠实地服务。" + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -26821,12 +26992,12 @@ msgstr "小块的毛毡片,可以拆解出羊毛纤维。" #: lang/json/GENERIC_from_json.py msgid "Nomex patch" msgid_plural "Nomex patches" -msgstr[0] "聚酰胺防火布片" +msgstr[0] "芳纶布片" #. ~ Description for Nomex patch #: lang/json/GENERIC_from_json.py msgid "A small bolt of Nomex fire-resistant fabric." -msgstr "一小卷聚酰胺防火纤维织物。" +msgstr "一小卷防火芳纶纤维布片。" #: lang/json/GENERIC_from_json.py msgid "superglue" @@ -27590,7 +27761,7 @@ msgid "" "Once a valuable bionic implant, it has not held up well under repeated use." " This object has been destroyed by excessive electric current and is now " "useless." -msgstr "一个曾经十分昂贵的已损毁的生化插件,如今看起来已经短路烧毁,完全无法启动。" +msgstr "一个曾经价值连城,但现在已完全损坏的生化插件。看上去被过量电流短路烧毁,完全无法使用了。" #: lang/json/GENERIC_from_json.py msgid "antenna" @@ -28503,7 +28674,7 @@ msgstr[0] "纸币卷" #: lang/json/GENERIC_from_json.py msgid "A bundle holding many 20 dollar bills, pretty useless now though." msgstr "" -"一捆用皮筋卷起来的20美金纸币,以前你可以用它买到任何东西,现在如同废纸一般。\n" +"一捆用皮筋卷起来的20美元钞票,以前你可以用它买到任何东西,现在如同废纸一般。\n" "\"我致力于灾变后的世界重建,这样我偷偷藏起来的钱总有一天会让我变成富豪。\"" #. ~ Description for cigar @@ -29125,7 +29296,7 @@ msgid "" "resulting weapon is unwieldy and slow but very heavy hitting." msgstr "一长条被几块钢铁紧紧包裹的木头。这使得这件武器笨重和缓慢,但可以造成沉重的打击。" -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "2x4制式木料" @@ -29179,7 +29350,7 @@ msgid "" "A sturdy wood bat, wrapped in flame-resistant Nomex fabric. Makes a good " "melee weapon but better be disassembled to recycle the baseball bat and some" " Nomex patches." -msgstr "一支结实的木棒,由聚酰胺防火纤维包裹。挥起来手感不错,可以浸满汽油后点燃。拆解后可以回收棒球棒并得到一些聚酰胺防火布片。" +msgstr "一支结实的木棒,由防火芳纶纤维包裹。挥起来手感不错,可以浸满汽油后点燃。拆解后可以回收棒球棒并得到一些防火芳纶纤维布片。" #: lang/json/GENERIC_from_json.py msgid "aluminum bat" @@ -30775,9 +30946,8 @@ msgstr "这个大罐储存了一笔发酵的腌黄瓜。你可在发酵完成后 #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." -msgstr "一把中世纪武器,由木杆枪身与铁制矛尖结合而成。和其他长矛比起来又大又重,但拥有无与伦比的命中率与杀伤力。" +"spike." +msgstr "一把中世纪武器,由木杆枪身与铁制矛尖结合而成。" #: lang/json/GENERIC_from_json.py msgid "pot" @@ -31663,12 +31833,12 @@ msgstr "纯电动的车辆控制系统,如果你有合适的工具,就可以 #: lang/json/GENERIC_from_json.py msgid "camera display" msgid_plural "camera displays" -msgstr[0] "摄像头监视屏" +msgstr[0] "摄像头显示屏" #. ~ Description for camera display #: lang/json/GENERIC_from_json.py msgid "A set of small monitors. Required to view cameras' output." -msgstr "一组摄像头监视屏,有了这玩意才能看到摄像头拍了些什么玩意。" +msgstr "一组小型显示屏,有了这玩意才能看到摄像头拍了些什么玩意。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py #: lang/json/vehicle_part_from_json.py @@ -31681,7 +31851,7 @@ msgstr[0] "保安摄像头" msgid "" "A security camera you could connect to a display. Image quality is quite " "low, but the field of vision is great." -msgstr "一个可以连接显示屏的保安监视摄像头。视野广阔,但是图像很差。" +msgstr "一个可以连接显示屏的安防摄像头。视野广阔,但是图像质量很差。" #: lang/json/GENERIC_from_json.py msgid "robot driving unit" @@ -36993,7 +37163,7 @@ msgstr "地图生成DEMO" #. ~ Description for Mapgen Demo #: lang/json/MOD_INFO_from_json.py msgid "Demo for JSONized mapgens (FEMA, megastore, missile silo)." -msgstr "采用测试版的地图生成(FEMA营地,购物广场,导弹发射井)" +msgstr "采用测试版的地图生成(FEMA营地,购物广场,导弹发射井)。" #: lang/json/MOD_INFO_from_json.py msgid "Classes and Scenarios Mod" @@ -37094,17 +37264,6 @@ msgid "" "navigate through tricky terrain at rapid speeds." msgstr "昼伏夜出的蝙蝠,可以飞行的哺乳动物,以昆虫为食,一般群居在山洞或者其他凹陷处,使用超声波定位和导航,移动非常迅速。" -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "冒烟的熊" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "曾经是头熊,现在仅存一具冒着烟的躯壳。它那深邃的眼睛盯着你,满怀怨恨和饥渴。" - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "结痂丧尸" @@ -37290,7 +37449,7 @@ msgstr "地下食人者" #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "一个寄居地下的食人者,多年住在地铁里未见阳光,脸色惨白且严重变形。" @@ -38686,7 +38845,7 @@ msgstr "一条看似正常的美洲狮,但仔细观察会发现它的后腿肿 #: lang/json/MONSTER_from_json.py msgid "skeletal juggernaut" -msgstr "骷髅霸主" +msgstr "骷髅巨兽" #. ~ Description for skeletal juggernaut #: lang/json/MONSTER_from_json.py @@ -38696,7 +38855,7 @@ msgid "" "vulnerable, bones grew around its form to protect it - only, they kept " "growing. And growing. And growing." msgstr "" -"这只丑陋的巨像浑身布满了骨板,畸形的血肉拖拽着其沉重而尖锐的四肢,如同无用的负担一般。曾经柔软脆弱的躯体长出了许多保护的骨甲。而这骨甲还在增长、增长、不断增长。" +"这只丑陋的巨型怪兽浑身布满了骨板,畸形的血肉拖拽着其沉重而尖锐的四肢,如同无用的负担一般。曾经柔软脆弱的躯体长出了许多保护的骨甲。而这骨甲还在增长、增长、不断增长。" #: lang/json/MONSTER_from_json.py msgid "chicken" @@ -39702,10 +39861,10 @@ msgid "" msgstr "北方森林中的栖居的白尾鹿,快速灵敏且健壮,狼和巨型变异蛛最喜爱的猎物。" #: lang/json/MONSTER_from_json.py -msgid "labrador mutt" +msgid "Labrador mutt" msgstr "混血拉布拉多犬" -#. ~ Description for labrador mutt +#. ~ Description for Labrador mutt #: lang/json/MONSTER_from_json.py msgid "" "This once average Labrador mixed breed dog has clearly gone feral. You can " @@ -39715,10 +39874,10 @@ msgstr "" "这只普通的混血拉布拉多犬已经明显发狂了。初见时你几乎能够想象到自己如何将它收为宠物,直到你注意到它饥渴难耐的眼神。一旦机会,你毫不怀疑它会狠狠地咬你一口。" #: lang/json/MONSTER_from_json.py -msgid "labrador puppy" +msgid "Labrador puppy" msgstr "拉布拉多幼犬" -#. ~ Description for labrador puppy +#. ~ Description for Labrador puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Labrador puppy. Much safer to tame than adult " @@ -39732,7 +39891,7 @@ msgstr "斗牛犬" #. ~ Description for bulldog #: lang/json/MONSTER_from_json.py msgid "" -"The American Bulldog is a hardy, well built dog, that seems suited for " +"The American bulldog is a hardy, well built dog, that seems suited for " "surviving the apocalypse." msgstr "美国斗牛犬是一种勇敢且体格健壮的狗,看起来挺适合在末世里生存。" @@ -39743,7 +39902,7 @@ msgstr "斗牛犬幼犬" #. ~ Description for bulldog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless American Bulldog puppy. Much safer to tame than " +"An adorable, defenseless American bulldog puppy. Much safer to tame than " "adult counterparts." msgstr "可爱而无助的美国斗牛犬幼犬。与成年的相比,更易驯服。" @@ -39754,12 +39913,12 @@ msgstr "比特犬" #. ~ Description for pit bull mix #: lang/json/MONSTER_from_json.py msgid "" -"The oft-misunderstood Pit Bull is not actually a single breed but a label " -"for several such as American Pit Bull Terrier and American Staffordshire " -"Terrier. Average abilities and well-known for their 'lock jaw' which isn't " -"real but their incredible determination is." +"The oft-misunderstood pit bull is not actually a single breed but a label " +"for several such as the American pit bull terrier and American Staffordshire" +" terrier. Average abilities and well-known for their 'lock jaw' which isn't" +" real but their incredible determination is." msgstr "" -"与通常印象相反,比特犬并不是单一犬种,而是几类不同犬,如美国比特犬、斯塔福梗犬等的统称。它们能力平平但因为并不存在的锁爪项圈而广为人知,至少它们的专注力很高,一旦咬住轻易不放松。" +"与通常印象相反,比特犬并不是单一犬种,而是几类不同犬,如美国比特犬、斯塔福梗犬等的统称。它们能力平平但因为并不存在的自锁颌部而广为人知,至少它们的专注力很高,一旦咬住轻易不放松。" #: lang/json/MONSTER_from_json.py msgid "pit bull puppy" @@ -39768,7 +39927,7 @@ msgstr "比特犬幼犬" #. ~ Description for pit bull puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Pit Bull puppy. Much safer to tame than adult " +"An adorable, defenseless pit bull puppy. Much safer to tame than adult " "counterparts." msgstr "可爱而无助的比特犬幼犬。与成年的相比,更易驯服。" @@ -39779,7 +39938,7 @@ msgstr "猎兔犬" #. ~ Description for beagle #: lang/json/MONSTER_from_json.py msgid "" -"An adorable Beagle that has managed to survive the apocalypse. Being agile " +"An adorable beagle that has managed to survive the apocalypse. Being agile " "and small, they are difficult to shoot at. Generally attacks in packs." msgstr "一只可爱的猎兔犬,在末世里幸存了下来。动作敏捷,体型小巧,难以被射中。一般会成群发起攻击。" @@ -39790,7 +39949,7 @@ msgstr "猎兔犬幼犬" #. ~ Description for beagle puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Beagle puppy. Much safer to tame than adult " +"An adorable, defenseless beagle puppy. Much safer to tame than adult " "counterparts." msgstr "可爱而无助的猎兔犬幼犬。与成年的相比,更易驯服。" @@ -39802,7 +39961,7 @@ msgstr "边境牧羊犬" #: lang/json/MONSTER_from_json.py msgid "" "An athletic and hyperactive dog that loves to herd animals and jump, the " -"Border Collie is an agile attacker. Although they can be easy to train, " +"border collie is an agile attacker. Although they can be easy to train, " "they don't work well in packs." msgstr "边境牧羊犬是一种体格健壮、极度活跃的狗,喜欢放牧和跳跃,是敏捷的攻击者。尽管它们易于训练,但是不适应团体行动。" @@ -39813,7 +39972,7 @@ msgstr "边境牧羊犬幼犬" #. ~ Description for border collie puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Border Collie puppy. Much safer to tame than adult" +"An adorable, defenseless border collie puppy. Much safer to tame than adult" " counterparts." msgstr "可爱而无助的边境牧羊犬幼犬。与成年的相比,更易驯服。" @@ -39824,7 +39983,7 @@ msgstr "拳师獒犬" #. ~ Description for boxer mastiff #: lang/json/MONSTER_from_json.py msgid "" -"An ordinary breed full of affection, the Boxer Mastiff doesn't otherwise " +"An ordinary breed full of affection, the boxer mastiff doesn't otherwise " "stand out amongst other dogs with its capabilities." msgstr "拳师獒犬是一种常见的情感丰富的犬种,除此之外,就平均能力而言相比其他犬种没有特别突出的特点。" @@ -39835,15 +39994,15 @@ msgstr "拳师獒犬幼犬" #. ~ Description for boxer puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Boxer puppy. Much safer to tame than adult " +"An adorable, defenseless boxer puppy. Much safer to tame than adult " "counterparts." msgstr "可爱而无助的拳师獒犬幼犬。与成年的相比,更易驯服。" #: lang/json/MONSTER_from_json.py -msgid "chihuahua" +msgid "Chihuahua" msgstr "吉娃娃犬" -#. ~ Description for chihuahua +#. ~ Description for Chihuahua #: lang/json/MONSTER_from_json.py msgid "" "It's a tiny Chihuahua. How it has managed to survive is a miracle; although" @@ -39851,10 +40010,10 @@ msgid "" msgstr "它是一只小小的吉娃娃,存活下来简直是一个奇迹。它幼小的身形和好斗的天性或许能派得上用场。" #: lang/json/MONSTER_from_json.py -msgid "chihuahua puppy" +msgid "Chihuahua puppy" msgstr "吉娃娃幼犬" -#. ~ Description for chihuahua puppy +#. ~ Description for Chihuahua puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Chihuahua puppy. Much safer to tame than adult " @@ -39879,15 +40038,15 @@ msgstr "腊肠犬幼犬" #. ~ Description for dachshund puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Dachshund puppy. Much safer to tame than adult " +"An adorable, defenseless dachshund puppy. Much safer to tame than adult " "counterparts." msgstr "可爱而无助的腊肠犬幼犬。与成年的相比,更易驯服。" #: lang/json/MONSTER_from_json.py -msgid "german shepherd" +msgid "German shepherd" msgstr "德国牧羊犬" -#. ~ Description for german shepherd +#. ~ Description for German shepherd #: lang/json/MONSTER_from_json.py msgid "" "The original K-9 breed. An easy to train and great attack dog that will " @@ -39895,21 +40054,21 @@ msgid "" msgstr "最早的K-9犬种。易于训练,攻击力强,会保卫主人直至死去,但并不适应团队行动。" #: lang/json/MONSTER_from_json.py -msgid "german shepherd puppy" +msgid "German shepherd puppy" msgstr "德国牧羊犬幼犬" -#. ~ Description for german shepherd puppy +#. ~ Description for German shepherd puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless German Shepherd puppy. Much safer to tame than " +"An adorable, defenseless German shepherd puppy. Much safer to tame than " "adult counterparts." msgstr "可爱而无助的德国牧羊犬幼犬。与成年的相比,更易驯服。" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees" +msgid "Great Pyrenees" msgstr "大白熊犬" -#. ~ Description for great pyrenees +#. ~ Description for Great Pyrenees #: lang/json/MONSTER_from_json.py msgid "" "A large and powerful breed, the Great Pyrenees has a beautiful, thick white " @@ -39918,10 +40077,10 @@ msgid "" msgstr "大白熊犬是一种孔武有力的狗,有着美丽而稠密的白色毛皮。最初是用来震慑狼和其他捕食者,如今却要保护牲畜免受蹒跚尸潮的袭击。" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees puppy" +msgid "Great Pyrenees puppy" msgstr "大白熊犬幼犬" -#. ~ Description for great pyrenees puppy +#. ~ Description for Great Pyrenees puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Great Pyrenees puppy. Much safer to tame than " @@ -39935,7 +40094,7 @@ msgstr "罗威纳犬" #. ~ Description for rottweiler #: lang/json/MONSTER_from_json.py msgid "" -"Terrifying breed to face feral, as the Rottweiler breed is descended from " +"Terrifying breed to face feral, as the rottweiler breed is descended from " "Roman legion mastiffs. Robust and vicious, quite capable of mauling a human" " to death." msgstr "罗威纳犬是罗马军团獒犬的后裔,一旦发狂将会很难对付的可怕品种。精力充沛,十分凶猛,完全有能力置人于死地。" @@ -39947,7 +40106,7 @@ msgstr "罗威纳幼犬" #. ~ Description for rottweiler puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Rottweiler puppy. Much safer to tame than adult " +"An adorable, defenseless rottweiler puppy. Much safer to tame than adult " "counterparts." msgstr "可爱而无助的罗威纳幼犬。与成年的相比,更易驯服。" @@ -39958,8 +40117,8 @@ msgstr "牧牛犬" #. ~ Description for cattle dog #: lang/json/MONSTER_from_json.py msgid "" -"An agile and sturdy breed that is welcome on any farm, the Australian Cattle" -" Dog is adept at leaping fences and herding livestock." +"An agile and sturdy breed that is welcome on any farm, the Australian cattle" +" dog is adept at leaping fences and herding livestock." msgstr "澳大利亚牧牛犬是一种机敏而健壮、受所有农场欢迎的狗,擅长越过障碍和放牧牲畜。" #: lang/json/MONSTER_from_json.py @@ -39969,7 +40128,7 @@ msgstr "牧牛犬幼犬" #. ~ Description for cattle dog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Australian Cattle Dog puppy. Much safer to tame " +"An adorable, defenseless Australian cattle dog puppy. Much safer to tame " "than adult counterparts." msgstr "可爱而无助的牧牛犬幼犬。与成年的相比,更易驯服。" @@ -41035,6 +41194,17 @@ msgstr "骷髅先生的爪牙" msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "一个较小的骷髅,被小号的哀怨的曲调声所唤醒。" +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "冒烟的熊" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "曾经是头熊,现在仅存一具冒着烟的躯壳。它那深邃的眼睛盯着你,满怀怨恨和饥渴。" + #: lang/json/MONSTER_from_json.py msgid "Compsognathus" msgstr "美颌龙" @@ -42895,7 +43065,7 @@ msgid "" "provides excellent protection from heat, smoke, teargas, and shrapnel. It " "must be prepared before use." msgstr "" -"一件自制的凯夫拉-聚酰胺纤维复合防毒面具,可以保护面部和眼部。它能提供对高温、浓烟、催泪瓦斯和弹片的出色防护。配套的过滤器需要准备一下才能使用。" +"一件自制的凯夫拉-芳纶纤维防火防毒面具,可以保护面部和眼部。它能提供对高温、浓烟、催泪瓦斯和弹片的出色防护。配套的过滤器需要准备一下才能使用。" #: lang/json/TOOL_ARMOR_from_json.py msgid "XL survivor firemask" @@ -42907,10 +43077,10 @@ msgstr[0] "幸存者防火面罩加大版" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from" -" heat, smoke, teargas, and shrapnel. It must be prepared before use." +" heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" "一件自制的凯夫拉-" -"聚酰胺纤维复合防毒面具,可以保护面部和眼部,不受变异限制。它能提供对高温、浓烟、催泪瓦斯和弹片的出色防护。配套的过滤器需要准备一下才能使用。" +"芳纶纤维防火防毒面具,可以保护面部和眼部,穿戴不受变异限制。它能提供对高温、浓烟、催泪瓦斯和弹片的出色防护。配套的过滤器需要准备一下才能使用。" #: lang/json/TOOL_ARMOR_from_json.py msgid "firefighter PBA mask" @@ -43265,7 +43435,7 @@ msgstr "你放宽你的 %s。" msgid "" "A simple and light cloth scarf, worn over the mouth for warmth. Use it to " "loosen it if you get too warm." -msgstr "简单轻便的布围巾,围住你的口部提供温暖。如果太热了,使用它来绑松些吧。" +msgstr "简单轻便的布围巾,围在嘴上提供保暖。如果太热了,使用它来绑松些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "simple patchwork scarf (loose)" @@ -43299,7 +43469,7 @@ msgstr "你裹紧你的 %s。" msgid "" "A simple and light cloth scarf, worn over the mouth for warmth. Use it to " "wear it tighter if you get too cold." -msgstr "简单轻便的布围巾,围住你的口部提供温暖。如果太冷了,使用它来绑紧些吧。" +msgstr "简单轻便的布围巾,围在嘴上提供保暖。如果太冷了,使用它来绑紧些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "long patchwork scarf" @@ -43337,7 +43507,7 @@ msgstr[0] "手织围巾" msgid "" "A long knitted cotton scarf, worn over the mouth for warmth. Use it to " "loosen it if you get too warm." -msgstr "一条长长的针织棉制围巾,围住你的口部以提供温暖。如果太热了,使用它来围松些吧。" +msgstr "一条长长的针织棉制围巾,围在嘴上提供保暖。如果太热了,使用它来围松些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "knit scarf (loose)" @@ -43349,7 +43519,7 @@ msgstr[0] "手织围巾(松)" msgid "" "A long knitted cotton scarf, worn over the mouth for warmth. Use it to wear" " it tighter if you get too cold." -msgstr "一条长长的针织棉制围巾,围住你的口部以提供温暖。如果太冷了,使用它来围紧些吧。" +msgstr "一条长长的针织棉制围巾,围在嘴上提供保暖。如果太冷了,使用它来围紧些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "long knit scarf" @@ -43387,7 +43557,7 @@ msgstr[0] "羊毛围巾" msgid "" "A long wool scarf, worn over the mouth for warmth. Use it to loosen it if " "you get too warm." -msgstr "长长的羊毛围巾,围住你的口部以提供温暖。如果太热了,使用它来围松些吧。" +msgstr "长长的羊毛围巾,围在嘴上提供保暖。如果太热了,使用它来围松些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "wool scarf (loose)" @@ -43405,7 +43575,7 @@ msgstr "你稍稍裹紧你的 %s。" msgid "" "A long wool scarf, worn over the mouth for warmth. Use it to wear it " "tighter if you get too cold." -msgstr "长长的羊毛围巾,围住你的口部以提供温暖。如果太冷了,使用它来围紧些吧。" +msgstr "长长的羊毛围巾,围在嘴上提供保暖。如果太冷了,使用它来围紧些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "long wool scarf" @@ -43418,7 +43588,7 @@ msgid "" "A really long wool scarf, worn over the mouth for warmth. With the extra " "length, it's enough to handle nonstandard facial features and accommodate " "your hands too. Use it to loosen it if you get too warm." -msgstr "一条真的非常长的羊毛围巾,围住你的口部提供温暖。它真的非常长,足够照顾到你特殊的大脸和直接在\"脸\"上伸出的触手。如果太热了,使用它来围松些吧。" +msgstr "一条真的非常长的羊毛围巾,围在嘴上提供保暖。它真的非常长,足够照顾到你特殊的大脸和直接在\"脸\"上伸出的触手。如果太热了,使用它来围松些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "long wool scarf (loose)" @@ -43431,7 +43601,7 @@ msgid "" "A really long wool scarf, worn over the mouth for warmth. With the extra " "length, it's enough to handle nonstandard facial features and accommodate " "your hands too. Use it to wear it tighter if you get too cold." -msgstr "一条真的非常长的羊毛围巾,围住你的口部提供温暖。它真的非常长,足够照顾到你特殊的大脸和直接在\"脸\"上伸出的触手。如果太冷了,使用它来围紧些吧。" +msgstr "一条真的非常长的羊毛围巾,围在嘴上提供保暖。它真的非常长,足够照顾到你特殊的大脸和直接在\"脸\"上伸出的触手。如果太冷了,使用它来围紧些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "fur scarf" @@ -43443,7 +43613,7 @@ msgstr[0] "毛皮围巾" msgid "" "A long fur scarf, worn over the mouth for warmth. Use it to loosen it if " "you get too warm." -msgstr "一条长长的皮毛围巾,围住你的口部提供温暖。如果太热了,使用它来围松些吧。" +msgstr "一条长长的皮毛围巾,围在嘴上提供保暖。如果太热了,使用它来围松些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "fur scarf (loose)" @@ -43455,7 +43625,7 @@ msgstr[0] "毛皮围巾(松)" msgid "" "A long fur scarf, worn over the mouth for warmth. Use it to wear it tighter" " if you get too cold." -msgstr "一条长长的皮毛围巾,围住你的口部提供温暖。如果太冷了,使用它来围紧些吧。" +msgstr "一条长长的皮毛围巾,围在嘴上提供保暖。如果太冷了,使用它来围紧些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "long fur scarf" @@ -43468,7 +43638,7 @@ msgid "" "A really long fur scarf, worn over the mouth for warmth. With the extra " "length, it's enough to handle nonstandard facial features and accommodate " "your hands too. Use it to loosen it if you get too warm." -msgstr "一条真的非常长的皮毛围巾,围住你的口部提供温暖。它真的非常长,足够照顾到你特殊的大脸和直接在\"脸\"上伸出的触手。如果太热了,使用它来围松些吧。" +msgstr "一条真的非常长的皮毛围巾,围在嘴上提供保暖。它真的非常长,足够照顾到你特殊的大脸和直接在\"脸\"上伸出的触手。如果太热了,使用它来围松些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "long fur scarf (loose)" @@ -43481,7 +43651,7 @@ msgid "" "A really long fur scarf, worn over the mouth for warmth. With the extra " "length, it's enough to handle nonstandard facial features and accommodate " "your hands too. Use it to wear it tighter if you get too cold." -msgstr "一条真的非常长的皮毛围巾,围住你的口部提供温暖。它真的非常长,足够照顾到你特殊的大脸和直接在\"脸\"上伸出的触手。如果太冷了,使用它来围紧些吧。" +msgstr "一条真的非常长的皮毛围巾,围在嘴上提供保暖。它真的非常长,足够照顾到你特殊的大脸和直接在\"脸\"上伸出的触手。如果太冷了,使用它来围紧些吧。" #: lang/json/TOOL_ARMOR_from_json.py msgid "thermal electric outfit" @@ -43716,6 +43886,44 @@ msgid "" "into an active cable charger system." msgstr "一套已经展开的便携式超能太阳能电池板阵列,准备好为电缆充电器提供能量。" +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "防暴头盔" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "你升起了面罩。" + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "" +"一顶保护警务人员在执行公务时抵御头部及面部受到打击伤害或其它潜在的伤害的一种警用装具,头盔采用合金材质并附有塑料护罩,提供整个头部的优良防护。激活以升起面罩。\n" +"\"来自法国GIGN宪兵特勤队的Twitch、Montagne、DOC、Rook等干员竭诚为您推荐。\"" + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "防暴头盔(面罩升起)" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "你降下了面罩。" + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." +msgstr "" +"一顶保护警务人员在执行公务时抵御头部及面部受到打击伤害或其它潜在的伤害的一种警用装具,头盔采用合金材质并附有塑料护罩,提供整个头部的优良防护。这个头盔的面罩已经升起。激活以降下面罩。\n" +"\"来自法国GIGN宪兵特勤队的Twitch、Montagne、DOC、Rook等干员竭诚为您推荐。\"" + #: lang/json/TOOL_from_json.py msgid "integrated toolset" msgid_plural "integrated toolsets" @@ -44197,7 +44405,7 @@ msgid "" "This is sturdy wood bat, wrapped in gasoline-soaked rags and flame-resistant" " Nomex fabric. Light it, and the ball game will REALLY heat up. You'll " "need a lighter or matches to light it." -msgstr "一支结实的木棒,由浸满汽油的破布和聚酰胺防火纤维包裹。找个打火机或者划根火柴点着它,比赛更加激烈了!" +msgstr "一支结实的木棒,由浸满汽油的破布和防火芳纶纤维包裹。找个打火机或者划根火柴点着它,比赛更加激烈了!" #. ~ Description for Louisville Slaughterer #: lang/json/TOOL_from_json.py @@ -44207,7 +44415,7 @@ msgid "" " see the baselines at night games (It also makes the umpire FAR more likely " "to call a ball instead of a strike)." msgstr "" -"一支结实的木棒,由浸满汽油的破布和聚酰胺防火纤维包裹。它正明亮地燃烧着,你能更清楚的看清赛场边界了(当然裁判也能看清你的坏球而不是胡乱判为好球了)。" +"一支结实的木棒,由浸满汽油的破布和防火芳纶纤维包裹。它正明亮地燃烧着,你能更清楚的看清赛场边界了(当然裁判也能看清你的坏球而不是胡乱判为好球了)。" #: lang/json/TOOL_from_json.py lang/json/trap_from_json.py msgid "bear trap" @@ -44753,7 +44961,7 @@ msgid "" "conventional batteries. Before the cataclysm, you could have taken " "professional-grade photos using this." msgstr "" -"35mm的数码单反(单镜头反光)相机使用普通电池,带光学/数字取景器,具有自动对焦和变焦镜头和闪光灯的防抖功能。如果是大灾变之前你完全可以用它给凤姐出套专业私拍写真,但是现在找个不想吃你脑子的妹抖爱抖露太难了。" +"35mm的数码单反(单镜头反光)相机使用普通电池,带光学/数字取景器,具有自动对焦和变焦镜头和闪光灯的防抖功能。你可以使用它查看已拍摄的照片,或者将照片存储至SD存储卡上;它使用传统的普通电池供电。在大灾变之前,专业级照片都是使用它拍摄出来的。" #: lang/json/TOOL_from_json.py msgid "candle" @@ -44855,7 +45063,7 @@ msgstr[0] "手机" #. ~ Use action msg for cellphone. #: lang/json/TOOL_from_json.py msgid "You light up the screen." -msgstr "你点亮了手机手电筒。" +msgstr "你打开了手机手电筒。" #. ~ Use action need_charges_msg for cellphone. #: lang/json/TOOL_from_json.py @@ -48290,7 +48498,7 @@ msgid "" " of energy." msgstr "一小罐医用压缩氧,附带调节器和面罩。能够迅速缓解哮喘症状和烟雾吸入损伤,也能让你在短时间内精神满满。" -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" msgstr[0] "电烙铁" @@ -49868,14 +50076,6 @@ msgid "" " to a potato." msgstr "看上去像是些基因工程生命和操作系统,被连在一个马铃薯上。" -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "一种用于起重车辆的小型剪式千斤顶。它采用光圈科技™公司的专利科技,可以传送至引擎下方将引擎抬起。" - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" @@ -51070,6 +51270,15 @@ msgid "autonomous surgical razors" msgid_plural "autonomous surgical razors" msgstr[0] "全自动外科手术刀" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While" +" activated, they will continously drain power to make automated precise cuts" +" but you will be unable to wield anything." +msgstr "使用者的手指被植入了一套手术刀系统。激活后将不断地消耗生化能量,来进行全自动的精确切割,但同时你无法手持任何东西。" + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -53244,6 +53453,11 @@ msgid "" msgstr "" "你四肢和上半身的大部分肉体被工业级强度的弹簧和保护垫替代了。握紧拳头就能折叠或展开衬垫;开启时,液压减震器可防止因严重冲击对身体所造成的伤害,但代价是移动能力受损。" +#: lang/json/bionic_from_json.py lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "离子过载发生器" + #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" msgstr "神经突触再生器" @@ -53257,12 +53471,6 @@ msgid "" "already, it will boost the rate of recovery while you sleep." msgstr "一套电磁刺激装置被植入到你的后脑和脊柱上,不断地消耗着生化能量。当被激活时,你就不会睡眠不足;如果你已经睡眠不足了,它将提高其恢复速度。" -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "离子过载发生器" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "全自动外科手术刀" @@ -55348,12 +55556,12 @@ msgstr "被激光瞄准" msgid "A laser sight is targeting you!" msgstr "一个激光红点瞄到了你的身上!" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" -msgstr "吸烟" +msgstr "吸入烟雾" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "你吸进入了大量浓烟。" @@ -55738,7 +55946,7 @@ msgstr "你的 %s 快被冻得坏死了。" #: lang/json/effects_from_json.py msgid "Warm" -msgstr "温暖" +msgstr "燥热" #. ~ Description of effect 'Warm'. #: lang/json/effects_from_json.py @@ -56234,11 +56442,9 @@ msgstr "麻醉气体" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" -"You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort." -msgstr "" -"力量 -3,敏捷 -3,智力 -1,感知 -4\n" -"你被完全放松,再也不想动弹一下。战斗?太累啦。" +"You are thoroughly relaxed and don't feel like moving. Fighting? Too much " +"effort." +msgstr "你觉得浑身上下完全放松,毫无力气,再也不想动弹一下。战斗?太费劲了。" #. ~ Apply message for effect(s) 'Relaxation gas'. #: lang/json/effects_from_json.py @@ -56573,11 +56779,12 @@ msgstr "快恢复好" msgid "This damaged limb is slowly regaining its functions." msgstr "损坏的肢体正缓慢恢复其功能。" -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" -msgstr "关" +msgstr "残疾" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "该肢体过度损伤以至于失去功能,需要用夹板才能恢复。" @@ -58039,7 +58246,7 @@ msgstr "自动售货机(损坏)" #. ~ Description for broken vending machine #: lang/json/furniture_from_json.py msgid "Ponder if you could buy stuff, as it's broken." -msgstr "一个已损坏自动售货机。" +msgstr "一个已损坏的自动售货机。" #: lang/json/furniture_from_json.py msgid "dumpster" @@ -59067,8 +59274,7 @@ msgid "" msgstr "一个小巧的单手弩。由于其体型小,故威力及拉力均不高,不过相当适用于猎杀小动物。手弩射出的弩矢不易损坏,有很高的几率回收。" #: lang/json/gun_from_json.py lang/json/gun_from_json.py -#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py -#: lang/json/gunmod_from_json.py src/item.cpp +#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" msgid "pistol" msgstr "手枪" @@ -59850,10 +60056,10 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" "Leadworks " "LLC的L523无托平台通过多种方式利用普遍的5.56北约弹,它的设计是可以在不同配置间快速安全且有效地更换组件。这把主战步枪采用了公司专利的战术&红点瞄准镜提供了快速而精确的瞄准,内部集成了Leadworks的陀螺稳定系统并且有一个前置握柄提供更佳的控制。此外还安装了下挂榴弹发射器以对付更难缠的敌人。但是就和该公司出品的其他枪械一样,第三方配件基本都是安不上去的。" @@ -60516,7 +60722,7 @@ msgstr[0] "LeMat 左轮手枪" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those" " who wander the \"Earth-that-was\"." msgstr "" @@ -60849,7 +61055,7 @@ msgstr "两连发" #: lang/json/gun_from_json.py msgid "FN Five-Seven" msgid_plural "FN Five-Sevens" -msgstr[0] "FN Five-Seven 手枪" +msgstr[0] "FN-57 手枪" #: lang/json/gun_from_json.py msgid "" @@ -60858,7 +61064,7 @@ msgid "" "opponents." msgstr "" "这是一款专为FN公司特有的5.7x28mm口径子弹设计的轻型手枪,有着较高的准确度和弹容量,对穿戴护甲的敌人特别有效。细胞分裂中一直伴随山姆费舍尔的手枪原型。\n" -"\"标记、处刑!\"" +"\"瞄准,行刑!\"" #: lang/json/gun_from_json.py msgid "FN P90" @@ -63625,6 +63831,32 @@ msgid "" "reduction to accuracy." msgstr "这套改装工具可以将9x18mm、.38、.40、.44和.45口径的枪械改装成9mm口径,会稍微降低命中率。" +#: lang/json/gunmod_from_json.py +msgid "belt feed adapter" +msgid_plural "belt feed adapters" +msgstr[0] "子弹带适配器" + +#: lang/json/gunmod_from_json.py +msgid "" +"A kit providing the necessary parts for permanently converting a firearm " +"from magazine to belt-feed. Guaranteed to void your warranty." +msgstr "一套工具,用于将枪械永久地从弹匣供弹改装为弹链供弹。保证让枪的保修失效。" + +#: lang/json/gunmod_from_json.py +msgid "magazine" +msgstr "弹仓" + +#: lang/json/gunmod_from_json.py +msgid "tuned mechanism" +msgid_plural "tuned mechanisms" +msgstr[0] "枪械精调件" + +#: lang/json/gunmod_from_json.py +msgid "" +"A set of finely tuned internal components which increase the precision and " +"reliably of a firearm." +msgstr "通过微调枪械内部组件从而增加其精度和可靠的一套组件。" + #: lang/json/gunmod_from_json.py msgid "arrow rest" msgid_plural "arrow rests" @@ -63746,8 +63978,8 @@ msgstr[0] "LW型加长枪管" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." -msgstr "一根Leadworks公司制造的内置加长枪管,加长枪管增加了子弹的枪口初速,从而提高了命中率和伤害,不过也降低了瞄准速度。" +"firearm, contributing to both accuracy and damage." +msgstr "一根Leadworks公司制造的内置加长枪管,加长枪管增加了子弹的枪口初速,从而提高了命中率和伤害。" #: lang/json/gunmod_from_json.py msgid "LW shortened barrel" @@ -63769,8 +64001,8 @@ msgstr[0] "LW型重型枪管" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." -msgstr "一根Leadworks公司制造的内置重型枪管,重型枪管能保证武器持久射击。降低命中率但是提升武器射程和伤害。" +"shooting. Increases damage output and weapon range." +msgstr "一根Leadworks公司制造的内置重型枪管,重型枪管能保证武器持久射击。提升武器射程和伤害。" #: lang/json/gunmod_from_json.py msgid "lightweight replacement furniture" @@ -63794,9 +64026,8 @@ msgstr[0] "人体工程握把" #: lang/json/gunmod_from_json.py msgid "" -"A set of ergonomic replacement furniture for a firearm improving handling " -"and accuracy." -msgstr "一套符合人体工学的手枪配件,可以改善后坐力和精准度。" +"A set of ergonomic replacement furniture for a firearm improving handling." +msgstr "一套符合人体工学的手枪配件,可以改善后坐力。" #: lang/json/gunmod_from_json.py msgid "beam scatterer" @@ -63842,21 +64073,6 @@ msgstr "一个使用了高能量密度材质制成的电容器,能够增加激 msgid "emitter" msgstr "发射器" -#: lang/json/gunmod_from_json.py -msgid "belt feed adapter" -msgid_plural "belt feed adapters" -msgstr[0] "子弹带适配器" - -#: lang/json/gunmod_from_json.py -msgid "" -"A kit providing the necessary parts for permanently converting a firearm " -"from magazine to belt-feed. Guaranteed to void your warranty." -msgstr "一套工具,用于将枪械永久地从弹匣供弹改装为弹链供弹。保证让枪的保修失效。" - -#: lang/json/gunmod_from_json.py -msgid "magazine" -msgstr "弹仓" - #: lang/json/gunmod_from_json.py msgid "leadworks magazine adapter" msgid_plural "leadworks magazine adapters" @@ -63875,19 +64091,9 @@ msgstr[0] "配重扳机" #: lang/json/gunmod_from_json.py msgid "" -"A precision weighted trigger assembly that improves a firearm's accuracy." -msgstr "这种精密的配重扳机组件可以整体提高枪械的射击精度。" - -#: lang/json/gunmod_from_json.py -msgid "tuned mechanism" -msgid_plural "tuned mechanisms" -msgstr[0] "枪械精调件" - -#: lang/json/gunmod_from_json.py -msgid "" -"A set of finely tuned internal components which increase the precision and " -"reliably of a firearm." -msgstr "通过微调枪械内部组件从而增加其精度和可靠的一套组件。" +"A precision weighted trigger assembly that slightly improves a firearm's " +"accuracy." +msgstr "这种精密的配重扳机组件可以略为提升枪械命中率。" #: lang/json/gunmod_from_json.py msgid "firearm waterproofing" @@ -64039,8 +64245,8 @@ msgstr[0] "稳定陀螺仪" #: lang/json/gunmod_from_json.py msgid "" "An advanced unit that straps onto the side of your firearm and reduces " -"vibration, greatly reducing recoil and increasing accuracy." -msgstr "这是一种高级部件,可以安装在枪械一侧,减轻振动和后坐力,提升精度。" +"vibration, greatly reducing recoil and slightly increasing accuracy." +msgstr "一个安装在枪械侧面的高级模组,可减轻枪械震动,极大降低后坐力,略为提升命中率。" #: lang/json/gunmod_from_json.py msgid "LW gyroscopic stabilizer" @@ -65348,9 +65554,11 @@ msgstr "弹匣的物品描述中也会列出兼容的弹药类型。" msgid "" "Note that while several ammo types exist for a given caliber and magazine " "type, you can't mix and match these types into a single magazine. You can't " -"for example load 9x19mm JHP and 9x19 FMJ ammo into the same magazine, since " -"a magazine always requires identical rounds to be loaded in it." -msgstr "注意虽然有些弹药是互相通用的,它们不能被混在同一个弹匣里。一个弹匣里同时只能装入同种类的弹药。" +"for example load 9x19mm JHP and 9x19mm FMJ ammo into the same magazine, " +"since a magazine always requires identical rounds to be loaded in it." +msgstr "" +"注意虽然有些弹药是互相通用的,它们不能被混在同一个弹匣里。一个弹匣里同时只能装入同种类的弹药,因此你无法将 9x19mm JHP弹和 9x19mm " +"FMJ弹混装在同一个弹匣内。" #: lang/json/help_from_json.py msgid "" @@ -65979,7 +66187,7 @@ msgstr "" #: lang/json/item_action_from_json.py msgid "Repair cotton/leather/wool/Nomex/fur" -msgstr "修理棉/皮/羊毛/防火纤维/毛皮制品" +msgstr "修理棉/皮/羊毛/芳纶/毛皮制品" #: lang/json/item_action_from_json.py msgid "Repair metal/plastic/kevlar" @@ -66162,6 +66370,10 @@ msgstr "食用" msgid "Clear rubble" msgstr "清理瓦砾" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "抛硬币" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "吸食" @@ -66190,6 +66402,11 @@ msgstr "吹气" msgid "Make it talk" msgstr "和其交谈" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "吸烟" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "脱下" @@ -66231,6 +66448,10 @@ msgstr "吸入" msgid "Drill" msgstr "钻孔" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "询问" + #: lang/json/item_action_from_json.py lang/json/item_action_from_json.py #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Read" @@ -66273,6 +66494,7 @@ msgid "Squeeze" msgstr "压榨" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" msgstr "玩游戏" @@ -66310,6 +66532,11 @@ msgstr "剃须" msgid "Siphon" msgstr "抽取" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "吸烟" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "书写" @@ -66362,6 +66589,11 @@ msgstr "存储/取出弹药" msgid "Make some noise" msgstr "制造噪音" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "演奏" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "激活/关闭" @@ -67256,10 +67488,18 @@ msgstr "装甲换侧" msgid "Assign invlets to armor" msgstr "给护甲分配按键" +#: lang/json/keybinding_from_json.py +msgid "Sort armor into natural layer order" +msgstr "按自然顺序重新穿戴装备" + #: lang/json/keybinding_from_json.py msgid "Equip armor from inventory" msgstr "穿上装备" +#: lang/json/keybinding_from_json.py +msgid "Equip armor from inventory at this position" +msgstr "在所选部位穿上装备" + #: lang/json/keybinding_from_json.py msgid "Unequip selected armor" msgstr "脱下装备" @@ -68105,6 +68345,22 @@ msgstr "降低优先级" msgid "Change sort order" msgstr "改变排序模式" +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "添加至安全模式黑名单" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "从安全模式黑名单中移除" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "观察四周" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "火焰" + #: lang/json/keybinding_from_json.py msgid "List items and monsters" msgstr "列出玩家附近的物品和怪物" @@ -68287,13 +68543,11 @@ msgstr "移除自定义配色" msgid "Load color template" msgstr "读取配色模板" -#: lang/json/keybinding_from_json.py src/craft_command.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/veh_interact.cpp msgid "Yes" msgstr "是" -#: lang/json/keybinding_from_json.py src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/options.cpp src/veh_interact.cpp msgid "No" msgstr "否" @@ -68303,7 +68557,7 @@ msgstr "忽略干扰直到结束" #: lang/json/keybinding_from_json.py msgid "Cancel popup" -msgstr "取消弹窗" +msgstr "关闭窗口" #: lang/json/keybinding_from_json.py src/pickup.cpp src/vehicle_use.cpp msgid "Control multiple electronics" @@ -68339,7 +68593,7 @@ msgstr "开/关原子车灯" #: lang/json/keybinding_from_json.py msgid "Toggle camera system" -msgstr "开/关监视系统" +msgstr "开/关监控系统" #: lang/json/keybinding_from_json.py msgid "Toggle chimes" @@ -68443,6 +68697,11 @@ msgstr "财政部统一电子化银行" msgid "Open Vault" msgstr "开启保险库" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "财政部统一电子化银行(高安全等级)" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -69138,7 +69397,8 @@ msgid "Emergency Message" msgstr "紧急告知" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py lang/json/mapgen_from_json.py +#: lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "停用备用能源" @@ -69199,7 +69459,6 @@ msgstr "错误:信号断开" #. ~ Computer option #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py -#: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "安装中继器模组" @@ -69241,12 +69500,12 @@ msgstr "打开全自动医疗仪门锁" #. ~ Computer name #: lang/json/mapgen_from_json.py msgid "Containment Control" -msgstr "反应堆外壳控制" +msgstr "隔离区控制台" #. ~ Computer option #: lang/json/mapgen_from_json.py msgid "EMERGENCY CONTAINMENT UNLOCK" -msgstr "反应堆外壳紧急解锁" +msgstr "隔离区紧急解锁" #. ~ Computer option #: lang/json/mapgen_from_json.py @@ -69256,7 +69515,7 @@ msgstr "紧急清理" #. ~ Computer name #: lang/json/mapgen_from_json.py msgid "Containment Terminal" -msgstr "反应堆外壳控制终端" +msgstr "隔离区终端" #. ~ Computer name #: lang/json/mapgen_from_json.py @@ -69301,12 +69560,12 @@ msgstr "弹药库入口" #. ~ Computer name #: lang/json/mapgen_from_json.py msgid "Prisoner Containment Entrance" -msgstr "监狱入口" +msgstr "囚犯隔离间入口" #. ~ Computer option #: lang/json/mapgen_from_json.py msgid "EMERGENCY CONTAINMENT RELEASE" -msgstr "反应堆外壳紧急释放" +msgstr "隔离区紧急释放" #. ~ Computer name #: lang/json/mapgen_from_json.py @@ -70394,7 +70653,7 @@ msgstr "氯丁橡胶" #: lang/json/material_from_json.py msgid "Nomex" -msgstr "聚酰胺防火纤维" +msgstr "芳纶" #: lang/json/material_from_json.py msgid "Unknown" @@ -70529,7 +70788,8 @@ msgstr "去图书馆试试看。" msgid "Got that book for me?" msgstr "找到那本书了么?" -#: lang/json/mission_def_from_json.py src/npctalk.cpp src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Thanks!" msgstr "谢谢啦!" @@ -71304,9 +71564,9 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." +"prophesied events accurately before concerning the Church of Starry Wisdom." msgstr "" -"如果你愿意的话我还有另一个任务给你,牧师曾特别提到了一个囚犯,我想你能不能去调查下他发生了什么,或者他有没有在他的囚室留下什么东西。牧师承认,说的轻一点,那个人相当不稳定,但牧师个人认为那个人有某种忏悔的迹象。我现在还不能对该囚犯发表任何看法……但看起来他之前关于星智慧教堂的预言都非常准确。" +"如果你愿意的话我还有另一个任务给你,牧师曾特别提到了一个囚犯,我想你能不能去调查下他到底怎么样了,或者说他有没有在他的囚室留下了什么东西。牧师承认,说的轻一点,那个人相当不稳定,但牧师个人认为那个人有某种忏悔的迹象。我现在还不能对该囚犯发表任何看法……但看起来他之前关于星智慧教堂的预言都非常准确。" #: lang/json/mission_def_from_json.py msgid "" @@ -71636,7 +71896,7 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels" " is boosted so we can pick it up at much longer ranges. I really need you " @@ -77652,7 +77912,7 @@ msgstr "口皮瓣" msgid "" "Skin tabs and odd flaps of skin surround your mouth. They don't affect your" " eating, but are unpleasant to look at." -msgstr "你的口部环绕着褶皱和奇怪的皮瓣,它们并不影响你的进食,但看上去让人很不舒服。" +msgstr "你的嘴部环绕着褶皱和奇怪的皮瓣,它们并不影响你的进食,但看上去让人很不舒服。" #: lang/json/mutation_from_json.py msgid "Wing Stubs" @@ -79614,7 +79874,7 @@ msgstr "医学变种人" msgid "" "I'm looking for medical mutagen... this world is no place for humans " "anymore, and I don't plan to keep being one." -msgstr "我在找医学诱变剂…这个世界已经不适合人类了,因此我也不打算做人了。" +msgstr "我在找医用诱变剂…这个世界已经不适合人类了,因此我也不打算做人了。" #: lang/json/npc_class_from_json.py msgid "Bird Mutant" @@ -79961,7 +80221,7 @@ msgstr "河流" msgid "river bank" msgstr "河岸" -#: lang/json/overmap_terrain_from_json.py +#: lang/json/overmap_terrain_from_json.py lang/json/snippet_from_json.py msgid "house" msgstr "民宅" @@ -81036,6 +81296,14 @@ msgstr "拖车公园" msgid "mass grave" msgstr "集体墓地" +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "火车站" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "火车站(停车场)" + #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" msgstr "废弃快餐店" @@ -81612,7 +81880,7 @@ msgstr "感谢导师的压榨,你还能想起来那些实验是怎么做的。 #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Lab Technician" -msgstr "实验室技术妹" +msgstr "实验室女技术员" #. ~ Profession (female Lab Technician) description #: lang/json/professions_from_json.py @@ -81662,7 +81930,7 @@ msgid "" "at the bar, and your impressive ability to weasel your way out of the " "consequences of your actions - all these skills have helped ensure your " "survival. But how much longer will they hold out?" -msgstr "你灵活的法律观念、酒吧里无数次争斗、从因你而起的麻烦中脱身的神奇能力——这些都帮助你逃出生天。然而,望望窗外,你又能逃到哪里去呢?" +msgstr "你的如簧巧舌、在酒吧中所卷入(及避开)的各类争斗、每次从麻烦中脱身的神奇能力——这些都帮助你逃出生天。然而,望望窗外,你又能逃到哪里去呢?" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -81677,7 +81945,7 @@ msgid "" "at the bar, and your impressive ability to weasel your way out of the " "consequences of your actions - all these skills have helped ensure your " "survival. But how much longer will they hold out?" -msgstr "你灵活的法律观念、酒吧里无数次争斗、从因你而起的麻烦中脱身的神奇能力——这些都帮助你逃出生天。然而,望望窗外,你又能逃到哪里去呢?" +msgstr "你的如簧巧舌、在酒吧中所卷入(及避开)的各类争斗、每次从麻烦中脱身的神奇能力——这些都帮助你逃出生天。然而,望望窗外,你又能逃到哪里去呢?" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -81838,7 +82106,7 @@ msgctxt "prof_desc_male" msgid "" "You worked in a wealthy household, but after the cataclysm they took a " "family vacation to an unknown place, leaving you to fend for yourself." -msgstr "你在富裕人家中供职。大灾变爆发时,他们乘着私人飞机去了一个你不知道的地方……你看看身上的西服和怀表,默默地拿起了飞刀。THE WORLD!" +msgstr "你在一户富裕人家中供职。大灾变爆发时,他们乘着私人飞机去了一个你不知道的地方,而你被留下来照顾自己。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -81851,8 +82119,7 @@ msgctxt "prof_desc_female" msgid "" "You worked in a wealthy household, but after the cataclysm they took a " "family vacation to an unknown place, leaving you to fend for yourself." -msgstr "" -"你在富裕人家中供职。大灾变爆发时,他们乘着私人飞机去了一个你不知道的地方……你看看身上的妹抖服和怀表,默默地拿起了飞刀。THE WORLD!" +msgstr "你在一户富裕人家中供职。大灾变爆发时,他们乘着私人飞机去了一个你不知道的地方,而你被留下来照顾自己。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -81929,7 +82196,7 @@ msgstr "" #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Security Guard" -msgstr "保安妹" +msgstr "女保安" #. ~ Profession (female Security Guard) description #: lang/json/professions_from_json.py @@ -83154,7 +83421,7 @@ msgid "" "Your body is a wreck of bionic parts. You have a large capacity for power, " "but are filled with broken bionics. At least your ethanol power supply " "still works." -msgstr "你的身体是一个生化插件残骸的集合。你拥有很大的能量槽,以及已损坏的生化插件,但至少你的酒精转换器仍然有效。" +msgstr "你全身上下被各种生化插件弄得一团糟。你有很高的生化能量槽,但安装的各种生化插件却早已失效,但至少你的酒精锅炉还能正常工作。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -83168,7 +83435,7 @@ msgid "" "Your body is a wreck of bionic parts. You have a large capacity for power, " "but are filled with broken bionics. At least your ethanol power supply " "still works." -msgstr "你的身体是一个生化插件残骸的集合。你拥有很大的能量槽,以及已损坏的生化插件,但至少你的酒精转换器仍然有效。" +msgstr "你全身上下被各种生化插件弄得一团糟。你有很高的生化能量槽,但安装的各种生化插件却早已失效,但至少你的酒精锅炉还能正常工作。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -83413,7 +83680,7 @@ msgctxt "prof_desc_male" msgid "" "The cataclysm struck on the big day and you escaped with nothing but your " "wedding attire. Cold feet? You'd just like to keep your feet attached!" -msgstr "那是你人生中的一大转折——你从婚礼现场逃出,身上只剩下结婚套装。腿有点软?走两步,走两步!" +msgstr "这原本是你一生中最重要的日子,但大灾变来了。你穿着盛装从婚礼现场逃了出来。双脚冰凉吗?但是好歹你的脚还和身子连在一起。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -83426,7 +83693,7 @@ msgctxt "prof_desc_female" msgid "" "The cataclysm struck on the big day and you escaped with nothing but your " "wedding attire. Cold feet? You'd just like to keep your feet attached!" -msgstr "那是你人生中的一大转折——你从婚礼现场逃出,身上只剩下结婚套装。腿有点软?走两步,走两步!" +msgstr "这原本是你一生中最重要的日子,但大灾变来了。你穿着盛装从婚礼现场逃了出来。双脚冰凉吗?但是好歹你的脚还和身子连在一起。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -83495,7 +83762,7 @@ msgctxt "prof_desc_male" msgid "" "Your ska band broke up after the drummer became a zombie, now you're alone " "in the cataclysm with some cigarettes and your mp3 player." -msgstr "你的天团解散了——鼓手把贝斯手吃掉了。现在你身上只剩下一包烟,MP3里一首你们乐队的曲子都没有。" +msgstr "你的天团在鼓手把贝斯手吃掉之后就永远解散了。现在你独自一人面对末日,身上只剩下一包烟,MP3里一首你们乐队的曲子都没有。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -83508,7 +83775,7 @@ msgctxt "prof_desc_female" msgid "" "Your ska band broke up after the drummer became a zombie, now you're alone " "in the cataclysm with some cigarettes and your mp3 player." -msgstr "你的天团解散了——鼓手把贝斯手吃掉了。现在你身上只剩下一包烟,MP3里一首你们乐队的曲子都没有。" +msgstr "你的天团在鼓手把贝斯手吃掉之后就永远解散了。现在你独自一人面对末日,身上只剩下一包烟,MP3里一首你们乐队的曲子都没有。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -83521,7 +83788,7 @@ msgctxt "prof_desc_male" msgid "" "Your skill at avoiding dogs and discarded children's toys while delivering " "the mail gives you an edge in your new role as a survivor." -msgstr "你这辈子最大的本事就是在送快递的时候躲避邻居家的恶犬和顽童。现在你要考这本事生存下去咯~~~" +msgstr "你这辈子最大的本事就是在送快递的时候躲避邻居家的恶犬和顽童。现在你得靠这身本事在末日之后的世界生存下去了。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -83534,7 +83801,7 @@ msgctxt "prof_desc_female" msgid "" "Your skill at avoiding dogs and discarded children's toys while delivering " "the mail gives you an edge in your new role as a survivor." -msgstr "你这辈子最大的本事就是在送快递的时候躲避邻居家的恶犬和顽童。现在你要考这本事生存下去咯~~~" +msgstr "你这辈子最大的本事就是在送快递的时候躲避邻居家的恶犬和顽童。现在你得靠这身本事在末日之后的世界生存下去了。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -83897,7 +84164,7 @@ msgctxt "prof_desc_male" msgid "" "You were on your way to the dojo for your first lesson when the world ended." " And you really wanted to learn how to swim, too." -msgstr "世界毁灭时你正在前往道场学习第一课的路上,现在,你正希望自己先学的是游泳。" +msgstr "你正在前往道场学习第一课的路上,世界就毁灭了。现在,你真希望自己除了武术同时还学会游泳。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -83910,7 +84177,7 @@ msgctxt "prof_desc_female" msgid "" "You were on your way to the dojo for your first lesson when the world ended." " And you really wanted to learn how to swim, too." -msgstr "世界毁灭时你正在前往道场学习第一课的路上,现在,你正希望自己先学的是游泳。" +msgstr "你正在前往道场学习第一课的路上,世界就毁灭了。现在,你真希望自己除了武术同时还学会游泳。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -84531,7 +84798,7 @@ msgctxt "prof_desc_male" msgid "" "You love to skate! At least now the grown-ups aren't telling you where you " "can't roll." -msgstr "你爱滑板!至少现在没有大人告诉你哪里不能滑啦~" +msgstr "你超爱轮滑!至少现在那些烦人的大人们不会再告诉你哪里不准滑了。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -84544,7 +84811,7 @@ msgctxt "prof_desc_female" msgid "" "You love to skate! At least now the grown-ups aren't telling you where you " "can't roll." -msgstr "你爱滑板!至少现在没有大人告诉你哪里不能滑啦~" +msgstr "你超爱轮滑!至少现在那些烦人的大人们不会再告诉你哪里不准滑了。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -84643,7 +84910,7 @@ msgstr "" #: lang/json/professions_from_json.py msgctxt "profession_male" msgid "Dodgeball Player" -msgstr "躲避球运动员" +msgstr "躲避球手" #. ~ Profession (male Dodgeball Player) description #: lang/json/professions_from_json.py @@ -84651,12 +84918,12 @@ msgctxt "prof_desc_male" msgid "" "You liked to play dodgeball, where failing to dodge the ball meant you were " "out. Now failing to dodge threatens your life. Don't slip up." -msgstr "你很喜欢玩躲避球。以前你躲避球失败了只意味着你将下场,现在这场球赛,如果你躲避球失败了,你将被威胁到性命。别再手滑出意外了。" +msgstr "你很喜欢玩躲避球。以前你没能躲开时只意味着你将下场,而现在如果你没能躲开,小命不保,可不要手滑了哦。" #: lang/json/professions_from_json.py msgctxt "profession_female" msgid "Dodgeball Player" -msgstr "躲避球女运动员" +msgstr "躲避球手" #. ~ Profession (female Dodgeball Player) description #: lang/json/professions_from_json.py @@ -84664,7 +84931,7 @@ msgctxt "prof_desc_female" msgid "" "You liked to play dodgeball, where failing to dodge the ball meant you were " "out. Now failing to dodge threatens your life. Don't slip up." -msgstr "你很喜欢玩躲避球。以前你躲避球失败了只意味着你将下场,现在这场球赛,如果你躲避球失败了,你将被威胁到性命。别再手滑出意外了。" +msgstr "你很喜欢玩躲避球。以前你没能躲开时只意味着你将下场,而现在如果你没能躲开,小命不保,可不要手滑了哦。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -84736,7 +85003,7 @@ msgid "" "You've been teaching kids for the whole of your life, and they've mostly " "listened to your teachings. However, the dead won't write out lines for " "eating you alive." -msgstr "你曾经是一名光荣的人民教师,学生们都很听你的话。但现在,你所能布置的作业的内容,只能是今天让他们吃掉你的哪条大jj了。" +msgstr "你曾经是一名光荣的人民教师,学生们都很听你的话。但现在,你所能布置的作业的内容,只能是今天让他们吃掉你的哪条大腿了。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -86064,6 +86331,118 @@ msgid "" msgstr "" "你曾经是头儿最欣赏的下属,得意门生。大伙都将最硬的活交给你,指望着你能搞定。知道你有潜力,帮里为你投入了不少资金给你安了些\"基础\"生化插件,还配上了黑市里能搞到的最好的装备,好让你更好完成手里的活计。在享受了一段为所欲为的日子之后,现在你发现自己需要依赖那些技能才能够生存下来。" +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "觉醒者" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "你在半夜被一阵噪声惊醒了。你带着手头仅有的手电筒去调查一下,却发现自己现在面临着大灾变的挑战。" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "觉醒者" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "你在半夜被一阵噪声惊醒了。你带着手头仅有的手电筒去调查一下,却发现自己现在面临着大灾变的挑战。" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "生化自行车手" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "你为生化奥运会自行车比赛所准备的各种训练和强化插件为你提供了在大灾变开始时逃出生天的优势。但你能永远逃得掉吗?" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "生化自行车手" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "你为生化奥运会自行车比赛所准备的各种训练和强化插件为你提供了在大灾变开始时逃出生天的优势。但你能永远逃得掉吗?" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "焊工" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "在大灾变之前你是一家近海采油公司的焊工。在你正准备回家休假的路上,大灾变来了。至少你手头上还有你用来吃饭的家伙。" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "电焊工" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "在大灾变之前你是一家近海采油公司的焊工。在你正准备回家休假的路上,大灾变来了。至少你手头上还有你用来吃饭的家伙。" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "复古生存狂" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"你知道这一天终将来临,一切都会变得无法收拾。你早就为此准备就绪,不靠装备,而是纯靠技巧;在树林中待过的那些日子都给了你回报。你的祖先在没有各种高科技的情况下都能生存下去,如果你还不行的话那可真该死。" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "复古生存狂" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" +"你知道这一天终将来临,一切都会变得无法收拾。你早就为此准备就绪,不靠装备,而是纯靠技巧;在树林中待过的那些日子都给了你回报。你的祖先在没有各种高科技的情况下都能生存下去,如果你还不行的话那可真该死。" + #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "WEAPON" @@ -87212,17 +87591,17 @@ msgstr "挑战-实验室逃生" #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." -msgstr "你一直被锁在实验室的单间里,直到某个怪物打碎了玻璃。实验室被完全封锁了!赶紧想办法逃出去。" +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." +msgstr "你被锁在实验室里,找不到出去的路。在饿死之前想办法逃出去吧。" #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." -msgstr "你一直被锁在实验室的单间里,直到某个怪物打碎了玻璃。实验室被完全封锁了!赶紧想办法逃出去。" +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." +msgstr "你被锁在实验室里,找不到出去的路。在饿死之前想办法逃出去吧。" #. ~ Starting location for scenario 'Challenge-Lab'. #: lang/json/scenario_from_json.py @@ -87966,6 +88345,44 @@ msgid "" "zombies." msgstr "在骚乱和混乱中,你躲在机器人调度中心希望机器人能保护你,但它们可能比丧尸更危险。" +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "地堡被疏散者" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "地堡被疏散者" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" +"你有些特殊关系,或者特别的情报来源……正因为如此,你找到了这个LMOE避难所。现在已经到了夏天,而你不知怎么地居然活了下来,现在事情变得更容易了。" + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" +"你有些特殊关系,或者特别的情报来源……正因为如此,你找到了这个LMOE避难所。现在已经到了夏天,而你不知怎么地居然活了下来,现在事情变得更容易了。" + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "LMOE避难所" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" @@ -88111,7 +88528,7 @@ msgid "" " a user to navigate complex software systems and even bypass their security." msgstr "访问和操作计算机的技能。等级越高越能浏览更加复杂的软件系统,甚至找到其中的后门。" -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "烹调" @@ -88219,7 +88636,7 @@ msgid "" " water, and determines the detriment of swimming with heavier gear." msgstr "在水中保持漂浮和移动的技能。 这项技能使你免于淹死,在深水中,影响你的速度和战斗力,并让你披盔戴甲游泳时也能游的轻松。" -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "裁缝" @@ -88698,6 +89115,42 @@ msgid "" "spawn with more resources." msgstr "不要害怕让游戏变得更容易。调整世界设置能让游戏生成更多物品。" +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "可别刚脱下裤子就被抓了。反正再也不会有卫生纸了。" + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "通过困难地形时移动速度会降低,好好想想怎么利用下吧。" + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best" +" friend." +msgstr "当整个城镇都成了一座大超市时,购物车会是你最好的朋友。" + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "多多尝试不同的角色、职业和场景可以为你的游戏增添乐趣。角色扮演!" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "多救下一名幸存者就多赢得一个朋友。当然大多数时候……" + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "想知道怎么玩游戏?查看快捷键绑定菜单并了解各种按键诀窍。" + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "为不可预料的事情做好准备,即便会是西班牙异端裁判所。" + #: lang/json/snippet_from_json.py msgid "" "You feel great! It doesn't seem like wounds could even slow you down for " @@ -89429,6 +89882,566 @@ msgid "" msgstr "" "XE037造成的死者复活量已经达到了临界水平,这场危机的威胁正在快速增长,并且即将超过军方和警方的压制能力。每一组派出去的作战单位都遭遇了样本的明显带有敌意的进攻,并且有几组人已经与我们失去了联系。之前萨维奇博士提出了一套重新部署的战略,那就是将部队撤离到一个复杂的巨大地下建筑\"避难所\",并在那里继续生产PE062。" +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "流行风" + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "排行榜前四十" + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "集体创作" + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "商业化" + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "非主流" + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "学院派" + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "文艺类" + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "地下" + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "实验性" + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "早已遗忘" + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "传统" + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "历史" + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "古典" + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "现代" + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "成熟" + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "当代" + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "教会" + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "异教" + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "英伦" + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "欧陆" + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "热带风情" + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "岛国" + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "纽约" + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "好莱坞" + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "泛太平洋" + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "拉丁" + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "器乐" + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "融合" + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "立体视觉" + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "流动" + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "数字" + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "随机生成" + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "婉转" + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "和谐悦耳" + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "不和谐" + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "前后相关" + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "概念化" + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "协力完成" + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "节奏分明" + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "新" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "复古" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "后现代" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "反叛" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "重" + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "轻" + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "快" + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "慢" + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "高保真" + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "低保真" + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "折衷保真" + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "氛围" + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "舞蹈" + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "冷冽" + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "疯狂" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "高速" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "前卫" + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "华丽" + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "局外人" + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "独立" + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "暗黑" + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "死亡" + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "电子" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "迷幻" + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "太空" + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "贫民窟" + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "街头" + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "都会" + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "世界" + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "欧式" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "非洲式" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "垃圾式" + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "铜管" + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "暴力" + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "沼泽" + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "幽灵" + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "暗影" + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "神经" + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "超越" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "嘉年华" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "主流" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "电子" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "合成" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "机械" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "滑冰" + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "怪诞" + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "冲浪" + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "变种" + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "侏罗纪" + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "自由" + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "车库" + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "垃圾" + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "断拍" + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "激光" + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "色情" + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "催眠" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "月球" + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "雷电" + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "小丑" + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "谋杀" + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "毒品" + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "黑帮" + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "曲" + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "调" + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "旋律" + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "节拍" + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "舞步" + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "流行乐" + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "短曲" + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "鼓点" + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "风格" + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "颂歌" + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "民谣" + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "乡村乐" + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "爵士乐" + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "蓝调" + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "灵魂乐" + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "R&B" + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "嘻哈" + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "摇摆乐" + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "疯克乐" + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "迪斯科舞曲" + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "波尔卡舞曲" + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "探戈舞曲" + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "莎莎舞曲" + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "曼波舞曲" + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "电子乐" + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "金属乐" + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "雷鬼音乐" + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "斯卡乐" + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "脑残" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "鞭挞乐" + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "哥特摇滚" + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "工业音乐" + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "迷幻音乐" + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "噪音音乐" + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "声乐曲" + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "翻唱曲" + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "福音歌" + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "歌剧" + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "水手号子" + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -89610,7 +90623,7 @@ msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " "a man carrying a somewhat confused horse on his shoulders. He is flanked by" " two scantily clad nurses who hold bloody chainsaws and give approving " -"thumbs up. His bulging knees and elbows are stiched and seem to be the " +"thumbs up. His bulging knees and elbows are stitched and seem to be the " "source of his ability. The caption reads: \"Brand new! Horse power at " "hand!\"" msgstr "" @@ -89619,7 +90632,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " -"a man smiling while being relentlesly punched by a boxer. He doesn't even " +"a man smiling while being relentlessly punched by a boxer. He doesn't even " "sweat as punches have no effect on him. Two scantily clad nurses give " "approving thumbs up from the background. The caption reads: \"Bouncy as " "never before! Absorb those shocks!\"" @@ -92448,6 +93461,194 @@ msgid "" " you in a sleep." msgstr "全自动医疗仪是你安装生化插件的最好选择——当然前提是你得先找到这玩意!不过我听说如果你没有配套的麻醉工具箱就没法使用它。" +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "在比一般地下室更深的任何地方都要提高警惕。有些人从矿井和实验室的通风井里听到可怕的尖叫声。那是非常恐怖的尖叫声。" + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "一天一螺丝刀,坏血病远离我!(注:英文谐音)" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "比平时更饿?纯天然的油会帮你度过难关。虽然味道很糟糕,但在吃你自己的腿是第二选择时,谁还在乎呢?" + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "地形可以扭转战局,确保你用它来对付敌人,以免它被敌人用来对付你。" + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "从矿井旁边经过的人提到了些难闻的味道。如果你计划去那里的话,可以考虑带上防毒面具。" + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "知识就是力量。我说的是真的,拿起一本书就知道了。" + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "如果敌人都死了,那就没什么能够杀死你的了。好吧,除了寒冷、饥饿以及……当我什么都没说过。" + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "" +"我遇到过一个女孩,她坚持说她看到一只在陆地上游的鲨鱼钻过岩石、墙壁和泥土。要是在以前,我会认为这是无稽之谈,但现在遇到这么多事情之后,我不好说它就是一个谎言。" + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "水先煮开,然后再喝下。曾经有个十个商队直接喝下泉水,现在他们变成三人商队了。" + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "我有一次在一周内见过一个满满的帆布包经过五次手。如果你不能逃离丧尸,那有再多的东西都是没有意义的。" + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "提姆曾夸口说可以开车穿过尸潮。提姆现在是丧尸了。你还有什么问题吗?" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no" +" environment to save now, but one can still save thyself I guess." +msgstr "他们说过:使用太阳能,拯救地球,拯救自己。好吧……现在没有地球可以拯救了,但我想我们仍然可以拯救自己。" + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "如果你找不到小刀,试着砸碎盆栽。它可能会给你制作简易小刀所需要的一切。" + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "好的咽喉点和坏的咽喉点有什么区别?好的咽喉点背后还有另一扇后门。" + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "所以,我想:要是你能想法说服那些警用机器人你是它们的上级的话……" + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their components." +" This guy around here, McSomething whatever his name is, is a master at " +"this." +msgstr "当你知道有多少物品能够被拆成零件时,你会惊讶的。这儿附近有个叫麦什么什么的家伙,忘了名字,对这些事很在行。" + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "" +"电烙铁是一名有抱负的机械师最好的朋友。你也可以用它来烧灼伤口,但是死于这种治疗方式的人和它所救治的一样多,所以我想不到万不得已千万别这么干。" + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "我见过一些人带着刚安装的CBM在这附近晃悠。这意味着除了洗劫商店外还有方法可以得到它们。也许这就是我所看到的那些被解剖过的尸体出现的原因。" + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "我已经吃腻了熏肉,但它能长期储存。好吧……如果当初我花多点心思学习烹饪,也许现在我的食谱能更多样化,同时也有更多长保质期的食物可选择。" + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" +"狡猾的乔因他那创造性地杀死丧尸的方式被判了绞刑。是的,为了杀死几只丧尸烧掉一栋房子还能让人接受,但把整座镇子,尤其和没拿走的战利品一起烧光就太过头了。" + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "\"墓碑\"先生总是说:在劫掠行动时不要带东西,要为战利品留出空间。他当时的名字还是乔,不过他为自己赢得了这个昵称,成为第一位墓碑的\"主人\"。" + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are" +" always better than two." +msgstr "多一个同伴就多一张吃饭的嘴,但当有活要干时,四只手总比两只要强。" + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my" +" sorry ass away from the horde, with nothing more but some white powder I " +"got from that zombie. Saved me that time." +msgstr "我一直反对使用毒品,直到有次我被尸潮追杀时,差点被一只丧尸杀死,除了从那个丧尸尸身上得到的一些白色粉末之外,我什么也没有。它救了我一命。" + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "不知道迈克的心智还正不正常。他有一次倒霉地把车开进了一所学校里。那段经历让他不仅仅是断了几根肋骨那么简单。" + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "一点关于炸药的想法。如果你还跑的动,而且它还没炸,再跑远一点。你和点燃的炸药之间永远没有所谓的\"多余空间\"。" + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "避免在狭窄的走廊使用火箭发射器,你可能会射歪。" + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it " +"lemon?" +msgstr "我曾经见过一位疯狂的化学家。她制造电池只用了土豆……也许是柠檬?" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "我不知道为什么掷弹兵丧尸手里总是拿着一个手榴弹。也许是肌肉记忆?不管怎么说,你绝不想在它手里那玩意掉下来的时候靠近它。" + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "这家伙死了吗?你如何确认呢?它以前死过一次,现在又死了一次。所以我宁愿问:你~*砸*~死~*砸*~了~*砸*~没?~*砸砸砸碎*" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "我听说这附近有种奇怪的大个浆果,但奇怪的是,我却从没听说过这种浆果是否能用来充饥?" + #: lang/json/snippet_from_json.py msgid " " msgstr " " @@ -92552,10 +93753,6 @@ msgstr "孬种" msgid "piece of shit" msgstr "废物" -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "脑残" - #: lang/json/snippet_from_json.py msgid "scumbag" msgstr "人渣" @@ -92832,7 +94029,7 @@ msgstr "嗨,。" msgid "never" msgstr "不会吧" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" msgstr "不" @@ -93728,7 +94925,7 @@ msgstr "好吧 举起手来!" msgid "Hands in the air, !" msgstr "把手高举在空中,!" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" msgstr "走开" @@ -94705,7 +95902,7 @@ msgstr "\"个体实例,编号U-O-7-7-3-4\"" #: lang/json/speech_from_json.py msgid "\"To be kept in a standard biohazardous containment chamber.\"" -msgstr "\"要保证把它封存在标准生化危害控制室。\"" +msgstr "\"要保证把它封存在标准生化危害隔离间内。\"" #: lang/json/speech_from_json.py msgid "\"Until such time as more permanent arrangements are made.\"" @@ -96751,10 +97948,26 @@ msgstr "LMOE避难所" msgid "Middle of Nowhere" msgstr "无人区" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "实验室单间" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "科学实验室" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "科学实验室-底层" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "科学实验室-冷冻" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "科学实验室-深度冷冻" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "购物中心(装卸区)" @@ -96851,6 +98064,14 @@ msgstr "别墅" msgid "Gas Station" msgstr "加油站" +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "电器店" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" +msgstr "服装店" + #: lang/json/talk_topic_from_json.py msgid "That sure is a shiny badge you got there!" msgstr "你那真是一个闪亮亮的警徽啊!" @@ -96883,8 +98104,7 @@ msgstr "你的耳朵怎么了?" msgid "Anything I can help with?" msgstr "我能帮上什么忙?" -#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Well, bye." msgstr "好的,再见。" @@ -97095,7 +98315,8 @@ msgstr "我不在乎。" msgid "I see." msgstr "我懂了。" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Oh, okay." msgstr "哦,好的。" @@ -97172,6 +98393,253 @@ msgstr "谢谢你。" msgid "Thanks, bye." msgstr "谢了,再见。" +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "呵呵,我估计就我们两个活人了。" + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "好歹我们还有个避难所可以呆。" + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "[询问]我们现在该做什么?" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "[询问]有什么建议吗?" + +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "[任务]我能为你做些什么?" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "[组队]与我同行吧,如何?" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's trade items." +msgstr "[交易]做些交易吧,怎样?" + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "[索取]一点装备都没的话,我可不敢离开这个避难所。" + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "不知道,或许我们应该寻找其他幸存者和补给。" + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "也许我们该开始加固这个地方。" + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to" +" disappear quickly from here." +msgstr "也许该弄好一辆车了,这对我们从这里迅速撤离是很有帮助的。" + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "我知道周边有几个农场,我们可以去找一个落脚。它们可以提供充足的食物,而且也不用在城市里和那些家伙打照面。" + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "也许我们应该远离那些城市,即便那里有不少有用的东西。" + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "嗯嗯,好吧。" + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "直到我得到一些抗生素……" + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "你刚才问过我了,我仍在考虑中,一会再问我吧。" + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "为什么我应该跟你同行?" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "明白了,我会把抗生素拿给你的。" + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "好吧,以后再问你吧。" + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "因为我有能力保护你啊。" + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "因为你能保护我的安全。" + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "因为我们是朋友啊,对吧?" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "要是不答应我就杀了你。" + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "如你所愿,我和你一起走!" + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "嗯,那太好了!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "好的,我们出发吧!" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "噢……我并不这么认为。" + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "你真的要离开?" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "[确认]是的,再见吧。" + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "[取消]我只是在开个玩笑。" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp +msgid "What is it?" +msgstr "干什么?" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "还有多远?" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "让我来带路吧。" + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "一边去,现在我是领队!" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "一起走吧。" + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "好吧,现在你说了算。" + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "好的。还有别的事……" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "好的,出发吧。" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "OK,OK。" + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "一点可能也没有。我要留下来!" + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "好吧。" + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "有我盯着呢。" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "[归队]我需要你和我一起走。" + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "[取消]嗯,保重吧,回头见。" + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "这么做让我很不爽啊……" + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "我会给你点空间。" + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "我还是留着给自己吧。" + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "我明白……" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "好的,给你。" + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "嗯,谢了!" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "感谢!能否再给一些?" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "谢了,请多保重!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "好吧,我表示抱歉。" + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "真的,再谈一下如何?" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "嗯嗯,那就这样,再会。" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "好吧,让我们开始吧。" + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "[确认]听起来不错,开始吧。" + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "好的,你来带路吧。" + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "不要,在这挺好的。" + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "[取消]回头想一想,算了吧。" + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "你好,长官!" @@ -97899,10 +99367,6 @@ msgstr "[营地]营地还需要些什么吗?" msgid "We're abandoning this camp." msgstr "[营地]我们要废弃这个营地了。" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "[取消]嗯,保重吧,回头见。" - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "希望你来这里是来交易的。" @@ -97936,7 +99400,7 @@ msgstr "" msgid "Are you looking to buy anything else?" msgstr "你还想买点其他的吗?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." msgstr "很好……" @@ -98064,7 +99528,7 @@ msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of" " operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " @@ -98740,10 +100204,6 @@ msgstr "什么?呃,我是个理发师……我给人们理发。这里很多 msgid "I can't imagine what I'd need your assistance with." msgstr "眼下好像没什么需要你帮忙的。" -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "好吧。" - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "请稍等,让我把剪刀拿过来……" @@ -98809,10 +100269,6 @@ msgstr "很高兴有你在。" msgid "Can I trade for supplies?" msgstr "我能换点补给品吗?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "[任务]我能为你做些什么?" - #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " @@ -99092,7 +100548,7 @@ msgstr "打好包裹,。我们要出发了。" msgid "Not at technique at all" msgstr "毫无技术含量。" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp src/martialarts.cpp msgid "Block" msgstr "格挡" @@ -99209,7 +100665,7 @@ msgstr " 大幅挥击 %s" #: lang/json/technique_from_json.py msgid "Impaling Strike" -msgstr "刺击攻击" +msgstr "刺穿攻击" #. ~ Description for Impaling Strike #: lang/json/technique_from_json.py @@ -99250,8 +100706,6 @@ msgid "Rapid Strike" msgstr "快速攻击" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "50% 行动点消耗,66% 伤害" @@ -99363,11 +100817,6 @@ msgstr " 用鞭子缴械了 %s" msgid "Counterattack" msgstr "反击" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "格挡时反击,闪避时反击" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -99382,22 +100831,10 @@ msgstr " 反击 %s" msgid "Feint" msgstr "佯攻" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "攻击未命中不消耗行动点" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "反擒拿" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "被抓住后挣脱" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -99412,11 +100849,6 @@ msgstr " 精准戳击 %s" msgid "Cross" msgstr "十字投" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "1.2倍钝击伤害,至少2级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -99431,12 +100863,6 @@ msgstr " 十字投摔了 %s" msgid "Jab" msgstr "刺戳" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "50%行动点消耗,66%伤害,至少3级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -99451,11 +100877,6 @@ msgstr " 快速地戳了 %s" msgid "Uppercut" msgstr "上勾拳" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "击晕2回合,1.4倍钝击伤害,至少4级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -99470,11 +100891,6 @@ msgstr " 上勾拳攻击 %s" msgid "Cross Counter" msgstr "交叉反击" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "击晕2回合,击退1格,仅暴击,至少5级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -99503,14 +100919,6 @@ msgstr " 快拳打击 %s" msgid "karate chop" msgstr "手刀" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "击晕2回合,仅暴击,至少4级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -99525,11 +100933,6 @@ msgstr " 掌劈 %s" msgid "throw" msgstr "投摔" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "击倒1回合,击退1格,至少2级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -99544,11 +100947,6 @@ msgstr " 投摔 %s" msgid "dodge throw" msgstr "闪躲摔投" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "击倒1回合,击退1格,闪避时反击,至少6级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -99563,12 +100961,6 @@ msgstr " 流畅地摔投了 %s" msgid "feint at" msgstr "佯攻" -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "攻击未命中不消耗行动点,至少2级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -99579,11 +100971,6 @@ msgstr "你佯攻 %s" msgid " feints at %s" msgstr " 佯攻 %s" -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "缴械敌方武器,至少3级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -99594,21 +100981,11 @@ msgstr "你将 %s 缴械" msgid " disarms %s" msgstr " 缴械了 %s" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "击倒1回合,击退1格,至少3级徒手格斗" - #: lang/json/technique_from_json.py lang/json/technique_from_json.py #: src/monster.cpp msgid "grab" msgstr "擒拿" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "击倒2回合,至少2级徒手格斗" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "直击" @@ -99623,20 +101000,10 @@ msgstr "你打击了 %s" msgid " strikes %s" msgstr " 打击了 %s" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "攻击未命中不消耗行动点,至少1级徒手格斗" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "肘击" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "50%行动点消耗,仅暴击,至少2级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -99651,11 +101018,6 @@ msgstr " 肘击 %s" msgid "kick" msgstr "踢" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "击晕1回合,至少3级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -99680,19 +101042,6 @@ msgstr "你双脚踏地,单脚跃起,如奔雷般飞膝猛击 %s" msgid " flying knees %s" msgstr " 飞膝攻击 %s" -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "50%行动点消耗,66%伤害,至少2级徒手格斗" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "击晕2回合,仅暴击,至少3级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -99703,32 +101052,14 @@ msgstr "你向前冲步,拳头如闪电般猛地戳击 %s" msgid " jabs %s" msgstr " 戳击 %s" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "击倒1回合,至少4级徒手格斗" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "反擒拿" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "被抓住后挣脱,至少4级徒手格斗" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "奇袭" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min" -" 3 melee" -msgstr "击晕2回合,1.4倍钝击伤害,2倍劈砍伤害,仅暴击,至少3级徒手格斗,至少3级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -99743,11 +101074,6 @@ msgstr " 奇袭 %s" msgid "axe-kick" msgstr "斧踢" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "击晕2回合,仅暴击,至少2级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -99762,11 +101088,6 @@ msgstr " 下劈 %s" msgid "side kick" msgstr "侧踢" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "击晕1回合,击退1格,至少3级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -99781,11 +101102,6 @@ msgstr " 侧踢 %s" msgid "sweep kick" msgstr "扫踢" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "击倒2回合,至少4级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -99800,11 +101116,6 @@ msgstr " 扫踢 %s" msgid "biojutsu counter" msgstr "生化反击术" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "格挡时反击,至少4级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -99833,11 +101144,6 @@ msgstr " 迅斩了 %s" msgid "biojutsu impale" msgstr "生化穿刺术" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "击晕1回合,1.5倍钝击伤害,1.5倍劈砍伤害,仅暴击,至少3级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -99848,20 +101154,10 @@ msgstr "你无情的穿刺了 %s" msgid " brutally impales %s" msgstr " 无情的穿刺了 %s" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "击倒2回合,至少2级近战" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "大幅斩" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "攻击大角度范围内敌人,仅暴击,至少5级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -99876,13 +101172,6 @@ msgstr " 切过 %s" msgid "Drunk feint" msgstr "醉拳佯攻" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "攻击未命中不消耗行动点,至少3级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -99897,11 +101186,6 @@ msgstr " 蹒跚几步后斜视 %s" msgid "Drunk counter" msgstr "醉拳反击" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "1.25倍钝击伤害,闪避时反击,至少4级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -99916,12 +101200,6 @@ msgstr " 蹒跚而行,并且击中了 %s" msgid "Fencing lunge" msgstr "击剑刺击" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "75%行动点消耗,至少2级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -99936,11 +101214,6 @@ msgstr " 弓步刺击 %s" msgid "Fencing thrust" msgstr "击剑直刺" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "90%行动点消耗,1.25倍刺击伤害,至少1级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -99955,11 +101228,6 @@ msgstr " 你直刺 %s" msgid "Fencing stop thrust" msgstr "击剑先发直刺" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "击晕1回合,1.5倍刺击伤害,格挡时反击,至少3级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -99974,11 +101242,6 @@ msgstr " 对 %s 使出一记完美的先发直刺" msgid "Round strike" msgstr "弧面攻击" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "60%行动点消耗,至少4级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -100007,11 +101270,6 @@ msgstr " 扇面攻击了 %s" msgid "Snap strike" msgstr "快闪攻击" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "80%行动点消耗" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -100026,11 +101284,6 @@ msgstr " 快闪攻击了 %s" msgid "Combination strike" msgstr "组合连击" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "80%行动点消耗,1.5倍伤害,至少2级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -100045,11 +101298,6 @@ msgstr " 的连招延绵不断的攻向 %s" msgid "free strike" msgstr "额外攻击" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "额外攻击,至少4级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -100064,13 +101312,6 @@ msgstr " 再次连击 %s" msgid "puño strike" msgstr "泰拳" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "击晕1回合,将所有伤害转换为4倍钝击伤害,至少3级近战,需要造成至少2点钝击伤害" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -100085,11 +101326,6 @@ msgstr " 柄击 %s" msgid "knee strike" msgstr "膝击" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "击倒2回合,仅暴击,至少3级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -100104,11 +101340,6 @@ msgstr " 膝击 %s" msgid "hamstring" msgstr "断筋" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "击倒3回合,仅暴击,至少2级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -100123,12 +101354,6 @@ msgstr " 攻击下段把 %s 击倒了" msgid "Vicious Precision" msgstr "毒牙突刺" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "1.5倍伤害,仅暴击,至少4级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -100143,11 +101368,6 @@ msgstr " 残暴的打击了 %s!" msgid "Silat Brutality" msgstr "苏拉暴击" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "击晕1回合,击退1格,仅暴击,至少3级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -100157,11 +101377,6 @@ msgstr "你一记重击让 %s 踉跄后退" msgid "Dirty Hit" msgstr "偷袭" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "击晕2回合,仅暴击,至少1级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -100204,11 +101419,6 @@ msgstr " 快速地给 %s 一记手刀!" msgid "Viper Bite" msgstr "毒蛇疯咬" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "击晕2回合,1.5倍钝击伤害,持续2轮" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -100223,11 +101433,6 @@ msgstr " 用蛇咬击中了 %s。" msgid "Viper Strike" msgstr "毒蛇猛击" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "3倍钝击伤害,持续2轮" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -100246,11 +101451,6 @@ msgstr "毒蛇翻腾" msgid "Stinger Strike" msgstr "猩红毒针" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "击晕3回合,击退3格,2倍钝击伤害,仅暴击" - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -100265,11 +101465,6 @@ msgstr " 用毒针踢踢飞了 %s" msgid "Pincer Strike" msgstr "巨螯击" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "击晕2回合,1.25倍钝击伤害,至少4级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -100284,11 +101479,6 @@ msgstr " 用巨钳般的前臂猛击了 %s" msgid "Toad's Tongue" msgstr "毒蟾吐舌" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "50%行动点消耗,击倒1回合,至少4级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -100367,11 +101557,6 @@ msgstr " 击打 %s" msgid "Tiger Takedown" msgstr "猛虎扑击" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "击倒1回合,至少4级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -100386,11 +101571,6 @@ msgstr " 一把抓住并按倒 %s" msgid "Leopard Fist" msgstr "豹拳" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "击晕2回合,仅暴击,至少5级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -100419,11 +101599,6 @@ msgstr " 快速挥动拳头重击 %s" msgid "Leopard Foresight" msgstr "豹之预见" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "1.5倍钝击伤害,闪避时反击,至少4级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -100438,11 +101613,6 @@ msgstr " 躲过攻击并且抓住了 %s 的破绽" msgid "Dragon Snatch" msgstr "龙爪手" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "击晕2回合,1.2倍钝击伤害,至少4级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -100457,12 +101627,6 @@ msgstr " 抓住 %s 用膝盖狠狠一撞" msgid "Dragon's Vortex" msgstr "龙卷风" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "击晕2回合,格挡时反击,闪避时反击,至少4级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -100477,12 +101641,6 @@ msgstr " 拨开攻击并让 %s 转起圈来" msgid "Dragon Sweeper" msgstr "神龙摆尾" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "击倒2回合,至少5级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -100497,11 +101655,6 @@ msgstr " 侧身向下,一个扫堂腿踢倒了 %s" msgid "Dragon Strike" msgstr "龙爪" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "击晕1回合,击退1格,仅暴击,至少6级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -100528,11 +101681,6 @@ msgstr " 摆出鹤翼姿势惊吓敌人" msgid "Crane Flap" msgstr "白鹤亮翅" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "被抓住后挣脱,至少3级徒手格斗" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "你摆动手臂挣脱了束缚" @@ -100545,11 +101693,6 @@ msgstr " 摆动手臂挣脱了束缚" msgid "Crane Strike" msgstr "鹤击" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "击晕3回合,仅暴击,至少4级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -100569,20 +101712,10 @@ msgstr "你佯攻 %s" msgid "Power Hit" msgstr "全力一击" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "击晕1回合,击退1格,仅暴击,至少4级徒手格斗" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "回击" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "格挡时反击,至少5级徒手格斗" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -100611,11 +101744,6 @@ msgstr " 绊倒了 %s" msgid "Flowing Water Cut" msgstr "流水斩" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "1.75倍行动点消耗,2倍钝击伤害,2倍劈砍伤害,至少4级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -100630,11 +101758,6 @@ msgstr " 缓慢蓄力,然后对 %s 劈出了一套流水般的斩击 msgid "Red Leaf's Cut" msgstr "红叶斩" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "击倒2回合,至少5级近战" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -100649,12 +101772,6 @@ msgstr "劲秋之风扫红叶, 的旋风扫击到了 %s 下肢,让 msgid "Fire and Stone's Cut" msgstr "火石斩" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "击晕2回合,1.5倍钝击伤害,1.5倍劈砍伤害,仅暴击,至少6级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -100669,12 +101786,6 @@ msgstr " 的强力一击击晕了 %s" msgid "In-One Timing" msgstr "闪现突攻" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "" -"50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "50%行动点消耗,击晕2回合,1.5倍钝击伤害,1.5倍劈砍伤害,至少5级近战" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -100685,11 +101796,6 @@ msgstr "你重击了 %s 的弱点" msgid " strikes %s's weaknesses" msgstr " 重击了 %s 的弱点" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "80%行动点消耗,攻击未命中不消耗行动点,至少2级近战" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "慢击" @@ -103769,7 +104875,7 @@ msgstr "电脑(损坏)" #: lang/json/terrain_from_json.py msgid "containment manual override" -msgstr "反应堆人工干预控制台" +msgstr "隔离区手动超越控制" #: lang/json/terrain_from_json.py msgid "security bolt release" @@ -103847,7 +104953,7 @@ msgstr "精工锤打" msgid "wood sawing" msgstr "木材锯切" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "金属锯切" @@ -103891,7 +104997,7 @@ msgstr "挖掘" msgid "bolt turning" msgstr "板动螺栓" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "精工板动螺栓" @@ -104614,6 +105720,14 @@ msgstr "十字分离测试" msgid "Circle Split" msgstr "圆形分离测试" +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "反应堆测试载具" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "太阳能测试载具" + #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" msgstr "平板卡车" @@ -108010,6 +109124,10 @@ msgstr "你完成了打洞。" msgid "You discover a %s!" msgstr "你发现了一个 %s!" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "你所有的切割工具都不适合屠宰。" + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "你不太信任工具的品质足够要求,但是还是决定继续。" @@ -108077,6 +109195,10 @@ msgstr "这具尸体已经改成四分体了。" msgid "You need to perform field dressing before quartering." msgstr "你需要在改四分体前先清理内脏。" +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "你真的要亵渎人类同胞的遗骸吗?" + #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." msgstr "想到自己所干的恐怖工作,你咬紧了牙齿。" @@ -108232,19 +109354,19 @@ msgstr "你屠宰了 %s。" #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." msgstr "你笨拙的砍开尸体并切掉了过多的身体部位。你想知道自己怎么能弄的这么糟的。" #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." msgstr "你拙劣的双手滑动了一下,损坏了尸体。你希望这不会让一切变得白费。" #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." msgstr "你犯了个错,严重破坏了尸体。也许还有些能用的部分留下来。" @@ -108363,7 +109485,7 @@ msgstr "你完成了挖掘。" #: src/activity_handlers.cpp msgid "The corpse moved before you could finish smashing it!" -msgstr "尸体在你能完全击碎它前动起来了!" +msgstr "尸体在被完全砸碎之前就动起来了!" #: src/activity_handlers.cpp msgid "The corpse is thoroughly pulped." @@ -108405,7 +109527,7 @@ msgid "You have lost the item you were using to start the fire." msgstr "你丢失了用于点火的物品。" #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." +msgid "There is not enough sunlight to start a fire now. You stop trying." msgstr "现在的阳光不足以点火,你停止了尝试。" #: src/activity_handlers.cpp @@ -109220,7 +110342,7 @@ msgstr "数量" msgid "category" msgstr "种类" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp src/effect.cpp msgid "damage" msgstr "伤害" @@ -109445,6 +110567,58 @@ msgstr "全部" msgid "Hang on a bit..." msgstr "请稍等……" +#: src/armor_layers.cpp +msgid "close to your skin" +msgstr "贴身层" + +#: src/armor_layers.cpp +msgid "of normal clothing" +msgstr "普通层" + +#: src/armor_layers.cpp +msgid "on your waist" +msgstr "腰部层" + +#: src/armor_layers.cpp +msgid "of outer clothing" +msgstr "外套层" + +#: src/armor_layers.cpp +msgid "strapped to you" +msgstr "背系层" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgid_plural "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgstr[0] "将多件 %s 装备穿戴于 %s上有累赘度惩罚。" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgid_plural "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgstr[0] "将外层物品穿戴于 %s 的内层衣物之下有累赘度惩罚。" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgid_plural "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgstr[0] "" +"将该物品穿戴于 %s 上对你的 %s " +"有累赘度惩罚。" + #: src/armor_layers.cpp msgid "This is worn next to the skin." msgstr "这件装备属于贴身衣物。" @@ -109615,29 +110789,33 @@ msgstr "真的要重新定义所选装备按键么?" #, c-format msgid "" "Use the arrow- or keypad keys to navigate the left list.\n" -"Press [%s] to select highlighted armor for reordering.\n" -"Use [%s] / [%s] to scroll the right list.\n" -"Press [%s] to assign special inventory letters to clothing.\n" -"Press [%s] to change the side on which item is worn.\n" -"Use [%s] to equip an armor item from the inventory.\n" -"Press [%s] to remove selected armor from oneself.\n" +"[%s] to select highlighted armor for reordering.\n" +"[%s] / [%s] to scroll the right list.\n" +"[%s] to assign special inventory letters to clothing.\n" +"[%s] to change the side on which item is worn.\n" +"[%s] to sort armor into natural layer order.\n" +"[%s] to equip a new item.\n" +"[%s] to equip a new item at the currently selected position.\n" +"[%s] to remove selected armor from oneself.\n" " \n" "[Encumbrance and Warmth] explanation:\n" "The first number is the summed encumbrance from all clothing on that bodypart.\n" -"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers.\n" +"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers or wearing items outside of other items they would normally be work beneath (e.g. a shirt over a backpack).\n" "The sum of these values is the effective encumbrance value your character has for that bodypart." msgstr "" "使用方向键或是九宫格数字键操作左侧列表。\n" "按\"[%s]\"键选择装备以排列顺序。\n" "按\"[%s]\"/\"[%s]\"键来滚动右侧列表。\n" -"按\"[%s]\"键为衣物编配特定的物品代码。\n" -"按\"[%s]\"键把选取的装备穿在身上另一侧。\n" -"按\"[%s]\"键穿戴物品栏中的装备。\n" +"按\"[%s]\"键为所选物品选择新快捷键。\n" +"按\"[%s]\"键将所选物品穿戴在另一侧。\n" +"按\"[%s]\"键按自然顺序重新穿戴装备。\n" +"按\"[%s]\"键装备新物品。\n" +"按\"[%s]\"键在所选部位装备新物品。\n" "按\"[%s]\"键移除所选的装甲。\n" "\n" "[累赘度与保暖度] 的说明:\n" "第一个数字是该身体部位所有衣物累赘度的总和。\n" -"第二个数字是该身体部位所穿衣物件数造成的额外累赘度惩罚。\n" +"第二个数字是该身体部位所穿衣物件数及不按自然顺序穿戴装备造成的额外累赘度惩罚。\n" "两值相加就是该身体部位的累赘值。" #: src/artifact.cpp @@ -110737,6 +111915,12 @@ msgstr "你需要一条连接到车辆的跨接电缆来吸取能量。" msgid "Your plugged-in solar pack is now able to charge your system." msgstr "你的太阳能背包已经和电缆充电器连接并能够为你充能。" +#: src/bionics.cpp +msgid "" +"You need to connect the cable to yourself and the solar pack before your " +"solar pack can charge your system." +msgstr "你需要先使用电缆连接将电缆充电器与太阳能背包连接,然后才能使用太阳能背包充能。" + #: src/bionics.cpp msgid "" "You might plug in your solar pack to the cable charging system, if you " @@ -111101,8 +112285,8 @@ msgstr "你感觉自己的右臂有种微微的刺痛感,随后便丧失了所 #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out" -" when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "你静静地待着,专心注视着天花板上有趣的岩石纹路。全自动医疗仪正把你切开,但你毫无痛觉。幸运的是,你在看到刀片时就昏睡过去了。" #: src/bionics_ui.cpp @@ -111220,6 +112404,55 @@ msgstr "" "你无法激活 %s!\n" "如果要阅读 %s 的说明,按\"!\"键,然后按\"%c\"键。" +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "命中" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "闪避" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "速度" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "移动耗时" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "护甲" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "穿甲" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "目标护甲加成系数" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "力量" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "敏捷" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "智力" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "感知" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr "的" + #: src/calendar.cpp msgid "forever" msgstr "一直" @@ -111248,6 +112481,12 @@ msgid "%d day" msgid_plural "%d days" msgstr[0] "%d 天" +#: src/calendar.cpp +#, c-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d 周" + #: src/calendar.cpp #, c-format msgid "%d season" @@ -111298,6 +112537,14 @@ msgid "%3d day" msgid_plural "%3d days" msgstr[0] "%3d 天" +#. ~ Right-aligned time string. should right-align with other strings with +#. this same comment +#: src/calendar.cpp +#, c-format +msgid "%3d week" +msgid_plural "%3d weeks" +msgstr[0] "%3d 周" + #. ~ Right-aligned time string. should right-align with other strings with #. this same comment #: src/calendar.cpp @@ -111624,22 +112871,6 @@ msgstr " 需要 %1$s 才能用 %3$s 来使用 %2$s。" msgid "Liquid from your inventory has leaked onto the ground." msgstr "你物品栏中的液体漏到了地上。" -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "力量" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "敏捷" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "智力" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "感知" - #: src/character.cpp msgid "Left Arm" msgstr "左臂" @@ -111737,9 +112968,7 @@ msgstr "你不认为使用该物品有任何效果。" msgid "No limb would benefit from it." msgstr "没有可用该物品治疗的肢体。" -#: src/character.cpp src/game.cpp src/game.cpp src/iexamine.cpp -#: src/inventory_ui.cpp src/npctalk_funcs.cpp src/pickup.cpp src/turret.cpp -#: src/vehicle_use.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp src/pickup.cpp msgid "Cancel" msgstr "取消" @@ -111822,7 +113051,7 @@ msgid "" msgstr "所有消耗品的分类放置区域。如果未定义专用食品区,则食品也会被分类至该区域。" #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" msgstr "战利品:易腐食物" @@ -111843,7 +113072,7 @@ msgid "" msgstr "所有饮料的分类放置区域。如果未定义专用易腐饮料区,则易腐饮料也会被分类至该区域。" #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" msgstr "战利品:易腐饮料" @@ -111860,7 +113089,7 @@ msgid "Destination for guns, bows and similar weapons." msgstr "所有枪械弓弩和远程武器的分类放置区域。" #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" msgstr "战利品:弹匣" @@ -111903,7 +113132,7 @@ msgid "" msgstr "所有衣物的分类放置区域。如果未定义专用肮脏衣物区,则肮脏衣物也会被分类至该区域。" #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" msgstr "战利品:肮脏服装" @@ -111952,7 +113181,7 @@ msgid "Destination for Compact Bionics Modules aka CBMs." msgstr "所有生化插件CBM的分类放置区域。" #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" msgstr "战利品:载具部件" @@ -111995,7 +113224,7 @@ msgid "Destination for chemicals." msgstr "所有化学制品的分类放置区域。" #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" msgstr "战利品:零件" @@ -112022,7 +113251,7 @@ msgid "" msgstr "所有装备的分类放置区域。如果未定义专用肮脏装备区,则肮脏装备也会被分类至该区域。" #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" msgstr "战利品:肮脏装备" @@ -112047,7 +113276,7 @@ msgid "Items inside of this zone are ignored by \"sort out loot\" zone-action." msgstr "使用\"整理战利品\"指令将不会整理该区域内的物品。" #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" msgstr "农场:耕作区" @@ -112267,7 +113496,7 @@ msgstr "一声警报!" #: src/computer.cpp msgid "Containment shields opened. Press any key..." -msgstr "安全保护打开。请按任意键……" +msgstr "隔离区防护已解锁。请按任意键……" #: src/computer.cpp msgctxt "memorial_male" @@ -112726,14 +113955,16 @@ msgid "" " \n" msgstr "" "\n" -" 标题:安全提醒\n" +" 标题:安全须知\n" " 收件人:SRCF全体员工\n" -" 发件人:康斯坦丁·德沃拉克,核安全部副部长\n" +" 发件人:康斯坦丁 德沃拉克,核安全部国务卿\n" " \n" -" 我想提醒各位员工:不要开启或检查超过你安全级别的集装箱。\n" -" 如果你有有关安全协议或者运输流程方面的问题,你可以联系你的\n" -" SRCF管理员或者现场的军官。如果有疑问,设想所有容器均为\n" -" A级生物威胁并含高毒性。保持全面警惕!\n" +" 我想再次提醒各位员工:不要开启或检查超过\n" +" 你安全级别的容器。如果你对当前执行的安全制\n" +" 度或者运输流程方面有任何问题,可以联系你在\n" +" SRCF内的上级主管或者驻地现场军官。如果无法\n" +" 确定安全等级,设想所有容器均为A级生物危害并\n" +" 含高毒性。保持全面警惕!\n" " \n" #: src/computer.cpp @@ -112753,14 +113984,16 @@ msgid "" " " msgstr "" "\n" -" 标题:安全提示\n" +" 标题:安全须知\n" " 收件人:SRCF全体员工\n" -" 发件人:康斯坦丁·德沃拉克,核安全部副部长\n" +" 发件人:康斯坦丁 德沃拉克,核安全部国务卿\n" "\n" -" 从今天起,医疗垃圾不得存放在任何放射性物质的附近。根据这项新\n" -" 规定,所有的集装箱将重新安排堆放。如果您的设备已经同这些物质\n" -" 一起装箱,你在任何时候都可以和值班的武装警卫一起处理它们。发\n" -" 现任何异常现象要在第一时间汇报给你的SRCF管理员。" +" 即日起,医疗废物不得存放在任何放射性物\n" +" 质的附近。所有容器都要按照新规定重新安排\n" +" 存放位置。如果你所在的设施目前已将这两类\n" +" 物质存放在一起,那你值班时需要有武装警卫\n" +" 陪同。发现任何异常现象要在第一时间汇报给\n" +" 你所在SRCF的上级主管。" #: src/computer.cpp msgid "" @@ -112776,13 +114009,14 @@ msgid "" " " msgstr "" "\n" -" 标题:安全提示\n" +" 标题:安全须知\n" " 收件人:SRCF全体员工\n" -" 发件人:康斯坦丁·德沃拉克,核安全部副部长\n" +" 发件人:康斯坦丁 德沃拉克,核安全部国务卿\n" "\n" -" 工作人员的健康和安全是我们最关注的!因此,我们正在建立对所有\n" -" SRCF员工每周进行健康检查的制度。发现自己有任何异常症状或身体\n" -" 上的变化一定要第一时间汇报给你的SRCF管理员。" +" 工作人员的健康和安全是我们最关注的问题!\n" +" 因此,我们将对SRCF全体员工进行每周体检。\n" +" 发现自己有任何异常症状或身体变化一定要第一\n" +" 时间汇报给你所在SRCF的上级主管。" #: src/computer.cpp msgid "" @@ -112799,11 +114033,13 @@ msgid "" msgstr "" "\n" " 标题:安全须知\n" -" 收件人:全体SRCF成员\n" -" 发件人:康斯坦丁 德沃夏克,核安全副部长\n" +" 收件人:SRCF全体员工\n" +" 发件人:康斯坦丁 德沃拉克,核安全国务卿\n" "\n" -" 所有受损设备一律封存,解封时间另行通知。任何目击或者直接接触那些\n" -" 生物的人须向总部汇报,并接受医疗及安全评估。" +" 所有被污染的设施将永久处于封存状态,\n" +" 解封时间另行通知。任何目击或者直接接触\n" +" 过该生物的员工须立即向总部汇报,并接受\n" +" 健康评估及安全汇报。" #: src/computer.cpp msgid "" @@ -112830,22 +114066,25 @@ msgid "" " and potentially Treason.\n" msgstr "" "\n" -" 标题:美国国家环境保护局(EPA):潜在安全漏洞完整报告 3873643\n" -"收件人:诸位SRCF同僚\n" -"发件人:罗伯特 谢恩,美国国家环境保护局主任\n" +" 标题:EPA:即刻上报所有潜在安全漏洞 3873643\n" +" 收件人:SRCF全体员工\n" +" 发件人:罗伯特 谢恩,美国国家环境保护局主任\n" "\n" -"所有有害物质倾倒和封存前必须提交三份样本(经过专业过滤系统处理)至以下地址:\n" +" 所有有害物质排放场和放射地埋点即刻起必\n" +" 须从每个正在工作的过滤系统中采集并提交三\n" +" 份不同样本寄送至以下地址:\n" "\n" -"美国疾病防疫中心实验室\n" -"10号楼\n" -"企业广场大道\n" -"亚特兰大,GA 30329\n" +" 美国疾病防疫中心实验室\n" +" 10号楼\n" +" 企业广场大道\n" +" 亚特兰大,乔治亚州 30329\n" "\n" -"美国国家环境保护局(EPA)8号区域实验室\n" -"16194 W。45号\n" -"金动大道,科罗拉多州 80403\n" +" 美国国家环境保护局8号区域实验室\n" +" 16194 W. 45号大街\n" +" 戈尔登,科罗拉多州 80403\n" "\n" -"请务必提供准确样本,任何试图敷衍了事的人都会被指控犯有贪污及叛国罪。\n" +" 请务必提供准确样本,任何试图敷衍了事\n" +" 的人将会面临联邦雇员贪污及叛国罪的指控。\n" #: src/computer.cpp msgid "" @@ -112853,8 +114092,8 @@ msgid "" " Robert Shane\n" " \n" msgstr "" -"美国国家环境保护局(EPA)局长,\n" -" 罗伯特·肖恩\n" +" 美国国家环境保护局主任,\n" +" 罗伯特 谢恩\n" " \n" #: src/computer.cpp @@ -112881,23 +114120,27 @@ msgid "" " means to keep EPA agents from visiting the SRCFs, using military\n" " secrecy, emergency powers, and inter-departmental gag orders to\n" msgstr "" -" 主题:SRCF:内部备忘录,美国环保署[2918024]\n" -" To:所有SRCF管理人员\n" -" From:Constantine Dvorak,核安全国务卿\n" +" 主题:SRCF:内部备忘录,关于EPA [2918024]\n" +" 收件人:SRCF全体管理人员\n" +" 发件人:康斯坦丁 德沃拉克,核安全国务卿\n" "\n" -" Grimes总监已经发布了一个新的指控,将由国会的一个调查委员会进行调查。\n" -" 下面是他发给我的一条信息。\n" +" \"Grimes主任\"又针对我们发表了一系列新指控,\n" +" 会有一个来自国会的调查委员会对这些指控进行\n" +" 调查。下面是他发给我的信息。\n" " \n" " --------------------------------------------------------------\n" " 主题:国会调查\n" -" To:Constantine Dvorak,核安全国务卿\n" -" From:Robert Shane,环保局主管\n" +" 收件人:康斯坦丁 德沃拉克,核安全国务卿\n" +" 发件人:罗伯特 谢恩,美国国家环境保护局主任\n" " \n" -" 从成立之初,美国环保局一直反对安全限制封闭设施(SRCF)项目。我们被\n" -" 吓坏了,这些设施将建造在如此接近人口稠密的地区。如果我们想自由地检查\n" -" 和监测这个石棺,只有同意签署这个项目。但是,自能源部使出一切方法,使\n" -" 用军事保密、紧急权利、以及跨部门的封口命令,让环保署的代理人访问\n" -" SRCF以来,这些都没有发生。\n" +" 从成立之初,美国环保局一直反对安全\n" +" 限制隔离设施(SRCF)项目。我们震惊于该\n" +" 设施被允许建造在如此接近人口稠密的地区。\n" +" 只有在让我们自由检查并监督各处放射地埋点\n" +" 的前提下,我们才会同意签署这个项目。但是\n" +" 自项目开始以来,能源部想尽了一切方法,采\n" +" 用诸如军事机密、紧急权利、以及跨部门的封\n" +" 口命令的各种手段,阻止EPA工作人员访问SRCF。\n" #: src/computer.cpp msgid "" @@ -112919,14 +114162,23 @@ msgid "" " Robert Shane\n" " \n" msgstr "" -" 一个繁琐的灌木丛围绕着这个项目。\n" -" \n" -" 虽然我们的代理商没有被允许在里面,但我们在附近社区的大气测试中检测到高浓度的毒素和辐射,我们已经在地下水里发现了几十个有潜在危险的未知化合物。现在,我们有确凿的证据证明SRCF威胁到公众安全。我们利用这些数据来证明并请求一个完整的国会调查。他们应该能够强行打开你的秘密宝盒,全世界将看到你一直隐藏的东西。\n" +"这个项目被各式名目繁复的红头文件重重包围着。\n" " \n" -" 如果在疫情中发现任何你插手的痕迹,我诅咒你烂在地狱里。\n" +" 虽然我们的工作人员无法进入这些设施,但\n" +" 我们在附近社区的大气测试中检测到高浓度的\n" +" 毒素和辐射,我们已经在地下水里发现了数十\n" +" 种有潜在危险的未知化合物成分。现在,我们\n" +" 有确凿的证据证明这些SRCF设施对公众安全造\n" +" 成了严重威胁。我们将会把这些数据提供给众\n" +" 议员并请求进行一次正式的国会调查。他们会\n" +" 强行打开你的秘密保险箱,到时候全世界都会\n" +" 看到你一直以来所要隐藏的一切。\n" +"\n" +" 如果这次疫情爆发有你插手的痕迹,我诅咒你永\n" +" 远烂在地狱里。\n" " \n" -" 环保局主任,\n" -" Robert Shane\n" +" 美国国家环境保护局主任\n" +" 罗伯特 谢恩\n" " \n" #: src/computer.cpp @@ -112952,28 +114204,24 @@ msgid "" " Ellen Grimes\n" " \n" msgstr "" -" 主题:疾控中心:内部备忘录,编号[2918115]\\n\n" -" 收件人:SCRF全体员工\\n\n" -" 发件人:艾伦格里姆斯,美国疾控中心主任\\n\n" -"\\n\n" -" 许多地方,包括你位置已经发现我们现在称之\\n\n" -" 为[ redracted ]的污染。\\n\n" -" 现在你为下一步命令做好充足的准备。我们现\\n\n" -" 在正在等待总统为这个国家的危机行动做最后\\n\n" -" 决定。你会在进行过程中失败—\\n\n" -" 你的任务将是到上述那些地点\\n\n" -" 并利用在4233文件中提出的\\n\n" -" 《如何安全用C-4操纵石棺》守则密封石棺或\\n\n" -" 解除周围陷阱\\n\n" -" 最重要的是在命令送达的同时所有设备必须立\\n\n" -" 即封存。\\n\n" -" 我们已经通知国家安全局对所有与本次全国性\\n\n" -" 事故有关的潜在恐怖主义分子进行拘捕。\\n\n" -"\\n\n" -" 美国疾病预防控制中心主任。\\n\n" -" 艾伦格里姆斯\\n\n" -" \\n\n" -" \n" +" 主题:疾控中心:内部备忘录,原地待命 [2918115]\n" +" 收件人:SCRF全体员工\n" +" 发件人:艾伦 格里姆斯,美国疾控中心主任\n" +" 你所在的设施,与其他许多设施一样,已\n" +" 经发现被我们现在称之为 [被涂黑] 的污染物\n" +" 所污染。现在你需要立刻原地待命,等待后\n" +" 续指示。我们正在等待总统针对此次国家危\n" +" 机选择合适的行动方案。你需要按照故障防\n" +" 护操作流程操作并根据第4423号文件所描述\n" +" 在放射性埋点各处安放好C-4炸药。我们将提\n" +" 供进一步是封锁放射性埋点或移除炸药的指\n" +" 令。最重要的是,一旦指令下达,放射性埋\n" +" 点需要在第一时间内封锁完成。我们已经接\n" +" 到国土安全部的通告,最近已有不少与近期\n" +" 发生国家危机相关联的潜在恐怖分子嫌犯被\n" +" 逮捕。\n" +" 美国疾病预防控制中心主任,\n" +" 艾伦 格里姆斯\n" #: src/computer.cpp msgid "" @@ -112996,19 +114244,22 @@ msgid "" " Commander of the 10th Mountain Division\n" " \n" msgstr "" -" 主题:美国陆军:SRCF密封件[987167]\n" -" 收件人:SRCF全体人员\n" +" 主题:美国陆军:封锁SRCF设施[987167]\n" +" 收件人:SRCF全体员工\n" " 发件人:科尼利厄斯,美国陆军少将\n" " \n" -" 给所有文职人员的普通警告:第10山地师已经被分配了监督封锁SRCF设施\n" -" 的任务。根据直接命令,所有非必需的工作人员必须尽快撤离以防止可能的感\n" -" 染。微型战术核武器将部署在下层的通道内,以确保危险有害物质不可能再次\n" -" 复苏。陆军工程兵部队随后将推平这些混凝土废墟,以使我们可以重新部署第\n" -" 10山地师进入大波士顿地区。\n" +" 给全体文职人员的一般警告:第10山地师\n" +" 已经收到了监督封锁SRCF设施的任务。依照命\n" +" 令原文,所有非必需员工必须尽早撤离以免受\n" +" 可能的感染。低当量战术核武器炸药将部署至\n" +" 设施底部通道内,以确保危险有害物质无法被\n" +" 回收。陆军工程兵部队随后将在废墟之上浇灌\n" +" 混凝土,使得第10山地师可以被重新部署至大\n" +" 波士顿地区。\n" " \n" -" 科尼利厄斯\n" -" 美国陆军少将\n" -" 第10山地师指挥官\n" +" 科尼利厄斯\n" +" 美国陆军少将\n" +" 第10山地师指挥官\n" " \n" #: src/computer.cpp @@ -113228,7 +114479,7 @@ msgstr "步骤 #" msgid "Result: " msgstr "结果:" -#: src/construction.cpp src/crafting_gui.cpp src/recipe.cpp +#: src/construction.cpp src/crafting_gui.cpp msgid "N/A" msgstr "无" @@ -113337,13 +114588,17 @@ msgstr "你钻出了一条通道,通往地地表。" msgid "After boarding up the window the curtains and curtain rod are left." msgstr "在把窗户封死后,窗帘和窗帘杆剩了下来。" +#: src/construction.cpp +msgid "You gather some clay." +msgstr "你收获了一些粘土。" + #: src/construction.cpp msgid "You gather some sand." msgstr "你收获了一些黄沙。" #: src/construction.cpp -msgid "You gather some clay." -msgstr "你收获了一些粘土。" +msgid "You gather some materials." +msgstr "你收获了一些材料。" #: src/construction.cpp msgid "You cannot build there!" @@ -113810,6 +115065,16 @@ msgstr "%s(%d/%d 在身上/附近)" msgid "Use which component?" msgstr "使用哪种材料?" +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "%s(%d/%d 单位在附近)" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "%s(%d/%d 单位在身上)" + #: src/crafting.cpp msgid "Use which tool?" msgstr "用哪个工具?" @@ -113968,37 +115233,37 @@ msgstr "写于:%s" #: src/crafting_gui.cpp #, c-format -msgid "Skills used: %s" -msgstr "主要技能:%s" +msgid "Primary skill used: %s" +msgstr "主要技能:%s" #: src/crafting_gui.cpp #, c-format -msgid "Required skills: %s" -msgstr "次要技能:%s" +msgid "Difficulty: %d" +msgstr "难度等级:%d" #: src/crafting_gui.cpp #, c-format -msgid "Difficulty: %d" -msgstr "难度等级:%d" +msgid "Your skill level: %d" +msgstr "当前等级:%d" #: src/crafting_gui.cpp -msgid "Your skill level: N/A" -msgstr "当前等级:无" +msgid "Your skill level: N/A" +msgstr "当前等级:无" #: src/crafting_gui.cpp #, c-format -msgid "Your skill level: %d" -msgstr "当前等级:%d" +msgid "Other skills used: %s" +msgstr "次要技能:%s" #: src/crafting_gui.cpp #, c-format -msgid "Time to complete: %s" -msgstr "耗时:%s" +msgid "Time to complete: %s" +msgstr "完成耗时:%s" #: src/crafting_gui.cpp #, c-format -msgid "Dark craftable? %s" -msgstr "暗处制造:%s" +msgid "Dark craftable? %s" +msgstr "暗处制造:%s" #: src/crafting_gui.cpp src/defense.cpp msgid "Easy" @@ -114024,49 +115289,82 @@ msgstr "你做不到!" msgid "Nothing selected!" msgstr "尚未选择!" -#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp -msgid "Search:" -msgstr "搜索:" +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "制造成品功能" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "制造成品描述(较慢)" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "远距攻击" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "制造所需材料" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "制造所需主要技能" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "制造所需任何技能" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "制造所需功能" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "制造所需工具" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "配方是否隐藏" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "可" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" +msgstr "配方是否记住" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" -msgstr "" -"按需求的特殊前缀查询:\n" -" [t] 查询工具\n" -" [c] 查询部件\n" -" [q] 查询物品特性\n" -" [s] 查询技能\n" -"按结果的特殊前缀查询:\n" -" [Q] 查询物品特性\n" -"其他:\n" -" [h] 查询隐藏/显示配方\n" -" [m] 查询已记忆/未记忆配方\n" -"例如:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" +"The default is to search result names. Some single-character prefixes can be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" +msgstr "" +"默认搜索制造成品名称。可添加字符及冒号(:)前缀按特定条件搜索。\n" +"\n" +"示例:\n" + +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "衬衫" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" +msgstr " %s%.*s %s\n" + +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "制造成品名称" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" +msgstr " %c:%s%.*s %s\n" + +#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp +msgid "Search:" +msgstr "搜索:" #: src/crafting_gui.cpp msgid "RESULTS" @@ -114098,10 +115396,6 @@ msgstr "太难过" msgid "slow %d%%" msgstr "减慢 %d%%" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "可" - #: src/crafting_gui.cpp msgid "Searched" msgstr "搜索" @@ -114246,6 +115540,11 @@ msgstr "友好" msgid "BUG: Behavior unnamed. (Creature::get_attitude_ui_data)" msgstr "BUG:未命名的行为。" +#: src/debug.cpp +#, c-format +msgid "See %s for a full stack backtrace" +msgstr "完整堆栈回溯已保存至 %s" + #: src/debug.cpp msgid "An error has occurred! Written below is the error report:" msgstr "游戏出BUG了!错误信息如下:" @@ -115473,7 +116772,7 @@ msgstr "你必须选择一块距离营地 %d 块内的区块" msgid "You must construct expansions in fields." msgstr "你只能在旷野上建设扩展区。" -#: src/editmap.cpp src/mission_companion.cpp +#: src/editmap.cpp src/faction_camp.cpp msgid "" "Engine cannot support merging vehicles from two overmaps, please remove them" " from the OM tile." @@ -117477,484 +118776,2210 @@ msgstr "食物供给: %s" msgid "Combat Ability: %s" msgstr "战斗能力: %s" -#: src/field.cpp -msgid "blood splatter" -msgstr "飞溅血迹" +#: src/faction_camp.cpp +msgid " [DONE]\n" +msgstr "[已完成]\n" -#: src/field.cpp -msgid "blood stain" -msgstr "血渍" +#: src/faction_camp.cpp +msgid " left]\n" +msgstr "剩余]\n" -#: src/field.cpp -msgid "puddle of blood" -msgstr "血泊" +#: src/faction_camp.cpp +msgid "Upgrade Camp" +msgstr "升级营地" -#: src/field.cpp -msgid "bile splatter" -msgstr "飞溅胆汁" +#: src/faction_camp.cpp +msgid "Working to expand your camp!\n" +msgstr "正在升级营地!\n" -#: src/field.cpp -msgid "bile stain" -msgstr "胆汁渍" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?" +msgstr "" +"\n" +" \n" +"确定召回任务执行者吗?" -#: src/field.cpp -msgid "puddle of bile" -msgstr "胆汁池" +#: src/faction_camp.cpp +msgid "Recover Ally from Upgrading" +msgstr "召回同伴(升级营地)" -#: src/field.cpp -msgid "bloody meat chunks" -msgstr "血肉块" +#: src/faction_camp.cpp +msgid "Busy crafting!\n" +msgstr "正在制造物品!\n" -#: src/field.cpp -msgid "heap of gore" -msgstr "血肉成堆" +#: src/faction_camp.cpp +msgid " (Finish) Crafting" +msgstr "(完成)制造" -#: src/field.cpp -msgid "scraps of flesh" -msgstr "肉渣" +#: src/faction_camp.cpp +msgid "Gather Materials" +msgstr "收集材料" -#: src/field.cpp -msgid "broken vegetation tangle" -msgstr "破碎的植物" +#: src/faction_camp.cpp +msgid "Searching for materials to upgrade the camp.\n" +msgstr "正在收集升级营地的材料。\n" -#: src/field.cpp -msgid "shattered branches and leaves" -msgstr "破碎的枝叶" +#: src/faction_camp.cpp +msgid "Recover Ally from Gathering" +msgstr "召回同伴(收集材料)" -#: src/field.cpp -msgid "shredded leaves and twigs" -msgstr "细碎枝叶" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" +" \n" +"Effects:\n" +"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" +" \n" +"Must have enjoyability >= -6\n" +"Perishable food liquidated at penalty depending on upgrades and rot time:\n" +"> Rotten: 0%%\n" +"> Rots in < 2 days: 60%%\n" +"> Rots in < 5 days: 80%%\n" +" \n" +"Total faction food stock: %d kcal or %d day's rations" +msgstr "" +"说明:\n" +"向你营地里的同伴分发食物并装进储藏室。将你想要分发的食物放在营地帐篷门的正对面,营地主管与墙壁中间的地上。\n" +"\n" +"效果:\n" +"> 增加你派系的食物供给,食物供给作为支付你同伴各项劳动所花费时间的货币\n" +"\n" +"所分发的食物的享受值需要至少大于 -6\n" +"容易腐烂的食物按照腐烂时间换算:\n" +"> 已腐烂:0%%\n" +"> 两天内腐烂:60%%\n" +"> 五天内腐烂:80%%\n" +"\n" +"当前派系食物供给: %d 千卡或 %d 天口粮" -#: src/field.cpp -msgid "cobwebs" -msgstr "蛛丝" +#: src/faction_camp.cpp +msgid "Distribute Food" +msgstr "分发食物" -#: src/field.cpp -msgid "thick webs" -msgstr "密布蛛网" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" +" \n" +"Effects:\n" +"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" +"> Items sitting on any type of furniture will not be moved.\n" +"> Items that are not listed in one of the categories are defaulted to the tools group." +msgstr "" +"说明:\n" +"重置 [干杂活] 任务中所搬运整理的各类物品的储存点。\n" +"\n" +"效果:\n" +"> 可指定类型:食物,待分发食物,种子,武器,装备,生化插件,各类工具,木材,垃圾,书籍,药品,弹药。\n" +"> 任何存放在家具中物品不会被搬运整理。\n" +"> 不在上述类型之内的物品默认搬运至工具储存点。" -#: src/field.cpp -msgid "webs" -msgstr "蜘蛛网" +#: src/faction_camp.cpp +msgid "Reset Sort Points" +msgstr "重置物品储存点" -#: src/field.cpp -msgid "puddle of slime" -msgstr "粘液池" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to gather light brush and heavy sticks.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +"> heavy sticks\n" +"> withered plants\n" +"> splintered wood\n" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" +"说明:\n" +"选择一名同伴去收集灌木和重木棍。\n" +"\n" +"技能:生存\n" +"需求等级:N/A\n" +"可能的收集物:\n" +"> 重木棍\n" +"> 枯萎植物\n" +"> 碎木\n" +"\n" +"风险:极低\n" +"耗时:3小时/次,可重复\n" +"位置:%d/3\n" -#: src/field.cpp -msgid "slime stain" -msgstr "粘液渍" +#: src/faction_camp.cpp +msgid "Collect Firewood" +msgstr "收集柴火" -#: src/field.cpp -msgid "slime trail" -msgstr "粘液痕" +#: src/faction_camp.cpp +msgid "Searching for firewood.\n" +msgstr "正在收集木柴。\n" -#: src/field.cpp -msgid "acid splatter" -msgstr "飞溅酸液" +#: src/faction_camp.cpp +msgid "Recover Firewood Gatherers" +msgstr "召回同伴(收集柴火)" -#: src/field.cpp -msgid "acid streak" -msgstr "残余酸液" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to do low level chores and sort supplies.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" +"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours\n" +"Positions: %d/1\n" +msgstr "" +"说明:\n" +"选择一名同伴在营地内做低级杂务和搬运整理物品。\n" +"\n" +"技能:制造\n" +"需求等级:无\n" +"效果:\n" +"> 留在户外地上的材料和物品会被分类后放入帐篷外的四个板条箱中。\n" +"默认分类,自上而下:装备,食物,书籍/生化插件,工具。木材将会堆放在南面,垃圾将会堆放在北面。\n" +"\n" +"风险:无\n" +"耗时:3小时\n" +"位置:%d/1\n" -#: src/field.cpp -msgid "pool of acid" -msgstr "酸液池" +#: src/faction_camp.cpp +msgid "Menial Labor" +msgstr "干杂活" -#: src/field.cpp -msgid "glob of sap" -msgstr "汁液滴" +#: src/faction_camp.cpp +msgid "Performing menial labor...\n" +msgstr "正在干杂活……\n" -#: src/field.cpp -msgid "pool of sap" -msgstr "汁液泊" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?\n" +msgstr "" +"\n" +" \n" +"确定召回任务执行者吗?\n" -#: src/field.cpp -msgid "sap splatter" -msgstr "飞溅汁液" +#: src/faction_camp.cpp +msgid "Recover Menial Laborer" +msgstr "召回同伴(干杂活)" -#: src/field.cpp -msgid "sludge trail" -msgstr "污泥痕" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours \n" +"Positions: %d/1\n" +msgstr "" +"说明:\n" +"你的营地规模已经足够支持建设一块新的扩展区。扩展区将为你解锁许多新的任务,但会花费更多资源并消耗更多时间。谨慎选择你的扩展区,每个营地最多支持建设8块扩展区。\n" +"\n" +"技能:制造\n" +"需求等级:无\n" +"效果:\n" +"> 选择一块可用的扩展区区块。从农场或者伐木场开始始终都是一个可靠的选择,食物用来支付同伴的任务花费而木材将是你主要的建筑材料。\n" +"\n" +"风险:无\n" +"耗时:3小时\n" +"位置:%d/1\n" -#: src/field.cpp -msgid "thick sludge trail" -msgstr "厚污泥痕" +#: src/faction_camp.cpp +msgid "Expand Base" +msgstr "扩展营地" -#: src/field.cpp -msgid "thin sludge trail" -msgstr "薄污泥痕" +#: src/faction_camp.cpp +msgid "Surveying for expansion...\n" +msgstr "正在为扩展区选址……\n" -#: src/field.cpp -msgid "fire" -msgstr "火焰" +#: src/faction_camp.cpp +msgid "Recover Surveyor" +msgstr "召回同伴(勘测选址)" -#: src/field.cpp -msgid "raging fire" -msgstr "烈焰" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to a nearby forest to cut logs.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: 1 \n" +"Effects:\n" +"> 50%% of trees/trunks at the forest position will be cut down.\n" +"> 100%% of total material will be brought back.\n" +"> Repeatable with diminishing returns.\n" +" \n" +"Risk: None\n" +"Time: 6 Hour Base + Travel Time + Cutting Time\n" +"Positions: %d/1\n" +msgstr "" +"说明:\n" +"选择一名同伴去附近森林中伐木。\n" +"\n" +"技能:制造\n" +"需求等级:1\n" +"效果:\n" +"> 森林区块内 50%% 的树和树干会被砍倒。\n" +"> 所砍倒树木 100%% 的材料会被带回营地。\n" +"> 可重复,但收益会逐渐减少。\n" +"\n" +"风险:无\n" +"耗时:基础6小时 + 往返时间 + 伐木时间\n" +"位置:%d/1\n" -#: src/field.cpp -msgid "small fire" -msgstr "火苗" +#: src/faction_camp.cpp +msgid "Cut Logs" +msgstr "伐木" -#: src/field.cpp -msgid "legacy rubble" -msgstr "瓦砾遗迹" +#: src/faction_camp.cpp +msgid "Cutting logs in the woods...\n" +msgstr "正在伐木地点伐木……\n" -#: src/field.cpp -msgid "smoke" -msgstr "烟" +#: src/faction_camp.cpp +msgid "Recover Log Cutter" +msgstr "召回同伴(伐木)" -#: src/field.cpp -msgid "thick smoke" -msgstr "浓烟" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Good for setting up resupply or contingency points.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward.\n" +" \n" +"Risk: Medium\n" +"Time: 6 Hour Construction + Travel\n" +"Positions: %d/1\n" +msgstr "" +"说明:\n" +"选择一名同伴去地图上某处建造一个简易遮蔽处并存放进装备。\n" +"\n" +"技能:生存\n" +"需求等级:3\n" +"效果:\n" +"> 可用于设置再补给点和应急点。\n" +"> 所存放的装备无人看管可能被盗。\n" +"> 所存放装备的总重量会影响旅行时间。\n" +"\n" +"风险:中\n" +"耗时:6小时建设 + 往返时间\n" +"位置:%d/1\n" -#: src/field.cpp -msgid "thin smoke" -msgstr "轻烟" +#: src/faction_camp.cpp +msgid "Setup Hide Site" +msgstr "设置藏匿点" -#: src/field.cpp -msgid "hazy cloud" -msgstr "氤氲毒气" +#: src/faction_camp.cpp +msgid "Setting up a hide site...\n" +msgstr "正在设置藏匿点……\n" -#: src/field.cpp -msgid "thick toxic gas" -msgstr "浓厚毒气" +#: src/faction_camp.cpp +msgid "Recover Hide Setup" +msgstr "召回同伴(设置藏匿点)" -#: src/field.cpp -msgid "toxic gas" -msgstr "毒气" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Push gear out to a hide site or bring gear back from one.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 1\n" +"Effects:\n" +"> Good for returning equipment you left in the hide site shelter.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward or back.\n" +" \n" +"Risk: Medium\n" +"Time: 1 Hour Base + Travel\n" +"Positions: %d/1\n" +msgstr "" +"说明:\n" +"选择一名同伴去一处藏匿点中存放或取回装备。\n" +"\n" +"技能:生存\n" +"需求等级:1\n" +"效果:\n" +"> 可用于取回你留在在藏匿点中的装备。\n" +"> 所存放的装备无人看管可能被盗。\n" +"> 所存放装备的总重量会影响旅行时间。\n" +"\n" +"风险:中\n" +"耗时:基础1小时 + 往返时间\n" +"位置:%d/1\n" -#: src/field.cpp -msgid "tear gas" -msgstr "催泪瓦斯" +#: src/faction_camp.cpp +msgid "Relay Hide Site" +msgstr "补给转运藏匿点" -#: src/field.cpp -msgid "thick tear gas" -msgstr "浓厚催泪瓦斯" +#: src/faction_camp.cpp +msgid "Transfering gear to a hide site...\n" +msgstr "运送装备至藏匿点……\n" -#: src/field.cpp -msgid "radioactive gas" -msgstr "放射性烟雾" +#: src/faction_camp.cpp +msgid "Recover Hide Relay" +msgstr "召回同伴(补给转运藏匿点)" -#: src/field.cpp -msgid "thick radioactive gas" -msgstr "放射性浓烟" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to edible plans.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Foraging Possibilities:\n" +"> wild vegetables\n" +"> fruits and nuts dependening on season\n" +"May produce less food than consumed!\n" +"Risk: Very Low\n" +"Time: 4 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" +"说明:\n" +"选择一名同伴去搜寻野果。\n" +"\n" +"技能:生存\n" +"需求等级:N/A\n" +"可能的收集物:\n" +"> 野菜\n" +"> 根据季节产出各种水果坚果\n" +"> 产出可能低于任务所消耗的食物!\n" +"\n" +"风险:极低\n" +"耗时:4小时/次,可重复\n" +"位置:%d/3\n" -#: src/field.cpp -msgid "gas vent" -msgstr "排气孔" +#: src/faction_camp.cpp +msgid "Forage for plants" +msgstr "搜寻植物" -#: src/field.cpp -msgid "electric cloud" -msgstr "电弧云团" +#: src/faction_camp.cpp +msgid "Foraging for edible plants.\n" +msgstr "搜寻各种可食用的植物。\n" -#: src/field.cpp -msgid "electric crackle" -msgstr "电流四射" +#: src/faction_camp.cpp +msgid "Recover Foragers" +msgstr "召回同伴(搜寻植物)" -#: src/field.cpp -msgid "sparks" -msgstr "电花" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to set traps for small game.\n" +" \n" +"Skill used: trapping\n" +"Difficulty: N/A \n" +"Trappinng Possibilities:\n" +"> small and tiny animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Low\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/2\n" +msgstr "" +"说明:\n" +"选择一名同伴去设置小型猎物陷阱。\n" +"\n" +"技能:陷阱\n" +"需求等级:N/A\n" +"可能的收获:\n" +"> 体型为较小/细小的动物尸体\n" +"> 产出可能低于任务所消耗的食物!\n" +"\n" +"风险:低\n" +"耗时:6小时/次,可重复\n" +"位置:%d/2\n" -#: src/field.cpp -msgid "odd ripple" -msgstr "奇异涟漪" +#: src/faction_camp.cpp +msgid "Trap Small Game" +msgstr "设置陷阱" -#: src/field.cpp -msgid "swirling air" -msgstr "螺旋气流" +#: src/faction_camp.cpp +msgid "Trapping Small Game.\n" +msgstr "设置陷阱捕猎小型动物。\n" -#: src/field.cpp -msgid "tear in reality" -msgstr "时空裂痕" +#: src/faction_camp.cpp +msgid "Recover Trappers" +msgstr "召回同伴(设置陷阱)" -#: src/field.cpp -msgid "faint plasma" -msgstr "微弱的等离子" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to hunt large animals.\n" +" \n" +"Skill used: marksmanship\n" +"Difficulty: N/A \n" +"Hunting Possibilities:\n" +"> small, medium, or large animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Medium\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/1\n" +msgstr "" +"说明:\n" +"选择一名同伴去狩猎大型动物。\n" +"\n" +"技能:枪法\n" +"需求等级:N/A\n" +"可能的收获:\n" +"> 体型为较小/中等/较大的动物尸体\n" +"> 产出可能低于任务所消耗的食物!\n" +"\n" +"风险:中\n" +"耗时:6小时/次,可重复\n" +"位置:%d/1\n" -#: src/field.cpp -msgid "glaring plasma" -msgstr "耀眼的等离子" +#: src/faction_camp.cpp +msgid "Hunt Large Animals" +msgstr "狩猎动物" -#: src/field.cpp -msgid "glowing plasma" -msgstr "发光的等离子" +#: src/faction_camp.cpp +msgid "Hunting large animals.\n" +msgstr "狩猎大型动物。\n" -#: src/field.cpp -msgid "beam of light" -msgstr "光束" +#: src/faction_camp.cpp +msgid "Recover Hunter" +msgstr "召回同伴(狩猎动物)" -#: src/field.cpp -msgid "faint glimmer" -msgstr "微光" +#: src/faction_camp.cpp +msgid "Construct Map Fortifications" +msgstr "建造地图防御工事" -#: src/field.cpp -msgid "intense beam of light" -msgstr "密集光束" +#: src/faction_camp.cpp +msgid "Construct Spiked Trench" +msgstr "建造尖刺堑壕" -#: src/field.cpp -msgid "spotlight" -msgstr "醒目" +#: src/faction_camp.cpp +msgid "Constructing fortifications...\n" +msgstr "正在建设防御工事……\n" -#: src/field.cpp -msgid "dazzling" -msgstr "耀眼" +#: src/faction_camp.cpp +msgid "Finish Map Fortifications" +msgstr "完成地图防御工事" -#: src/field.cpp -msgid "plant sap splatter" -msgstr "飞溅树液" +#: src/faction_camp.cpp +msgid "Recruit Companions" +msgstr "招募新同伴" -#: src/field.cpp -msgid "plant sap stain" -msgstr "树汁渍" +#: src/faction_camp.cpp +msgid "Searching for recruits.\n" +msgstr "正在招募人手。\n" -#: src/field.cpp -msgid "puddle of resin" -msgstr "树脂池" +#: src/faction_camp.cpp +msgid "Recover Recruiter" +msgstr "召回同伴(招募)" -#: src/field.cpp -msgid "bug blood splatter" -msgstr "飞溅虫血" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Select checkpoints to customize path.\n" +"> Reveals terrain around the path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" +"说明:\n" +"选择一名同伴去探索这个巨大而未知的世界。需要很高生存技能才能够避免战斗但作好一两次遭遇战的准备。\n" +"\n" +"技能:生存\n" +"需求等级:3\n" +"效果:\n" +"> 选择路径点来设定侦查路线。\n" +"> 将侦查并显示路线附近的地形。\n" +"> 藏匿处可增加侦查路线的范围。\n" +"\n" +"风险:高\n" +"耗时:往返时间\n" +"位置:%d/3\n" -#: src/field.cpp -msgid "bug blood stain" -msgstr "虫血渍" +#: src/faction_camp.cpp +msgid "Scout Mission" +msgstr "侦查任务" -#: src/field.cpp -msgid "puddle of bug blood" -msgstr "虫血泊" +#: src/faction_camp.cpp +msgid "Scouting the region.\n" +msgstr "正在本地区内侦查。\n" -#: src/field.cpp -msgid "hemolymph splatter" -msgstr "飞溅体液" +#: src/faction_camp.cpp +msgid "Recover Scout" +msgstr "召回同伴(侦查)" -#: src/field.cpp -msgid "hemolymph stain" -msgstr "体液渍" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 4\n" +"Effects:\n" +"> Pulls creatures encountered into combat instead of fleeing.\n" +"> Select checkpoints to customize path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: Very High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" +"说明:\n" +"选择一名同伴去清理这片废土。他们的目标将是杀死任何遇到的敌对生物,并在受伤过重或是毫无胜算时才会尝试返回营地。\n" +"\n" +"技能:生存\n" +"需求等级:4\n" +"效果:\n" +"> 将尝试与遭遇的敌对生物作战而非逃跑。\n" +"> 选择路径点来设定巡逻路线。\n" +"> 藏匿处可增加巡逻路线的范围。\n" +"\n" +"风险:极高\n" +"耗时:往返时间\n" +"位置:%d/3\n" -#: src/field.cpp -msgid "puddle of hemolymph" -msgstr "体液池" +#: src/faction_camp.cpp +msgid "Combat Patrol" +msgstr "武装巡逻" -#: src/field.cpp -msgid "shards of chitin" -msgstr "甲壳渣" +#: src/faction_camp.cpp +msgid "Patrolling the region.\n" +msgstr "正在本地区内巡逻。\n" -#: src/field.cpp -msgid "shattered bug leg" -msgstr "虫类残肢" +#: src/faction_camp.cpp +msgid "Recover Combat Patrol" +msgstr "召回同伴(武装巡逻)" -#: src/field.cpp -msgid "torn insect organs" -msgstr "残破虫类内脏" +#: src/faction_camp.cpp +msgid " Expansion Upgrade" +msgstr "升级扩展区" -#: src/field.cpp -msgid "gooey scraps" -msgstr "粘糊残渣" +#: src/faction_camp.cpp +msgid "Working to upgrade your expansions!\n" +msgstr "正在升级营地扩展区!\n" -#: src/field.cpp -msgid "heap of squishy gore" -msgstr "粘稠尸骸" +#: src/faction_camp.cpp +msgid " Expansion" +msgstr "扩展区)" -#: src/field.cpp -msgid "icky mess" -msgstr "粘稠杂碎" +#: src/faction_camp.cpp +msgid "Recover Ally, " +msgstr "召回同伴(" -#: src/field.cpp -msgid "swirl of tobacco smoke" -msgstr "烟草轻烟" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Have a companion attempt to completely dissemble a vehicle into components.\n" +" \n" +"Skill used: mechanics\n" +"Difficulty: 2 \n" +"Effects:\n" +"> Removed parts placed on the furniture in the garage.\n" +"> Skill plays a huge role to determine what is salvaged.\n" +" \n" +"Risk: None\n" +"Time: Skill Based \n" +msgstr "" +"说明:\n" +"让你的同伴尝试将一辆载具完全拆解成载具部件。\n" +"\n" +"技能:机械学\n" +"需求等级:2\n" +"效果:\n" +"> 拆除部件将被存放在车库内。\n" +"> 技能等级决定拆解部件的产出。\n" +"\n" +"风险:无\n" +"耗时:基于技能等级\n" -#: src/field.cpp -msgid "thick tobacco smoke" -msgstr "烟草浓烟" +#: src/faction_camp.cpp +msgid " Chop Shop" +msgstr "拆卸车辆" -#: src/field.cpp -msgid "tobacco smoke" -msgstr "烟草烟雾" +#: src/faction_camp.cpp +msgid "Working at the chop shop...\n" +msgstr "正在车库中工作……\n" -#: src/field.cpp -msgid "pot smoke" -msgstr "大麻烟雾" +#: src/faction_camp.cpp +msgid " (Finish) Chop Shop" +msgstr "(完成)拆卸车辆" -#: src/field.cpp -msgid "swirl of pot smoke" -msgstr "大麻轻烟" +#: src/faction_camp.cpp +msgid "Working in your kitchen!\n" +msgstr "正在厨房中工作!\n" -#: src/field.cpp -msgid "thick pot smoke" -msgstr "大麻浓烟" +#: src/faction_camp.cpp +msgid " (Finish) Cooking" +msgstr "(完成)烹饪" -#: src/field.cpp -msgid "crack smoke" -msgstr "快克烟雾" +#: src/faction_camp.cpp +msgid "Working in your blacksmith shop!\n" +msgstr "正在铁匠铺中工作!\n" -#: src/field.cpp -msgid "swirl of crack smoke" -msgstr "快克轻烟" +#: src/faction_camp.cpp +msgid " (Finish) Smithing" +msgstr "(完成)锻造" -#: src/field.cpp -msgid "thick crack smoke" -msgstr "快克浓烟" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plow any spaces that have reverted to dirt or grass.\n" +" \n" +msgstr "" +"说明:\n" +"将已经变回泥土地或草地的农田重新犁成可供种植的土堆。\n" +" \n" -#: src/field.cpp -msgid "meth smoke" -msgstr "冰毒烟雾" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Restores only the plots created in the last expansion upgrade.\n" +"> Does not damage existing crops.\n" +" \n" +"Risk: None\n" +"Time: 5 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"技能:制造\n" +"需求等级:无\n" +"效果:\n" +"> 仅恢复上次扩展区升级之后创建的农田。\n" +"> 不会损害已有的作物。\n" +" \n" +"风险:无\n" +"耗时:5分钟/地块\n" +"位置:0/1\n" -#: src/field.cpp -msgid "swirl of meth smoke" -msgstr "冰毒轻烟" +#: src/faction_camp.cpp +msgid " Plow Fields" +msgstr "犁地" -#: src/field.cpp -msgid "thick meth smoke" -msgstr "冰毒浓烟" +#: src/faction_camp.cpp +msgid "Working to plow your fields!\n" +msgstr "正在耕地!\n" -#: src/field.cpp -msgid "angry swarm of bees" -msgstr "暴怒蜂群" +#: src/faction_camp.cpp +msgid " (Finish) Plow Fields" +msgstr "(完成)犁地" -#: src/field.cpp -msgid "some bees" -msgstr "一些蜜蜂" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plant designated seeds in the spaces that have already been tilled.\n" +" \n" +msgstr "" +"说明:\n" +"在已经犁好的地上播种下所选择的种子。\n" +" \n" -#: src/field.cpp -msgid "swarm of bees" -msgstr "成群蜜蜂" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose which seed type or all of your seeds.\n" +"> Stops when out of seeds or planting locations.\n" +"> Will plant in ALL dirt mounds in the expansion.\n" +" \n" +"Risk: None\n" +"Time: 1 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"技能:生存\n" +"需求等级:无\n" +"效果:\n" +"> 选择播种的种子种类或者全部播种。\n" +"> 当无可用种子或无空余田地时自动停止。\n" +"> 将在所选扩展区内的所有土堆上播种。\n" +" \n" +"风险:无\n" +"耗时:1分钟/地块\n" +"位置:0/1 \n" -#: src/field.cpp -msgid "airborne incendiary" -msgstr "浮空燃烧剂" +#: src/faction_camp.cpp +msgid " Plant Fields" +msgstr "播种" -#: src/field.cpp -msgid "relaxation gas" -msgstr "麻醉气体" +#: src/faction_camp.cpp +msgid "Working to plant your fields!\n" +msgstr "正在播种!\n" -#: src/field.cpp -msgid "sedative gas" -msgstr "镇静瓦斯" +#: src/faction_camp.cpp +msgid " (Finish) Plant Fields" +msgstr "(完成)播种" -#: src/field.cpp -msgid "fungal haze" -msgstr "孢子雾" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Harvest any plants that are ripe and bring the produce back.\n" +" \n" +msgstr "" +"说明:\n" +"收获所有已成熟的作物并将其带回营地。\n" +" \n" -#: src/field.cpp -msgid "thick fungal haze" -msgstr "浓厚孢子雾" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Will dump all harvesting products onto your location.\n" +" \n" +"Risk: None\n" +"Time: 3 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" +"\n" +" \n" +"技能:生存\n" +"需求等级:无\n" +"效果:\n" +"> 将会把所有收获的作物丢在你的当前位置上。\n" +" \n" +"风险:无\n" +"耗时:3分钟/地块\n" +"位置:0/1\n" -#: src/field.cpp -msgid "fungicidal gas" -msgstr "杀真菌毒气" +#: src/faction_camp.cpp +msgid " Harvest Fields" +msgstr "收割作物" -#: src/field.cpp -msgid "thick fungicidal gas" -msgstr "浓厚杀真菌毒气" +#: src/faction_camp.cpp +msgid "Working to harvest your fields!\n" +msgstr "正在收获!\n" -#: src/field.cpp -msgid "smoke vent" -msgstr "排烟口" +#: src/faction_camp.cpp +msgid " (Finish) Harvest Fields" +msgstr "(完成)收割作物" -#: src/field.cpp -msgid "Whew... smells like skunk!" -msgstr "哇哦……闻起来像臭鼬!" +#: src/faction_camp.cpp +msgid "Working on your farm!\n" +msgstr "正在农场中工作!\n" -#: src/field.cpp -msgid "Man, that smells like some good shit!" -msgstr "伙计,那玩意闻起来真棒!" +#: src/faction_camp.cpp +msgid "departs to search for materials..." +msgstr "离队去寻找物资了……" -#: src/field.cpp -msgid "I don't know... should you really be smoking that stuff?" -msgstr "我不知道……你真的应该抽那玩意么?" +#: src/faction_camp.cpp +msgid "There are too many companions working on this mission!" +msgstr "这项任务已经有太多人在做了!" -#: src/field.cpp -msgid "Ew, smells like burning rubber!" -msgstr "呃,闻着就像是橡胶烧着了。" +#: src/faction_camp.cpp +msgid "departs to search for firewood..." +msgstr "离队去寻找柴火了……" -#: src/field.cpp -msgid "Ugh, that smells rancid!" -msgstr "啊,闻着一股子霉味。" +#: src/faction_camp.cpp +msgid "You don't have enough food stored to feed your companion." +msgstr "你需要为你的同伴提供更多的食物补给。" -#: src/field.cpp +#: src/faction_camp.cpp +msgid "departs to dig ditches and scrub toilets..." +msgstr "离队去干杂活了……" + +#: src/faction_camp.cpp #, c-format -msgid "A %s hits you!" -msgstr "%s 击中了你!" +msgid "%s returns from working in the woods..." +msgstr "%s 从伐木地点归来……" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits %2$s!" -msgstr "%1$s 击中了 %2$s!" +msgid "%s returns from working on the hide site..." +msgstr "%s 从藏匿点归来……" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits the %2$s!" -msgstr "%1$s 击中了 %2$s!" +msgid "%s returns from shuttling gear between the hide site..." +msgstr "%s 从藏匿点归来……" -#: src/field.cpp -msgid "The acid burns your body!" -msgstr "你的身体被酸液灼烧!" +#: src/faction_camp.cpp +msgid "departs to search for edible plants..." +msgstr "离队去搜寻植物了……" -#: src/field.cpp -msgid "The acid burns s body!" -msgstr " 的身体被酸液灼烧!" +#: src/faction_camp.cpp +msgid "departs to set traps for small animals..." +msgstr "离队去设置陷阱了……" -#: src/field.cpp -msgid "The acid burns your legs and feet!" -msgstr "你的腿和脚被酸液灼烧!" +#: src/faction_camp.cpp +msgid "departs to hunt for meat..." +msgstr "离队去狩猎动物了……" -#: src/field.cpp -msgid "The acid burns s legs and feet!" -msgstr " 的腿和脚被酸液灼烧! " +#: src/faction_camp.cpp +msgid "departs to search for recruits..." +msgstr "离队去招募人手了……" -#: src/field.cpp -msgid "You're lying in a pool of acid" -msgstr "你正躺在酸液里。" +#: src/faction_camp.cpp +msgid "departs to survey land..." +msgstr "离队去勘测选址了……" -#: src/field.cpp -msgid "You're standing in a pool of acid" -msgstr "你正站在一个酸液水泊里。" +#: src/faction_camp.cpp +msgid "You have already selected a surveyor!" +msgstr "你已经有一位勘测者了!" -#: src/field.cpp -msgid "The sap sticks to you!" -msgstr "你被树液粘上了!" +#: src/faction_camp.cpp +msgid "begins to upgrade the expansion..." +msgstr "开始升级扩展区……" -#: src/field.cpp -msgid "The sap sticks to !" -msgstr " 被树液粘上了!" +#: src/faction_camp.cpp +msgid "You already have a worker upgrading that expansion!" +msgstr "你已经有一位升级扩展区的工人了!" -#: src/field.cpp -msgid "The sludge is thick and sticky. You struggle to pull free." -msgstr "污泥又粘又稠。你好不容易挣扎了出来。" +#: src/faction_camp.cpp +msgid "You don't have the materials for the upgrade." +msgstr "你需要更多的物资才能够升级营地。" -#: src/field.cpp -msgid "You burn your legs and feet!" -msgstr "你的腿和脚烧了起来!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your farm with something..." +msgstr "%s 带着一些东西从农场中归来……" -#: src/field.cpp -msgid "You're burning up!" -msgstr "你烧了起来!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns to you with something..." +msgstr "%s 带着一些东西归来……" -#: src/field.cpp -msgid "You're set ablaze!" -msgstr "你被点着了!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your kitchen with something..." +msgstr "%s 带着一些东西从厨房中归来……" -#: src/field.cpp -msgid "Your whole body is burning!" -msgstr "你的全身都在燃烧!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your blacksmith shop with something..." +msgstr "%s 带着一些东西从铁匠铺中归来……" -#: src/field.cpp -msgid " burns their legs and feet!" -msgstr " 的腿和脚烧了起来!" +#: src/faction_camp.cpp +msgid "begins plowing the field..." +msgstr "开始犁地……" -#: src/field.cpp -msgid " is burning up!" -msgstr " 烧了起来!" +#: src/faction_camp.cpp +msgid "You already have someone plowing that field." +msgstr "你已经有人在那块田犁地了。" -#: src/field.cpp -msgid " is set ablaze!" -msgstr " 被点着了!" +#: src/faction_camp.cpp +msgid "You have no additional seeds to give your companions..." +msgstr "你没有足够的种子提供给你的同伴……" -#: src/field.cpp -msgid "s whole body is burning!" -msgstr " 的全身都在燃烧!" +#: src/faction_camp.cpp +msgid "begins planting the field..." +msgstr "开始播种……" + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Which seeds do you wish to have planted?" +msgstr "你想种植那些种子?" + +#: src/faction_camp.cpp +msgid "You already have someone planting that field." +msgstr "你已经有人在那块田播种了。" + +#: src/faction_camp.cpp +msgid "begins to harvest the field..." +msgstr "开始收获……" + +#: src/faction_camp.cpp +msgid "You already have someone harvesting that field." +msgstr "你已经有人在那块田收获了。" + +#: src/faction_camp.cpp +msgid "You already have someone working in that garage." +msgstr "你已经有人在车库中工作了!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your garage..." +msgstr "%s 从车库中归来……" + +#: src/faction_camp.cpp +msgid "You already have a companion upgrading the camp." +msgstr "你已经有一位同伴在升级营地了。" + +#: src/faction_camp.cpp +msgid "begins to upgrade the camp..." +msgstr "开始升级营地……" + +#: src/faction_camp.cpp +msgid "Forests and swamps are the only valid cutting locations." +msgstr "只有森林与沼泽地形可作为伐木地点。" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Trip Estimate:\n" +"%s" +msgstr "" +"路程估计:\n" +"%s" + +#: src/faction_camp.cpp +msgid "departs to cut logs..." +msgstr "离队去伐木了……" + +#: src/faction_camp.cpp +msgid "Forests, swamps, and fields are valid hide site locations." +msgstr "只有森林、沼泽与旷野地形可作为藏匿点。" + +#: src/faction_camp.cpp +msgid "departs to build a hide site..." +msgstr "离队去建设藏匿点了……" + +#: src/faction_camp.cpp +msgid "You need equipment to setup a hide site..." +msgstr "你需要工具来设置藏匿点……" + +#: src/faction_camp.cpp +msgid "You must select an existing hide site." +msgstr "你必须选择一个已有的藏匿点。" + +#: src/faction_camp.cpp +msgid "Bring gear back?" +msgstr "将装备带回吗?" + +#: src/faction_camp.cpp +msgid "departs for the hide site..." +msgstr "离队去藏匿点了……" + +#: src/faction_camp.cpp +msgid "You need equipment to transport between the hide site..." +msgstr "你需要载具来在藏匿点之间运输……" + +#: src/faction_camp.cpp +msgid "" +"Select a start and end point. Line must be straight. Fields, forests, and " +"swamps are valid fortification locations. In addition to existing " +"fortification constructions." +msgstr "选择一个起点与一个终点,两点间必须为直线,只有森林、沼泽与旷野地形可以建设防御工事。将增加至现有防御工事体系内。" + +#: src/faction_camp.cpp +msgid "Select an end point." +msgstr "选择终点。" + +#: src/faction_camp.cpp +msgid "Invalid terrain in construction path." +msgstr "建设路线内有无效地形。" + +#: src/faction_camp.cpp +msgid "You don't have the material to build the fortification." +msgstr "你需要更多的物资才能够建设防御工事。" + +#: src/faction_camp.cpp +msgid "begins constructing fortifications..." +msgstr "开始建设防御工事……" + +#: src/faction_camp.cpp +msgid "" +"Select checkpoints until you reach maximum range or select the last point " +"again to end." +msgstr "选择路径点直到到达距离上限,或者选择上个点以结束。" + +#: src/faction_camp.cpp +msgid "departs on patrol..." +msgstr "离队去巡逻了……" + +#: src/faction_camp.cpp +msgid "You don't have the materials to craft that" +msgstr "你需要更多材料才能够制造它" + +#: src/faction_camp.cpp +#, c-format +msgid "Batch crafting %s [MAX: %d]: " +msgstr "成批制造 %s [最大:%d]:" + +#: src/faction_camp.cpp +msgid "Your batch is too large!" +msgstr "你制造的批次太多了!" + +#: src/faction_camp.cpp +msgid "You already have someone working in that expansion." +msgstr "你已经有人在那个扩展区内工作了!" + +#: src/faction_camp.cpp +msgid "begins to work..." +msgstr "开始工作……" + +#: src/faction_camp.cpp +#, c-format +msgid "" +" Chopping this vehicle:\n" +"%s" +msgstr "" +" 拆卸载具:\n" +"%s" + +#: src/faction_camp.cpp +msgid "begins working in the garage..." +msgstr "开始在车库工作……" + +#: src/faction_camp.cpp +msgid "Your companion seems disappointed that your pantry is empty..." +msgstr "食物补给已经空了,大伙们都很沮丧……" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s returns from upgrading the camp having earned a bit of experience..." +msgstr "%s 升级营地归来,并获得了一些经验……" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from doing the dirty work to keep the camp running..." +msgstr "%s 干完维持营地正常运作的各项脏活杂活归来……" + +#: src/faction_camp.cpp +msgid "Sorting points have changed, forcing reset." +msgstr "物品储存点已变更,重置任务点。" + +#: src/faction_camp.cpp +msgid "gathering materials" +msgstr "收集材料" + +#: src/faction_camp.cpp +msgid "foraging for edible plants" +msgstr "搜寻植物" + +#: src/faction_camp.cpp +msgid "trapping small animals" +msgstr "设置陷阱" + +#: src/faction_camp.cpp +msgid "hunting for meat" +msgstr "狩猎动物" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from %s carrying supplies and has a bit more experience..." +msgstr "%s 从 %s 归来,并获得了一些经验……" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from constructing fortifications..." +msgstr "%s 建设完防御工事并归来……" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from searching for recruits with a bit more experience..." +msgstr "%s 从招募人手归来,并获得了一些经验……" + +#: src/faction_camp.cpp +#, c-format +msgid "%s encountered %s..." +msgstr "%s 遇到了 %s……" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't find anyone to recruit..." +msgstr "%s 没遇到一个人……" + +#: src/faction_camp.cpp +#, c-format +msgid "%s convinced %s to hear a recruitment offer from you..." +msgstr "%s 让 %s 勉强听了你的招募条件……" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested in anything %s had to offer..." +msgstr "%s 对 %s 所提出的招募条件没有任何兴趣……" + +#: src/faction_camp.cpp +msgid "" +"NPC Overview:\n" +" \n" +msgstr "NPC概况:\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Name: %20s\n" +" \n" +msgstr "" +"名字:%20s\n" +"\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Strength: %10d\n" +msgstr "力量:%10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Dexterity: %10d\n" +msgstr "敏捷:%10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Intelligence: %10d\n" +msgstr "智力:%10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Perception: %10d\n" +" \n" +msgstr "" +"感知:%10d\n" +"\n" + +#: src/faction_camp.cpp +msgid "Top 3 Skills:\n" +msgstr "前3技能等级:\n" + +#: src/faction_camp.cpp +msgid "Asking for:\n" +msgstr "开价:\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"> Food: %10d days\n" +" \n" +msgstr "" +"> 支付食物:%10d天\n" +"\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Faction Food:%9d days\n" +" \n" +msgstr "" +"派系食物:%9d天\n" +"\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Recruit Chance: %10d%%\n" +" \n" +msgstr "" +"招募几率:%10d%%\n" +"\n" + +#: src/faction_camp.cpp +msgid "Select an option:" +msgstr "选择选项:" + +#: src/faction_camp.cpp +msgid "Increase Food" +msgstr "增加食物" + +#: src/faction_camp.cpp +msgid "Decrease Food" +msgstr "减少食物" + +#: src/faction_camp.cpp +msgid "Make Offer" +msgstr "开价" + +#: src/faction_camp.cpp +msgid "Not Interested" +msgstr "不感兴趣" + +#: src/faction_camp.cpp +msgid "You decide you aren't interested..." +msgstr "你对这个NPC不感兴趣,决定放弃……" + +#: src/faction_camp.cpp +#, c-format +msgid "%s has been convinced to join!" +msgstr "%s 被说服加入我们了!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested..." +msgstr "%s 并不感兴趣……" + +#: src/faction_camp.cpp +msgid "Your companion hit a river and didn't know how to swim..." +msgstr "你的同伴到了河边,但不懂得游泳……" + +#: src/faction_camp.cpp +msgid "" +"Your companion hit a river and didn't know how to swim well enough to " +"cross..." +msgstr "你的同伴到了河边,但其游泳等级不足以支撑到河对岸……" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't return from patrol..." +msgstr "%s 没能从巡逻中归来……" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from patrol..." +msgstr "%s 从巡逻中归来……" + +#: src/faction_camp.cpp +msgid "Select an expansion:" +msgstr "选择扩展区:" + +#: src/faction_camp.cpp +msgid "You choose to wait..." +msgstr "你决定等等再说……" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from surveying for the expansion." +msgstr "%s 完成了选址并归来。" + +#: src/faction_camp.cpp +msgid "No seeds to plant!" +msgstr "没有可以种植的种子!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from working your fields..." +msgstr "%s 从田里归来……" + +#: src/faction_camp.cpp +msgid "MAIN" +msgstr "主营地" + +#: src/faction_camp.cpp +msgid " [N] " +msgstr "[北]" + +#: src/faction_camp.cpp +msgid " [NE] " +msgstr "[东北]" + +#: src/faction_camp.cpp +msgid " [E] " +msgstr "[东]" + +#: src/faction_camp.cpp +msgid " [SE] " +msgstr "[东南]" + +#: src/faction_camp.cpp +msgid " [S] " +msgstr "[南]" + +#: src/faction_camp.cpp +msgid " [SW] " +msgstr "[西南]" + +#: src/faction_camp.cpp +msgid " [W] " +msgstr "[西]" + +#: src/faction_camp.cpp +msgid " [NW] " +msgstr "[西北]" + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Base Missions" +msgstr "营地任务" + +#: src/faction_camp.cpp +msgid "Farm Expansion" +msgstr "农场扩展区" + +#: src/faction_camp.cpp +msgid "Garage Expansion" +msgstr "车库扩展区" + +#: src/faction_camp.cpp +msgid "Kitchen Expansion" +msgstr "厨房扩展区" + +#: src/faction_camp.cpp +msgid "Blacksmith Expansion" +msgstr "铁匠铺扩展区" + +#: src/faction_camp.cpp +msgid "Empty Expansion" +msgstr "空扩展区" + +#: src/faction_camp.cpp +#, c-format +msgid "Select a location between %d and %d tiles away." +msgstr "选择一块 %d 至 %d 块远的区块。" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"You must select a target between %d and %d range from the base. Range: %d" +msgstr "你必须选择一块距离当前营地 %d 至 %d 块远的位置。当前距离:%d" + +#: src/faction_camp.cpp +msgid "You must be able to see the target that you select." +msgstr "你需要选择一块已侦查过的区域。" + +#: src/faction_camp.cpp +msgid "Do you want to bounce off this location to extend range?" +msgstr "选择该藏匿处来增加探索距离吗?" + +#: src/faction_camp.cpp +msgid "food for you" +msgstr "食物" + +#: src/faction_camp.cpp +msgid "food for companions" +msgstr "待分发食物" + +#: src/faction_camp.cpp +msgid "weapons" +msgstr "武器" + +#: src/faction_camp.cpp +msgid "clothing" +msgstr "装备" + +#: src/faction_camp.cpp +msgid "bionics" +msgstr "生化插件" + +#: src/faction_camp.cpp +msgid "all kinds of tools" +msgstr "各类工具" + +#: src/faction_camp.cpp +msgid "wood of various sorts" +msgstr "木材" + +#: src/faction_camp.cpp +msgid "trash and rotting food" +msgstr "垃圾和腐烂食物" + +#: src/faction_camp.cpp +msgid "books" +msgstr "书籍" + +#: src/faction_camp.cpp +msgid "medication" +msgstr "药物" + +#: src/faction_camp.cpp +msgid "ammo" +msgstr "弹药" + +#: src/faction_camp.cpp +#, c-format +msgid "Reset point: %s?" +msgstr "重置储存点:%s?" + +#: src/faction_camp.cpp +msgid "" +" Items New Point Old Point\n" +" \n" +msgstr "" +" 物品类别 新位置 旧位置\n" +" \n" + +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +" Save Points?" +msgstr "" +"\n" +" \n" +" 保存储存点位置吗?" + +#: src/faction_camp.cpp +msgid "Revert to default points?" +msgstr "恢复默认储存点位置吗?" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15.2f (km)\n" +msgstr "> 距离: %15.2f(公里)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">One Way: %15d (trips)\n" +msgstr "> 单程: %15d(次)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15.2f (km)\n" +msgstr "> 总行程: %15.2f(公里)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15d (m)\n" +msgstr "> 距离: %15d(米)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15d (m)\n" +msgstr "> 总行程: %15d(米)\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Travel: %23s\n" +msgstr ">路程: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Working: %23s\n" +msgstr ">工作: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Total: %23s\n" +msgstr "共计: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Food: %15d (kcal)\n" +" \n" +msgstr "" +"支付食物: %15d(千卡)\n" +"\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"%s\n" +" \n" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s \n" +"Risk: None\n" +"Time: %s\n" +msgstr "" +"说明:\n" +"%s\n" +"\n" +"技能:%s\n" +"需求等级:%d\n" +"%s\n" +"风险:无\n" +"耗时:%s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s\n" +"Time: %s\n" +msgstr "" +"技能:%s\n" +"需求等级:%d\n" +"%s\n" +"耗时:%s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" +" \n" +"Skill used: speech\n" +"Difficulty: 2 \n" +"Base Score: +%3d%%\n" +"> Expansion Bonus: +%3d%%\n" +"> Faction Bonus: +%3d%%\n" +"> Special Bonus: +%3d%%\n" +" \n" +"Total: Skill +%3d%%\n" +" \n" +"Risk: High\n" +"Time: 4 Days\n" +"Positions: %d/1\n" +msgstr "" +"说明:\n" +"招募新同伴是一项非常危险且花费巨大的任务。任务结果很大程度上取决于你所派出同伴的技能和你派系营地的吸引力。\n" +"\n" +"技能:口才\n" +"需求等级:2\n" +"\n" +"营地等级: +%3d%%\n" +"扩展区加成:+%3d%%\n" +"派系加成: +%3d%%\n" +"特殊加成: +%3d%%\n" +"\n" +"共计: + %3d%%\n" +"\n" +"风险:高\n" +"耗时:4天\n" +"位置:%d/1\n" + +#: src/faction_camp.cpp +msgid "" +"Notes: \n" +"Send a companion to gather materials for the next camp upgrade.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +msgstr "" +"说明:\n" +"选择一名同伴去为营地的下次升级收集物资。\n" +" \n" +"技能:生存\n" +"需求等级:无\n" +"可能的收集物:\n" + +#: src/faction_camp.cpp +msgid "" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: " +msgstr "" +" \n" +"风险:极低\n" +"耗时:3小时/次,可重复\n" +"位置:" + +#: src/faction_camp.cpp +msgid "Harvestable: " +msgstr "可收获:" + +#: src/faction_camp.cpp +msgid "Ready for Planting: " +msgstr "可种植:" + +#: src/faction_camp.cpp +msgid "Needs Plowing: " +msgstr "需犁地:" + +#: src/faction_camp.cpp +#, c-format +msgid "Name: %25s\n" +msgstr "载具名称:%25s\n" + +#: src/faction_camp.cpp +msgid "---- Engines ----\n" +msgstr "---- 引擎 ----\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Engine: %25s\n" +msgstr "引擎:%25s\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Status: %24d%%\n" +msgstr "> 车辆状态:%24d%%\n" + +#: src/faction_camp.cpp +#, c-format +msgid ">Fuel: %25s\n" +msgstr "> 燃料类型:%25s\n" + +#: src/faction_camp.cpp +msgid "---- Fuel Storage & Battery ----\n" +msgstr "---- 燃料及电池 ----\n" + +#: src/faction_camp.cpp +msgid "Estimated Chop Time: 5 Days\n" +msgstr "预计拆解时间:5天\n" + +#: src/faction_camp.cpp +msgid "No items are located at the drop point..." +msgstr "食物储藏点没有任何物品……" + +#: src/faction_camp.cpp +#, c-format +msgid "You distribute %d kcal worth of food to your companions." +msgstr "你将 %d 千卡热量的食物分发给了你的同伴们。" + +#: src/faction_camp.cpp +#, c-format +msgid "While %s, a silent specter approaches %s..." +msgstr "在 %s 时,一个幽灵般的身影悄无声息地接近了 %s……" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s notices the antlered horror and slips away before it gets too close." +msgstr "%s 察觉到了这只可怕的鹿角怪物,并在它靠近前悄悄地溜走了。" + +#: src/faction_camp.cpp +#, c-format +msgid "Another survivor approaches %s asking for directions." +msgstr "一位幸存者现身并向 %s 问路。" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Fearful that he may be an agent of some hostile faction, %s doesn't mention " +"the camp." +msgstr "由于担心他可能是某个敌对派系的斥候, %s 并未透露任何关于幸存者营地的消息。" + +#: src/faction_camp.cpp +msgid "The two part on friendly terms and the survivor isn't seen again." +msgstr "两人友好地交流完之后各自离开,从此再也没人遇见过那个神秘的幸存者。" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't detect the ambush until it was too late!" +msgstr "%s 察觉到自己被伏击时已经太迟了!" + +#: src/faction_camp.cpp +#, c-format +msgid "The bull moose charged %s from the tree line..." +msgstr "一只公驼鹿从树林边缘径直朝 %s 冲了过来……" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Despite being caught off guard %s was able to run away until the moose gave " +"up pursuit." +msgstr "尽管被打了个措手不及,但是 %s 仍然成功摆脱了驼鹿的追赶。" + +#: src/faction_camp.cpp +#, c-format +msgid "The jabberwock grabbed %s by the arm from behind and began to scream." +msgstr "伽卜沃奇从后面一把抓住了%s 的手臂,并突然开始尖叫。" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Terrified, %s spun around and delivered a massive kick to the creature's " +"torso..." +msgstr "%s 惊恐之中转过身来朝那个怪物的肚子狠狠踢了一脚……" + +#: src/faction_camp.cpp +#, c-format +msgid "Collapsing into a pile of gore, %s walked away unscathed..." +msgstr "怪物缓缓变成了一滩肉泥,而 %s 毫发无伤地离开了……" + +#: src/faction_camp.cpp +msgid "(Sounds like bullshit, you wonder what really happened.)" +msgstr "(牛皮都要吹上天了,你反复琢磨实际上发生了什么。)" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s turned to find the hideous black eyes of a giant wasp staring back from " +"only a few feet away..." +msgstr "%s 转过身来,正好和几步之外一只巨型黄蜂那恐怖的黑色眼睛正面相对……" + +#: src/faction_camp.cpp +msgid "The screams were terrifying, there was nothing anyone could do." +msgstr "一声可怕的尖叫传了出来,但是附近并没有任何人能帮忙。" + +#: src/faction_camp.cpp +#, c-format +msgid "Pieces of %s were found strewn across a few bushes." +msgstr "%s 的残肢被发现散落在周围的灌木丛上。" + +#: src/faction_camp.cpp +msgid "(You wonder if your companions are fit to work on their own...)" +msgstr "(你深刻地反省你的同伴是否胜任独自一人在野外工作……)" + +#: src/field.cpp +msgid "blood splatter" +msgstr "飞溅血迹" + +#: src/field.cpp +msgid "blood stain" +msgstr "血渍" + +#: src/field.cpp +msgid "puddle of blood" +msgstr "血泊" + +#: src/field.cpp +msgid "bile splatter" +msgstr "飞溅胆汁" + +#: src/field.cpp +msgid "bile stain" +msgstr "胆汁渍" + +#: src/field.cpp +msgid "puddle of bile" +msgstr "胆汁池" + +#: src/field.cpp +msgid "bloody meat chunks" +msgstr "血肉块" + +#: src/field.cpp +msgid "heap of gore" +msgstr "血肉成堆" + +#: src/field.cpp +msgid "scraps of flesh" +msgstr "肉渣" + +#: src/field.cpp +msgid "broken vegetation tangle" +msgstr "破碎的植物" + +#: src/field.cpp +msgid "shattered branches and leaves" +msgstr "破碎的枝叶" + +#: src/field.cpp +msgid "shredded leaves and twigs" +msgstr "细碎枝叶" + +#: src/field.cpp +msgid "cobwebs" +msgstr "蛛丝" + +#: src/field.cpp +msgid "thick webs" +msgstr "密布蛛网" + +#: src/field.cpp +msgid "webs" +msgstr "蜘蛛网" + +#: src/field.cpp +msgid "puddle of slime" +msgstr "粘液池" + +#: src/field.cpp +msgid "slime stain" +msgstr "粘液渍" + +#: src/field.cpp +msgid "slime trail" +msgstr "粘液痕" + +#: src/field.cpp +msgid "acid splatter" +msgstr "飞溅酸液" + +#: src/field.cpp +msgid "acid streak" +msgstr "残余酸液" + +#: src/field.cpp +msgid "pool of acid" +msgstr "酸液池" + +#: src/field.cpp +msgid "glob of sap" +msgstr "汁液滴" + +#: src/field.cpp +msgid "pool of sap" +msgstr "汁液泊" + +#: src/field.cpp +msgid "sap splatter" +msgstr "飞溅汁液" + +#: src/field.cpp +msgid "sludge trail" +msgstr "污泥痕" + +#: src/field.cpp +msgid "thick sludge trail" +msgstr "厚污泥痕" + +#: src/field.cpp +msgid "thin sludge trail" +msgstr "薄污泥痕" + +#: src/field.cpp +msgid "raging fire" +msgstr "烈焰" + +#: src/field.cpp +msgid "small fire" +msgstr "火苗" + +#: src/field.cpp +msgid "legacy rubble" +msgstr "瓦砾遗迹" + +#: src/field.cpp +msgid "smoke" +msgstr "烟" + +#: src/field.cpp +msgid "thick smoke" +msgstr "浓烟" + +#: src/field.cpp +msgid "thin smoke" +msgstr "轻烟" + +#: src/field.cpp +msgid "hazy cloud" +msgstr "氤氲毒气" + +#: src/field.cpp +msgid "thick toxic gas" +msgstr "浓厚毒气" + +#: src/field.cpp +msgid "toxic gas" +msgstr "毒气" + +#: src/field.cpp +msgid "tear gas" +msgstr "催泪瓦斯" + +#: src/field.cpp +msgid "thick tear gas" +msgstr "浓厚催泪瓦斯" + +#: src/field.cpp +msgid "radioactive gas" +msgstr "放射性烟雾" + +#: src/field.cpp +msgid "thick radioactive gas" +msgstr "放射性浓烟" + +#: src/field.cpp +msgid "gas vent" +msgstr "排气孔" + +#: src/field.cpp +msgid "electric cloud" +msgstr "电弧云团" + +#: src/field.cpp +msgid "electric crackle" +msgstr "电流四射" + +#: src/field.cpp +msgid "sparks" +msgstr "电花" + +#: src/field.cpp +msgid "odd ripple" +msgstr "奇异涟漪" + +#: src/field.cpp +msgid "swirling air" +msgstr "螺旋气流" + +#: src/field.cpp +msgid "tear in reality" +msgstr "时空裂痕" + +#: src/field.cpp +msgid "faint plasma" +msgstr "微弱的等离子" + +#: src/field.cpp +msgid "glaring plasma" +msgstr "耀眼的等离子" + +#: src/field.cpp +msgid "glowing plasma" +msgstr "发光的等离子" + +#: src/field.cpp +msgid "beam of light" +msgstr "光束" + +#: src/field.cpp +msgid "faint glimmer" +msgstr "微光" + +#: src/field.cpp +msgid "intense beam of light" +msgstr "密集光束" + +#: src/field.cpp +msgid "spotlight" +msgstr "醒目" + +#: src/field.cpp +msgid "dazzling" +msgstr "耀眼" + +#: src/field.cpp +msgid "plant sap splatter" +msgstr "飞溅树液" + +#: src/field.cpp +msgid "plant sap stain" +msgstr "树汁渍" + +#: src/field.cpp +msgid "puddle of resin" +msgstr "树脂池" + +#: src/field.cpp +msgid "bug blood splatter" +msgstr "飞溅虫血" + +#: src/field.cpp +msgid "bug blood stain" +msgstr "虫血渍" + +#: src/field.cpp +msgid "puddle of bug blood" +msgstr "虫血泊" + +#: src/field.cpp +msgid "hemolymph splatter" +msgstr "飞溅体液" + +#: src/field.cpp +msgid "hemolymph stain" +msgstr "体液渍" + +#: src/field.cpp +msgid "puddle of hemolymph" +msgstr "体液池" + +#: src/field.cpp +msgid "shards of chitin" +msgstr "甲壳渣" + +#: src/field.cpp +msgid "shattered bug leg" +msgstr "虫类残肢" + +#: src/field.cpp +msgid "torn insect organs" +msgstr "残破虫类内脏" + +#: src/field.cpp +msgid "gooey scraps" +msgstr "粘糊残渣" + +#: src/field.cpp +msgid "heap of squishy gore" +msgstr "粘稠尸骸" + +#: src/field.cpp +msgid "icky mess" +msgstr "粘稠杂碎" + +#: src/field.cpp +msgid "swirl of tobacco smoke" +msgstr "烟草轻烟" + +#: src/field.cpp +msgid "thick tobacco smoke" +msgstr "烟草浓烟" + +#: src/field.cpp +msgid "tobacco smoke" +msgstr "烟草烟雾" + +#: src/field.cpp +msgid "pot smoke" +msgstr "大麻烟雾" + +#: src/field.cpp +msgid "swirl of pot smoke" +msgstr "大麻轻烟" + +#: src/field.cpp +msgid "thick pot smoke" +msgstr "大麻浓烟" + +#: src/field.cpp +msgid "crack smoke" +msgstr "快克烟雾" + +#: src/field.cpp +msgid "swirl of crack smoke" +msgstr "快克轻烟" + +#: src/field.cpp +msgid "thick crack smoke" +msgstr "快克浓烟" + +#: src/field.cpp +msgid "meth smoke" +msgstr "冰毒烟雾" + +#: src/field.cpp +msgid "swirl of meth smoke" +msgstr "冰毒轻烟" + +#: src/field.cpp +msgid "thick meth smoke" +msgstr "冰毒浓烟" + +#: src/field.cpp +msgid "angry swarm of bees" +msgstr "暴怒蜂群" + +#: src/field.cpp +msgid "some bees" +msgstr "一些蜜蜂" + +#: src/field.cpp +msgid "swarm of bees" +msgstr "成群蜜蜂" + +#: src/field.cpp +msgid "airborne incendiary" +msgstr "浮空燃烧剂" + +#: src/field.cpp +msgid "relaxation gas" +msgstr "麻醉气体" + +#: src/field.cpp +msgid "sedative gas" +msgstr "镇静瓦斯" + +#: src/field.cpp +msgid "fungal haze" +msgstr "孢子雾" + +#: src/field.cpp +msgid "thick fungal haze" +msgstr "浓厚孢子雾" + +#: src/field.cpp +msgid "fungicidal gas" +msgstr "杀真菌毒气" + +#: src/field.cpp +msgid "thick fungicidal gas" +msgstr "浓厚杀真菌毒气" + +#: src/field.cpp +msgid "smoke vent" +msgstr "排烟口" + +#: src/field.cpp +msgid "Whew... smells like skunk!" +msgstr "哇哦……闻起来像臭鼬!" + +#: src/field.cpp +msgid "Man, that smells like some good shit!" +msgstr "伙计,那玩意闻起来真棒!" + +#: src/field.cpp +msgid "I don't know... should you really be smoking that stuff?" +msgstr "我不知道……你真的应该抽那玩意么?" + +#: src/field.cpp +msgid "Ew, smells like burning rubber!" +msgstr "呃,闻着就像是橡胶烧着了。" + +#: src/field.cpp +msgid "Ugh, that smells rancid!" +msgstr "啊,闻着一股子霉味。" + +#: src/field.cpp +#, c-format +msgid "A %s hits you!" +msgstr "%s 击中了你!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits %2$s!" +msgstr "%1$s 击中了 %2$s!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits the %2$s!" +msgstr "%1$s 击中了 %2$s!" + +#: src/field.cpp +msgid "The acid burns your body!" +msgstr "你的身体被酸液灼烧!" + +#: src/field.cpp +msgid "The acid burns s body!" +msgstr " 的身体被酸液灼烧!" + +#: src/field.cpp +msgid "The acid burns your legs and feet!" +msgstr "你的腿和脚被酸液灼烧!" + +#: src/field.cpp +msgid "The acid burns s legs and feet!" +msgstr " 的腿和脚被酸液灼烧! " + +#: src/field.cpp +msgid "You're lying in a pool of acid" +msgstr "你正躺在酸液池里。" + +#: src/field.cpp +msgid "You're standing in a pool of acid" +msgstr "你正站在酸液池里。" + +#: src/field.cpp +msgid "The sap sticks to you!" +msgstr "你被树液粘上了!" + +#: src/field.cpp +msgid "The sap sticks to !" +msgstr " 被树液粘上了!" + +#: src/field.cpp +msgid "The sludge is thick and sticky. You struggle to pull free." +msgstr "污泥又粘又稠。你好不容易挣扎了出来。" + +#: src/field.cpp +msgid "You burn your legs and feet!" +msgstr "你的腿和脚烧了起来!" + +#: src/field.cpp +msgid "You're burning up!" +msgstr "你烧了起来!" + +#: src/field.cpp +msgid "You're set ablaze!" +msgstr "你被点着了!" + +#: src/field.cpp +msgid "Your whole body is burning!" +msgstr "你的全身都在燃烧!" + +#: src/field.cpp +msgid " burns their legs and feet!" +msgstr " 的腿和脚烧了起来!" + +#: src/field.cpp +msgid " is burning up!" +msgstr " 烧了起来!" + +#: src/field.cpp +msgid " is set ablaze!" +msgstr " 被点着了!" + +#: src/field.cpp +msgid "s whole body is burning!" +msgstr " 的全身都在燃烧!" #: src/field.cpp msgid "You're standing in a fire!" @@ -118542,6 +121567,14 @@ msgstr "传送至附近大地图" msgid "Test trait group" msgstr "测试特性组" +#: src/game.cpp +msgid "Show debug message" +msgstr "显示调试信息" + +#: src/game.cpp +msgid "Crash game (test crash handling)" +msgstr "强制游戏崩溃(测试崩溃处理)" + #: src/game.cpp msgid "Quit to Main Menu" msgstr "返回主菜单" @@ -118665,9 +121698,10 @@ msgstr "小时" msgid "minute" msgstr "分钟" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp src/martialarts.cpp msgid "turn" -msgstr "回合" +msgid_plural "turns" +msgstr[0] "回合" #: src/game.cpp msgid "Set year to?" @@ -119264,7 +122298,7 @@ msgstr "使用物品" msgid "Sort armor" msgstr "整理装束" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "攻击" @@ -119295,7 +122329,7 @@ msgstr "检查肢体:" msgid "Use which item?" msgstr "使用哪个物品?" -#: src/game.cpp src/iuse.cpp src/veh_interact.cpp +#: src/game.cpp src/iuse.cpp msgid "Never mind" msgstr "没事了。" @@ -119331,7 +122365,7 @@ msgid "" msgstr "火势看上去还行,看起来还能继续烧一阵子。" #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." +msgid "It looks solid, and will burn for a few hours without extra fuel." msgstr "火势看上去很旺,看上去还能继续烧几个小时。" #: src/game.cpp @@ -119782,7 +122816,7 @@ msgctxt "butchery menu" msgid "Cut up %s (%d)" msgstr "切割 %s(%d)" -#. ~ Name and number of items listed for disassembling +#. ~ Name, number of items and time to complete disassembling #: src/game.cpp #, c-format msgctxt "butchery menu" @@ -119819,8 +122853,8 @@ msgid "Choose corpse to butcher / item to disassemble" msgstr "选择要屠宰的尸体/拆解的物品" #: src/game.cpp -msgid "Butcher everything" -msgstr "全部屠宰" +msgid "Quick butcher everything" +msgstr "全部快速屠宰" #: src/game.cpp msgid "Disassemble everything once" @@ -119831,8 +122865,8 @@ msgid "Disassemble everything" msgstr "拆解所有物品" #: src/game.cpp -msgid "Cut up all you can" -msgstr "分割全部" +msgid "Cut up everything" +msgstr "全部切割" #: src/game.cpp msgid "" @@ -119855,7 +122889,7 @@ msgstr "快速屠宰" #: src/game.cpp msgid "" -"This techinque is used when you are in a hurry, but still want to harvest " +"This technique is used when you are in a hurry, but still want to harvest " "something from the corpse. Yields are lower as you don't try to be precise," " but it's useful if you don't want to set up a workshop. Prevents zombies " "from raising." @@ -119882,7 +122916,7 @@ msgstr "清理内脏" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "这种屠宰技术将内脏去除以使得尸体不会从内部腐烂。产出内脏。清理内脏后的胴体会更轻且更不容易腐烂。能够与其他屠宰选项结合以获得更好的效果。" @@ -119893,7 +122927,7 @@ msgstr "改四分体" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." @@ -120343,7 +123377,7 @@ msgstr "%s 开始驾驶。" msgid "" "You try to quantum tunnel through the barrier but are reflected! Try again " "with more energy!" -msgstr "你试图通过量子隧道穿越障碍,但是被反弹了回来!请用更多能量再试试!" +msgstr "你试图使用量子隧穿穿越障碍,但是被弹了回来!等有更多生化能量后再试!" #: src/game.cpp msgid "It's too dangerous to tunnel that far!" @@ -120352,7 +123386,7 @@ msgstr "穿越那么远实在太危险了!" #: src/game.cpp #, c-format msgid "You quantum tunnel through the %d-tile wide barrier!" -msgstr "你穿越了 %d 块宽的障碍!" +msgstr "你使用量子隧穿穿越了宽度 %d 格的障碍!" #: src/game.cpp msgid "No furniture at grabbed point." @@ -120739,6 +123773,10 @@ msgstr "你感觉到自己的生命能量正在消散。" msgid "You feel fatigue seeping into your body." msgstr "你感觉到自己身体有点疲惫。" +#: src/game.cpp +msgid "The portal collapses!" +msgstr "传送门坍塌了!" + #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." @@ -120980,6 +124018,19 @@ msgstr "解渴" msgid "JOY" msgstr "快乐" +#. ~ Used for permafood shelf life in the Eat menu +#: src/game_inventory.cpp +msgid "indefinite" +msgstr "无限期" + +#: src/game_inventory.cpp +msgid "SHELF LIFE" +msgstr "保质期" + +#: src/game_inventory.cpp +msgid "FRESHNESS" +msgstr "新鲜度" + #: src/game_inventory.cpp msgid "SPOILS IN" msgstr "腐坏于" @@ -121012,6 +124063,38 @@ msgstr "无法喝下已洒出的液体" msgid "You're fully charged" msgstr "你的生化能量已达上限" +#: src/game_inventory.cpp +msgid "soon!" +msgstr "即将腐坏!" + +#: src/game_inventory.cpp +msgid "fresh" +msgstr "新鲜" + +#: src/game_inventory.cpp +msgid "quite fresh" +msgstr "比较新鲜" + +#: src/game_inventory.cpp +msgid "near midlife" +msgstr "还没过半" + +#: src/game_inventory.cpp +msgid "past midlife" +msgstr "已经过半" + +#: src/game_inventory.cpp +msgid "getting older" +msgstr "即将陈旧" + +#: src/game_inventory.cpp +msgid "old" +msgstr "陈旧" + +#: src/game_inventory.cpp +msgid "rotten" +msgstr "腐坏" + #: src/game_inventory.cpp msgid "Consume item" msgstr "进食/消耗物品" @@ -121154,6 +124237,14 @@ msgstr "选择一把武器放进 %s" msgid "You have no weapons you could put into your %s." msgstr "你的所有武器都不能放进 %s。" +#: src/game_inventory.cpp src/iuse.cpp +msgid "Cut up what?" +msgstr "切割什么?" + +#: src/game_inventory.cpp +msgid "You have nothing to cut up." +msgstr "你没有可以切割的物品。" + #: src/game_inventory.cpp msgid "Saw barrel" msgstr "锯短枪管" @@ -121465,7 +124556,7 @@ msgstr "等待多久?" msgid "Are you sure you want to sleep?" msgstr "真的要睡觉吗?" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "是。" @@ -121764,6 +124855,11 @@ msgstr "添加钻刃涂层" msgid "You don't have a suitable item to coat with diamond" msgstr "你没有可以添加钻刃涂层的物品。" +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "你将钻刃涂层添加在 %s" + #: src/iexamine.cpp #, c-format msgid "Use the %s?" @@ -122328,7 +125424,7 @@ msgstr "这个炭窑已经可以点燃了,但你没有火源。" #: src/iexamine.cpp #, c-format msgid "This kiln contains %s %s of material, and is ready to be fired." -msgstr "炭窑中包含了 %s %s 材料,已经准备好可以被点燃。" +msgstr "炭窑中装着 %s %s 材料,已经准备好可以被点燃。" #: src/iexamine.cpp msgid "Fire the kiln?" @@ -122386,7 +125482,7 @@ msgstr "将 %s 入桶?" #: src/iexamine.cpp #, c-format msgid "This keg contains %s (%d), %0.f%% full." -msgstr "发酵桶包含 %s(%d),%0.f%% 全满。" +msgstr "发酵桶装着 %s(%d),%0.f%% 满。" #: src/iexamine.cpp src/pickup.cpp msgid "Select an action" @@ -122414,7 +125510,7 @@ msgstr "朝桶里放入了 %s。" #: src/iexamine.cpp #, c-format msgid "The keg now contains %s (%d), %0.f%% full." -msgstr "发酵桶包含 %s(%d),%0.f%% 全满。" +msgstr "发酵桶装着 %s(%d),%0.f%% 满。" #: src/iexamine.cpp msgid "Start fermenting cycle?" @@ -122517,7 +125613,7 @@ msgstr "你没有任何 %1$s 来填充 %2$s。" #: src/iexamine.cpp #, c-format msgid "It contains %s (%d), %0.f%% full." -msgstr "它包含 %s(%d),%0.f%% 全满。" +msgstr "它装着 %s(%d),%0.f%% 满。" #: src/iexamine.cpp #, c-format @@ -122590,7 +125686,7 @@ msgstr "你移除了 %s。" #: src/iexamine.cpp msgid "The shrub offers up a fruit, then crumbles into a fungal bed." -msgstr "这灌木提供了一种水果,然后渐渐变成了真菌床。" +msgstr "灌木丛长出了一个果实,然后渐渐崩塌变成了真菌床。" #: src/iexamine.cpp msgid "" @@ -122604,7 +125700,7 @@ msgstr "额外的营养是可用的。" #: src/iexamine.cpp msgid "The tree offers up a fruit, then shrivels into a fungal tree." -msgstr "这树提供了一种水果,然后萎缩成真菌树。" +msgstr "树上长出一个果实,然后渐渐枯萎变成了真菌树。" #: src/iexamine.cpp #, c-format @@ -122679,7 +125775,7 @@ msgstr "锻压机发出哔哔声:\"%1$s 制品不足以输出!\"" #: src/iexamine.cpp msgid "It spits out an assortment of smaller pieces instead." -msgstr "它吐出了各式各样的小块零件。" +msgstr "它吐出了各式各样的小块金属碎屑。" #: src/iexamine.cpp #, c-format @@ -122699,7 +125795,7 @@ msgstr "那里有一个 %s。是否拆除?" #: src/iexamine.cpp #, c-format msgid "This %s can not be reloaded!" -msgstr "这件 %s 无法重新装填!" +msgstr "%s 无法重新装填!" #. ~ %1$s - furniture, %2$d - number, %3$s items. #: src/iexamine.cpp @@ -122721,7 +125817,7 @@ msgstr "放入多少 %1$s 到 %2$s 里面?" #: src/iexamine.cpp msgid "Do what with the curtains?" -msgstr "用窗帘干嘛?" +msgstr "对窗帘做什么?" #: src/iexamine.cpp msgid "Peek through the curtains." @@ -122749,7 +125845,7 @@ msgstr "标识牌上模糊一片看不出什么字迹。" #: src/iexamine.cpp msgid "Overwrite the existing message on the sign with spray paint?" -msgstr "用喷漆罐覆写现有的标示牌讯息?" +msgstr "用喷漆罐覆盖现有的标示牌讯息?" #: src/iexamine.cpp msgid "Add a message to the sign with spray paint?" @@ -123219,6 +126315,10 @@ msgstr "这里有一个烟熏架。" msgid "You inspect its contents and find: " msgstr "你查看内部发现了:" +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "……它是空的。" + #: src/iexamine.cpp msgid "You see some smoldering embers there." msgstr "你看到了一些熏烤余烬。" @@ -123631,10 +126731,80 @@ msgstr "橙色" msgid "black" msgstr "黑色" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks as fresh as it can be. It still has " +"%s until it spoils." +msgstr "※这份食物看上去不能更 新鲜 了。距离完全腐坏还有 %s。" + +#: src/item.cpp +msgid "* This food looks as fresh as it can be." +msgstr "※这份食物看上去不能更 新鲜 了。" + +#: src/item.cpp +#, c-format +msgid "" +"* This food looks old. It's just %s from becoming " +"inedible." +msgstr "※这份食物看上去已经 陈旧 了。距离完全腐坏还有 %s。" + +#: src/item.cpp +msgid "" +"* This food looks old. It's on the brink of becoming inedible." +msgstr "※这份食物看上去已经 陈旧 了。很快就会腐坏且不能食用了。" + +#: src/item.cpp +msgid "" +"* This food looks fine. If you were more skilled in cooking or" +" survival, you might be able to make a better estimation." +msgstr "※这份食物看上去已经 还行 吧。如果你烹饪和生存技巧够高,你能够更准确估计食物新鲜度。" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks quite fresh. It has %s until it" +" spoils." +msgstr "※这份食物看上去还算 比较新鲜。距离完全腐坏还有 %s。" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it is reaching its midlife. " +"There's %s before it spoils." +msgstr "※这份食物看上去保质期 还没过半 。距离完全腐坏还有 %s。" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it has passed its midlife. " +"Edible, but will go bad in %s." +msgstr "※这份食物看上去保质期 已经过半 。目前尚能食用,距离完全腐坏还有 %s。" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it will be old soon. It has " +"%s, so if you plan to use it, it's now or never." +msgstr "" +"※这份食物看上去很快就要 变得陈旧 了。距离完全腐坏还有 %s。如果你还打算食用它,得抓紧点了。" + #: src/item.cpp msgid "Category: " msgstr "类别:" +#: src/item.cpp +msgid "$" +msgstr "$" + #: src/item.cpp msgid "Price: " msgstr "价格:" @@ -123802,42 +126972,9 @@ msgstr "※仔细观察后,这似乎是致幻的。" #: src/item.cpp #, c-format msgid "" -"* This food is perishable, and takes %s to " -"rot from full freshness, at room temperature." -msgstr "※这份食物 易腐坏,在室温下从新鲜到完全腐坏需要 %s。" - -#: src/item.cpp -msgid "* This food looks as fresh as it can be." -msgstr "※这份食物看上去不能更 新鲜 了。" - -#: src/item.cpp -msgid "" -"* This food looks still quite fresh. It's far from becoming " -"old." -msgstr "※这份食物看上去还算 比较新鲜。离保质期还有点远。" - -#: src/item.cpp -msgid "" -"* This food looks like it is reaching its midlife. It has" -" some time ahead before spoiling." -msgstr "※这份食物看上去保质期 还没过半 。距离腐烂还有点时间。" - -#: src/item.cpp -msgid "" -"* This food looks like it has passed its midlife. Edible," -" but will go old sooner rather then later." -msgstr "※这份食物看上去保质期 已经过半 。如果再不吃掉也许不久之后就变得陈旧了。" - -#: src/item.cpp -msgid "" -"* This food looks like it will be old soon. It's now or never, if" -" you plan to use it." -msgstr "※这份食物看上去很快就要 变得陈旧 了。如果你还打算食用它,得抓紧点了。" - -#: src/item.cpp -msgid "" -"* This food looks old. It's on a brink of becoming inedible." -msgstr "※这份食物看上去已经 陈旧 了。很快就会腐烂且不能食用了。" +"* This food is perishable, and at room temperature has an" +" estimated nominal shelf life of %s." +msgstr "※这份食物 易腐坏,在室温下保质期大概为 %s。" #: src/item.cpp msgid "" @@ -123873,16 +127010,16 @@ msgid "" "very bad idea." msgstr "※这份食物已经开始腐坏吃这东西是个坏主意。" -#: src/item.cpp -msgid "Capacity: " -msgstr "容量:" - #: src/item.cpp #, c-format msgid " round of %s" msgid_plural " rounds of %s" msgstr[0] " 发 %s" +#: src/item.cpp +msgid "Capacity: " +msgstr "容量:" + #: src/item.cpp msgid " per round" msgstr "每次" @@ -124061,6 +127198,18 @@ msgstr "操作性修正:" msgid "Ammo: %s" msgstr "弹药:%s" +#: src/item.cpp +msgid "%" +msgstr "%" + +#: src/item.cpp +msgid "Reload modifier: " +msgstr "装填修正:" + +#: src/item.cpp +msgid "Minimum strength required modifier: " +msgstr "最低力量需求修正:" + #: src/item.cpp msgid "Used on: " msgstr "用于:" @@ -124167,7 +127316,7 @@ msgstr "背系。" #: src/item.cpp msgid "Outer. " -msgstr "外部。" +msgstr "外套。" #: src/item.cpp msgid "Waist. " @@ -124241,7 +127390,7 @@ msgstr "需要 %s 技能 级才能理解。" #: src/item.cpp msgid "Requires intelligence of to easily read." -msgstr "需要智力 才能顺利阅读。" +msgstr "需要 智力 才能顺利阅读。" #: src/item.cpp msgid "Reading this book affects your morale by " @@ -124270,7 +127419,7 @@ msgstr "这可以帮助你获得更多配方。" #: src/item.cpp msgid "You need to read this book to see its contents." -msgstr "你需要阅读本书才能获得其中的内容。" +msgstr "你需要先 阅读本书 才能了解其中内容。" #: src/item.cpp msgid "This container " @@ -126701,8 +129850,10 @@ msgid "You cannot use the %1$s with another of it's kind." msgstr "你无法同时使用多件 %1$s。" #: src/iuse.cpp -msgid "You unfold solar array from the pack and plug it in." -msgstr "你将太阳能板从背包中取出并摊开,然后插上电缆充电器。" +msgid "" +"You unfold solar array from the pack. You still need to connect it with a " +"cable." +msgstr "你将太阳能板从背包中取出并摊开。但你仍然需要使用电缆连接。" #: src/iuse.cpp msgid "You fold your portable solar array into the pack." @@ -126855,10 +130006,6 @@ msgstr "你切出了%d块碎木屑。" msgid "You waste a lot of the wood." msgstr "你浪费了大量木材。" -#: src/iuse.cpp src/iuse_actor.cpp -msgid "Cut up what?" -msgstr "切割什么?" - #: src/iuse.cpp msgid "Chop down which tree?" msgstr "砍倒哪棵树木?" @@ -128093,14 +131240,26 @@ msgid "" " but best to stop messing with it." msgstr "你的捣鼓要把多功能厨师机弄坏了!幸运的是,它还能用。你最好少乱动它了。" -#: src/iuse.cpp -msgid "Attach cable to vehicle where?" -msgstr "在载具的哪里连接电缆?" - #: src/iuse.cpp msgid "Using cable:" msgstr "使用电缆:" +#: src/iuse.cpp +msgid "Attach cable to vehicle" +msgstr "连接电缆至载具" + +#: src/iuse.cpp +msgid "Attach cable to self" +msgstr "连接电缆至自身" + +#: src/iuse.cpp +msgid "Attach cable to solar pack" +msgstr "连接电缆至太阳能背包" + +#: src/iuse.cpp +msgid "Attach cable to vehicle where?" +msgstr "在载具的哪里连接电缆?" + #: src/iuse.cpp msgid "Attach loose end of the cable" msgstr "接驳电缆一端" @@ -128126,7 +131285,7 @@ msgstr "你需要一些肥皂来使用它" #: src/iuse.cpp #, c-format msgid "The %s's monitor slowly outputs the data..." -msgstr "%s 的监视器缓慢的输出了数据……" +msgstr "%s 的监测装置缓慢地输出了数据……" #: src/iuse.cpp #, c-format @@ -128281,6 +131440,105 @@ msgid "" "work." msgstr "服用更多的镁片没有任何作用。你得睡觉才能让它起效。" +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "你抛起了 %s。" + +#: src/iuse.cpp +msgid "Heads!" +msgstr "是正面!" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "是反面!" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "确定无疑。" + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "毫无疑问是这样的。" + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "毫无疑问。" + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "是的,确实如此。" + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "你可以放心。" + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "在我看来,就是如此。" + +#: src/iuse.cpp +msgid "Most likely." +msgstr "极有可能是这样的。" + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "占卜结果很好。" + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "一切迹象都表明是这样的。" + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "结果很模糊,再试一次吧。" + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "稍后再试试吧。" + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "最好现在别告诉你。" + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "现在无法预测。" + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "集中精神在试一次。" + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "别做梦了。" + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "结果是不。" + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "占卜结果是不。" + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "占卜结果不那么乐观。" + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "很值得怀疑。" + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "你问了问 %s,然后将它抛起。" + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "%s 上显示着:%s" + #: src/iuse_actor.cpp #, c-format msgid "The %s is empty!" @@ -128998,7 +132256,7 @@ msgstr "伤口看起来还是很不好。" #: src/iuse_actor.cpp msgid "Your wound still hurts." -msgstr "你的伤口十分疼痛" +msgstr "你的伤口依然疼痛。" #: src/iuse_actor.cpp #, c-format @@ -130857,11 +134115,11 @@ msgstr "绝密备忘录 [1057]" #: src/mapgen.cpp msgid "EPA: Report All Potential Containment Breaches [3873643]" -msgstr "EPA:关于所有可能的样品破坏的报告[3873643]" +msgstr "EPA:即刻上报所有潜在安全漏洞[3873643]" #: src/mapgen.cpp msgid "SRCF: Internal Memo, EPA [2918024]" -msgstr "SRCF:内部备忘录,EPA[2918024]" +msgstr "SRCF:内部备忘录,关于EPA [2918024]" #: src/mapgen.cpp msgid "CDC: Internal Memo, Standby [2918115]" @@ -130869,7 +134127,7 @@ msgstr "CDC:内部备忘录,待机[2918115]" #: src/mapgen.cpp msgid "USARMY: SEAL SRCF [987167]" -msgstr "美国陆军:封锁SRCF [987167]" +msgstr "美国陆军:封锁SRCF设施 [987167]" #: src/mapgen.cpp msgid "COMMAND: REACTIVATE ELEVATOR" @@ -130877,7 +134135,7 @@ msgstr "指令:重新激活电梯" #: src/mapgen.cpp msgid "COMMAND: SEAL SRCF [4423]" -msgstr "指令:封锁SRCF [4423]" +msgstr "指令:封锁SRCF设施 [4423]" #: src/mapgen.cpp msgid "Wreckage" @@ -130911,6 +134169,210 @@ msgstr "开启给养室" msgid "Open Evidence Locker" msgstr "开启证物储藏室" +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "%s要求:" + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "技能" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "要求:" + +#: src/martialarts.cpp +msgid "activate" +msgstr "激活" + +#: src/martialarts.cpp +msgid "be used" +msgstr "来使用" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "※可在 装备武器空手 时 %s" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "※只能空手 时 %s" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "※只能装备武器 时 %s" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "增益战技:%s" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "特效/次" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "※最多 叠加 %d 次" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "※持续 %d%s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "※增加 %s闪避 %s" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] "每次" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "※减少 %s闪避 %s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "※增加 %s格挡 %s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "※减少 %s格挡 %s" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "※攻击完全 无声" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "类型:%s" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "防御类" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "进攻类" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "特效:" + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "※仅在 暴击 时生效" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "※在 闪避反击" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "※在 格挡反击" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "※在 未命中无消耗恢复" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "※在 被抓住挣脱" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "※攻击 前方大角度范围内 敌人" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "※攻击 所有近身范围内 敌人" + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind " +"it" +msgstr "※攻击 当前目标其身后 敌人" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "※将目标 击退 %d%s" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "格" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "※将目标 击倒 %d%s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "※将目标 击晕 %d%s" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "※将目标 缴械" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "该武术流派强制你使用徒手攻击,即便你手持武器。" + +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" +msgstr "
%s增益:
" + +#: src/martialarts.cpp +msgid "Passive" +msgstr "被动" + +#: src/martialarts.cpp +msgid "Hit" +msgstr "命中" + +#: src/martialarts.cpp +msgid "Get hit" +msgstr "被击中" + +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "
战技:
%s" + +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "武器:" + +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr "流派:%s" + #: src/material.cpp msgid "damages" msgstr "损害" @@ -131330,1124 +134792,399 @@ msgstr "你痛殴 %s" #: src/melee.cpp #, c-format -msgid "You smash %s" -msgstr "你一记重击 %s" - -#: src/melee.cpp -#, c-format -msgid "You thrash %s" -msgstr "你摔打 %s" - -#: src/melee.cpp -#, c-format -msgid "You batter %s" -msgstr "你连续猛击 %s" - -#: src/melee.cpp -#, c-format -msgid "You hit %s" -msgstr "你击中 %s" - -#: src/melee.cpp -#, c-format -msgid "You whack %s" -msgstr "你猛打 %s" - -#: src/melee.cpp -#, c-format -msgid " clobbers %s" -msgstr " 痛殴 %s" - -#: src/melee.cpp -#, c-format -msgid " smashes %s" -msgstr " 一记重击 %s" - -#: src/melee.cpp -#, c-format -msgid " thrashes %s" -msgstr " 摔打 %s" - -#: src/melee.cpp -#, c-format -msgid " batters %s" -msgstr " 连续猛击 %s" - -#: src/melee.cpp -#, c-format -msgid " hits %s" -msgstr " 击中 %s" - -#: src/melee.cpp -#, c-format -msgid " whacks %s" -msgstr " 敲击 %s" - -#: src/melee.cpp -#, c-format -msgid "The bugs attack %s" -msgstr "出现错误,攻击 %s" - -#. ~ NPC hits something but does no damage -#: src/melee.cpp -#, c-format -msgid "%s but does no damage." -msgstr "%s 但是没有造成什么伤害。" - -#. ~ someone hits something but do no damage -#: src/melee.cpp -#, c-format -msgid "%s but do no damage." -msgstr "%s 但是没有造成什么伤害。" - -#. ~ NPC hits something (critical) -#: src/melee.cpp -#, c-format -msgid "%s. Critical!" -msgstr "%s。暴击!" - -#. ~ someone hits something for %d damage (critical) -#: src/melee.cpp -#, c-format -msgid "%s for %d damage. Critical!" -msgstr "%s 造成 %d 点伤害。暴击!" - -#. ~ NPC hits something -#: src/melee.cpp -#, c-format -msgid "%s." -msgstr "%s。" - -#. ~ someone hits something for %d damage -#: src/melee.cpp -#, c-format -msgid "%s for %d damage." -msgstr "%s 造成 %d 点伤害。" - -#: src/melee.cpp -#, c-format -msgid "You lunge for the %s, but miss!" -msgstr "你弓步突刺%s ,但是没命中!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force!" -msgstr "你抓住了 %s 然后用你全部的力气使劲拉拽!" - -#: src/melee.cpp -#, c-format -msgid "You forcefully take %s from %s!" -msgstr "你猛力地把 %s 从 %s 拿走!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but it drops nearby!" -msgstr "你抓住了 %s 然后用你全部的力气使劲拉拽,但是它掉在了旁边!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but in vain!" -msgstr "你抓住了 %s 然后用你全部的力气使劲拉拽,但是并没有用!" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might forcing their %s to drop down nearby!" -msgstr "你用尽全力狠敲 %s 让他们的 %s 掉在一旁!" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might but %s remains in their hands!" -msgstr "你全力狠敲 %s 但是 %s 却仍然在他们的手里!" - -#: src/melee.cpp src/npctalk.cpp -#, c-format -msgid "%s is hostile!" -msgstr "%s 是敌对的!" - -#: src/melee.cpp -#, c-format -msgid "You sneakily steal %1$s from %2$s!" -msgstr "你悄悄地从 %2$s 那里偷来了 %1$s !" - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s, but did not attract attention." -msgstr "你从 %2$s 偷窃 %1$s 失败了,幸好没有被发觉。" - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s." -msgstr "你从 %2$s 偷窃 %1$s 失败!" - -#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a -#. whack! x 12" -#: src/messages.cpp -#, c-format -msgid "%s x %d" -msgstr "%s x %d" - -#: src/messages.cpp -msgctxt "message type" -msgid "good" -msgstr "好" - -#: src/messages.cpp -msgctxt "message type" -msgid "bad" -msgstr "坏" - -#: src/messages.cpp -msgctxt "message type" -msgid "mixed" -msgstr "混合" - -#: src/messages.cpp -msgctxt "message type" -msgid "warning" -msgstr "警告" - -#: src/messages.cpp -msgctxt "message type" -msgid "info" -msgstr "说明" - -#: src/messages.cpp -msgctxt "message type" -msgid "neutral" -msgstr "中立" - -#: src/messages.cpp -msgctxt "message type" -msgid "debug" -msgstr "调试" - -#: src/messages.cpp -#, c-format -msgid "< Press %s to filter, %s to reset >" -msgstr "< 按 %s 过滤, %s 重置 >" - -#: src/messages.cpp -#, c-format -msgid "" -"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" -"Examples:\n" -" good:mutation\n" -" :you pick up: 1\n" -" crash!\n" -msgstr "" -"格式为 [[类型]]:文本。可用类型为: %s\n" -"示例:\n" -" 好:变异\n" -" :你捡起: 1\n" -" 砰!\n" - -#. ~ the 2nd %s is a type name, this is used to format a list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s, " -msgstr "%s," - -#. ~ the 2nd %s is a type name, this is used to format the last type name in a -#. list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s." -msgstr "%s。" - -#: src/mission_companion.cpp -msgid "Outpost Missions" -msgstr "前哨任务" - -#: src/mission_companion.cpp -msgid "Base Missions" -msgstr "营地任务" - -#: src/mission_companion.cpp -msgid "Junk Shop Missions" -msgstr "旧货店任务" - -#: src/mission_companion.cpp -msgid "Agricultural Missions" -msgstr "农业任务" - -#: src/mission_companion.cpp -msgid "Construction Missions" -msgstr "建设任务" - -#: src/mission_companion.cpp -msgid "Free Merchant Missions" -msgstr "自由商会任务" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." -msgstr "" -"报酬: $25-$500\n" -"危险:低\n" -"耗时:10小时\n" -" \n" -"派遣同伴在附近的荒野和孤立建筑中巡逻。能在相对安全的环境中攻击落单的生物并锻炼自己的生存能力。" - -#: src/mission_companion.cpp -msgid "Assign Scavenging Patrol" -msgstr "派遣同伴(拾荒巡逻)" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Patrol Roster:\n" -msgstr "" -"报酬:$25-$500\n" -"危险:低\n" -"耗时:10小时\n" -" \n" -"名单:\n" - -#: src/mission_companion.cpp -msgid " hours] \n" -msgstr " 小时]\n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?" -msgstr "" -"\n" -" \n" -"确定召回任务执行者吗?" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Patrol" -msgstr "召回同伴(拾荒巡逻)" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." -msgstr "" -"报酬:$200-$1000\n" -"危险:中\n" -"耗时:10小时\n" -" \n" -"拾荒队瞄准以前人口密集地区,以在被丧尸包围前搜刮最多珍稀物品为目标。战斗不可避免,同行者的援助又难以保证。任务奖励要更高且同伴有几率带回物品。" - -#: src/mission_companion.cpp -msgid "Assign Scavenging Raid" -msgstr "派遣同伴(拾荒突袭)" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Raid Roster:\n" -msgstr "" -"报酬:$200-$1000\n" -"危险:中\n" -"耗时:10小时\n" -" \n" -"名单:\n" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Raid" -msgstr "召回同伴(拾荒突袭)" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." -msgstr "" -"报酬:$8/小时\n" -"危险:极低\n" -"耗时:至少1小时\n" -" \n" -"派遣同伴到前哨当仆人是学习基础技能和建立声望的最安全的手段。但别指望能有多少奖励。" - -#: src/mission_companion.cpp -msgid "Assign Ally to Menial Labor" -msgstr "派遣同伴(干杂活)" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"报酬:$8/小时\n" -"危险:极低\n" -"耗时:至少1小时\n" -" \n" -"名单:\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Menial Labor" -msgstr "召回同伴(干杂活)" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." -msgstr "" -"报酬:$12/小时\n" -"危险:低\n" -"耗时:至少1小时\n" -" \n" -"木工任务相比仆从有更多的技能要求并且有不错的收益。你的同伴不太会面临战斗但工作在简易搭建的建筑里总有危险。" - -#: src/mission_companion.cpp -msgid "Assign Ally to Carpentry Work" -msgstr "派遣同伴(做木工)" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"报酬:$12/小时\n" -"危险:低\n" -"耗时:至少1小时\n" -" \n" -"名单:\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Carpentry Work" -msgstr "召回同伴(做木工)" - -#: src/mission_companion.cpp -msgid "Upgrade Camp" -msgstr "升级营地" - -#: src/mission_companion.cpp -msgid "Gather Materials" -msgstr "收集材料" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" -" \n" -"Effects:\n" -"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" -" \n" -"Must have enjoyability >= -6\n" -"Perishable food liquidated at penalty depending on upgrades and rot time:\n" -"> Rotten: 0%%\n" -"> Rots in < 2 days: 60%%\n" -"> Rots in < 5 days: 80%%\n" -" \n" -"Total faction food stock: %d kcal or %d day's rations" -msgstr "" -"说明:\n" -"向你营地里的同伴分发食物并装进储藏室。将你想要分发的食物放在营地帐篷门的正对面,营地主管与墙壁中间的地上。\n" -"\n" -"效果:\n" -"> 增加你派系的食物供给,食物供给作为支付你同伴各项劳动所花费时间的货币\n" -"\n" -"所分发的食物的享受值需要至少大于 -6\n" -"容易腐烂的食物按照腐烂时间换算:\n" -"> 已腐烂:0%%\n" -"> 两天内腐烂:60%%\n" -"> 五天内腐烂:80%%\n" -"\n" -"当前派系食物供给: %d 千卡或 %d 天口粮" - -#: src/mission_companion.cpp -msgid "Distribute Food" -msgstr "分发食物" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" -" \n" -"Effects:\n" -"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" -"> Items sitting on any type of furniture will not be moved.\n" -"> Items that are not listed in one of the categories are defaulted to the tools group." -msgstr "" -"说明:\n" -"重置 [干杂活] 任务中所搬运整理的各类物品的储存点。\n" -"\n" -"效果:\n" -"> 可指定类型:食物,待分发食物,种子,武器,装备,生化插件,各类工具,木材,垃圾,书籍,药品,弹药。\n" -"> 任何存放在家具中物品不会被搬运整理。\n" -"> 不在上述类型之内的物品默认搬运至工具储存点。" - -#: src/mission_companion.cpp -msgid "Reset Sort Points" -msgstr "重置物品储存点" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to gather light brush and heavy sticks.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -"> heavy sticks\n" -"> withered plants\n" -"> splintered wood\n" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: %d/3\n" -msgstr "" -"说明:\n" -"选择一名同伴去收集灌木和重木棍。\n" -"\n" -"技能:生存\n" -"需求等级:N/A\n" -"可能的收集物:\n" -"> 重木棍\n" -"> 枯萎植物\n" -"> 碎木\n" -"\n" -"风险:极低\n" -"耗时:3小时/次,可重复\n" -"位置:%d/3\n" - -#: src/mission_companion.cpp -msgid "Collect Firewood" -msgstr "收集柴火" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to do low level chores and sort supplies.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" -"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours\n" -"Positions: %d/1\n" -msgstr "" -"说明:\n" -"选择一名同伴在营地内做低级杂务和搬运整理物品。\n" -"\n" -"技能:制造\n" -"需求等级:无\n" -"效果:\n" -"> 留在户外地上的材料和物品会被分类后放入帐篷外的四个板条箱中。\n" -"默认分类,自上而下:装备,食物,书籍/生化插件,工具。木材将会堆放在南面,垃圾将会堆放在北面。\n" -"\n" -"风险:无\n" -"耗时:3小时\n" -"位置:%d/1\n" - -#: src/mission_companion.cpp -msgid "Menial Labor" -msgstr "干杂活" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours \n" -"Positions: %d/1\n" -msgstr "" -"说明:\n" -"你的营地规模已经足够支持建设一块新的扩展区。扩展区将为你解锁许多新的任务,但会花费更多资源并消耗更多时间。谨慎选择你的扩展区,每个营地最多支持建设8块扩展区。\n" -"\n" -"技能:制造\n" -"需求等级:无\n" -"效果:\n" -"> 选择一块可用的扩展区区块。从农场或者伐木场开始始终都是一个可靠的选择,食物用来支付同伴的任务花费而木材将是你主要的建筑材料。\n" -"\n" -"风险:无\n" -"耗时:3小时\n" -"位置:%d/1\n" - -#: src/mission_companion.cpp -msgid "Expand Base" -msgstr "扩展营地" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to a nearby forest to cut logs.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: 1 \n" -"Effects:\n" -"> 50%% of trees/trunks at the forest position will be cut down.\n" -"> 50%% of total material will be brought back.\n" -"> Repeatable with diminishing returns.\n" -" \n" -"Risk: Low-Medium\n" -"Time: 6 Hour Base + Travel Time + Cutting Time\n" -"Positions: %d/1\n" -msgstr "" -"说明:\n" -"选择一名同伴去附近森林中伐木。\n" -"\n" -"技能:制造\n" -"需求等级:1\n" -"效果:\n" -"> 森林区块内 50%% 的树和树干会被砍倒。\n" -"> 所砍倒树木 50%% 的材料会被带回营地。\n" -"> 可重复,但收益会逐渐减少。\n" -"\n" -"风险:低至中\n" -"耗时:基础6小时 + 往返时间 + 伐木时间\n" -"位置:%d/1\n" - -#: src/mission_companion.cpp -msgid "Cut Logs" -msgstr "伐木" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Good for setting up resupply or contingency points.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward.\n" -" \n" -"Risk: Medium\n" -"Time: 6 Hour Construction + Travel\n" -"Positions: %d/1\n" -msgstr "" -"说明:\n" -"选择一名同伴去地图上某处建造一个简易遮蔽处并存放进装备。\n" -"\n" -"技能:生存\n" -"需求等级:3\n" -"效果:\n" -"> 可用于设置再补给点和应急点。\n" -"> 所存放的装备无人看管可能被盗。\n" -"> 所存放装备的总重量会影响旅行时间。\n" -"\n" -"风险:中\n" -"耗时:6小时建设 + 往返时间\n" -"位置:%d/1\n" - -#: src/mission_companion.cpp -msgid "Setup Hide Site" -msgstr "设置藏匿点" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Push gear out to a hide site or bring gear back from one.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 1\n" -"Effects:\n" -"> Good for returning equipment you left in the hide site shelter.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward or back.\n" -" \n" -"Risk: Medium\n" -"Time: 1 Hour Base + Travel\n" -"Positions: %d/1\n" -msgstr "" -"说明:\n" -"选择一名同伴去一处藏匿点中存放或取回装备。\n" -"\n" -"技能:生存\n" -"需求等级:1\n" -"效果:\n" -"> 可用于取回你留在在藏匿点中的装备。\n" -"> 所存放的装备无人看管可能被盗。\n" -"> 所存放装备的总重量会影响旅行时间。\n" -"\n" -"风险:中\n" -"耗时:基础1小时 + 往返时间\n" -"位置:%d/1\n" - -#: src/mission_companion.cpp -msgid "Relay Hide Site" -msgstr "补给转运藏匿点" - -#: src/mission_companion.cpp -msgid "Construct Map Fortifications" -msgstr "建造地图防御工事" - -#: src/mission_companion.cpp -msgid "Construct Spiked Trench" -msgstr "建造尖刺堑壕" - -#: src/mission_companion.cpp -msgid "Recruit Companions" -msgstr "招募新同伴" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Select checkpoints to customize path.\n" -"> Reveals terrain around the path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" -"说明:\n" -"选择一名同伴去探索这个巨大而未知的世界。需要很高生存技能才能够避免战斗但作好一两次遭遇战的准备。\n" -"\n" -"技能:生存\n" -"需求等级:3\n" -"效果:\n" -"> 选择路径点来设定侦查路线。\n" -"> 将侦查并显示路线附近的地形。\n" -"> 藏匿处可增加侦查路线的范围。\n" -"\n" -"风险:高\n" -"耗时:往返时间\n" -"位置:%d/3\n" - -#: src/mission_companion.cpp -msgid "Scout Mission" -msgstr "侦查任务" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 4\n" -"Effects:\n" -"> Pulls creatures encountered into combat instead of fleeing.\n" -"> Select checkpoints to customize path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: Very High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" -"说明:\n" -"选择一名同伴去清理这片废土。他们的目标将是杀死任何遇到的敌对生物,并在受伤过重或是毫无胜算时才会尝试返回营地。\n" -"\n" -"技能:生存\n" -"需求等级:4\n" -"效果:\n" -"> 将尝试与遭遇的敌对生物作战而非逃跑。\n" -"> 选择路径点来设定巡逻路线。\n" -"> 藏匿处可增加巡逻路线的范围。\n" -"\n" -"风险:极高\n" -"耗时:往返时间\n" -"位置:%d/3\n" - -#: src/mission_companion.cpp -msgid "Combat Patrol" -msgstr "武装巡逻" - -#: src/mission_companion.cpp -msgid " Expansion Upgrade" -msgstr "升级扩展区" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Have a companion attempt to completely dissemble a vehicle into components.\n" -" \n" -"Skill used: mechanics\n" -"Difficulty: 2 \n" -"Effects:\n" -"> Removed parts placed on the furniture in the garage.\n" -"> Skill plays a huge role to determine what is salvaged.\n" -" \n" -"Risk: None\n" -"Time: Skill Based \n" -msgstr "" -"说明:\n" -"让你的同伴尝试将一辆载具完全拆解成载具部件。\n" -"\n" -"技能:机械学\n" -"需求等级:2\n" -"效果:\n" -"> 拆除部件将被存放在车库内。\n" -"> 技能等级决定拆解部件的产出。\n" -"\n" -"风险:无\n" -"耗时:基于技能等级\n" +msgid "You smash %s" +msgstr "你一记重击 %s" -#: src/mission_companion.cpp -msgid " Chop Shop" -msgstr "拆卸车辆" +#: src/melee.cpp +#, c-format +msgid "You thrash %s" +msgstr "你摔打 %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plow any spaces that have reverted to dirt or grass.\n" -" \n" -msgstr "" -"说明:\n" -"将已经变回泥土地或草地的农田重新犁成可供种植的土堆。\n" -" \n" +#: src/melee.cpp +#, c-format +msgid "You batter %s" +msgstr "你连续猛击 %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Restores only the plots created in the last expansion upgrade.\n" -"> Does not damage existing crops.\n" -" \n" -"Risk: None\n" -"Time: 5 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"技能:制造\n" -"需求等级:无\n" -"效果:\n" -"> 仅恢复上次扩展区升级之后创建的农田。\n" -"> 不会损害已有的作物。\n" -" \n" -"风险:无\n" -"耗时:5分钟/地块\n" -"位置:0/1\n" +#: src/melee.cpp +#, c-format +msgid "You hit %s" +msgstr "你击中 %s" -#: src/mission_companion.cpp -msgid " Plow Fields" -msgstr "犁地" +#: src/melee.cpp +#, c-format +msgid "You whack %s" +msgstr "你猛打 %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plant designated seeds in the spaces that have already been tilled.\n" -" \n" -msgstr "" -"说明:\n" -"在已经犁好的地上播种下所选择的种子。\n" -" \n" +#: src/melee.cpp +#, c-format +msgid " clobbers %s" +msgstr " 痛殴 %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose which seed type or all of your seeds.\n" -"> Stops when out of seeds or planting locations.\n" -"> Will plant in ALL dirt mounds in the expansion.\n" -" \n" -"Risk: None\n" -"Time: 1 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"技能:生存\n" -"需求等级:无\n" -"效果:\n" -"> 选择播种的种子种类或者全部播种。\n" -"> 当无可用种子或无空余田地时自动停止。\n" -"> 将在所选扩展区内的所有土堆上播种。\n" -" \n" -"风险:无\n" -"耗时:1分钟/地块\n" -"位置:0/1 \n" +#: src/melee.cpp +#, c-format +msgid " smashes %s" +msgstr " 一记重击 %s" -#: src/mission_companion.cpp -msgid " Plant Fields" -msgstr "播种" +#: src/melee.cpp +#, c-format +msgid " thrashes %s" +msgstr " 摔打 %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Harvest any plants that are ripe and bring the produce back.\n" -" \n" -msgstr "" -"说明:\n" -"收获所有已成熟的作物并将其带回营地。\n" -" \n" +#: src/melee.cpp +#, c-format +msgid " batters %s" +msgstr " 连续猛击 %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Will dump all harvesting products onto your location.\n" -" \n" -"Risk: None\n" -"Time: 3 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" -"\n" -" \n" -"技能:生存\n" -"需求等级:无\n" -"效果:\n" -"> 将会把所有收获的作物丢在你的当前位置上。\n" -" \n" -"风险:无\n" -"耗时:3分钟/地块\n" -"位置:0/1\n" +#: src/melee.cpp +#, c-format +msgid " hits %s" +msgstr " 击中 %s" -#: src/mission_companion.cpp -msgid " Harvest Fields" -msgstr "收割作物" +#: src/melee.cpp +#, c-format +msgid " whacks %s" +msgstr " 敲击 %s" -#: src/mission_companion.cpp -msgid "Working to expand your camp!\n" -msgstr "正在升级营地!\n" +#: src/melee.cpp +#, c-format +msgid "The bugs attack %s" +msgstr "出现错误,攻击 %s" -#: src/mission_companion.cpp -msgid " hours left] \n" -msgstr " 小时后完成]\n" +#. ~ NPC hits something but does no damage +#: src/melee.cpp +#, c-format +msgid "%s but does no damage." +msgstr "%s 但是没有造成什么伤害。" -#: src/mission_companion.cpp -msgid " minutes left] \n" -msgstr " 分钟后完成]\n" +#. ~ someone hits something but do no damage +#: src/melee.cpp +#, c-format +msgid "%s but do no damage." +msgstr "%s 但是没有造成什么伤害。" -#: src/mission_companion.cpp -msgid " [DONE]\n" -msgstr "[已完成]\n" +#. ~ NPC hits something (critical) +#: src/melee.cpp +#, c-format +msgid "%s. Critical!" +msgstr "%s。暴击!" -#: src/mission_companion.cpp -msgid "Recover Ally from Upgrading" -msgstr "召回同伴(升级营地)" +#. ~ someone hits something for %d damage (critical) +#: src/melee.cpp +#, c-format +msgid "%s for %d damage. Critical!" +msgstr "%s 造成 %d 点伤害。暴击!" -#: src/mission_companion.cpp -msgid "Working to upgrade your expansions!\n" -msgstr "正在升级营地扩展区!\n" +#. ~ NPC hits something +#: src/melee.cpp +#, c-format +msgid "%s." +msgstr "%s。" -#: src/mission_companion.cpp -msgid " Expansion" -msgstr "扩展区)" +#. ~ someone hits something for %d damage +#: src/melee.cpp +#, c-format +msgid "%s for %d damage." +msgstr "%s 造成 %d 点伤害。" -#: src/mission_companion.cpp -msgid "Recover Ally, " -msgstr "召回同伴(" +#: src/melee.cpp +#, c-format +msgid "You lunge for the %s, but miss!" +msgstr "你弓步突刺%s ,但是没命中!" -#: src/mission_companion.cpp -msgid "Working at the chop shop...\n" -msgstr "正在车库中工作……\n" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force!" +msgstr "你抓住了 %s 然后用你全部的力气使劲拉拽!" -#: src/mission_companion.cpp -msgid "/120 hours] \n" -msgstr "/ 120 小时]\n" +#: src/melee.cpp +#, c-format +msgid "You forcefully take %s from %s!" +msgstr "你猛力地把 %s 从 %s 拿走!" -#: src/mission_companion.cpp -msgid " (Finish) Chop Shop" -msgstr "(完成)拆卸车辆" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but it drops nearby!" +msgstr "你抓住了 %s 然后用你全部的力气使劲拉拽,但是它掉在了旁边!" -#: src/mission_companion.cpp -msgid "Working in your kitchen!\n" -msgstr "正在厨房中工作!\n" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but in vain!" +msgstr "你抓住了 %s 然后用你全部的力气使劲拉拽,但是并没有用!" -#: src/mission_companion.cpp -msgid " [ALMOST DONE]\n" -msgstr "[即将完成]\n" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might forcing their %s to drop down nearby!" +msgstr "你用尽全力狠敲 %s 让他们的 %s 掉在一旁!" -#: src/mission_companion.cpp -msgid " (Finish) Cooking" -msgstr "(完成)烹饪" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might but %s remains in their hands!" +msgstr "你全力狠敲 %s 但是 %s 却仍然在他们的手里!" -#: src/mission_companion.cpp -msgid "Working in your blacksmith shop!\n" -msgstr "正在铁匠铺中工作!\n" +#: src/melee.cpp src/npctalk.cpp +#, c-format +msgid "%s is hostile!" +msgstr "%s 是敌对的!" -#: src/mission_companion.cpp -msgid " (Finish) Smithing" -msgstr "(完成)锻造" +#: src/melee.cpp +#, c-format +msgid "You sneakily steal %1$s from %2$s!" +msgstr "你悄悄地从 %2$s 那里偷来了 %1$s !" -#: src/mission_companion.cpp -msgid "Working to plow your fields!\n" -msgstr "正在耕地!\n" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s, but did not attract attention." +msgstr "你从 %2$s 偷窃 %1$s 失败了,幸好没有被发觉。" -#: src/mission_companion.cpp -msgid "/~48 hours] \n" -msgstr "/ 约 48 小时]\n" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s." +msgstr "你从 %2$s 偷窃 %1$s 失败!" -#: src/mission_companion.cpp -msgid " (Finish) Plow Fields" -msgstr "(完成)犁地" +#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a +#. whack! x 12" +#: src/messages.cpp +#, c-format +msgid "%s x %d" +msgstr "%s x %d" -#: src/mission_companion.cpp -msgid "Working to plant your fields!\n" -msgstr "正在播种!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "good" +msgstr "好" -#: src/mission_companion.cpp -msgid "/4 hours] \n" -msgstr "/ 4 小时]\n" +#: src/messages.cpp +msgctxt "message type" +msgid "bad" +msgstr "坏" -#: src/mission_companion.cpp -msgid " (Finish) Plant Fields" -msgstr "(完成)播种" +#: src/messages.cpp +msgctxt "message type" +msgid "mixed" +msgstr "混合" -#: src/mission_companion.cpp -msgid "Working to harvest your fields!\n" -msgstr "正在收获!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "warning" +msgstr "警告" -#: src/mission_companion.cpp -msgid "/~10 hours] \n" -msgstr "/ 约 10 小时]\n" +#: src/messages.cpp +msgctxt "message type" +msgid "info" +msgstr "说明" -#: src/mission_companion.cpp -msgid " (Finish) Harvest Fields" -msgstr "(完成)收割作物" +#: src/messages.cpp +msgctxt "message type" +msgid "neutral" +msgstr "中立" -#: src/mission_companion.cpp -msgid "Working on your farm!\n" -msgstr "正在农场中工作!\n" +#: src/messages.cpp +msgctxt "message type" +msgid "debug" +msgstr "调试" -#: src/mission_companion.cpp -msgid " (Finish) Crafting" -msgstr "(完成)制造" +#: src/messages.cpp +#, c-format +msgid "< Press %s to filter, %s to reset >" +msgstr "< 按 %s 过滤, %s 重置 >" -#: src/mission_companion.cpp -msgid "Busy crafting!\n" -msgstr "正在制造物品!\n" +#: src/messages.cpp +#, c-format +msgid "" +"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" +"Examples:\n" +" good:mutation\n" +" :you pick up: 1\n" +" crash!\n" +msgstr "" +"格式为 [[类型]]:文本。可用类型为: %s\n" +"示例:\n" +" 好:变异\n" +" :你捡起: 1\n" +" 砰!\n" -#: src/mission_companion.cpp -msgid "Searching for materials to upgrade the camp.\n" -msgstr "正在收集升级营地的材料。\n" +#. ~ the 2nd %s is a type name, this is used to format a list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s, " +msgstr "%s," + +#. ~ the 2nd %s is a type name, this is used to format the last type name in a +#. list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s." +msgstr "%s。" #: src/mission_companion.cpp -msgid "/3 hours] \n" -msgstr "/ 3 小时]\n" +msgid "Outpost Missions" +msgstr "前哨任务" #: src/mission_companion.cpp -msgid "Recover Ally from Gathering" -msgstr "召回同伴(收集材料)" +msgid "Junk Shop Missions" +msgstr "旧货店任务" #: src/mission_companion.cpp -msgid "Searching for firewood.\n" -msgstr "正在收集木柴。\n" +msgid "Agricultural Missions" +msgstr "农业任务" #: src/mission_companion.cpp -msgid "Recover Firewood Gatherers" -msgstr "召回同伴(收集柴火)" +msgid "Construction Missions" +msgstr "建设任务" #: src/mission_companion.cpp -msgid "Performing menial labor...\n" -msgstr "正在干杂活……\n" +msgid "Free Merchant Missions" +msgstr "自由商会任务" #: src/mission_companion.cpp msgid "" -"\n" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" " \n" -"Do you wish to bring your allies back into your party?\n" +"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." msgstr "" -"\n" +"报酬: $25-$500\n" +"危险:低\n" +"耗时:10小时\n" " \n" -"确定召回任务执行者吗?\n" +"派遣同伴在附近的荒野和孤立建筑中巡逻。能在相对安全的环境中攻击落单的生物并锻炼自己的生存能力。" #: src/mission_companion.cpp -msgid "Recover Menial Laborer" -msgstr "召回同伴(干杂活)" +msgid "Assign Scavenging Patrol" +msgstr "派遣同伴(拾荒巡逻)" #: src/mission_companion.cpp -msgid "Surveying for expansion...\n" -msgstr "正在为扩展区选址……\n" +msgid "" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" +" \n" +"Patrol Roster:\n" +msgstr "" +"报酬:$25-$500\n" +"危险:低\n" +"耗时:10小时\n" +" \n" +"名单:\n" #: src/mission_companion.cpp -msgid "Recover Surveyor" -msgstr "召回同伴(勘测选址)" +msgid " hours] \n" +msgstr " 小时]\n" #: src/mission_companion.cpp -msgid "Cutting logs in the woods...\n" -msgstr "正在伐木地点伐木……\n" +msgid "Retrieve Scavenging Patrol" +msgstr "召回同伴(拾荒巡逻)" #: src/mission_companion.cpp -msgid "Recover Log Cutter" -msgstr "召回同伴(伐木)" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." +msgstr "" +"报酬:$200-$1000\n" +"危险:中\n" +"耗时:10小时\n" +" \n" +"拾荒队瞄准以前人口密集地区,以在被丧尸包围前搜刮最多珍稀物品为目标。战斗不可避免,同行者的援助又难以保证。任务奖励要更高且同伴有几率带回物品。" #: src/mission_companion.cpp -msgid "Setting up a hide site...\n" -msgstr "正在设置藏匿点……\n" +msgid "Assign Scavenging Raid" +msgstr "派遣同伴(拾荒突袭)" #: src/mission_companion.cpp -msgid "Recover Hide Setup" -msgstr "召回同伴(设置藏匿点)" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Raid Roster:\n" +msgstr "" +"报酬:$200-$1000\n" +"危险:中\n" +"耗时:10小时\n" +" \n" +"名单:\n" #: src/mission_companion.cpp -msgid "Constructing fortifications...\n" -msgstr "正在建设防御工事……\n" +msgid "Retrieve Scavenging Raid" +msgstr "召回同伴(拾荒突袭)" #: src/mission_companion.cpp -msgid "Finish Map Fortifications" -msgstr "完成地图防御工事" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." +msgstr "" +"报酬:$8/小时\n" +"危险:极低\n" +"耗时:至少1小时\n" +" \n" +"派遣同伴到前哨当仆人是学习基础技能和建立声望的最安全的手段。但别指望能有多少奖励。" #: src/mission_companion.cpp -msgid "Searching for recruits.\n" -msgstr "正在招募人手。\n" +msgid "Assign Ally to Menial Labor" +msgstr "派遣同伴(干杂活)" #: src/mission_companion.cpp -msgid "Recover Recruiter" -msgstr "召回同伴(招募)" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" +msgstr "" +"报酬:$8/小时\n" +"危险:极低\n" +"耗时:至少1小时\n" +" \n" +"名单:\n" #: src/mission_companion.cpp -msgid "Scouting the region.\n" -msgstr "正在本地区内侦查。\n" +msgid "Recover Ally from Menial Labor" +msgstr "召回同伴(干杂活)" #: src/mission_companion.cpp -msgid "Recover Scout" -msgstr "召回同伴(侦查)" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." +msgstr "" +"报酬:$12/小时\n" +"危险:低\n" +"耗时:至少1小时\n" +" \n" +"木工任务相比仆从有更多的技能要求并且有不错的收益。你的同伴不太会面临战斗但工作在简易搭建的建筑里总有危险。" #: src/mission_companion.cpp -msgid "Patrolling the region.\n" -msgstr "正在本地区内巡逻。\n" +msgid "Assign Ally to Carpentry Work" +msgstr "派遣同伴(做木工)" #: src/mission_companion.cpp -msgid "Recover Combat Patrol" -msgstr "召回同伴(武装巡逻)" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" +msgstr "" +"报酬:$12/小时\n" +"危险:低\n" +"耗时:至少1小时\n" +" \n" +"名单:\n" + +#: src/mission_companion.cpp +msgid "Recover Ally from Carpentry Work" +msgstr "召回同伴(做木工)" #: src/mission_companion.cpp msgid "" @@ -132538,7 +135275,7 @@ msgid "" " \n" "We'll plant the field with your choice of crop if you are willing to finance it. When the crop is ready to harvest you can have us liquidate it or harvest it for you." msgstr "" -"花费:$3.00/块地\n" +"花费:$3.00/地块\n" " \n" "\n" " .........\n" @@ -132574,7 +135311,7 @@ msgid "" " \n" "You can either have us liquidate the crop and give you the cash or pay us to harvest it for you." msgstr "" -"花费:$2.00/块地\n" +"花费:$2.00/地块\n" " \n" "\n" " .........\n" @@ -132687,7 +135424,7 @@ msgid "" msgstr "" "\n" " \n" -"车队将包含两到三个额外的公社成员,你准备好离开了吗?" +"商队将包含两到三个额外的公社成员,你准备好离开了吗?" #: src/mission_companion.cpp msgid "Begin Commune-Refugee Center Run" @@ -132717,237 +135454,6 @@ msgstr "拾荒中……" msgid "departs to work as a laborer..." msgstr "劳作中……" -#: src/mission_companion.cpp -msgid "You don't have enough food stored to feed your companion." -msgstr "你需要为你的同伴提供更多的食物补给。" - -#: src/mission_companion.cpp -msgid "begins to upgrade the camp..." -msgstr "开始升级营地……" - -#: src/mission_companion.cpp -msgid "You already have a companion upgrading the camp." -msgstr "你已经有一位同伴在升级营地了。" - -#: src/mission_companion.cpp -msgid "You don't have the materials for the upgrade." -msgstr "你需要更多的物资才能够升级营地。" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your garage..." -msgstr "%s 从车库中归来……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your kitchen with something..." -msgstr "%s 带着一些东西从厨房中归来……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your blacksmith shop with something..." -msgstr "%s 带着一些东西从铁匠铺中归来……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your farm with something..." -msgstr "%s 带着一些东西从农场中归来……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns to you with something..." -msgstr "%s 带着一些东西归来……" - -#: src/mission_companion.cpp -msgid "departs to search for materials..." -msgstr "离队去寻找物资了……" - -#: src/mission_companion.cpp -msgid "There are too many companions working on this mission!" -msgstr "这项任务已经有太多人在做了!" - -#: src/mission_companion.cpp -msgid "departs to search for firewood..." -msgstr "离队去寻找柴火了……" - -#: src/mission_companion.cpp -msgid "departs to dig ditches and scrub toilets..." -msgstr "离队去干杂活了……" - -#: src/mission_companion.cpp -msgid "departs to survey land..." -msgstr "离队去勘测选址了……" - -#: src/mission_companion.cpp -msgid "You have already selected a surveyor!" -msgstr "你已经有一位勘测者了!" - -#: src/mission_companion.cpp -msgid "begins to upgrade the expansion..." -msgstr "开始升级扩展区……" - -#: src/mission_companion.cpp -msgid "You already have a worker upgrading that expansion!" -msgstr "你已经有一位升级扩展区的工人了!" - -#: src/mission_companion.cpp -msgid "Forests and swamps are the only valid cutting locations." -msgstr "只有森林与沼泽地形可作为伐木地点。" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Trip Estimate:\n" -"%s" -msgstr "" -"路程估计:\n" -"%s" - -#: src/mission_companion.cpp -msgid "departs to cut logs..." -msgstr "离队去伐木了……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working in the woods..." -msgstr "%s 从伐木地点归来……" - -#: src/mission_companion.cpp -msgid "Forests, swamps, and fields are valid hide site locations." -msgstr "只有森林、沼泽与旷野地形可作为藏匿点。" - -#: src/mission_companion.cpp -msgid "departs to build a hide site..." -msgstr "离队去建设藏匿点了……" - -#: src/mission_companion.cpp -msgid "You need equipment to setup a hide site..." -msgstr "你需要工具来设置藏匿点……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working on the hide site..." -msgstr "%s 从藏匿点归来……" - -#: src/mission_companion.cpp -msgid "You must select an existing hide site." -msgstr "你必须选择一个已有的藏匿点。" - -#: src/mission_companion.cpp -msgid "Bring gear back?" -msgstr "将装备带回吗?" - -#: src/mission_companion.cpp -msgid "departs for the hide site..." -msgstr "离队去藏匿点了……" - -#: src/mission_companion.cpp -msgid "You need equipment to transport between the hide site..." -msgstr "你需要载具来在藏匿点之间运输……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from shuttling gear between the hide site..." -msgstr "%s 从藏匿点归来……" - -#: src/mission_companion.cpp -msgid "" -"Select a start and end point. Line must be straight. Fields, forests, and " -"swamps are valid fortification locations. In addition to existing " -"fortification constructions." -msgstr "选择一个起点与一个终点,两点间必须为直线,只有森林、沼泽与旷野地形可以建设防御工事。将增加至现有防御工事体系内。" - -#: src/mission_companion.cpp -msgid "Select an end point." -msgstr "选择终点。" - -#: src/mission_companion.cpp -msgid "Invalid terrain in construction path." -msgstr "建设路线内有无效地形。" - -#: src/mission_companion.cpp -msgid "You don't have the material to build the fortification." -msgstr "你需要更多的物资才能够建设防御工事。" - -#: src/mission_companion.cpp -msgid "begins constructing fortifications..." -msgstr "开始建设防御工事……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from constructing fortifications..." -msgstr "%s 建设完防御工事并归来……" - -#: src/mission_companion.cpp -msgid "departs to search for recruits..." -msgstr "离队去招募人手了……" - -#: src/mission_companion.cpp -msgid "" -"Select checkpoints until you reach maximum range or select the last point " -"again to end." -msgstr "选择路径点直到到达距离上限,或者选择上个点以结束。" - -#: src/mission_companion.cpp -msgid "departs on patrol..." -msgstr "离队去巡逻了……" - -#: src/mission_companion.cpp -msgid "Your companion hit a river and didn't know how to swim..." -msgstr "你的同伴到了河边,但不懂得游泳……" - -#: src/mission_companion.cpp -msgid "" -"Your companion hit a river and didn't know how to swim well enough to " -"cross..." -msgstr "你的同伴到了河边,但其游泳等级不足以支撑到河对岸……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't return from patrol..." -msgstr "%s 没能从巡逻中归来……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from patrol..." -msgstr "%s 从巡逻中归来……" - -#: src/mission_companion.cpp -msgid "You already have someone working in that garage." -msgstr "你已经有人在车库中工作了!" - -#: src/mission_companion.cpp -msgid "begins plowing the field..." -msgstr "开始犁地……" - -#: src/mission_companion.cpp -msgid "You already have someone plowing that field." -msgstr "你已经有人在那块田犁地了。" - -#: src/mission_companion.cpp -msgid "You have no additional seeds to give your companions..." -msgstr "你没有足够的种子提供给你的同伴……" - -#: src/mission_companion.cpp -msgid "begins planting the field..." -msgstr "开始播种……" - -#: src/mission_companion.cpp -msgid "Which seeds do you wish to have planted?" -msgstr "你想种植那些种子?" - -#: src/mission_companion.cpp -msgid "You already have someone planting that field." -msgstr "你已经有人在那块田播种了。" - -#: src/mission_companion.cpp -msgid "begins to harvest the field..." -msgstr "开始收获……" - -#: src/mission_companion.cpp -msgid "You already have someone harvesting that field." -msgstr "你已经有人在那块田收获了。" - #: src/mission_companion.cpp msgid "departs to work as a carpenter..." msgstr "当木工中……" @@ -132959,7 +135465,7 @@ msgstr "搜寻食物中……" #: src/mission_companion.cpp #, c-format msgid "The caravan departs with an estimated total travel time of %d hours..." -msgstr "篷车离开了,预估全程时间 %d 小时……" +msgstr "商队出发了,预估全程时间 %d 小时……" #: src/mission_companion.cpp #, c-format @@ -132968,20 +135474,20 @@ msgstr "%s 返回你的团队。" #: src/mission_companion.cpp msgid "A bandit party approaches the caravan in the open!" -msgstr "一个强盗团逼近开启的篷车!" +msgstr "强盗团在野外逼近了商队!" #: src/mission_companion.cpp msgid "A bandit party attacks the caravan while it it's camped!" -msgstr "强盗团攻击了扎营的篷车!" +msgstr "强盗团攻击了扎营的商队!" #: src/mission_companion.cpp msgid "The caravan walks into a bandit ambush!" -msgstr "篷车陷入强盗的埋伏!" +msgstr "商队陷入强盗的埋伏!" #: src/mission_companion.cpp #, c-format msgid "The caravan party has returned. Your share of the profits are $%d!" -msgstr "篷车队回来了。你的利润份额是 $%d!" +msgstr "商队回来了。你的利润份额是 $%d!" #: src/mission_companion.cpp msgid "The caravan was a disaster and your companions never made it home..." @@ -133140,267 +135646,6 @@ msgid "" "participate in advanced tasks." msgstr "%s 对你的同伴更有信心了,并且愿意让他参与更进一步的任务" -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"%s\n" -" \n" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s \n" -"Risk: None\n" -"Time: %s\n" -msgstr "" -"说明:\n" -"%s\n" -"\n" -"技能:%s\n" -"需求等级:%d\n" -"%s\n" -"风险:无\n" -"耗时:%s\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s\n" -"Time: %s\n" -msgstr "" -"技能:%s\n" -"需求等级:%d\n" -"%s\n" -"耗时:%s\n" - -#: src/mission_companion.cpp -msgid "" -"Notes: \n" -"Send a companion to gather materials for the next camp upgrade.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -msgstr "" -"说明:\n" -"选择一名同伴去为营地的下次升级收集物资。\n" -" \n" -"技能:生存\n" -"需求等级:无\n" -"可能的收集物:\n" - -#: src/mission_companion.cpp -msgid "" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: " -msgstr "" -" \n" -"风险:极低\n" -"耗时:3小时/次,可重复\n" -"位置:" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from upgrading the camp having earned a bit of experience..." -msgstr "%s 升级营地归来,并获得了一些经验……" - -#: src/mission_companion.cpp -#, c-format -msgid "While gathering supplies, a silent specter approaches %s..." -msgstr "在收集物资时,一个幽灵般的身影悄无声息地接近了 %s……" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s notices the antlered horror and slips away before it gets too close." -msgstr "%s 察觉到了这只可怕的鹿角怪物,并在它靠近前悄悄地溜走了。" - -#: src/mission_companion.cpp -#, c-format -msgid "The survivor approaches %s asking for directions." -msgstr "一位幸存者现身并向 %s 问路。" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Fearful that he may be an agent of some hostile faction, %s doesn't mention " -"the camp." -msgstr "由于担心他可能是某个敌对派系的斥候, %s 并未透露任何关于幸存者营地的消息。" - -#: src/mission_companion.cpp -msgid "The two part on friendly terms and the survivor isn't seen again." -msgstr "两人友好地交流完之后各自离开,从此再也没人遇见过那个神秘的幸存者。" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't detect the ambush until it was too late!" -msgstr "%s 察觉到自己被伏击时已经太迟了!" - -#: src/mission_companion.cpp -#, c-format -msgid "The bull moose charged %s from the tree line..." -msgstr "一只公驼鹿从树林边缘径直朝 %s 冲了过来……" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Despite being caught off guard %s was able to run away until the moose gave " -"up pursuit." -msgstr "尽管被打了个措手不及,但是 %s 仍然成功摆脱了驼鹿的追赶。" - -#: src/mission_companion.cpp -#, c-format -msgid "The jabberwock grabbed %s by the arm from behind and began to scream." -msgstr "伽卜沃奇从后面一把抓住了%s 的手臂,并突然开始尖叫。" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Terrified, %s spun around and delivered a massive kick to the creature's " -"torso..." -msgstr "%s 惊恐之中转过身来朝那个怪物的肚子狠狠踢了一脚……" - -#: src/mission_companion.cpp -#, c-format -msgid "Collapsing into a pile of gore, %s walked away unscathed..." -msgstr "怪物缓缓变成了一滩肉泥,而 %s 毫发无伤地离开了……" - -#: src/mission_companion.cpp -msgid "(Sounds like bullshit, you wonder what really happened.)" -msgstr "(牛皮都要吹上天了,你反复琢磨实际上发生了什么。)" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s turned to find the hideous black eyes of a giant wasp staring back from " -"only a few feet away..." -msgstr "%s 转过身来,正好和几步之外一只巨型黄蜂那恐怖的黑色眼睛正面相对……" - -#: src/mission_companion.cpp -msgid "The screams were terrifying, there was nothing anyone could do." -msgstr "一声可怕的尖叫传了出来,但是附近并没有任何人能帮忙。" - -#: src/mission_companion.cpp -#, c-format -msgid "Pieces of %s were found strewn across a few bushes." -msgstr "%s 的残肢被发现散落在周围的灌木丛上。" - -#: src/mission_companion.cpp -msgid "(You wonder if your companions are fit to work on their own...)" -msgstr "(你深刻地反省你的同伴是否胜任独自一人在野外工作……)" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from gathering materials carrying supplies and has a bit more " -"experience..." -msgstr "%s 收集物资归来,并获得了一些经验……" - -#: src/mission_companion.cpp -msgid "Your companion seems disappointed that your pantry is empty..." -msgstr "食物补给已经空了,大伙们都很沮丧……" - -#: src/mission_companion.cpp -#, c-format -msgid "" -" Chopping this vehicle:\n" -"%s" -msgstr "" -" 拆卸载具:\n" -"%s" - -#: src/mission_companion.cpp -msgid "begins working in the garage..." -msgstr "开始在车库工作……" - -#: src/mission_companion.cpp -msgid "No seeds to plant!" -msgstr "没有可以种植的种子!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working your fields..." -msgstr "%s 从田里归来……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from doing the dirty work to keep the camp running..." -msgstr "%s 干完维持营地正常运作的各项脏活杂活归来……" - -#: src/mission_companion.cpp -msgid "Sorting points have changed, forcing reset." -msgstr "物品储存点已变更,重置任务点。" - -#: src/mission_companion.cpp -msgid "Select an expansion:" -msgstr "选择扩展区:" - -#: src/mission_companion.cpp -msgid "You choose to wait..." -msgstr "你决定等等再说……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from surveying for the expansion." -msgstr "%s 完成了选址并归来。" - -#: src/mission_companion.cpp -msgid "No items are located at the drop point..." -msgstr "食物储藏点没有任何物品……" - -#: src/mission_companion.cpp -#, c-format -msgid "You distribute %d kcal worth of food to your companions." -msgstr "你将 %d 千卡热量的食物分发给了你的同伴们。" - -#: src/mission_companion.cpp -msgid "Harvestable: " -msgstr "可收获:" - -#: src/mission_companion.cpp -msgid "Ready for Planting: " -msgstr "可种植:" - -#: src/mission_companion.cpp -msgid "Needs Plowing: " -msgstr "需犁地:" - -#: src/mission_companion.cpp -#, c-format -msgid "Name: %25s\n" -msgstr "载具名称:%25s\n" - -#: src/mission_companion.cpp -msgid "---- Engines ----\n" -msgstr "---- 引擎 ----\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Engine: %25s\n" -msgstr "引擎:%25s\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Status: %24d%%\n" -msgstr "> 车辆状态:%24d%%\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Fuel: %25s\n" -msgstr "> 燃料类型:%25s\n" - -#: src/mission_companion.cpp -msgid "---- Fuel Storage & Battery ----\n" -msgstr "---- 燃料及电池 ----\n" - -#: src/mission_companion.cpp -msgid "Estimated Chop Time: 5 Days\n" -msgstr "预计拆解时间:5天\n" - #: src/mission_companion.cpp #, c-format msgid "While %s was framing a building one of the walls began to collapse..." @@ -133558,401 +135803,6 @@ msgstr "召回哪个同伴?" msgid "No one returns to your party..." msgstr "没人返回你的团队……" -#: src/mission_companion.cpp -msgid "MAIN" -msgstr "主营地" - -#: src/mission_companion.cpp -msgid " [N] " -msgstr "[北]" - -#: src/mission_companion.cpp -msgid " [NE] " -msgstr "[东北]" - -#: src/mission_companion.cpp -msgid " [E] " -msgstr "[东]" - -#: src/mission_companion.cpp -msgid " [SE] " -msgstr "[东南]" - -#: src/mission_companion.cpp -msgid " [S] " -msgstr "[南]" - -#: src/mission_companion.cpp -msgid " [SW] " -msgstr "[西南]" - -#: src/mission_companion.cpp -msgid " [W] " -msgstr "[西]" - -#: src/mission_companion.cpp -msgid " [NW] " -msgstr "[西北]" - -#: src/mission_companion.cpp -msgid "Farm Expansion" -msgstr "农场扩展区" - -#: src/mission_companion.cpp -msgid "Garage Expansion" -msgstr "车库扩展区" - -#: src/mission_companion.cpp -msgid "Kitchen Expansion" -msgstr "厨房扩展区" - -#: src/mission_companion.cpp -msgid "Blacksmith Expansion" -msgstr "铁匠铺扩展区" - -#: src/mission_companion.cpp -msgid "Empty Expansion" -msgstr "空扩展区" - -#: src/mission_companion.cpp -#, c-format -msgid "Select a location between %d and %d tiles away." -msgstr "选择一块 %d 至 %d 块远的区块。" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"You must select a target between %d and %d range from the base. Range: %d" -msgstr "你必须选择一块距离当前营地 %d 至 %d 块远的位置。当前距离:%d" - -#: src/mission_companion.cpp -msgid "You must be able to see the target that you select." -msgstr "你需要选择一块已侦查过的区域。" - -#: src/mission_companion.cpp -msgid "Do you want to bounce off this location to extend range?" -msgstr "选择该藏匿处来增加探索距离吗?" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15.2f (km)\n" -msgstr "> 距离: %15.2f(公里)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">One Way: %15d (trips)\n" -msgstr "> 单程: %15d(次)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15.2f (km)\n" -msgstr "> 总行程: %15.2f(公里)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15d (m)\n" -msgstr "> 距离: %15d(米)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15d (m)\n" -msgstr "> 总行程: %15d(米)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Travel: %15d (hours)\n" -msgstr "> 往返耗时:%15d(小时)\n" - -#: src/mission_companion.cpp -#, c-format -msgid ">Working: %15d (hours)\n" -msgstr "> 工作耗时:%15d(小时)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (days)\n" -msgstr "共计: %15d(天)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (hours)\n" -msgstr "共计: %15d(小时)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (minutes)\n" -msgstr "共计: %15d(分钟)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Food: %15d (kcal)\n" -" \n" -msgstr "" -"支付食物: %15d(千卡)\n" -"\n" - -#: src/mission_companion.cpp -msgid "food for you" -msgstr "食物" - -#: src/mission_companion.cpp -msgid "food for companions" -msgstr "待分发食物" - -#: src/mission_companion.cpp -msgid "weapons" -msgstr "武器" - -#: src/mission_companion.cpp -msgid "clothing" -msgstr "装备" - -#: src/mission_companion.cpp -msgid "bionics" -msgstr "生化插件" - -#: src/mission_companion.cpp -msgid "all kinds of tools" -msgstr "各类工具" - -#: src/mission_companion.cpp -msgid "wood of various sorts" -msgstr "木材" - -#: src/mission_companion.cpp -msgid "trash and rotting food" -msgstr "垃圾和腐烂食物" - -#: src/mission_companion.cpp -msgid "books" -msgstr "书籍" - -#: src/mission_companion.cpp -msgid "medication" -msgstr "药物" - -#: src/mission_companion.cpp -msgid "ammo" -msgstr "弹药" - -#: src/mission_companion.cpp -#, c-format -msgid "Reset point: %s?" -msgstr "重置储存点:%s?" - -#: src/mission_companion.cpp -msgid "" -" Items New Point Old Point\n" -" \n" -msgstr "" -" 物品类别 新位置 旧位置\n" -" \n" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -" Save Points?" -msgstr "" -"\n" -" \n" -" 保存储存点位置吗?" - -#: src/mission_companion.cpp -msgid "Revert to default points?" -msgstr "恢复默认储存点位置吗?" - -#: src/mission_companion.cpp -msgid "You don't have the materials to craft that" -msgstr "你需要更多材料才能够制造它" - -#: src/mission_companion.cpp -#, c-format -msgid "Batch crafting %s [MAX: %d]: " -msgstr "成批制造 %s [最大:%d]:" - -#: src/mission_companion.cpp -msgid "Your batch is too large!" -msgstr "你制造的批次太多了!" - -#: src/mission_companion.cpp -msgid "You already have someone working in that expansion." -msgstr "你已经有人在那个扩展区内工作了!" - -#: src/mission_companion.cpp -msgid "begins to work..." -msgstr "开始工作……" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" -" \n" -"Skill used: speech\n" -"Difficulty: 2 \n" -"Base Score: +%3d%%\n" -"> Expansion Bonus: +%3d%%\n" -"> Faction Bonus: +%3d%%\n" -"> Special Bonus: +%3d%%\n" -" \n" -"Total: Skill +%3d%%\n" -" \n" -"Risk: High\n" -"Time: 4 Days\n" -"Positions: %d/1\n" -msgstr "" -"说明:\n" -"招募新同伴是一项非常危险且花费巨大的任务。任务结果很大程度上取决于你所派出同伴的技能和你派系营地的吸引力。\n" -"\n" -"技能:口才\n" -"需求等级:2\n" -"\n" -"营地等级: +%3d%%\n" -"扩展区加成:+%3d%%\n" -"派系加成: +%3d%%\n" -"特殊加成: +%3d%%\n" -"\n" -"共计: + %3d%%\n" -"\n" -"风险:高\n" -"耗时:4天\n" -"位置:%d/1\n" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from searching for recruits with a bit more experience..." -msgstr "%s 从招募人手归来,并获得了一些经验……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s encountered %s..." -msgstr "%s 遇到了 %s……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't find anyone to recruit..." -msgstr "%s 没遇到一个人……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s convinced %s to hear a recruitment offer from you..." -msgstr "%s 让 %s 勉强听了你的招募条件……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested in anything %s had to offer..." -msgstr "%s 对 %s 所提出的招募条件没有任何兴趣……" - -#: src/mission_companion.cpp -msgid "" -"NPC Overview:\n" -" \n" -msgstr "NPC概况:\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Name: %20s\n" -" \n" -msgstr "" -"名字:%20s\n" -"\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Strength: %10d\n" -msgstr "力量:%10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Dexterity: %10d\n" -msgstr "敏捷:%10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Intelligence: %10d\n" -msgstr "智力:%10d\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Perception: %10d\n" -" \n" -msgstr "" -"感知:%10d\n" -"\n" - -#: src/mission_companion.cpp -msgid "Top 3 Skills:\n" -msgstr "前3技能等级:\n" - -#: src/mission_companion.cpp -msgid "Asking for:\n" -msgstr "开价:\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"> Food: %10d days\n" -" \n" -msgstr "" -"> 支付食物:%10d天\n" -"\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Faction Food:%9d days\n" -" \n" -msgstr "" -"派系食物:%9d天\n" -"\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Recruit Chance: %10d%%\n" -" \n" -msgstr "" -"招募几率:%10d%%\n" -"\n" - -#: src/mission_companion.cpp -msgid "Select an option:" -msgstr "选择选项:" - -#: src/mission_companion.cpp -msgid "Increase Food" -msgstr "增加食物" - -#: src/mission_companion.cpp -msgid "Decrease Food" -msgstr "减少食物" - -#: src/mission_companion.cpp -msgid "Make Offer" -msgstr "开价" - -#: src/mission_companion.cpp -msgid "Not Interested" -msgstr "不感兴趣" - -#: src/mission_companion.cpp -msgid "You decide you aren't interested..." -msgstr "你对这个NPC不感兴趣,决定放弃……" - -#: src/mission_companion.cpp -#, c-format -msgid "%s has been convinced to join!" -msgstr "%s 被说服加入我们了!" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested..." -msgstr "%s 并不感兴趣……" - #: src/mission_companion.h msgid "Do you wish to give your companion additional items?" msgstr "你想要给与你的同伴额外的物品吗?" @@ -134913,7 +136763,7 @@ msgstr "%s 试图电击 ,但是失败了。" #: src/monattack.cpp #, c-format msgid "The %s shocks you!" -msgstr "%s 电击到了你!" +msgstr "%s 电击了你!" #: src/monattack.cpp #, c-format @@ -136596,9 +138446,10 @@ msgstr "剩余点数:%4d" msgid "Freeform" msgstr "无限制" -#: src/newcharacter.cpp -msgid "Pick your style:" -msgstr "选择武术流派:" +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" +msgstr "选择武术流派(按 %s 键显示更多信息)" #: src/newcharacter.cpp msgid "Use this style?" @@ -137809,44 +139660,6 @@ msgstr "如果你感兴趣的话,我这里正好需要些帮手。" msgid " If you are interested, I have another job for you." msgstr "你有兴趣的话,我这还有个活。" -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "交易愉快!" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "呵呵,我估计就我们两个活人了。" - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "好歹我们还有个避难所可以呆。" - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "不知道,或许我们应该寻找其他幸存者和补给。" - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "也许我们该开始加固这个地方。" - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to" -" disappear quickly from here." -msgstr "也许该弄好一辆车了,这对我们从这里迅速撤离是很有帮助的。" - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "我知道周边有几个农场,我们可以去找一个落脚。它们可以提供充足的食物,而且也不用在城市里和那些家伙打照面。" - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "也许我们应该远离那些城市,即便那里有不少有用的东西。" - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." msgstr "你刚刚问我要过东西了,晚点再说吧。" @@ -137855,10 +139668,6 @@ msgstr "你刚刚问我要过东西了,晚点再说吧。" msgid "Why should I share my equipment with you?" msgstr "为何我应该跟你分享自己的装备?" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "好的,给你。" - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr ",如果你敢再问,!" @@ -137879,46 +139688,6 @@ msgstr "对不起,你懂得比我多多了,还是另请高明吧。" msgid "Here's what I can teach you..." msgstr "我能够给你传授一些人生经验…" -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "好吧,让我们开始吧。" - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "直到我得到一些抗生素……" - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "你刚才问过我了,我仍在考虑中,一会再问我吧。" - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "为什么我应该跟你同行?" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "如你所愿,我和你一起走!" - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "噢……我并不这么认为。" - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "干什么?" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "你真的要离开?" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "好吧,现在你说了算。" - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "不。我是这里的首领。" - #: src/npctalk.cpp #, c-format msgid "%d.%d miles." @@ -137930,22 +139699,6 @@ msgid "%d foot." msgid_plural "%d feet." msgstr[0] "%d 英尺。" -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "有我盯着呢。" - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "一点可能也没有。我要留下来!" - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "我还是留着给自己吧。" - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "这么做让我很不爽啊……" - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "*不攻击敌人。" @@ -138251,30 +140004,6 @@ msgstr "我们还会再见的……" msgid "Delivering bandages." msgstr "提供绷带。" -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "[询问]我们现在该做什么?" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "[询问]有什么建议吗?" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "[组队]与我同行吧,如何?" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "[交易]做些交易吧,怎样?" - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "[索取]请给我些你的装备,可以吗?" - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "嗯嗯,好吧。" - #: src/npctalk.cpp msgid "Okay, fine." msgstr "好的,算了。" @@ -138307,30 +140036,6 @@ msgstr "[取消]嗯,不用了。" msgid "Never mind, I'll do without. Bye." msgstr "[取消]没关系,再见。" -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "嗯,谢了!" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "感谢!能否再给一些?" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "谢了,请多保重!" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "好吧,我表示抱歉。" - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "真的,再谈一下如何?" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "嗯嗯,那就这样,再会。" - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "是的,让我们接着训练 。" @@ -138352,94 +140057,6 @@ msgstr "%s: %d -> %d" msgid "%s: %d -> %d (cost $%d)" msgstr "%s:%d -> %d (花费 $%d)" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "[确认]听起来不错,开始吧。" - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "[取消]回头想一想,算了吧。" - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "好的,你来带路吧。" - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "不要,在这挺好的。" - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "明白了,我会把抗生素拿给你的。" - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "好吧,以后再问你吧。" - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "因为我有能力保护你啊。" - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "因为你能保护我的安全。" - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "因为我们是朋友啊,对吧?" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "要是不答应我就杀了你。" - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "嗯,那太好了!" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "好的,我们出发吧!" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "还有多远?" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "[解散]我们就此分开吧。" - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "让我来带路吧。" - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "一边去,现在我是领队!" - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "一起走吧。" - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "[取消]我只是在开个玩笑。" - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "[确认]是的,再见吧。" - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "好的。还有别的事……" - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "好的,出发吧。" - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "OK,OK。" - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "OK,谢谢。" @@ -138448,10 +140065,6 @@ msgstr "OK,谢谢。" msgid "Let's keep moving." msgstr "继续赶路吧。" -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "[归队]我需要你和我一起走。" - #: src/npctalk.cpp msgid "Combat commands..." msgstr "[战术]按我说的方式战斗……" @@ -138509,16 +140122,12 @@ msgid "Miscellaneous rules..." msgstr "[其它]按我说的去做……" #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "我们来谈谈派系营地的事情。" - -#: src/npctalk.cpp -msgid "I'll give you some space." -msgstr "我会给你点空间。" +msgid "I'm going to go my own way for a while." +msgstr "[解散]我们就此分开吧。" #: src/npctalk.cpp -msgid "I understand..." -msgstr "我明白……" +msgid "Let's talk about faction camps." +msgstr "我们来谈谈派系营地的事情。" #: src/npctalk.cpp msgid "Change your engagement rules..." @@ -139231,6 +140840,11 @@ msgid "" " - Butcher: Butcher corpses you stand on." msgstr "开启自动屠宰/砸碎尸体功能后进行的操作。砸碎:自动砸碎脚下的尸体。砸碎附近:自动砸碎身边的尸体。屠宰:自动屠宰脚下的尸体。" +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "关" + #: src/options.cpp msgid "Pulp" msgstr "砸碎" @@ -139419,10 +141033,6 @@ msgstr "总是:总是显示死亡特写。询问:在死亡前询问。从不 msgid "Always" msgstr "总是" -#: src/options.cpp -msgid "Ask" -msgstr "询问" - #: src/options.cpp msgid "Never" msgstr "从不" @@ -141756,8 +143366,7 @@ msgstr "能量:%d/%d" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "武器:" +msgstr "武器:" #: src/player.cpp msgid "Equipment:" @@ -141988,7 +143597,7 @@ msgstr "你 %s 上的包扎受损了!" #: src/player.cpp #, c-format msgid "You got some filth on your disinfected %s!" -msgstr "你 %s 上的消毒伤口受污染了!" +msgstr "你 %s 上的已消毒伤口受污染了!" #: src/player.cpp #, c-format @@ -141998,7 +143607,7 @@ msgstr "你 %s 上的包扎被完全毁坏了!" #: src/player.cpp #, c-format msgid "Your %s is no longer disinfected!" -msgstr "你 %s 上的消毒伤口被完全污染了!" +msgstr "你 %s 上的已消毒伤口被完全污染了!" #: src/player.cpp #, c-format @@ -142226,12 +143835,12 @@ msgstr "你蜷缩身躯挤进这辆车。" #: src/player.cpp #, c-format msgid "Bandaged wounds on your %s was healed." -msgstr "你 %s 上的包扎伤口已经完全治愈了。" +msgstr "你 %s 上的已包扎伤口已经完全治愈了。" #: src/player.cpp #, c-format msgid "Disinfected wounds on your %s was healed." -msgstr "你 %s 上的消毒伤口已经完全治愈了。" +msgstr "你 %s 上的已消毒伤口已经完全治愈了。" #: src/player.cpp #, c-format @@ -142503,7 +144112,7 @@ msgstr "你到这来做什么?" #: src/player.cpp msgid "That's not true, is it?" -msgstr "那不是真的.....吧?" +msgstr "那不是真的,对吧?" #: src/player.cpp msgid "Are you hurt?" @@ -143212,21 +144821,6 @@ msgstr "将 %s 从 %s 取出?" msgid "Stop wielding %s?" msgstr "停止手持 %s?" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "技法:" - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "该武术流派强制你使用徒手攻击,即便你手持武器。" - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "选择武术流派(按 %s 键显示更多信息)" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "保持空手(关)" @@ -143282,6 +144876,11 @@ msgstr "损坏" msgid "Mend" msgstr "修复" +#: src/player.cpp +#, c-format +msgid "The %s doesn't have any faults to toggle." +msgstr "%s 没有故障可以切换。" + #: src/player.cpp #, c-format msgid "The %s doesn't have any faults to mend." @@ -143996,7 +145595,7 @@ msgstr "" msgid "" "Covering your mouth will make it more difficult to breathe and catch your " "breath." -msgstr "口部累赘会让你呼吸和喘气变得更加困难,降低体力恢复速度。" +msgstr "嘴部累赘会让你呼吸和喘气变得更加困难,降低体力恢复速度。" #: src/player_display.cpp msgid "" @@ -144034,10 +145633,6 @@ msgstr "智力" msgid "Perception" msgstr "感知" -#: src/player_display.cpp -msgid "Speed" -msgstr "速度" - #: src/player_display.cpp msgid "Severely Malnourished" msgstr "严重营养不良" @@ -145120,11 +146715,15 @@ msgstr "Kaboom!" msgid "kerblam!" msgstr "咔嘣!" +#: src/recipe.cpp +msgid "none" +msgstr "无" + #: src/requirements.cpp #, c-format msgid "%d tool with %s of %d or more." msgid_plural "%d tools with %s of %d or more." -msgstr[0] "%d 个工具,它应至少有 %s 等级 %d。" +msgstr[0] "%d 个 %s 功能至少 %d 级的工具。" #. ~ ( charges) #: src/requirements.cpp @@ -146439,6 +148038,21 @@ msgstr "按\"{\"向上卷动" msgid "'}' to scroll down" msgstr "按\"}\"向下卷动" +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "移除损坏的 %1$s 可获得部分零件。\n" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" +msgstr "" +"移除 %1$s 可获得:\n" +"> %2$s\n" + #: src/veh_interact.cpp #, c-format msgid "> %2$s" @@ -147294,13 +148908,13 @@ msgstr "电力不足以启动 %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" -msgstr "关闭 %s" +msgid "Turn on %s" +msgstr "打开 %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" -msgstr "打开 %s" +msgid "Turn off %s" +msgstr "关闭 %s" #: src/vehicle_use.cpp #, c-format @@ -147378,27 +148992,23 @@ msgstr "播种机" #: src/vehicle_use.cpp msgid "Turn off camera system" -msgstr "关闭监视系统" +msgstr "关闭监控系统" #: src/vehicle_use.cpp msgid "Turn on camera system" -msgstr "开启监视系统" +msgstr "开启监控系统" #: src/vehicle_use.cpp msgid "Camera system disabled" -msgstr "监视系统关闭了" +msgstr "监控系统关闭了" #: src/vehicle_use.cpp msgid "Camera system enabled" -msgstr "监视系统启动了" +msgstr "监控系统启动了" #: src/vehicle_use.cpp msgid "Camera system won't turn on" -msgstr "监视系统无法启动" - -#: src/vehicle_use.cpp -msgid "Quit controlling electronics" -msgstr "停止控制电子设备" +msgstr "监控系统无法启动" #: src/vehicle_use.cpp msgid "Electronics controls" @@ -148116,7 +149726,7 @@ msgstr "模组载入顺序" #: src/worldfactory.cpp #, c-format msgid "... %s = View full description " -msgstr "... %s = 显示完整说明" +msgstr "… %s = 显示完整说明" #: src/worldfactory.cpp msgid "--NO AVAILABLE MODS--" diff --git a/lang/po/zh_TW.po b/lang/po/zh_TW.po index 1ee1a27967324..fd99c8b4a46ec 100644 --- a/lang/po/zh_TW.po +++ b/lang/po/zh_TW.po @@ -1,8 +1,8 @@ # Translators: +# wei-yu chang (かつき) , 2018 # Leon Huang , 2018 # 丁 丁 , 2018 # River Hw, 2018 -# wei-yu chang (かつき) , 2018 # Jack Cross , 2018 # Jeremy Wu , 2018 # HOXV , 2018 @@ -11,17 +11,17 @@ # cheung wai , 2018 # Brett Dong , 2018 # 林楷翌 , 2018 -# Hao JK , 2018 -# Laughing Man, 2018 -# xap, 2018 # kiddragon Chung , 2018 +# xap, 2018 +# Laughing Man, 2018 +# Hao JK , 2018 # Hsinyu Chan, 2018 # msgid "" msgstr "" "Project-Id-Version: cataclysm-dda 0.C\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-26 22:02+0800\n" +"POT-Creation-Date: 2018-11-16 22:24+0800\n" "PO-Revision-Date: 2018-04-26 14:47+0000\n" "Last-Translator: Hsinyu Chan, 2018\n" "Language-Team: Chinese (Taiwan) (https://www.transifex.com/cataclysm-dda-translators/teams/2217/zh_TW/)\n" @@ -98,7 +98,7 @@ msgstr "毛紗" #. ~ Description for yarn #: lang/json/AMMO_from_json.py msgid "Wool yarn, could be used to knit wool clothing." -msgstr "毛紗能夠用來織成羊毛服裝。" +msgstr "毛紗能夠用來織成羊毛衣物。" #: lang/json/AMMO_from_json.py msgid "soap bar" @@ -427,7 +427,7 @@ msgid "" "A flammable carbon-based material produced by slowly burning wood. Utilized" " in recipes requiring a pure, hot flame. Can also be used in filters to " "remove contaminants out of air and water." -msgstr "藉由緩慢地燃燒木材產生的易燃碳材。用於需要純淨、高溫火焰地配方。也可以用於過濾, 去除空氣和水中的汙染物。" +msgstr "藉由緩慢地燃燒木頭產生的易燃碳材。能用於需要純淨、高溫火焰的物品製作配方。也可以用於過濾, 去除空氣和水中的汙染物。" #: lang/json/AMMO_from_json.py msgid "coal" @@ -580,7 +580,7 @@ msgid "" "A hand-built rocket, consisting of a container of flammable gel attached " "onto a pipe, filled with improvised rocket fuel. Short-range incendiary - " "handle with care!" -msgstr "" +msgstr "這是一枚手工製的火箭, 將一個裝滿易燃凝膠狀物的容器綁在一根鋼管上, 鋼管內當然也裝滿了粗製的火箭燃料。這傢伙射程很短, 小心使用!" #: lang/json/AMMO_from_json.py msgid "unfinished charcoal" @@ -645,7 +645,7 @@ msgid "" "A simple arrow shaft with a crude arrowhead and fletching. Useful for " "hunting small woodland creatures, or as a last ditch defense against " "zombies. Stands a below average chance of remaining intact once fired." -msgstr "" +msgstr "一個簡易箭桿, 前方有個粗製箭頭, 後方裝了箭羽。適合用來狩獵小動物, 或是作為對抗殭屍的最後手段。射擊後只有低機率可以被回收並再次使用。" #: lang/json/AMMO_from_json.py msgid "small game arrow" @@ -657,7 +657,7 @@ msgid "" "A simple arrow shaft that has a wide, blunt head. Useful for hunting small " "woodland creatures without splattering them all over the ground, but stands " "a below average chance of remaining intact once fired." -msgstr "" +msgstr "一個簡易箭桿, 前方有個又寬又鈍箭頭。適合用來狩獵小動物而不會讓肉片飛的到處都是。射擊後有低機率可以被回收並再次使用。" #: lang/json/AMMO_from_json.py msgid "wooden arrow" @@ -669,7 +669,7 @@ msgid "" "A basic wooden arrow, it has a metal arrowhead and fletching. It's " "lightweight, does some damage, and is so-so on accuracy. Stands a below " "average chance of remaining intact once fired." -msgstr "" +msgstr "一根普通的木箭矢, 裝著金屬箭頭與箭羽。它的重量很輕, 能造成一些傷害, 命中率普普。射擊後有低機率可以被回收並再次使用。" #: lang/json/AMMO_from_json.py msgid "heavy fire-hardened arrow" @@ -707,6 +707,8 @@ msgid "" "flies straighter, resulting in better accuracy over a longer range. Stands " "a good chance of remaining intact once fired." msgstr "" +"一根重箭矢, 被裝上了金屬箭頭和箭羽。它比其他的箭矢要沉重得多, 因此可以造成更多的傷害, 並且飛行得更穩定, " +"使得它的命中率與射程有所提高。發射後不易損壞, 回收率相當高。" #: lang/json/AMMO_from_json.py msgid "sharpened metal arrow" @@ -717,11 +719,11 @@ msgstr "磨尖金屬箭" msgid "" "This metal shaft has been roughly sharpened so that it has a crude point at " "the end. Stands a very good chance of remaining intact once fired." -msgstr "" +msgstr "這根金屬箭桿已經被粗略地磨尖過了, 在它的前方有著粗糙的尖頂。射擊後有非常高的機率可以被回收並再次使用。" #: lang/json/AMMO_from_json.py msgid "metal broadhead arrow" -msgstr "" +msgstr "金屬寬頭箭" #. ~ Description for metal broadhead arrow #: lang/json/AMMO_from_json.py @@ -732,18 +734,18 @@ msgstr "這根金屬箭矢上裝著鋼製箭頭與箭羽。射擊後有非常高 #: lang/json/AMMO_from_json.py msgid "metal bodkin arrow" -msgstr "" +msgstr "金屬錐頭箭" #. ~ Description for metal bodkin arrow #: lang/json/AMMO_from_json.py msgid "" "This metal arrow has fletching and a steel bodkin arrowhead for armor " "penetration. Stands a very good chance of remaining intact once fired." -msgstr "" +msgstr "這根金屬箭矢上帶有箭羽與用來穿透護甲的鋼製錐形箭頭。射擊後有非常高的機率可以被回收並再次使用。" #: lang/json/AMMO_from_json.py msgid "metal target arrow" -msgstr "" +msgstr "金屬標點箭" #. ~ Description for metal target arrow #: lang/json/AMMO_from_json.py @@ -752,6 +754,7 @@ msgid "" "for extra accuracy, at the cost of some damage. Stands a very good chance " "of remaining intact once fired." msgstr "" +"這根金屬箭矢有著額外長度的箭羽, 以及用來提高額外命中率的圓而平衡的箭頭, 代價是降低一些傷害力。射擊後有非常高的機率可以被回收並再次使用。" #: lang/json/AMMO_from_json.py msgid "carbon fiber arrow" @@ -762,7 +765,7 @@ msgstr "碳纖維箭" msgid "" "High-tech carbon fiber shafts and 100 grain broadheads. Very lightweight, " "fast, and durable. Stands a great chance of remaining intact once fired." -msgstr "" +msgstr "這根高科技碳纖維箭桿上裝著 100 格令寬刃箭頭。質輕、快速且耐用。射擊後有極高機率可以被回收並再次使用。" #: lang/json/AMMO_from_json.py msgid "explosive arrow" @@ -775,7 +778,7 @@ msgid "" " and bulky, not only does this contraption require expert hands to pull off " "a shot, it requires one to loose this with a small measure of confidence " "that the shooter won't be caught in the blast radius." -msgstr "" +msgstr "這根箭前端裝有小型土製炸彈。非常不精準且笨重。要使用這東西不只需要一個專業的射手將它射到目標, 還要那射手夠自信不會被捲入爆炸半徑內。" #: lang/json/AMMO_from_json.py msgid "flaming arrow" @@ -868,7 +871,7 @@ msgstr "這根塑膠箭矢上裝著塑膠箭頭與箭羽。射擊後有高機率 #: lang/json/AMMO_from_json.py msgid "anesthetic kit" -msgstr "" +msgstr "麻醉包" #. ~ Description for anesthetic kit #: lang/json/AMMO_from_json.py @@ -877,7 +880,7 @@ msgid "" "with a variety of powerful hypnotic, analgetic, and stimulative drugs. It's" " intended for use in specialized medical equipment, and can't be " "administered manually." -msgstr "" +msgstr "一組用來導引手術麻醉的工具包, 包含各種強效催眠藥、止痛藥和興奮藥的專用藥罐。它只能用於專業的醫療設備中, 不能手動使用。" #: lang/json/AMMO_from_json.py msgid "sulfur" @@ -928,7 +931,7 @@ msgid "" "A handful of small chunks of limestone. Useful for experiments at science " "fairs, but pretty useless as ammo. Maybe something could be crafted from " "this stuff…" -msgstr "一小把石灰石碎塊。適合在科展上做實驗給大家看, 但用來當彈藥就沒什麼用了。也許能用來做成別的什麼..." +msgstr "一小把石灰石碎塊。適合在科展上做實驗給大家看, 但用來當彈藥就沒什麼用了。也許能用來做成別的什麼…" #: lang/json/AMMO_from_json.py msgid "quicklime" @@ -943,7 +946,7 @@ msgid "" "severe burns to any tissue it comes in contact with. This property could " "probably be exploited..." msgstr "" -"石灰石經燃燒後的成品, 這些白色粉末是製作水泥的主要材料。請注意, 生石灰具有很強的腐蝕性, 直接接觸很可能會導致灼傷。這個特性或許有別的用途..." +"石灰石經燃燒後的成品, 這些白色粉末是製作水泥的主要材料。請注意, 生石灰具有很強的腐蝕性, 直接接觸很可能會導致灼傷。這個特性或許有別的用途…" #: lang/json/AMMO_from_json.py lang/json/terrain_from_json.py msgid "sand" @@ -1062,7 +1065,7 @@ msgid "" "noise and could maybe be used as a decoy..." msgstr "" "一小撮碳化鈣 (電石) 塊, 散發出一股淡淡的蒜味。在商業上, 碳化鈣用於即時製造乙炔, 歷史上也用於點亮乙炔燈。如果與水混合並將他密封, " -"它會產生小威力但大聲響的爆炸, 可以用來作為誘餌..." +"它會產生小威力但大聲響的爆炸, 可以用來作為誘餌…" #: lang/json/AMMO_from_json.py lang/json/ammunition_type_from_json.py msgid "hexamine" @@ -1197,6 +1200,8 @@ msgid "" "mixture is a common industrial explosive due to its stability and low price." " Burns fast, but needs an explosive primer to detonate..." msgstr "" +"幾顆褐色的小球, 透過吸收硝酸銨上的有機燃料而製成。如同它本身的名字, 因為性質穩定以及低廉的價格, 這項被稱為銨油炸藥 (ANFO) " +"的化學混合物為普遍的工業用炸藥原料。燒起來很快, 但是它仍需要炸藥引信才能引爆。" #: lang/json/AMMO_from_json.py msgid "black gunpowder" @@ -1241,8 +1246,8 @@ msgid "" "explosive, used to initiate detonation of more stable explosives, such as " "RDX. Relatively stable, but best not store it for too long..." msgstr "" -"過氧化六亞甲基四胺: 這些淡黃色的粉末是一種強力的主流爆裂物原料。主要用來做為更穩定爆裂物的起爆藥, 例如旋風炸藥。雖然本身性質相對穩定, " -"但最好不要儲存太久..." +"過氧化烏洛托品: 這些淡黃色的粉末是一種強力的主流爆裂物原料。主要用來做為更穩定爆裂物的起爆藥, 例如旋風炸藥。雖然本身性質相對穩定, " +"但最好不要儲存太久…" #: lang/json/AMMO_from_json.py msgid "rocket fuel" @@ -1302,7 +1307,7 @@ msgstr "由金屬製成的銳利弩箭。很重但有著不錯的破壞力與準 #: lang/json/AMMO_from_json.py msgid "steel broadhead bolt" -msgstr "" +msgstr "鋼製寬頭十字弓箭" #. ~ Description for steel broadhead bolt #: lang/json/AMMO_from_json.py @@ -1313,18 +1318,18 @@ msgstr "鋼製的尖銳十字弓箭。在受過訓練人員的手中會是很致 #: lang/json/AMMO_from_json.py msgid "steel bodkin bolt" -msgstr "" +msgstr "鋼製錐頭十字弓箭" #. ~ Description for steel bodkin bolt #: lang/json/AMMO_from_json.py msgid "" "A sharp bolt made from steel with an armor piercing bodkin tip. Deadly in " "skilled hands. Stands an excellent chance of remaining intact once fired." -msgstr "" +msgstr "鋼製的鋒利十字弓箭, 帶有穿甲用的錐尖箭頭。在受過訓練人員的手中會是很致命的武器。發射後有極高的機率可回收以重複使用。" #: lang/json/AMMO_from_json.py msgid "steel target bolt" -msgstr "" +msgstr "鋼製標點十字弓箭" #. ~ Description for steel target bolt #: lang/json/AMMO_from_json.py @@ -1333,6 +1338,8 @@ msgid "" " tip for extra accuracy, at the cost of some damage. Deadly in skilled " "hands. Stands an excellent chance of remaining intact once fired." msgstr "" +"鋼製的鋒利十字弓箭, 有著額外長度的箭羽, 以及用來提高額外命中率的圓而平衡的箭頭, " +"代價是降低一些傷害力。在受過訓練人員的手中會是很致命的武器。發射後有極高的機率可回收以重複使用。" #: lang/json/AMMO_from_json.py msgid "explosive crossbow bolt" @@ -1570,7 +1577,7 @@ msgid "" "This one has been hand-crafted from spare parts." msgstr "" "在 21 世紀中葉, 軍方開始研發能源類武器。最後的研究成果就是標準的核融合子彈, 它可以發射出接近光速的超高溫氣體彈, " -"而不帶任何後座力。這個是由廢料手工打造而成。" +"而不帶任何後座力。這個是由備用零件手工打造而成。" #: lang/json/AMMO_from_json.py msgid "H&K 12mm" @@ -1865,8 +1872,8 @@ msgid "" "capable of taking down large targets with ease. While not advisable, it may" " be possible to use it in some firearms chambered for .30-06." msgstr "" -"使用130格令軟質彈頭的.270溫徹斯特彈。與.30-06一樣流行於狩獵上直到二十一世紀才被新設計給取代。他有著適合用來放倒大形目標的高抑止力。雖然不建議," -" 但是某些情況下可以用他來取代某些使用.30-06彈的武器。" +"使用 130 格令軟質彈頭的 .270 溫徹斯特彈。與 .30-06 一樣流行於狩獵上, 直到 21 " +"世紀才被新設計給取代。他有著適合用來放倒大形目標的高抑止力。雖然不建議, 但是某些情況下可以用他來取代某些使用 .30-06 彈的武器。" #: lang/json/AMMO_from_json.py msgid ".30-06 Springfield" @@ -1878,7 +1885,7 @@ msgid "" ".30-06 Springfield rounds with 165gr soft point bullets. The .30-06 " "cartridge has excellent accuracy, range, and stopping power making it " "popular with hunters and snipers for well over a century." -msgstr "使用165格令軟質彈頭的 .30-06 春田彈。他極端的高準確、射程以及抑止力讓他在狩獵以及狙擊上流行了超過一世紀。" +msgstr "使用 165 格令軟質彈頭的 .30-06 春田彈。他極端的高準確、射程以及抑止力讓他在狩獵以及狙擊上流行了超過一世紀。" #: lang/json/AMMO_from_json.py msgid ".30-06 M14A1 tracer" @@ -2640,8 +2647,8 @@ msgid "" " decades it remains popular with civilians. It is a powerful cartridge " "capable of killing most targets with one shot." msgstr "" -"使用 150 格令全金屬彈頭的 7.62x54mmR 子彈。它是其中一款仍廣泛使用的古老彈種。儘管軍方已經棄用了好幾十年, 但由於莫辛-" -"納甘步槍在民間相當普及, 它所用的 7.62x54mmR 子彈依然廣泛使用。它的威力足以在一槍之內射殺大多數目標。" +"使用 150 格令全金屬彈頭的 7.62x54mmR 子彈。它是其中一款仍廣泛使用的古老彈種。儘管軍方已經棄用了好幾十年, " +"但由於莫辛·納甘步槍在民間相當普及, 它所用的 7.62x54mmR 子彈依然廣泛使用。它的威力足以在一槍之內射殺大多數目標。" #: lang/json/AMMO_from_json.py msgid "reloaded 7.62x54mmR" @@ -2688,7 +2695,7 @@ msgstr "7.62x25mm 子彈 (重填彈)" #: lang/json/AMMO_from_json.py msgid "84x246mm HE rocket" -msgstr "" +msgstr "84x246mm 高爆火箭" #. ~ Description for 84x246mm HE rocket #: lang/json/AMMO_from_json.py @@ -2699,7 +2706,7 @@ msgstr "一個卡爾古斯特 M3 無後座力砲所使用的 84x246mm 的高爆 #: lang/json/AMMO_from_json.py msgid "84x246mm HEDP rocket" -msgstr "" +msgstr "84x246mm 高爆雙用途火箭" #. ~ Description for 84x246mm HEDP rocket #: lang/json/AMMO_from_json.py @@ -2711,7 +2718,7 @@ msgstr "一個卡爾古斯塔夫 M3 無後座力砲所使用的 84x246mm 的高 #: lang/json/AMMO_from_json.py msgid "84x246mm smoke rocket" -msgstr "" +msgstr "84x246mm 煙霧火箭" #. ~ Description for 84x246mm smoke rocket #: lang/json/AMMO_from_json.py @@ -2883,7 +2890,8 @@ msgid "" "round was very common in the Eastern Bloc during the 20th century and " "remained in Russian military service into the 21st century." msgstr "" -"9x18mm 馬卡洛夫子彈使用以金屬包覆鋼蕊的93格令彈頭。9x18mm 子彈在二十世紀的東歐相當普及, 即使到了廿一世紀時仍可見於俄國軍隊中。" +"9x18mm 馬卡洛夫子彈使用以金屬包覆鋼蕊的 93 格令彈頭。9x18mm 子彈在 20 世紀的東歐相當普及, 即使到了 21 " +"世紀時仍可見於俄國軍隊中。" #: lang/json/AMMO_from_json.py msgid "9x18mm SP-7" @@ -2895,7 +2903,7 @@ msgid "" "9x18mm Makarov SP-7 ammunition. The 9x18mm round was very common in the " "Eastern Bloc during the 20th century and remained in Russian military " "service into the 21st century." -msgstr "9x18mm 馬卡洛夫 SP-7 子彈。9x18mm 子彈在二十世紀的東歐相當普及, 即使到了廿一世紀時仍可見於俄國軍隊中。" +msgstr "9x18mm 馬卡洛夫 SP-7 子彈。9x18mm 子彈在 20 世紀的東歐相當普及, 即使到了 21 世紀時仍可見於俄國軍隊中。" #: lang/json/AMMO_from_json.py msgid "9x18mm RG028" @@ -3017,12 +3025,12 @@ msgstr "一塊釘形的鐵, 可以配合鐵鎚去建造各式各樣的物品。" #: lang/json/AMMO_from_json.py lang/json/ammunition_type_from_json.py msgid "paintball" -msgstr "" +msgstr "漆彈" #. ~ Description for paintball #: lang/json/AMMO_from_json.py msgid "A tube of small paintballs. They deal virtually no damage." -msgstr "" +msgstr "一管小漆彈。幾乎沒有殺傷力。" #: lang/json/AMMO_from_json.py msgid "reloaded birdshot" @@ -3092,7 +3100,7 @@ msgstr "高爆霰彈" msgid "" "A shotgun shell shooting a small explosive. Damaging, but rather inaccurate" " and short ranged. Banned in several states." -msgstr "造成小型爆炸的霰彈, 高破壞力, 但是低命中度與距離較短。在數個州內是禁用的。" +msgstr "造成小型爆炸的霰彈, 高破壞力, 但是相對短程與低命中率。在數個州內是禁用的。" #: lang/json/AMMO_from_json.py msgid "makeshift shotgun shot" @@ -3224,32 +3232,32 @@ msgstr "一種軟而閃亮的金屬。在大災變之前它的價值不菲, 但 #: lang/json/AMMO_from_json.py msgid "small metal sheet" -msgstr "" +msgstr "小金屬板" #. ~ Description for small metal sheet #: lang/json/AMMO_from_json.py msgid "A small sheet of metal." -msgstr "" +msgstr "一片小型金屬板。" #: lang/json/AMMO_from_json.py msgid "chunk of steel" -msgstr "鋼塊" +msgstr "小鋼塊" #. ~ Description for chunk of steel #: lang/json/AMMO_from_json.py msgid "" "A misshapen chunk of steel. Makes a decent weapon in a pinch, and is also " "useful for some crafting recipes." -msgstr "一個奇形怪狀的破鋼片, 揮舞時是很好的武器, 但也可用於製作一些東西。" +msgstr "一個畸形的鋼塊, 能作為不錯的武器, 也能用於一些物品製作配方。" #: lang/json/AMMO_from_json.py msgid "lump of steel" -msgstr "鋼鐵塊" +msgstr "大鋼塊" #. ~ Description for lump of steel #: lang/json/AMMO_from_json.py msgid "A heavy formed piece of steel. Useful for some crafting recipes." -msgstr "一大塊沉重的鋼鐵, 適合用於製作物品。" +msgstr "一個沉重的鋼塊。能用於一些物品製作配方。" #: lang/json/AMMO_from_json.py msgid "incendiary" @@ -3532,7 +3540,7 @@ msgstr "用於重機槍或是特種軍事裝備的手工裝填燃燒彈。燃燒 msgid "" "A 84x246mm High Explosive anti-personnel round for the recoilless rifle. " "Designed to be highly effective against personnel." -msgstr "" +msgstr "無後座力步槍所使用的 84x246mm 高爆反人員彈藥。被設計用來高效率地殺傷人員。" #. ~ Description for 84x246mm HEDP rocket #: lang/json/AMMO_from_json.py @@ -3540,14 +3548,14 @@ msgid "" "A 84x246mm High Explosive Dual Purpose anti-materiel round for the " "recoilless rifle. Designed to be highly effective against vehicles and " "structures." -msgstr "" +msgstr "無後座力步槍所使用的 84x246mm 高爆雙用途反器材彈藥。被設計用來高效率地破壞車輛與建築。" #. ~ Description for 84x246mm smoke rocket #: lang/json/AMMO_from_json.py msgid "" "A 84x246mm smoke marker round for the recoilless rifle. Commonly used for " "signaling, target designation, and for screening troop movements." -msgstr "" +msgstr "無後座力步槍所使用的 84x246mm 煙霧標記彈藥。通常被用於發出信號、指定目標或者掩護步兵移動。" #: lang/json/AMMO_from_json.py lang/json/ammunition_type_from_json.py msgid "pistol ammo" @@ -3799,18 +3807,18 @@ msgstr "一根有著銅槍頭的標槍。握把也做了防滑的蝕刻, 讓它 #: lang/json/AMMO_from_json.py msgid "40mm EMP grenade" msgid_plural "40mm EMP grenades" -msgstr[0] "" +msgstr[0] "40mm 電磁脈衝榴彈" #. ~ Description for 40mm EMP grenade #: lang/json/AMMO_from_json.py msgid "" "A 40mm grenade with an EMP charge. It will release an electromagnetic pulse" " capable of damaging robots and some equipment." -msgstr "" +msgstr "帶有電磁脈衝電荷的 40 毫米榴彈。它會釋放出能夠損壞機器人和某些設備的電磁脈衝。" #: lang/json/AMMO_from_json.py msgid "glowball" -msgstr "" +msgstr "發光球" #. ~ Description for glowball #: lang/json/AMMO_from_json.py @@ -3818,7 +3826,7 @@ msgid "" "A tube of small glowballs taken off the market due to hazardous chemicals. " "They deal virtually no damage, but light up on impact. Useful for " "illuminating an area without lighting up yourself in the process." -msgstr "" +msgstr "一筒小發光球, 因含危險化合物而從市場下架。它沒有實質上的傷害, 只在撞擊時發光。用來照明區域很有用, 但別在過程中照到你自己。" #: lang/json/AMMO_from_json.py msgid "30x113mm HEDP" @@ -3975,7 +3983,7 @@ msgstr "用於坦克砲彈或是火砲砲彈的底火。其似乎使用的是一 #: lang/json/AMMO_from_json.py msgid "IED" -msgstr "" +msgstr "簡易爆炸裝置" #: lang/json/AMMO_from_json.py msgid "blast canister" @@ -4057,7 +4065,7 @@ msgstr "從木頭雕刻出來的大型長矛。特別須注意的是這長矛只 #: lang/json/AMMO_from_json.py msgid "IED on a bolt" -msgstr "" +msgstr "爆炸十字弓箭" #: lang/json/AMMO_from_json.py msgid "nova bolt" @@ -4189,13 +4197,13 @@ msgstr "小塊金屬碎片。看不出它們有什麼用途。" #: lang/json/AMMO_from_json.py msgid "liquified blob feed" msgid_plural "bfeedfuel" -msgstr[0] "" +msgstr[0] "液化團塊飼料" #. ~ Description for liquified blob feed #: lang/json/AMMO_from_json.py msgid "" "Liquified blob feed, useful for fueling certain blob based vehicle parts" -msgstr "" +msgstr "液化團塊飼料, 可用於為某些團塊製的車輛部件提供燃料。" #: lang/json/AMMO_from_json.py lang/json/ammunition_type_from_json.py msgid "blob feed" @@ -4210,6 +4218,7 @@ msgid "" msgstr "各種類型有機材料的混合物, 包含一切黏球怪所需的健康元素, 至少你是這樣想的。" #: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py +#: lang/json/snippet_from_json.py msgid "rock" msgid_plural "rocks" msgstr[0] "石頭" @@ -4230,7 +4239,7 @@ msgid "" "crystallization process of a diamond matrix. While the substance usually " "decays when separated from the catalyst; these fragments are small enough to" " remain stable." -msgstr "這些小型的鑽石碎片是鑽石矩陣結晶化過程中的副產品。雖然從觸媒分離出來的物質通常容易衰變;這些碎片夠小所以能保持穩定。" +msgstr "這些小型的鑽石碎片是鑽石矩陣結晶化過程中的副產品。雖然從觸媒分離出來的物質通常容易衰變, 這些碎片夠小所以能保持穩定。" #: lang/json/AMMO_from_json.py msgid "vortex core" @@ -4240,7 +4249,7 @@ msgstr[0] "渦石核心" #. ~ Description for vortex core #: lang/json/AMMO_from_json.py msgid "Seeing this is a bug." -msgstr "" +msgstr "看到這訊息是程式錯誤導致的。" #: lang/json/AMMO_from_json.py lang/json/ammunition_type_from_json.py msgid ".357 Magnum" @@ -4427,7 +4436,7 @@ msgid "" "A pair of improvised arm guards made from broken pieces of a two by four " "that are tied to your arms with rags and string. They offer good " "protection, but are really uncomfortable to wear." -msgstr "" +msgstr "利用布條綁上了一些 2x4 木材碎片拼湊而成的一雙護臂, 能夠提供良好的防護, 但穿起來真不舒服。" #: lang/json/ARMOR_from_json.py msgid "pair of 2-by-shin guards" @@ -4440,7 +4449,7 @@ msgid "" "A pair of improvised shin guards made from broken pieces of a two by four " "that are tied to your shins with rags and string. They offer good " "protection, but are really hard to run with." -msgstr "" +msgstr "利用布條綁上了一些 2x4 木材碎片拼湊而成的一雙護腿, 能夠提供良好的防護, 但穿起來真不舒服。" #: lang/json/ARMOR_from_json.py msgid "AEP suit" @@ -4453,7 +4462,7 @@ msgid "" "An armored environmental protection suit. Custom-built from a cleansuit and" " body armor, it provides excellent protection against both physical harm and" " ambient radiation." -msgstr "一套訂製的裝甲環境保護裝束, 由無塵衣與裝甲製成。能提供絕佳的防護能力以抵禦物理傷害與環境輻射。" +msgstr "一套訂製的裝甲環境保護裝束, 由無塵衣與護甲製成。能提供絕佳的防護能力以抵禦物理傷害與環境輻射。" #: lang/json/ARMOR_from_json.py msgid "American flag" @@ -4475,12 +4484,12 @@ msgstr[0] "ANBC 裝" msgid "" "An armored, impermeable full-body suit that functions as body armor, as well" " as protecting from nuclear, biological, and chemical hazards." -msgstr "一件附加裝甲的全身套裝, 多功能的身體護甲能夠抵禦核能、生化、化學危險。" +msgstr "一件裝甲防水全身服, 能起到護甲的作用, 同時保護你免於核能、生化、化學危害。" #: lang/json/ARMOR_from_json.py msgid "leather apron" msgid_plural "leather aprons" -msgstr[0] "皮圍裙" +msgstr[0] "皮革圍裙" #. ~ Description for leather apron #: lang/json/ARMOR_from_json.py @@ -4498,19 +4507,19 @@ msgstr[0] "手臂夾板" #. ~ Description for leg splint #: lang/json/ARMOR_from_json.py msgid "A tool to help set bones and hold them in place." -msgstr "一個能夠固定住手臂骨頭的工具。" +msgstr "一個用來將骨頭固定在位子上的工具。" #: lang/json/ARMOR_from_json.py msgid "arm splint XL" msgid_plural "arm splint XLs" -msgstr[0] "" +msgstr[0] "XL 手臂夾板" #. ~ Description for arm splint XL #: lang/json/ARMOR_from_json.py msgid "" "A tool to help set bones and hold them in place. It is specifically " "designed to fit Huge survivors." -msgstr "" +msgstr "一個用來將骨頭固定在位子上的工具。它經過特殊設計以適應 \"巨大的\" 生存者體型。" #: lang/json/ARMOR_from_json.py msgid "pair of arm warmers" @@ -4520,19 +4529,19 @@ msgstr[0] "袖套" #. ~ Description for pair of arm warmers #: lang/json/ARMOR_from_json.py msgid "Snug, soft cloth sleeves to keep your arms warm." -msgstr "能保持手臂溫暖舒適的柔軟布套。" +msgstr "貼身、柔軟的棉布袖套, 用於保暖雙臂。" #: lang/json/ARMOR_from_json.py msgid "pair of bone arm guards" msgid_plural "pairs of bone arm guards" -msgstr[0] "骨製護手" +msgstr[0] "骨製護臂" #. ~ Description for pair of bone arm guards #: lang/json/ARMOR_from_json.py msgid "" "A pair of arm guards made from leather, reinforced with bone. Light and " "strong." -msgstr "" +msgstr "以骨頭強化的皮革護臂。輕巧且強韌。" #: lang/json/ARMOR_from_json.py msgid "pair of chitin arm guards" @@ -4549,14 +4558,14 @@ msgstr "一對由昆蟲外骨骼製成的護手。輕又可靠。" #: lang/json/ARMOR_from_json.py msgid "pair of biosilicified chitin arm guards" msgid_plural "pairs of biosilicified chitin arm guards" -msgstr[0] "" +msgstr[0] "生物矽化甲殼護臂" #. ~ Description for pair of biosilicified chitin arm guards #: lang/json/ARMOR_from_json.py msgid "" "A pair of arm guards crafted from the carefully cleaned and pruned " "biosilicified exoskeletons of acidic ants. Acid-resistant and very durable." -msgstr "" +msgstr "由酸液螞蟻的生物矽化外骨骼, 精心清洗並剪裁製成的護臂。防酸且非常耐用。" #: lang/json/ARMOR_from_json.py msgid "pair of hard arm guards" @@ -4571,7 +4580,7 @@ msgstr "一對硬質的塑膠護手, 內裡有緩衝泡綿。" #: lang/json/ARMOR_from_json.py msgid "pair of leather arm guards" msgid_plural "pairs of leather arm guards" -msgstr[0] "成對皮護臂" +msgstr[0] "皮革護臂" #. ~ Description for pair of leather arm guards #: lang/json/ARMOR_from_json.py @@ -4589,7 +4598,7 @@ msgid "" "A full assembly of medieval arm protection. Rerebraces, couters, and " "vambraces, with leather straps to secure each piece and connect it as part " "of a set." -msgstr "一副完整組裝的中世紀風格護臂。以皮帶結實地連結著上臂護甲、前臂護甲以及護肘三個部位。" +msgstr "一副完整組裝的中世紀護臂。以皮革綁帶固定並連結著上臂護甲、護肘以及前臂護甲。" #: lang/json/ARMOR_from_json.py msgid "pair of metal arm guards" @@ -4621,19 +4630,19 @@ msgstr[0] "橡膠袖套" #. ~ Description for pair of neoprene arm sleeves #: lang/json/ARMOR_from_json.py msgid "A pair of soft neoprene arm sleeves. Often used in contact sports." -msgstr "" +msgstr "一雙柔軟的合成橡膠手臂袖套。常用於接觸性的運動上。" #: lang/json/ARMOR_from_json.py msgid "boiled leather armor" msgid_plural "boiled leather armors" -msgstr[0] "硬化皮護甲" +msgstr[0] "硬化皮革護甲" #. ~ Description for boiled leather armor #: lang/json/ARMOR_from_json.py msgid "" "Thick leather body armor that has been hardened via chemical treatment. " "Light and strong." -msgstr "厚實的皮革身體護甲, 已經使用化學手段進行硬化處理。強韌且輕巧。" +msgstr "厚實的皮革護甲, 已經透過化學方式進行硬化處理。輕巧且強韌。" #: lang/json/ARMOR_from_json.py msgid "bone body armor" @@ -4645,7 +4654,7 @@ msgstr[0] "骨製護甲" msgid "" "Body armor consisting of a leather suit with strategically-placed bone " "reinforcement. Light and strong." -msgstr "" +msgstr "策略性地以骨頭強化的皮革護甲。輕巧且強韌。" #: lang/json/ARMOR_from_json.py msgid "chitinous armor" @@ -4662,14 +4671,14 @@ msgstr "由昆蟲外骨骼製成的護甲, 覆蓋了腿部以及軀幹部位。 #: lang/json/ARMOR_from_json.py msgid "biosilicified chitin armor" msgid_plural "biosilicified chitin armors" -msgstr[0] "" +msgstr[0] "生物矽化甲殼護甲" #. ~ Description for biosilicified chitin armor #: lang/json/ARMOR_from_json.py msgid "" "Leg and body armor crafted from the carefully cleaned and pruned " "biosilicified exoskeletons of acidic ants. Acid-resistant and very durable." -msgstr "" +msgstr "由酸液螞蟻的生物矽化外骨骼, 精心清洗並剪裁製成的護甲。防酸且非常耐用。" #: lang/json/ARMOR_from_json.py msgid "fur body armor" @@ -4679,7 +4688,7 @@ msgstr[0] "毛皮護甲" #. ~ Description for fur body armor #: lang/json/ARMOR_from_json.py msgid "Thick body armor made from furs. Warm and comfortable." -msgstr "厚實的身體護甲, 由毛皮製成。保暖且舒適。" +msgstr "厚實的護甲, 由毛皮製成。保暖且舒適。" #: lang/json/ARMOR_from_json.py msgid "leather body armor" @@ -4689,17 +4698,17 @@ msgstr[0] "皮革護甲" #. ~ Description for leather body armor #: lang/json/ARMOR_from_json.py msgid "Thick leather body armor. Light and comfortable." -msgstr "厚實的皮革身體護甲。輕巧且舒適。" +msgstr "厚實的皮革護甲。輕巧且舒適。" #: lang/json/ARMOR_from_json.py msgid "plate armor" msgid_plural "plate armors" -msgstr[0] "鋼板盔甲" +msgstr[0] "板甲" #. ~ Description for plate armor #: lang/json/ARMOR_from_json.py msgid "A suit of Gothic plate armor." -msgstr "一件哥德式的鋼板盔甲。" +msgstr "一套哥德式的板甲。" #: lang/json/ARMOR_from_json.py msgid "nomad gear" @@ -4711,29 +4720,29 @@ msgstr[0] "遊牧民族衣" msgid "" "A makeshift outfit made from pre-cataclysm clothing designed for long " "travels. It has a lot of storage space." -msgstr "一件來自於大災變前的簡易衣服, 專為長程旅途設計。它有大量的儲物空間。" +msgstr "一件粗製的外衣, 由大災變前的衣物製成, 設計來長途旅行。它有大量的儲物空間。" #: lang/json/ARMOR_from_json.py msgid "plated leather armor" msgid_plural "plated leather armors" -msgstr[0] "金屬皮護甲" +msgstr[0] "裝甲皮革護甲" #. ~ Description for plated leather armor #: lang/json/ARMOR_from_json.py msgid "" "Thick leather body armor that has been reinforced with strategically-placed " "metal plates. Strong and comfortable." -msgstr "厚實的皮革身體護甲, 已經策略性地用金屬板加以強化。強韌且舒適。" +msgstr "厚實的皮革身體護甲, 已經策略性地以金屬板強化。強韌且舒適。" #: lang/json/ARMOR_from_json.py msgid "ornamental plate armor" msgid_plural "ornamental plate armors" -msgstr[0] "金屬裝飾板甲" +msgstr[0] "裝飾板甲" #. ~ Description for ornamental plate armor #: lang/json/ARMOR_from_json.py msgid "An extremely heavy suit of ornamental armor." -msgstr "" +msgstr "一套極度厚重的裝飾板甲。" #: lang/json/ARMOR_from_json.py msgid "O-yoroi" @@ -4743,7 +4752,7 @@ msgstr[0] "大鎧" #. ~ Description for O-yoroi #: lang/json/ARMOR_from_json.py msgid "An ornamental suit of Japanese samurai armor." -msgstr "一套觀賞用途的日本武士鎧甲。" +msgstr "一套裝飾用的日本武士鎧甲。" #: lang/json/ARMOR_from_json.py msgid "scavenger gear" @@ -4755,7 +4764,7 @@ msgstr[0] "拾荒者裝備" msgid "" "A sturdy scavenger's outfit made from refitted pre-cataclysm protective " "gear. It has a lot of storage space." -msgstr "一件利用大災變前的護具改裝的拾荒者衣物。它有大量的儲物空間。" +msgstr "一件堅固的拾荒者外衣, 由大災變前的防護裝備改裝製成。它有大量的儲物空間。" #: lang/json/ARMOR_from_json.py msgid "scrap suit" @@ -4768,7 +4777,7 @@ msgid "" "A suit of armor made from scraps of metal secured by simple strings; " "provides decent protection, but the loose collection of plates doesn't make " "for the most convenient protection." -msgstr "" +msgstr "一套護甲, 由廢金屬製成, 並以簡單的繩子固定。能提供不錯的防護能力, 但是這堆鬆散的板子穿起來並不是很方便。" #: lang/json/ARMOR_from_json.py msgid "camo tank top" @@ -4783,12 +4792,12 @@ msgstr "一件無袖的迷彩上衣。相當便於活動。" #: lang/json/ARMOR_from_json.py msgid "basketball shorts" msgid_plural "basketball shorts" -msgstr[0] "籃球褲" +msgstr[0] "籃球短褲" #. ~ Description for basketball shorts #: lang/json/ARMOR_from_json.py msgid "A pair of basketball shorts. Comfortable and light." -msgstr "一件舒適又輕盈的籃球褲。" +msgstr "一件舒適又輕盈的籃球短褲。" #: lang/json/ARMOR_from_json.py msgid "backpack" @@ -4798,29 +4807,29 @@ msgstr[0] "背包" #. ~ Description for backpack #: lang/json/ARMOR_from_json.py msgid "A small backpack. Good storage for a little encumbrance." -msgstr "" +msgstr "一個小背包, 有許多的儲物空間卻只會增加一點點累贅。" #: lang/json/ARMOR_from_json.py msgid "giant novelty backpack" msgid_plural "giant novelty backpacks" -msgstr[0] "" +msgstr[0] "巨大的新奇背包" #. ~ Description for giant novelty backpack #: lang/json/ARMOR_from_json.py msgid "" "A huge fabric backpack made mostly as a joke before the cataclysm. Now, " "it's still rather silly, but it can store a lot of stuff." -msgstr "" +msgstr "在大災變之前, 一個巨大的布料背包多被視為是個笑話。現在, 它仍然相當愚蠢, 但它可以存儲很多東西。" #: lang/json/ARMOR_from_json.py msgid "leather backpack" msgid_plural "leather backpacks" -msgstr[0] "皮背包" +msgstr[0] "皮革背包" #. ~ Description for leather backpack #: lang/json/ARMOR_from_json.py msgid "A small leather backpack. Good storage for a little encumbrance." -msgstr "" +msgstr "一個小型皮革背包。不太累贅而且適合儲物。" #: lang/json/ARMOR_from_json.py msgid "badge template" @@ -4894,7 +4903,7 @@ msgstr[0] "搶匪頭套" #. ~ Description for balaclava #: lang/json/ARMOR_from_json.py msgid "A warm covering that protects the head and face from the cold." -msgstr "" +msgstr "一頂保暖的罩子, 保護頭部和臉部免於寒冷。" #: lang/json/ARMOR_from_json.py msgid "baldric" @@ -4954,14 +4963,14 @@ msgstr "一個皮革刀鞘, 大小足夠容納一把長劍, 或是再大一點 #: lang/json/ARMOR_from_json.py msgid "bandana" msgid_plural "bandanas" -msgstr[0] "手帕" +msgstr[0] "方巾" #. ~ Description for bandana #: lang/json/ARMOR_from_json.py msgid "" "A cotton bandana, worn over the mouth for warmth and minor protection from " "dust and other contaminants." -msgstr "一個棉製手帕, 蓋住口鼻來保暖或是阻擋一些粉塵。" +msgstr "一個棉製方巾, 能包覆嘴巴以提供保暖, 同時能提供些微的防護能力以抵禦灰塵與其他汙染物。" #: lang/json/ARMOR_from_json.py msgid "barrette" @@ -4976,7 +4985,7 @@ msgstr "一個有很多裝飾的髮夾。" #: lang/json/ARMOR_from_json.py msgid "laundry basket" msgid_plural "laundry baskets" -msgstr[0] "" +msgstr[0] "洗衣籃" #. ~ Description for laundry basket #: lang/json/ARMOR_from_json.py @@ -4991,7 +5000,7 @@ msgstr[0] "防蜂手套" #. ~ Description for pair of beekeeping gloves #: lang/json/ARMOR_from_json.py msgid "A pair of white beekeeping gloves made out of smooth leather." -msgstr "一對白色的防蜂手套, 由光滑的皮革製作而來。" +msgstr "一雙白色的防蜂手套, 由光滑的皮革製成。" #: lang/json/ARMOR_from_json.py msgid "beekeeping hood" @@ -5018,6 +5027,7 @@ msgid "" "fabric, but it's lightweight and has plenty of storage thanks to a chest " "pocket." msgstr "" +"一件通常是由專業養蜂人穿著的白色防蜂衣, 腳踝和手腕有束帶可防止蜂群鑽入。它的質料並不那麼硬, 反而很輕盈, 胸前還有口袋帶來足夠的儲存空間。" #: lang/json/ARMOR_from_json.py msgid "beret" @@ -5027,7 +5037,7 @@ msgstr[0] "貝雷帽" #. ~ Description for beret #: lang/json/ARMOR_from_json.py msgid "A soft cotton hat. Commonly worn by armed forces and existentialists." -msgstr "" +msgstr "柔軟的棉帽。常見武裝部隊和存在主義者穿戴。" #: lang/json/ARMOR_from_json.py msgid "wool beret" @@ -5037,7 +5047,7 @@ msgstr[0] "羊毛貝雷帽" #. ~ Description for wool beret #: lang/json/ARMOR_from_json.py msgid "A soft wool hat. Commonly worn by armed forces and existentialists." -msgstr "" +msgstr "柔軟的羊毛帽。常見武裝部隊和存在主義者穿戴。" #: lang/json/ARMOR_from_json.py msgid "bikini bottom" @@ -5098,7 +5108,7 @@ msgstr[0] "毯子" #. ~ Description for blanket #: lang/json/ARMOR_from_json.py msgid "Hiding under here will not protect you from the monsters." -msgstr "躲在這底下也不能夠讓你遭遇到怪物時受到保護。" +msgstr "躲在這底下也不會保護你免於怪物侵襲。" #: lang/json/ARMOR_from_json.py msgid "blazer" @@ -5120,31 +5130,63 @@ msgstr[0] "眼罩" msgid "" "A simple fabric covering tied over the eyes to block sight. Useful for " "sleeping in bright areas." -msgstr "" +msgstr "一個簡單的織物遮蓋在眼部來阻擋視線。想在明亮的地方睡覺時會很有用。" #: lang/json/ARMOR_from_json.py msgid "bondage mask" msgid_plural "bondage masks" -msgstr[0] "緊身面具" +msgstr[0] "束縛面具" + +#. ~ Use action menu_text for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "Zip up" +msgstr "拉上" + +#. ~ Use action msg for bondage mask. +#: lang/json/ARMOR_from_json.py +msgid "You zip the eyes and mouth of the bondage mask closed." +msgstr "你拉上了束縛面具位於眼睛和嘴巴的拉鍊。" #. ~ Description for bondage mask #: lang/json/ARMOR_from_json.py msgid "" "A tight mask made of black leather. The eyes and mouth can be closed using " "zippers." -msgstr "一個皮革製的束縛面具。眼睛與嘴巴都有拉鍊。(受虐狂專用服)" +msgstr "一個緊繃的黑色皮革面具。眼睛和嘴巴的位置可以用拉鍊關上。" + +#: lang/json/ARMOR_from_json.py +msgid "bondage mask (zipped)" +msgid_plural "bondage masks (zipped)" +msgstr[0] "束縛面具 (拉上)" + +#. ~ Use action menu_text for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "Unzip" +msgstr "拉開拉鍊" + +#. ~ Use action msg for bondage mask (zipped). +#: lang/json/ARMOR_from_json.py +msgid "You unzip the eyes and mouth of the bondage mask." +msgstr "你拉開了束縛面具位於眼睛和嘴巴的拉鍊。" + +#. ~ Description for bondage mask (zipped) +#: lang/json/ARMOR_from_json.py +msgid "" +"A tight mask made of black leather. The eyes and mouth have been zipped " +"closed." +msgstr "一個緊繃的黑色皮革面具。眼睛和嘴巴的拉鍊已經用拉鍊關上了。" #: lang/json/ARMOR_from_json.py msgid "bondage suit" msgid_plural "bondage suits" -msgstr[0] "緊身衣" +msgstr[0] "束縛衣" #. ~ Description for bondage suit #: lang/json/ARMOR_from_json.py msgid "" "A suit of snug, black leather. Has no pockets, but does feature an " "abundance of unusually located zippers." -msgstr "一件貼身的黑色緊身皮衣。沒有口袋, 在許多詭異的位置有拉鍊。(受虐狂專用服)" +msgstr "一套貼身的黑色皮革裝束。沒有口袋, 在各種不尋常的位置有非常豐富的拉鍊。" #: lang/json/ARMOR_from_json.py msgid "bookplate" @@ -5156,7 +5198,7 @@ msgstr[0] "書甲" msgid "" "A crude form of armor made from stacked paper and rolls of duct tape, this " "breastplate offers a surprising amount of protection." -msgstr "一個原始形式的胸甲, 由一大捆的紙與大力膠帶製成, 這個書甲提供了出乎意料的保護能力。" +msgstr "一件粗糙的護甲, 由紙堆與大力膠帶製成, 這個胸甲能提供出乎意料的防護能力。" #: lang/json/ARMOR_from_json.py msgid "ankle sheath" @@ -5202,18 +5244,18 @@ msgstr "一個穿戴在腳踝上的隱蔽小刀鞘。沒有練習過就使用會 #: lang/json/ARMOR_from_json.py msgid "spear strap" msgid_plural "spear straps" -msgstr[0] "" +msgstr[0] "肩帶 (標槍)" #. ~ Use action holster_msg for spear strap. #: lang/json/ARMOR_from_json.py #, no-python-format msgid "You holster your %s." -msgstr "你把 %s 收到槍套。" +msgstr "你把你的 %s 收到槍套。" #. ~ Use action holster_prompt for spear strap. #: lang/json/ARMOR_from_json.py msgid "Holster spear" -msgstr "" +msgstr "收納長矛" #. ~ Description for spear strap #: lang/json/ARMOR_from_json.py @@ -5221,7 +5263,7 @@ msgid "" "A cloth strap tied around the torso for toting spears while keeping your " "hands free. You have to duck to get through doors while one's in it, " "though. Activate to holster/draw a weapon." -msgstr "" +msgstr "一條布帶系在軀幹上, 用於攜帶長矛, 同時保持雙手自由。不過, 你必須避免進入門框。使用肩帶來收納/抽出武器。" #: lang/json/ARMOR_from_json.py msgid "bowler hat" @@ -5238,23 +5280,23 @@ msgstr "男人專用的帽子。戴著它讓你在敵人面前成為一個好傢 #: lang/json/ARMOR_from_json.py msgid "boxer briefs" msgid_plural "boxer briefs" -msgstr[0] "四角褲" +msgstr[0] "四角內褲" #. ~ Description for boxer briefs #: lang/json/ARMOR_from_json.py msgid "The age-old question, boxers or briefs? Your answer? Yes." -msgstr "老掉牙的問題, 喜歡四角還是三角褲? 你的答案是?" +msgstr "老掉牙的問題, 喜歡四角內褲還是三角內褲? 你的答案是? 前者。" #: lang/json/ARMOR_from_json.py msgid "boxer shorts" msgid_plural "boxer shorts" -msgstr[0] "平口褲" +msgstr[0] "平口內褲" #. ~ Description for boxer shorts #: lang/json/ARMOR_from_json.py msgid "" "Men's boxer shorts. More fashionable than briefs and just as comfortable." -msgstr "男用平口褲。和內褲同樣舒適但是更時尚。" +msgstr "男用平口內褲。和三角內褲同樣舒適但是更時尚。" #: lang/json/ARMOR_from_json.py msgid "pair of boxing gloves" @@ -5266,7 +5308,7 @@ msgstr[0] "拳套" msgid "" "A pair of big, red, 8 oz. boxing gloves. They make dexterous tasks near " "impossible, but provide ample protection." -msgstr "一副重達 8 盎司的紅色大拳套。戴著它幾乎沒辦法作靈巧的工作, 卻可提供充份的保護。" +msgstr "一副重達 8 盎司的紅色大拳套。戴著它幾乎沒辦法作靈巧的工作, 但是能提供充足的防護能力。" #: lang/json/ARMOR_from_json.py msgid "boy shorts" @@ -5277,7 +5319,7 @@ msgstr[0] "女用平口內褲" #: lang/json/ARMOR_from_json.py msgid "" "Female underwear similar to men's boxer shorts, but much more close-fitting." -msgstr "" +msgstr "類似男用平口內褲的女用內衣, 但是更貼身。" #: lang/json/ARMOR_from_json.py msgid "bra" @@ -5300,7 +5342,7 @@ msgstr[0] "馬褲" msgid "" "A well-made pair of old-fashioned pants, made of stiff yet baggy material. " "Comfortable, but lacks pockets." -msgstr "一件製作精良的舊時代長褲, 使用強韌且寬鬆的物料製作。穿上去很舒適, 但沒有口袋。" +msgstr "一件製作精良的老式長褲, 由硬挺而寬鬆的材料製成。舒適, 但是沒有口袋。" #: lang/json/ARMOR_from_json.py msgid "briefcase" @@ -5315,12 +5357,12 @@ msgstr "用途是裝錢, 放文件, 或是走私物品。" #: lang/json/ARMOR_from_json.py msgid "briefs" msgid_plural "briefs" -msgstr[0] "男用內褲" +msgstr[0] "三角內褲" #. ~ Description for briefs #: lang/json/ARMOR_from_json.py msgid "A pair of briefs. Comfortable underwear worn by men." -msgstr "一件內褲。男性專用的舒適內衣。" +msgstr "一件三角內褲。男性專用的舒適內衣。" #: lang/json/ARMOR_from_json.py msgid "jade brooch" @@ -5330,7 +5372,7 @@ msgstr[0] "翡翠胸針" #. ~ Description for jade brooch #: lang/json/ARMOR_from_json.py msgid "A hand-crafted jade brooch of Oriental origin." -msgstr "" +msgstr "這是一款手工製作, 帶著東方情調的翡翠胸針。" #: lang/json/ARMOR_from_json.py msgid "back scabbard" @@ -5343,7 +5385,7 @@ msgid "" "A leather scabbard, big enough for almost any sword. Designed to be " "strapped to the back, it's very difficult to draw from without considerable " "practice. Activate to sheath/draw a sword." -msgstr "" +msgstr "一個皮革製刀鞘, 大小足夠收納多數的劍。設計用於綁在背部, 如果沒有反覆地練習, 很難拔劍出鞘。使用刀鞘來收納/拔出劍。" #: lang/json/ARMOR_from_json.py msgid "turnout coat" @@ -5355,19 +5397,19 @@ msgstr[0] "消防衣" msgid "" "A heavy protective coat worn by firefighters. Highly resistant to heat and " "flame, it provides excellent protection from injury." -msgstr "一件消防員穿的沈重防護衣。對於高溫及火焰有絕佳的防護力。" +msgstr "一件消防員穿的厚重防護衣。對於高溫及火焰有絕佳的防護力。" #: lang/json/ARMOR_from_json.py msgid "turnout trousers" msgid_plural "turnout trousers" -msgstr[0] "消防褲" +msgstr[0] "消防長褲" #. ~ Description for turnout trousers #: lang/json/ARMOR_from_json.py msgid "" "A heavy pair of protective overalls worn by firefighters. Highly resistant " "to heat and flame, they provide excellent protection from injury." -msgstr "一件消防員穿的沈重防護褲。對於高溫及火焰有絕佳的防護力。" +msgstr "一件消防員穿的厚重防護長褲。對於高溫及火焰有絕佳的防護力。" #: lang/json/ARMOR_from_json.py msgid "camisole" @@ -5379,7 +5421,7 @@ msgstr[0] "小可愛" msgid "" "A small camisole made from silk. Typically used as an undergarment, they " "are light and easy to wear." -msgstr "" +msgstr "這款小號吊帶背心採用絲綢製成。通常用作內衣, 它重量輕, 易於穿著。" #: lang/json/ARMOR_from_json.py msgid "cassock" @@ -5389,7 +5431,7 @@ msgstr[0] "袈裟" #. ~ Description for cassock #: lang/json/ARMOR_from_json.py msgid "A piece of clerical clothing, usually worn by Christian priests." -msgstr "一件神職人員的服裝, 通常是基督教牧師在穿得。" +msgstr "一件神職人員的服裝, 通常是基督教牧師穿的。" #: lang/json/ARMOR_from_json.py msgid "pair of chainmail sleeves" @@ -5402,7 +5444,7 @@ msgid "" "Customized chainmail arms. Each sleeve has leather straps to connect them " "with each other. The lack of fingers makes them less cumbersome and allows " "them to be used with gloves." -msgstr "定制的鏈甲護臂, 每個套筒具有皮帶將它們相互連接。手指部分的缺少使它們不太笨重並允許它們與手套同時使用。" +msgstr "一對訂製的鏈甲袖套, 袖套間使用皮革綁帶連接。露出了手掌使它較不累贅, 並允許它與手套同時使用。" #: lang/json/ARMOR_from_json.py msgid "chainmail coif" @@ -5412,12 +5454,12 @@ msgstr[0] "鏈甲兜帽" #. ~ Description for chainmail coif #: lang/json/ARMOR_from_json.py msgid "A customized chainmail hood. Can be worn comfortably under helmets." -msgstr "定制的鏈甲兜帽, 可在頭盔下舒適地佩戴。" +msgstr "一頂訂製的鏈甲兜帽。可以舒適地穿在頭盔下面。" #: lang/json/ARMOR_from_json.py msgid "chainmail leggings" msgid_plural "pairs of chainmail leggings" -msgstr[0] "鏈甲綁腿" +msgstr[0] "鏈甲護腿" #. ~ Description for chainmail leggings #: lang/json/ARMOR_from_json.py @@ -5425,12 +5467,12 @@ msgid "" "Customized chainmail legs. Their leather straps keep everything in place, " "and the lack of toes and heels allows them to work perfectly well with " "footwear." -msgstr "" +msgstr "一對訂製的鏈甲護腿, 使用皮革綁帶固定各部位。露出了腳掌使它能完美搭配各種鞋款。" #: lang/json/ARMOR_from_json.py msgid "chainmail armor" msgid_plural "chainmail armors" -msgstr[0] "全套鏈甲" +msgstr[0] "鏈甲套裝" #. ~ Description for chainmail armor #: lang/json/ARMOR_from_json.py @@ -5438,31 +5480,31 @@ msgid "" "A fully customized chainmail suit. The coif, shirt, arms, and leggings have" " been modified with leather straps to deal with uneven weight distribution " "and to allow them to be used separately." -msgstr "一套完全定制的鏈甲套裝。兜帽, 上衣, 手臂和護腿已經用皮帶修改以調整不均勻的重量, 讓他們可以分開使用。" +msgstr "一套完全訂製的鏈甲套裝。兜帽、上衣、手臂和護腿已經用皮革綁帶調整以平衡重量, 並允許它們被單獨使用。" #: lang/json/ARMOR_from_json.py msgid "chainmail vest" msgid_plural "chainmail vests" -msgstr[0] "鏈胸甲" +msgstr[0] "鏈甲背心" #. ~ Description for chainmail vest #: lang/json/ARMOR_from_json.py msgid "" "A customized chainmail vest. It's a sleeveless piece of chainmail with " "small leather straps designed to better distribute the weight." -msgstr "" +msgstr "一件訂製的鏈甲背心。它是一件無袖鏈甲, 附有設計來平衡重量的細小皮革綁帶。" #: lang/json/ARMOR_from_json.py msgid "leather chaps" msgid_plural "leather chaps" -msgstr[0] "皮護腿" +msgstr[0] "皮革護腿" #. ~ Description for leather chaps #: lang/json/ARMOR_from_json.py msgid "" "A pair of black leather chaps. Very tough and light, but doesn't offer any " "storage." -msgstr "" +msgstr "一對黑色皮革護腿。非常堅韌且輕巧, 但沒有任何儲物空間。" #: lang/json/ARMOR_from_json.py msgid "chestwrap" @@ -5498,7 +5540,7 @@ msgstr[0] "皮革纏胸" msgid "" "Leather patches wrapped around the chest. Preserves your modesty and keeps " "things out of the way, but not good for much else." -msgstr "纏在胸前的皮補丁。讓你保持端莊和提供一點點的保護, 但除此之外沒什麼用。" +msgstr "纏在胸前的皮革補丁。讓你保有矜持和提供一點點的保護, 但除此之外沒什麼用。" #: lang/json/ARMOR_from_json.py msgid "wool chestwrap" @@ -5533,7 +5575,7 @@ msgstr[0] "斗篷" #. ~ Description for cloak #: lang/json/ARMOR_from_json.py msgid "A heavy cloak meant to be thrown over your body." -msgstr "一件能夠蓋住你身體的厚實斗篷。" +msgstr "一件能夠蓋住你身體的厚重斗篷。" #: lang/json/ARMOR_from_json.py msgid "fur cloak" @@ -5543,7 +5585,7 @@ msgstr[0] "毛皮斗篷" #. ~ Description for fur cloak #: lang/json/ARMOR_from_json.py msgid "A heavy fur cloak meant to be thrown over your body." -msgstr "一件能夠蓋住你身體的厚實毛皮斗篷。" +msgstr "一件能夠蓋住你身體的厚重毛皮斗篷。" #: lang/json/ARMOR_from_json.py msgid "leather cloak" @@ -5555,7 +5597,7 @@ msgstr[0] "皮革斗篷" msgid "" "A heavy leather cloak meant to be thrown over your body. Provides decent " "protection." -msgstr "一件能夠蓋住你身體的厚實皮革斗篷。提供一些保護。" +msgstr "一件能夠蓋住你身體的厚重皮革斗篷。提供一些保護。" #: lang/json/ARMOR_from_json.py msgid "wool cloak" @@ -5565,7 +5607,7 @@ msgstr[0] "羊毛斗篷" #. ~ Description for wool cloak #: lang/json/ARMOR_from_json.py msgid "A heavy woolen cloak meant to be thrown over your body." -msgstr "一件能夠蓋住你身體的厚實羊毛斗篷。" +msgstr "一件能夠蓋住你身體的厚重羊毛斗篷。" #: lang/json/ARMOR_from_json.py msgid "clown suit" @@ -5596,9 +5638,9 @@ msgstr[0] "人造毛皮大衣" #. ~ Description for faux fur coat #: lang/json/ARMOR_from_json.py msgid "" -"A garishly colored faux fur coat with a couple small pockets. Although not " +"A garishly-colored faux fur coat with a couple small pockets. Although not " "as warm as the natural fur, it gives you some of that unique flair." -msgstr "這款色彩繽紛的人造皮草大衣配有幾個小口袋。雖然沒有天然毛皮那麼溫暖, 但它帶給你一些獨特的風味。" +msgstr "這款色彩繽紛的人造毛皮大衣配有幾個小口袋。雖然沒有天然毛皮那麼溫暖, 但它帶給你一些獨特的風味。" #: lang/json/ARMOR_from_json.py msgid "sable coat" @@ -5622,7 +5664,7 @@ msgstr[0] "實驗室大衣" msgid "" "A long white coat with several large pockets. Comes with a very nice pocket" " protector." -msgstr "" +msgstr "一件長長的白色大衣, 有幾個大口袋。配有一個非常漂亮的口袋保護裝置。" #: lang/json/ARMOR_from_json.py msgid "rain coat" @@ -5644,7 +5686,7 @@ msgstr[0] "冬季大衣" #. ~ Description for winter coat #: lang/json/ARMOR_from_json.py msgid "A padded coat with deep pockets and a hood. Very warm." -msgstr "一件加上內裡的大衣, 有許多深口袋以及兜帽。非常保暖。" +msgstr "一件帶襯墊的連帽大衣, 有許多深口袋。非常保暖。" #: lang/json/ARMOR_from_json.py msgid "collar pin" @@ -5678,7 +5720,7 @@ msgstr[0] "銅耳環" msgid "" "A copper earring. It's pretty heavy; wearing it for an extended period of " "time may stretch your ear longer." -msgstr "" +msgstr "一個銅耳環, 有點重。佩戴太久也許會把耳朵拉長。" #: lang/json/ARMOR_from_json.py msgid "leather corset" @@ -5690,7 +5732,7 @@ msgstr[0] "皮革束衣" msgid "" "A snug, black leather corset. Has no pockets, but its thick material " "provides good protection from harm." -msgstr "一件舒適的黑色皮革束衣。沒有口袋, 但是其厚實的材質能提供良好的傷害防護能力。" +msgstr "一件貼身的黑色皮革束衣。沒有口袋, 但是其厚實的材質能提供良好的傷害防護能力。" #: lang/json/ARMOR_from_json.py msgid "cowboy hat" @@ -5702,19 +5744,19 @@ msgstr[0] "牛仔帽" msgid "" "Whether yer hunting varmints, fixing up the ranch, or heading into the " "sunset, this is the hat for the job." -msgstr "" +msgstr "無論是狩獵、修理牧場、或只是幻想你有匹馬, 這頂帽子都能勝任。" #: lang/json/ARMOR_from_json.py msgid "knit cowl" msgid_plural "knit cowls" -msgstr[0] "針織頭巾" +msgstr[0] "針織風帽" #. ~ Description for knit cowl #: lang/json/ARMOR_from_json.py msgid "" "A snuggly woolen cowl. It's one of those stylish and bulky cowls you see in" " fashion magazines." -msgstr "一個舒適的羊毛頭巾。這是你可能在時尚雜誌上看見那些笨重的頭巾之一。" +msgstr "一頂貼身的羊毛風帽。這是你在時尚雜誌上看到的那些時尚而笨重的風帽之一。" #: lang/json/ARMOR_from_json.py msgid "golden crown" @@ -5741,7 +5783,7 @@ msgstr[0] "胸甲" msgid "" "A steel breastplate, and a vital part of plate armor. Even as full armor " "went into decline, cuirasses remained in use among cavalry in Europe." -msgstr "鐵製胸甲, 而且是整副鎧甲中最重要的, 即使全套的裝甲早就不再流行, 胸甲仍然在歐洲的騎兵隊中使用。" +msgstr "一副鐵製胸甲, 是板甲的重要部分。即使全身鎧甲走向沒落, 胸甲仍然在歐洲的騎兵隊中被使用。" #: lang/json/ARMOR_from_json.py msgid "salvaged power armor" @@ -5757,8 +5799,8 @@ msgid "" "longer requires power, but also encumbers you greatly and doesn't provide " "internal thermal regulation." msgstr "" -"DoubleTech 動力裝甲 Mk. I: 一套沉重的基本動力裝甲, 提供絕佳的防護能力以抵禦攻擊, " -"但也使人移動困難。這套裝甲的電腦系統與冷卻系統都被移除了, 代表著它不需要動力來驅動, 但也讓你產生極大的累贅, 也失去了內部溫度調節。" +"DoubleTech 動力裝甲 Mk. I: 一套厚重的基本動力裝甲, 提供絕佳的防護能力以抵禦攻擊, " +"但也使人移動困難。這套裝甲的內部電腦與冷卻系統都被移除了, 代表著它不再需要動力驅動, 但也讓你產生極大的累贅, 同時無法提供內部溫度調節。" #: lang/json/ARMOR_from_json.py msgid "salvaged power armor helmet" @@ -5774,8 +5816,8 @@ msgid "" "meaning it no longer requires power, but it has no internal chronometer and " "doesn't provide internal thermal regulation." msgstr "" -"基本的動力裝甲頭盔, 設計來搭配 DoubleTech 動力裝甲 MK. " -"I。提供絕佳的防護能力以抵禦攻擊與環境危害。這套裝甲的電腦系統與冷卻系統都被移除了, 代表著它不再需要動力驅動, 但也失去了內部計時器, " +"一頂基本的動力裝甲頭盔, 設計來搭配 DoubleTech 動力裝甲 MK. " +"I。提供絕佳的防護能力以抵禦攻擊與環境危害。這套裝甲的內部電腦與冷卻系統都被移除了, 代表著它不再需要動力驅動, 但也缺少了內部計時器, " "同時無法提供內部溫度調節。" #: lang/json/ARMOR_from_json.py @@ -5788,7 +5830,7 @@ msgstr[0] "鑽石假牙" msgid "" "Fake teeth inlaid with diamonds, worn over the teeth. Fits horribly, but " "looks very shiny. For that high-class gangsta rap look." -msgstr "" +msgstr "一顆鑲嵌了假鑽的牙齒, 能套在牙齒上。意外的適合, 看起來很閃。高級幫派饒舌歌手必備。" #: lang/json/ARMOR_from_json.py msgid "diamond ring" @@ -5822,7 +5864,7 @@ msgstr[0] "潛水袋" #. ~ Description for dive bag #: lang/json/ARMOR_from_json.py msgid "A lightweight mesh backpack, commonly worn by swimmers and divers." -msgstr "" +msgstr "一個輕量的網狀背包, 常用於游泳者和潛水者。" #: lang/json/ARMOR_from_json.py msgid "diver's watch" @@ -5834,7 +5876,7 @@ msgstr[0] "潛水手錶" msgid "" "A waterproof, self-winding watch on a stainless steel watchband. Tells the " "time and current temperature. Activate to check the digital thermometer." -msgstr "" +msgstr "一條防水的自動上鍊手錶, 鋼製錶帶, 可用來看現在的時間與溫度。啟動它以查看數位溫度計。" #: lang/json/ARMOR_from_json.py msgid "down-filled blanket" @@ -5846,7 +5888,7 @@ msgstr[0] "羽絨毯" msgid "" "Hiding under here will not protect you from the monsters, but it'll keep you" " warm." -msgstr "躲在這底下也不能夠讓你遭遇到怪物時受到保護, 但可以讓你暖和。" +msgstr "躲在這底下也不會保護你免於怪物侵襲, 但可以讓你保暖。" #: lang/json/ARMOR_from_json.py msgid "dragon skin vest" @@ -5859,7 +5901,7 @@ msgid "" "A state-of-the-art, lightweight, flexible, bullet resistant vest. The " "ceramic disks used in its construction make it impossible to repair, only " "replace." -msgstr "一個用頂級工藝打造的輕量、靈活的防彈背心。裡面安裝的陶盤無法維修, 只能更換。" +msgstr "一個用頂級工藝打造的輕量、靈活的防彈背心。裡面安裝的陶瓷裝甲板無法修理, 只能更換。" #: lang/json/ARMOR_from_json.py msgid "dress" @@ -5871,7 +5913,7 @@ msgstr[0] "洋裝" msgid "" "A long cotton dress. Though comfortable to wear, it lacks any storage " "space." -msgstr "一件棉質長洋裝。雖然穿起來很舒適, 但是沒甚麼儲物空間。" +msgstr "一件棉質長版洋裝。雖然穿起來很舒適, 但是沒有任何儲物空間。" #: lang/json/ARMOR_from_json.py msgid "dress shirt" @@ -5914,7 +5956,7 @@ msgstr[0] "戰術儲存袋" msgid "" "An expandable pouch secured with straps. Provides a bit of extra storage " "with minimal encumbrance." -msgstr "加上背帶的可摺疊袋子。能夠多提供一點儲物空間, 只造成極小的累贅。" +msgstr "加上背帶的可折疊袋子。能夠多提供一點儲物空間, 只造成極小的累贅。" #: lang/json/ARMOR_from_json.py msgid "duster" @@ -5936,10 +5978,22 @@ msgstr[0] "毛皮防塵大衣" msgid "A thick fur full-length duster. Has many pockets for storage." msgstr "一件厚實的、等身長的毛皮防塵大衣, 有很多可以儲存物品的口袋。" +#: lang/json/ARMOR_from_json.py +msgid "faux fur duster" +msgid_plural "faux fur dusters" +msgstr[0] "人造毛皮防塵大衣" + +#. ~ Description for faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur duster, falling below your knees. Has many pockets for " +"storing things." +msgstr "一件厚實的人造毛皮防塵大衣, 衣長過膝, 有很多可以儲存物品的口袋。" + #: lang/json/ARMOR_from_json.py msgid "leather duster" msgid_plural "leather dusters" -msgstr[0] "皮防塵大衣" +msgstr[0] "皮革防塵大衣" #. ~ Description for leather duster #: lang/json/ARMOR_from_json.py @@ -5956,7 +6010,7 @@ msgstr[0] "生存者防塵大衣" msgid "" "A Kevlar armored custom full-length duster, covered with pouches and " "pockets. Comfortable, durable, and great for storage." -msgstr "一件自定製的、等身長的凱夫勒裝甲防塵大衣, 上面佈滿了小袋子和口袋。舒適, 耐用, 而且適合儲物。" +msgstr "一件訂製的、等身長的凱夫勒裝甲防塵大衣, 上面佈滿了小袋子和口袋。舒適、耐用, 而且適合儲物。" #: lang/json/ARMOR_from_json.py msgid "pair of ear plugs" @@ -5983,14 +6037,14 @@ msgstr "人們用這些圓型的東西插入他們的耳垂當作耳環, 也被 #: lang/json/ARMOR_from_json.py msgid "eboshi" msgid_plural "eboshis" -msgstr[0] "韮山笠" +msgstr[0] "烏帽子" #. ~ Description for eboshi #: lang/json/ARMOR_from_json.py msgid "" "A high, black cap with a very narrow top. Traditionally worn by Shinto " "priests." -msgstr "一頂高窄黑帽。通常由神道教的祭司所配戴。" +msgstr "一頂黑色尖頂高帽。是神道教祭司的傳統頭飾。" #: lang/json/ARMOR_from_json.py msgid "pair of elbow pads" @@ -6012,7 +6066,7 @@ msgstr[0] "時尚墨鏡" msgid "" "A pair of stylish sunglasses. Look good while keeping the glare out of your" " eyes." -msgstr "" +msgstr "一副時尚墨鏡, 擋住強光, 留住時尚。" #: lang/json/ARMOR_from_json.py msgid "fanny pack" @@ -6034,7 +6088,7 @@ msgstr[0] "擊劍外套" msgid "" "A padded jacket with the zipper on the back used by fencers to prevent " "accidents. It doesn't have any storage room, but it is very comfortable." -msgstr "一件背後有拉鍊的填充外套, 用以防止擊劍選手受傷。它沒有任何儲物空間, 但是非常舒適。" +msgstr "一件供擊劍運動員使用的帶襯墊的外套, 背後有拉鍊, 用於防止意外。它沒有任何儲物空間, 但是非常舒適。" #: lang/json/ARMOR_from_json.py msgid "fencing mask" @@ -6044,22 +6098,22 @@ msgstr[0] "擊劍面具" #. ~ Description for fencing mask #: lang/json/ARMOR_from_json.py msgid "A tough hood made of steel mesh used by fencers." -msgstr "" +msgstr "一件供擊劍運動員使用的強韌的面具, 由鋼絲網製成。" #: lang/json/ARMOR_from_json.py msgid "fencing pants" msgid_plural "fencing pants" -msgstr[0] "擊劍褲" +msgstr[0] "擊劍長褲" #. ~ Description for fencing pants #: lang/json/ARMOR_from_json.py msgid "A pair of reinforced pants used by fencers to prevent injuries." -msgstr "一件用於防止擊劍選手受傷的強化褲子。" +msgstr "一件供擊劍運動員使用的強化長褲, 用於防止受傷。" #: lang/json/ARMOR_from_json.py msgid "pair of fire gauntlets" msgid_plural "pairs of fire gauntlets" -msgstr[0] "消防手套" +msgstr[0] "消防護手" #. ~ Description for pair of fire gauntlets #: lang/json/ARMOR_from_json.py @@ -6067,7 +6121,7 @@ msgid "" "A heavy pair of gloves, used by firefighters and metalworkers for heat " "protection. Highly resistant to heat and flame, they provide excellent " "protection from injury." -msgstr "一雙沈重的手套, 常用於消防員與鑄造工之手, 用來隔熱。對於高溫及火焰有絕佳的防護力。" +msgstr "一雙件供消防員和金屬加工工人使用的厚重的手套, 用於隔熱。能提供絕佳的防護能力抵禦高溫與火焰。" #: lang/json/ARMOR_from_json.py msgid "firefighter helmet" @@ -6079,7 +6133,7 @@ msgstr[0] "消防帽" msgid "" "A distinctive helmet worn by firefighters. More than just a piece of " "firefighting equipment, it serves as a badge of honor and respect." -msgstr "" +msgstr "一頂顏色鮮豔的消防員帽子。不僅僅是一件消防設備, 同時也是榮譽的象徵。" #: lang/json/ARMOR_from_json.py msgid "firefighter belt" @@ -6170,7 +6224,7 @@ msgstr[0] "美式足球護具" msgid "" "Heavy plastic armor for your upper torso. Normally worn by football " "players." -msgstr "穿在上身的沉重塑膠護具。通常都是美式足球員在穿的。" +msgstr "一副厚重的塑膠護具, 用於上半身。通常是美式足球員穿的。" #: lang/json/ARMOR_from_json.py msgid "survivor firesuit" @@ -6183,7 +6237,7 @@ msgid "" "Heavy, hand-built combination armor made from a cut-down bulletproof vest " "and a reinforced flame-resistant Nomex jumpsuit. Protects the wearer from " "fire and the elements." -msgstr "" +msgstr "一件厚重、手工製作的組合護甲, 由精簡的防彈背心和強化的諾梅克斯防火連身服製成。保護你免於火焰與環境危害。" #: lang/json/ARMOR_from_json.py msgid "fur blanket" @@ -6193,7 +6247,7 @@ msgstr[0] "毛皮毯" #. ~ Description for fur blanket #: lang/json/ARMOR_from_json.py msgid "A heavy fur blanket that covers most of your body." -msgstr "一件厚重的毛皮毯能夠覆蓋你的全身。" +msgstr "一件厚重的毛皮毯, 能包覆你大部分的身體。" #: lang/json/ARMOR_from_json.py msgid "pair of fuzzy cat ears" @@ -6277,51 +6331,51 @@ msgstr[0] "軟甲" msgid "" "A thick jacket of quilted fabric, designed to be worn underneath mail or " "other armor. Or worn on its own, if you can't afford proper armor." -msgstr "一件厚實的充棉針織外套, 設計來穿在鏈甲或其他盔甲下面。如果你穿不起像樣的盔甲, 也可以只穿這一件。" +msgstr "一件厚實的絎縫布料外套, 設計來穿在鏈甲或其他護甲下面。如果你穿不起像樣的護甲, 也可以只穿這一件。" #: lang/json/ARMOR_from_json.py msgid "pair of bone armor gauntlets" msgid_plural "pairs of bone armor gauntlets" -msgstr[0] "骨製護甲手套" +msgstr[0] "骨製護手" #. ~ Description for pair of bone armor gauntlets #: lang/json/ARMOR_from_json.py msgid "" "Leather gauntlets with bone armor reinforcement. Very light and strong." -msgstr "骨甲加固的皮革手套。輕又強韌。" +msgstr "以骨頭強化的皮革護手。輕巧且強韌。" #: lang/json/ARMOR_from_json.py msgid "pair of chitinous gauntlets" msgid_plural "pairs of chitinous gauntlets" -msgstr[0] "甲殼手套" +msgstr[0] "甲殼護手" #. ~ Description for pair of chitinous gauntlets #: lang/json/ARMOR_from_json.py msgid "" "Gauntlets made from the exoskeletons of insects. Very light and durable." -msgstr "利用昆蟲的外骨骼做成的手套, 輕量並且可靠。" +msgstr "由昆蟲的外骨骼製成的護手。非常輕巧且耐用。" #: lang/json/ARMOR_from_json.py msgid "pair of biosilicified chitin gauntlets" msgid_plural "pairs of biosilicified chitin gauntlets" -msgstr[0] "" +msgstr[0] "生物矽化甲殼護手" #. ~ Description for pair of biosilicified chitin gauntlets #: lang/json/ARMOR_from_json.py msgid "" "Gauntlets crafted from the carefully cleaned and pruned biosilicified " "exoskeletons of acidic ants. Acid-resistant and very durable." -msgstr "" +msgstr "由酸液螞蟻的生物矽化外骨骼, 精心清洗並剪裁製成的護手。防酸且非常耐用。" #: lang/json/ARMOR_from_json.py msgid "pair of leather armor gauntlets" msgid_plural "pairs of leather armor gauntlets" -msgstr[0] "皮革護甲手套" +msgstr[0] "皮革裝甲護手" #. ~ Description for pair of leather armor gauntlets #: lang/json/ARMOR_from_json.py msgid "Heavy fingerless leather gloves. Very flexible and comfortable." -msgstr "沉重的無指皮手套。非常靈活和舒適。" +msgstr "厚重的露指皮革手套。非常靈活和舒適。" #: lang/json/ARMOR_from_json.py msgid "pair of geta" @@ -6343,7 +6397,7 @@ msgstr[0] "防彈護目鏡" msgid "" "Modern tactical eyewear that protects from small projectiles and fragments." " Provides excellent protection from environmental dangers." -msgstr "" +msgstr "現代戰術眼鏡, 能保護你免於小型投射物或破片的傷害, 同時提供絕佳的環境危害防護。" #: lang/json/ARMOR_from_json.py msgid "pair of eclipse glasses" @@ -6392,7 +6446,7 @@ msgstr[0] "單眼鏡" msgid "" "An essential article of the gentleman's apparel. Also corrects near-" "sightedness. You can use this to focus sunlight." -msgstr "" +msgstr "一副復古的單片式眼鏡。紳士專用。同時能解決近視的困擾。你也可將其用來聚焦日光。" #: lang/json/ARMOR_from_json.py msgid "pair of reading glasses" @@ -6404,7 +6458,7 @@ msgstr[0] "老花眼鏡" msgid "" "A pair of glasses for the far-sighted. Useless for anyone else. You can " "use them to focus sunlight." -msgstr "" +msgstr "一副遠視眼鏡。對正常人沒有用處。你可以用它來聚焦陽光。" #: lang/json/ARMOR_from_json.py msgid "pair of safety glasses" @@ -6447,19 +6501,19 @@ msgstr[0] "露指手套" #: lang/json/ARMOR_from_json.py msgid "" "A pair of leather gloves with no fingers, allowing greater manual dexterity." -msgstr "一雙會露出手指的皮手套, 便於活動。" +msgstr "一雙露出手指的皮革手套, 提供更好的手部靈活。" #: lang/json/ARMOR_from_json.py msgid "pair of armored fingerless gloves" msgid_plural "pairs of armored fingerless gloves" -msgstr[0] "裝甲無指手套" +msgstr[0] "裝甲露指手套" #. ~ Description for pair of armored fingerless gloves #: lang/json/ARMOR_from_json.py msgid "" "A pair of leather gloves with no fingers, allowing greater manual dexterity." " These have been crudely reinforced with steel guards across the back." -msgstr "一對無指的皮革手套, 能夠讓手更好活動。手背的部份加上了粗製的強化鋼材。" +msgstr "一雙露出手指的皮革手套, 提供更好的手部靈活。手背部分粗糙地以鋼材強化。" #: lang/json/ARMOR_from_json.py msgid "pair of survivor firegloves" @@ -6471,7 +6525,7 @@ msgstr[0] "生存者防火手套" msgid "" "A pair of customized, Kevlar armored Nomex gloves, modified to be easy to " "wear while providing maximum protection under extreme conditions." -msgstr "一雙訂製手套, 由凱夫勒裝甲與諾梅克斯阻燃纖維製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" +msgstr "一雙訂製的手套, 由凱夫勒裝甲與諾梅克斯阻燃纖維製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" #: lang/json/ARMOR_from_json.py msgid "pair of fur gloves" @@ -6493,7 +6547,7 @@ msgstr[0] "生存者潛水手套" msgid "" "A pair of customized, Kevlar armored neoprene gloves, modified to be easy to" " wear while providing maximum protection under extreme conditions." -msgstr "一雙訂製手套, 由凱夫勒裝甲與橡膠製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" +msgstr "一雙訂製的手套, 由凱夫勒裝甲與橡膠製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" #: lang/json/ARMOR_from_json.py msgid "pair of heavy survivor gloves" @@ -6506,17 +6560,17 @@ msgid "" "A pair of heavily customized, steel-backed armored Kevlar gloves, modified " "to be easy to wear while providing maximum protection under extreme " "conditions." -msgstr "一雙重型訂製手套, 由凱夫勒裝甲與鋼材製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" +msgstr "一雙訂製的重型手套, 由凱夫勒裝甲與鋼材製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" #: lang/json/ARMOR_from_json.py msgid "pair of leather gloves" msgid_plural "pairs of leather gloves" -msgstr[0] "皮手套" +msgstr[0] "皮革手套" #. ~ Description for pair of leather gloves #: lang/json/ARMOR_from_json.py msgid "A thin pair of black leather gloves." -msgstr "一雙黑色皮革薄手套。" +msgstr "一雙輕薄的黑色皮革手套。" #: lang/json/ARMOR_from_json.py msgid "pair of light gloves" @@ -6549,7 +6603,7 @@ msgstr[0] "輕型生存者手套" msgid "" "A pair of customized, Kevlar armored cloth gloves, modified to be easy to " "wear while providing maximum protection under extreme conditions." -msgstr "一雙訂製手套, 由凱夫勒裝甲與棉布製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" +msgstr "一雙訂製的手套, 由凱夫勒裝甲與棉布製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" #: lang/json/ARMOR_from_json.py msgid "pair of medical gloves" @@ -6569,7 +6623,7 @@ msgstr[0] "裝甲護手" #. ~ Description for pair of armored gauntlets #: lang/json/ARMOR_from_json.py msgid "An extremely heavy set of armor-plated leather gloves." -msgstr "" +msgstr "一雙極度厚重的裝甲皮革手套。" #: lang/json/ARMOR_from_json.py msgid "pair of rubber gloves" @@ -6592,7 +6646,7 @@ msgstr[0] "生存者手套" msgid "" "A pair of customized, Kevlar armored leather gloves, modified to be easy to " "wear while providing maximum protection under extreme conditions." -msgstr "一雙訂製手套, 由凱夫勒裝甲與皮革製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" +msgstr "一雙訂製的手套, 由凱夫勒裝甲與皮革製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" #: lang/json/ARMOR_from_json.py msgid "pair of tactical gloves" @@ -6604,7 +6658,7 @@ msgstr[0] "戰術手套" msgid "" "A pair of reinforced Kevlar tactical gloves. Commonly used by police and " "military units." -msgstr "一雙由強化的凱夫勒纖維製成的戰術手套。通常都是軍警使用的東西。" +msgstr "一雙強化的戰術手套, 由凱夫勒裝甲製成。通常供警察或軍人使用。" #: lang/json/ARMOR_from_json.py msgid "pair of winter gloves" @@ -6614,7 +6668,7 @@ msgstr[0] "冬季手套" #. ~ Description for pair of winter gloves #: lang/json/ARMOR_from_json.py msgid "A pair of padded gloves. Cumbersome, but warm." -msgstr "" +msgstr "一雙帶襯墊的手套。累贅但保暖。" #: lang/json/ARMOR_from_json.py msgid "pair of wool gloves" @@ -6629,7 +6683,7 @@ msgstr "一雙厚實的羊毛手套。累贅但保暖。" #: lang/json/ARMOR_from_json.py msgid "pair of work gloves" msgid_plural "pairs of work gloves" -msgstr[0] "勞工手套" +msgstr[0] "工作手套" #. ~ Description for pair of work gloves #: lang/json/ARMOR_from_json.py @@ -6647,7 +6701,7 @@ msgid "" "Long pieces of cloth that are meant to be wrapped around your hands. " "Provide small amounts of protection while punching and performing other " "general mischief." -msgstr "" +msgstr "用於纏繞在手上的棉布長條。能在拳擊或是做其他壞事時提供少量的防護能力。" #: lang/json/ARMOR_from_json.py msgid "pair of fur hand wraps" @@ -6660,7 +6714,7 @@ msgid "" "Pieces of animal pelt that are meant to be wrapped around your hands. " "Provide small amounts of protection while punching and performing other " "general mischief." -msgstr "" +msgstr "用於纏繞在手上的幾片毛皮。能在拳擊或是做其他壞事時提供少量的防護能力。" #: lang/json/ARMOR_from_json.py msgid "pair of leather hand wraps" @@ -6673,7 +6727,7 @@ msgid "" "Pieces of leather that are meant to be wrapped around your hands. Provide " "small amounts of protection while punching and performing other general " "mischief." -msgstr "幾塊皮革用來纏在你的手上以提供少量的保護, 一般是在毆打人或是做其他壞事的時候使用。" +msgstr "用於纏繞在手上的幾片皮革。能在拳擊或是做其他壞事時提供少量的防護能力。" #: lang/json/ARMOR_from_json.py msgid "pair of wool hand wraps" @@ -6686,7 +6740,7 @@ msgid "" "Long pieces of wool that are meant to be wrapped around your hands. Provide" " small amounts of protection while punching and performing other general " "mischief." -msgstr "" +msgstr "用於纏繞在手上的羊毛長條。能在拳擊或是做其他壞事時提供少量的防護能力。" #: lang/json/ARMOR_from_json.py msgid "pair of winter survivor gloves" @@ -6698,7 +6752,7 @@ msgstr[0] "冬季生存者手套" msgid "" "A pair of customized, Kevlar armored fur gloves, modified to be easy to wear" " while providing maximum protection under extreme conditions." -msgstr "一雙訂製手套, 由凱夫勒裝甲與毛皮製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" +msgstr "一雙訂製的手套, 由凱夫勒裝甲與毛皮製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" #: lang/json/ARMOR_from_json.py msgid "pair of XL survivor gloves" @@ -6710,7 +6764,7 @@ msgstr[0] "XL 生存者手套" msgid "" "A massive pair of customized, Kevlar armored leather gloves, modified to be " "easy to wear while providing maximum protection under extreme conditions." -msgstr "一雙巨大的訂製手套, 由凱夫勒裝甲與皮革製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" +msgstr "一雙訂製的巨型手套, 由凱夫勒裝甲與皮革製成。便於穿戴, 即使在極端環境下也能提供極致的防護能力。" #: lang/json/ARMOR_from_json.py msgid "go bag" @@ -6723,7 +6777,7 @@ msgid "" "A huge duffel bag with backpack attached, both packed to the gills. Judging" " by the feel, a National Guard soldier could have packed this to be ready " "for deployment. Activate or disassemble to unpack and enjoy." -msgstr "" +msgstr "一個巨大行李袋相連著背帶, 已經紮實的打包。通過手感來判斷, 這應該是一個國民警衛隊士兵打包好要部署的東西。使用或拆開來取用裡面的東西。" #: lang/json/ARMOR_from_json.py msgid "pair of ski goggles" @@ -6735,7 +6789,7 @@ msgstr[0] "滑雪護目鏡" msgid "" "A large pair of goggles that completely seal off your eyes. Provides " "excellent protection from environmental dangers." -msgstr "" +msgstr "一副大型護目鏡, 能完全密封你的眼睛, 提供絕佳的環境危害防護。" #: lang/json/ARMOR_from_json.py msgid "pair of swim goggles" @@ -6757,7 +6811,7 @@ msgstr[0] "焊接護目鏡" msgid "" "A dark pair of goggles. They make seeing very difficult, but protect you " "from bright flashes." -msgstr "一副深色的護目鏡。會讓視線變得很昏暗, 但是能夠防止你被閃光閃瞎。" +msgstr "一副深色的護目鏡。它讓視線變得非常困難, 但是能保護你免於眩光。" #: lang/json/ARMOR_from_json.py msgid "gold bracelet" @@ -6805,7 +6859,7 @@ msgstr[0] "金錶" msgid "" "A gold-plated steel self-winding wristwatch, suitable for a retirement " "present. Tells the time and looks good." -msgstr "金光閃閃的腕錶, 適合作為退休禮物。能夠看時間而且很美觀。" +msgstr "一支自動上鍊的鋼鐵鍍金腕錶, 適合作為退休禮物。能夠看時間而且很美觀。" #: lang/json/ARMOR_from_json.py msgid "evening gown" @@ -6827,12 +6881,12 @@ msgstr[0] "厚外套" #: lang/json/ARMOR_from_json.py msgid "" "A heavy, full-length wool coat. Cumbersome, but warm and with deep pockets." -msgstr "一件沉重的、等身長的棉外套。很累贅, 但是保暖且有大口袋。" +msgstr "一件厚重、等身長的羊毛外套。很累贅, 但是保暖且有大口袋。" #: lang/json/ARMOR_from_json.py msgid "survivor wetsuit" msgid_plural "survivor wetsuits" -msgstr[0] "生存者潛水裝" +msgstr[0] "生存者潛水服" #. ~ Description for survivor wetsuit #: lang/json/ARMOR_from_json.py @@ -6840,7 +6894,7 @@ msgid "" "A lightweight, hand-built combination armor made from a cut-down bulletproof" " vest and a reinforced neoprene wetsuit. Protects from the elements as well" " as from harm." -msgstr "" +msgstr "一件輕量、手工製作的組合護甲, 由剪裁的防彈背心和強化的橡膠潛水服製成。保護你免於傷害與環境危害。" #: lang/json/ARMOR_from_json.py msgid "hakama" @@ -6894,7 +6948,7 @@ msgstr[0] "廚師高帽" msgid "" "A traditional chef's hat, standing tall and proud against the vulgarities of" " the world." -msgstr "傳統的廚師帽, 高聳的帽體驕傲的表達著對凡人的鄙視。" +msgstr "一頂傳統廚師帽, 高聳而驕傲的對抗著凡塵的庸俗。" #: lang/json/ARMOR_from_json.py msgid "cotton hat" @@ -6904,7 +6958,7 @@ msgstr[0] "棉帽" #. ~ Description for cotton hat #: lang/json/ARMOR_from_json.py msgid "A snug-fitting cotton hat. Quite warm." -msgstr "一頂貼身的棉帽。相當保暖。" +msgstr "一頂緊密貼身的棉帽。相當保暖。" #: lang/json/ARMOR_from_json.py msgid "fur hat" @@ -6916,6 +6970,18 @@ msgstr[0] "毛皮帽" msgid "A hat made from the pelts of animals. Extremely warm." msgstr "一頂由動物的毛皮製作的帽子。極度保暖。" +#: lang/json/ARMOR_from_json.py +msgid "faux fur hat" +msgid_plural "faux fur hats" +msgstr[0] "人造毛皮帽" + +#. ~ Description for faux fur hat +#: lang/json/ARMOR_from_json.py +msgid "" +"A stylish hat made of faux fur. Like real fur, but without the suffering, " +"if the tag is to be believed. Very warm." +msgstr "這款時尚的帽子採用人造毛皮製成。如果標籤是可信的, 就像是真毛皮, 但沒有痛苦。很溫暖。" + #: lang/json/ARMOR_from_json.py msgid "hard hat" msgid_plural "hard hats" @@ -6926,7 +6992,7 @@ msgstr[0] "工程帽" msgid "" "A hard plastic hat worn in construction sites. Excellent protection from " "cuts and percussion." -msgstr "一頂由硬質塑膠製成的帽子, 常見於工地。提供對於砍劈及穿刺絕佳的保護性。" +msgstr "一頂堅硬的塑膠帽子, 用於在工地穿戴。能提供絕佳的砍劈與穿刺防護。" #: lang/json/ARMOR_from_json.py msgid "hooded hard hat" @@ -6939,7 +7005,7 @@ msgid "" "A hard plastic hat worn in construction sites, with a cloth tucked in under " "it to serve as a makeshift hood. Makes it a bit more comfortable to wear, " "and better protects the neck from sun and rain." -msgstr "在建築工地戴的硬塑料帽子, 裡面塞有布料作為臨時罩, 使得它戴起來更舒服些, 而且更能保護脖子避免日曬雨淋。" +msgstr "一頂堅硬的塑膠帽子, 用於在工地穿戴。下面塞了一塊棉布作為臨時兜帽, 使它戴起來更舒適些, 同時更能保護頸部免於日曬雨淋。" #: lang/json/ARMOR_from_json.py msgid "hunting cap" @@ -6959,7 +7025,7 @@ msgstr[0] "針織帽" #. ~ Description for knit hat #: lang/json/ARMOR_from_json.py msgid "A snug-fitting wool hat. Very warm." -msgstr "一頂針織的羊毛帽。非常保暖。" +msgstr "一頂緊密貼身的羊毛帽。非常保暖。" #: lang/json/ARMOR_from_json.py msgid "newsboy cap" @@ -6971,12 +7037,12 @@ msgstr[0] "送報生帽" msgid "" "A slouching wool cap with a short front brim, traditionally associated with " "newspaper delivery boys. Quite warm." -msgstr "一頂軟趴趴的毛線帽有著短短的帽沿, 戴起來很暖和。基於傳統, 送報生帽和送報生總是有著某種關係。" +msgstr "一頂軟塌的羊毛帽, 前方有短帽沿, 慣例與送報男孩有關。相當保暖。" #: lang/json/ARMOR_from_json.py msgid "noise canceling headgear" msgid_plural "noise canceling headgears" -msgstr[0] "" +msgstr[0] "消音耳罩" #. ~ Description for noise canceling headgear #: lang/json/ARMOR_from_json.py @@ -6996,7 +7062,7 @@ msgid "" "A felt orange sombrero with traditional white and yellow hand stitching. " "The wide brim keeps the sun out of your eyes, and a thin strap hooks around " "your chin." -msgstr "毛氈橙色草帽帶有傳統白色與黃色的手縫線。帽子的寬邊讓你的眼睛不受陽光直射, 並圍繞你的下巴有一條細長鉤帶。" +msgstr "一頂橙色的毛氈墨西哥帽, 有白色與黃色的傳統刺繡。寬大的帽緣能保護你的眼睛不受陽光直射, 同時有一條細綁帶可以鉤住你的下巴。" #: lang/json/ARMOR_from_json.py msgid "hazmat suit" @@ -7031,7 +7097,7 @@ msgstr[0] "陸軍頭盔" #: lang/json/ARMOR_from_json.py msgid "" "A heavy helmet that provides excellent protection from all sorts of damage." -msgstr "一頂沈重的金屬頭盔, 提供了絕佳的全方位保護。" +msgstr "一頂厚重的金屬頭盔, 提供了絕佳的全方位保護。" #: lang/json/ARMOR_from_json.py msgid "baseball helmet" @@ -7043,7 +7109,7 @@ msgstr[0] "棒球頭盔" msgid "" "A hard plastic helmet that covers the head and ears. Designed to protect " "against a baseball to the head." -msgstr "一頂硬塑膠製成的安全帽, 能夠保護頭部及耳朵。設計用來防止被棒球 K 到頭。" +msgstr "一頂堅硬的塑膠頭盔, 能包覆頭部及耳朵。設計來防止被棒球 K 到頭。" #: lang/json/ARMOR_from_json.py msgid "barbute helm" @@ -7077,7 +7143,7 @@ msgstr[0] "骨製頭盔" msgid "" "A grotesque, horned helmet carved from bone. Covers the entire head; very " "light and strong." -msgstr "一頂誇張的有角頭盔, 由骨頭雕刻而成。能夠覆蓋整個頭部;輕又堅固。" +msgstr "一頂怪誕的有角頭盔, 由骨頭雕刻而成, 能包覆整個頭部。非常輕巧且堅固。" #: lang/json/ARMOR_from_json.py msgid "chitinous helmet" @@ -7089,12 +7155,12 @@ msgstr[0] "甲殼頭盔" msgid "" "A helmet made from the exoskeletons of insects. Covers the entire head; " "very light and durable." -msgstr "一個由昆蟲外骨骼製成的頭盔。保護了整個頭部;輕又可靠。" +msgstr "一個由昆蟲外骨骼製成的頭盔。能包覆整個頭部。非常輕巧且耐用。" #: lang/json/ARMOR_from_json.py msgid "biosilicified chitin helmet" msgid_plural "biosilicified chitin helmets" -msgstr[0] "" +msgstr[0] "生物矽化甲殼頭盔" #. ~ Description for biosilicified chitin helmet #: lang/json/ARMOR_from_json.py @@ -7102,7 +7168,7 @@ msgid "" "A helmet crafted from the carefully cleaned and pruned biosilicified " "exoskeletons of acidic ants. Covers the entire head; acid-resistant and " "very durable." -msgstr "" +msgstr "由酸液螞蟻的生物矽化外骨骼, 精心清洗並剪裁製成的頭盔。防酸且非常耐用。" #: lang/json/ARMOR_from_json.py msgid "football helmet" @@ -7112,7 +7178,7 @@ msgstr[0] "美式足球頭盔" #. ~ Description for football helmet #: lang/json/ARMOR_from_json.py msgid "A heavy plastic helmet normally worn by football players." -msgstr "通常是美式足球員戴的沉重塑膠頭盔。" +msgstr "一頂厚重的塑膠頭盔。通常是美式足球員穿的。" #: lang/json/ARMOR_from_json.py msgid "heavy survivor helmet" @@ -7124,7 +7190,7 @@ msgstr[0] "重型生存者頭盔" msgid "" "A customized, heavily armored steel and kevlar helmet, modified to provide " "maximum comfort and protection from harm." -msgstr "一頂重型訂製頭盔, 由凱夫勒裝甲與鋼材製成。能提供極致的舒適感與防護能力以抵禦傷害。" +msgstr "一頂訂製的重型頭盔, 由凱夫勒裝甲與鋼材製成。能提供極致的舒適感與防護能力以抵禦傷害。" #: lang/json/ARMOR_from_json.py msgid "kabuto" @@ -7170,12 +7236,12 @@ msgstr[0] "蝦尾頭盔" msgid "" "A heavy helmet that provides excellent protection from all sorts of damage." " It has a tail coming off the back that provides protection to your neck." -msgstr "一頂沈重的頭盔, 能夠很好的抵禦各種種類的傷害。後頸有特殊的蝦尾能夠保護你的脖子。" +msgstr "一頂厚重的頭盔, 能夠很好的抵禦各種種類的傷害。後頸有特殊的蝦尾能夠保護你的頸部。" #: lang/json/ARMOR_from_json.py msgid "motorcycle helmet" msgid_plural "motorcycle helmets" -msgstr[0] "機車安全帽" +msgstr[0] "摩托車安全帽" #. ~ Description for motorcycle helmet #: lang/json/ARMOR_from_json.py @@ -7187,14 +7253,14 @@ msgstr "一個能夠保護頭部及下巴的安全帽。裡面有留了能戴護 #: lang/json/ARMOR_from_json.py msgid "nomad cowl" msgid_plural "nomad cowls" -msgstr[0] "游牧民族頭巾" +msgstr[0] "游牧民族風帽" #. ~ Description for nomad cowl #: lang/json/ARMOR_from_json.py msgid "" "A makeshift cowl with protection for the eyes from rain and sun, designed " "for long travels." -msgstr "" +msgstr "一種粗製的保護罩, 可保護眼睛免受雨水和陽光的傷害, 專為長途旅行而設計。" #: lang/json/ARMOR_from_json.py msgid "great helm" @@ -7208,39 +7274,29 @@ msgid "" "the cost of great encumbrance." msgstr "一頂中世紀的金屬頭盔, 能夠保護整個頭部, 只是要付出極大累贅的代價。" -#: lang/json/ARMOR_from_json.py -msgid "riot helmet" -msgid_plural "riot helmets" -msgstr[0] "鎮暴頭盔" - -#. ~ Description for riot helmet -#: lang/json/ARMOR_from_json.py -msgid "A helmet with a plastic shield that covers your entire face." -msgstr "一個臉部有透明面罩的頭盔, 能夠保護整張臉部。" - #: lang/json/ARMOR_from_json.py msgid "scavenger cowl" msgid_plural "scavenger cowls" -msgstr[0] "拾荒者頭巾" +msgstr[0] "拾荒者風帽" #. ~ Description for scavenger cowl #: lang/json/ARMOR_from_json.py msgid "" "A sturdy protective cowl extending down to the neck, fitted with a " "respirator and eye protection. For dangerous scavenging ventures." -msgstr "一條堅固且延伸到脖子的防風帽, 附有防毒面具以保護眼睛與口鼻。是在危險區域探索的好幫手。" +msgstr "一條堅固且延伸到頸部的防風帽, 附有防毒面具以保護眼睛與口鼻。是在危險區域探索的好幫手。" #: lang/json/ARMOR_from_json.py msgid "skid lid" msgid_plural "skid lids" -msgstr[0] "瓜皮帽" +msgstr[0] "半罩式安全帽" #. ~ Description for skid lid #: lang/json/ARMOR_from_json.py msgid "" "A small metal helmet that covers the head and protects against cuts and " "percussion." -msgstr "一頂金屬的安全帽, 能夠蓋住頭部防止砍劈及穿刺傷害。" +msgstr "一頂小型金屬頭盔, 能包覆頭部以抵禦砍劈與穿刺傷害。" #: lang/json/ARMOR_from_json.py msgid "survivor helmet" @@ -7252,7 +7308,7 @@ msgstr[0] "生存者頭盔" msgid "" "A customized, heavily armored Kevlar helmet, modified with leather " "reinforcements to provide maximum comfort and protection from harm." -msgstr "一頂訂製頭盔, 由凱夫勒裝甲製成並以皮革強化。能提供極致的舒適感與防護能力以抵禦傷害。" +msgstr "一頂訂製的頭盔, 由凱夫勒裝甲製成並以皮革強化。能提供極致的舒適感與防護能力以抵禦傷害。" #: lang/json/ARMOR_from_json.py msgid "XL survivor helmet" @@ -7264,7 +7320,7 @@ msgstr[0] "XL 生存者頭盔" msgid "" "A massive customized, heavily armored Kevlar helmet, modified with leather " "reinforcements to provide maximum comfort and protection from harm." -msgstr "一頂巨大的訂製頭盔, 由凱夫勒裝甲製成並以皮革強化。能提供極致的舒適感與防護能力以抵禦傷害。" +msgstr "一頂訂製的巨型頭盔, 由凱夫勒裝甲製成並以皮革強化。能提供極致的舒適感與防護能力以抵禦傷害。" #: lang/json/ARMOR_from_json.py msgid "holy symbol" @@ -7295,18 +7351,18 @@ msgstr[0] "生存者防火兜帽" #. ~ Description for survivor firehood #: lang/json/ARMOR_from_json.py msgid "A customized armored Nomex and Kevlar hood, very strong and durable." -msgstr "" +msgstr "一頂訂製的兜帽, 由凱夫勒裝甲與諾梅克斯阻燃纖維製成。非常堅固且耐用。" #: lang/json/ARMOR_from_json.py msgid "survivor wetsuit hood" msgid_plural "survivor wetsuit hoods" -msgstr[0] "生存者潛水布兜帽" +msgstr[0] "生存者潛水兜帽" #. ~ Description for survivor wetsuit hood #: lang/json/ARMOR_from_json.py msgid "" "A customized armored neoprene and Kevlar hood, very strong and durable." -msgstr "" +msgstr "一頂訂製的兜帽, 由凱夫勒裝甲與橡膠製成。非常堅固且耐用。" #: lang/json/ARMOR_from_json.py msgid "light survivor hood" @@ -7316,7 +7372,7 @@ msgstr[0] "輕型生存者兜帽" #. ~ Description for light survivor hood #: lang/json/ARMOR_from_json.py msgid "A customized armored cloth and Kevlar hood, very light and durable." -msgstr "" +msgstr "一頂訂製的兜帽, 由凱夫勒裝甲與棉布製成。非常輕巧且耐用。" #: lang/json/ARMOR_from_json.py msgid "rain hood" @@ -7340,7 +7396,7 @@ msgstr[0] "生存者兜帽" msgid "" "A customized, heavily armored leather and Kevlar hood, designed to provide " "comfort and protection from harm." -msgstr "" +msgstr "一頂訂製的重型兜帽, 由凱夫勒裝甲與皮革製成, 設計來提供舒適與傷害防護。" #: lang/json/ARMOR_from_json.py msgid "winter survivor hood" @@ -7350,7 +7406,7 @@ msgstr[0] "冬季生存者兜帽" #. ~ Description for winter survivor hood #: lang/json/ARMOR_from_json.py msgid "A customized armored fur and Kevlar hood, very warm and durable." -msgstr "一雙手工製的凱夫勒護甲毛皮兜帽, 非常保暖且耐用。" +msgstr "一頂訂製的兜帽, 由凱夫勒裝甲與毛皮製成。非常保暖且耐用。" #: lang/json/ARMOR_from_json.py msgid "XL survivor hood" @@ -7362,7 +7418,7 @@ msgstr[0] "XL 生存者兜帽" msgid "" "A massive customized, heavily armored leather and Kevlar hood, designed to " "provide comfort and protection from harm." -msgstr "" +msgstr "一頂訂製的巨型兜帽, 由凱夫勒裝甲與皮革製成, 設計來提供舒適與傷害防護。" #: lang/json/ARMOR_from_json.py msgid "hoodie" @@ -7373,7 +7429,7 @@ msgstr[0] "連帽衫" #: lang/json/ARMOR_from_json.py msgid "" "A sweatshirt with a hood and a \"kangaroo pocket\" in the front for storage." -msgstr "" +msgstr "一件有著兜帽的運動上衣。前面有能放東西的 \"袋鼠口袋\"。" #: lang/json/ARMOR_from_json.py msgid "hot pants" @@ -7398,7 +7454,7 @@ msgstr "一件簡單的毛皮熱褲。" #: lang/json/ARMOR_from_json.py msgid "leather hot pants" msgid_plural "leather hot pants" -msgstr[0] "皮熱褲" +msgstr[0] "皮革熱褲" #. ~ Description for leather hot pants #: lang/json/ARMOR_from_json.py @@ -7426,7 +7482,7 @@ msgid "" "A heavy, hand-built combination armor made from a reinforced bulletproof " "vest and a metal-plated leather jumpsuit. Protects from the elements as " "well as from harm." -msgstr "" +msgstr "一件厚重、手工製作的組合護甲, 由強化的防彈背心和金屬裝甲皮革連身服製成。保護你免於傷害與環境危害。" #: lang/json/ARMOR_from_json.py msgid "army jacket" @@ -7436,7 +7492,7 @@ msgstr[0] "陸軍外套" #. ~ Description for army jacket #: lang/json/ARMOR_from_json.py msgid "A tough jacket with lots of pockets. Favored by the military." -msgstr "一件強韌的、有許多口袋的外套。軍人的最愛。" +msgstr "一件強韌的、有許多口袋的外套。深受軍人喜愛。" #: lang/json/ARMOR_from_json.py msgid "chef's jacket" @@ -7460,7 +7516,7 @@ msgstr[0] "救生衣" msgid "" "A bright & cheaply made FEMA-issue windbreaker jacket with a hood. One " "size, fits none. Helps keep you unfrozen & visible for rescuers." -msgstr "一件輕便廉價的緊急風衣外套。只有一種尺寸, 很不合身, 有助於保持你的體溫和容易被救援人員看見。" +msgstr "一件輕便、廉價的風褸外套, 由聯邦緊急事務管理署配給。只有一種尺寸, 很不合身, 有助於保持體溫和容易被救援人員看見。" #: lang/json/ARMOR_from_json.py msgid "flannel jacket" @@ -7472,7 +7528,7 @@ msgstr[0] "法蘭絨外套" msgid "" "A jacket made from flannel-style denim, favored by outdoorsy types. " "Provides decent protection from cuts." -msgstr "" +msgstr "一件受戶外活動者喜愛的法蘭絨丹寧外套。提供了對砍劈傷害的普通保護。" #: lang/json/ARMOR_from_json.py msgid "jean jacket" @@ -7482,12 +7538,12 @@ msgstr[0] "牛仔外套" #. ~ Description for jean jacket #: lang/json/ARMOR_from_json.py msgid "A jacket made from denim. Provides decent protection from cuts." -msgstr "由丹寧布製的外套。能夠提供一些砍劈傷害保護。" +msgstr "一件牛仔外套。能提供不錯的砍劈防護。" #: lang/json/ARMOR_from_json.py msgid "leather jacket" msgid_plural "leather jackets" -msgstr[0] "皮外套" +msgstr[0] "皮革外套" #. ~ Description for leather jacket #: lang/json/ARMOR_from_json.py @@ -7499,26 +7555,26 @@ msgstr "一件外套, 由厚實的皮革製成。有點累贅, 但是能提供 #: lang/json/ARMOR_from_json.py msgid "armored leather jacket" msgid_plural "armored leather jackets" -msgstr[0] "裝甲皮外套" +msgstr[0] "裝甲皮革外套" #. ~ Description for armored leather jacket #: lang/json/ARMOR_from_json.py msgid "" "An armored jacket made from thick leather and metal plates. Cumbersome, but" " offers excellent protection from harm." -msgstr "一件裝甲外套, 由厚實的皮革和金屬板製成。有點累贅, 但是能提供絕佳的傷害防護。" +msgstr "一件裝甲外套, 由厚實的皮革與金屬板製成。有點累贅, 但是能提供絕佳的傷害防護。" #: lang/json/ARMOR_from_json.py msgid "red leather jacket" msgid_plural "red leather jackets" -msgstr[0] "紅色皮外套" +msgstr[0] "紅色皮革外套" #. ~ Description for red leather jacket #: lang/json/ARMOR_from_json.py msgid "" "A candy-apple-red leather jacket with black strips and shoulder protrusions." " It has a number of zippers and snaps in the front." -msgstr "一件蘋果糖紅的皮外套, 上面有著黑色條紋與肩部的突起, 前面有許多拉鍊與鈕扣。" +msgstr "一件蘋果糖紅色皮革外套, 採用黑色條紋與肩部突起設計, 前面有許多拉鍊與鈕扣。" #: lang/json/ARMOR_from_json.py msgid "light jacket" @@ -7545,22 +7601,22 @@ msgstr "附有兜帽的光滑合成纖維夾克。不是很保暖, 但可阻隔 #: lang/json/ARMOR_from_json.py msgid "jeans" msgid_plural "jeans" -msgstr[0] "牛仔褲" +msgstr[0] "牛仔長褲" #. ~ Description for jeans #: lang/json/ARMOR_from_json.py msgid "A pair of blue jeans with two deep pockets." -msgstr "一件有兩個深口袋的藍色牛仔褲。" +msgstr "一件有兩個深口袋的藍色牛仔長褲。" #: lang/json/ARMOR_from_json.py msgid "red jeans" msgid_plural "red jeans" -msgstr[0] "紅色牛仔褲" +msgstr[0] "紅色牛仔長褲" #. ~ Description for red jeans #: lang/json/ARMOR_from_json.py msgid "A pair of tight-fitting candy-apple-red jeans with two deep pockets." -msgstr "一件有兩個深口袋的糖蘋果紅緊身牛仔褲。" +msgstr "一件有兩個深口袋的糖蘋果紅緊身牛仔長褲。" #: lang/json/ARMOR_from_json.py msgid "Jedi cloak" @@ -7572,7 +7628,7 @@ msgstr[0] "絕地斗篷" msgid "" "Long, flowing robes. Simple and comfortable to wear. Be sure to tear it " "off dramatically before fighting any foes!" -msgstr "" +msgstr "飄逸的長袍, 穿起來簡單又舒適。別忘了在與任何敵人作戰之前要戲劇性地把它扯下!" #: lang/json/ARMOR_from_json.py msgid "jerrypack" @@ -7653,12 +7709,12 @@ msgstr "一件曲棍球運動衫, 由厚實的材料製成, 上頭印有 \"門 #: lang/json/ARMOR_from_json.py msgid "judo belt template" msgid_plural "judo belt templates" -msgstr[0] "" +msgstr[0] "柔道腰帶模板" #. ~ Description for judo belt template #: lang/json/ARMOR_from_json.py msgid "This is a template for judo belts. If found in a game it is a bug." -msgstr "" +msgstr "這是柔道腰帶的模板。如果在遊戲中找到它就是程式出錯了。" #: lang/json/ARMOR_from_json.py msgid "black belt" @@ -7745,7 +7801,7 @@ msgstr[0] "柔道道服" msgid "" "Plain white judo gi. Thick and a little stiff, it gives minor protection " "from cuts and punches." -msgstr "純白的柔道道服。厚實且有點僵硬, 能提供些微的鈍擊和砍劈防護。" +msgstr "純白色的柔道服。厚實且有點僵硬, 能提供些微的鈍擊和砍劈防護。" #: lang/json/ARMOR_from_json.py msgid "jumpsuit" @@ -7757,7 +7813,7 @@ msgstr[0] "連身服" msgid "" "A thin, short-sleeved jumpsuit; similar to those worn by prisoners. " "Provides decent storage and is not very encumbering." -msgstr "一件厚實的短袖連身服;有點像是犯人穿的。提供了不錯的儲物空間而且不是很累贅。" +msgstr "一件厚實的短袖連身服, 有點像給犯人穿的。提供了不錯的儲物空間而且不是很累贅。" #: lang/json/ARMOR_from_json.py msgid "XL jumpsuit" @@ -7770,7 +7826,7 @@ msgid "" "A thin, short-sleeved jumpsuit updated for the trans-human who needs full-" "body clothing. Provides some storage and is adjustable to minimize " "encumbrance." -msgstr "" +msgstr "這款薄款短袖連身衣專為超人類的全身衣著而剪裁。提供一些存儲空間, 可調節以最大限度地降低累贅。" #: lang/json/ARMOR_from_json.py msgid "karate gi" @@ -7782,7 +7838,7 @@ msgstr[0] "空手道道服" msgid "" "Plain white karate gi. Loose and flowing, it offers little protection, and " "little encumbrance." -msgstr "白色的空手道袍服。長而寬鬆, 防護力有限, 但是穿起來也不累贅。" +msgstr "純白色的空手道服。平滑且寬鬆, 幾乎沒有防護能力, 也幾乎不會造成累贅。" #: lang/json/ARMOR_from_json.py msgid "kariginu" @@ -7794,7 +7850,7 @@ msgstr[0] "狩衣" msgid "" "A traditional, ankle-length Shinto robe with several layers and very wide " "sleeves." -msgstr "一件傳統貼身的神道教斗篷, 斗篷有好幾層內裡以及具有非常寬大的袖子。" +msgstr "一件神道教的傳統長袍, 長度及踝, 有好幾層內裡與非常寬大的袖子。" #: lang/json/ARMOR_from_json.py msgid "keffiyeh" @@ -7806,7 +7862,7 @@ msgstr[0] "阿拉伯頭巾" msgid "" "A type of headdress traditionally used in the Middle East. It can be used " "in different ways to protect the head and mouth from the elements." -msgstr "" +msgstr "一種中東的傳統頭巾。它能以各種方式保護頭部與嘴巴免於環境危害。" #: lang/json/ARMOR_from_json.py msgid "keikogi" @@ -7843,7 +7899,7 @@ msgstr "沒有真正的蘇格蘭人會不穿他的蘇格蘭裙就出門。" #: lang/json/ARMOR_from_json.py msgid "leather kilt" msgid_plural "leather kilts" -msgstr[0] "" +msgstr[0] "皮革蘇格蘭裙" #: lang/json/ARMOR_from_json.py msgid "kimono" @@ -7855,7 +7911,7 @@ msgstr[0] "和服" msgid "" "A traditional, ankle-length Japanese robe, wrapped around the body with a " "sash." -msgstr "一件傳統貼身且附有肩帶的日式斗篷。" +msgstr "一件日本的傳統長袍, 長度及踝, 有一條可以纏繞身體好幾圈的腰帶。" #: lang/json/ARMOR_from_json.py msgid "kippah" @@ -7865,7 +7921,7 @@ msgstr[0] "猶太帽" #. ~ Description for kippah #: lang/json/ARMOR_from_json.py msgid "A thin, rounded skullcap. A traditional headdress in Judaism." -msgstr "一頂薄型無邊圓帽。傳統的猶太教頭飾。" +msgstr "一頂薄型無邊圓帽。是猶太教的傳統頭飾。" #: lang/json/ARMOR_from_json.py msgid "kittel" @@ -7877,7 +7933,7 @@ msgstr[0] "猶太傳統服飾" msgid "" "A white, knee-length cotton robe, traditionally worn by Jews on special " "occasions." -msgstr "一件白色及膝的棉製長袍, 是猶太人在特殊場合穿的傳統服裝。" +msgstr "一件白色的棉質長袍, 長度及膝, 是猶太人在特殊場合穿的傳統服裝。" #: lang/json/ARMOR_from_json.py msgid "pair of knee pads" @@ -7918,7 +7974,7 @@ msgstr "把東西夾在腰帶上" #. ~ Description for leather belt #: lang/json/ARMOR_from_json.py msgid "A leather belt. Useful for making your pair of pants fit." -msgstr "一條皮帶。能讓你的褲子變得合身。" +msgstr "一條皮革腰帶。能讓你的長褲變得合身。" #: lang/json/ARMOR_from_json.py msgid "pair of leather cat ears" @@ -7959,7 +8015,7 @@ msgstr "一個黑色皮革裝飾領圈, 前面還掛了個小鈴鐺。別擔心, #: lang/json/ARMOR_from_json.py msgid "leather pouch" msgid_plural "leather pouches" -msgstr[0] "皮袋子" +msgstr[0] "皮革袋子" #. ~ Description for leather pouch #: lang/json/ARMOR_from_json.py @@ -7976,34 +8032,34 @@ msgstr[0] "腿夾板" #: lang/json/ARMOR_from_json.py msgid "leg splint XL" msgid_plural "leg splint XLs" -msgstr[0] "" +msgstr[0] "XL 腿夾板" #. ~ Description for leg splint XL #: lang/json/ARMOR_from_json.py msgid "" "A tool to help set bones and hold them in place. It is specifically " "designed to fit Huge people." -msgstr "" +msgstr "一個用來將骨頭固定在位子上的工具。它經過特殊設計以適應 \"巨大的\" 生存者體型。" #: lang/json/ARMOR_from_json.py msgid "pair of leg warmers" msgid_plural "pairs of leg warmers" -msgstr[0] "襪套" +msgstr[0] "腿套" #. ~ Description for pair of leg warmers #: lang/json/ARMOR_from_json.py msgid "Snug, soft cloth sleeves to keep your legs warm." -msgstr "能保持腿部溫暖舒適的柔軟布套。" +msgstr "貼身、柔軟的棉布腿套, 用於保暖雙腿。" #: lang/json/ARMOR_from_json.py msgid "pair of XL leg warmers" msgid_plural "pairs of XL leg warmers" -msgstr[0] "XL 襪套" +msgstr[0] "XL 腿套" #. ~ Description for pair of XL leg warmers #: lang/json/ARMOR_from_json.py msgid "Large, soft, snug cloth sleeves to keep your exotic anatomy warm." -msgstr "寬大、柔軟、舒適的布套, 讓你變異的肢體保持溫暖。" +msgstr "巨大、貼身、柔軟的棉布腿套, 用於保暖畸形下肢。" #: lang/json/ARMOR_from_json.py msgid "pair of fetlock furs" @@ -8013,19 +8069,19 @@ msgstr[0] "毛皮護蹄" #. ~ Description for pair of fetlock furs #: lang/json/ARMOR_from_json.py msgid "Snug fur sleeves to keep your fetlocks warm." -msgstr "溫暖的毛皮套子, 能讓你的蹄保暖。" +msgstr "貼身的毛皮腿套, 用於保暖雙蹄。" #: lang/json/ARMOR_from_json.py msgid "leggings" msgid_plural "leggings" -msgstr[0] "綁腿" +msgstr[0] "緊身長褲" #. ~ Description for leggings #: lang/json/ARMOR_from_json.py msgid "" "Skin-tight nylon leggings, sometimes used when exercising, that keep your " "legs nice and warm." -msgstr "緊身的尼龍綁腿, 一般在鍛煉的時候穿著, 使你的大腿感覺良好且溫暖。" +msgstr "貼身的尼龍緊身長褲, 一般用於在運動時使雙腿感到舒適且保暖。" #: lang/json/ARMOR_from_json.py msgid "pair of hard leg guards" @@ -8047,7 +8103,7 @@ msgstr[0] "鋼製護腿" msgid "" "A full assembly of medieval leg protection. Cuisses, poleyns, and greaves, " "with leather straps to secure each piece and connect it as part of a set." -msgstr "一副完整組裝的中世紀風格護腿。以皮帶結實地連結著護腿、護膝以及護脛三個部位。" +msgstr "一副完整組裝的中世紀護腿。以皮革綁帶固定並連結著護腿、護膝以及護脛。 " #: lang/json/ARMOR_from_json.py msgid "pair of iron greaves" @@ -8079,7 +8135,7 @@ msgstr[0] "腿袋" msgid "" "A set of pouches that can be worn on the thighs using buckled straps. This " "variety is favored by the military." -msgstr "一組利用綁帶束在大腿的袋子。常見於軍方。" +msgstr "一組利用綁帶束在大腿的袋子。這個款式深受軍人喜愛。" #: lang/json/ARMOR_from_json.py msgid "Linux t-shirt" @@ -8250,19 +8306,19 @@ msgstr[0] "輕型生存者護甲" msgid "" "Lightweight, custom built body armor made from Kevlar and tough fabric. " "Mostly waterproof." -msgstr "" +msgstr "一件訂製的輕量護甲, 由凱夫勒裝甲與堅韌的布料製成。幾乎防水。" #: lang/json/ARMOR_from_json.py msgid "light survivor cargo pants" msgid_plural "light survivor cargo pants" -msgstr[0] "輕型生存者工作褲" +msgstr[0] "輕型生存者工裝長褲" #. ~ Description for light survivor cargo pants #: lang/json/ARMOR_from_json.py msgid "" "Lightweight, Kevlar armored cargo pants designed to hold as much as " "possible. Strong and mostly waterproof." -msgstr "" +msgstr "一件輕量的工裝長褲, 由凱夫勒裝甲製成。可以容納大量物品。堅固且幾乎防水。" #: lang/json/ARMOR_from_json.py msgid "light survivor suit" @@ -8275,7 +8331,7 @@ msgid "" "A lightweight, hand-built combination armor made from a cut-down bulletproof" " vest and a reinforced fabric jumpsuit. Protects from the elements as well " "as from harm." -msgstr "" +msgstr "一件輕量、手工製作的組合護甲, 由精簡的防彈背心和強化的布料連身服製成。保護你免於傷害與環境危害。" #: lang/json/ARMOR_from_json.py msgid "French maid clothes" @@ -8285,7 +8341,7 @@ msgstr[0] "法式女僕裝" #. ~ Description for French maid clothes #: lang/json/ARMOR_from_json.py msgid "The French maid dress, blue with a frilly white apron." -msgstr "法國女僕的裝束, 有著藍白相間的褶邊圍裙。" +msgstr "藍色的法式女僕洋裝, 有著白色的褶邊圍裙。" #: lang/json/ARMOR_from_json.py msgid "French maid hat" @@ -8307,17 +8363,17 @@ msgstr[0] "粗製背包" msgid "" "A pair of pants with the bottom ends tied with string, and then passed " "through the belt loops so the knapsack can be carried on the back." -msgstr "" +msgstr "一條底部被繩索綁起來的褲子, 繩索接著穿過腰帶圈, 使得整個包能夠背在背上。" #: lang/json/ARMOR_from_json.py msgid "makeshift sling" msgid_plural "makeshift slings" -msgstr[0] "粗製吊手帶" +msgstr[0] "粗製斜肩袋" #. ~ Description for makeshift sling #: lang/json/ARMOR_from_json.py msgid "A large sheet tied into a crude, over-the-shoulder sling." -msgstr "一條大布條, 隨意的繞過肩膀把手臂固定綁好。" +msgstr "用一大塊布罩繞過肩膀綁成的粗糙的斜肩袋。" #: lang/json/ARMOR_from_json.py msgid "ballistic mask" @@ -8329,7 +8385,7 @@ msgstr[0] "防彈面罩" msgid "" "A protective reinforced Kevlar mask that covers the face. Provides " "excellent protection from ballistic threats." -msgstr "" +msgstr "一個覆蓋住臉部的保護具, 由凱夫勒纖維製成。提供了對於子彈的絕佳防護。" #: lang/json/ARMOR_from_json.py msgid "dust mask" @@ -8341,7 +8397,7 @@ msgstr[0] "防塵口罩" msgid "" "A simple piece of cotton that straps over the mouth. Provides a small " "amount of protection from airborne illness and dust." -msgstr "" +msgstr "一片綁在嘴巴上的簡單棉布。能提供少量的防護能力以抵禦灰塵與空氣傳染疾病。" #: lang/json/ARMOR_from_json.py msgid "Guy Fawkes mask" @@ -8352,6 +8408,8 @@ msgstr[0] "蓋伊·福克斯面具" #: lang/json/ARMOR_from_json.py msgid "Remember, remember, the fifth of November." msgstr "" +"\"Remember, remember the fifth of November.\"\n" +"謹記、謹記, 十一月五日。" #: lang/json/ARMOR_from_json.py msgid "hockey mask" @@ -8363,7 +8421,7 @@ msgstr[0] "曲棍球面具" msgid "" "A protective face mask made of thick plastic. Commonly worn by hockey " "goalies." -msgstr "一個保護性的面具, 由厚實的塑膠製成。通常由曲棍球守門員穿著, 有時候也會出現在電影連續殺人狂的臉上。" +msgstr "一個保護性的面具, 由厚實的塑膠製成。通常是曲棍球守門員穿的。" #: lang/json/ARMOR_from_json.py msgid "rioter mask" @@ -8413,22 +8471,22 @@ msgstr "輕型戰術背包, 全稱是模組化輕型承重戰術背包。先進 #: lang/json/ARMOR_from_json.py msgid "motorcycle armor" msgid_plural "motorcycle armors" -msgstr[0] "越野摩托車護甲" +msgstr[0] "摩托車護具" #. ~ Description for motorcycle armor #: lang/json/ARMOR_from_json.py msgid "A suit of armor used by dirt bikers and motorcyclists." -msgstr "" +msgstr "一套供越野自行車與摩托車騎士使用的護具。" #: lang/json/ARMOR_from_json.py msgid "motorcycle pants" msgid_plural "pairs of motorcycle pants" -msgstr[0] "一件騎士褲" +msgstr[0] "摩托車長褲" #. ~ Description for motorcycle pants #: lang/json/ARMOR_from_json.py msgid "A pair of pants designed for dirt bikers and motorcyclists." -msgstr "一件專為越野自行車和摩托車設計的褲子。" +msgstr "一件供越野自行車與摩托車騎士使用的長褲。" #: lang/json/ARMOR_from_json.py msgid "protective mouthpiece" @@ -8440,7 +8498,7 @@ msgstr[0] "護齒套" msgid "" "A protective piece of equipment commonly used by athletes, which is worn " "inside the mouth to protect your teeth." -msgstr "運動員常用的護具, 穿戴在嘴巴裡保護牙齒用。" +msgstr "一個保護性的裝備, 通常供運動員使用, 穿戴在嘴巴裡以保護牙齒。" #: lang/json/ARMOR_from_json.py msgid "nanoskirt" @@ -8475,7 +8533,7 @@ msgid "" "A snug fitting pair of gloves made from thin and lightweight Nomex fire-" "resistant fabric. Tough yet breathable, they are light and comfortable to " "wear under clothing." -msgstr "一雙舒適的手套, 由輕量的諾梅克斯阻燃纖維製成。堅韌又透氣, 就算是穿在其他衣物之下也還是很輕便。" +msgstr "一雙緊密貼身的手套, 由輕量的諾梅克斯阻燃纖維製成。強韌而透氣, 穿在其他衣物之下仍然輕巧且舒適。" #: lang/json/ARMOR_from_json.py msgid "flame-resistant hood" @@ -8488,7 +8546,7 @@ msgid "" "A snug fitting garment that protects your head and neck, made from " "lightweight Nomex fire-resistant fabric. Tough yet breathable, it is light " "and comfortable to wear under clothing." -msgstr "一件舒適的服裝, 能夠保護你的頭部與頸部, 由輕量的諾梅克斯阻燃纖維製成。堅韌又透氣, 就算是穿在其他衣物之下也還是很輕便。" +msgstr "一件緊密貼身的服裝, 能保護頭部與頸部, 由輕量的諾梅克斯阻燃纖維製成。強韌而透氣, 穿在其他衣物下面仍然輕巧且舒適。" #: lang/json/ARMOR_from_json.py msgid "pair of flame-resistant socks" @@ -8501,7 +8559,7 @@ msgid "" "A snug fitting pair of stockings made from thin and lightweight Nomex fire-" "resistant fabric. Tough yet breathable, they are light and comfortable to " "wear under clothing." -msgstr "一雙舒適的襪子, 由輕量的諾梅克斯阻燃纖維製成。堅韌又透氣, 就算是穿在其他衣物之下也還是很輕便。" +msgstr "一雙緊密貼身的襪子, 由輕量的諾梅克斯阻燃纖維製成。強韌而透氣, 穿在其他衣物之下仍然輕巧且舒適。" #: lang/json/ARMOR_from_json.py msgid "flame-resistant suit" @@ -8513,7 +8571,7 @@ msgstr[0] "抗火衣" msgid "" "A snug body suit made from thin and lightweight Nomex fire-resistant fabric." " Tough yet breathable, it is light and comfortable to wear under clothing." -msgstr "一件舒適的全身裝束, 由輕量的諾梅克斯阻燃纖維製成。堅韌又透氣, 就算是穿在其他衣物之下也還是很輕便。" +msgstr "一套緊密貼身的全身裝束, 由輕量的諾梅克斯阻燃纖維製成。強韌而透氣, 穿在其他衣物之下仍然輕巧且舒適。" #: lang/json/ARMOR_from_json.py msgid "obi" @@ -8523,7 +8581,7 @@ msgstr[0] "腰帶" #. ~ Description for obi #: lang/json/ARMOR_from_json.py msgid "A broad, black obi belt." -msgstr "一條黑色的寬腰帶。" +msgstr "一條黑色寬腰帶。" #: lang/json/ARMOR_from_json.py msgid "FB51 optical cloak" @@ -8538,7 +8596,7 @@ msgstr "你的光學斗篷閃爍了一下就變透明了。" #. ~ Use action deactive_msg for FB51 optical cloak. #: lang/json/ARMOR_from_json.py src/player.cpp msgid "Your optical cloak flickers for a moment as it becomes opaque." -msgstr "你的光學斗篷閃爍了一下就變不透明了。" +msgstr "你的光學斗篷閃爍了一下就變不透明了。重" #. ~ Description for FB51 optical cloak #: lang/json/ARMOR_from_json.py @@ -8546,7 +8604,7 @@ msgid "" "A plastic cloak embedded with cameras and LEDs that will render you fully " "invisible to normal vision when powered and worn. You must be carrying a " "unified power supply, or UPS, to use it. Activate to toggle visibility." -msgstr "一件嵌入了攝影機與 LED 的塑膠斗篷, 穿戴啟動後會使你隱形, 不會被正常視覺所見到。你必須攜帶 UPS 才能使用它。啟動它以切換隱形。" +msgstr "一件嵌入了攝影機與 LED 的塑膠斗篷, 穿戴並啟動後能使你對普通視覺隱形。你必須攜帶 UPS 才能使用它。\"使用\" 以切換隱形。" #: lang/json/ARMOR_from_json.py msgid "panties" @@ -8563,12 +8621,12 @@ msgstr "為女性設計的內衣。在末日的時候保持著你的端莊。" #: lang/json/ARMOR_from_json.py msgid "pants" msgid_plural "pants" -msgstr[0] "休閒褲" +msgstr[0] "長褲" #. ~ Description for pants #: lang/json/ARMOR_from_json.py msgid "A pair of khaki pants. Slightly warmer than jeans." -msgstr "一件卡其色的褲子。稍微比牛仔褲保暖。" +msgstr "一件卡其色的長褲。稍微比牛仔褲保暖。" #: lang/json/ARMOR_from_json.py msgid "army pants" @@ -8578,17 +8636,17 @@ msgstr[0] "陸軍長褲" #. ~ Description for army pants #: lang/json/ARMOR_from_json.py msgid "A tough pair of pants lined with pockets. Favored by the military." -msgstr "一件強韌的、有許多口袋的長褲。軍人的最愛。" +msgstr "一件強韌的、有許多口袋的長褲。深受軍人喜愛。" #: lang/json/ARMOR_from_json.py msgid "cargo pants" msgid_plural "cargo pants" -msgstr[0] "工作褲" +msgstr[0] "工裝長褲" #. ~ Description for cargo pants #: lang/json/ARMOR_from_json.py msgid "A pair of pants lined with pockets, offering lots of storage." -msgstr "一件有許多口袋的褲子, 提供許多儲物空間。" +msgstr "一件有許多口袋的長褲, 提供許多儲物空間。" #: lang/json/ARMOR_from_json.py msgid "checkered pants" @@ -8598,22 +8656,32 @@ msgstr[0] "格紋長褲" #. ~ Description for checkered pants #: lang/json/ARMOR_from_json.py msgid "In a pinch, these pants can be used for an impromptu game of checkers." -msgstr "在緊急的時刻, 這件褲子可以用來當作圍棋的棋盤。" +msgstr "在緊急的時刻, 這件長褲可以用來當作圍棋的棋盤。" #: lang/json/ARMOR_from_json.py msgid "fur pants" msgid_plural "fur pants" -msgstr[0] "毛皮褲" +msgstr[0] "毛皮長褲" #. ~ Description for fur pants #: lang/json/ARMOR_from_json.py msgid "A hefty pair of fur-lined pants." -msgstr "一件有沉重毛皮內襯的褲子。" +msgstr "一件有沉重毛皮內襯的長褲。" + +#: lang/json/ARMOR_from_json.py +msgid "faux fur pants" +msgid_plural "faux fur pantss" +msgstr[0] "人造毛皮褲子" + +#. ~ Description for faux fur pants +#: lang/json/ARMOR_from_json.py +msgid "A pair of long cotton pants lined with warm imitation fur." +msgstr "這款棉質長褲內襯溫暖的仿製毛皮。" #: lang/json/ARMOR_from_json.py msgid "leather pants" msgid_plural "leather pants" -msgstr[0] "皮褲" +msgstr[0] "皮革長褲" #. ~ Description for leather pants #: lang/json/ARMOR_from_json.py @@ -8625,24 +8693,24 @@ msgstr "一件黑色皮革長褲。非常強韌, 但是有點累贅, 也沒有 #: lang/json/ARMOR_from_json.py msgid "ski pants" msgid_plural "ski pants" -msgstr[0] "滑雪褲" +msgstr[0] "滑雪長褲" #. ~ Description for ski pants #: lang/json/ARMOR_from_json.py msgid "A pair of pants meant for alpine skiing." -msgstr "一件滑雪褲。" +msgstr "一件滑雪長褲。" #: lang/json/ARMOR_from_json.py msgid "survivor cargo pants" msgid_plural "survivor cargo pants" -msgstr[0] "生存者工作褲" +msgstr[0] "生存者工裝長褲" #. ~ Description for survivor cargo pants #: lang/json/ARMOR_from_json.py msgid "" "A pair of Kevlar armored pants covered with pouches and pockets. Custom " "built to be durable, comfortable, and easy to wear." -msgstr "一個由凱夫勒製作的手工褲子, 有著口袋的設計。可靠、舒適、好穿。" +msgstr "一件訂製的長褲, 由凱夫勒裝甲製作, 上面佈滿了小袋子和口袋。耐用、舒適、而且便於穿著。" #: lang/json/ARMOR_from_json.py msgid "peacoat" @@ -8652,7 +8720,7 @@ msgstr[0] "軍裝外套" #. ~ Description for peacoat #: lang/json/ARMOR_from_json.py msgid "A heavy wool coat. Cumbersome, but warm and with deep pockets." -msgstr "一件沉重的棉外套。很累贅, 但是保暖且有大口袋。" +msgstr "一件厚重的棉外套。很累贅, 但是保暖且有大口袋。" #: lang/json/ARMOR_from_json.py msgid "pearl collar" @@ -8732,7 +8800,7 @@ msgstr[0] "郵差帽" msgid "" "A traditional mail carrier's cap, with the US postal service logo " "embroidered on the front above the plastic cap. A symbol of a bygone world." -msgstr "一頂有著美國郵政刺繡傳統郵差帽。一個舊世界的象徵。" +msgstr "一頂傳統郵差帽, 前方繡有美國郵政服務的標誌。舊世界的象徵。" #: lang/json/ARMOR_from_json.py msgid "mail carrier shirt" @@ -8754,7 +8822,7 @@ msgstr[0] "郵差短褲" #. ~ Description for mail carrier shorts #: lang/json/ARMOR_from_json.py msgid "A pair of dark blue shorts, the kind used by postal service workers." -msgstr "一條深藍色的短褲, 像是郵政人員穿的那種。" +msgstr "一條深藍色的短褲, 供郵政服務人員穿的那種。" #: lang/json/ARMOR_from_json.py msgid "pot helmet" @@ -8778,7 +8846,7 @@ msgstr[0] "基本動力裝甲" #. ~ Use action activate_msg for light power armor. #: lang/json/ARMOR_from_json.py msgid "Your power armor engages." -msgstr "動力護甲啓動。" +msgstr "你的動力裝甲啟動了。" #. ~ Description for basic power armor #: lang/json/ARMOR_from_json.py @@ -8789,7 +8857,7 @@ msgid "" "yourself. Like all DoubleTech power armor, the control and climate-" "regulation systems require direct skin contact." msgstr "" -"DoubleTech 動力裝甲 Mk. I: 一套沉重的基本動力裝甲, 提供絕佳的防護能力以抵禦攻擊, 但也使人移動困難。如果你不介意自己驅動它, " +"DoubleTech 動力裝甲 Mk. I: 一套厚重的基本動力裝甲, 提供絕佳的防護能力以抵禦攻擊, 但也使人移動困難。如果你不介意自己驅動它, " "可以將 UPS 隔間用於儲存其它物品。如同所有 DoubleTech 動力裝甲, 其控制系統與溫度調節系統必須與皮膚直接接觸。" #: lang/json/ARMOR_from_json.py @@ -8800,7 +8868,7 @@ msgstr[0] "動力裝甲拖架" #. ~ Description for power armor hauling frame #: lang/json/ARMOR_from_json.py msgid "A heavy duty hauling frame designed to interface with power armor." -msgstr "一個沈重的拖架有著能夠和動力裝甲結合的設計。" +msgstr "一個重型拖架, 設計來連接動力裝甲。" #: lang/json/ARMOR_from_json.py msgid "heavy power armor" @@ -8815,8 +8883,8 @@ msgid "" "protection. Like all DoubleTech power armor, the control and climate-" "regulation systems require direct skin contact." msgstr "" -"一件由 DoubleTech 設計的動力裝甲, Mk. II-H。這個型號相較 Mk. I 做了許多改進。特別是環境傷害防護的能力。就像其他的 " -"DoubleTech 動力裝甲, 控制與氣候調節系統必須直接接觸皮膚。" +"一套 DoubleTech 動力裝甲 Mk. II-H。這個型號相較 Mk. I 做了許多改進, 特別是提供更好的環境危害防護。如同所有 " +"DoubleTech 動力裝甲, 其控制系統與溫度調節系統必須與皮膚直接接觸。" #: lang/json/ARMOR_from_json.py msgid "basic power armor helmet" @@ -8831,8 +8899,8 @@ msgid "" "Like all DoubleTech power armor, the control and climate-regulation systems " "require direct skin contact." msgstr "" -"一個基本頭盔, 用來搭配由 DoubleTech 工業製造的 Mk. I 基本動力裝甲。提供了對抗攻擊以及惡劣環境的絕佳保護。就像其他的 " -"DoubleTech 動力裝甲, 控制與氣候調節系統必須直接接觸皮膚。" +"一頂基本的動力裝甲頭盔, 設計來搭配 DoubleTech 動力裝甲 MK. I。提供絕佳的防護能力以抵禦攻擊與環境危害。如同所有 DoubleTech" +" 動力裝甲, 其控制系統與溫度調節系統必須與皮膚直接接觸。" #: lang/json/ARMOR_from_json.py msgid "heavy power armor helmet" @@ -8848,13 +8916,13 @@ msgid "" "armor, the control and climate-regulation systems require direct skin " "contact." msgstr "" -"一件由 DoubleTech 設計的動力裝甲頭盔, 要搭配 Mk. II-H 重型動力裝甲。這個型號相較 Mk. I 的頭盔做了許多改進。加強了散熱, " -"同時又加強了環境傷害防護的能力。就像其他的 DoubleTech 動力裝甲, 控制與氣候調節系統必須直接接觸皮膚。" +"一頂動力裝甲頭盔, 設計來搭配 DoubleTech 動力裝甲 Mk. II-H。這個型號相較 Mk. I 的頭盔做了許多改進, " +"提供更好的散熱與環境危害防護。如同所有 DoubleTech 動力裝甲, 其控制系統與溫度調節系統必須與皮膚直接接觸。" #: lang/json/ARMOR_from_json.py msgid "light power armor helmet" msgid_plural "light power armor helmets" -msgstr[0] "輕量動力裝甲頭盔" +msgstr[0] "輕型動力裝甲頭盔" #. ~ Description for light power armor helmet #: lang/json/ARMOR_from_json.py @@ -8864,13 +8932,13 @@ msgid "" "Like all DoubleTech power armor, the control and climate-regulation systems " "require direct skin contact." msgstr "" -"由 DoubleTech 工業研發, 為搭配 Mk. II-L 型輕量動力裝甲而設計的動力裝甲頭盔。這個型號相比 Mk. I " -"頭盔更加輕量通風。跟其他的 DoubleTech 動力裝甲一樣, 控制與氣候調節系統必須直接接觸皮膚。" +"一頂動力裝甲頭盔, 設計來搭配 DoubleTech 動力裝甲 MK. II-L。這個型號相較 Mk. I 的頭盔做了許多改進, " +"提供更好的散熱並減輕了重量。如同所有 DoubleTech 動力裝甲, 其控制系統與溫度調節系統必須與皮膚直接接觸。" #: lang/json/ARMOR_from_json.py msgid "light power armor" msgid_plural "light power armors" -msgstr[0] "輕量動力裝甲" +msgstr[0] "輕型動力裝甲" #. ~ Description for light power armor #: lang/json/ARMOR_from_json.py @@ -8880,8 +8948,8 @@ msgid "" "DoubleTech power armor, the control and climate-regulation systems require " "direct skin contact." msgstr "" -"由 DoubleTech 工業研發的動力裝甲, 型號 Mk. II-L。這個型號相比 Mk. I 做了許多改進, 特別是重量部分。就像其他的 " -"DoubleTech 動力裝甲, 控制與氣候調節系統必須直接接觸皮膚。" +"一套 DoubleTech 動力裝甲 Mk. II-L。這個型號相較 Mk. I 做了許多改進, 特別是減輕了重量。如同所有 DoubleTech " +"動力裝甲, 其控制系統與溫度調節系統必須與皮膚直接接觸。" #: lang/json/ARMOR_from_json.py msgid "purse" @@ -8891,7 +8959,7 @@ msgstr[0] "皮包" #. ~ Description for purse #: lang/json/ARMOR_from_json.py msgid "A bit cumbersome to wear, but provides some storage." -msgstr "穿上後稍微累贅, 但是有一些儲物空間。" +msgstr "穿戴後稍微累贅, 但是有一些儲物空間。" #: lang/json/ARMOR_from_json.py msgid "quiver" @@ -8915,7 +8983,7 @@ msgstr[0] "樺皮箭筒" msgid "" "A quiver woven from strips of birch bark, worn at the waist, that can hold " "20 arrows. Activate to store arrows." -msgstr "" +msgstr "一個以樺樹皮製成的箭筒, 穿戴在腰際, 能裝入 20 支箭矢。使用它來裝入箭矢。" #: lang/json/ARMOR_from_json.py msgid "large quiver" @@ -8929,8 +8997,8 @@ msgid "" "60 arrows. Historically used by horse archers, rather than foot archers, " "but neither of THEM had to fight zombies. Activate to store arrows." msgstr "" -"一個鑲嵌了金屬的大型皮箭筒, 穿戴在背後, 能夠裝入 60 支箭矢。歷史上是由馬弓兵所使用, 而非步行的弓兵, " -"但這兩者都不用對抗殭屍。啟用它來裝入箭矢。" +"一個鑲嵌了金屬的大型皮革箭筒, 穿戴在背後, 能夠裝入 60 支箭矢。歷史上是供馬弓兵使用, 而非步行的弓兵, 但這兩者都不用對抗殭屍。\"使用\" " +"它來裝入箭矢。" #: lang/json/ARMOR_from_json.py msgid "large birchbark quiver" @@ -9050,7 +9118,7 @@ msgstr[0] "防鯊魚裝" msgid "" "A one piece chainmail suit used by scuba divers for protection against shark" " bites. It comes with attached plastic helmet and booties." -msgstr "供水肺潛水員使用的單件式鏈甲套裝, 用於防止鯊魚咬傷, 附有塑膠頭盔和靴子。" +msgstr "一套供水肺潛水員使用的單件式鏈甲套裝, 用於防止鯊魚咬傷, 附有塑膠頭盔和靴子。" #: lang/json/ARMOR_from_json.py msgid "faraday shark suit" @@ -9063,7 +9131,7 @@ msgid "" "A one piece chainmail suit used by scuba divers for protection against shark" " bites. It has been conductively interconnected, protecting against " "electricity." -msgstr "供水肺潛水員使用的單件式鏈甲套裝, 用於防止鯊魚咬傷, 附有塑膠頭盔和靴子。其內部電力傳導網路能提供防護能力以抵禦電擊。" +msgstr "一套供水肺潛水員使用的單件式鏈甲套裝, 用於防止鯊魚咬傷, 附有塑膠頭盔和靴子。其內部電力傳導網路能提供防護能力以抵禦電擊。" #: lang/json/ARMOR_from_json.py msgid "sheath" @@ -9087,7 +9155,7 @@ msgstr[0] "布罩" msgid "" "A large fabric sheet, could be used as a curtain or bedsheets; or cut up for" " a bunch of rags." -msgstr "一個大的布料罩單, 可用來當作窗簾或是床單; 或是切割成數個布條。" +msgstr "一個大的布料罩單, 可用來當作窗簾或是床單, 或是切割成數個布條。" #: lang/json/ARMOR_from_json.py msgid "sheriff's shirt" @@ -9112,7 +9180,7 @@ msgstr "一件卡其色的短褲。" #: lang/json/ARMOR_from_json.py msgid "cargo shorts" msgid_plural "cargo shorts" -msgstr[0] "工作短褲" +msgstr[0] "工裝短褲" #. ~ Description for cargo shorts #: lang/json/ARMOR_from_json.py @@ -9122,14 +9190,14 @@ msgstr "一件附口袋的短褲, 提供一些儲物空間。" #: lang/json/ARMOR_from_json.py msgid "denim shorts" msgid_plural "denim shorts" -msgstr[0] "丹寧短褲" +msgstr[0] "牛仔短褲" #. ~ Description for denim shorts #: lang/json/ARMOR_from_json.py msgid "" "A pair of denim shorts. Thick and tough, they provide excellent protection " "from cuts." -msgstr "一件丹寧短褲。厚實、強韌, 能提供絕佳的砍劈防護。" +msgstr "一件牛仔短褲。厚實、強韌, 能提供絕佳的砍劈防護。" #: lang/json/ARMOR_from_json.py msgid "silver bracelet" @@ -9180,34 +9248,90 @@ msgstr "一件青春洋溢又通風的棉質裙子。很方便移動, 但是只 #: lang/json/ARMOR_from_json.py msgid "leather skirt" msgid_plural "leather skirts" -msgstr[0] "皮短裙" +msgstr[0] "皮革短裙" #. ~ Description for leather skirt #: lang/json/ARMOR_from_json.py msgid "" "A very short leather skirt, clearly designed to look good, not be practical." -msgstr "一件非常短的皮短裙, 明顯只是為了好看的設計, 並不實用。" +msgstr "一件非常短的皮革短裙, 明顯只是為了好看的設計, 並不實用。" #: lang/json/ARMOR_from_json.py msgid "sleeping bag" msgid_plural "sleeping bags" msgstr[0] "睡袋" +#. ~ Use action menu_text for sleeping bag. +#. ~ Use action menu_text for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Roll up" +msgstr "收捲" + +#. ~ Use action msg for sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the sleeping bag, preparing it for transport." +msgstr "你收捲好睡袋, 以便攜帶。" + #. ~ Description for sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag that covers you head to toe." msgstr "一件大睡袋能夠從頭到腳把你蓋住。" +#: lang/json/ARMOR_from_json.py +msgid "rolled sleeping bag" +msgid_plural "rolled sleeping bags" +msgstr[0] "收捲好的睡袋" + +#. ~ Use action menu_text for rolled sleeping bag. +#. ~ Use action menu_text for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "Unroll" +msgstr "攤開" + +#. ~ Use action msg for rolled sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll the sleeping bag." +msgstr "你攤開睡袋。" + +#. ~ Description for rolled sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag rolled up for transport. It has a strap to carry it " +"with." +msgstr "一個大睡袋, 收捲好以便於攜帶。它有一條背帶用於隨身攜帶。" + #: lang/json/ARMOR_from_json.py msgid "fur sleeping bag" msgid_plural "fur sleeping bags" msgstr[0] "毛皮睡袋" +#. ~ Use action msg for fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You roll up the fur sleeping bag, preparing it for transport." +msgstr "你收捲好毛皮睡袋, 以便攜帶。" + #. ~ Description for fur sleeping bag #: lang/json/ARMOR_from_json.py msgid "A large sleeping bag lined with fur. Who needs a tent?" msgstr "有這件內襯毛皮的大睡袋, 誰還需要帳棚?" +#: lang/json/ARMOR_from_json.py +msgid "rolled fur sleeping bag" +msgid_plural "rolled fur sleeping bags" +msgstr[0] "收捲好的毛皮睡袋" + +#. ~ Use action msg for rolled fur sleeping bag. +#: lang/json/ARMOR_from_json.py +msgid "You unroll up the fur sleeping bag." +msgstr "你攤開毛皮睡袋。" + +#. ~ Description for rolled fur sleeping bag +#: lang/json/ARMOR_from_json.py +msgid "" +"A large sleeping bag lined with fur, rolled for transport. It has a strap " +"to carry it with." +msgstr "一個大睡袋內襯毛皮, 收捲好以便於攜帶。它有一條背帶用於隨身攜帶。" + #: lang/json/ARMOR_from_json.py msgid "sleeveless duster" msgid_plural "sleeveless dusters" @@ -9232,10 +9356,22 @@ msgid "" "unencumbered. Has plenty of storage space due to its many pockets." msgstr "一件厚實的、等身長的無袖毛皮防塵大衣, 讓你的手臂不受束縛。它有很多口袋, 提供了相當充足的儲物空間。" +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur duster" +msgid_plural "sleeveless faux fur dusters" +msgstr[0] "無袖人造毛皮防塵大衣" + +#. ~ Description for sleeveless faux fur duster +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick, sleeveless faux fur duster, falling below your knees. Has many " +"pockets for storing things." +msgstr "一件厚實的無袖人造毛皮防塵大衣, 衣長過膝, 有很多可以儲存物品的口袋。" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather duster" msgid_plural "sleeveless leather dusters" -msgstr[0] "無袖皮防塵大衣" +msgstr[0] "無袖皮革防塵大衣" #. ~ Description for sleeveless leather duster #: lang/json/ARMOR_from_json.py @@ -9254,7 +9390,7 @@ msgstr[0] "生存者無袖防塵大衣" msgid "" "A custom Kevlar armored full-length duster without sleeves, covered with " "pouches and pockets. Comfortable, durable, and great for storage." -msgstr "一件自定製的、等身長的凱夫勒裝甲無袖防塵大衣, 上面佈滿了小袋子和口袋。舒適, 耐用, 而且適合儲物。" +msgstr "一件訂製的、等身長的裝甲無袖防塵大衣, 由凱夫勒纖維製成。上面佈滿了小袋子和口袋。舒適、耐用, 而且適合儲物。" #: lang/json/ARMOR_from_json.py msgid "sleeveless trenchcoat" @@ -9280,6 +9416,18 @@ msgid "" " plenty of storage space due to its many pockets." msgstr "一件厚實的無袖毛皮風衣, 讓你的手臂不受束縛。它有很多口袋, 提供了相當充足的儲物空間。" +#: lang/json/ARMOR_from_json.py +msgid "sleeveless faux fur trenchcoat" +msgid_plural "sleeveless faux fur trenchcoats" +msgstr[0] "無袖人造毛皮風衣" + +#. ~ Description for sleeveless faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat without sleeves. Has plenty of storage space, " +"and looks pretty good." +msgstr "一件厚實的無袖人造毛皮風衣。有足夠的存儲空間, 穿上去很好看。" + #: lang/json/ARMOR_from_json.py msgid "sleeveless leather trenchcoat" msgid_plural "sleeveless leather trenchcoats" @@ -9302,7 +9450,7 @@ msgstr[0] "無袖生存者風衣" msgid "" "A custom Kevlar armored trenchcoat without sleeves, covered with pouches and" " pockets. Comfortable, durable, and great for storage." -msgstr "一個由凱夫勒製作的手工無袖風衣, 有著口袋的設計。舒適、可靠、又有許多儲物空間。" +msgstr "一件訂製的裝甲無袖風衣, 由凱夫勒纖維製成, 上面佈滿了小袋子和口袋。舒適、耐用、而且適合儲物。" #: lang/json/ARMOR_from_json.py msgid "sleeveless tunic" @@ -9351,7 +9499,7 @@ msgstr "能夠讓你舒服的閱讀你撿取來的書。" #: lang/json/ARMOR_from_json.py msgid "pair of sock mitts" msgid_plural "pairs of sock mitts" -msgstr[0] "成對的襪子手套" +msgstr[0] "襪子連指手套" #. ~ Description for pair of sock mitts #: lang/json/ARMOR_from_json.py @@ -9427,8 +9575,8 @@ msgid "" "the micro-motions of the body, especially breathing and walking motions. " "Because of this your walking speed is impaired while wearing it." msgstr "" -"WebbStar保濕套裝採用了先進的技術, 防止30%流汗時的水分流失。此套裝由人體的微運動提供動力, 特別是呼吸和步行運動。因此穿著它時, " -"你的步行速度將會減低。" +"WebbStar 保濕套裝採用了先進的技術, 防止 30% 流汗造成的的水分損失。此套裝以人體的微運動提供電力, 特別是呼吸和步行運動。因此穿著它時, " +"你的步行速度將受到影響。" #: lang/json/ARMOR_from_json.py msgid "pair of stockings" @@ -9439,7 +9587,7 @@ msgstr[0] "長襪" #: lang/json/ARMOR_from_json.py msgid "" "Long cotton socks that reach above the knees to help protect from the cold." -msgstr "及膝的長棉襪, 有助禦寒。" +msgstr "及膝的長型棉布襪子, 保護你免於寒冷。" #: lang/json/ARMOR_from_json.py msgid "pair of tentacle sleeves" @@ -9451,7 +9599,7 @@ msgstr[0] "觸手套" msgid "" "Long cotton tubes sized to fit over tentacles and help protect them from the" " cold." -msgstr "這根長長的管狀棉襪可以完好的貼合你的觸手, 起到保暖的功效。" +msgstr "尺寸適合觸手的長型棉布襪子, 保護你免於寒冷。" #: lang/json/ARMOR_from_json.py msgid "pair of tentacle stockings" @@ -9463,7 +9611,7 @@ msgstr[0] "觸手長襪" msgid "" "Six long cotton tubes sized to fit over tentacles and help protect them from" " the cold." -msgstr "這六根長長的管狀棉襪可以完好的貼合你的觸手, 起到保暖的功效。" +msgstr "六根尺寸適合觸手的長型棉布襪子, 保護你免於寒冷。" #: lang/json/ARMOR_from_json.py msgid "straw basket" @@ -9490,12 +9638,12 @@ msgstr "用稻草編成的帽子。他的帽沿能避免陽光直射你的眼睛 #: lang/json/ARMOR_from_json.py msgid "striped pants" msgid_plural "striped pants" -msgstr[0] "條紋褲" +msgstr[0] "條紋長褲" #. ~ Description for striped pants #: lang/json/ARMOR_from_json.py msgid "A pair of pants with horizontal black and white stripes." -msgstr "一件褲子。有著黑白相間的條紋。" +msgstr "一件長褲。有著黑白相間的條紋。" #: lang/json/ARMOR_from_json.py msgid "striped shirt" @@ -9518,7 +9666,7 @@ msgid "" "A thin, short-sleeved and short-legged one-piece suit. Judging by the odd " "tailoring and adjustment points... maybe you don't want to know who wore " "it. Provides nominal storage and is not very encumbering." -msgstr "一件厚實的短袖連身服。從怪異的剪裁來判斷... 你也許不會想知道是誰穿過的。提供了一些儲物空間並且不是很累贅。" +msgstr "一件厚實的短袖連身服。從怪異的剪裁來判斷… 你也許不會想知道是誰穿過的。能提供微小的儲存空間並且不是很累贅。" #: lang/json/ARMOR_from_json.py msgid "suit" @@ -9543,7 +9691,7 @@ msgid "" "A huge wheeled suitcase used mainly for transporting clothes and other " "possessions during trips, provides a decent amount of storage but hauling it" " around is neither fast nor comfortable." -msgstr "一個巨大的有輪子的行李箱, 主要用於運送旅行期間的衣服或其他財務。提供了相當大的儲物空間, 但是拖著它走既不快速也不舒服。" +msgstr "一個巨大的有輪子的行李箱, 主要用於運送旅行期間的衣服或其他財務。能提供不錯的儲物空間, 但是拖著它走既不快速也不舒服。" #. ~ Description for suitcase #: lang/json/ARMOR_from_json.py @@ -9551,19 +9699,19 @@ msgid "" "A mid-sized suitcase used mainly for transporting clothes and other " "possessions during trips, provides a decent amount of storage but hauling it" " around is not exactly comfortable." -msgstr "一個中型的旅行箱, 主要用於運送旅行期間的衣服或其他財物, 提供了像樣的儲物空間, 但拖著它走並不是很舒服。" +msgstr "一個中型的旅行箱, 主要用於運送旅行期間的衣服或其他財物, 能提供不錯的儲物空間, 但拖著它走並不是很舒服。" #: lang/json/ARMOR_from_json.py msgid "sundress" msgid_plural "sundresses" -msgstr[0] "夏服" +msgstr[0] "夏日洋裝" #. ~ Description for sundress #: lang/json/ARMOR_from_json.py msgid "" "A light and breezy cotton dress. Though cool and comfortable to wear, it " "lacks any storage space." -msgstr "一件輕又透氣的棉質衣服。雖然很涼爽又舒適, 但是沒有任何儲物空間。" +msgstr "一件輕巧、飄逸的棉質洋裝。雖然穿起來涼爽又舒適, 但是沒有任何儲物空間。" #: lang/json/ARMOR_from_json.py msgid "pair of sunglasses" @@ -9604,7 +9752,7 @@ msgstr[0] "生存者行李袋" msgid "" "A custom-built heavy duffel bag. Durable and carefully crafted to hold as " "much stuff as possible." -msgstr "一個手工製沉重的行李袋。耐用且細心的做工讓它盡可能地裝下夠多的東西。" +msgstr "一個厚重的訂製行李袋。耐用且細心的做工讓它盡可能地裝下夠多的東西。" #: lang/json/ARMOR_from_json.py msgid "survivor goggles" @@ -9616,7 +9764,7 @@ msgstr[0] "生存者護目鏡" msgid "" "A custom-built pair of armored goggles with tinted lenses. Comfortable and " "built to last, they provide excellent protection from environmental dangers." -msgstr "一副手工製作, 配上淡色鏡片的裝甲護目鏡。舒適耐用, 對於環境危險提供絕佳的保護。" +msgstr "一副訂製的裝甲護目鏡, 配上了有色鏡片。耐用且舒適, 能提供絕佳的環境危害防護。" #: lang/json/ARMOR_from_json.py msgid "survivor backpack" @@ -9640,7 +9788,7 @@ msgstr[0] "生存者旅行背包" msgid "" "A custom-built heavy backpack. Durable and carefully crafted to hold as " "much stuff as possible." -msgstr "一個手工製沉重的背包。耐用且細心的做工讓它盡可能地裝下夠多的東西。" +msgstr "一個厚重的訂製的背包。耐用且細心的做工讓它盡可能地裝下夠多的東西。" #: lang/json/ARMOR_from_json.py msgid "survivor runner pack" @@ -9664,7 +9812,7 @@ msgstr[0] "生存者裝" msgid "" "A hand-built combination armor made from a bulletproof vest and a reinforced" " leather jumpsuit. Protects from the elements as well as from harm." -msgstr "" +msgstr "一件手工製作的組合護甲, 由防彈背心與強化的皮革連身服製成。保護你免於傷害與環境危害。" #: lang/json/ARMOR_from_json.py msgid "swag bag" @@ -9688,7 +9836,7 @@ msgstr[0] "SWAT 護甲" msgid "" "A suit of black bulletproof armor with lots of pockets. The word SWAT is " "emblazoned across the back." -msgstr "一套黑色防彈護甲, 有許多口袋。背後還有 SWAT 的字樣。" +msgstr "一套黑色防彈護甲, 有許多口袋。背後印有 SWAT 的字樣。" #: lang/json/ARMOR_from_json.py msgid "sweater" @@ -9718,7 +9866,7 @@ msgstr[0] "二趾襪" #. ~ Description for pair of tabi #: lang/json/ARMOR_from_json.py msgid "A pair of black tabi, as worn with traditional Japanese clothes." -msgstr "一雙黑色二趾襪, 傳統日本服飾。" +msgstr "一雙黑色二趾襪, 通常與日本的傳統服飾一同穿著。" #: lang/json/ARMOR_from_json.py msgid "pair of gi tabi" @@ -9728,7 +9876,7 @@ msgstr[0] "白二趾襪" #. ~ Description for pair of gi tabi #: lang/json/ARMOR_from_json.py msgid "A pair of white tabi, as used by martial arts practitioners." -msgstr "一雙白色二趾襪, 常用在武術人員上。" +msgstr "一雙白色二趾襪, 供武術人員使用。" #: lang/json/ARMOR_from_json.py msgid "tactical full helmet" @@ -9740,7 +9888,7 @@ msgstr[0] "戰術全罩頭盔" msgid "" "An all-encompassing black helmet that covers your entire face and neck, " "providing excellent protection from all sorts of damage." -msgstr "一個完整保護的黑色頭盔, 覆蓋了你的整張臉與脖子, 能夠很好的抵禦各種傷害。" +msgstr "一個完整保護的黑色頭盔, 能包覆整個臉部與頸部, 能夠很好的抵禦各種傷害。" #: lang/json/ARMOR_from_json.py msgid "tactical helmet" @@ -9752,7 +9900,7 @@ msgstr[0] "戰術頭盔" msgid "" "A lightweight black helmet that provides excellent protection from all sorts" " of damage." -msgstr "一頂輕量的黑色頭盔, 能夠很好的抵禦各種傷害。" +msgstr "一頂輕量的黑色頭盔, 能提供絕佳的防護能力以抵禦各種傷害。" #: lang/json/ARMOR_from_json.py msgid "tank top" @@ -9767,25 +9915,25 @@ msgstr "一件無袖的棉質上衣。相當便於活動。" #: lang/json/ARMOR_from_json.py msgid "work pants" msgid_plural "pairs of work pants" -msgstr[0] "" +msgstr[0] "工作長褲" #. ~ Description for work pants #: lang/json/ARMOR_from_json.py msgid "A pair of gray work pants." -msgstr "一件灰色的工作褲。" +msgstr "一件灰色的工作長褲。" #: lang/json/ARMOR_from_json.py msgid "A pair of blue work pants." -msgstr "一件藍色的工作褲。" +msgstr "一件藍色的工作長褲。" #: lang/json/ARMOR_from_json.py msgid "A pair of light-blue work pants." -msgstr "一件淡藍色的工作褲。" +msgstr "一件淡藍色的工作長褲。" #: lang/json/ARMOR_from_json.py msgid "work t-shirt" msgid_plural "work t-shirts" -msgstr[0] "" +msgstr[0] "工作 T 恤" #. ~ Description for work t-shirt #: lang/json/ARMOR_from_json.py @@ -9809,7 +9957,7 @@ msgstr[0] "阿拉伯傳統服飾" #: lang/json/ARMOR_from_json.py msgid "" "A long, loose-fitting robe with wide sleeves, a traditional Arab garment." -msgstr "一件很長的長袍有著寬鬆袖子, 是傳統的阿拉伯服裝。" +msgstr "一件寬鬆的長袍, 有寬大的袖子, 是阿拉伯的傳統服裝。" #: lang/json/ARMOR_from_json.py msgid "tie clip" @@ -9831,7 +9979,7 @@ msgstr[0] "褲襪" msgid "" "A snug cloth garment which clings tightly to the legs and feet to protect " "them from the cold." -msgstr "一個舒適的布料服緊貼著腿和腳, 能夠保暖。" +msgstr "一件貼身的棉布服, 緊密貼合著腿部和腳掌, 保護它們免於寒冷。" #: lang/json/ARMOR_from_json.py msgid "tinfoil hat" @@ -9844,7 +9992,7 @@ msgid "" "A sheet of aluminum foil that has been molded into a form-fitting hat. " "Perfect for protecting yourself from the government, Illuminati, aliens, and" " THEM." -msgstr "用一塊鋁箔紙折疊而成的一頂合身的帽子。保護你免受老大哥、光明會、外星人, 以及 \"他們\" 的控制。" +msgstr "用一塊鋁箔, 已經折疊成一頂合身的帽子。完美的保護你免於老大哥、光明會、外星人、以及 \"他們\" 的控制。" #: lang/json/ARMOR_from_json.py msgid "tool belt" @@ -9856,7 +10004,7 @@ msgstr[0] "工具腰帶" msgid "" "A common belt with pockets and four small belt loops. Widely used by " "handymen and electricians." -msgstr "" +msgstr "一條常見的腰帶, 有許多口袋和 4 個小腰扣, 廣泛地被工人與電工使用。" #: lang/json/ARMOR_from_json.py msgid "top hat" @@ -9902,6 +10050,18 @@ msgstr[0] "毛皮風衣" msgid "A thick fur trenchcoat, lined with pockets. Great for storage." msgstr "一件厚實的毛皮風衣, 有許多口袋, 很適合儲物。" +#: lang/json/ARMOR_from_json.py +msgid "faux fur trenchcoat" +msgid_plural "faux fur trenchcoats" +msgstr[0] "人造毛皮風衣" + +#. ~ Description for faux fur trenchcoat +#: lang/json/ARMOR_from_json.py +msgid "" +"A thick faux fur trenchcoat, lined with pockets. Great for storage, and " +"makes you the talk of the town." +msgstr "一件厚實的人造毛皮風衣, 內襯許多口袋。非常適合存儲物品, 穿上它讓你成為城市的話題。" + #: lang/json/ARMOR_from_json.py msgid "leather trenchcoat" msgid_plural "leather trenchcoats" @@ -9922,12 +10082,12 @@ msgstr[0] "生存者風衣" msgid "" "A Kevlar armored custom trenchcoat, covered with pouches and pockets. " "Comfortable, durable, and great for storage." -msgstr "一個由凱夫勒製作的手工風衣, 有著口袋的設計。舒適、可靠、又有許多儲物空間。" +msgstr "一件訂製的裝甲風衣, 由凱夫勒纖維製成, 上面佈滿了小袋子和口袋。舒適、耐用、而且適合儲物。" #: lang/json/ARMOR_from_json.py msgid "tricorne" msgid_plural "tricornes" -msgstr[0] "三角帽" +msgstr[0] "船形帽" #. ~ Description for tricorne #: lang/json/ARMOR_from_json.py @@ -9938,8 +10098,8 @@ msgid "" "\"guvnah\" of a settlement, or the captain of a post-apocalyptic crew, this " "is the hat for you." msgstr "" -"三角帽是一種非常經典的設計, 將大片軟趴趴的帽沿向上折起固定, 這頂還帶有精緻的刺繡與防水設計。只要戴上它, " -"就算在殭屍爆發後也依舊能讓你充滿十八世紀的船長英姿。" +"一頂經典的 \"船形帽\", 或稱三角帽, 純粹將大而軟的帽沿向上折起固定, 這頂還帶有精緻的刺繡與防水設計。不論你是一個定居點的 \"總督\", " +"或是一名末日的後船長, 這頂帽子是為你而準備的。" #: lang/json/ARMOR_from_json.py msgid "pair of swimming trunks" @@ -10064,7 +10224,7 @@ msgstr[0] "皮革護臂" #. ~ Description for pair of leather vambraces #: lang/json/ARMOR_from_json.py msgid "A pair of light leather arm guards, made for archery." -msgstr "一對輕皮革護手, 適合射箭。" +msgstr "一對輕巧的皮革護臂, 供弓箭手使用。" #: lang/json/ARMOR_from_json.py msgid "wedding veil" @@ -10089,7 +10249,7 @@ msgstr "一件輕量背心, 擁有可觀的儲物空間。" #: lang/json/ARMOR_from_json.py msgid "leather vest" msgid_plural "leather vests" -msgstr[0] "皮背心" +msgstr[0] "皮革背心" #. ~ Description for leather vest #: lang/json/ARMOR_from_json.py @@ -10100,14 +10260,14 @@ msgstr "一件厚實的皮革背心。能提供絕佳的砍劈傷害防護。" #: lang/json/ARMOR_from_json.py msgid "armored leather vest" msgid_plural "armored leather vests" -msgstr[0] "護甲皮背心" +msgstr[0] "裝甲皮革背心" #. ~ Description for armored leather vest #: lang/json/ARMOR_from_json.py msgid "" "An armored vest made from thick leather and metal plates. Cumbersome, but " "offers excellent protection from harm." -msgstr "一件裝甲背心, 由厚實的皮革和金屬板製成。有點累贅, 但是能提供絕佳的傷害防護。" +msgstr "一件裝甲背心, 由厚實的皮革與金屬板製成。有點累贅, 但是能提供絕佳的傷害防護。" #: lang/json/ARMOR_from_json.py msgid "waistcoat" @@ -10124,12 +10284,12 @@ msgstr "一個優雅的背心。非常適合那些只穿著一件襯衫太隨意 #: lang/json/ARMOR_from_json.py msgid "wetsuit" msgid_plural "wetsuits" -msgstr[0] "潛水衣" +msgstr[0] "潛水服" #. ~ Description for wetsuit #: lang/json/ARMOR_from_json.py msgid "A full-body neoprene wetsuit." -msgstr "一套包覆全身的橡膠潛水衣。" +msgstr "一套全身橡膠潛水服。" #: lang/json/ARMOR_from_json.py msgid "pair of swimming gloves" @@ -10146,7 +10306,7 @@ msgstr "一雙非常有彈性的潛水布橡膠手套, 很適合在水下使用 #: lang/json/ARMOR_from_json.py msgid "wetsuit hood" msgid_plural "wetsuit hoods" -msgstr[0] "潛水頭套" +msgstr[0] "潛水兜帽" #. ~ Description for wetsuit hood #: lang/json/ARMOR_from_json.py @@ -10174,7 +10334,7 @@ msgstr[0] "陸軍冬季手套" #. ~ Description for pair of army winter gloves #: lang/json/ARMOR_from_json.py msgid "A pair of padded gloves. Favored by the military." -msgstr "一對加厚的手套。通常是軍人穿的。" +msgstr "一雙帶襯墊的手套。深受軍人喜愛。" #: lang/json/ARMOR_from_json.py msgid "army winter jacket" @@ -10186,7 +10346,7 @@ msgstr[0] "陸軍冬季外套" msgid "" "A tough hooded jacket with lots of pockets, thickly padded for warmth. " "Favored by the military." -msgstr "一件強韌的、有許多口袋的連帽外套, 加以厚實襯墊用於保暖。軍人的最愛。" +msgstr "一件強韌的連帽外套, 有許多口袋, 加以厚實襯墊用於保暖。深受軍人喜愛。" #: lang/json/ARMOR_from_json.py msgid "army winter pants" @@ -10198,7 +10358,7 @@ msgstr[0] "陸軍冬季長褲" msgid "" "A tough pair of pants lined with pockets, thickly padded for warmth. " "Favored by the military." -msgstr "一件強韌的、有許多口袋的長褲, 加以厚實襯墊用於保暖。軍人的最愛。" +msgstr "一件強韌的長褲, 有許多口袋, 加以厚實襯墊用於保暖。深受軍人喜愛。" #: lang/json/ARMOR_from_json.py msgid "wolf suit" @@ -10259,7 +10419,7 @@ msgid "" "A warm and heavy hand-built combination armor made from a reinforced " "bulletproof vest and an insulated leather jumpsuit. Protects from the " "elements as well as from harm." -msgstr "" +msgstr "一件保暖、厚重、手工製作的組合護甲, 由強化的防彈背心和絕緣的皮革連身服製成。保護你免於傷害與環境危害。" #: lang/json/ARMOR_from_json.py msgid "XL survivor suit" @@ -10272,12 +10432,12 @@ msgid "" "A massive home-built combination armor made from a bulletproof vest and a " "reinforced leather jumpsuit. Protects from the elements as well as from " "harm." -msgstr "" +msgstr "一件手工製作的巨大組合護甲, 由防彈背心與強化的皮革連身服製成。保護你免於傷害與環境危害。" #: lang/json/ARMOR_from_json.py msgid "zubon" msgid_plural "zubons" -msgstr[0] "忍者褲" +msgstr[0] "忍者長褲" #. ~ Description for zubon #: lang/json/ARMOR_from_json.py @@ -10287,14 +10447,14 @@ msgstr "純白色的忍者褲, 常用於武術上。" #: lang/json/ARMOR_from_json.py msgid "violin case" msgid_plural "violin case" -msgstr[0] "" +msgstr[0] "小提琴盒" #. ~ Description for violin case #: lang/json/ARMOR_from_json.py msgid "" "Useful to carry your precious musical instrument around protected from any " "harm." -msgstr "" +msgstr "用於攜帶珍貴的樂器, 保護它免於傷害。" #. ~ Description for hazmat suit #: lang/json/ARMOR_from_json.py @@ -10312,7 +10472,7 @@ msgid "" "An armored, impermeable full-body suit that functions as body armor, as well" " as protecting from nuclear, biological, and chemical hazards. It requires " "a separate gas mask for full protection." -msgstr "" +msgstr "一件裝甲防水全身服, 能作為護甲使用, 同時能抵禦核能、生化、化學危害。它還需要一個額外的防毒面具才能提供完整的防護。" #: lang/json/ARMOR_from_json.py msgid "entry suit" @@ -10327,30 +10487,30 @@ msgid "" "excellent protection against fire and smoke. It requires a separate gas " "mask for full protection." msgstr "" -"一套供消防員穿著以抵禦極端高溫的防火全身服。雖然非常拘束並且脆弱, " +"一套供消防員使用以抵禦極端高溫的防火全身服。雖然非常拘束並且脆弱, " "但是能提供絕佳的防護能力以抵禦火焰與煙霧。它還需要一個額外的防毒面具以提供完整的防護。" #: lang/json/ARMOR_from_json.py msgid "pair of golfing gloves" msgid_plural "pairs of golfing gloves" -msgstr[0] "" +msgstr[0] "一雙高爾夫球手套" #. ~ Description for pair of golfing gloves #: lang/json/ARMOR_from_json.py msgid "A thin pair of black leather golfing gloves." -msgstr "" +msgstr "一雙輕薄的黑色皮革高爾夫球手套" #: lang/json/ARMOR_from_json.py msgid "golf cap" msgid_plural "golf caps" -msgstr[0] "" +msgstr[0] "高爾夫球帽" #. ~ Description for golf cap #: lang/json/ARMOR_from_json.py msgid "" "You're not actually sure if this is called a golf cap but its the " "stereotypical cap golfers wear." -msgstr "" +msgstr "你真的不確定這是否叫做高爾夫球帽, 而是印象中高爾夫球手們都戴這種帽子。" #: lang/json/ARMOR_from_json.py msgid "golf bag" @@ -10361,12 +10521,12 @@ msgstr[0] "高爾夫球袋" #: lang/json/ARMOR_from_json.py #, no-python-format msgid "You awkwardly sheath your %s" -msgstr "" +msgstr "你笨拙地將你的 %s 收鞘。" #. ~ Use action holster_prompt for golf bag. #: lang/json/ARMOR_from_json.py msgid "Sheath golf club" -msgstr "" +msgstr "收納高爾夫球桿" #. ~ Description for golf bag #: lang/json/ARMOR_from_json.py @@ -10499,7 +10659,7 @@ msgid "" "A light vest covered in webbing, pockets and straps. This variety is " "favored by the military, as it is capable of holding four magazines close at" " hand." -msgstr "" +msgstr "這款輕質背心採用織帶, 口袋和綁帶設計。是軍隊的愛用品, 因為它能夠攜帶四個彈匣且取用便捷。" #: lang/json/ARMOR_from_json.py msgid "ankle ammo pouch" @@ -10523,7 +10683,7 @@ msgstr[0] "腿掛式彈藥袋" msgid "" "A fabric ammo pouch that can be strapped to your leg and capable of holding " "two magazine close at hand." -msgstr "" +msgstr "布織彈藥袋, 可綁在腿上, 能攜帶兩個彈匣且取用便捷。" #: lang/json/ARMOR_from_json.py msgid "MBR vest (empty)" @@ -10536,12 +10696,12 @@ msgid "" "A Modular Bullet Resistant Vest. It has pouches for extra armor inserts, " "but without them provides little more protection over a regular vest. It " "has four pouches capable of carrying magazines." -msgstr "" +msgstr "一件模組化防彈背心。它有一個袋子可以插入額外的裝甲, 但沒裝甲時只能提供比一般背心多一點的防護能力。它有 4 個可以容納彈匣的小袋。" #: lang/json/ARMOR_from_json.py msgid "MBR vest (ceramic plates)" msgid_plural "MBR vests (ceramic plates)" -msgstr[0] "MBR 背心 (陶盤)" +msgstr[0] "MBR 背心 (陶瓷裝甲板)" #. ~ Description for MBR vest (ceramic plates) #: lang/json/ARMOR_from_json.py @@ -10549,12 +10709,12 @@ msgid "" "A Modular Bullet Resistant Vest. Ceramic plates have been inserted to " "improve its protection. The ceramic plates cannot be repaired, only " "replaced. It has four pouches capable of carrying magazines." -msgstr "" +msgstr "一件模組化防彈背心。它的裝甲袋裡裝了陶瓷裝甲板, 能提供額外的防護能力。陶瓷裝甲板無法修理, 只能更換。它有 4 個可以容納彈匣的小袋。" #: lang/json/ARMOR_from_json.py msgid "MBR vest (hard plates)" msgid_plural "MBR vests (hard plates)" -msgstr[0] "MBR 背心 (鋼板)" +msgstr[0] "MBR 背心 (硬鋼裝甲板)" #. ~ Description for MBR vest (hard plates) #: lang/json/ARMOR_from_json.py @@ -10563,6 +10723,7 @@ msgid "" "greatly increasing its protection at the cost of a great deal of weight and " "loss of flexibility. It has four pouches capable of carrying magazines." msgstr "" +"一件模組化防彈背心。它的裝甲袋裡裝了硬鋼裝甲板, 能提供巨大的防護能力, 但是大幅增加了重量並犧牲了靈活性。它有 4 個可以容納彈匣的小袋。" #: lang/json/ARMOR_from_json.py msgid "MBR vest (Kevlar plates)" @@ -10574,7 +10735,7 @@ msgstr[0] "MBR 背心 (凱夫勒板)" msgid "" "A Modular Bullet Resistant Vest. Kevlar plates have been inserted to " "improve its protection. It has four pouches capable of carrying magazines." -msgstr "" +msgstr "一件模組化防彈背心。它的裝甲袋裡裝了凱夫勒板, 能提供額外的防護能力。它有 4 個可以容納彈匣的小袋。" #: lang/json/ARMOR_from_json.py msgid "MBR vest (steel plating)" @@ -10587,7 +10748,7 @@ msgid "" "A Modular Bullet Resistant Vest. Its armor pouches have steel plates in " "them; this improves protection, but makes the vest much heavier and " "encumbering. It has four pouches capable of carrying magazines." -msgstr "" +msgstr "一件模組化防彈背心。它的裝甲袋裡裝了鋼鐵裝甲板, 能提供額外的防護能力, 但是增加了許多重量與累贅。它有 4 個可以容納彈匣的小袋。" #: lang/json/ARMOR_from_json.py msgid "MBR vest (superalloy)" @@ -10601,6 +10762,7 @@ msgid "" "in them, giving it extra protection with marginal flexibility loss and " "additional weight. It has four pouches capable of carrying magazines." msgstr "" +"一件模組化防彈背心。它的裝甲袋裡裝了超合金裝甲板, 能提供額外的防護能力, 但是增加的重量稍微犧牲了靈活性。它有 4 個可以容納彈匣的小袋。" #: lang/json/ARMOR_from_json.py msgid "pistol bandolier" @@ -10644,7 +10806,7 @@ msgstr[0] "紙卷彈藥袋" msgid "" "A covered leather pouch, worn at the waist to store and protect prepared " "blackpowder cartridges." -msgstr "一個皮製袋子, 穿戴於腰間以儲存並保護製作完畢的黑火藥彈夾。" +msgstr "一個皮革袋子, 穿戴於腰間以儲存並保護製作完畢的黑火藥彈夾。" #: lang/json/ARMOR_from_json.py msgid "wrist bandolier" @@ -10695,7 +10857,7 @@ msgstr[0] "涼鞋" msgid "" "Lightweight sandals made from wound cord. They offer little in the way of " "protection, but keep you cool during warmer months." -msgstr "用細繩編製而成的輕巧拖鞋, 幾乎無法提供任何防護, 但在最熱的日子裡可以讓你保持涼爽。" +msgstr "輕量的涼鞋, 由捲繞的縫線製成。只能提供很少的防護能力, 但可以讓你在溫暖的月份裡保持涼爽。" #: lang/json/ARMOR_from_json.py msgid "pair of boots" @@ -10716,7 +10878,7 @@ msgstr[0] "骨製護甲靴" #: lang/json/ARMOR_from_json.py msgid "" "Leather boots armored with reinforcements made from bone. Light and strong." -msgstr "利用骨頭強化的皮革靴子。輕又強韌。" +msgstr "以骨頭強化的皮革靴子。輕巧且強韌。" #: lang/json/ARMOR_from_json.py msgid "pair of turnout boots" @@ -10743,14 +10905,14 @@ msgstr "利用昆蟲的外骨骼製作的靴子。輕用耐用。" #: lang/json/ARMOR_from_json.py msgid "pair of biosilicified chitin boots" msgid_plural "pairs of biosilicified chitin boots" -msgstr[0] "" +msgstr[0] "生物矽化甲殼靴" #. ~ Description for pair of biosilicified chitin boots #: lang/json/ARMOR_from_json.py msgid "" "Boots crafted from carefully cleaned and pruned biosilicified exoskeletons " "of acidic ants. Acid-resistant and very durable." -msgstr "" +msgstr "由酸液螞蟻的生物矽化外骨骼, 精心清洗並剪裁製成的靴子。防酸且非常耐用。" #: lang/json/ARMOR_from_json.py msgid "pair of combat boots" @@ -10773,7 +10935,7 @@ msgid "" "A pair of customized, Kevlar armored Nomex boots, modified to provide " "maximum protection from harm and the elements, even when knee-deep in the " "dead." -msgstr "一雙訂製靴子, 由凱夫勒裝甲與諾梅克斯阻燃纖維製成。即使身陷重圍也能提供極致的防護能力以抵禦物理與元素傷害。" +msgstr "一雙訂製的靴子, 由凱夫勒裝甲與諾梅克斯阻燃纖維製成。即使身陷重圍也能提供極致的防護能力以抵禦傷害與環境危害。" #: lang/json/ARMOR_from_json.py msgid "pair of fur boots" @@ -10796,7 +10958,7 @@ msgid "" "A pair of customized, kevlar armored neoprene boots, modified to provide " "maximum protection from harm and the elements, even when knee-deep in the " "dead." -msgstr "一雙訂製靴子, 由凱夫勒裝甲與橡膠製成。即使身陷重圍也能提供極致的防護能力以抵禦物理與元素傷害。" +msgstr "一雙訂製的靴子, 由凱夫勒裝甲與橡膠製成。即使身陷重圍也能提供極致的防護能力以抵禦傷害與環境危害。" #: lang/json/ARMOR_from_json.py msgid "pair of hiking boots" @@ -10818,7 +10980,7 @@ msgstr[0] "重型生存者靴" msgid "" "A pair of customized kevlar boots, heavily armored with steel and modified " "to provide maximum protection from harm, even when knee-deep in the dead." -msgstr "一雙重型訂製靴子, 由凱夫勒裝甲與鋼材製成。即使身陷重圍也能提供極致的防護能力以抵禦傷害。" +msgstr "一雙訂製的重型靴子, 由凱夫勒裝甲與鋼材製成。即使身陷重圍也能提供極致的防護能力以抵禦傷害。" #: lang/json/ARMOR_from_json.py msgid "pair of leather armor boots" @@ -10841,7 +11003,7 @@ msgstr[0] "輕型生存者靴" msgid "" "A pair of customized, kevlar armored cloth boots, modified to provide " "maximum protection from harm, even when knee-deep in the dead." -msgstr "一雙訂製靴子, 由凱夫勒裝甲與棉布製成。即使身陷重圍也能提供極致的防護能力以抵禦傷害。" +msgstr "一雙訂製的靴子, 由凱夫勒裝甲與棉布製成。即使身陷重圍也能提供極致的防護能力以抵禦傷害。" #: lang/json/ARMOR_from_json.py msgid "pair of armored boots" @@ -10851,7 +11013,7 @@ msgstr[0] "裝甲靴" #. ~ Description for pair of armored boots #: lang/json/ARMOR_from_json.py msgid "An extremely heavy set of armor plated boots." -msgstr "由非常沈重的鋼板製成的靴子。" +msgstr "一雙極度厚重的裝甲靴子。" #: lang/json/ARMOR_from_json.py msgid "pair of rubber boots" @@ -10872,7 +11034,7 @@ msgstr[0] "鋼頭鞋" #. ~ Description for pair of steeltoed boots #: lang/json/ARMOR_from_json.py msgid "Leather boots with a steel toe. Extremely durable." -msgstr "有著鋼頭的皮靴子。超耐用。" +msgstr "有著鋼頭的皮革靴子。超耐用。" #: lang/json/ARMOR_from_json.py msgid "pair of survivor boots" @@ -10884,7 +11046,7 @@ msgstr[0] "生存者靴" msgid "" "A pair of customized leather boots, armored with kevlar and modified to " "provide maximum protection from harm, even when knee-deep in the dead." -msgstr "一雙訂製靴子, 由凱夫勒裝甲與皮革製成。即使身陷重圍也能提供極致的防護能力以抵禦傷害。" +msgstr "一雙訂製的靴子, 由凱夫勒裝甲與皮革製成。即使身陷重圍也能提供極致的防護能力以抵禦傷害。" #: lang/json/ARMOR_from_json.py msgid "pair of western boots" @@ -10919,7 +11081,7 @@ msgstr[0] "冬季生存者靴" msgid "" "A pair of customized, Kevlar armored fur boots, modified to provide maximum " "protection from harm and the elements, even when knee-deep in the dead." -msgstr "一雙訂製靴子, 由凱夫勒裝甲與毛皮製成。即使身陷重圍也能提供極致的防護能力以抵禦物理與元素傷害。" +msgstr "一雙訂製的靴子, 由凱夫勒裝甲與毛皮製成。即使身陷重圍也能提供極致的防護能力以抵禦傷害與環境危害。" #: lang/json/ARMOR_from_json.py msgid "pair of XL survivor boots" @@ -10932,7 +11094,7 @@ msgid "" "A massive pair of customized leather boots, armored with kevlar and modified" " to provide maximum protection from harm and the elements, even when knee-" "deep in the dead." -msgstr "一雙巨大的訂製靴子, 由凱夫勒裝甲與皮革製成。即使身陷重圍也能提供極致的防護能力以抵禦物理與元素傷害。" +msgstr "一雙訂製的巨大靴子, 由凱夫勒裝甲與皮革製成。即使身陷重圍也能提供極致的防護能力以抵禦傷害與環境危害。" #: lang/json/ARMOR_from_json.py msgid "pair of cleats" @@ -10949,12 +11111,12 @@ msgstr "有著硬鞋底與螺柱用來加強草地抓地力的運動用鞋子。 #: lang/json/ARMOR_from_json.py msgid "pair of golf shoes" msgid_plural "pairs of golf shoes" -msgstr[0] "" +msgstr[0] "高爾夫球鞋" #. ~ Description for pair of golf shoes #: lang/json/ARMOR_from_json.py msgid "Snug fit sport shoes with hard ridges on the bottom." -msgstr "" +msgstr "緊密貼身的運動鞋, 底部有堅硬的鞋釘。" #: lang/json/ARMOR_from_json.py msgid "pair of wooden clogs" @@ -10991,12 +11153,12 @@ msgstr "昂貴的黑色高跟舞鞋。" #: lang/json/ARMOR_from_json.py msgid "pair of dress shoes" msgid_plural "pairs of dress shoes" -msgstr[0] "皮鞋" +msgstr[0] "西裝皮鞋" #. ~ Description for pair of dress shoes #: lang/json/ARMOR_from_json.py msgid "Fancy patent leather shoes. Not designed for running in." -msgstr "華麗的漆皮皮鞋。不適合穿來跑步。" +msgstr "別緻的漆皮皮鞋。不適合穿來跑步。" #: lang/json/ARMOR_from_json.py msgid "pair of flip-flops" @@ -11088,7 +11250,7 @@ msgstr[0] "皮革涼鞋" msgid "" "Sturdy leather hiking sandals with a heel strap. Offers little in the way " "of protection, but keeps you cool during warmer months." -msgstr "採用鞋帶設計、結實的皮革登山涼鞋, 幾乎無法提供任何防護, 但在最熱的日子裡可以讓你保持涼爽。" +msgstr "堅固的皮革登山涼鞋, 帶有腳後跟綁帶。只能提供很少的防護能力, 但可以讓你在溫暖的月份裡保持涼爽。" #: lang/json/ARMOR_from_json.py msgid "pair of lowtop tennis shoes" @@ -11113,12 +11275,12 @@ msgstr "用動物皮革製作的簡單鞋子。" #: lang/json/ARMOR_from_json.py msgid "pair of motorcycle boots" msgid_plural "pairs of motorcycle boots" -msgstr[0] "機車靴" +msgstr[0] "摩托車靴" #. ~ Description for pair of motorcycle boots #: lang/json/ARMOR_from_json.py msgid "A pair of durable boots to be used by dirt bikers and motorcyclists." -msgstr "被用於越野自行車和摩托車的一雙耐用靴子。" +msgstr "一雙供越野自行車或摩托車騎士使用的耐用的靴子。" #: lang/json/ARMOR_from_json.py msgid "pair of rollerblades" @@ -11261,14 +11423,14 @@ msgstr "一個穿戴在腳踝上的隱蔽小槍套。沒有練習過就使用會 #: lang/json/ARMOR_from_json.py msgid "bow sling" msgid_plural "bow slings" -msgstr[0] "" +msgstr[0] "肩帶 (弓)" #. ~ Description for bow sling #: lang/json/ARMOR_from_json.py msgid "" "A somewhat complicated set of straps and fabric to keep your bow close to " "hand and (mostly) out of harms way. Activate to holster/draw your bow." -msgstr "" +msgstr "一套有點複雜的肩帶和織布, 讓你的弓靠近手, 並且 (大部分) 不受傷害。使用它來收納/取出你的弓。" #: lang/json/ARMOR_from_json.py msgid "holster" @@ -11320,7 +11482,7 @@ msgid "" "A belt holster consisting of a loop and strap intended for use with larger " "firearms. Slightly more cumbersome than a standard holster due to the " "straps that hold it flat against your leg, Activate to holster/draw a gun." -msgstr "一個用於大型槍械的繫帶槍套。槍套繫貼在你的腿上, 稍微比標準槍套累贅。使用它以放入或拿出槍。" +msgstr "一個腰帶槍套, 適用於大型槍枝。它以綁帶繫貼在腿上, 因此稍微比標準套更累贅。\"使用\" 以收/拔槍枝。" #: lang/json/ARMOR_from_json.py msgid "helmet netting" @@ -11342,7 +11504,7 @@ msgstr[0] "粗製防彈背心" msgid "" "A vest sewn together from Kevlar plates, less durable and protective than a " "proper Kevlar vest. Suitable for wearing under clothing." -msgstr "把凱夫勒板縫合而成的一件背心, 在堅固耐用方面比真正的防彈背心略遜一籌。它可以穿在其他衣物下面。" +msgstr "把凱夫勒板縫合而成的一件背心, 在堅固耐用方面比真正的防彈背心略遜一籌。適合穿在其它衣物下面。" #. ~ Description for pair of western boots #: lang/json/ARMOR_from_json.py @@ -11368,7 +11530,7 @@ msgstr[0] "科林斯式頭盔" msgid "" "An ancient Greek bronze helmet that provides excellent protection for the " "head, with slits for the eyes and mouth." -msgstr "一個古希臘的青銅頭盔, 為頭部提供絕佳的保護, 眼睛和嘴巴的位置留有一根縫。" +msgstr "一個古希臘的青銅頭盔, 能提供頭部絕佳的防護能力, 眼睛和嘴巴的位置留有一根縫。" #: lang/json/ARMOR_from_json.py msgid "galea" @@ -11393,7 +11555,7 @@ msgid "" "An early medieval helmet with a projection guarding the nose, to better " "protect the face without obstructing vision. Proper viking gear, unlike the" " stereotypical horned helm." -msgstr "一頂早期中世紀的護鼻頭盔, 可以提供更好的防護效果卻沒有視野縮減的缺點。不像老套的牛角頭盔, 這是一種標準的維京人裝備。" +msgstr "一頂早期中世紀的護鼻頭盔, 能提供臉部更好的防護能力卻沒有視野縮減的缺點。不像老套的牛角頭盔, 這是一種標準的維京人裝備。" #: lang/json/ARMOR_from_json.py msgid "conical helm" @@ -11405,7 +11567,7 @@ msgstr[0] "錐形頭盔" msgid "" "A conical iron helm with additional protection for the neck, associated with" " the Mongol Empire." -msgstr "一頂錐形的鐵製頭盔, 能對頸部提供進一步保護, 與蒙古帝國有關。" +msgstr "一頂錐形的鐵製頭盔, 能提供頸部額外的防護能力, 與蒙古帝國有關。" #: lang/json/ARMOR_from_json.py msgid "bell cuirass" @@ -11432,7 +11594,7 @@ msgstr "一件古羅馬鎧甲, 以重疊的金屬片條構成, 金屬片之間 #: lang/json/ARMOR_from_json.py msgid "chainmail hauberk" msgid_plural "chainmail hauberks" -msgstr[0] "加長鏈甲" +msgstr[0] "鏈甲長衣" #. ~ Description for chainmail hauberk #: lang/json/ARMOR_from_json.py @@ -11440,7 +11602,7 @@ msgid "" "A fully customized chainmail outfit, leaving the head uncovered. The shirt," " arms, and leggings have been modified with leather straps to deal with " "uneven weight distribution and to allow them to be used separately." -msgstr "一套完全定制的鏈甲套裝, 保護頭部以外的身體部位。上衣、手臂和護腿已經用皮帶修改以調整不均勻的重量, 讓它們可以分開使用。" +msgstr "一套完全訂製的鏈甲外衣, 但沒有包覆頭部。上衣、手臂和護腿已經用皮革綁帶調整以平衡重量, 並允許它們被單獨使用。" #: lang/json/ARMOR_from_json.py msgid "pair of bronze greaves" @@ -11462,7 +11624,7 @@ msgstr[0] "札甲" msgid "" "A suit of armor made of multiple pieces of tough leather, laced together for" " durable yet flexible protection." -msgstr "一套把長方形硬皮革片繫起來排列而成的盔甲, 保護力強又不失靈活性。" +msgstr "一套盔甲, 由多塊堅韌皮革製成, 繫在一起以提供耐用而靈活的防護能力。" #: lang/json/ARMOR_from_json.py msgid "wooden shield" @@ -11474,7 +11636,7 @@ msgstr[0] "木盾" msgid "" "A crude wooden shield, lacking any metal or leather reinforcement. " "Lightweight but not very tough." -msgstr "一面粗製的木盾, 缺乏金屬或是皮革補強。輕量但不太堅固。" +msgstr "一面粗糙的木頭盾牌, 缺乏任何金屬或皮革強化。輕量但不太堅韌。" #: lang/json/ARMOR_from_json.py msgid "large wooden shield" @@ -11486,7 +11648,7 @@ msgstr[0] "大木盾" msgid "" "An ancient style of wooden shield, lacking any metal or leather " "reinforcement. Bulky, but offers a decent amount of protection." -msgstr "一面舊式的木製盾牌, 缺乏金屬或是皮革補強。笨重, 但提供像樣的保護。" +msgstr "一面舊式的木頭盾牌, 缺乏任何金屬或是皮革強化。笨重, 但是能提供不錯的防護能力。" #: lang/json/ARMOR_from_json.py msgid "heater shield" @@ -11512,7 +11674,7 @@ msgid "" "A classic medieval style of shield, made of wood overlaid with leather, in " "an elongated teardrop shape. Affords decent protection, but was better " "suited for cavalry." -msgstr "一塊具有經典中世紀風格的盾牌, 由木頭覆以皮革製成, 呈細長淚珠形狀。提供像樣的保護, 但比較適合騎兵使用。" +msgstr "一塊具有經典中世紀風格的盾牌, 由木頭覆以皮革製成, 呈細長淚珠形狀。能提供不錯的防護能力, 但比較適合騎兵使用。" #: lang/json/ARMOR_from_json.py msgid "round shield" @@ -11561,7 +11723,7 @@ msgid "" "A small metal shield from the late medieval and renaissance periods. " "Extremely light and tough, but its small size is as much a hindrance as it " "is an advantage." -msgstr "一面源自中世紀晚期和文藝復興時期的小金屬盾。盾身輕而穩固, 但它的尺寸之小實在是好壞參半。" +msgstr "一面小型金屬盾牌, 源自中世紀晚期和文藝復興時期。極度輕巧且堅韌, 但它的尺寸之小實在好壞參半。" #: lang/json/ARMOR_from_json.py msgid "hooded hat" @@ -11573,19 +11735,19 @@ msgstr[0] "兜帽" msgid "" "A proper wide-brimmed hat, modified by the addition of a hood sewn to it, to" " better protect the neck from wind and rain." -msgstr "一頂像樣的寬邊帽, 在頸部縫上了一個護兜, 以保護不受風吹雨打。" +msgstr "一頂像樣的寬邊帽, 縫上了一個額外的兜帽, 更能保護頸部免受風吹雨淋。" #: lang/json/ARMOR_from_json.py msgid "pair of fur leggings" msgid_plural "pairs of fur leggings" -msgstr[0] "毛皮綁腿" +msgstr[0] "毛皮腿套" #. ~ Description for pair of fur leggings #: lang/json/ARMOR_from_json.py msgid "" "Snug fur sleeves to keep your legs warm. Simple yet effective since " "prehistoric times." -msgstr "舒適的皮草綁腿, 讓你的腿部保暖。始於史前時代, 簡單有效。" +msgstr "貼身的毛皮腿套, 用於保暖雙腿。始於史前時代, 簡單而有效。" #: lang/json/ARMOR_from_json.py msgid "tarpaulin" @@ -11610,7 +11772,7 @@ msgid "" "Eyewear carved from from wood or bone, with only a thin slit to see out of." " Helps reduce glare, traditionally used by the Inuit to protect against " "snow blindness." -msgstr "由木材或是骨頭製成的眼鏡, 眼睛的位置只有一條薄薄的縫隙。有助於減少眩光, 因紐特人戴著它以防止雪盲。" +msgstr "由木頭或骨頭雕刻而成的眼鏡, 在眼睛的位置只有一條薄薄的縫隙。有助於減少眩光, 傳統上供因紐特人使用以防止雪盲。" #: lang/json/BIONIC_ITEM_from_json.py msgid "abstract bionic module" @@ -11677,7 +11839,7 @@ msgid "" "A motion-detecting alarm system will notice almost all movement within a " "fifteen-foot radius, and will silently alert you. This is very useful " "during sleep, or if you suspect a cloaked pursuer." -msgstr "一個動態偵測警報系統能夠偵測5呎遠的範圍並通知你。在你睡覺時, 或是你懷疑有隱形的生物在追蹤你時非常有用。" +msgstr "一個動態偵測警報系統能夠偵測 5 呎遠的範圍並通知你。在你睡覺時, 或是你懷疑有隱形的生物在追蹤你時非常有用。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Arms Alloy Plating CBM" @@ -11752,7 +11914,7 @@ msgid "" "You have a battery draining attachment, and thus can make use of the energy " "contained in normal, everyday batteries. Use 'E' to consume batteries. Can" " be toggled on and off at will." -msgstr "這是一個電力提取的插件, 能夠用來從一般的電池中提取能量。按下 'E' 來提取電力。可以任意地開關。" +msgstr "這是一個電力提取的插件, 能夠用來從一般的電池中提取能量。按下 E 來提取電力。可以任意地開關。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Monomolecular Blade CBM" @@ -11767,7 +11929,8 @@ msgid "" "forearm, capable of being extended through the back of your wrist at the " "cost of a small amount of power. Though exceptionally sharp, it will " "prevent you from holding anything else while extended." -msgstr "耗用一點能量, 你手腕的背面就能夠伸出先進材質的致命長刀。能夠讓你做出強力的砍劈傷害, 但是刀子伸出時是無法拿東西的。" +msgstr "" +"一把由先進材料製成、半身長的致命刀刃現在就埋在你的前臂裡面, 能夠花費少許能量從手腕背面伸出。雖然它異常鋒利, 但是在它伸出時你無法拿著任何東西。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Fusion Blaster Arm CBM" @@ -11782,7 +11945,7 @@ msgid "" "use or carry two-handed items, and your strength limits what you can use " "with your one hand." msgstr "" -"你的左臂被改造成重型核融合砲! 你能夠耗用體內的能量庫來發射破壞性熱能射線;然而你無法使用或攜帶雙手物品, 而且你力量受限成只用單手的狀態。" +"你的左臂被改造成重型核融合砲! 你能夠耗用體內的能量庫來發射破壞性熱能射線。然而你無法使用或攜帶雙手物品, 而且你力量受限成只用單手的狀態。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Blood Analysis CBM" @@ -11809,7 +11972,7 @@ msgid "" " impurities, primarily drugs. It will have limited impact on viruses. Note" " that it is not a targeted filter; ALL drugs in your system will be " "affected." -msgstr "你的心臟安裝了過濾系統讓你能夠主動過濾化學雜質, 主要是藥物。對於病毒只有有限的作用。注意這不是針對性的過濾器;藥物會被過濾掉。" +msgstr "你的心臟安裝了過濾系統讓你能夠主動過濾化學雜質, 主要是藥物。對於病毒只有有限的作用。注意這不是針對性的過濾器, 藥物會被過濾掉。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Cable Charger System CBM" @@ -11834,7 +11997,7 @@ msgstr[0] "CBM: 碳纖維皮下組織" msgid "" "Lying just beneath your skin is a thin armor made of carbon nanotubes. This" " reduces bashing damage by 2 and cutting damage by 4." -msgstr "你的皮下組織被改造成一層奈米級碳管的裝甲。能夠減少鈍擊傷害 2 點及砍劈傷害 4 點。" +msgstr "你的皮下埋著一層由奈米碳管製成的輕薄裝甲。能夠減少鈍擊傷害 2 點、砍劈傷害 4 點。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Chain Lightning CBM" @@ -11862,7 +12025,7 @@ msgid "" "extend and retract them at the cost of a small amount of power. These do " "considerable cutting damage, but prevent you from holding anything else " "while extended." -msgstr "耗用少量能量, 你的手指就能伸出或收回一組超殺的金鋼毒爪。能夠讓你做出強力的砍劈傷害, 但是爪子伸出時是無法拿東西的。" +msgstr "你的手指裡面安裝了凶狠的爪子, 允許你花費少許能量伸縮它。它能造成可觀的砍劈傷害, 但是在它伸出時你無法拿著任何東西。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Internal Climate Control CBM" @@ -11958,12 +12121,12 @@ msgid "" "Mounted in the palms of your hand are small parabolic EMP field generators." " You may use power to fire a short-ranged blast which will disable " "electronics and robots." -msgstr "在你的手掌中安置了小型的電磁脈衝 (EMP) 產生器。你能夠使用能量來發射短距離的電磁波來癱瘓電器以及機器人。" +msgstr "在你的手掌中安置了小型的電磁脈衝 (EMP) 產生器。你能夠使用能量發射短程電磁波來癱瘓電器以及機器人。" #: lang/json/BIONIC_ITEM_from_json.py msgid "EMP Projector CBM" msgid_plural "EMP Projector CBMs" -msgstr[0] "" +msgstr[0] "CBM: 電磁脈衝發射器" #. ~ Description for EMP Projector CBM #. ~ Description for EMP Projector @@ -11972,7 +12135,7 @@ msgid "" "A ranged EMP generator system is implanted on the palm of your right hand " "and arm. Fires super-concentrated electric pulses for a short distance. " "Extremely effective against electronic targets but mostly useless otherwise." -msgstr "" +msgstr "一排電磁脈衝電荷生成系統植入於右手掌和手臂。能在短距離內發射超濃縮電磁脈衝。對電子類的目標非常有效, 但在其他情況下大多無用。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Ethanol Burner CBM" @@ -12158,7 +12321,7 @@ msgid "" "While fighting unarmed against a warm-blooded opponent, there is a chance " "that a successful hit will drain body heat, inflicting a small amount of " "extra damage, and increasing your power reserves slightly." -msgstr "當你徒手與溫體動物戰鬥時, 將有機會在擊中對手時吸取熱能, 造成少量的額外傷害並能夠得到一些能量。" +msgstr "當你徒手與溫血生物戰鬥時, 有機會在成功擊中對手時吸取熱能, 造成少量的額外傷害, 同時稍微增加你的能量儲備。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Thermal Dissipation CBM" @@ -12197,7 +12360,7 @@ msgstr[0] "CBM: 紅外線視覺" msgid "" "Your range of vision extends into the infrared, allowing you to see warm-" "blooded creatures in the dark." -msgstr "你的視力能夠看到紅外線, 讓你能夠在黑暗中看到溫體動物。" +msgstr "你的視力能夠看到紅外線, 讓你能夠在黑暗中看到溫血生物。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Cerebral Booster CBM" @@ -12303,7 +12466,7 @@ msgid "" "A set of highly-advanced quantum storage drives used to enhance memory. " "While active, they increase the rate that you learn skills, and give you " "near-perfect memory of skills and terrain." -msgstr "" +msgstr "一組尖端科技的量子存儲驅動器, 用於增強記憶。開啟時它們會提高你學習技能的速度, 並使你有對技能和地形近乎完美的記憶能力。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Metabolic Interchange CBM" @@ -12422,7 +12585,7 @@ msgstr[0] "CBM: 動力裝甲介面" msgid "" "Interfaces your power system with the internal charging port on suits of " "power armor." -msgstr "這是能夠讓你的能量儲存室對動力裝甲提供能量的元件。" +msgstr "讓動力裝甲的內部充電端口能夠連接你的能量系統。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Power Armor Mk. II Interface CBM" @@ -12437,7 +12600,7 @@ msgid "" "power armor. The Mk. II was designed by DoubleTech Inc., to meet the " "popularity of the Mk. II power armor series." msgstr "" -"這是能夠讓你的能量儲存室對動力裝甲提供能量的元件。Mk. II 的型號是由DoubleTech工業設計, 用以連接 Mk. II 動力裝甲系列。" +"讓動力裝甲的內部充電端口能夠連接你的能量系統。Mk. II 由 DoubleTech 工業設計, 以支持 Mk. II 動力裝甲系列的普及化。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Power Storage CBM" @@ -12533,7 +12696,7 @@ msgid "" "You possess razor-sharp retractable claws underneath your fingernails, ten " "double-edged blades four centimeters in length that do a small amount of " "unarmed slashing damage whenever your fingertips are uncovered." -msgstr "你的指甲下方多了一套可伸縮的銳利刀刃, 當你的指尖沒有被蓋住的時候, 能夠增加徒手攻擊的傷害。" +msgstr "你的指甲下面具有剃刀般尖銳的可伸縮爪子, 10 把 4 公分長的刀刃能在你的手指沒被包覆時造成少量的徒手砍劈傷害。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Internal Microreactor CBM" @@ -12711,7 +12874,7 @@ msgstr "外科等級的手術刀系統已經植入了你的手指。它們允許 #: lang/json/BIONIC_ITEM_from_json.py msgid "Anti-Glare Compensators CBM" msgid_plural "Anti-Glare Compensators CBMs" -msgstr[0] "CBM: 防眩光裝置" +msgstr[0] "CBM: 眩光防護裝置" #. ~ Description for Anti-Glare Compensators CBM #: lang/json/BIONIC_ITEM_from_json.py @@ -12761,8 +12924,7 @@ msgid "" " reactions dramatically, essentially freezing time. You are still delicate," " however, and violent or rapid movements may damage you due to friction." msgstr "" -"消耗所有儲存的生化能量來換取你能夠劇烈增加你全身的速度與反應, 基本上就是凍結時間。你的動作依然細膩, " -"但過大或者連續的動作可能會使你與空氣摩擦造成傷害。" +"以消耗所有儲存的生化能量為代價, 劇烈增加你身體的速度與反應, 基本上是凍結時間。但是你依然很脆弱, 猛烈或者快速的行動可能會因摩擦而對你造成傷害。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Integrated Toolset CBM" @@ -12845,7 +13007,7 @@ msgstr "你的手掌埋入了奈米碳管讓你能從屍體中提取水分, 並 #: lang/json/BIONIC_ITEM_from_json.py msgid "Intravenous Needletip CBM" msgid_plural "Intravenous Needletip CBMs" -msgstr[0] "" +msgstr[0] "CBM: 靜脈注射針" #. ~ Description for Intravenous Needletip CBM #: lang/json/BIONIC_ITEM_from_json.py @@ -12854,12 +13016,12 @@ msgid "" "hoses instead of a plunger. Installed, it allows you to draw substances " "directly into your bloodstream through the needle without needing to carry a" " syringe." -msgstr "" +msgstr "帶有可伸縮針頭的小管, 終端是一個小軟管網而不是一個栓塞。安裝後, 它允許你通過針頭將物質直接吸入血液中, 不再需要針筒來注射。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Titanium Skeletal Bracing CBM" msgid_plural "Titanium Skeletal Bracing CBMs" -msgstr[0] "" +msgstr[0] "CBM: 鈦製骨架支撐" #. ~ Description for Titanium Skeletal Bracing CBM #: lang/json/BIONIC_ITEM_from_json.py @@ -12867,12 +13029,12 @@ msgid "" "A set of hinges, springs, and other synthetic augments for the skeletal " "structure. These artificial enhancers strengthen the knees and elbows, " "allowing you to carry more weight." -msgstr "" +msgstr "一組鉸鏈、彈簧和其他用於骨架結構的合成增強套件。這些人造鈦製骨架可強化膝蓋與肘部, 讓你負重大幅地增加。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Kinetic Shock Absorbers CBM" msgid_plural "Kinetic Shock Absorbers CBMs" -msgstr[0] "" +msgstr[0] "CBM: 動力減震系統" #. ~ Description for Kinetic Shock Absorbers CBM #: lang/json/BIONIC_ITEM_from_json.py @@ -12882,6 +13044,7 @@ msgid "" "negate damage from severe impacts such as falling, at the cost of reducing " "your ability to move effectively." msgstr "" +"一套液壓彈簧與可折疊襯墊, 用於替代四肢和上半身的大部分肉體。啟動時, 將能吸收抵消各種摔飛重跌所造成的嚴重損害, 但卻會降低你的有效移動能力。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Solar Panels CBM" @@ -12902,26 +13065,29 @@ msgid "" "Installed on your back is a set of retractable solar panels. When in direct" " sunlight, they will automatically deploy and slowly recharge your power " "level." -msgstr "" +msgstr "在你背部安裝一套可伸縮的太陽能電池板。在陽光直射下, 它們會自動展開部署並慢慢為你體內的電池充電。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Ionic Overload Generator CBM" msgid_plural "Ionic Overload Generator CBMs" -msgstr[0] "" +msgstr[0] "CBM: 離子超載生成器" #. ~ Description for Ionic Overload Generator CBM -#: lang/json/BIONIC_ITEM_from_json.py +#. ~ Description for Ionic Overload Generator +#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py msgid "" "A powerful ion energy generator is implanted on your chest. Fires a " "powerful, ever-expanding energy blast. The resulting blast ignites oxygen " -"creating fires as it moves and an explosion on impact. Close range use is " +"creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" +"一個強力的離子能量生成器用於植入你的胸部。可發射強大且不斷膨脹的爆破能量。由此產生的爆炸會點燃氧氣, 並在移動時產生火焰, " +"最後在撞擊時產生劇烈的爆炸。極度建議別對近距離的目標使用。" #: lang/json/BIONIC_ITEM_from_json.py msgid "Synaptic Regeneration System CBM" msgid_plural "Synaptic Regeneration System CBMs" -msgstr[0] "" +msgstr[0] "CBM: 神經突觸再生系統" #. ~ Description for Synaptic Regeneration System CBM #: lang/json/BIONIC_ITEM_from_json.py @@ -12931,6 +13097,8 @@ msgid "" " active, you won't become sleep deprived; and if you're sleep deprived " "already, it will boost the rate of recovery." msgstr "" +"將電磁刺激器透過手術植入頭部後部和脊柱中, 不斷地消耗電力。只要啟動它, 你就不會再對睡眠不足的不良影響所困擾。如果你已經有睡眠剝奪的症狀, " +"它將提高身體恢復的速度。" #. ~ Description for EMP Projector CBM #. ~ Description for EMP Projector @@ -12941,7 +13109,7 @@ msgid "" "hand and arm. Fires super-concentrated electric pulses for a short " "distance. Extremely effective against electronic targets but mostly useless" " otherwise." -msgstr "" +msgstr "一排電磁脈衝電荷生成系統植入於右手掌和手臂。能在短距離內發射超濃縮電磁脈衝。對電子類的目標非常有效, 但在其他情況下大多無用。" #. ~ Description for Ionic Overload Generator CBM #. ~ Description for Ionic Overload Generator @@ -12952,22 +13120,8 @@ msgid "" "creating fires as it moves and an explosion on impact. Close range use is " "highly discouraged." msgstr "" - -#: lang/json/BIONIC_ITEM_from_json.py -msgid "Autonomous Surgical Razors CBM" -msgid_plural "Autonomous Surgical Razors CBMs" -msgstr[0] "" - -#. ~ Description for Autonomous Surgical Razors CBM -#. ~ Description for autonomous surgical razors -#. ~ Description for Autonomous Surgical Razors -#: lang/json/BIONIC_ITEM_from_json.py lang/json/TOOL_from_json.py -#: lang/json/bionic_from_json.py -msgid "" -"Implanted on the user's fingers is a system of surgical grade razors. While" -" activated, they will continously drain power to make automated precise cuts" -" but you will be unable to wield anything." -msgstr "" +"一個強力的離子能量生成器用於植入你的胸部。可發射強大且不斷膨脹的爆破能量。由此產生的爆炸會點燃氧氣, 並在移動時產生火焰, " +"最後在撞擊時產生劇烈的爆炸。極度建議別對近距離的目標使用。" #: lang/json/BOOK_from_json.py msgid "Lessons for the Novice Bowhunter" @@ -13074,7 +13228,7 @@ msgstr[0] "程式構解" msgid "" "A classic text, \"The Structure and Interpretation of Computer Programs.\" " "Written with examples in LISP, but applicable to any language." -msgstr "一本資訊課本, 全名為 \"電腦程式的構造和解釋\"。它的例子以 LISP 程式語言所寫成, 但是可以通用到其他的程式語言。" +msgstr "一本資訊課本, 全名為 \"電腦程式的構造和解釋\"。它的範例以 LISP 程式語言所寫成, 但是可以通用到其他的程式語言。" #: lang/json/BOOK_from_json.py msgid "Computer Science 301" @@ -13172,7 +13326,7 @@ msgstr[0] "供餐人" #. ~ Description for To Serve Man #: lang/json/BOOK_from_json.py msgid "It's... it's a cookbook!" -msgstr "這...這是一本食譜?!" +msgstr "這… 這是一本食譜?!" #: lang/json/BOOK_from_json.py msgid "Cucina Italiana" @@ -13260,7 +13414,7 @@ msgid "" "This sheaf of papers-dated two weeks before all this started-describes some " "new chemical formula, and its effects on human subjects. It's stamped " "\"APPROVED\"..." -msgstr "這疊紙上印的日期是兩週之前, 講述了一些新的化學配方, 及其對人類受試者的影響。已被蓋上 \"批准\" 的章..." +msgstr "這疊紙上印的日期是兩週之前, 講述了一些新的化學配方, 及其對人類受試者的影響。已被蓋上 \"批准\" 的章…" #: lang/json/BOOK_from_json.py msgid "lab journal-Dionne" @@ -13273,7 +13427,7 @@ msgid "" "This team logbook details several varieties of mutagenic experiments, " "focusing on those derived from various Earth fauna. The team seems quite " "enthusiastic--if not eager--about their results." -msgstr "該團隊日誌詳述了幾個品種的突變實驗, 著眼於從各種地球動物群的衍生。這團隊似乎相當熱心 - 假如不是為了 - 取得結果。" +msgstr "該團隊日誌詳述了幾個品種的突變實驗, 著眼於從各種地球動物群的衍生。這團隊似乎對成果相當熱心… 或是急切。" #: lang/json/BOOK_from_json.py msgid "PE065 \"Chimera\": Best Practices" @@ -13286,7 +13440,7 @@ msgid "" "This sheaf of papers-dated the day before you evacuated-describes a new " "chemical formula in detail and supplies instructions for its use as some " "sort of ...crowd-control catalyst? That can't be right..." -msgstr "這疊紙上印的日期是你撤離的前一日, 詳細介紹了一種新的化學配方, 並附上說明了其作為某種...人群控制催化劑的用途? 這不是真的吧..." +msgstr "這疊紙上印的日期是你撤離的前一日, 詳細介紹了一種新的化學配方, 並附上說明了其作為某種… 人群控制催化劑的用途? 這不是真的吧…" #: lang/json/BOOK_from_json.py msgid "lab journal-Smythe" @@ -13299,7 +13453,7 @@ msgid "" "This team logbook details several varieties of mutagenic experiments, " "focusing on those derived from flesh contaminated with XE037. The results " "look promising but the procurement methods seem awfully vague..." -msgstr "該團隊日誌詳述了幾個品種的突變實驗, 著眼於感染 XE037 之肉體的衍生。結果看起來很前途, 但是採購方式卻很模糊..." +msgstr "該團隊日誌詳述了幾個品種的突變實驗, 著眼於感染 XE037 之肉體的衍生。結果看起來很前途, 但是採購方式卻很模糊…" #: lang/json/BOOK_from_json.py msgid "standpipe maintenance log" @@ -13312,7 +13466,7 @@ msgid "" "This binder details the scheduled maintenance for several plumbing systems " "throughout the facility. However, some of the log sheets seem to be filled " "with...a chemical formula?" -msgstr "這個文件詳細記錄了貫穿各設施的管道系統的維護狀況。然而, 一些記錄表中似乎充滿了...化學式?" +msgstr "這個文件詳細記錄了貫穿各設施的管道系統的維護狀況。然而, 一些記錄表中似乎充滿了… 化學式?" #: lang/json/BOOK_from_json.py msgid "chemical reference-CLASSIFIED" @@ -13354,7 +13508,7 @@ msgstr[0] "PE023 \"醫療\": 應用與結果" msgid "" "This binder of highly technical papers describes some new chemical formula, " "and its effects on human subjects. It's stamped \"APPROVED\"...." -msgstr "描述一些新的化學配方的高科技技術報告, 及其對人類受試者的影響。它蓋了 \"批准\" 的章...." +msgstr "描述一些新的化學配方的高科技技術報告, 及其對人類受試者的影響。它蓋了 \"批准\" 的章…" #: lang/json/BOOK_from_json.py msgid "PE070 \"Raptor\": Proposal" @@ -13401,7 +13555,7 @@ msgid "" "into medieval Scottish culture and fashion as well as new uses for oatmeal, " "fish, and sheep liver." msgstr "" -"一本翻譯了一半的十三世紀蘇格蘭食譜。各式配方之間有著大量殺來殺去的插畫, 閱讀起來有點困難。本書不僅介紹了燕麥片、魚、羊肝的新用法, " +"一本翻譯了一半的 13 世紀蘇格蘭食譜。各式配方之間有著大量殺來殺去的插畫, 閱讀起來有點困難。本書不僅介紹了燕麥片、魚、羊肝的新用法, " "還能一探中世紀的蘇格蘭文化。" #: lang/json/BOOK_from_json.py @@ -13475,12 +13629,12 @@ msgstr "這本厚重的書籍記錄了全世界的舞蹈細節。感知高的讀 #: lang/json/BOOK_from_json.py msgid "Break a Leg!" msgid_plural "Break a Leg!" -msgstr[0] "" +msgstr[0] "祝你好運!" #. ~ Description for Break a Leg! #: lang/json/BOOK_from_json.py msgid "The Kids' Guide to Acting and Stagecraft." -msgstr "" +msgstr "給兒童閱讀的表演與舞台藝術指南。" #: lang/json/BOOK_from_json.py msgid "AAA Guide" @@ -13777,7 +13931,7 @@ msgid "" "pan, but you can think of a couple of better uses for it." msgstr "" "這個紙本筆記簿寫滿了無趣的紀錄、實驗的觀察和註記。同時混雜了一些迷思: 如何利用實驗室的汽相沉積裝置, " -"把無定形碳以近似於鑽石的結構附於一般金屬上面。作者原來的目標是製作更好的不粘煎鍋, 但你想到更好的用途。" +"把不定形碳以近似於鑽石的結構附於一般金屬上面。作者原來的目標是製作更好的不粘煎鍋, 但你想到更好的用途。" #: lang/json/BOOK_from_json.py msgid "The Streetfighter's Sidekick" @@ -13958,7 +14112,7 @@ msgstr "每月出刊的雜誌, 介紹鳥籠與建構方式。" #: lang/json/BOOK_from_json.py msgid "Building for Beginners" msgid_plural "Building for Beginners" -msgstr[0] "第一次建設就上手" +msgstr[0] "第一次建築就上手" #. ~ Description for Building for Beginners #: lang/json/BOOK_from_json.py @@ -14037,12 +14191,12 @@ msgstr "一本精裝書, 詳細介紹了進階的急救技術與適合現場操 #: lang/json/BOOK_from_json.py msgid "First Aid Kit Instruction Booklet" msgid_plural "First Aid Kit Instruction Booklets" -msgstr[0] "" +msgstr[0] "急救箱說明手冊" #. ~ Description for First Aid Kit Instruction Booklet #: lang/json/BOOK_from_json.py msgid "Illustrated how-to guide for your first aid kit." -msgstr "" +msgstr "提供圖解指南, 教你如何進行急救。" #: lang/json/BOOK_from_json.py msgid "Guns n Ammo" @@ -14064,7 +14218,7 @@ msgstr[0] "槍械說明書" msgid "" "A thick soft-cover book that claims to be a complete guide to safely " "operating, maintaining, and repairing firearms." -msgstr "一本軟皮書, 內容有著關於槍械安全操作、保養、維修的資訊。" +msgstr "一本軟皮書, 內容有著關於槍械安全操作、保養、修理的資訊。" #: lang/json/BOOK_from_json.py msgid "Pocket Guide to Firearm Safety" @@ -14115,12 +14269,12 @@ msgstr[0] "內燃機原理" msgid "" "A college-level textbook that details the operation, maintenance, and repair" " of internal combustion engines." -msgstr "一本大學的教科書, 詳細介紹了操作, 維護和修理內燃機引擎。" +msgstr "一本大學教科書, 詳細介紹了內燃機引擎的操作、維護和修理。" #: lang/json/BOOK_from_json.py msgid "army improvised field repairs" msgid_plural "army improvised field repairs" -msgstr[0] "軍用應急維修手冊" +msgstr[0] "軍用應急修理手冊" #. ~ Description for army improvised field repairs #: lang/json/BOOK_from_json.py @@ -14212,7 +14366,7 @@ msgstr "在目前這情形下, 這本書乍看起來很實用, 但是裡面充 #: lang/json/BOOK_from_json.py msgid "black box transcript" msgid_plural "black box transcripts" -msgstr[0] "黑盒子" +msgstr[0] "黑盒子紀錄" #. ~ Description for black box transcript #: lang/json/BOOK_from_json.py @@ -14243,7 +14397,7 @@ msgstr[0] "牧場創建計劃書" msgid "" "A short paper of the economic viability of constructing an agricultural " "outpost." -msgstr "一篇簡短文章, 講述建設農業哨站在經濟方面的可行性。" +msgstr "一篇簡短文章, 講述建造農業哨站在經濟方面的可行性。" #. ~ Description for standpipe maintenance log #: lang/json/BOOK_from_json.py @@ -14379,7 +14533,7 @@ msgstr[0] "摩門之書" msgid "" "The sacred text of the Latter Day Saint movement of Christianity, originally" " published in 1830 by Joseph Smith." -msgstr "基督教後期聖徒運動的神聖文本, 最初由約瑟夫·史密斯發表於1830年。" +msgstr "基督教後期聖徒運動的神聖文本, 最初由約瑟夫·史密斯發表於 1830 年。" #: lang/json/BOOK_from_json.py msgid "The Gospel of the Flying Spaghetti Monster" @@ -14606,7 +14760,7 @@ msgstr "一本關於成長的經典寓言故事, 描述一位年輕男子在生 msgid "" "A graphic novel about a young girl living in Iran during the 1980's, seeing " "the world change around her as Iraq invaded her country." -msgstr "" +msgstr "這是一部關於 1980 年代生活在伊朗的年輕女孩的視覺文學, 描述當伊拉克入侵她的國家時, 她周遭世界產生的種種變化。" #: lang/json/BOOK_from_json.py msgid "crime novel" @@ -14626,7 +14780,7 @@ msgid "" "A story about three people in the fictional city of Los Santos, a gangster, " "an upper-class man, and a psychopath, eventually banding together to pull-" "off the biggest heist in the city's history" -msgstr "" +msgstr "描述生活在虛構城市洛斯桑托斯的三個人, 一個黑幫老大、一個上流階級的男人和一個精神病患的故事, 最終合夥策畫了這座城市歷史上最大的搶劫案。" #: lang/json/BOOK_from_json.py msgid "drama novel" @@ -14688,7 +14842,7 @@ msgstr[0] "推理小說" #. ~ Description for mystery novel #: lang/json/BOOK_from_json.py msgid "A detective investigates an unusual murder in a secluded location." -msgstr "在一個僻靜的位置, 一個不尋常的謀殺, 一名偵探。" +msgstr "一個僻靜的地點, 一起不尋常的謀殺, 一名偵探。" #: lang/json/BOOK_from_json.py msgid "pulp novel" @@ -14835,7 +14989,7 @@ msgstr "講述一個驚心動魄的二戰戰俘營中的生存故事, 內容充 msgid "" "A story about a Bosnian citizen who goes through many hardships and near " "death during the breakup of Yugoslavia." -msgstr "" +msgstr "一個關於波士尼亞公民在南斯拉夫解體期間, 經歷了許多艱難和接近死亡的故事。" #: lang/json/BOOK_from_json.py msgid "western novel" @@ -14929,7 +15083,7 @@ msgstr[0] "企業財務報表" #. ~ Description for corporate accounting ledger #: lang/json/BOOK_from_json.py msgid "If you knew what to look for something might stand out..." -msgstr "如果你看懂的話, 會有人跳腳的...." +msgstr "如果你看懂的話, 會有人跳腳的…" #: lang/json/BOOK_from_json.py msgid "patient treatment records" @@ -14988,7 +15142,7 @@ msgstr "一本冊子記載著一位死刑犯在牢裡看到的 \"景象\"。" #: lang/json/BOOK_from_json.py msgid "Hávamál" msgid_plural "copies of Hávamál" -msgstr[0] "" +msgstr[0] "\"哈瓦瑪爾\" 的副本" #. ~ Description for Hávamál #: lang/json/BOOK_from_json.py @@ -15128,7 +15282,7 @@ msgstr "一本精裝書, 教導如何成為一個有效和有說服力的演講 #: lang/json/BOOK_from_json.py msgid "Dungeon Master's Guide: 6th Edition" msgid_plural "Dungeon Master's Guide: 6th Editions" -msgstr[0] "" +msgstr[0] "地下城主指南: 第六版" #. ~ Description for Dungeon Master's Guide: 6th Edition #: lang/json/BOOK_from_json.py @@ -15136,7 +15290,7 @@ msgid "" "A thick, hardcover volume with everything needed to weave legendary stories." " It's full of information, but finding the things you're looking for can be" " a chore." -msgstr "" +msgstr "一本厚重的精裝本, 內容有編述傳奇故事所需的一切資料。雖然它有極豐富的內容, 但要找到你正在尋找的東西可能是件苦差事。" #: lang/json/BOOK_from_json.py msgid "Duelist's Annual" @@ -15216,7 +15370,7 @@ msgstr "一本關於在荒野中生存和狩獵的亮面雜誌。在後面的頁 #: lang/json/BOOK_from_json.py msgid "Pitching a Tent" msgid_plural "copies of Pitching a Tent" -msgstr[0] "" +msgstr[0] "\"搭個帳棚\" 的副本" #. ~ Description for Pitching a Tent #: lang/json/BOOK_from_json.py @@ -15344,6 +15498,21 @@ msgid "" "volume." msgstr "這個皮革文件夾曾經為某個服裝設計師所擁有, 裡面是滿滿的草圖與筆記, 熟練的裁縫師方可從中取經。" +#: lang/json/BOOK_from_json.py +msgid "Friendly, Humane Fashion" +msgid_plural "Friendly, Humane Fashions" +msgstr[0] "和善, 人性化的時尚" + +#. ~ Description for Friendly, Humane Fashion +#: lang/json/BOOK_from_json.py +msgid "" +"An educational book detailing the uses of fake fur, as well as its benefits " +"and disadvantages. The prose is rather passionate, and a disclaimer on the " +"cover proudly states that the book is printed and distributed by the Gryphon" +" Animal Rights Organization." +msgstr "" +"一本教育性的書籍, 詳細介紹人造毛皮的使用, 並剖析它的利弊。文詞間滿溢熱情, 封面上的免責聲明自豪地寫著: 這本書是由獅鷲動物權利組織印刷和發行的。" + #: lang/json/BOOK_from_json.py msgid "Sewing Techniques for Designers" msgid_plural "Sewing Techniques for Designers" @@ -15493,136 +15662,136 @@ msgstr "這份文件詳細介紹了非法改造槍械的方式。你可以從中 #: lang/json/BOOK_from_json.py msgid "chess set" msgid_plural "chess sets" -msgstr[0] "" +msgstr[0] "國際象棋組" #. ~ Description for chess set #: lang/json/BOOK_from_json.py msgid "" "A wooden box containing all the equipment needed to play a game of chess." -msgstr "" +msgstr "一個木盒子, 裡面裝著玩國際象棋所需的所有東西。" #: lang/json/BOOK_from_json.py msgid "checkers set" msgid_plural "checkers sets" -msgstr[0] "" +msgstr[0] "西洋跳棋組" #. ~ Description for checkers set #: lang/json/BOOK_from_json.py msgid "A wooden box containing a set of round tokens used to play checkers." -msgstr "" +msgstr "一個木盒子, 裡面有一套用來玩西洋跳棋的圓形棋子。" #: lang/json/BOOK_from_json.py msgid "deck of cards" msgid_plural "deck of cardss" -msgstr[0] "" +msgstr[0] "一副撲克牌" #. ~ Description for deck of cards #: lang/json/BOOK_from_json.py msgid "A collection of 52 cards made to play poker." -msgstr "" +msgstr "一套 52 張的撲克牌。" #: lang/json/BOOK_from_json.py msgid "deck of Sorcery cards" msgid_plural "deck of Sorcery cardss" -msgstr[0] "" +msgstr[0] "一套巫術卡" #. ~ Description for deck of Sorcery cards #: lang/json/BOOK_from_json.py msgid "" "A set of cards meant to play the game \"Sorcery.\" Each card has a fun " "picture of a different monster." -msgstr "" +msgstr "一套用於玩 \"巫術\" 遊戲的卡片。每張卡片都有不同怪物的有趣圖畫。" #: lang/json/BOOK_from_json.py msgid "Picturesque" msgid_plural "Picturesques" -msgstr[0] "" +msgstr[0] "猜圖卡片" #. ~ Description for Picturesque #: lang/json/BOOK_from_json.py msgid "" "A game where one draws an image, and the others attempt to guess what it is." -msgstr "" +msgstr "一個人畫圖, 其他人猜他畫什麼的遊戲。" #: lang/json/BOOK_from_json.py msgid "Capitalism" msgid_plural "Capitalisms" -msgstr[0] "" +msgstr[0] "資本主義" #. ~ Description for Capitalism #: lang/json/BOOK_from_json.py msgid "" "A game where players traverse around the board buying property and swindling" " their friends." -msgstr "" +msgstr "一套桌遊, 玩家們在遊戲盤上遊轉、購買房產, 和訛詐他們的朋友。" #: lang/json/BOOK_from_json.py msgid "Blobs and Bandits" msgid_plural "Blobs and Banditss" -msgstr[0] "" +msgstr[0] "黏球怪與強盜" #. ~ Description for Blobs and Bandits #: lang/json/BOOK_from_json.py msgid "" "A roleplaying game set in the post-apocalypse, so you can pretend to survive" " the apocalypse while surviving the apocalypse." -msgstr "" +msgstr "一套桌上角色扮演遊戲, 設定在大災變之後, 讓你模擬在大災變中倖存並活下去。" #: lang/json/BOOK_from_json.py msgid "Battlehammer" msgid_plural "Battlehammers" -msgstr[0] "" +msgstr[0] "戰鎚" #. ~ Description for Battlehammer #: lang/json/BOOK_from_json.py msgid "" "A strategy game featuring a set of tiny figurines of fantasy creatures." -msgstr "" +msgstr "一款桌上戰棋遊戲, 內含一組奇幻生物的小小公仔。" #: lang/json/BOOK_from_json.py msgid "Battlehammer 20k" msgid_plural "Battlehammer 20ks" -msgstr[0] "" +msgstr[0] "戰鎚 20ks" #. ~ Description for Battlehammer 20k #: lang/json/BOOK_from_json.py msgid "" "A strategy game featuring a set of tiny figurines of space aliens and " "grotesque space marines." -msgstr "" +msgstr "一款桌上戰棋遊戲, 內含一組外星人和異空間海軍陸戰隊員的小小公仔。" #: lang/json/BOOK_from_json.py msgid "Settlers of the Ranch" msgid_plural "Settlers of the Ranchs" -msgstr[0] "" +msgstr[0] "牧場的定居者" #. ~ Description for Settlers of the Ranch #: lang/json/BOOK_from_json.py msgid "" "A strategy game where players build settlements and trade for supplies." -msgstr "一個戰略遊戲, 讓玩家們各自建設拓荒營地並交易各種補給品。" +msgstr "一個戰略遊戲, 讓玩家們各自建造拓荒營地並交易各種補給品。" #: lang/json/BOOK_from_json.py msgid "Warships" msgid_plural "Warshipss" -msgstr[0] "" +msgstr[0] "軍艦" #. ~ Description for Warships #: lang/json/BOOK_from_json.py msgid "" "A game where players try to guess where the opponent placed their ships on " "the board." -msgstr "" +msgstr "玩家互猜對手將軍艦放在棋盤上位置的遊戲。" #: lang/json/BOOK_from_json.py msgid "Murder Mystery" msgid_plural "Murder Mysterys" -msgstr[0] "" +msgstr[0] "神秘謀殺" #. ~ Description for Murder Mystery #: lang/json/BOOK_from_json.py msgid "A game where players try to figure out who murdered the butler." -msgstr "" +msgstr "玩家試圖找出是誰謀殺了管家的遊戲。" #: lang/json/BOOK_from_json.py msgid "The Weapons of Asgard" @@ -15640,24 +15809,24 @@ msgstr "這本書在討論如何創造北歐神祇的武器複製品, 例如大 #: lang/json/BOOK_from_json.py msgid "Hacking Robots for Fun & Profit" msgid_plural "Hacking Robots for Fun & Profit" -msgstr[0] "" +msgstr[0] "駭入機器人: 樂趣與利益" #. ~ Description for Hacking Robots for Fun & Profit #: lang/json/BOOK_from_json.py msgid "" "A book on illegaly obtaining, reprogramming, and modifying robots. It has " "lots of helpful step-by-step guides and example blueprints." -msgstr "" +msgstr "一本關於非法獲取, 重新編程和修改機器人的書。它有許多有用的步驟指南和範例藍圖。" #: lang/json/BOOK_from_json.py msgid "Popular Robotics" msgid_plural "Popular Robotics" -msgstr[0] "" +msgstr[0] "熱門機器人" #. ~ Description for Popular Robotics #: lang/json/BOOK_from_json.py msgid "A magazine about building and altering your own robots." -msgstr "" +msgstr "一本介紹如何組建和改造自己的機器人的雜誌。" #: lang/json/BOOK_from_json.py msgid "Artillery and Field Gunnery" @@ -15709,7 +15878,7 @@ msgstr "皮革袋" msgid "" "The raw skin of an animal, quickly turned into a makeshift bag for storage." " It will still rot, and needs to be cured and tanned." -msgstr "用動物的生皮革快速製作成的臨時儲物袋。它仍會腐爛, 需要進一步加工和鞣製。" +msgstr "用動物的生皮革快速製作成的臨時儲物袋。它仍會腐敗, 需要進一步加工和鞣製。" #: lang/json/COMESTIBLE_from_json.py msgid "tainted hide bag" @@ -15720,52 +15889,52 @@ msgstr "鞣製皮革袋" msgid "" "The raw skin of a monster, quickly turned into a makeshift bag for storage." " It will still rot, and needs to be cured and tanned." -msgstr "用怪物的生皮革快速製作成的臨時儲物袋。它仍會腐爛, 需要進一步加工和鞣製。" +msgstr "用怪物的生皮革快速製作成的臨時儲物袋。它仍會腐敗, 需要進一步加工和鞣製。" #: lang/json/COMESTIBLE_from_json.py msgid "bird litter" -msgstr "" +msgstr "禽類排泄物" #. ~ Description for bird litter #: lang/json/COMESTIBLE_from_json.py msgid "Bird dropping, feathers, and soiled bits of rubbish." -msgstr "" +msgstr "鳥糞、羽毛和髒污的垃圾。" #: lang/json/COMESTIBLE_from_json.py msgid "cow pie" -msgstr "" +msgstr "牛糞" #. ~ Description for cow pie #: lang/json/COMESTIBLE_from_json.py msgid "A fresh cow pie, could probably be used to make some great fertilizer." -msgstr "" +msgstr "一坨新鮮的牛糞, 不只可用來插鮮花, 還可用來製作一些很好的肥料。" #: lang/json/COMESTIBLE_from_json.py msgid "dog dung" -msgstr "" +msgstr "狗屎" #. ~ Description for dog dung #: lang/json/COMESTIBLE_from_json.py msgid "Droppings from a canine." -msgstr "" +msgstr "來自犬類的糞便。" #: lang/json/COMESTIBLE_from_json.py msgid "manure" -msgstr "" +msgstr "糞" #. ~ Description for manure #: lang/json/COMESTIBLE_from_json.py msgid "Common manure, could probably be used to make some great fertilizer." -msgstr "" +msgstr "一般糞便, 可用來製作一些肥料。" #: lang/json/COMESTIBLE_from_json.py msgid "roach dirt" -msgstr "" +msgstr "蟑螂排泄物" #. ~ Description for roach dirt #: lang/json/COMESTIBLE_from_json.py msgid "Large black pellets of rotting material." -msgstr "" +msgstr "大塊黑色顆粒的腐爛物質。" #: lang/json/COMESTIBLE_from_json.py msgid "bleach" @@ -15902,14 +16071,14 @@ msgstr "來自下水道的混濁液體, 帶有可怕的惡臭。" #: lang/json/COMESTIBLE_from_json.py msgid "lye" msgid_plural "lye" -msgstr[0] "" +msgstr[0] "鹼液" #. ~ Description for lye #: lang/json/COMESTIBLE_from_json.py msgid "" "This is a liquid form of sodium hydroxide. It is highly corrosive, handle " "with care." -msgstr "" +msgstr "這是液態氫氧化鈉。它具有很強的腐蝕性, 小心輕放。" #: lang/json/COMESTIBLE_from_json.py msgid "diet pill" @@ -15920,7 +16089,7 @@ msgstr "減肥藥丸" msgid "" "Not very nutritious. Warning: contains calories, unsuitable for " "breatharians." -msgstr "不是很有營養。警告: 含有卡路里, 不適合吃空氣存活的人。" +msgstr "不是很有營養。警告: 含有熱量, 不適合吃空氣存活的人。" #: lang/json/COMESTIBLE_from_json.py msgid "orange juice" @@ -16473,7 +16642,7 @@ msgstr[0] "啤酒" #: lang/json/COMESTIBLE_from_json.py msgid "" "Best served cold, in a glass, and with a lime - but you're not that lucky." -msgstr "最佳飲用條件: 冰冷、玻璃杯、檸檬 -但你沒那麼幸運。" +msgstr "最好冰鎮後倒在玻璃杯, 再加上一片檸檬… 但你沒那麼幸運。" #: lang/json/COMESTIBLE_from_json.py msgid "spiced mead" @@ -16542,7 +16711,7 @@ msgstr[0] "皮爾森啤酒" msgid "" "A pilsner imported from Europe. Best served cold, in a glass - but you're " "not that lucky." -msgstr "從歐洲進口的皮爾森啤酒啤酒。最好冰鎮後倒在玻璃杯 -但你沒那麼幸運。" +msgstr "從歐洲進口的皮爾森啤酒啤酒。最好冰鎮後倒在玻璃杯… 但你沒那麼幸運。" #: lang/json/COMESTIBLE_from_json.py msgid "American pale ale" @@ -16554,7 +16723,7 @@ msgstr[0] "美國淡啤酒" msgid "" "A tasty craft beer. Best served cold, in a glass - but you're not that " "lucky." -msgstr "爽口的手工釀啤酒。最好冰鎮後倒在玻璃杯 -但你沒那麼幸運。" +msgstr "爽口的手工釀啤酒。最好冰鎮後倒在玻璃杯… 但你沒那麼幸運。" #: lang/json/COMESTIBLE_from_json.py msgid "India pale ale" @@ -16566,7 +16735,7 @@ msgstr[0] "印度淡啤酒" msgid "" "A very flavorful microbrewed beer. Best served cold, in a glass - but " "you're not that lucky." -msgstr "非常可口的少量釀造啤酒。最好冰鎮後倒在玻璃杯 -但你沒那麼幸運。" +msgstr "非常可口的少量釀造啤酒。最好冰鎮後倒在玻璃杯… 但你沒那麼幸運。" #: lang/json/COMESTIBLE_from_json.py msgid "stout" @@ -16910,7 +17079,7 @@ msgstr[0] "澱粉" msgid "" "Sticky, gooey carbohydrate paste extracted from plants. Spoils rather " "quickly if not prepared for storage." -msgstr "粘糊糊的碳水化合物糊, 從植物中萃取所得。沒作好存儲準備的話會迅速腐壞。" +msgstr "粘糊糊的碳水化合物糊, 從植物中萃取所得。沒作好存儲準備的話會迅速腐敗。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of dandelions" @@ -17011,7 +17180,7 @@ msgstr "黏液球" msgid "" "A little hunk of glop that fell off a blob monster. It doesn't seem " "hostile, but it does wiggle occasionally." -msgstr "從黏液怪身上掉下的黏液球。雖然它偶爾會抽動, 但看起來沒有敵意。" +msgstr "從黏球怪身上掉下的黏液球。雖然它偶爾會抽動, 但看起來沒有敵意。" #: lang/json/COMESTIBLE_from_json.py msgid "tainted veggie" @@ -17068,7 +17237,7 @@ msgstr "水煮的小型人類胃袋, 沒有別的… 看起來不太開胃。" #: lang/json/COMESTIBLE_from_json.py msgid "raw sausage" -msgstr "" +msgstr "生香腸" #. ~ Description for raw sausage #: lang/json/COMESTIBLE_from_json.py @@ -17082,7 +17251,7 @@ msgstr "香腸" #. ~ Description for sausage #: lang/json/COMESTIBLE_from_json.py msgid "A hefty sausage that has been cured and smoked for long term storage." -msgstr "" +msgstr "一條又大又重的香腸, 已經過醃製和煙燻, 可長期保存。" #: lang/json/COMESTIBLE_from_json.py msgid "uncooked hot dogs" @@ -17118,7 +17287,7 @@ msgstr[0] "煮熟的熱狗" msgid "" "Surprisingly, not made from dog. Cooked, this hot dog now tastes much " "better, but will spoil." -msgstr "令人驚訝的是, 這並不是用狗肉做的。加熱過讓這熱狗變好吃, 但是會腐壞。" +msgstr "令人驚訝的是, 這並不是用狗肉做的。加熱過讓這熱狗變好吃, 但是會腐敗。" #: lang/json/COMESTIBLE_from_json.py msgid "chili dogs" @@ -17161,7 +17330,7 @@ msgstr "煮熟的玉米熱狗" msgid "" "A heavily processed sausage, dipped in batter and deep fried. Cooked, this " "corn dog now tastes much better, but will spoil." -msgstr "一個重度加工過的肉腸, 裹了粉油炸過。加熱過讓這玉米狗變好吃, 但是會腐壞。" +msgstr "一個重度加工過的肉腸, 裹了粉油炸過。加熱過讓這玉米狗變好吃, 但是會腐敗。" #: lang/json/COMESTIBLE_from_json.py msgid "Mannwurst" @@ -17172,11 +17341,11 @@ msgstr "人肉香腸" msgid "" "A hefty long pork sausage that has been cured and smoked for long term " "storage. Very tasty, if you're in the market for human flesh." -msgstr "" +msgstr "一條又大又重的長條香腸, 已經過醃製和煙燻, 可長期保存。非常美味, 前提是你敢吃人肉。" #: lang/json/COMESTIBLE_from_json.py msgid "raw Mannwurst" -msgstr "" +msgstr "生人肉香腸" #. ~ Description for raw Mannwurst #: lang/json/COMESTIBLE_from_json.py @@ -17370,7 +17539,7 @@ msgstr "含糖穀片" msgid "" "Sugary breakfast cereal with marshmallows. It takes you back to your " "childhood." -msgstr "" +msgstr "含糖的早餐麥片與棉花糖。它會讓你回想起童年。" #: lang/json/COMESTIBLE_from_json.py msgid "wheat cereal" @@ -17381,7 +17550,7 @@ msgstr "全麥穀片" msgid "" "Whole-grain wheat cereal. It's surprisingly good, and allegedly good for " "your heart." -msgstr "" +msgstr "全麥的小麥穀片。它出乎意料的營養, 聽說對你的心臟也相當不錯。" #: lang/json/COMESTIBLE_from_json.py msgid "corn cereal" @@ -17390,7 +17559,7 @@ msgstr "玉米穀片" #. ~ Description for corn cereal #: lang/json/COMESTIBLE_from_json.py msgid "Plain cornflake cereal. They're not that good, but it beats nothing." -msgstr "" +msgstr "一般的玉米片。不是很營養, 不過總比什麼都沒有來得好。" #: lang/json/COMESTIBLE_from_json.py msgid "toast-em" @@ -17444,7 +17613,7 @@ msgstr "一種能利用烤吐司機來烹調的水果點心。甚至還有裹糖 #. ~ Description for potato chips #: lang/json/COMESTIBLE_from_json.py msgid "Some plain, salted potato chips." -msgstr "" +msgstr "一般的鹽漬洋芋片。" #. ~ Description for potato chips #: lang/json/COMESTIBLE_from_json.py @@ -17454,14 +17623,14 @@ msgstr "喔, 你一定會喜歡這些洋芋片的!" #: lang/json/COMESTIBLE_from_json.py msgid "tortilla chips" msgid_plural "tortilla chips" -msgstr[0] "" +msgstr[0] "墨西哥玉米片" #. ~ Description for tortilla chips #: lang/json/COMESTIBLE_from_json.py msgid "" "Salted chips made from corn tortillas, could really use some cheese, maybe " "some beef." -msgstr "" +msgstr "用墨西哥玉米餅製成的鹽漬玉米片, 搭配奶酪、牛肉會更美味。" #: lang/json/COMESTIBLE_from_json.py msgid "nachos with cheese" @@ -17473,7 +17642,7 @@ msgstr[0] "起司玉米片" msgid "" "Salted chips made from corn tortillas, now with cheese. Could stand to have" " some meat." -msgstr "" +msgstr "用墨西哥玉米餅製成的鹽漬玉米片, 搭配著奶酪。如果有些肉也不錯。" #: lang/json/COMESTIBLE_from_json.py msgid "nachos with meat" @@ -17485,7 +17654,7 @@ msgstr[0] "加肉玉米片" msgid "" "Salted chips made from corn tortillas, now with meat. Could probably use " "some cheese, though." -msgstr "" +msgstr "用墨西哥玉米餅製成的鹽漬玉米片, 搭配著肉。如果有奶酪會更美味。" #: lang/json/COMESTIBLE_from_json.py msgid "niño nachos" @@ -17497,7 +17666,7 @@ msgstr[0] "加人肉玉米片" msgid "" "Salted chips made from corn tortillas, with human flesh. Some cheese might " "make it even better." -msgstr "" +msgstr "用墨西哥玉米餅製成的鹽漬玉米片, 搭配著人肉。如果有奶酪的話會更美味。" #: lang/json/COMESTIBLE_from_json.py msgid "nachos with meat and cheese" @@ -17509,7 +17678,7 @@ msgstr[0] "肉起司玉米片" msgid "" "Salted chips made from corn tortillas with ground meat and smothered in " "cheese. Delicious." -msgstr "" +msgstr "用墨西哥玉米餅製成的鹽漬玉米片, 搭配了奶酪與肉。真美味。" #: lang/json/COMESTIBLE_from_json.py msgid "niño nachos with cheese" @@ -17521,7 +17690,7 @@ msgstr[0] "人肉起司玉米片" msgid "" "Salted chips made from corn tortillas with human flesh and smothered in " "cheese. Delicious." -msgstr "" +msgstr "用墨西哥玉米餅製成的鹽漬玉米片, 搭配了奶酪和人肉。真美味。" #: lang/json/COMESTIBLE_from_json.py msgid "popcorn kernels" @@ -17626,7 +17795,7 @@ msgstr "肉凍" msgid "" "A dish in which meat or fish is set into a gelatin made from a meat or " "vegetable stock." -msgstr "" +msgstr "將肉或魚放入由肉類或蔬菜原料製成的明膠中的菜餚。" #: lang/json/COMESTIBLE_from_json.py msgid "vegetable aspic" @@ -17636,7 +17805,7 @@ msgstr "蔬菜肉凍" #: lang/json/COMESTIBLE_from_json.py msgid "" "A dish in which vegetables are set into a gelatin made from a plant stock." -msgstr "" +msgstr "將蔬菜放入由植物原料製成的明膠中的菜餚。" #: lang/json/COMESTIBLE_from_json.py msgid "amoral aspic" @@ -17647,7 +17816,7 @@ msgstr "非德肉凍" msgid "" "A dish in which human meat has been set into a gelatin made from human " "bones. Murderously delicious - if you're into that sort of thing." -msgstr "一盤果凍狀的肉, 將人肉湯加上人骨以明膠凝固而成。好吃到想殺人 - 假如你喜好比較特殊的話。" +msgstr "一盤果凍狀的肉, 將人肉湯加上人骨以明膠凝固而成。好吃到想殺人… 假如你喜好比較特殊的話。" #: lang/json/COMESTIBLE_from_json.py msgid "cracklins" @@ -17675,14 +17844,14 @@ msgstr "將脂肪和蛋白質混合制作的一種營養豐富的高熱量食物 #: lang/json/COMESTIBLE_from_json.py msgid "prepper pemmican" -msgstr "" +msgstr "末日準備者乾肉餅" #. ~ Description for prepper pemmican #: lang/json/COMESTIBLE_from_json.py msgid "" "A concentrated mixture of fat and protein used as a nutritious high-energy " "food. Composed of tallow, edible plants, and an unfortunate prepper." -msgstr "" +msgstr "將脂肪和蛋白質混合制作的一種營養豐富的高熱量食物。材料包含了: 脂肪、蔬菜和不幸的末日準備者。" #: lang/json/COMESTIBLE_from_json.py msgid "vegetable sandwich" @@ -17791,7 +17960,7 @@ msgstr[0] "奶油花生糖" #. ~ Description for peanut butter candy #: lang/json/COMESTIBLE_from_json.py msgid "A handful of peanut butter cups... your favorite!" -msgstr "一把奶油花生糖...你的最愛!" +msgstr "一把奶油花生糖… 你的最愛!" #: lang/json/COMESTIBLE_from_json.py msgid "chocolate candy" @@ -17801,7 +17970,7 @@ msgstr[0] "巧克力糖" #. ~ Description for chocolate candy #: lang/json/COMESTIBLE_from_json.py msgid "A handful of colorful chocolate filled candies." -msgstr "" +msgstr "一把五顏六色的巧克力夾心糖。" #: lang/json/COMESTIBLE_from_json.py msgid "chewy candy" @@ -17811,7 +17980,7 @@ msgstr[0] "軟糖" #. ~ Description for chewy candy #: lang/json/COMESTIBLE_from_json.py msgid "A handful of colorful fruit-flavored chewy candy." -msgstr "" +msgstr "一把五顏六色的水果軟糖。" #: lang/json/COMESTIBLE_from_json.py msgid "powder candy sticks" @@ -17856,7 +18025,7 @@ msgstr[0] "甜香腸" #. ~ Description for sweet sausage #: lang/json/COMESTIBLE_from_json.py msgid "A sweet and delicious sausage. Better eat it fresh." -msgstr "" +msgstr "香甜可口的香腸。最好趁新鮮時享用。" #: lang/json/COMESTIBLE_from_json.py msgid "mushroom" @@ -18162,58 +18331,58 @@ msgstr "從松果裡剝出的香脆松子。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of shelled pistachios" msgid_plural "handful of shelled pistachios" -msgstr[0] "" +msgstr[0] "去殼開心果" #. ~ Description for handful of shelled pistachios #: lang/json/COMESTIBLE_from_json.py msgid "" "A handful of nuts from a pistachio tree, their shells have been removed." -msgstr "" +msgstr "一把從阿月渾子樹摘下的的堅果, 已經去殼。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of roasted pistachios" msgid_plural "handfuls of roasted pistachios" -msgstr[0] "" +msgstr[0] "烘烤開心果" #. ~ Description for handful of roasted pistachios #: lang/json/COMESTIBLE_from_json.py msgid "A handful of roasted nuts from an pistachio tree." -msgstr "" +msgstr "一把從阿月渾子樹摘下的的堅果, 已經烤過。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of shelled almonds" msgid_plural "handful of shelled almonds" -msgstr[0] "" +msgstr[0] "去殼杏仁" #. ~ Description for handful of shelled almonds #: lang/json/COMESTIBLE_from_json.py msgid "A handful of nuts from an almond tree, their shells have been removed." -msgstr "" +msgstr "一把從杏仁樹摘下的堅果, 已經去殼。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of roasted almonds" msgid_plural "handfuls of roasted almonds" -msgstr[0] "" +msgstr[0] "烘烤杏仁" #. ~ Description for handful of roasted almonds #: lang/json/COMESTIBLE_from_json.py msgid "A handful of roasted nuts from an almond tree." -msgstr "" +msgstr "一把從杏仁樹摘下的的堅果, 已經烤過。" #: lang/json/COMESTIBLE_from_json.py msgid "cashews" msgid_plural "cashews" -msgstr[0] "" +msgstr[0] "腰果" #. ~ Description for cashews #: lang/json/COMESTIBLE_from_json.py msgid "A handful of salty cashews." -msgstr "" +msgstr "一把加鹽腰果。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of shelled pecans" msgid_plural "handful of shelled pecans" -msgstr[0] "" +msgstr[0] "去殼胡桃" #. ~ Description for handful of shelled pecans #: lang/json/COMESTIBLE_from_json.py @@ -18225,12 +18394,12 @@ msgstr "一把胡桃堅果, 是山核桃的亞種。已經去殼。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of roasted pecans" msgid_plural "handfuls of roasted pecans" -msgstr[0] "" +msgstr[0] "烘烤胡桃" #. ~ Description for handful of roasted pecans #: lang/json/COMESTIBLE_from_json.py msgid "A handful of roasted nuts from a pecan tree." -msgstr "" +msgstr "一把從胡桃樹摘下的的堅果, 已經烤過。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of shelled peanuts" @@ -18245,88 +18414,88 @@ msgstr "鹽漬的脫殼花生。" #: lang/json/COMESTIBLE_from_json.py msgid "beech nuts" msgid_plural "beech nuts" -msgstr[0] "" +msgstr[0] "山毛櫸堅果" #. ~ Description for beech nuts #: lang/json/COMESTIBLE_from_json.py msgid "Hard pointy nuts from a beech tree." -msgstr "" +msgstr "來自山毛櫸又硬又尖的果實。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of shelled walnuts" msgid_plural "handfuls of shelled walnuts" -msgstr[0] "" +msgstr[0] "去殼核桃" #. ~ Description for handful of shelled walnuts #: lang/json/COMESTIBLE_from_json.py msgid "" "A handful of raw hard nuts from a walnut tree, their shells have been " "removed." -msgstr "" +msgstr "一把從核桃樹摘下的硬堅果, 已經去殼。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of roasted walnuts" msgid_plural "handfuls of roasted walnuts" -msgstr[0] "" +msgstr[0] "烘烤核桃" #. ~ Description for handful of roasted walnuts #: lang/json/COMESTIBLE_from_json.py msgid "A handful of roasted nuts from a walnut tree." -msgstr "" +msgstr "一把從核桃樹摘下的堅果, 已經烤過。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of shelled chestnuts" msgid_plural "handfuls of shelled chestnuts" -msgstr[0] "" +msgstr[0] "去殼栗子" #. ~ Description for handful of shelled chestnuts #: lang/json/COMESTIBLE_from_json.py msgid "" "A handful of raw hard nuts from a chestnut tree, their shells have been " "removed." -msgstr "" +msgstr "一把從栗樹摘下的硬堅果, 已經去殼。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of roasted chestnuts" msgid_plural "handfuls of roasted chestnuts" -msgstr[0] "" +msgstr[0] "烘烤栗子" #. ~ Description for handful of roasted chestnuts #: lang/json/COMESTIBLE_from_json.py msgid "A handful of roasted nuts from a chestnut tree." -msgstr "" +msgstr "一把從栗樹摘下的堅果, 已經烤過。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of roasted acorns" msgid_plural "handfuls of roasted acorns" -msgstr[0] "" +msgstr[0] "烘烤橡子" #. ~ Description for handful of roasted acorns #: lang/json/COMESTIBLE_from_json.py msgid "A handful of roasted nuts from a oak tree." -msgstr "" +msgstr "一把從橡樹摘下的的堅果, 已經烤過。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of hazelnuts" msgid_plural "handful of shelled hazelnuts" -msgstr[0] "" +msgstr[0] "去殼榛果" #. ~ Description for handful of hazelnuts #: lang/json/COMESTIBLE_from_json.py msgid "" "A handful of raw hard nuts from a hazelnut tree, their shells have been " "removed." -msgstr "" +msgstr "一把從榛樹摘下的硬堅果, 已經去殼。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of roasted hazelnuts" msgid_plural "handfuls of roasted hazelnuts" -msgstr[0] "" +msgstr[0] "烘烤榛果" #. ~ Description for handful of roasted hazelnuts #: lang/json/COMESTIBLE_from_json.py msgid "A handful of roasted nuts from a hazelnut tree." -msgstr "" +msgstr "一把從榛樹摘下的堅果, 已經烤過。" #: lang/json/COMESTIBLE_from_json.py msgid "handful of shelled hickory nuts" @@ -18389,7 +18558,7 @@ msgstr "甜菜" msgid "" "This fleshy root is ripe and flowing with sugars; just takes some processing" " to extract them." -msgstr "這塊根莖已經成熟且充滿糖分;稍做處理就能提取出糖。" +msgstr "這塊根莖已經成熟且充滿糖分, 稍做處理就能提取出糖。" #: lang/json/COMESTIBLE_from_json.py msgid "lettuce" @@ -18436,14 +18605,14 @@ msgstr "一個鼓鼓的果莢中塞著滿滿的棉花和種子, 用合適的工 #: lang/json/COMESTIBLE_from_json.py msgid "coffee pod" msgid_plural "coffee pods" -msgstr[0] "" +msgstr[0] "咖啡豆莢" #. ~ Description for coffee pod #: lang/json/COMESTIBLE_from_json.py msgid "" "A hard casing filled with coffee seeds ready for roasting. The seeds create" " a dark black, bitter, caffinated liquid not too much unlike coffee." -msgstr "" +msgstr "裝滿咖啡種子的硬殼已可烘烤。種子會產生深黑色、苦味、含咖啡因的液體, 不太像咖啡。" #: lang/json/COMESTIBLE_from_json.py msgid "broccoli" @@ -18484,7 +18653,7 @@ msgstr "蒜頭" msgid "" "A pungent garlic bulb. Popular as a seasoning for its strong flavor. Can " "be disassembled to cloves." -msgstr "" +msgstr "刺鼻的蒜頭。乾燥之後強勁的味道很受歡迎。可以拆解成蒜瓣。" #: lang/json/COMESTIBLE_from_json.py msgid "carrot" @@ -19021,7 +19190,7 @@ msgid "" "Humans might call this a Gray Delicious apple: large, gray, and smells even " "better than the Marloss. If they didn't reject it for its alien origins. " "But we know better." -msgstr "人們也許會稱它為美味灰蘋果--大、灰、聞起來甚至比馬洛斯果更好。如果他們不因為它是外星物種而拒絕食用的話, 我們會更好。" +msgstr "人們也許會稱它為美味灰蘋果: 大、灰、聞起來甚至比馬洛斯果更好。如果他們不因為它是外星物種而拒絕食用的話, 我們會更好。" #: lang/json/COMESTIBLE_from_json.py msgid "flour" @@ -19254,7 +19423,7 @@ msgstr[0] "甲殼粉" #: lang/json/COMESTIBLE_from_json.py msgid "" "This chitin powder can be used to craft fertilizer and some other things." -msgstr "" +msgstr "這些甲殼粉可用來製作肥料或者其他東西。" #: lang/json/COMESTIBLE_from_json.py msgid "wild herbs" @@ -19305,7 +19474,7 @@ msgstr "一把還帶殼的橡實, 松鼠很喜歡它們, 不過在這個狀態 #. ~ Description for handful of roasted acorns #: lang/json/COMESTIBLE_from_json.py msgid "A handful roasted nuts from an oak tree." -msgstr "" +msgstr "一把從橡樹摘下的的堅果, 已經烤過。" #: lang/json/COMESTIBLE_from_json.py msgid "cooked acorn meal" @@ -19748,7 +19917,7 @@ msgstr "輻照牛肉口糧" msgid "" "The irradiated beef main course from an MRE. Sterilized using radiation, so" " it's safe to eat. Exposed to the atmosphere, it has started to go bad." -msgstr "被輻射照過的牛肉軍用口糧, 能夠保存到近乎永遠。經過輻射消毒, 所以安心可食。一旦拆封後內容物將會開始腐爛。" +msgstr "被輻射照過的牛肉軍用口糧, 能夠保存到近乎永遠。經過輻射消毒, 所以安心可食。一旦拆封後內容物將會開始腐敗。" #: lang/json/COMESTIBLE_from_json.py msgid "irradiated vegetarian course" @@ -19760,7 +19929,7 @@ msgid "" "The irradiated vegetarian main course from an MRE. Sterilized using " "radiation, so it's safe to eat. Exposed to the atmosphere, it has started " "to go bad." -msgstr "被輻射照過的蔬菜軍用口糧, 能夠保存到近乎永遠。經過輻射消毒, 所以安心可食。一旦拆封後內容物將會開始腐爛。" +msgstr "被輻射照過的蔬菜軍用口糧, 能夠保存到近乎永遠。經過輻射消毒, 所以安心可食。一旦拆封後內容物將會開始腐敗。" #: lang/json/COMESTIBLE_from_json.py msgid "irradiated chicken course" @@ -19771,7 +19940,7 @@ msgstr "輻照雞肉口糧" msgid "" "The irradiated chicken main course from an MRE. Sterilized using radiation," " so it's safe to eat. Exposed to the atmosphere, it has started to go bad." -msgstr "被輻射照過的雞肉軍用口糧, 能夠保存到近乎永遠。經過輻射消毒, 所以安心可食。一旦拆封後內容物將會開始腐爛。" +msgstr "被輻射照過的雞肉軍用口糧, 能夠保存到近乎永遠。經過輻射消毒, 所以安心可食。一旦拆封後內容物將會開始腐敗。" #: lang/json/COMESTIBLE_from_json.py msgid "irradiated hot dog course" @@ -19783,7 +19952,7 @@ msgid "" "Nicknamed the 'Four Fingers of Death' by troops, this is probably the most " "disgusting thing you've ever eaten. Sterilized using radiation, so it's " "safe to eat. Exposed to the atmosphere, it has started to go bad." -msgstr "被部隊戲稱為 \"死神的四根手指\", 這東西大概是你吃過最噁心的東西了。經過輻射消毒, 所以安心可食。一旦拆封後內容物將會開始腐爛。" +msgstr "被部隊戲稱為 \"死神的四根手指\", 這東西大概是你吃過最噁心的東西了。經過輻射消毒, 所以安心可食。一旦拆封後內容物將會開始腐敗。" #: lang/json/COMESTIBLE_from_json.py msgid "irradiated ravioli course" @@ -19795,7 +19964,7 @@ msgid "" "The main course from a ravioli MRE, the sauce really helps with the taste. " "Sterilized using radiation, so it's safe to eat. Exposed to the atmosphere," " it has started to go bad." -msgstr "被輻射照過的餛飩軍用口糧, 能夠保存到近乎永遠。經過輻射消毒, 所以安心可食。一旦拆封後內容物將會開始腐爛。" +msgstr "被輻射照過的餛飩軍用口糧, 能夠保存到近乎永遠。經過輻射消毒, 所以安心可食。一旦拆封後內容物將會開始腐敗。" #: lang/json/COMESTIBLE_from_json.py msgid "tea leaf" @@ -19819,7 +19988,7 @@ msgstr[0] "咖啡粉" msgid "" "Ground coffee beans. You can boil it into a mediocre stimulant, or " "something better if you had an atomic coffee pot." -msgstr "磨碎的咖啡豆。如果你有一個原子咖啡壺, 可以把它煮成差強人意的興奮劑...或某種更好的東西。" +msgstr "磨碎的咖啡豆。如果你有一個原子咖啡壺, 可以把它煮成差強人意的興奮劑… 或某種更好的東西。" #: lang/json/COMESTIBLE_from_json.py msgid "powdered milk" @@ -19863,7 +20032,7 @@ msgstr "美味的巧克力蛋糕。裹滿了糖衣。滿滿的。" msgid "" "A cake coated in the thickest icing you've ever seen. Someone has written " "guff in quotation marks on it..." -msgstr "裹滿了你從沒看過的厚厚糖衣。有人在蛋糕上面寫了瘋話..." +msgstr "裹滿了你從沒看過的厚厚糖衣。有人在蛋糕上面寫了瘋話…" #: lang/json/COMESTIBLE_from_json.py msgid "canned meat" @@ -19995,7 +20164,7 @@ msgstr "千層麵" msgid "" "A very old type of pasta made with several layers of lasagne sheets " "alternated with cheese, sauces and meats." -msgstr "" +msgstr "傳統義大利麵, 將千層麵層層交疊, 再佐以奶酪、醬汁跟肉。" #: lang/json/COMESTIBLE_from_json.py msgid "Luigi lasagne" @@ -20006,7 +20175,7 @@ msgstr "人肉千層麵" msgid "" "A very old type of pasta made with several layers of lasagne sheets " "alternated with cheese, sauces and meats. Made better with human flesh." -msgstr "" +msgstr "傳統義大利麵, 將千層麵層層交疊, 再佐以奶酪、醬汁跟肉。用人肉來做的話更棒。" #: lang/json/COMESTIBLE_from_json.py msgid "mayonnaise" @@ -20080,7 +20249,7 @@ msgstr "仿製花生醬" #. ~ Description for imitation peanutbutter #: lang/json/COMESTIBLE_from_json.py msgid "A thick, nutty brown paste." -msgstr "" +msgstr "濃稠堅果味的棕色糊狀物。" #: lang/json/COMESTIBLE_from_json.py msgid "pickle" @@ -20154,7 +20323,7 @@ msgid "" "Strawberries left to ferment with a few other choice ingredients offer up a " "surprisingly palatable mixture; you barely even have to force yourself to " "drink it after the first few gulps." -msgstr "發酵過的草莓混合許多種配料合成的驚奇口感雞尾酒;你根本不用強迫自己就能自然的喝光光。" +msgstr "發酵過的草莓混合許多種配料合成的驚奇口感雞尾酒。你根本不用強迫自己就能自然的喝光光。" #: lang/json/COMESTIBLE_from_json.py msgid "boozeberry" @@ -20251,7 +20420,7 @@ msgstr "人肉漢堡" #, no-python-format msgid "" "This hamburger contains more than the FDA allowable 4% human flesh content." -msgstr "這個漢堡肉內含了遠遠超過了食品檢驗局規定的人肉容許含量4%。" +msgstr "這個漢堡肉內含了遠遠超過了食品檢驗局規定的人肉容許含量 4%。" #: lang/json/COMESTIBLE_from_json.py msgid "sloppy joe" @@ -20532,7 +20701,7 @@ msgstr[0] "葡萄" #. ~ Description for grape #: lang/json/COMESTIBLE_from_json.py msgid "A cluster of juicy grapes." -msgstr "" +msgstr "一串多汁的葡萄。" #: lang/json/COMESTIBLE_from_json.py msgid "irradiated grape" @@ -20615,7 +20784,7 @@ msgstr[0] "速食薯條" #. ~ Description for fast-food French fries #: lang/json/COMESTIBLE_from_json.py msgid "Fast-food fried potatoes. Somehow, they're still edible." -msgstr "" +msgstr "速食店的炸薯條。不知道為什麼還能吃。" #: lang/json/COMESTIBLE_from_json.py msgid "French fries" @@ -20635,7 +20804,7 @@ msgstr[0] "起司薯條" #. ~ Description for cheese fries #: lang/json/COMESTIBLE_from_json.py msgid "Fried potatoes with delicious cheese smothered on top." -msgstr "" +msgstr "油炸馬鈴薯。有著美味的起士淋在上面。" #: lang/json/COMESTIBLE_from_json.py msgid "onion ring" @@ -20644,7 +20813,7 @@ msgstr "洋蔥圈" #. ~ Description for onion ring #: lang/json/COMESTIBLE_from_json.py msgid "Battered and fried onions. Crunchy and delicious." -msgstr "" +msgstr "反復油炸的洋蔥圈。香脆可口。" #: lang/json/COMESTIBLE_from_json.py msgid "lemonade drink mix" @@ -20834,7 +21003,7 @@ msgstr[0] "薄荷餡餅" #. ~ Description for peppermint patty #: lang/json/COMESTIBLE_from_json.py msgid "A handful of soft chocolate-covered peppermint patties... yum!" -msgstr "" +msgstr "一把覆蓋巧克力的軟薄荷餡餅… 味道好極了!" #: lang/json/COMESTIBLE_from_json.py msgid "dehydrated meat" @@ -20915,7 +21084,7 @@ msgid "" "Dehydrated fruit flakes. With proper storage, this dried food will remain " "edible for an incredibly long time. They are useful for several cooking " "recipes." -msgstr "脫水過的水果。在合適的儲存下, 這個乾燥食物能夠保持長時間不壞。在不少食譜中都用得上。" +msgstr "脫水過的水果。在合適的儲存下, 這個乾燥食物能夠保持長時間不壞。能用於數種食譜。" #: lang/json/COMESTIBLE_from_json.py msgid "rehydrated fruit" @@ -21095,7 +21264,7 @@ msgstr "香煙糖" msgid "" "Candy sticks. Slightly more healthy than tobacco cigarettes, but with no " "possibility of addiction." -msgstr "做成香菸狀的糖果, 至少比煙草來的健康, 當然沒有成癮性。" +msgstr "做成香菸狀的糖果, 至少比菸草來的健康, 當然沒有成癮性。" #: lang/json/COMESTIBLE_from_json.py msgid "vegetable salad" @@ -21303,7 +21472,7 @@ msgstr "脫水污染肉乾" msgid "" "Pieces of poisonous meat that have been dried to prevent them from rotting " "away. It will still poison you if you eat this." -msgstr "一些受污染的肉, 為了讓它不腐爛已作好乾燥處理。如果你吃下它, 還是會中毒。" +msgstr "一些受污染的肉, 為了讓它不腐敗已作好乾燥處理。如果你吃下它, 還是會中毒。" #: lang/json/COMESTIBLE_from_json.py msgid "dehydrated tainted veggy" @@ -21315,7 +21484,7 @@ msgstr[0] "脫水污染蔬菜乾" msgid "" "Pieces of poisonous veggy that have been dried to prevent them from rotting " "away. It will still poison you if you eat this." -msgstr "一些受污染的蔬菜, 為了讓它不腐爛已作好乾燥處理。如果你吃下它, 還是會中毒。" +msgstr "一些受污染的蔬菜, 為了讓它不腐敗已作好乾燥處理。如果你吃下它, 還是會中毒。" #: lang/json/COMESTIBLE_from_json.py msgid "raw hide" @@ -21383,7 +21552,7 @@ msgstr[0] "番茄罐頭" #: lang/json/COMESTIBLE_from_json.py msgid "" "Canned tomato. A staple in many pantries, and useful for many recipes." -msgstr "番茄罐頭。茶水間必備的食物, 多種食譜都會用到。" +msgstr "番茄罐頭。茶水間必備的食物, 能用於許多食譜。" #: lang/json/COMESTIBLE_from_json.py msgid "sewer brew" @@ -21721,24 +21890,24 @@ msgstr "這種由可可、肉桂和辣椒配製成的微苦巧克力飲料, 能 #: lang/json/COMESTIBLE_from_json.py msgid "wasteland sausage" -msgstr "" +msgstr "廢土香腸" #. ~ Description for wasteland sausage #: lang/json/COMESTIBLE_from_json.py msgid "" "Lean sausage made from heavily salt-cured offal, with natural gut casing. " "Waste not, want not." -msgstr "" +msgstr "精瘦的香腸, 用天然腸衣與大量鹽漬的內臟所製成。勤儉節約, 吃穿不缺!" #: lang/json/COMESTIBLE_from_json.py msgid "raw wasteland sausage" -msgstr "" +msgstr "生廢土香腸" #. ~ Description for raw wasteland sausage #: lang/json/COMESTIBLE_from_json.py msgid "" "Lean raw sausage made from heavily salt-cured offal, ready to be smoked." -msgstr "" +msgstr "精瘦的生香腸, 用天然腸衣與大量鹽漬的內臟所製成。已經可以煙燻了。" #: lang/json/COMESTIBLE_from_json.py msgid "'special' brownie" @@ -21751,7 +21920,7 @@ msgstr "這絕對不是一般阿嬤的做法。" #: lang/json/COMESTIBLE_from_json.py msgid "putrid heart" -msgstr "" +msgstr "腐爛心臟" #. ~ Description for putrid heart #: lang/json/COMESTIBLE_from_json.py @@ -21762,10 +21931,12 @@ msgid "" "hands. After everything you've seen lately, you can't help but remember old" " sayings about eating the hearts of your enemies..." msgstr "" +"厚重的一團肉, 看似一顆哺乳動物的心臟, 藏在肋槽間, 接近你頭部的大小。它仍然充滿著… 呃… 管它是啥地從變種魔獸血液流過的東西, " +"在你的手中顯得很沉重。在你最近經歷的種種事情後, 你不禁想起關於吃掉敵人心臟的傳說…" #: lang/json/COMESTIBLE_from_json.py msgid "desiccated putrid heart" -msgstr "" +msgstr "乾燥的腐爛心臟" #. ~ Description for desiccated putrid heart #: lang/json/COMESTIBLE_from_json.py @@ -21773,7 +21944,7 @@ msgid "" "A huge strip of muscle - all that remains of a putrid heart that has been " "sliced open and drained of blood. It could be eaten if you're hungry, but " "looks *disgusting*." -msgstr "" +msgstr "一塊巨大的肌肉, 腐爛心臟的所有殘餘, 已被切開並排出血液。如果你餓的話就可以吃了它, 只是看起來有些 *噁心*。" #: lang/json/COMESTIBLE_from_json.py msgid "Spice" @@ -22180,35 +22351,35 @@ msgstr "由鳥生下的蛋, 很營養。" #: lang/json/COMESTIBLE_from_json.py msgid "chicken egg" -msgstr "" +msgstr "雞蛋" #: lang/json/COMESTIBLE_from_json.py msgid "grouse egg" -msgstr "" +msgstr "松雞蛋" #: lang/json/COMESTIBLE_from_json.py msgid "crow egg" -msgstr "" +msgstr "烏鴉蛋" #: lang/json/COMESTIBLE_from_json.py msgid "duck egg" -msgstr "" +msgstr "鴨蛋" #: lang/json/COMESTIBLE_from_json.py msgid "goose egg" -msgstr "" +msgstr "鵝蛋" #: lang/json/COMESTIBLE_from_json.py msgid "turkey egg" -msgstr "" +msgstr "火雞蛋" #: lang/json/COMESTIBLE_from_json.py msgid "pheasant egg" -msgstr "" +msgstr "雉雞蛋" #: lang/json/COMESTIBLE_from_json.py msgid "cockatrice egg" -msgstr "" +msgstr "雞蛇蛋" #: lang/json/COMESTIBLE_from_json.py msgid "reptile egg" @@ -22237,25 +22408,25 @@ msgstr "蜘蛛卵" #. ~ Description for spider egg #: lang/json/COMESTIBLE_from_json.py msgid "A fist-sized egg from a giant spider. Incredibly gross." -msgstr "" +msgstr "巨大蜘蛛下的蛋, 拳頭大小, 極度噁心。" #: lang/json/COMESTIBLE_from_json.py msgid "roach egg" -msgstr "" +msgstr "蟑螂卵" #. ~ Description for roach egg #: lang/json/COMESTIBLE_from_json.py msgid "A fist-sized egg from a giant roach. Incredibly gross." -msgstr "" +msgstr "巨大蟑螂下的蛋, 拳頭大小, 極度噁心。" #: lang/json/COMESTIBLE_from_json.py msgid "insect egg" -msgstr "" +msgstr "昆蟲卵" #. ~ Description for insect egg #: lang/json/COMESTIBLE_from_json.py msgid "A fist-sized egg from a locust." -msgstr "" +msgstr "蝗蟲下的卵, 拳頭大小。" #: lang/json/COMESTIBLE_from_json.py msgid "razorclaw roe" @@ -22268,36 +22439,36 @@ msgstr "一叢利爪怪的卵。大災變後的美味佳餚。" #: lang/json/COMESTIBLE_from_json.py msgid "roe" -msgstr "" +msgstr "魚子" #. ~ Description for roe #: lang/json/COMESTIBLE_from_json.py msgid "Common roe from an unknown fish." -msgstr "" +msgstr "未知魚類產的普通魚卵。" #: lang/json/COMESTIBLE_from_json.py msgid "milkshake" msgid_plural "milkshakes" -msgstr[0] "" +msgstr[0] "奶昔" #. ~ Description for milkshake #: lang/json/COMESTIBLE_from_json.py msgid "" "An all-natural cold beverage made with milk and sweeteners. Tastes great " "when frozen." -msgstr "" +msgstr "一種用牛奶和甜味劑製成的全天然冷飲。冷凍後味道極佳。" #: lang/json/COMESTIBLE_from_json.py msgid "fast food milkshake" msgid_plural "fast food milkshakes" -msgstr[0] "" +msgstr[0] "速食奶昔" #. ~ Description for fast food milkshake #: lang/json/COMESTIBLE_from_json.py msgid "" "A milkshake made by freezing a premade mix. Tastes better due to how much " "sugar is in it, but is bad for your health." -msgstr "" +msgstr "通過冷凍預製混合物製成的奶昔。加了越多糖會更好吃, 只是對你的健康有害。" #: lang/json/COMESTIBLE_from_json.py msgid "deluxe milkshake" @@ -22395,7 +22566,7 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "gelato" msgid_plural "gelato scoops" -msgstr[0] "" +msgstr[0] "冰淇淋勺" #. ~ Description for gelato #: lang/json/COMESTIBLE_from_json.py @@ -22488,7 +22659,7 @@ msgstr "繃帶" #. ~ Description for bandage #: lang/json/COMESTIBLE_from_json.py msgid "Simple cloth bandages. Used for healing small amounts of damage." -msgstr "簡單的布製繃帶。可用來治癒小創傷。" +msgstr "簡單的棉布繃帶。用來治療少量的傷害。" #: lang/json/COMESTIBLE_from_json.py msgid "makeshift bandage" @@ -22553,7 +22724,7 @@ msgstr "無牌的咖啡錠, 效果強大。想要通宵達旦工作的利器, #: lang/json/COMESTIBLE_from_json.py msgid "chewing tobacco" -msgstr "口嚼煙" +msgstr "口嚼菸" #. ~ Description for chewing tobacco #: lang/json/COMESTIBLE_from_json.py @@ -22561,7 +22732,7 @@ msgid "" "Mint flavored chewing tobacco. While still absolutely terrible for your " "health, it was once a favorite amongst baseball players, cowboys, and other " "macho types." -msgstr "薄荷味的嚼煙。同時對你的健康仍是絕對不佳的, 它曾經在棒球選手, 牛仔, 和其他作為展現男子氣概的用途受到歡迎。" +msgstr "薄荷味的嚼菸。同時對你的健康仍是絕對不佳的, 它曾經在棒球選手, 牛仔, 和其他作為展現男子氣概的用途受到歡迎。" #: lang/json/COMESTIBLE_from_json.py msgid "hydrogen peroxide" @@ -22587,7 +22758,7 @@ msgid "" "A mixture of dried tobacco leaf, pesticides, and chemical additives, rolled " "into a filtered paper tube. Stimulates mental acuity and reduces appetite." " Highly addictive and hazardous to health." -msgstr "乾燥的煙草葉, 農藥和化學添加劑的混和物, 並捲製成一個過濾紙管。會刺激心智敏感度, 並降低食慾。高度易上癮並且危害健康。" +msgstr "乾燥的菸草葉, 農藥和化學添加劑的混和物, 並捲製成一個過濾紙管。會刺激心智敏感度, 並降低食慾。高度易上癮並且危害健康。" #: lang/json/COMESTIBLE_from_json.py lang/json/GENERIC_from_json.py msgid "cigar" @@ -22696,9 +22867,7 @@ msgid "" "Daytime cold and flu medication. Non-drowsy formula. Will suppress " "coughing, aching, headaches and runny noses, but you'll still need lots of " "fluids and rest." -msgstr "" -"適合白天服用的感冒藥, 治療感冒與流感。不嗜睡的配方, 能抑制咳嗽、喉嚨痛、頭痛、流鼻水, 但你仍然需要補充大量的液體和休息。\"一頂愛配溫開水, 15" -" 分鐘咳嗽 OUT! \"...... 好吧! 這只是廣告詞, 不一定是真的。" +msgstr "適合白天服用的感冒藥, 治療感冒與流感。不嗜睡的配方, 能抑制咳嗽、喉嚨痛、頭痛、流鼻水, 但你仍然需要補充大量的液體和休息。" #: lang/json/COMESTIBLE_from_json.py msgid "disinfectant" @@ -22711,13 +22880,13 @@ msgstr "強力的消毒劑, 能夠清潔傷口。" #: lang/json/COMESTIBLE_from_json.py msgid "makeshift disinfectant" -msgstr "" +msgstr "粗製消毒劑" #. ~ Description for makeshift disinfectant #: lang/json/COMESTIBLE_from_json.py msgid "" "Makeshift disinfectant made from ethanol. Can be used to disinfect a wound." -msgstr "" +msgstr "由乙醇製成的粗製消毒劑。可用於消毒傷口。" #: lang/json/COMESTIBLE_from_json.py src/addiction.cpp msgid "diazepam" @@ -23061,7 +23230,7 @@ msgstr "從麝香草中提取出來的油, 它可以作為有輕微刺激的消 #: lang/json/COMESTIBLE_from_json.py msgid "rolling tobacco" -msgstr "手卷菸草" +msgstr "手捲菸草" #. ~ Use action activation_message for rolling tobacco. #: lang/json/COMESTIBLE_from_json.py @@ -23144,9 +23313,9 @@ msgstr "骨粉片" #. ~ Description for bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Tastes horribly and is " +"Homemade calcium supplement made out of bone meal. Tastes horrible and is " "hard to swallow but it does its job." -msgstr "由骨粉製成的自製鈣質補充劑。味道可怕且難以吞嚥, 但它確實有效。" +msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "flavored bone meal tablet" @@ -23155,10 +23324,10 @@ msgstr "調味骨粉片" #. ~ Description for flavored bone meal tablet #: lang/json/COMESTIBLE_from_json.py msgid "" -"Homemade calcium supplement made out of bone meal. Due to some sweetness " -"mixed in to counteract the powdery texture and the taste of ash, almost as " -"palatable as the pre-cataclysm tablets." -msgstr "由骨粉製成的自製鈣質補充劑。加入了一些甜味以抵銷粉狀的口感和灰般的味道, 吃起來幾乎和災變前的藥片一樣可口。" +"Homemade calcium supplement made out of bone meal. Due to some sweetness " +"mixed in to counteract the powdery texture and the taste of ash, it's almost" +" as palatable as the pre-cataclysm tablets." +msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "gummy vitamin" @@ -23238,24 +23407,24 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "disinfectant soaked rag" msgid_plural "disinfectant soaked rags" -msgstr[0] "" +msgstr[0] "消毒過的布條" #. ~ Description for disinfectant soaked rag #: lang/json/COMESTIBLE_from_json.py msgid "A rag soaked in disinfectant." -msgstr "" +msgstr "一塊布條用消毒劑浸泡過。" #: lang/json/COMESTIBLE_from_json.py msgid "disinfectant soaked cotton balls" msgid_plural "disinfectant soaked cotton balls" -msgstr[0] "" +msgstr[0] "消毒過的棉球" #. ~ Description for disinfectant soaked cotton balls #: lang/json/COMESTIBLE_from_json.py msgid "" "Fluffy balls of clean white cotton. Now soaked with disinfectant, they are " "useful to disinfect a wound." -msgstr "" +msgstr "乾淨潔白的蓬鬆棉球。用消毒劑浸泡過, 傷口消毒時十分有用。" #: lang/json/COMESTIBLE_from_json.py msgid "Atreyupan" @@ -23303,7 +23472,7 @@ msgstr "" msgid "" "A super-concentrated mutagen. You need a syringe to inject it... if you " "really want to?" -msgstr "一個超濃縮的突變劑。你需要一個針筒才能注射......如果你真的想要?" +msgstr "一個超濃縮的突變劑。你需要一個針筒才能注射… 如果你真的想這麼做?" #: lang/json/COMESTIBLE_from_json.py msgid "mutagenic serum" @@ -23325,7 +23494,7 @@ msgstr "獸形血清" msgid "" "A super-concentrated mutagen strongly resembling blood. You need a syringe " "to inject it... if you really want to?" -msgstr "一個由血液提煉的超濃縮突變劑。你需要一個針筒才能注射......如果你真的想要?" +msgstr "一個非常像是血液的超濃縮突變劑。你需要一個針筒才能注射… 如果你真的想這麼做?" #: lang/json/COMESTIBLE_from_json.py msgid "bird serum" @@ -23336,7 +23505,7 @@ msgstr "鳥形血清" msgid "" "A super-concentrated mutagen the color of the pre-cataclysmic skies. You " "need a syringe to inject it... if you really want to?" -msgstr "一個有著末日前天空色的超濃縮突變劑。你需要一個針筒才能注射......如果你真的想要?" +msgstr "一個有著末日前天空色的超濃縮突變劑。你需要一個針筒才能注射… 如果你真的想這麼做?" #: lang/json/COMESTIBLE_from_json.py msgid "cattle serum" @@ -23347,7 +23516,7 @@ msgstr "牛形血清" msgid "" "A super-concentrated mutagen the color of grass. You need a syringe to " "inject it... if you really want to?" -msgstr "一個草綠色的超濃縮突變劑。你需要一個針筒才能注射......如果你真的想要?" +msgstr "一個草綠色的超濃縮突變劑。你需要一個針筒才能注射… 如果你真的想這麼做?" #: lang/json/COMESTIBLE_from_json.py msgid "cephalopod serum" @@ -23358,7 +23527,7 @@ msgstr "頭足類血清" msgid "" "A (rather bright) green super-concentrated mutagen. You need a syringe to " "inject it... if you really want to?" -msgstr "一個亮綠色的超濃縮突變劑。你需要一個針筒才能注射......如果你真的想要?" +msgstr "一個亮綠色的超濃縮突變劑。你需要一個針筒才能注射… 如果你真的想這麼做?" #: lang/json/COMESTIBLE_from_json.py msgid "chimera serum" @@ -23369,7 +23538,7 @@ msgstr "嵌合體血清" msgid "" "A super-concentrated blood-red mutagen. You need a syringe to inject it..." " if you really want to?" -msgstr "一個血紅色的超濃縮突變劑。你需要一個針筒才能注射......如果你真的想要?" +msgstr "一個血紅色的超濃縮突變劑。你需要一個針筒才能注射… 如果你真的想這麼做?" #: lang/json/COMESTIBLE_from_json.py msgid "elf-a serum" @@ -23380,7 +23549,7 @@ msgstr "妖精血清" msgid "" "A super-concentrated mutagen that reminds you of the forests. You need a " "syringe to inject it... if you really want to?" -msgstr "一個超濃縮突變劑, 顏色讓你想到森林。你需要一個針筒才能注射......如果你真的想要?" +msgstr "一個超濃縮突變劑, 顏色讓你想到森林。你需要一個針筒才能注射… 如果你真的想這麼做?" #: lang/json/COMESTIBLE_from_json.py msgid "feline serum" @@ -23395,7 +23564,7 @@ msgstr "魚形血清" msgid "" "A super-concentrated mutagen the color of the ocean, with white foam at the " "top. You need a syringe to inject it... if you really want to?" -msgstr "" +msgstr "一個海洋色的超濃縮突變劑。你需要一個針筒才能注射… 如果你真的想這麼做?" #: lang/json/COMESTIBLE_from_json.py msgid "insect serum" @@ -23429,7 +23598,7 @@ msgstr "植物血清" msgid "" "A super-concentrated mutagen strongly resembling tree sap. You need a " "syringe to inject it... if you really want to?" -msgstr "一個由樹汁提煉的超濃縮突變劑。你需要一個針筒才能注射......如果你真的想要?" +msgstr "一個非常像是樹汁的超濃縮突變劑。你需要一個針筒才能注射… 如果你真的想這麼做?" #: lang/json/COMESTIBLE_from_json.py msgid "raptor serum" @@ -23449,7 +23618,7 @@ msgid "" "A super-concentrated mutagen that looks very much like the goo or whatever-" "it-is in the zombies' eyes. You need a syringe to inject it... if you " "really want to?" -msgstr "一個看起來像是從黏液或是殭屍眼珠提煉的超濃縮突變劑。你需要一個針筒才能注射......如果你真的想要?" +msgstr "一個看起來像是黏液或是殭屍眼珠裡的物質的超濃縮突變劑。你需要一個針筒才能注射… 如果你真的想這麼做?" #: lang/json/COMESTIBLE_from_json.py msgid "spider serum" @@ -23472,7 +23641,7 @@ msgstr "" msgid "" "A super-concentrated mutagen strongly resembling liquefied metal. You need " "a syringe to inject it... if you really want to?" -msgstr "" +msgstr "一個非常像是液態金屬的超濃縮突變劑。你需要一個針筒才能注射… 如果你真的想這麼做?" #: lang/json/COMESTIBLE_from_json.py msgid "mutagen" @@ -23480,14 +23649,14 @@ msgstr "突變劑" #: lang/json/COMESTIBLE_from_json.py msgid "congealed blood" -msgstr "" +msgstr "凝結的血液" #. ~ Description for congealed blood #: lang/json/COMESTIBLE_from_json.py msgid "" "A thick, soupy red liquid. It looks and smells disgusting, and seems to " "bubble with an intelligence of its own..." -msgstr "" +msgstr "一個濃密、黏稠的紅色液體。看起來和聞起來都很噁心, 而且彷彿有自己的智慧般地冒著泡…" #: lang/json/COMESTIBLE_from_json.py msgid "alpha mutagen" @@ -23590,7 +23759,7 @@ msgstr "淨化劑" msgid "" "A rare stem-cell treatment that causes mutations and other genetic defects " "to fade away." -msgstr "利用幹細胞療法, 讓突變與其他遺傳性疾病消失。" +msgstr "一種罕見的幹細胞治療劑, 可以使突變與其他遺傳性疾病逐漸消失。" #: lang/json/COMESTIBLE_from_json.py msgid "purifier serum" @@ -23604,7 +23773,7 @@ msgstr "一個超濃縮的幹細胞治療劑。你需要一個針筒才能注射 #: lang/json/COMESTIBLE_from_json.py msgid "purifier smart shot" -msgstr "" +msgstr "智慧型淨化血清" #. ~ Description for purifier smart shot #: lang/json/COMESTIBLE_from_json.py @@ -23612,7 +23781,7 @@ msgid "" "An experimental stem cell treatment, offering limited control over which " "mutations are purified. The liquid sloshes strangely inside of this " "syringe." -msgstr "" +msgstr "一個實驗性的幹細胞治療劑, 對要淨化的突變提供受限的控制能力。注射器裡的液體怪異地晃動著。" #: lang/json/COMESTIBLE_from_json.py msgid "soylent green drink" @@ -23705,14 +23874,14 @@ msgid "" "fruit. It has been supplemented with extra vitamins and minerals" msgstr "由濃厚的蛋白質糊與營養水果做成的風味飲料。還進一步添加了額外的維他命和礦物質。" -#: lang/json/COMESTIBLE_from_json.py src/mission_companion.cpp +#: lang/json/COMESTIBLE_from_json.py src/faction_camp.cpp msgid "seeds" msgid_plural "seeds" -msgstr[0] "" +msgstr[0] "種子" #: lang/json/COMESTIBLE_from_json.py msgid "fruit seeds" -msgstr "" +msgstr "水果種子" #: lang/json/COMESTIBLE_from_json.py msgid "mushroom spores" @@ -23727,7 +23896,7 @@ msgstr "一些蘑菇的孢子, 你或許可以種一些試試。" #: lang/json/COMESTIBLE_from_json.py msgid "hop rhizomes" msgid_plural "hop rhizomes" -msgstr[0] "" +msgstr[0] "啤酒花根莖" #. ~ Description for hop rhizomes #: lang/json/COMESTIBLE_from_json.py @@ -23821,12 +23990,12 @@ msgstr "一些草莓的種子。" #: lang/json/COMESTIBLE_from_json.py msgid "grape seeds" msgid_plural "grape seeds" -msgstr[0] "" +msgstr[0] "葡萄種子" #. ~ Description for grape seeds #: lang/json/COMESTIBLE_from_json.py msgid "Some grape seeds." -msgstr "" +msgstr "一些葡萄種子。" #: lang/json/COMESTIBLE_from_json.py msgid "rose seeds" @@ -23846,16 +24015,16 @@ msgstr[0] "薔薇" #: lang/json/COMESTIBLE_from_json.py msgid "tobacco seeds" msgid_plural "tobacco seeds" -msgstr[0] "" +msgstr[0] "菸草種子" #. ~ Description for tobacco seeds #: lang/json/COMESTIBLE_from_json.py msgid "Some tobacco seeds." -msgstr "" +msgstr "一些菸草種子。" #: lang/json/COMESTIBLE_from_json.py msgid "tobacco" -msgstr "" +msgstr "菸草" #: lang/json/COMESTIBLE_from_json.py msgid "barley seeds" @@ -23954,12 +24123,12 @@ msgstr "一些洋蔥種子。" #: lang/json/COMESTIBLE_from_json.py msgid "garlic seeds" msgid_plural "garlic seeds" -msgstr[0] "" +msgstr[0] "大蒜種子" #. ~ Description for garlic seeds #: lang/json/COMESTIBLE_from_json.py msgid "Some garlic seeds." -msgstr "" +msgstr "一些大蒜種子。" #: lang/json/COMESTIBLE_from_json.py msgid "garlic" @@ -23973,7 +24142,7 @@ msgstr[0] "大蒜丁香" #. ~ Description for garlic clove #: lang/json/COMESTIBLE_from_json.py msgid "Cloves of garlic. Useful as a seasoning, or for planting." -msgstr "大蒜丁香。調味時很有用, 或者用來種植。" +msgstr "蒜瓣兒。調味時很有用, 或者用來種植。" #: lang/json/COMESTIBLE_from_json.py msgid "carrot seeds" @@ -24114,7 +24283,7 @@ msgstr "一些向日葵種子。可以搾出油。" #: lang/json/furniture_from_json.py msgid "sunflower" msgid_plural "sunflowers" -msgstr[0] "" +msgstr[0] "向日葵" #: lang/json/COMESTIBLE_from_json.py msgid "dogbane seeds" @@ -24402,7 +24571,7 @@ msgstr "樹脂線" msgid "" "Primitive binding material made of cords and natural glue. Use it to repair" " items made of wood, paper, bone, or chitin." -msgstr "以繩子和天然黏膠製作的原始結合材料。能用來修復木製、紙製、骨製和甲殼製的物品。" +msgstr "以繩子和天然黏膠製作的原始結合材料。能用於修理木頭、紙張、骨頭和甲殼製成的物品。" #: lang/json/COMESTIBLE_from_json.py msgid "berry-shaped anomaly" @@ -24465,26 +24634,26 @@ msgstr "" #: lang/json/COMESTIBLE_from_json.py msgid "mutagenic glob" -msgstr "" +msgstr "突變膠" #. ~ Description for mutagenic glob #: lang/json/COMESTIBLE_from_json.py msgid "A gelatinous glob of mutagen." -msgstr "" +msgstr "一種凝膠狀的誘變劑。" #: lang/json/COMESTIBLE_from_json.py msgid "honey" msgid_plural "honey" -msgstr[0] "" +msgstr[0] "蜂蜜" #. ~ Description for honey #: lang/json/COMESTIBLE_from_json.py msgid "Honey, that stuff bees make." -msgstr "" +msgstr "這是蜂群製作的蜂蜜。" #: lang/json/COMESTIBLE_from_json.py msgid "magnesium tablet" -msgstr "" +msgstr "鎂片" #. ~ Description for magnesium tablet #: lang/json/COMESTIBLE_from_json.py @@ -24497,36 +24666,36 @@ msgstr "非處方鎂補充劑, 通常用於治療睡眠剝奪和減輕其影響 #: lang/json/COMESTIBLE_from_json.py msgid "gluten free fish sandwich" msgid_plural "gluten free fish sandwiches" -msgstr[0] "" +msgstr[0] "無麩質魚肉三明治" #. ~ Description for gluten free fish sandwich #: lang/json/COMESTIBLE_from_json.py msgid "Gluten free and a delicious fish sandwich." -msgstr "" +msgstr "無麩質而且美味的魚肉三明治。" #: lang/json/COMESTIBLE_from_json.py msgid "gluten free vegetable sandwich" msgid_plural "gluten free vegetable sandwiches" -msgstr[0] "" +msgstr[0] "無麩質蔬菜三明治" #. ~ Description for gluten free vegetable sandwich #: lang/json/COMESTIBLE_from_json.py msgid "Gluen free bread and vegetables, that's it." -msgstr "" +msgstr "無麩質麵包跟蔬菜, 就這樣。" #: lang/json/COMESTIBLE_from_json.py msgid "gluten free granola" -msgstr "" +msgstr "無麩質麥片" #: lang/json/COMESTIBLE_from_json.py msgid "gluten free meat sandwich" msgid_plural "gluten free meat sandwiches" -msgstr[0] "" +msgstr[0] "無麩質肉三明治" #. ~ Description for gluten free meat sandwich #: lang/json/COMESTIBLE_from_json.py msgid "Gluten free bread and meat, that's it." -msgstr "" +msgstr "無麩質麵包跟肉, 就這樣。" #: lang/json/COMESTIBLE_from_json.py msgid "gluten free peanut butter sandwich" @@ -24543,7 +24712,7 @@ msgstr "一些花生醬滑順的抹在兩片無麩質麵包中間。不太能夠 #: lang/json/COMESTIBLE_from_json.py msgid "gluten free PB&J sandwich" msgid_plural "gluten free PB&J sandwiches" -msgstr[0] "" +msgstr[0] "無麩質花生果醬三明治" #. ~ Description for gluten free PB&J sandwich #: lang/json/COMESTIBLE_from_json.py @@ -24555,7 +24724,7 @@ msgstr "美味的花生果醬無麩質三明治。這讓會令你想起你與你 #: lang/json/COMESTIBLE_from_json.py msgid "gluten free PB&H sandwich" msgid_plural "gluten free PB&H sandwiches" -msgstr[0] "" +msgstr[0] "無麩質蜂蜜花生醬三明治" #. ~ Description for gluten free PB&H sandwich #: lang/json/COMESTIBLE_from_json.py @@ -24567,7 +24736,7 @@ msgstr "看那些該死的笨蛋用蜂蜜對這個花生醬三明治做了什麼 #: lang/json/COMESTIBLE_from_json.py msgid "gluten free PB&M sandwich" msgid_plural "gluten free PB&M sandwiches" -msgstr[0] "" +msgstr[0] "無麩質楓糖花生醬三明治" #. ~ Description for gluten free PB&M sandwich #: lang/json/COMESTIBLE_from_json.py @@ -24592,7 +24761,7 @@ msgstr "美味的山核桃香飲, 不愧為神的飲品。它是以牛奶的替 msgid "" "You think this is cornflour... or rice flour... Or something else. However, " "it certainly is not wheat flour! It is useful for baking though." -msgstr "" +msgstr "你認為這是玉米粉… 或是稻米粉… 還是其他東西。但是, 它肯定不是小麥粉! 雖然它對烘焙很有用。" #: lang/json/COMESTIBLE_from_json.py msgid "gluten free johnnycake" @@ -24885,7 +25054,7 @@ msgstr[0] "" msgid "" "A simple gluten free sauce sandwich. Not very filling but beats eating just" " the bread... especially if it is the wrong type of bread!" -msgstr "一個塗上簡單醬汁的無麩質三明治。不太能夠填飽肚子, 但至少比只啃麵包來的好...特別當它是錯誤的麵包類型!" +msgstr "一個塗上簡單醬汁的無麩質三明治。不太能夠填飽肚子, 但至少比只啃麵包來的好… 特別當它是錯誤的麵包類型!" #: lang/json/COMESTIBLE_from_json.py msgid "gluten free waffle" @@ -25027,7 +25196,7 @@ msgstr "一個附有上蓋, 可以重新密封的大塑膠桶。" #: lang/json/CONTAINER_from_json.py msgid "steel drum (100L)" msgid_plural "steel drums (100L)" -msgstr[0] "" +msgstr[0] "鋼桶 (100公升)" #. ~ Description for steel drum (100L) #: lang/json/CONTAINER_from_json.py @@ -25037,7 +25206,7 @@ msgstr "一個附有上蓋, 可以重新密封的大鋼桶。" #: lang/json/CONTAINER_from_json.py msgid "steel drum (200L)" msgid_plural "steel drums (200L)" -msgstr[0] "" +msgstr[0] "鋼桶 (200公升)" #. ~ Description for steel drum (200L) #: lang/json/CONTAINER_from_json.py @@ -25108,14 +25277,14 @@ msgstr "一個有瓶蓋能封口的塑膠瓶, 能裝入 250 毫升的液體。" #: lang/json/CONTAINER_from_json.py msgid "large plastic bottle" msgid_plural "large plastic bottles" -msgstr[0] "" +msgstr[0] "大塑膠瓶" #. ~ Description for large plastic bottle #: lang/json/CONTAINER_from_json.py msgid "" "It's a two-liter plastic bottle that can hold a lot of soda, or, nowadays, " "boiled water." -msgstr "一個 2 公升容量的塑膠瓶, 可以用來裝大量的蘇打水, 或者...在這種時期...裝開水吧。" +msgstr "一個 2 公升容量的塑膠瓶, 可以用來裝大量的蘇打水, 或者… 在這種時期… 裝開水吧。" #: lang/json/CONTAINER_from_json.py msgid "clay bowl" @@ -25263,14 +25432,14 @@ msgstr "一個軍用水壺, 有 1.5 公升的容量。通常穿在臀部位置 #: lang/json/CONTAINER_from_json.py msgid "thermos" msgid_plural "thermoses" -msgstr[0] "" +msgstr[0] "保溫瓶" #. ~ Description for thermos #: lang/json/CONTAINER_from_json.py msgid "" "A Thermos brand vacuum flask. Built for temperature retention, helps keep " "things hot or cold. Contains 1L of liquid." -msgstr "" +msgstr "膳魔師牌的真空保溫瓶。專為保溫而設計, 有助於內容物的保溫或保冷。可裝 1 公升的液體。" #: lang/json/CONTAINER_from_json.py msgid "ceramic bowl" @@ -25307,7 +25476,7 @@ msgstr "一個易碎的黏土容器‧可以用來粗製衝擊手榴彈, 或是 #: lang/json/CONTAINER_from_json.py msgid "clay hydria" msgid_plural "clay hydrias" -msgstr[0] "陶制水罐" +msgstr[0] "陶製水罐" #. ~ Description for clay hydria #: lang/json/CONTAINER_from_json.py @@ -25317,14 +25486,14 @@ msgstr "一個容量 15 公升的黏土罐, 附有三個把手便於攜帶與使 #: lang/json/CONTAINER_from_json.py msgid "large clay pot" msgid_plural "large clay pots" -msgstr[0] "大陶鍋" +msgstr[0] "陶製大甕" #. ~ Description for large clay pot #: lang/json/CONTAINER_from_json.py msgid "" "A bulky and heavy clay pot with a waterproofed hide lid, meant to store " "water, but can carry other liquids in a pinch." -msgstr "一個笨重的大陶鍋, 配有防水的皮蓋子。可用來裝水, 有需要時也可拿來裝其他液體。" +msgstr "一個笨重的陶製大甕, 配有防水的皮蓋子。可用來裝水, 有需要時也可拿來裝其他液體。" #: lang/json/CONTAINER_from_json.py msgid "plastic cup" @@ -25408,7 +25577,7 @@ msgstr[0] "密封的 3 公升玻璃罐" msgid "" "A three-liter glass jar with a metal screw top lid, used for canning. " "Sealed tightly to preserve contents from rot." -msgstr "有著 3 公升容量的金屬旋蓋玻璃罐, 多用於罐頭。此物品已被密封使內容物免於腐壞。" +msgstr "有著 3 公升容量的金屬旋蓋玻璃罐, 多用於罐頭。此物品已被密封使內容物免於腐敗。" #: lang/json/CONTAINER_from_json.py msgid "glass jar" @@ -25431,7 +25600,7 @@ msgid "" "A half-liter glass jar with a metal screw top lid, used for canning. Sealed" " tightly and will preserve the contents from rot (assuming it was sterile " "before sealing)." -msgstr "有著 500 毫升容量的金屬旋蓋玻璃罐, 多用於罐頭。此物品已被密封使內容物免於腐壞 (預先消毒過的話)。" +msgstr "有著 500 毫升容量的金屬旋蓋玻璃罐, 多用於罐頭。此物品已被密封使內容物免於腐敗 (預先消毒過的話)。" #: lang/json/CONTAINER_from_json.py msgid "plastic jerrycan" @@ -25465,7 +25634,7 @@ msgstr[0] "陶壺" #. ~ Description for clay jug #: lang/json/CONTAINER_from_json.py msgid "A clay container with a lid, used to hold and pour liquids." -msgstr "粘土製的附蓋容器, 能用來盛裝液體。" +msgstr "黏土製的附蓋容器, 能用來盛裝液體。" #: lang/json/CONTAINER_from_json.py msgid "gallon jug" @@ -25605,22 +25774,22 @@ msgstr "包裝用的紙, 外層有蠟可幫助生火。" #: lang/json/CONTAINER_from_json.py msgid "styrofoam cup" msgid_plural "styrofoam cups" -msgstr[0] "" +msgstr[0] "保麗龍杯" #. ~ Description for styrofoam cup #: lang/json/CONTAINER_from_json.py msgid "A cheap, disposable cup with a plastic lid and straw." -msgstr "" +msgstr "一個便宜的一次性杯子, 帶有塑料蓋和吸管。" #: lang/json/CONTAINER_from_json.py msgid "plastic tub" msgid_plural "plastic tubs" -msgstr[0] "" +msgstr[0] "塑膠桶" #. ~ Description for plastic tub #: lang/json/CONTAINER_from_json.py msgid "A big, square plastic bucket usually used for carrying ice cream." -msgstr "" +msgstr "一個大的方形塑料桶, 通常用於攜帶冰淇淋。" #: lang/json/CONTAINER_from_json.py msgid "blood draw kit" @@ -25700,7 +25869,7 @@ msgstr "用木頭做的水壺, 用金屬帶固定, 並用蠟或瀝青密封。 #: lang/json/CONTAINER_from_json.py msgid "gelatinous capsule" msgid_plural "gelatinous capsules" -msgstr[0] "" +msgstr[0] "凝膠蒴" #. ~ Description for gelatinous capsule #. ~ Description for gray cocoon @@ -25719,7 +25888,7 @@ msgstr[0] "凝膠罐" #: lang/json/CONTAINER_from_json.py msgid "gray cocoon" msgid_plural "gray cocoons" -msgstr[0] "" +msgstr[0] "灰質繭" #: lang/json/CONTAINER_from_json.py msgid "gray tank" @@ -25729,12 +25898,12 @@ msgstr[0] "灰質罐" #: lang/json/CONTAINER_from_json.py msgid "oozing pod" msgid_plural "oozing pods" -msgstr[0] "" +msgstr[0] "軟泥莢" #: lang/json/CONTAINER_from_json.py msgid "oozing tank" msgid_plural "oozing tanks" -msgstr[0] "黏液罐" +msgstr[0] "軟泥罐" #: lang/json/ENGINE_from_json.py msgid "internal combustion engine" @@ -25750,7 +25919,7 @@ msgstr "基本汽油引擎" #: lang/json/ENGINE_from_json.py msgid "base steam engine" -msgstr "" +msgstr "基本蒸汽引擎" #: lang/json/ENGINE_from_json.py msgid "1-cylinder engine" @@ -25857,7 +26026,7 @@ msgstr "一個巨大而無比強力的十二缸內燃式引擎, 通常用於重 #: lang/json/ENGINE_from_json.py msgid "makeshift steam engine" -msgstr "" +msgstr "粗製蒸汽引擎" #. ~ Description for makeshift steam engine #: lang/json/ENGINE_from_json.py @@ -25865,11 +26034,11 @@ msgid "" "A small, primitive, steam engine. An integrated boiler burns coal to heat " "water into steam, driving a reciprocating shaft. A condenser recaptures the" " water, making this a closed cycle system." -msgstr "" +msgstr "一台小型且粗糙的蒸汽機。一體化的鍋爐藉由燃燒煤炭, 將水加熱成蒸汽, 驅動往復軸。冷凝器讓蒸汽化成水, 使其成為一個封閉的循環系統。" #: lang/json/ENGINE_from_json.py msgid "small steam engine" -msgstr "" +msgstr "小型蒸汽引擎" #. ~ Description for small steam engine #: lang/json/ENGINE_from_json.py @@ -25877,11 +26046,11 @@ msgid "" "A small steam engine. An integrated boiler burns coal to heat water into " "steam, driving a reciprocating shaft. A condenser recaptures the water, " "making this a closed cycle system." -msgstr "" +msgstr "一台小型的蒸汽機。一體化的鍋爐藉由燃燒煤炭, 將水加熱成蒸汽, 驅動往復軸。冷凝器讓蒸汽化成水, 使其成為一個封閉的循環系統。" #: lang/json/ENGINE_from_json.py msgid "medium steam engine" -msgstr "" +msgstr "中型蒸汽引擎" #. ~ Description for medium steam engine #: lang/json/ENGINE_from_json.py @@ -25889,11 +26058,11 @@ msgid "" "A medium sized steam engine. An integrated boiler burns coal to heat water " "into steam, driving a reciprocating shaft. A condenser recaptures the " "water, making this a closed cycle system." -msgstr "" +msgstr "一台中型的蒸汽機。一體化的鍋爐藉由燃燒煤炭, 將水加熱成蒸汽, 驅動往復軸。冷凝器讓蒸汽化成水, 使其成為一個封閉的循環系統。" #: lang/json/ENGINE_from_json.py msgid "large steam engine" -msgstr "" +msgstr "大型蒸汽引擎" #. ~ Description for large steam engine #: lang/json/ENGINE_from_json.py @@ -25901,11 +26070,11 @@ msgid "" "A large steam engine. An integrated boiler burns coal to heat water into " "steam, driving a reciprocating shaft. A condensor recaptures the water, " "making this a closed cycle system." -msgstr "" +msgstr "一台大型的蒸汽機。一體化的鍋爐藉由燃燒煤炭, 將水加熱成蒸汽, 驅動往復軸。冷凝器讓蒸汽化成水, 使其成為一個封閉的循環系統。" #: lang/json/ENGINE_from_json.py msgid "huge steam engine" -msgstr "" +msgstr "巨型蒸汽引擎" #. ~ Description for huge steam engine #: lang/json/ENGINE_from_json.py @@ -25913,11 +26082,11 @@ msgid "" "A huge steam engine. An integrated boiler burns coal to heat water into " "steam, driving a reciprocating shaft. A condensor recaptures the water, " "making this a closed cycle system." -msgstr "" +msgstr "一台巨型的蒸汽機。一體化的鍋爐藉由燃燒煤炭, 將水加熱成蒸汽, 驅動往復軸。冷凝器讓蒸汽化成水, 使其成為一個封閉的循環系統。" #: lang/json/ENGINE_from_json.py msgid "small steam turbine" -msgstr "" +msgstr "小型蒸汽渦輪機" #. ~ Description for small steam turbine #: lang/json/ENGINE_from_json.py @@ -25925,11 +26094,11 @@ msgid "" "A small steam turbine. An integrated boiler burns coal to heat water into " "steam, driving a spinning turbine. A condensor recaptures the water, making" " this a closed cycle system." -msgstr "" +msgstr "一台小型的蒸汽渦輪機。一體化的鍋爐藉由燃燒煤炭, 將水加熱成蒸汽, 驅動旋轉渦輪機。冷凝器讓蒸汽化成水, 使其成為一個封閉的循環系統。" #: lang/json/ENGINE_from_json.py msgid "medium steam turbine" -msgstr "" +msgstr "中型蒸汽渦輪機" #. ~ Description for medium steam turbine #: lang/json/ENGINE_from_json.py @@ -25937,11 +26106,11 @@ msgid "" "A medium sized steam turbine. An integrated boiler burns coal to heat water" " into steam, driving a spinning turbine. A condensor recaptures the water, " "making this a closed cycle system." -msgstr "" +msgstr "一台中型的蒸汽渦輪機。一體化的鍋爐藉由燃燒煤炭, 將水加熱成蒸汽, 驅動旋轉渦輪機。冷凝器讓蒸汽化成水, 使其成為一個封閉的循環系統。" #: lang/json/ENGINE_from_json.py msgid "large steam turbine" -msgstr "" +msgstr "大型蒸汽渦輪機" #. ~ Description for large steam turbine #: lang/json/ENGINE_from_json.py @@ -25949,11 +26118,11 @@ msgid "" "A large steam turbine. An integrated boiler burns coal to heat water into " "steam, driving a spinning turbine. A condensor recaptures the water, making" " this a closed cycle system." -msgstr "" +msgstr "一台大型的蒸汽渦輪機。一體化的鍋爐藉由燃燒煤炭, 將水加熱成蒸汽, 驅動旋轉渦輪機。冷凝器讓蒸汽化成水, 使其成為一個封閉的循環系統。" #: lang/json/ENGINE_from_json.py msgid "huge steam turbine" -msgstr "" +msgstr "巨型蒸汽渦輪機" #. ~ Description for huge steam turbine #: lang/json/ENGINE_from_json.py @@ -25961,7 +26130,7 @@ msgid "" "A huge steam turbine. An integrated boiler burns coal to heat water into " "steam, driving a spinning turbine. A condensor recaptures the water, making" " this a closed cycle system." -msgstr "" +msgstr "一台巨型的蒸汽渦輪機。一體化的鍋爐藉由燃燒煤炭, 將水加熱成蒸汽, 驅動旋轉渦輪機。冷凝器讓蒸汽化成水, 使其成為一個封閉的循環系統。" #: lang/json/GENERIC_from_json.py msgid "explosive arrowhead" @@ -26020,22 +26189,22 @@ msgstr "一把來自山核挑樹的堅果, 仍未去殼。" #: lang/json/GENERIC_from_json.py msgid "pecan" msgid_plural "pecans" -msgstr[0] "" +msgstr[0] "胡桃" #. ~ Description for pecan #: lang/json/GENERIC_from_json.py msgid "A handful of hard nuts from a pecan tree, still in their shell." -msgstr "" +msgstr "一把來自胡桃樹的堅果, 仍未去殼。" #: lang/json/GENERIC_from_json.py msgid "pistachio" msgid_plural "pistachio" -msgstr[0] "" +msgstr[0] "阿月渾子" #. ~ Description for pistachio #: lang/json/GENERIC_from_json.py msgid "A handful of hard nuts from a pistachio tree, still in their shell." -msgstr "" +msgstr "一把從阿月渾子樹摘下的硬堅果, 仍未去殼。" #: lang/json/GENERIC_from_json.py msgid "almond" @@ -26090,26 +26259,26 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "bone" msgid_plural "bones" -msgstr[0] "" +msgstr[0] "骨頭" #. ~ Description for bone #: lang/json/GENERIC_from_json.py msgid "" "A bone from some creature or other. Could be used to make some stuff, like " "needles." -msgstr "" +msgstr "一根來自生物的骨頭, 能夠用於製作其他有用的物品, 像是骨針。" #: lang/json/GENERIC_from_json.py msgid "human bone" msgid_plural "human bones" -msgstr[0] "" +msgstr[0] "人骨" #. ~ Description for human bone #: lang/json/GENERIC_from_json.py msgid "" "A bone from a human being. Could be used to make some stuff, if you're " "feeling sufficiently ghoulish." -msgstr "" +msgstr "一根來自生物的骨頭, 能夠用於製作其他有用的物品… 如果你的性格足夠殘忍。" #: lang/json/GENERIC_from_json.py msgid "MRE - Beef" @@ -26122,7 +26291,7 @@ msgid "" "A 'Meal Ready to Eat' with an irradiated beef main course and everything a " "hungry soldier needs. The contents will begin to rot once they're removed " "from this sealed bag. Activate or disassemble it to get to its contents." -msgstr "一款裝有輻照牛肉菜餚的 \"即食\" 軍用口糧, 帶有一個飢腸轆轆的士兵所需要的一切。一旦拆封後內容物將會開始腐爛。使用或拆解它以取得內容物。" +msgstr "一款裝有輻照牛肉菜餚的 \"即食\" 軍用口糧, 帶有一個飢腸轆轆的士兵所需要的一切。一旦拆封後內容物將會開始腐敗。使用或拆解它以取得內容物。" #: lang/json/GENERIC_from_json.py msgid "MRE - Vegetarian" @@ -26136,7 +26305,7 @@ msgid "" "everything a hungry soldier needs. The contents will begin to rot once " "they're removed from this sealed bag. Activate or disassemble it to get to " "its contents." -msgstr "一款裝有輻照蔬食菜餚的 \"即食\" 軍用口糧, 帶有一個飢腸轆轆的士兵所需要的一切。一旦拆封後內容物將會開始腐爛。使用或拆解它以取得內容物。" +msgstr "一款裝有輻照蔬食菜餚的 \"即食\" 軍用口糧, 帶有一個飢腸轆轆的士兵所需要的一切。一旦拆封後內容物將會開始腐敗。使用或拆解它以取得內容物。" #: lang/json/GENERIC_from_json.py msgid "MRE - Chicken" @@ -26149,7 +26318,7 @@ msgid "" "A 'Meal Ready to Eat' with an irradiated chicken course and everything a " "hungry soldier needs. The contents will begin to rot once they're removed " "from this sealed bag. Activate or disassemble it to get to its contents." -msgstr "一款裝有輻照雞肉菜餚的 \"即食\" 軍用口糧, 帶有一個飢腸轆轆的士兵所需要的一切。一旦拆封後內容物將會開始腐爛。使用或拆解它以取得內容物。" +msgstr "一款裝有輻照雞肉菜餚的 \"即食\" 軍用口糧, 帶有一個飢腸轆轆的士兵所需要的一切。一旦拆封後內容物將會開始腐敗。使用或拆解它以取得內容物。" #: lang/json/GENERIC_from_json.py msgid "MRE - Hotdogs" @@ -26176,7 +26345,7 @@ msgid "" "A 'Meal Ready to Eat' with a ravioli course and everything a hungry soldier " "needs. The contents will begin to rot once they're removed from this sealed" " bag. Activate or disassemble it to get to its contents." -msgstr "一款裝有輻照餛飩菜餚的 \"即食\" 軍用口糧, 帶有一個飢腸轆轆的士兵所需要的一切。一旦拆封後內容物將會開始腐爛。使用或拆解它以取得內容物。" +msgstr "一款裝有輻照餛飩菜餚的 \"即食\" 軍用口糧, 帶有一個飢腸轆轆的士兵所需要的一切。一旦拆封後內容物將會開始腐敗。使用或拆解它以取得內容物。" #: lang/json/GENERIC_from_json.py msgid "fake item" @@ -26200,6 +26369,30 @@ msgid "" "when you look at them." msgstr "" +#: lang/json/GENERIC_from_json.py +msgid "Magic 8-Ball" +msgid_plural "Magic 8-Balls" +msgstr[0] "" + +#. ~ Description for Magic 8-Ball +#: lang/json/GENERIC_from_json.py +msgid "" +"A fortune-telling device from the 1950s. The kind of moral support you " +"didn't know you needed." +msgstr "" + +#: lang/json/GENERIC_from_json.py +msgid "coin" +msgid_plural "coins" +msgstr[0] "" + +#. ~ Description for coin +#: lang/json/GENERIC_from_json.py +msgid "" +"A now-ancient form of currency. Stripped of its original purpose, it now " +"serves, faithfully, flippant Flippists for free." +msgstr "" + #: lang/json/GENERIC_from_json.py msgid "corpse" msgid_plural "corpses" @@ -26232,7 +26425,7 @@ msgstr "肌肉" #: lang/json/GENERIC_from_json.py msgid "a smoking device and a source of flame" -msgstr "一個抽煙的工具以及火源" +msgstr "一個抽菸器具以及火源" #: lang/json/GENERIC_from_json.py msgid "file" @@ -26264,7 +26457,7 @@ msgstr[0] "皮草塊" #. ~ Description for fur pelt #: lang/json/GENERIC_from_json.py msgid "A small bolt of fur from an animal. Can be made into warm clothing." -msgstr "從動物身上割下的皮草, 可以用來製作溫暖的衣服。" +msgstr "從動物身上割下的皮草, 能用於製作溫暖的衣物。" #: lang/json/GENERIC_from_json.py msgid "faux fur pelt" @@ -26274,12 +26467,12 @@ msgstr[0] "人造皮草塊" #. ~ Description for faux fur pelt #: lang/json/GENERIC_from_json.py msgid "A small bolt of garishly colored faux fur. Can be made into clothing." -msgstr "色彩繽紛的人造皮草塊, 可以用來製作衣服。" +msgstr "色彩繽紛的人造皮草塊, 能用於製作衣物。" #: lang/json/GENERIC_from_json.py msgid "leather patch" msgid_plural "leather patches" -msgstr[0] "皮補丁" +msgstr[0] "皮革補丁" #. ~ Description for leather patch #: lang/json/GENERIC_from_json.py @@ -26314,7 +26507,7 @@ msgstr[0] "強力膠" #. ~ Description for superglue #: lang/json/GENERIC_from_json.py msgid "A tube of strong glue. Used in many crafting recipes." -msgstr "一管強力膠。在製作物品時常用到。" +msgstr "一管強力膠。能用於許多物品製作配方。" #: lang/json/GENERIC_from_json.py msgid "bone glue" @@ -26364,48 +26557,48 @@ msgstr "一件昆蟲的外骨骼, 輕又耐用。" #: lang/json/GENERIC_from_json.py msgid "chunk of biosilicified chitin" msgid_plural "chunks of biosilicified chitin" -msgstr[0] "" +msgstr[0] "生物矽化甲殼塊" #. ~ Description for chunk of biosilicified chitin #: lang/json/GENERIC_from_json.py msgid "" "A lump of exoskeleton that has undergone biosilicification. It is acid-" "resistant and remarkably sturdy." -msgstr "" +msgstr "一塊經過生物矽化處理的外骨骼。它不只耐酸, 而且非常堅固。" #: lang/json/GENERIC_from_json.py msgid "bundle of rags" msgid_plural "bundles of rags" -msgstr[0] "" +msgstr[0] "布條束" #. ~ Description for bundle of rags #: lang/json/GENERIC_from_json.py msgid "" "Cotton rags, bundled tightly together for storage. Disassemble to unpack." -msgstr "" +msgstr "將大量的棉質布條緊緊地捆成一束, 以便於存放。可拆解回原來的大量布條。" #: lang/json/GENERIC_from_json.py msgid "bundle of leather" msgid_plural "bundles of leather" -msgstr[0] "" +msgstr[0] "皮革補丁束" #. ~ Description for bundle of leather #: lang/json/GENERIC_from_json.py msgid "" "Leather patches, bundled tightly together for storage. Disassemble to " "unpack." -msgstr "" +msgstr "將大量的皮革補丁緊緊地捆成一束, 以便於存放。可拆解回原來的大量皮革補丁。" #: lang/json/GENERIC_from_json.py msgid "bundle of felt" msgid_plural "bundles of felt" -msgstr[0] "" +msgstr[0] "毛氈補丁束" #. ~ Description for bundle of felt #: lang/json/GENERIC_from_json.py msgid "" "Felt patches, bundled tightly together for storage. Disassemble to unpack." -msgstr "" +msgstr "將大量的毛氈補丁緊緊地捆成一束, 以便於存放。可拆解回原來的大量毛氈補丁。" #: lang/json/GENERIC_from_json.py msgid "biollante bud" @@ -26562,17 +26755,17 @@ msgstr[0] "鐵絲線" msgid "" "A length of thin, relatively stiff, steel wire. Like the sort you find in " "wire fences." -msgstr "一條細長而相對堅韌的金屬絲線。就像是你在鐵絲護欄上會看到的那種。" +msgstr "一條細長而相對僵硬的鐵絲。就像是你在鐵絲護欄上會看到的那種。" #: lang/json/GENERIC_from_json.py msgid "barbed wire" msgid_plural "barbed wires" -msgstr[0] "鐵刺線" +msgstr[0] "帶刺鐵絲" #. ~ Description for barbed wire #: lang/json/GENERIC_from_json.py msgid "A length of stiff wire, covered in sharp barbs." -msgstr "一條堅韌的鐵絲, 上面帶著銳利的刺。" +msgstr "一條僵硬的鐵絲, 上面帶著銳利的刺。" #: lang/json/GENERIC_from_json.py msgid "rebar" @@ -26974,7 +27167,7 @@ msgstr[0] "電源轉換器" #. ~ Description for power converter #: lang/json/GENERIC_from_json.py msgid "A power supply unit. Useful in lots of electronics recipes." -msgstr "一個電源供應器。在製作電子裝置時很有用。" +msgstr "一個電源供應器。能用於許多電子物品製作配方。" #: lang/json/GENERIC_from_json.py msgid "amplifier circuit" @@ -26986,7 +27179,7 @@ msgstr[0] "功率放大器" msgid "" "A circuit designed to amplify the strength of a signal. Useful in lots of " "electronics recipes." -msgstr "一個用來放大信號強度的電路。在製作電子裝置時很有用。" +msgstr "一個用來放大信號強度的電路。能用於許多電子物品製作配方。" #: lang/json/GENERIC_from_json.py msgid "transponder circuit" @@ -27022,7 +27215,7 @@ msgstr[0] "小型液晶螢幕" msgid "" "A small backlit screen, used for displaying images. Useful in some " "electronics recipes." -msgstr "一種小型的背光螢幕, 能夠顯示畫面。在製作某些電子裝置時很有用。" +msgstr "一種小型的背光螢幕, 能夠顯示畫面。能用於一些電子物品製作配方。" #: lang/json/GENERIC_from_json.py msgid "high-quality lens" @@ -27068,19 +27261,19 @@ msgstr[0] "天線" #. ~ Description for antenna #: lang/json/GENERIC_from_json.py msgid "A simple thin aluminum shaft. Useful in lots of electronics recipes." -msgstr "一個構造簡單的薄鋁軸。在製作電子裝置時很有用。" +msgstr "一個構造簡單的薄鋁軸。能用於許多電子物品製作配方。" #: lang/json/GENERIC_from_json.py msgid "micro motor" msgid_plural "micro motors" -msgstr[0] "" +msgstr[0] "微型馬達" #. ~ Description for micro motor #: lang/json/GENERIC_from_json.py msgid "" "A very small electric motor like those used in RC cars. Useful in lots of " "electronics recipes." -msgstr "" +msgstr "一台非常小的電動馬達, 常用於遙控車。能用於許多電子物品製作配方。" #: lang/json/GENERIC_from_json.py msgid "circuit board" @@ -27142,14 +27335,14 @@ msgstr "一個小電扇, 能夠推動房間中的氣流。" #: lang/json/GENERIC_from_json.py msgid "ceramic armor plate" msgid_plural "ceramic armor plates" -msgstr[0] "陶瓷防彈板" +msgstr[0] "陶瓷裝甲板" #. ~ Description for ceramic armor plate #: lang/json/GENERIC_from_json.py msgid "" "A ceramic armor plate, specifically engineered for use in a bullet resistant" " vest." -msgstr "陶瓷防彈板, 專門設計用在防彈背心上。" +msgstr "陶瓷裝甲板, 專門設計來用於防彈背心上。" #: lang/json/GENERIC_from_json.py msgid "ceramic plate" @@ -27203,7 +27396,7 @@ msgstr[0] "叉子" msgid "" "A fork, if you stab something with it you eat it right away. Wait... " "nevermind." -msgstr "一根叉子, 能插起任何你想吃的東西。等等...算了。" +msgstr "一根叉子, 能插起任何你想吃的東西。等等… 算了。" #: lang/json/GENERIC_from_json.py msgid "spoon" @@ -27286,7 +27479,7 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "Mosin-Nagant classic conversion kit" msgid_plural "Mosin-Nagant classic conversion kits" -msgstr[0] "莫辛-納甘步槍的經典改裝套件" +msgstr[0] "莫辛·納甘步槍的經典改裝套件" #. ~ Description for Mosin-Nagant classic conversion kit #: lang/json/GENERIC_from_json.py @@ -27295,13 +27488,13 @@ msgid "" "actions. With gunsmithing tools, some skill, and a few hours, you could " "take a 'tacti-cool' rifle and convert it to the classic Russian design." msgstr "" -"一個漂亮的木製槍托, 設計用來支援莫辛-納甘的槍支。使用槍匠維修工具, 以及一些技能, 還有一些時間, 你就能夠得到 \"超酷的\" 戰術步槍, " +"一個漂亮的木製槍托, 設計用來支援莫辛·納甘的槍支。使用槍匠修理工具, 以及一些技能, 還有一些時間, 你就能夠得到 \"超酷的\" 戰術步槍, " "同時還有經典的俄國設計。" #: lang/json/GENERIC_from_json.py msgid "Mosin-Nagant EBR conversion kit" msgid_plural "Mosin-Nagant EBR conversion kits" -msgstr[0] "莫辛-納甘增強型步槍戰鬥步槍改裝套件" +msgstr[0] "莫辛·納甘增強型步槍戰鬥步槍改裝套件" #. ~ Description for Mosin-Nagant EBR conversion kit #: lang/json/GENERIC_from_json.py @@ -27310,7 +27503,7 @@ msgid "" "actions. With gunsmithing tools, some skill, and a few hours, you could " "give the classic Russian design modern furniture and customization capacity." msgstr "" -"一個設計用來支援莫辛-納甘的合成槍托。使用槍匠維修工具, 以及一些技能, 還有一些時間, 你就能夠融合經典的俄國造型與現代化設計和客製化能力。" +"一個設計用來支援莫辛·納甘的合成槍托。使用槍匠修理工具, 以及一些技能, 還有一些時間, 你就能夠融合經典的俄國造型與現代化設計和客製化能力。" #: lang/json/GENERIC_from_json.py msgid "L523-CAR conversion" @@ -27357,7 +27550,7 @@ msgid "" "configured L523, you'll need to disassemble it to the base platform, then " "assemble with the parts you prefer." msgstr "" -"所有把 L523 改裝成精準射手步槍的必備組件, 適合遠距離作戰。要重新改裝一把已組合的 L523, 你需要先拆解成基底組件, 然後組裝你喜歡的組件。" +"所有把 L523 改裝成精準射手步槍的必備組件, 適合遠程作戰。要重新改裝一把已組合的 L523, 你需要先拆解成基底組件, 然後組裝你喜歡的組件。" #: lang/json/GENERIC_from_json.py msgid "L523-LMG conversion" @@ -27416,7 +27609,7 @@ msgstr[0] "科學 SD 記憶卡" msgid "" "This memory card appears to be related to 'XEDRA', and is certainly " "encrypted. Looks * Interesting *, though..." -msgstr "這張記憶卡似乎與 'XEDRA' 有關, 豪無疑問地已被加密。然而它看起來 *很有趣*..." +msgstr "這張記憶卡似乎與 \"XEDRA\" 有關, 豪無疑問地已被加密。然而它看起來 *很有趣*…" #: lang/json/GENERIC_from_json.py msgid "scrap copper" @@ -27426,7 +27619,7 @@ msgstr[0] "銅碎" #. ~ Description for scrap copper #: lang/json/GENERIC_from_json.py msgid "A small chunk of copper, usable for crafting or repairs." -msgstr "一小塊的銅, 可以用來製作或修理。" +msgstr "一小塊的銅, 能用於製作或修理。" #: lang/json/GENERIC_from_json.py msgid "glass shard" @@ -27459,7 +27652,7 @@ msgstr[0] "玻璃片" #: lang/json/GENERIC_from_json.py msgid "" "A large sheet of glass. Easily shattered. Useful for repairing windows." -msgstr "一大片玻璃。易碎。在重鑲窗戶時非常有用。" +msgstr "一大片玻璃。易碎。能用於修理窗戶。" #: lang/json/GENERIC_from_json.py msgid "sheet of reinforced glass" @@ -27757,12 +27950,12 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "lump of clay" msgid_plural "lumps of clay" -msgstr[0] "陶土塊" +msgstr[0] "黏土塊" #. ~ Description for lump of clay #: lang/json/GENERIC_from_json.py msgid "A fresh piece of clay. Useful for some crafting recipes." -msgstr "一坨新鮮的陶土, 可以用來製作物品。" +msgstr "一坨新鮮的黏土。能用於一些物品製作配方。" #: lang/json/GENERIC_from_json.py msgid "brick" @@ -27930,7 +28123,7 @@ msgstr[0] "等身抱枕" msgid "" "A big, body-sized pillow with a print of an anime character on the front and" " their scantily clad version on the back." -msgstr "一個巨大的等身長抱枕, 正面畫有一個動漫角色, 背面則是角色的...少了些布料的版本。" +msgstr "一個巨大的等身長抱枕, 正面畫有一個動漫角色, 背面則是角色的… 少了些布料的版本。" #: lang/json/GENERIC_from_json.py msgid "down-filled pillow" @@ -27998,7 +28191,7 @@ msgid "" "The leftover tobacco in a few of these could probably be used to roll another cigarette. If you're willing to go that far..." msgstr "" "曾經令人上癮的美妙菸草捲現在只剩下一小塊垃圾。何等的慘劇!\n" -"有足夠的這些東西剩餘菸草應該可以捲成一條新的煙。如果你想要這麼極端..." +"有足夠的這些東西剩餘菸草應該可以捲成一條新的煙。如果你想要這麼極端…" #. ~ Description for joint #: lang/json/GENERIC_from_json.py @@ -28037,7 +28230,7 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "raw tobacco" msgid_plural "handfuls of raw tobacco" -msgstr[0] "" +msgstr[0] "生菸草" #. ~ Description for raw tobacco #: lang/json/GENERIC_from_json.py @@ -28082,7 +28275,7 @@ msgstr[0] "橡膠薄片" msgid "" "A moderately sized sheet of neoprene. Can be used to craft light and " "stretchable clothing." -msgstr "一塊中等大小的氯丁橡膠片。可用於製作既輕又具彈性的衣服。" +msgstr "一塊中等大小的氯丁橡膠片。能用於製作輕巧又具彈性的衣物。" #: lang/json/GENERIC_from_json.py msgid "TX-5LR Laser Cannon" @@ -28094,7 +28287,7 @@ msgstr[0] "TX-5LR 雷射砲" msgid "" "A laser cannon stripped from the barrel of a TX-5LR Cerberus laser turret. " "Unusable as a weapon on its own without the necessary parts." -msgstr "這個雷射砲是從 TX-5LR 地獄犬雷射砲塔拆解下來的。因為缺少其必耍的元件, 無法作為武器來使用。" +msgstr "這個雷射砲是從 TX-5LR 地獄犬雷射砲塔拆解下來的。因為缺少其必要的元件, 無法作為武器來使用。" #: lang/json/GENERIC_from_json.py msgid "light bulb" @@ -28109,7 +28302,7 @@ msgstr "一個有點過時的燈泡, 出現於各式燈光設備。" #: lang/json/GENERIC_from_json.py msgid "clay flower pot" msgid_plural "clay flower pots" -msgstr[0] "" +msgstr[0] "陶製花盆" #. ~ Description for clay flower pot #: lang/json/GENERIC_from_json.py @@ -28223,14 +28416,14 @@ msgstr "一根沉重且堅固的棍子。相當適合作為近戰武器, 同時 #: lang/json/GENERIC_from_json.py msgid "long stick" msgid_plural "long sticks" -msgstr[0] "" +msgstr[0] "長木棍" #. ~ Description for long stick #: lang/json/GENERIC_from_json.py msgid "" "A long stick. Makes a decent melee weapon, and can be broken into heavy " "sticks for crafting." -msgstr "" +msgstr "一根長的木棍。適合用於作為近戰武器, 而且可以切短為製作物品需用的木棍。" #: lang/json/GENERIC_from_json.py msgid "sharpened rebar" @@ -28262,14 +28455,14 @@ msgstr "這是一把不論在重量或平衡上都準確地用真品為範本、 msgid "" "This is a solid wood 'training' katana, but feels far too light to make an " "effective weapon." -msgstr "" +msgstr "這是實心木質的 \"訓練用\" 武士刀, 但是因為手感太輕, 難以成為有效的武器。" #. ~ Description for bokken #: lang/json/GENERIC_from_json.py msgid "" "This is a solid wood 'training' katana, but it looks to be mass produced, " "and not quite as effective as the real deal." -msgstr "" +msgstr "這是實心木質的 \"訓練用\" 武士刀, 但是它似乎是量產出來的, 很難跟正常的木刀一樣有用。" #: lang/json/GENERIC_from_json.py msgid "cudgel" @@ -28439,7 +28632,7 @@ msgstr[0] "2x4 木劍" msgid "" "A two by four with a cross guard and whittled down point; not much for " "slashing, but much better than your bare hands." -msgstr "一塊2x4木材裝上十字護手並削利後的成品。雖然並不適合拿來揮砍, 不過總是比你那貧弱的雙手好一點。" +msgstr "一塊 2x4 木材裝上十字護手並削利後的成品。雖然並不適合拿來揮砍, 不過總是比你那貧弱的雙手好一點。" #: lang/json/GENERIC_from_json.py msgid "nord" @@ -28505,19 +28698,19 @@ msgstr "一把中世紀戰槌。它的古怪形狀和平衡使它成為一把優 #: lang/json/GENERIC_from_json.py msgid "nailboard" msgid_plural "nailboards" -msgstr[0] "" +msgstr[0] "釘板" #. ~ Description for nailboard #: lang/json/GENERIC_from_json.py msgid "" "A long piece of wood with several nails through one end; essentially a " "simple mace. Makes an acceptable melee weapon." -msgstr "一片尾端有許多鐵釘的木板;能當做簡易的釘頭鎚。能作為勉強可接受的近戰武器。" +msgstr "一片長木板, 末端插著幾根釘子, 基本上是把簡易的硬頭錘。能作為堪用的近戰武器。" #: lang/json/GENERIC_from_json.py msgid "nail bat" msgid_plural "nail bats" -msgstr[0] "狼牙棒" +msgstr[0] "釘棒" #. ~ Description for nail bat #: lang/json/GENERIC_from_json.py @@ -28534,7 +28727,7 @@ msgstr[0] "帶刺鐵絲球棒" #. ~ Description for barbed wire bat #: lang/json/GENERIC_from_json.py msgid "A baseball bat wrapped with barbed wire. A brutal melee weapon." -msgstr "一根上面纏繞著鐵刺線的球棒。野蠻的近戰武器。" +msgstr "一根上面纏繞著帶刺鐵絲的球棒。野蠻的近戰武器。" #: lang/json/GENERIC_from_json.py msgid "The 7-10 Split" @@ -28558,7 +28751,7 @@ msgstr[0] "鐵釘手指虎" msgid "" "A pair of knuckles consisting of two small squares of wood with several " "nails coming through them. Useful in nasty street fights." -msgstr "一對穿過了幾根釘子的兩塊小木材做成的指虎。街頭鬥毆時十分有用。" +msgstr "一對穿過了幾根釘子的兩塊小木頭做成的指虎。街頭鬥毆時十分有用。" #: lang/json/GENERIC_from_json.py msgid "homewrecker" @@ -28572,7 +28765,7 @@ msgid "" "resulting weapon is unwieldy and slow but very heavy hitting." msgstr "一根粗重的長木棍一頭裝上了幾塊鋼塊。也因為這樣既笨重又難揮, 但能造成非常沉重的打擊。" -#: lang/json/GENERIC_from_json.py +#: lang/json/GENERIC_from_json.py src/crafting_gui.cpp msgid "two by four" msgid_plural "two by fours" msgstr[0] "2x4 木材" @@ -28593,7 +28786,7 @@ msgstr[0] "鋼管" #: lang/json/GENERIC_from_json.py msgid "" "A steel pipe, makes a good melee weapon. Useful in a few crafting recipes." -msgstr "一根鋼管, 能做為良好的近戰武器。也能用來製作某些物品。" +msgstr "一根鋼管, 能作為良好的近戰武器。能用於某些物品製作配方。" #: lang/json/GENERIC_from_json.py msgid "baseball bat" @@ -28758,7 +28951,7 @@ msgstr[0] "生存者薙刀" msgid "" "This sturdy steel shaft with a sword blade at the end is good for both " "slashing and stabbing." -msgstr "一個結實的鋼桿在末端配上劍身, 無論是戳刺或砍劈都很順手。" +msgstr "這是一把結實的鋼柄, 末端帶有劍刃, 無論砍劈或穿刺都很合適。" #: lang/json/GENERIC_from_json.py msgid "expandable baton" @@ -28849,19 +29042,19 @@ msgstr "無論你肢體有沒有殘缺, 你總是可以用一根手杖讓你走 #: lang/json/GENERIC_from_json.py msgid "mace" msgid_plural "maces" -msgstr[0] "釘頭錘" +msgstr[0] "硬頭錘" #. ~ Description for mace #: lang/json/GENERIC_from_json.py msgid "" "A medieval weapon consisting of a wood handle with a heavy iron end. It is " "heavy and slow, but its crushing damage is devastating." -msgstr "一件鐵製的中世紀木頭手柄武器。既沈重也緩慢, 但其傷害是具毀滅性的。" +msgstr "一件中世紀武器, 由一個木頭握柄與末端沉重的鐵塊組成。沉重且緩慢, 但能造成毀滅性的壓碎傷害。" #: lang/json/GENERIC_from_json.py msgid "morningstar" msgid_plural "morningstars" -msgstr[0] "流星錘" +msgstr[0] "釘頭錘" #. ~ Description for morningstar #: lang/json/GENERIC_from_json.py @@ -28869,7 +29062,7 @@ msgid "" "A medieval weapon consisting of a wood handle with a heavy, spiked iron ball" " on the end. It deals devastating crushing damage, with a small amount of " "piercing to boot." -msgstr "一件中世紀武器, 有著木頭手柄, 前端為沈重的鐵刺球。能夠造成毀滅性的傷害, 以及一些穿刺傷害。" +msgstr "一件中世紀武器, 由一個木頭握柄與末端沉重的鐵刺球組成。能造成毀滅性的壓碎傷害, 以及少量的穿刺傷害。" #: lang/json/GENERIC_from_json.py msgid "pool cue" @@ -28917,7 +29110,7 @@ msgstr[0] "生化爪" #. ~ Description for bionic claws #: lang/json/GENERIC_from_json.py msgid "Short and sharp claws made from a high-tech metal." -msgstr "一副短而利的爪, 由高科技金屬所製成。(參見金鋼狼...)" +msgstr "一副短而利的爪, 由高科技金屬所製成。" #: lang/json/GENERIC_from_json.py msgid "monomolecular blade" @@ -28966,7 +29159,7 @@ msgid "" "A mass of scrap metal crudely beat into shape, with folded rags underneath " "to protect the wearers knuckles. A good, quick weapon - but you have to get" " within punching range to use it." -msgstr "一個用廢金屬敲製而扭曲形狀的手指虎, 墊有布條保護使用者的手。一個快速的好武器- 但是你必須要接近敵人才行用。" +msgstr "一個用廢金屬敲製而扭曲形狀的手指虎, 墊有布條保護使用者的手。一個快速、良好的武器… 但是你必須在肉搏距離內使用它。" #: lang/json/GENERIC_from_json.py msgid "razorbar katar" @@ -29003,7 +29196,7 @@ msgid "" "A metal weapon made of brass, designed to be gripped in the palm and cause " "punches to do extra damage. A good, quick weapon - but you have to get " "within punching range to use it." -msgstr "一個銅製的金屬武器, 用來套在手指中來讓出拳造成額外的傷害。一件速度很快的好武器 - 但是你只有在近身戰鬥時才派的上用場。" +msgstr "一個銅製的金屬武器, 用來套在手指中來讓出拳造成額外的傷害。一個快速、良好的武器… 但是你必須在肉搏距離內使用它" #: lang/json/GENERIC_from_json.py msgid "hockey stick" @@ -29087,7 +29280,7 @@ msgid "" "The Monadnock PR-24 baton is a collapsible, lightweight, side-handle baton " "used by law enforcement all over the world. The PR designation is rumored " "to mean Public Relations. Activate to extend." -msgstr "莫納德諾克PR-24式甩棍是種可伸縮收納、輕量、側握式的甩棍, 廣為全世界的執法單位所使用。PR傳說是指公共關係。啟動來伸出甩棍。" +msgstr "莫納德諾克 PR-24 式甩棍是種可伸縮收納、輕量、側握式的甩棍, 廣為全世界的執法單位所使用。PR 傳說是指公共關係。啟動來伸出甩棍。" #: lang/json/GENERIC_from_json.py msgid "PR-24 baton (extended)" @@ -29110,7 +29303,7 @@ msgid "" "The Monadnock PR-24 baton is a collapsible, lightweight, side-handle baton " "used by law enforcement all over the world. The PR designation is rumored " "to mean Public Relations. Activate to retract." -msgstr "莫納德諾克PR-24式甩棍是種可伸縮收納、輕量、側握式的甩棍, 廣為全世界的執法單位所使用。PR傳說是指公共關係。啟動來收回甩棍。" +msgstr "莫納德諾克 PR-24 式甩棍是種可伸縮收納、輕量、側握式的甩棍, 廣為全世界的執法單位所使用。PR 傳說是指公共關係。啟動來收回甩棍。" #: lang/json/GENERIC_from_json.py msgid "copper tubing" @@ -29122,7 +29315,7 @@ msgstr[0] "銅管" msgid "" "A copper tube, too thin to be much use as a melee weapon, but will do if " "nothing else is available. Useful in a few crafting recipes." -msgstr "一根銅管, 太薄了很難作為近戰武器, 但可以在製作物品時用到。" +msgstr "一根銅管, 太細了以至於很難作為近戰武器, 但在別無選擇時仍然可以發揮作用。能用於某些物品製作配方。" #: lang/json/GENERIC_from_json.py msgid "glass shiv" @@ -29265,7 +29458,7 @@ msgid "" "This is a dull, cheaply made replica of an early modern sword seeing use in " "the 16th, 17th, and 18th centuries. Called 'broad' to contrast with the " "slimmer rapiers." -msgstr "這是一個 16 到 18 世紀時使用的闊劍的廉價複製品。稱它為 \"闊\" 是為了與細劍做對比。" +msgstr "這是一把鈍而廉價的複製品, 仿一種在 16、17、18 世紀使用的近世刀劍。稱它為 \"闊\" 是對比於細長的護手刺劍。" #: lang/json/GENERIC_from_json.py lang/json/TOOL_from_json.py msgid "cavalry saber" @@ -29282,7 +29475,7 @@ msgstr "這種彎刀從近代起就作為騎兵的裝備。不過這把是粗劣 #: lang/json/GENERIC_from_json.py lang/json/TOOL_from_json.py msgid "rapier" msgid_plural "rapiers" -msgstr[0] "西洋刺劍" +msgstr[0] "護手刺劍" #. ~ Description for rapier #: lang/json/GENERIC_from_json.py @@ -29373,7 +29566,7 @@ msgid "" "flaying the rotten flesh off of walking corpses. Great for when a problem " "comes along." msgstr "" -"一條由皮革編織而成的長帶子, 尾端綁著一個把手。這個玩意最初是用來馴服不聽話的家畜, 現在則有更好的用途--用來把殭屍的腐爛的肉剝下來, 你用的上的。" +"一條由皮革編織而成的長帶子, 尾端綁著一個把手。這個玩意最初是用來馴服不聽話的家畜, 現在則有更好的用途: 用來把殭屍的爛肉剝下來, 你用的上的。" #: lang/json/GENERIC_from_json.py lang/json/TOOL_from_json.py #: lang/json/TOOL_from_json.py @@ -29404,7 +29597,7 @@ msgstr "這把彎刀與不少中東及中亞國家有著關聯。它是鈍的廉 #: lang/json/GENERIC_from_json.py msgid "estoc" msgid_plural "estocs" -msgstr[0] "歐洲劍" +msgstr[0] "穿甲劍" #. ~ Description for estoc #: lang/json/GENERIC_from_json.py @@ -29412,7 +29605,7 @@ msgid "" "This is a thin sword resembling a longsword, a sort of predecessor to the " "rapier. It requires a larger baldric or scabbard, compared to smaller " "swords." -msgstr "這是一把薄劍類似於長劍, 前身為護手刺劍。相較於其他劍它的體積較大, 需收納在大型的刀鞘中。" +msgstr "這是一把類似於長劍的細劍, 前身為護手刺劍。相較於較小的劍, 它需要較大的肩帶或劍鞘。" #. ~ Description for estoc #: lang/json/GENERIC_from_json.py @@ -29663,22 +29856,22 @@ msgstr "關於殭屍血液的醫學數據。" #: lang/json/GENERIC_from_json.py msgid "lab data" msgid_plural "lab data" -msgstr[0] "" +msgstr[0] "實驗室資料" #. ~ Description for lab data #: lang/json/GENERIC_from_json.py msgid "Research archives from a government laboratory." -msgstr "" +msgstr "來自政府實驗室的研究檔案。" #: lang/json/GENERIC_from_json.py msgid "train data" msgid_plural "train data" -msgstr[0] "" +msgstr[0] "列車資料" #. ~ Description for train data #: lang/json/GENERIC_from_json.py msgid "Logistical data on subterranean train routes and schedules." -msgstr "" +msgstr "地下火車路線和時刻表的物流數據。" #: lang/json/GENERIC_from_json.py msgid "atomic coffee maker" @@ -29871,7 +30064,7 @@ msgstr[0] "罐頭封口機" msgid "" "A hand crank powered cast steel machine designed to automatically seal tin " "cans." -msgstr "" +msgstr "一部鋼製的手搖機器, 用於自動密封錫罐。" #: lang/json/GENERIC_from_json.py msgid "carding paddles" @@ -29895,7 +30088,7 @@ msgstr[0] "碳化爐" msgid "" "A stout metal box used for producing charcoal via pyrolysis; the incomplete " "burning of organic materials in the absence of oxygen." -msgstr "一個金屬的長型容器, 利用熱解作用製炭;在缺氧狀態下完全燃燒有機物。" +msgstr "一個金屬的長型容器, 利用熱解作用製炭, 在缺氧狀態下完全燃燒有機物。" #: lang/json/GENERIC_from_json.py msgid "clay pot" @@ -29920,7 +30113,7 @@ msgstr "一個用人力的簡單陶磨用以磨穀物。" #: lang/json/GENERIC_from_json.py msgid "clay teapot" msgid_plural "clay teapots" -msgstr[0] "陶茶壺" +msgstr[0] "陶製茶壺" #. ~ Description for clay teapot #: lang/json/GENERIC_from_json.py @@ -30026,7 +30219,7 @@ msgstr[0] "抓鉤" msgid "" "A folding grappling hook attached to a stout 30-foot long piece of " "lightweight cord. Useful for keeping yourself safe from falls." -msgstr "一個折疊抓鉤接著一條粗壯的30英尺長的輕便線, 能讓你免於墜落的危險。" +msgstr "一個折疊式抓鉤接著一條粗壯的 30 英尺長的輕便線, 能讓你免於墜落的危險。" #: lang/json/GENERIC_from_json.py msgid "sealed jar of pickles" @@ -30193,9 +30386,8 @@ msgstr "這個罐子貯存了一批發酵中的黃瓜。你可在發酵完成後 #: lang/json/GENERIC_from_json.py msgid "" "This is a medieval weapon consisting of a wood shaft tipped with an iron " -"spike. Though large and heavy compared to other spears, its accuracy and " -"damage are unparalleled." -msgstr "一個中世紀的武器由木桿連結鐵刺製成。透過其超群的重量, 其精度和破壞力無與倫比。" +"spike." +msgstr "" #: lang/json/GENERIC_from_json.py msgid "pot" @@ -30332,14 +30524,14 @@ msgstr "一個金屬製的小茶壺。喝下午茶時, 要有個茶壺才完美 #: lang/json/GENERIC_from_json.py msgid "telescoping umbrella" msgid_plural "telescoping umbrellas" -msgstr[0] "摺疊傘" +msgstr[0] "折疊傘" #. ~ Description for telescoping umbrella #: lang/json/GENERIC_from_json.py msgid "" "A telescoping umbrella which collapses down for easy storage, useful for " "keeping dry when wielded." -msgstr "一種可伸縮的摺疊傘, 便於攜帶, 當你不想被淋濕時非常有用。" +msgstr "一種可伸縮的折疊傘, 便於攜帶, 當你不想被淋濕時非常有用。" #: lang/json/GENERIC_from_json.py msgid "tourist guide" @@ -30386,17 +30578,17 @@ msgstr[0] "折疊輕型框架" #. ~ Description for foldable-light frame #: lang/json/GENERIC_from_json.py msgid "A small foldable lightweight frame made from pipework." -msgstr "一個小型的可折疊輕型框架, 使用鋼管製作。" +msgstr "一個小型的折疊式輕型框架, 使用鋼管製作。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "foldable wooden frame" msgid_plural "foldable wooden frames" -msgstr[0] "折疊木製框架" +msgstr[0] "折疊式木製框架" #. ~ Description for foldable wooden frame #: lang/json/GENERIC_from_json.py msgid "A small foldable frame made from scrap wood." -msgstr "一個小型的可折疊木製框架, 使用木碎製作。" +msgstr "一個小型的折疊式木製框架, 使用木碎製作。" #: lang/json/GENERIC_from_json.py msgid "extra-light frame" @@ -30421,32 +30613,32 @@ msgstr "一個大型鋼製框架。製作物品時很有用。" #: lang/json/GENERIC_from_json.py msgid "wire basket" msgid_plural "wire baskets" -msgstr[0] "籃筐" +msgstr[0] "鐵絲籃" #. ~ Description for wire basket #: lang/json/GENERIC_from_json.py msgid "A large wire basket from a shopping cart." -msgstr "購物車上用的大籃筐。" +msgstr "一個從購物車上拆下來的大型鐵絲籃。" #: lang/json/GENERIC_from_json.py msgid "folding wire basket" msgid_plural "folding wire baskets" -msgstr[0] "折疊網籃" +msgstr[0] "折疊式鐵絲籃" #. ~ Description for folding wire basket #: lang/json/GENERIC_from_json.py msgid "A large wire basket from a shopping cart, modified to be foldable." -msgstr "一個從購物車拆下來的大型網籃, 被改造成可折疊式。" +msgstr "一個從購物車上拆下來的大型鐵絲籃, 被改造成可以折疊。" #: lang/json/GENERIC_from_json.py msgid "bike basket" msgid_plural "bike baskets" -msgstr[0] "" +msgstr[0] "自行車籃" #. ~ Description for bike basket #: lang/json/GENERIC_from_json.py msgid "A simple bike basket. It is small and foldable." -msgstr "" +msgstr "一個簡單的自行車籃。它體積小, 並且可以折疊。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "wooden frame" @@ -30533,7 +30725,7 @@ msgstr[0] "消音器" msgid "" "A muffler from a car. Very unwieldy as a weapon. Useful in a few crafting " "recipes." -msgstr "車輛用的消音器。很不適合拿來當武器。製作某些物品時有用。" +msgstr "車輛用的消音器。非常不適合作為武器。能用於某些物品製作配方。" #: lang/json/GENERIC_from_json.py msgid "vehicle controls" @@ -30548,7 +30740,7 @@ msgstr "一組通用於多種車輛的控制器。製作物品時很有用。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "dashboard" msgid_plural "dashboards" -msgstr[0] "" +msgstr[0] "儀表板" #. ~ Description for dashboard #. ~ Description for electronics control unit @@ -30556,12 +30748,12 @@ msgstr[0] "" msgid "" "A vehicle instrument panel with various gauges and switches. Useful for " "crafting." -msgstr "" +msgstr "附有各種儀表和開關的車輛儀表板。製作物品時有用。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "electronics control unit" msgid_plural "electronics control units" -msgstr[0] "" +msgstr[0] "電子控制元件" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py #: lang/json/vehicle_part_from_json.py @@ -30608,12 +30800,12 @@ msgstr "小型的電力馬達。製作物品時很有用。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "tiny electric motor" msgid_plural "tiny electric motors" -msgstr[0] "" +msgstr[0] "微型電動馬達" #. ~ Description for tiny electric motor #: lang/json/GENERIC_from_json.py msgid "A tiny electric motor. Useful for crafting." -msgstr "" +msgstr "微型的電動馬達。製作物品時很有用。" #: lang/json/GENERIC_from_json.py msgid "foot crank" @@ -30807,7 +30999,7 @@ msgstr[0] "木製裝甲板" #. ~ Description for wooden armor kit #: lang/json/GENERIC_from_json.py msgid "A bundle of two by fours prepared to be used as vehicle armor." -msgstr "一塊由2X4 木材組裝而成的木製裝甲板。" +msgstr "一塊由 2X4 木材組裝而成的木製裝甲板。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "steel plating" @@ -30854,7 +31046,7 @@ msgstr "" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "hard plating" msgid_plural "hard platings" -msgstr[0] "厚裝甲板" +msgstr[0] "硬鋼裝甲板" #. ~ Description for hard plating #: lang/json/GENERIC_from_json.py @@ -30974,7 +31166,7 @@ msgstr "" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "bike rack" msgid_plural "bike racks" -msgstr[0] "" +msgstr[0] "自行車架" #. ~ Description for bike rack #: lang/json/GENERIC_from_json.py @@ -31025,7 +31217,7 @@ msgstr "一個有擴音器的立體音響系統。可以安裝在車輛上來播 #: lang/json/GENERIC_from_json.py msgid "chime loudspeakers" msgid_plural "chime loudspeakers" -msgstr[0] "" +msgstr[0] "音樂鈴擴音器" #. ~ Description for chime loudspeakers #: lang/json/GENERIC_from_json.py @@ -31048,12 +31240,12 @@ msgstr "為車輛而設計的輕型甲殼板。" #: lang/json/GENERIC_from_json.py msgid "biosilicified chitin armor kit" msgid_plural "biosilicified chitin armor kits" -msgstr[0] "" +msgstr[0] "生物矽化甲殼裝甲套件" #. ~ Description for biosilicified chitin armor kit #: lang/json/GENERIC_from_json.py msgid "Durable silica-coated chitin plating made for a vehicle." -msgstr "" +msgstr "用於車輛的耐用二氧化矽塗層幾丁質鍍層。" #: lang/json/GENERIC_from_json.py msgid "bone armor kit" @@ -31086,7 +31278,7 @@ msgstr[0] "攝像監控器" #. ~ Description for camera display #: lang/json/GENERIC_from_json.py msgid "A set of small monitors. Required to view cameras' output." -msgstr "一組小型螢幕。查看攝影機輸出的畫面時需要用到。" +msgstr "一組小型螢幕。檢視攝影機輸出的畫面時需要用到。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py #: lang/json/vehicle_part_from_json.py @@ -31137,7 +31329,7 @@ msgid "" "An assembly of tubes, spikes, and wheels, that when dragged along the " "ground, allows a vehicle to plant seeds automatically in suitably tilled " "land." -msgstr "由管子、尖刺、和輪轂組成, 當沿著地面拖動, 能讓車輛在適當的可耕地上自動播種。" +msgstr "由管子、尖刺、和輪轂組成, 當沿著地面拖動, 能讓車輛在適當的耕地上自動播種。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py #: src/vehicle_use.cpp @@ -31176,7 +31368,7 @@ msgid "" "land. This one is equipped with an electronic control system and will avoid" " damaging itself when used on untilled land." msgstr "" -"由管子、尖刺、和輪轂組成, 當沿著地面拖動, 能讓車輛在適當的可耕地上自動播種。這裝置配有一個電子操控系統, 將會避免在不可耕地上使用時損傷自己。" +"由管子、尖刺、和輪轂組成, 當沿著地面拖動, 能讓車輛在適當的耕地上自動播種。這裝置配有一個電子控制系統, 會避免在不可耕地上使用時損傷自己。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py #: src/vehicle_use.cpp @@ -31212,12 +31404,12 @@ msgstr "一套設計用作安裝在車輛上的鎖。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "turret mount" msgid_plural "turret mounts" -msgstr[0] "" +msgstr[0] "砲塔支架" #. ~ Description for turret mount #: lang/json/GENERIC_from_json.py msgid "A universal mount for weapons intended to be installed as turrets." -msgstr "" +msgstr "武器的通用支架, 用於安裝砲塔。" #: lang/json/GENERIC_from_json.py msgid "The Spirit of Aikido" @@ -31380,7 +31572,7 @@ msgstr[0] "五輪書" msgid "" "A primer on Miyamoto Musashi's style of combat and philosophy, Niten Ichi-" "Ryu." -msgstr "一本由宮本武藏所流傳有關戰鬥與兵法的入門書, 名為二天一流。" +msgstr "一本由宮本武藏所傳有關戰鬥與兵法的招式入門書, 名為二天一流。" #: lang/json/GENERIC_from_json.py msgid "The Scorpion Sun Chien" @@ -31480,7 +31672,7 @@ msgstr[0] "武術手冊" #: lang/json/GENERIC_from_json.py msgid "first aid kit" msgid_plural "first aid kits" -msgstr[0] "" +msgstr[0] "急救箱" #. ~ Description for first aid kit #: lang/json/GENERIC_from_json.py @@ -31811,7 +32003,7 @@ msgstr[0] "" msgid "" "Items with are not themselves useful but are instead requirements for " "crafting or repairs" -msgstr "這些東西本身不是很有用, 但在物品製作和修理時會用得上。" +msgstr "這些東西本身不是很有用, 但能用於製作或修理物品。" #: lang/json/GENERIC_from_json.py lang/json/fault_from_json.py msgid "drive belt" @@ -31835,7 +32027,7 @@ msgstr[0] "粗製傳動帶" msgid "" "An improvised belt useful for repairing engines or other industrial " "equipment when no better alternative is available." -msgstr "當沒有更好的選擇, 這條臨時拼湊的皮帶可堪用於修理引擎或其它工業設備。" +msgstr "一條湊合的皮帶。當沒有更好的選擇可用時, 它能用於修理引擎或其它工業設備。" #: lang/json/GENERIC_from_json.py lang/json/fault_from_json.py msgid "air filter" @@ -31859,7 +32051,7 @@ msgstr[0] "粗製空氣過濾器" msgid "" "An improvised air filter useful for repairing engines or other industrial " "equipment when no better alternative is available." -msgstr "當沒有更好的選擇, 這條臨時拼湊的空氣過濾器可堪用於修理引擎或其它工業設備。" +msgstr "一個湊合的空氣過濾器。當沒有更好的選擇可用時, 它能用於修理引擎或其它工業設備。" #: lang/json/GENERIC_from_json.py msgid "automotive filter" @@ -31881,7 +32073,7 @@ msgstr[0] "粗製汽車濾清器" msgid "" "An improvised automotive filter useful for repairing engines or other " "industrial equipment when no better alternative is available." -msgstr "當沒有更好的選擇, 這條臨時拼湊的汽車濾清器可堪用於修理引擎或其它工業設備。" +msgstr "一個湊合的汽車濾清器。當沒有更好的選擇可用時, 它能用於修理引擎或其它工業設備。" #: lang/json/GENERIC_from_json.py msgid "glow plug" @@ -32197,30 +32389,30 @@ msgstr "一件鋼製的小型伸縮式懸臂。連接到車架後, 它能抬起 #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "pallet lifter" msgid_plural "pallet lifters" -msgstr[0] "" +msgstr[0] "托盤升降機" #. ~ Description for pallet lifter #: lang/json/GENERIC_from_json.py msgid "" "A makeshift pallet lifter. If attached to a frame it could be used to lift " "up to 0.5 metric tonnes." -msgstr "" +msgstr "一個粗製的托盤升降機。如果連接到框架, 可用於抬高 0.5 公噸物件。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py #: src/vehicle_use.cpp msgid "rockwheel" msgid_plural "rockwheels" -msgstr[0] "" +msgstr[0] "銑挖機" #. ~ Description for rockwheel #: lang/json/GENERIC_from_json.py msgid "A large and heavy jagged metal disc to dig trenches." -msgstr "" +msgstr "用來挖掘溝槽的大而重的鋸齒狀金屬圓盤。" #: lang/json/GENERIC_from_json.py msgid "airjack" msgid_plural "airjacks" -msgstr[0] "" +msgstr[0] "充氣千斤頂" #. ~ Description for airjack #. ~ Description for air jack system @@ -32228,19 +32420,19 @@ msgstr[0] "" msgid "" "An extendable metal pylon used to replace a portable jack. If mounted to a " "vehicle, it could be used to lift it up." -msgstr "" +msgstr "可擴展的金屬掛架, 用於替換便攜式千斤頂。如果安裝在車輛上, 可以用它將車抬起。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "motorcycle kickstand" msgid_plural "motorcycle kickstands" -msgstr[0] "" +msgstr[0] "摩托車腳架" #. ~ Description for motorcycle kickstand #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "" "A kickstand to keep the bike from falling over. You could use this to lean " "it forward or backward to change a tire." -msgstr "" +msgstr "用來防止車子倒下的腳架。您可以利用它向前或向後傾斜以更換輪胎。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "shredder" @@ -32298,10 +32490,10 @@ msgid "" "tools, and for some insane reason, a press and die set for hand-loading " "ammunition." msgstr "" -"這段廣告摘自一本 DIY 的教學說明書, *福口廚房好友* 聲稱是 *家庭烹飪需求的完美解決方案! *。能夠提供極其便利的真空封裝與食物脫水機能, " -"但是它熱情的推銷詞並沒有提到: A-這東西很難操作, B-你依然需要一個廚房來烹調食物, C-怎麼可能不耗電。若是你想要用它, " -"你必須將這東西裝在車輛上, 或是其他能夠供電的東西。除了烹飪功能, 它還有食品加工機、淨水系統以及能收納額外工具的抽屜, 也因為一些瘋狂的因素, " -"這東西居然還有能手工壓填子彈的工具。" +"這段廣告摘自一本 DIY 的教學說明書, \"福口廚房好友\" 聲稱是 \"家庭烹飪需求的完美解決方案! " +"\"。能夠提供極其便利的真空封裝與食物脫水機能, 但是它熱情的推銷詞並沒有提到: A.這東西很難操作, B.你依然需要一個廚房來烹調食物, " +"C.怎麼可能不耗電。若是你想要用它, 你必須將這東西裝在車輛上, 或是其他能夠供電的東西。除了烹飪功能, " +"它還有食品加工機、淨水系統以及能收納額外工具的抽屜。也因為一些瘋狂的因素, 這東西居然還有能手工壓填子彈的工具。" #: lang/json/GENERIC_from_json.py msgid "vehicle forge rig" @@ -32318,12 +32510,12 @@ msgstr "一個能利用車輛電力的鑄造機。集成工具與儲物空間, #: lang/json/GENERIC_from_json.py msgid "vehicle kiln" msgid_plural "vehicle kilns" -msgstr[0] "" +msgstr[0] "車載電窯" #. ~ Description for vehicle kiln #: lang/json/GENERIC_from_json.py msgid "An electric kiln made to run off a vehicle's storage battery." -msgstr "" +msgstr "使用車輛存儲電力作為電源的電窯。" #: lang/json/GENERIC_from_json.py msgid "RV kitchen unit" @@ -32359,7 +32551,7 @@ msgstr[0] "10 個塑膠袋" #: lang/json/GENERIC_from_json.py msgid "" "10 plastic bags, folded smooth and wrapped tightly together with a string." -msgstr "全新、未拆、一袋10個入。" +msgstr "10 個塑膠袋, 折疊平整並用繩子緊緊包在一起。" #: lang/json/GENERIC_from_json.py msgid "coal pallet" @@ -32437,7 +32629,7 @@ msgstr[0] "老舊破損的狐狸機械布偶" msgid "" "A broken animatronic fox. If it was in bad shape before, it's a wreck now." " For some reason, it is oozing with blood - it's not your blood." -msgstr "一台損毀的狐狸機械布偶, 看得出很久以前就已經狀況不佳, 到現在已經跟殘骸沒兩樣了, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的狐狸機械布偶, 看得出很久以前就已經狀況不佳, 到現在已經跟殘骸沒兩樣了, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "old broken animatronic bunny" @@ -32449,7 +32641,7 @@ msgstr[0] "老舊破損的兔子機械布偶" msgid "" "A broken animatronic bunny. For some reason, it is oozing with blood - it's" " not your blood." -msgstr "一台損毀的兔子機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的兔子機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "old broken animatronic chicken" @@ -32466,7 +32658,7 @@ msgstr "一台損毀的雞型機械布偶, 現在看起來已經沒有什麼吸 msgid "" "A broken animatronic chicken. For some reason, it is oozing with blood - " "it's not your blood." -msgstr "一台損毀的雞型機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的雞型機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "old broken animatronic bear" @@ -32478,7 +32670,7 @@ msgstr[0] "老舊破損的熊型機械布偶" msgid "" "A broken animatronic bear. For some reason, it is oozing with blood - it's " "not your blood." -msgstr "一台損毀的熊型機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的熊型機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken new animatronic bear" @@ -32500,7 +32692,7 @@ msgstr[0] "損毀的蝙蝠機械人偶" msgid "" "A broken animatronic bat. For some reason, it is oozing with blood - it's " "not your blood." -msgstr "一台損毀的蝙蝠機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的蝙蝠機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken animatronic beaver" @@ -32512,7 +32704,7 @@ msgstr[0] "損毀的河狸機械人偶" msgid "" "A broken animatronic beaver. For some reason, it is oozing with blood - " "it's not your blood." -msgstr "一台損毀的河狸機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的河狸機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken animatronic cat" @@ -32524,7 +32716,7 @@ msgstr[0] "損毀的貓型機械人偶" msgid "" "A broken animatronic cat. For some reason, it is oozing with blood - it's " "not your blood." -msgstr "一台損毀的貓型機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的貓型機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken animatronic chipmunk" @@ -32536,7 +32728,7 @@ msgstr[0] "損毀的花栗鼠機械人偶" msgid "" "A broken animatronic chipmunk. For some reason, it is oozing with blood - " "it's not your blood." -msgstr "一台損毀的花栗鼠機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的花栗鼠機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken animatronic cow" @@ -32548,7 +32740,7 @@ msgstr[0] "損毀的牛型機械人偶" msgid "" "A broken animatronic cow. For some reason, it is oozing with blood - it's " "not your blood." -msgstr "一台損毀的牛型機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的牛型機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken animatronic coyote" @@ -32560,7 +32752,7 @@ msgstr[0] "損毀的郊狼機械人偶" msgid "" "A broken animatronic coyote. For some reason, it is oozing with blood - " "it's not your blood." -msgstr "一台損毀的郊狼機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的郊狼機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken animatronic deer" @@ -32572,7 +32764,7 @@ msgstr[0] "損毀的鹿型機械布偶" msgid "" "A broken animatronic deer. For some reason, it is oozing with blood - it's " "not your blood." -msgstr "一台損毀的鹿型機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的鹿型機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken animatronic horse" @@ -32584,7 +32776,7 @@ msgstr[0] "損毀的馬型機械人偶" msgid "" "A broken animatronic horse. For some reason, it is oozing with blood - it's" " not your blood." -msgstr "一台損毀的馬型機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的馬型機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken animatronic pig" @@ -32596,7 +32788,7 @@ msgstr[0] "損毀的豬型機械人偶" msgid "" "A broken animatronic pig. For some reason, it is oozing with blood - it's " "not your blood." -msgstr "一台損毀的豬型機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的豬型機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken animatronic sheep" @@ -32608,7 +32800,7 @@ msgstr[0] "損毀的羊型機械布偶" msgid "" "A broken animatronic sheep. For some reason, it is oozing with blood - it's" " not your blood." -msgstr "一台損毀的羊型機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的羊型機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken animatronic squirrel" @@ -32620,7 +32812,7 @@ msgstr[0] "損毀的松鼠機械人偶" msgid "" "A broken animatronic squirrel. For some reason, it is oozing with blood - " "it's not your blood." -msgstr "一台損毀的松鼠機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的松鼠機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken animatronic child" @@ -32632,7 +32824,7 @@ msgstr[0] "損毀的孩童型機械布偶" msgid "" "A broken animatronic child. For some reason, it is oozing with blood - it's" " not your blood." -msgstr "一台損毀的孩童型機械布偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的孩童型機械布偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken new animatronic fox" @@ -32668,7 +32860,7 @@ msgstr[0] "損毀的狼型機械布偶" msgid "" "A broken animatronic wolf. For some reason, it is oozing with blood - it's " "not your blood." -msgstr "一台損毀的狼型機械人偶, 出於某種原因, 它滲出了血 - 不是你的血。" +msgstr "一台損毀的狼型機械人偶, 出於某種原因, 它滲出了血… 不是你的血。" #: lang/json/GENERIC_from_json.py msgid "broken marionette" @@ -32924,7 +33116,7 @@ msgstr "" #: lang/json/GENERIC_from_json.py msgid "broken riotcontrol turret" msgid_plural "broken riotcontrol turrets" -msgstr[0] "" +msgstr[0] "損壞的鎮暴砲塔" #: lang/json/GENERIC_from_json.py msgid "broken 5.56mm turret" @@ -33174,7 +33366,7 @@ msgstr[0] "" #: lang/json/GENERIC_from_json.py msgid "broken riotcontrol robot" msgid_plural "broken riotcontrol robots" -msgstr[0] "" +msgstr[0] "損壞的鎮暴機器人" #: lang/json/GENERIC_from_json.py msgid "broken chickenwalker" @@ -34115,7 +34307,7 @@ msgstr "" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "upgraded reinforced solar array" msgid_plural "upgraded reinforced solar arrays" -msgstr[0] "" +msgstr[0] "進階強化太陽能板陣列" #. ~ Description for upgraded reinforced solar array #: lang/json/GENERIC_from_json.py @@ -34126,11 +34318,13 @@ msgid "" "However, this comes at the cost of being prohibitively heavy and " "obstructive." msgstr "" +"12 片進階強化太陽能板, 裝設在數公尺高的底盤上。它使脆弱的面板遠離任何潛在的威脅, 還能夠跟踪太陽以提高效率。然而, " +"代價就是令人望而卻步的沉重和妨礙性。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "turret chassis" msgid_plural "turret chassis" -msgstr[0] "" +msgstr[0] "砲塔底盤" #. ~ Description for turret chassis #: lang/json/GENERIC_from_json.py @@ -34142,9 +34336,9 @@ msgid "" "system. It is controlled by a targeting AI that can adapt to the usage of " "whatever weapon that has been loading, with proper programming." msgstr "" -"一個能夠旋轉360度的框架, " -"能通過焊接或是繫帶固定的方式掛載複數的武器系統。它配備了一個易於修改的彈藥儲存容器、一個易於使用的簡易供彈系統。它透過一個設計良好的瞄準AI來控制, " -"能夠適應並操作任何被加載的武器。" +"一個能夠旋轉 360 度的框架, " +"能通過焊接或是繫帶固定的方式掛載複數的武器系統。它配備了一個易於修改的彈藥儲存容器、一個易於使用的簡易供彈系統。它透過一個設計良好的瞄準 AI 來控制," +" 能夠適應並操作任何被加載的武器。" #: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py msgid "diamond frame" @@ -34295,7 +34489,7 @@ msgstr "化學製品" #: lang/json/ITEM_CATEGORY_from_json.py msgid "SPARE PARTS" -msgstr "零部件" +msgstr "備用零件" #: lang/json/ITEM_CATEGORY_from_json.py msgid "ARTIFACTS" @@ -34308,12 +34502,12 @@ msgstr "護具" #: lang/json/MAGAZINE_from_json.py lang/json/vehicle_part_from_json.py msgid "fuel bunker" -msgstr "" +msgstr "燃料儲放庫" #. ~ Description for fuel bunker #: lang/json/MAGAZINE_from_json.py msgid "A bin for holding solid fuel." -msgstr "" +msgstr "放置固體燃料的儲放箱。" #: lang/json/MAGAZINE_from_json.py msgid "ammo belt" @@ -35722,7 +35916,7 @@ msgid "" "apart..." msgstr "" "這是生物學的謎團, 這團黏稠物質經由未知的方式竟然進化出可以緩慢地產生電力的能力, 當它發揮能力的時候會發出低亮度磷光。它也能儲存來自其他源頭的電力, " -"但也會因此而停止發揮它的能力。它似乎柔軟到直接可以拉開成兩個..." +"但也會因此而停止發揮它的能力。它似乎柔軟到直接可以拉開成兩個…" #: lang/json/MAGAZINE_from_json.py msgid "BB hopper" @@ -35866,18 +36060,20 @@ msgstr "輝夜" #. ~ Description for Bright Nights #: lang/json/MOD_INFO_from_json.py msgid "More action-centered, sci-fi, experimental, Cataclysm." -msgstr "以行動為中心、更多的科幻元素、實驗版, 大災變。(譯註: 模組名的原文乃烏日相反, 故譯作輝夜)" +msgstr "" +"更多動作中心、科幻、實驗性的大災變。\n" +"(譯註: 模組名的原文乃烏日相反, 故譯作輝夜)" #: lang/json/MOD_INFO_from_json.py msgid "Craftable Gun Pack" -msgstr "自製槍械包" +msgstr "自製槍械模組" #. ~ Description for Craftable Gun Pack #: lang/json/MOD_INFO_from_json.py msgid "" "Adds more craftable firearms, and gunpowder. WARNING: Breaks intended " "balance." -msgstr "加入了更多的自製槍械, 以及火藥粉。警告: 破壞遊戲平衡。" +msgstr "加入更多的自製槍械, 以及火藥粉。警告: 破壞遊戲平衡。" #: lang/json/MOD_INFO_from_json.py msgid "Crazy Cataclysm" @@ -35886,18 +36082,18 @@ msgstr "瘋狂大災變" #. ~ Description for Crazy Cataclysm #: lang/json/MOD_INFO_from_json.py msgid "Want a little crazy in your Cataclysm? Try this one." -msgstr "想在大災變中添加一點瘋狂? 試試這個。" +msgstr "想在大災變中加入一點瘋狂? 試試這個。" #: lang/json/MOD_INFO_from_json.py msgid "Folding Parts pack" -msgstr "折疊零件包" +msgstr "折疊式零件模組" #. ~ Description for Folding Parts pack #: lang/json/MOD_INFO_from_json.py msgid "" "Makes solar panels and several other parts foldable, and adds foldable " "quarterboards." -msgstr "" +msgstr "使太陽能板和其他數個車輛零件可以折疊, 並加入折疊式的側擋板。" #: lang/json/MOD_INFO_from_json.py msgid "DinoMod" @@ -35910,7 +36106,7 @@ msgstr "加入恐龍。" #: lang/json/MOD_INFO_from_json.py msgid "Icecoon's Arsenal" -msgstr "Icecoon 的軍火庫" +msgstr "軍火庫 (by Icecoon)" #. ~ Description for Icecoon's Arsenal #: lang/json/MOD_INFO_from_json.py @@ -35930,12 +36126,12 @@ msgstr "加倍殭屍速度。" #: lang/json/MOD_INFO_from_json.py msgid "DeadLeaves' Fictional Guns" -msgstr "DeadLeaves 的虛構武器包" +msgstr "虛構武器包 (by DeadLeaves)" #. ~ Description for DeadLeaves' Fictional Guns #: lang/json/MOD_INFO_from_json.py msgid "Adds a bunch of rare, fictional weapons." -msgstr "" +msgstr "加入一堆稀有的虛構武器。" #: lang/json/MOD_INFO_from_json.py msgid "Filthy Clothing" @@ -35946,18 +36142,18 @@ msgstr "骯髒衣物" msgid "" "Worn dirty clothing (dropped by zombies) will cause morale penalties and, if" " hit in combat, infections." -msgstr "穿著由殭屍掉落的髒衣服會導致士氣懲罰, 並且在戰鬥中被擊中會有機會導致感染。" +msgstr "穿著由殭屍掉落的骯髒衣物會導致士氣懲罰, 並且在戰鬥中被擊中會有機會導致感染。" #: lang/json/MOD_INFO_from_json.py msgid "Fuji's More Buildings" -msgstr "" +msgstr "更多建築 (by Fuji)" #. ~ Description for Fuji's More Buildings #: lang/json/MOD_INFO_from_json.py msgid "" "Adds more buildings and more variations to existing buildings. (Requires " "More Locations)" -msgstr "" +msgstr "加入更多建築, 以及為現有建築加入更多變化。" #: lang/json/MOD_INFO_from_json.py msgid "Generic Guns" @@ -35968,71 +36164,71 @@ msgstr "通用槍械" msgid "" "Replaces guns and ammo with generic types. Warning: can cause issues with " "other gun mods." -msgstr "" +msgstr "將槍枝與彈藥替換為通用版本。警告: 與其他槍械模組並用可能導致問題。" #: lang/json/MOD_INFO_from_json.py msgid "Manual Bionic Installation" -msgstr "" +msgstr "手動安裝生化插件" #. ~ Description for Manual Bionic Installation #: lang/json/MOD_INFO_from_json.py msgid "Allows CBMs to be installed by hand. Pairs well with Safe Autodoc." -msgstr "" +msgstr "允許用手安裝生化插件。與 \"安全自動醫生\" 良好配合。" #: lang/json/MOD_INFO_from_json.py msgid "Medieval and Historic Content" -msgstr "中世紀及歷史內容包" +msgstr "中世紀與歷史內容" #. ~ Description for Medieval and Historic Content #: lang/json/MOD_INFO_from_json.py msgid "Assorted fun things for the wannabe knight, legionary, and more." -msgstr "增加了一堆有趣的事物, 讓你扮演騎士、軍團和其他角色。" +msgstr "增加了各式各樣有趣的事物, 讓你扮演騎士、軍團和其他角色。" #: lang/json/MOD_INFO_from_json.py msgid "Modular Turrets" -msgstr "" +msgstr "模組化砲塔" #. ~ Description for Modular Turrets #: lang/json/MOD_INFO_from_json.py msgid "" "Gives turrets swappable firearm modules, which can be reclaimed from broken " "robots." -msgstr "" +msgstr "給予砲塔可替換的槍械模組, 可以從破損的機器人中回收。" #: lang/json/MOD_INFO_from_json.py msgid "More Buildings" -msgstr "" +msgstr "更多建築" #. ~ Description for More Buildings #: lang/json/MOD_INFO_from_json.py msgid "Adds more buildings to game." -msgstr "" +msgstr "在遊戲中加入更多建築物。" #: lang/json/MOD_INFO_from_json.py msgid "More Locations" -msgstr "更多的地點" +msgstr "更多地點" #. ~ Description for More Locations #: lang/json/MOD_INFO_from_json.py msgid "" "Adds new Z-level buildings and dungeons. Still unpolished. Before " "generating a world, you can remove subfolders to nix unwanted locations." -msgstr "加入了新的 Z 軸建築和地城。仍有點粗糙。在創造世界之前, 你可以刪除子文件夾以排除不想要的地方。" +msgstr "加入新的 Z 軸建築和地城。仍有點粗糙。在創造世界之前, 你可以刪除子文件夾以排除不想要的地點。" #: lang/json/MOD_INFO_from_json.py msgid "More Survival Tools" -msgstr "更多的生存工具" +msgstr "更多生存工具" #. ~ Description for More Survival Tools #: lang/json/MOD_INFO_from_json.py msgid "" "For those who prefer being innawoods. Adds several tools, various recipes " "additions/tweaks, plus two new professions." -msgstr "" +msgstr "給那些喜歡進到森林裡的人。加入幾種工具、加入及調整配方、加入兩種新職業。" #: lang/json/MOD_INFO_from_json.py msgid "Mundane Zombies" -msgstr "平凡殭屍" +msgstr "沒有特殊殭屍" #. ~ Description for Mundane Zombies #: lang/json/MOD_INFO_from_json.py @@ -36041,24 +36237,24 @@ msgstr "遊戲中不會出現特殊殭屍。" #: lang/json/MOD_INFO_from_json.py msgid "Mutant NPCs" -msgstr "" +msgstr "NPC 突變" #. ~ Description for Mutant NPCs #: lang/json/MOD_INFO_from_json.py msgid "" "NPCs wandering the wasteland will occasionally have mutations --- your foes " "included. Beware!" -msgstr "" +msgstr "徘徊於廢土的 NPC 偶爾會帶有突變, 包含你的敵人。請小心提防!" #: lang/json/MOD_INFO_from_json.py msgid "NPC traits" -msgstr "" +msgstr "NPC 特質" #. ~ Description for NPC traits #: lang/json/MOD_INFO_from_json.py msgid "" "Add an NPC class that spawns with starting traits, like the player does." -msgstr "添加一個在產生時具有初始特質的NPC職業, 就像玩家一樣。" +msgstr "修改 NPC 職業, 使 NPC 產生時帶有初始特質, 就像玩家一樣。" #: lang/json/MOD_INFO_from_json.py msgid "Mythological Replicas" @@ -36067,7 +36263,7 @@ msgstr "神話武器複製品" #. ~ Description for Mythological Replicas #: lang/json/MOD_INFO_from_json.py msgid "Adds recipes for replicas of mythological weapons." -msgstr "增加製作神話武器複製品的配方。" +msgstr "加入製作神話武器複製品的配方。" #: lang/json/MOD_INFO_from_json.py msgid "Beta National Guard Camp" @@ -36078,25 +36274,25 @@ msgstr "Beta 國民警衛隊營地" msgid "" "Help test the national guard camp before inclusion into the base game. " "Provide feedback in the thread under 'The Lab'" -msgstr "" +msgstr "在 \"國民警衛隊營地\" 正式納入遊戲本體前協助其進行測試。可以到 \"The Lab\" 的討論串提供反饋。" #: lang/json/MOD_INFO_from_json.py msgid "No Acid Zombies" -msgstr "無酸液殭屍" +msgstr "沒有酸液殭屍" #. ~ Description for No Acid Zombies #: lang/json/MOD_INFO_from_json.py msgid "Removes all acid-based zombies from the game." -msgstr "遊戲中不會出現酸液類殭屍。" +msgstr "從遊戲中移除酸液類殭屍。" #: lang/json/MOD_INFO_from_json.py msgid "No Explosive Zombies" -msgstr "無爆裂殭屍" +msgstr "沒有爆裂殭屍" #. ~ Description for No Explosive Zombies #: lang/json/MOD_INFO_from_json.py msgid "Removes all explosion-based zombies from the game." -msgstr "遊戲中不會出現任何爆烈性的殭屍。" +msgstr "從遊戲中移除爆烈性殭屍。" #: lang/json/MOD_INFO_from_json.py msgid "Perfect Reliability" @@ -36107,43 +36303,43 @@ msgstr "完美的可靠性" msgid "" "Vehicle parts are perfectly reliable and never spawn with faults or develop " "them during use" -msgstr "車輛零部件完全可靠, 使用時絕對不會發生故障。" +msgstr "車輛零件完全可靠, 使用時絕對不會發生故障。" #: lang/json/MOD_INFO_from_json.py msgid "No Flaming Weapons" -msgstr "無火焰武器" +msgstr "沒有火焰武器" #. ~ Description for No Flaming Weapons #: lang/json/MOD_INFO_from_json.py msgid "Removes flaming melee weapons." -msgstr "移除近戰類火焰武器。" +msgstr "從遊戲中移除近戰類火焰武器。" #: lang/json/MOD_INFO_from_json.py msgid "No Fungal Monsters" -msgstr "無真菌怪物" +msgstr "沒有真菌怪物" #. ~ Description for No Fungal Monsters #: lang/json/MOD_INFO_from_json.py msgid "Removes fungal monsters and regions from the game." -msgstr "遊戲中不會出現真菌怪物及相應地點。" +msgstr "從遊戲中移除真菌怪物及相應地點。" #: lang/json/MOD_INFO_from_json.py msgid "No Medieval Items" -msgstr "無中世紀物品" +msgstr "沒有中世紀物品" #. ~ Description for No Medieval Items #: lang/json/MOD_INFO_from_json.py msgid "Removes medieval weapons, armors, and specific books." -msgstr "移除中世紀時期的武器、護甲和特有書籍。" +msgstr "從遊戲中移除中世紀時期的武器、護甲和特有書籍。" #: lang/json/MOD_INFO_from_json.py msgid "Disable Mutagens" -msgstr "取消突變劑" +msgstr "沒有突變劑" #. ~ Description for Disable Mutagens #: lang/json/MOD_INFO_from_json.py msgid "Removes mutagen items from the game." -msgstr "遊戲中不會有突變劑物品。" +msgstr "從遊戲中移除突變劑。" #: lang/json/MOD_INFO_from_json.py msgid "Disable NPC Needs" @@ -36156,21 +36352,21 @@ msgstr "使 NPC 不再需要食物、水和休息。" #: lang/json/MOD_INFO_from_json.py msgid "No Antique Firearms" -msgstr "無上古槍械" +msgstr "沒有古董槍械" #. ~ Description for No Antique Firearms #: lang/json/MOD_INFO_from_json.py msgid "Removes all black powder and pre-Cold War firearms." -msgstr "移除所有使用黑火藥, 以及冷戰前的槍械。" +msgstr "從遊戲中移除所有使用黑火藥、以及冷戰前的槍械。" #: lang/json/MOD_INFO_from_json.py msgid "Disable Religious Texts" -msgstr "取消宗教文本" +msgstr "沒有宗教文書" #. ~ Description for Disable Religious Texts #: lang/json/MOD_INFO_from_json.py msgid "Removes religious text items from the game." -msgstr "遊戲中不會有宗教類文書。" +msgstr "從遊戲中移除宗教文書。" #: lang/json/MOD_INFO_from_json.py msgid "Prevent Zombie Revivication" @@ -36183,49 +36379,49 @@ msgstr "殭屍不再會復活。" #: lang/json/MOD_INFO_from_json.py msgid "No Fictional Guns" -msgstr "無虛構槍械" +msgstr "沒有虛構槍械" #. ~ Description for No Fictional Guns #: lang/json/MOD_INFO_from_json.py msgid "Removes fictional conventional firearms and ammunition." -msgstr "移除虛構的槍械和彈藥。" +msgstr "從遊戲中移除虛構的槍械和彈藥。" #: lang/json/MOD_INFO_from_json.py msgid "No Survivor Armor" -msgstr "無生存者護甲" +msgstr "沒有生存者護甲" #. ~ Description for No Survivor Armor #: lang/json/MOD_INFO_from_json.py msgid "Removes survivor armor." -msgstr "移除生存者護甲。" +msgstr "從遊戲中移除生存者護甲。" #: lang/json/MOD_INFO_from_json.py msgid "No Triffids" -msgstr "無食人樹" +msgstr "沒有食人樹" #. ~ Description for No Triffids #: lang/json/MOD_INFO_from_json.py msgid "Removes triffids from the game." -msgstr "遊戲中不會出現食人樹怪物。" +msgstr "從遊戲中移除食人樹。" #: lang/json/MOD_INFO_from_json.py msgid "No Zombie Animals" -msgstr "無動物類殭屍" +msgstr "沒有殭屍動物" #. ~ Description for No Zombie Animals #: lang/json/MOD_INFO_from_json.py msgid "Removes zombie animals from the game." -msgstr "遊戲中不會出現動物類殭屍。" +msgstr "從遊戲中移除殭屍動物。" #: lang/json/MOD_INFO_from_json.py msgid "No Monsters" -msgstr "無野生怪物" +msgstr "沒有怪物" #. ~ Description for No Monsters #: lang/json/MOD_INFO_from_json.py msgid "" "Removes all monsters from the game, save for those in the WILDLIFE category." -msgstr "遊戲中不會有野生怪物。" +msgstr "從遊戲中移除野生動物分類以外的所有怪物。" #: lang/json/MOD_INFO_from_json.py msgid "Classic Roguelike Classes" @@ -36236,38 +36432,38 @@ msgstr "經典 Roguelike 職業" msgid "" "Adds a set of professions which correspond to classic Roguelike character " "archetypes." -msgstr "加入一些職業, 對應經典 Roguelike 角色原型。" +msgstr "加入一些符合經典 Roguelike 角色原型的職業。" #: lang/json/MOD_INFO_from_json.py msgid "Safe Autodoc" -msgstr "" +msgstr "安全自動醫生" #. ~ Description for Safe Autodoc #: lang/json/MOD_INFO_from_json.py msgid "" "Makes Autodoc operations completely safe, independent of the player's skill." -msgstr "" +msgstr "使自動醫生的手術完全安全, 與玩家的技能無關。" #: lang/json/MOD_INFO_from_json.py msgid "Salvaged Robots" -msgstr "" +msgstr "回收機器人" #. ~ Description for Salvaged Robots #: lang/json/MOD_INFO_from_json.py msgid "" "Expands the types of robots and allows players to jury-rig broken robots " "into functioning companions." -msgstr "" +msgstr "擴充機器人的類型, 並允許玩家修復損壞的機器人作為同伴使用。" #: lang/json/MOD_INFO_from_json.py src/debug_menu.cpp msgid "Sleep Deprivation" -msgstr "" +msgstr "睡眠剝奪" #. ~ Description for Sleep Deprivation #: lang/json/MOD_INFO_from_json.py msgid "" "Enables sleep deprivation mechanics independently of a player's fatigue." -msgstr "" +msgstr "啟用睡眠剝奪機制, 與玩家的疲勞度無關。" #: lang/json/MOD_INFO_from_json.py msgid "Slow Zombies" @@ -36285,29 +36481,29 @@ msgstr "技能影響屬性" #. ~ Description for StatsThroughSkills #: lang/json/MOD_INFO_from_json.py msgid "Allows stats to raise naturally via skill progression." -msgstr "屬性會隨技能發展自然提昇。(StatsThroughSkills)" +msgstr "屬性會隨技能發展自然提昇。" #: lang/json/MOD_INFO_from_json.py msgid "Tanks and Other Vehicles" -msgstr "坦克及其他車輛" +msgstr "坦克與其他車輛" #. ~ Description for Tanks and Other Vehicles #: lang/json/MOD_INFO_from_json.py msgid "" "Adds a few armored fighting vehicles and other such things, requires Vehicle" " Additions Pack." -msgstr "加入一些裝甲車及其他類似的東西, 需要和 \"新增車輛模組包\" 同時使用。" +msgstr "加入一些裝甲車與其他類似的東西。" #: lang/json/MOD_INFO_from_json.py msgid "Bens GF recipes" -msgstr "" +msgstr "無麩質配方 (by Ben)" #. ~ Description for Bens GF recipes #: lang/json/MOD_INFO_from_json.py msgid "" "Some simple gluten free and lactose free alternative recipe options. NOT " "EXHAUSTIVE." -msgstr "" +msgstr "一些簡單的無麩質和無乳糖替代配方選項。(並不完全)" #: lang/json/MOD_INFO_from_json.py msgid "Tough Zombies" @@ -36320,12 +36516,12 @@ msgstr "加倍殭屍血量。" #: lang/json/MOD_INFO_from_json.py msgid "Urban Development" -msgstr "" +msgstr "城市發展" #. ~ Description for Urban Development #: lang/json/MOD_INFO_from_json.py msgid "Holder for suburban and urban buildings." -msgstr "" +msgstr "為郊區和城市的建築提供加固。" #: lang/json/MOD_INFO_from_json.py msgid "Tall Buildings" @@ -36349,27 +36545,27 @@ msgstr "賜予所有殭屍完美的夜視能力。" #: lang/json/MOD_INFO_from_json.py msgid "Alternative Map Key" -msgstr "" +msgstr "替換建築代碼" #. ~ Description for Alternative Map Key #: lang/json/MOD_INFO_from_json.py msgid "" "Changes the overmap to be more readable. Buildings are color coded by type " "and use initial letter of their names instead of ^v<>." -msgstr "" +msgstr "讓大地圖更具有可讀性。除了依建築類型有不同的顏色外, 使用建築名稱的首字母替代 ^v<> 符號。" #: lang/json/MOD_INFO_from_json.py msgid "Bionics Systems Mod" -msgstr "" +msgstr "生化插件模組" #. ~ Description for Bionics Systems Mod #: lang/json/MOD_INFO_from_json.py msgid "Adds and rebalances bionics and CBMs." -msgstr "" +msgstr "加入並重新平衡生化插件。" #: lang/json/MOD_INFO_from_json.py msgid "Vehicle Additions Pack" -msgstr "新增車輛模組包" +msgstr "新增車輛模組" #. ~ Description for Vehicle Additions Pack #: lang/json/MOD_INFO_from_json.py @@ -36385,34 +36581,34 @@ msgstr "烏日到站" #. ~ Description for Dark Days Ahead #: lang/json/MOD_INFO_from_json.py msgid "Core content for Cataclysm-DDA" -msgstr "代誌大條 - 烏日到站 的核心內容" +msgstr "\"代誌大條 - 烏日到站\" 的核心內容" #: lang/json/MOD_INFO_from_json.py msgid "Makeshift Items Mod" -msgstr "" +msgstr "土製物品模組" #. ~ Description for Makeshift Items Mod #: lang/json/MOD_INFO_from_json.py msgid "Adds more improvised item variants and rebalances existing ones." -msgstr "" +msgstr "加入更多變的土製物品, 並且重新平衡既有的土製物品。" #: lang/json/MOD_INFO_from_json.py msgid "Mapgen Demo" -msgstr "" +msgstr "地圖產生器測試版" #. ~ Description for Mapgen Demo #: lang/json/MOD_INFO_from_json.py msgid "Demo for JSONized mapgens (FEMA, megastore, missile silo)." -msgstr "" +msgstr "JSONized 地圖產生器的測試版 (聯邦緊急事務管理署營地、大賣場、飛彈發射井)。" #: lang/json/MOD_INFO_from_json.py msgid "Classes and Scenarios Mod" -msgstr "職業和劇情模組" +msgstr "職業與劇情模組" #. ~ Description for Classes and Scenarios Mod #: lang/json/MOD_INFO_from_json.py msgid "Adds new classes and scenarios while rebalancing some existing ones." -msgstr "添加新的職業和劇情, 同時重新平衡一些既有的職業和劇情。" +msgstr "加入新的職業和劇情, 同時重新平衡一些既有的職業和劇情。" #: lang/json/MOD_INFO_from_json.py msgid "Necromancy" @@ -36425,13 +36621,13 @@ msgstr "增加復活生物做為奴隸的能力。" #: lang/json/MOD_INFO_from_json.py msgid "No Sci-Fi Equipment" -msgstr "無科幻裝備" +msgstr "沒有科幻裝備" #. ~ Description for No Sci-Fi Equipment #: lang/json/MOD_INFO_from_json.py msgid "" "Removes far-future Sci-Fi items such as powered armor and energy weapons." -msgstr "移除未來的科幻物品, 如動力裝甲和能量武器。" +msgstr "從遊戲中移除未來的科幻物品, 如動力裝甲和能量武器。" #: lang/json/MOD_INFO_from_json.py msgid "Simplified Nutrition" @@ -36444,12 +36640,12 @@ msgstr "停用維他命需求。" #: lang/json/MOD_INFO_from_json.py msgid "Extended Realistic Guns" -msgstr "更豐富的現實槍械" +msgstr "擴充真實槍械" #. ~ Description for Extended Realistic Guns #: lang/json/MOD_INFO_from_json.py msgid "Adds more overlapping ammo types and more real-world firearms." -msgstr "添加更多重疊的彈藥類型和更多的現實槍械。" +msgstr "加入更多重疊的彈藥類型和更多的現實世界槍械。" #: lang/json/MONSTER_from_json.py msgid "debug monster" @@ -36458,7 +36654,7 @@ msgstr "除錯怪物" #. ~ Description for debug monster #: lang/json/MONSTER_from_json.py msgid "This monster exists only for testing purposes." -msgstr "只供測試用的怪物。" +msgstr "這個怪物只為了除錯目的而存在。" #: lang/json/MONSTER_from_json.py msgid "albino penguin" @@ -36504,17 +36700,6 @@ msgid "" "navigate through tricky terrain at rapid speeds." msgstr "夜行蝙蝠的一種, 一種群居性的吃昆蟲的有翅哺乳類。其棲息於洞窟或凹地, 利用超音波來進行定位, 同時夠在錯綜複雜的地形快速的飛行。" -#: lang/json/MONSTER_from_json.py -msgid "Smoky bear" -msgstr "煙霧熊" - -#. ~ Description for Smoky bear -#: lang/json/MONSTER_from_json.py -msgid "" -"A smoking husk is all that remains of this once proud bear. Its black eyes " -"gaze at you with malice... and hunger." -msgstr "這隻曾經驕傲的熊只剩下煙霧外表。它的黑眼注視著你...帶著惡意和飢餓。" - #: lang/json/MONSTER_from_json.py msgid "scarred zombie" msgstr "疤面殭屍" @@ -36556,18 +36741,18 @@ msgstr "一團彷彿活著的石油滲出地面的黑色黏稠物。" #: lang/json/MONSTER_from_json.py msgid "brain blob" -msgstr "黏液球首腦" +msgstr "黏球怪首腦" #. ~ Description for brain blob #: lang/json/MONSTER_from_json.py msgid "" "A gigantic black blob of viscous goo, oozing across the ground like a glob " "of living oil. Other blobs seem to swarm around it." -msgstr "一個又大又黏的黑色黏液, 在從地面上流來流去, 就像一團有生命的原油球。其他的黏液球似乎都聚集在它的身邊。" +msgstr "一個又大又黏的黑色黏稠物, 在從地面上流來流去, 就像一團有生命的原油球。其他的黏液球似乎都聚集在它的身邊。" #: lang/json/MONSTER_from_json.py msgid "big blob" -msgstr "大型黏液怪" +msgstr "大型黏球怪" #. ~ Description for big blob #: lang/json/MONSTER_from_json.py @@ -36578,7 +36763,7 @@ msgstr "一團彷彿活著的石油滲出地面的黑色黏稠物。" #: lang/json/MONSTER_from_json.py msgid "small blob" -msgstr "小黏球怪" +msgstr "小型黏球怪" #. ~ Description for small blob #: lang/json/MONSTER_from_json.py @@ -36631,7 +36816,7 @@ msgid "" "This boomer, normally swollen and ready to burst, has strengthened and " "solidified. The bile dribbling from its mouth also appears to have " "changed..." -msgstr "這個隨時會爆裂的嘔吐者同樣腫脹, 但變得更強壯更堅硬。從它口中滴落的膽汁似乎也不同了..." +msgstr "這個隨時會爆裂的嘔吐者同樣腫脹, 但變得更強壯更堅硬。從它口中滴落的膽汁似乎也不同了…" #: lang/json/MONSTER_from_json.py msgid "breather" @@ -36689,7 +36874,7 @@ msgid "" "against attackers, it is an effective automated sentry, though production " "was limited due to a legal dispute." msgstr "" -"Northrup ATSV是大型、重裝甲、有一對膝蓋後彎雙腳的武裝機器人, 配備一組40mm的反車輛榴彈砲、5.56mm的人員殺傷機槍, " +"Northrup ATSV 是大型、重裝甲、有一對膝蓋後彎雙腳的武裝機器人, 配備一組 40mm 的反車輛榴彈砲、5.56mm 的人員殺傷機槍, " "並能讓自己通電來對付攻擊者, 它是一個效率極高的自動化哨兵, 但因為它有合法性的爭議, 製造的數量並不多。" #: lang/json/MONSTER_from_json.py @@ -36699,10 +36884,10 @@ msgstr "C.H.U.D." #. ~ Description for C.H.U.D. #: lang/json/MONSTER_from_json.py msgid "" -"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " +"The C.H.U.D. or Cannibalistic Humanoid Underground Dweller. A human being " "turned pale and mad from years of underground isolation." msgstr "" -"這是C.H.U.D - Cannibalistic Humanoid Underground Dweller " +"這是 C.H.U.D - Cannibalistic Humanoid Underground Dweller " "(寄居地下的食人者)。一個住在地下道多年而蒼白發瘋的人。" #: lang/json/MONSTER_from_json.py @@ -36824,7 +37009,7 @@ msgstr "一部搭載大型高解析鏡頭的無人飛行機器, 懸浮在地面 #: lang/json/MONSTER_from_json.py msgid "zombie burner" -msgstr "" +msgstr "燃焰殭屍" #. ~ Description for zombie burner #: lang/json/MONSTER_from_json.py @@ -36835,6 +37020,8 @@ msgid "" "is attached to a tank of napalm strapped onto its back, which trickles its " "contents onto the ground." msgstr "" +"當槍林彈雨也無法阻止世界末日時, 軍方嘗試改用火攻。這戴著防毒面具的傢伙說明了軍方早已失敗。它身上焦黑的服裝破破爛爛的, " +"掛在身體上的火焰噴射器連到綁在背上的凝固汽油燃料桶上, 桶內的東西正朝地上滴落著。" #: lang/json/MONSTER_from_json.py msgid "flaming eye" @@ -36850,6 +37037,8 @@ msgid "" "unearthly presence filling you with dread at the prospect of falling under " "its baleful gaze." msgstr "" +"一個人體大小的巨大眼球, 以未知的力量在空中飛舞著。超自然的閃爍藍色火焰縈繞著它, 它有個熾熱的黃色虹膜, 以及像貓一樣直線形的瞳孔, " +"數根皺褶的黑色捲鬚隨著它慢慢漂移而垂吊在眼球上。對它鬼怪般的存在讓你陷入深深的恐懼中, 懼怕著它那滿懷惡意的凝視。" #: lang/json/MONSTER_from_json.py msgid "flesh angel" @@ -36872,7 +37061,7 @@ msgid "" "A half polypous, utterly alien creature. It's only partly material and has " "the ability to fly, despite the absence of wings. It produces strange " "whistling noises which send cold shivers of primal terror down your spine" -msgstr "" +msgstr "半截的水螅形狀, 絕對是外星生物。它只有一部分的組織, 儘管沒有翅膀卻能飛在天上。它發出奇異的嘯叫聲, 讓你聽到膽戰心驚, 脊骨發涼。" #: lang/json/MONSTER_from_json.py msgid "fungal blossom" @@ -36938,7 +37127,7 @@ msgstr "真菌尖塔" msgid "" "An enormous fungal spire, towering over the ground. It pulsates slowly, " "continuously growing new defenses." -msgstr "在地面之上的一個高達30英尺的巨大真菌尖塔, 它慢慢的搏動, 並不斷增長。" +msgstr "在地面之上的一個高達 30 英尺的巨大真菌尖塔, 它慢慢的搏動, 並不斷增長。" #: lang/json/MONSTER_from_json.py msgid "giant fungal blossom" @@ -37025,6 +37214,8 @@ msgid "" "white slobber down its chest. Its mere presence fills you with an " "unfathomable dread." msgstr "" +"這是公牛和男人之間某種不自然的混合。與傳說中的牛頭怪完全不同, 它在一個不起眼的人體上頭卻是一顆毛茸茸的白牛頭。穿著低垂的襪子和染色的騎師短褲, " +"咕嚕咕嚕地發出喉音, 一串白色的口水掛在它的胸口。光是看到它就讓你心裡充滿巨大的恐懼。" #: lang/json/MONSTER_from_json.py msgid "graboid" @@ -37037,6 +37228,7 @@ msgid "" "opens to reveal hundreds of writhing tongues with razor sharp edges. It " "keeps most of its enormous body hidden underground." msgstr "" +"這是一種巨大的野獸, 跟半台卡車一樣大, 由三片嘴唇組成的大嘴巴, 打開時會看到數以百計帶有鋒利邊緣的扭曲舌頭。它將巨大身體的大部分隱藏在地下。" #: lang/json/MONSTER_from_json.py msgid "gracken" @@ -37052,6 +37244,8 @@ msgid "" "rapidly as to appear a little more than a black blur of claws. Gazing upon " "its disturbing form fills you with an unspeakable terror." msgstr "" +"這是某種形式的邪惡怪物。畸異的黑色、光滑且油膩的皮膚, 令人嫌惡的角互相對著彎曲。身材高大修長, 陰影不自然地依附在它模糊的人形上, " +"隨著它不停地搖曳著, 它的手抽搐和顫抖的如此迅速, 以至於只能依稀看到像是黑色的爪子。凝視著它那糟心的形體, 讓你深感無法言喻的恐怖。" #: lang/json/MONSTER_from_json.py msgid "half worm" @@ -37156,7 +37350,7 @@ msgstr "輻射遊蕩者" msgid "" "This rotting corpse seeps a glowing ooze from its lesions. A strange " "tattered jumpsuit marks it as an oddity across the wasteland." -msgstr "這隻腐敗的殭屍身上的傷口流出會發光的黏液;他身上破爛的傘兵服讓他看起來像是一個穿過荒野的太空人。" +msgstr "這隻腐敗的殭屍身上的傷口流出會發光的黏液, 他身上破爛的傘兵服讓他看起來像是一個穿過荒野的太空人。" #: lang/json/MONSTER_from_json.py msgid "jabberwock" @@ -37229,7 +37423,7 @@ msgstr "黏液蛞蝓" #. ~ Description for slimespring #: lang/json/MONSTER_from_json.py msgid "A familiar-looking blob of goo. It sprouts the occasional eyestalk." -msgstr "看起來有點像是黏液球, 上面加了一隻像蝸牛一樣的眼睛。" +msgstr "看起來有點像是黏球怪, 上面加了一隻像蝸牛一樣的眼睛。" #: lang/json/MONSTER_from_json.py msgid "razorclaw" @@ -37360,7 +37554,7 @@ msgstr "巨大蛞蝓" msgid "" "A mutated leopard slug, as wide as a golf cart. Venom dripping from its " "fanged maw, it slithers ahead slowly, leaving a trail of glistening slime." -msgstr "一隻變種的豹紋蛞蝓, 大約像高爾夫球車寬。它的毒牙滴下毒液, 緩慢的前進, 沿路留下了黏液痕。" +msgstr "一隻變種的豹紋蛞蝓, 跟高爾夫球車一樣寬。它的毒牙滴下毒液, 緩慢的前進, 沿路留下了黏液痕。" #: lang/json/MONSTER_from_json.py msgid "spore cloud" @@ -37392,7 +37586,7 @@ msgstr "那東西" msgid "" "An amorphous black creature, detaching and sprouting tentacles without any " "apparent pause." -msgstr "一種無定形的黑色生物, 其伸出的觸手迅速的扭動著。" +msgstr "一種不定形的黑色生物, 其伸出的觸手迅速的扭動著。" #: lang/json/MONSTER_from_json.py msgid "tribot" @@ -37985,14 +38179,14 @@ msgstr "曾經是個軍人, 它現在從頭到腳都穿著戰鬥裝備, 移動 #: lang/json/MONSTER_from_json.py msgid "zombie military pilot" -msgstr "" +msgstr "殭屍飛行軍官" #. ~ Description for zombie military pilot #: lang/json/MONSTER_from_json.py msgid "" "Once a pilot, it is dressed in basic military fatigues, aviator sunglasses, " "and a sturdy looking helmet." -msgstr "" +msgstr "曾經是飛行員, 穿著軍裝, 戴著飛行員墨鏡和堅固的頭盔。" #: lang/json/MONSTER_from_json.py msgid "spitter zombie" @@ -38078,7 +38272,7 @@ msgstr "一隻看起來普通的美洲獅, 但是它的後腳腫脹, 並且從 #: lang/json/MONSTER_from_json.py msgid "skeletal juggernaut" -msgstr "" +msgstr "骸骨巨人" #. ~ Description for skeletal juggernaut #: lang/json/MONSTER_from_json.py @@ -38103,14 +38297,14 @@ msgstr "一個被馴化的原雞, 可能仍然是世界上數量最多的鳥類 #: lang/json/MONSTER_from_json.py msgid "grouse" -msgstr "" +msgstr "松雞" #. ~ Description for grouse #: lang/json/MONSTER_from_json.py msgid "" "A very common game bird, these creatures remind you of what a wild chicken " "must have been like." -msgstr "" +msgstr "這是一種常見的野生鳥類, 這些生物會讓你想起野雞該有的模樣。" #: lang/json/MONSTER_from_json.py msgid "crow" @@ -38136,12 +38330,12 @@ msgstr "一隻綠頭鴨, 於河流或其他水體附近很常見。主要以昆 #: lang/json/MONSTER_from_json.py msgid "goose" -msgstr "" +msgstr "鵝" #. ~ Description for goose #: lang/json/MONSTER_from_json.py msgid "A Canadian goose, a common waterfowl that regrets leaving Canada." -msgstr "" +msgstr "加拿大鵝, 一種常見的水禽, 後悔離開加拿大。" #: lang/json/MONSTER_from_json.py msgid "turkey" @@ -38156,14 +38350,14 @@ msgstr "一種大而多彩的鳥, 原產於北美洲的森林。它的頭部和 #: lang/json/MONSTER_from_json.py msgid "pheasant" -msgstr "" +msgstr "雉雞" #. ~ Description for pheasant #: lang/json/MONSTER_from_json.py msgid "" "A medium sized game bird that can have bright feathers depending on the sex " "and species." -msgstr "" +msgstr "中等大小的野生鳥類, 根據性別和種類不同, 會有亮麗的羽毛。" #: lang/json/MONSTER_from_json.py msgid "cockatrice" @@ -38535,7 +38729,7 @@ msgid "" "These things were once considered pests not worth eating, then some " "marketing genius started selling them to people as a delicacy and they took " "off in popularity... and price." -msgstr "這些東西曾經被認為是有毒不能吃, 然後一些行銷天才開始將牠的美味推銷給人們, 使得牠們的知名度飛躍式的提升......還有價格。" +msgstr "這些東西曾經被認為是有毒不能吃, 然後一些行銷天才開始將牠的美味推銷給人們, 使得牠們的知名度飛躍式的提升… 還有價格。" #: lang/json/MONSTER_from_json.py msgid "crayfish" @@ -38546,7 +38740,7 @@ msgstr "" msgid "" "If you could get ahold of a bunch more of these, a hefty pot of boiling " "water, and some spicy seasonings..." -msgstr "如果你可以抓一堆這東西, 準備一大鍋煮沸的開水, 再配上一些辛辣的調味料......" +msgstr "如果你可以抓一堆這東西, 準備一大鍋煮沸的開水, 再配上一些辛辣的調味料…" #: lang/json/MONSTER_from_json.py msgid "seweranha" @@ -38820,7 +39014,7 @@ msgstr "一隻全身甲殼的紅色螞蟻。牠有一對扭動的觸角與有毒 #: lang/json/MONSTER_from_json.py msgid "giant acidic ant" -msgstr "" +msgstr "酸液巨蟻" #. ~ Description for giant acidic ant #: lang/json/MONSTER_from_json.py @@ -38831,7 +39025,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "acidic ant larva" -msgstr "" +msgstr "酸液螞蟻幼蟲" #. ~ Description for acidic ant larva #: lang/json/MONSTER_from_json.py @@ -38842,7 +39036,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "acidic queen ant" -msgstr "" +msgstr "酸液蟻后" #. ~ Description for acidic queen ant #: lang/json/MONSTER_from_json.py @@ -38854,7 +39048,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "acidic soldier ant" -msgstr "" +msgstr "酸液兵蟻" #. ~ Description for acidic soldier ant #: lang/json/MONSTER_from_json.py @@ -39089,10 +39283,10 @@ msgid "" msgstr "棲息在北方森林的白尾鹿, 靈敏健壯的草食動物, 是郊狼、狼群、巨大蜘蛛變異體喜愛的獵物。" #: lang/json/MONSTER_from_json.py -msgid "labrador mutt" +msgid "Labrador mutt" msgstr "" -#. ~ Description for labrador mutt +#. ~ Description for Labrador mutt #: lang/json/MONSTER_from_json.py msgid "" "This once average Labrador mixed breed dog has clearly gone feral. You can " @@ -39101,10 +39295,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "labrador puppy" +msgid "Labrador puppy" msgstr "" -#. ~ Description for labrador puppy +#. ~ Description for Labrador puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Labrador puppy. Much safer to tame than adult " @@ -39118,7 +39312,7 @@ msgstr "" #. ~ Description for bulldog #: lang/json/MONSTER_from_json.py msgid "" -"The American Bulldog is a hardy, well built dog, that seems suited for " +"The American bulldog is a hardy, well built dog, that seems suited for " "surviving the apocalypse." msgstr "" @@ -39129,7 +39323,7 @@ msgstr "" #. ~ Description for bulldog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless American Bulldog puppy. Much safer to tame than " +"An adorable, defenseless American bulldog puppy. Much safer to tame than " "adult counterparts." msgstr "" @@ -39140,10 +39334,10 @@ msgstr "" #. ~ Description for pit bull mix #: lang/json/MONSTER_from_json.py msgid "" -"The oft-misunderstood Pit Bull is not actually a single breed but a label " -"for several such as American Pit Bull Terrier and American Staffordshire " -"Terrier. Average abilities and well-known for their 'lock jaw' which isn't " -"real but their incredible determination is." +"The oft-misunderstood pit bull is not actually a single breed but a label " +"for several such as the American pit bull terrier and American Staffordshire" +" terrier. Average abilities and well-known for their 'lock jaw' which isn't" +" real but their incredible determination is." msgstr "" #: lang/json/MONSTER_from_json.py @@ -39153,7 +39347,7 @@ msgstr "" #. ~ Description for pit bull puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Pit Bull puppy. Much safer to tame than adult " +"An adorable, defenseless pit bull puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -39164,7 +39358,7 @@ msgstr "" #. ~ Description for beagle #: lang/json/MONSTER_from_json.py msgid "" -"An adorable Beagle that has managed to survive the apocalypse. Being agile " +"An adorable beagle that has managed to survive the apocalypse. Being agile " "and small, they are difficult to shoot at. Generally attacks in packs." msgstr "" @@ -39175,7 +39369,7 @@ msgstr "" #. ~ Description for beagle puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Beagle puppy. Much safer to tame than adult " +"An adorable, defenseless beagle puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -39187,7 +39381,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "" "An athletic and hyperactive dog that loves to herd animals and jump, the " -"Border Collie is an agile attacker. Although they can be easy to train, " +"border collie is an agile attacker. Although they can be easy to train, " "they don't work well in packs." msgstr "" @@ -39198,7 +39392,7 @@ msgstr "" #. ~ Description for border collie puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Border Collie puppy. Much safer to tame than adult" +"An adorable, defenseless border collie puppy. Much safer to tame than adult" " counterparts." msgstr "" @@ -39209,7 +39403,7 @@ msgstr "" #. ~ Description for boxer mastiff #: lang/json/MONSTER_from_json.py msgid "" -"An ordinary breed full of affection, the Boxer Mastiff doesn't otherwise " +"An ordinary breed full of affection, the boxer mastiff doesn't otherwise " "stand out amongst other dogs with its capabilities." msgstr "" @@ -39220,15 +39414,15 @@ msgstr "" #. ~ Description for boxer puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Boxer puppy. Much safer to tame than adult " +"An adorable, defenseless boxer puppy. Much safer to tame than adult " "counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "chihuahua" +msgid "Chihuahua" msgstr "" -#. ~ Description for chihuahua +#. ~ Description for Chihuahua #: lang/json/MONSTER_from_json.py msgid "" "It's a tiny Chihuahua. How it has managed to survive is a miracle; although" @@ -39236,10 +39430,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "chihuahua puppy" +msgid "Chihuahua puppy" msgstr "" -#. ~ Description for chihuahua puppy +#. ~ Description for Chihuahua puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Chihuahua puppy. Much safer to tame than adult " @@ -39264,15 +39458,15 @@ msgstr "" #. ~ Description for dachshund puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Dachshund puppy. Much safer to tame than adult " +"An adorable, defenseless dachshund puppy. Much safer to tame than adult " "counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "german shepherd" +msgid "German shepherd" msgstr "" -#. ~ Description for german shepherd +#. ~ Description for German shepherd #: lang/json/MONSTER_from_json.py msgid "" "The original K-9 breed. An easy to train and great attack dog that will " @@ -39280,21 +39474,21 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "german shepherd puppy" +msgid "German shepherd puppy" msgstr "" -#. ~ Description for german shepherd puppy +#. ~ Description for German shepherd puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless German Shepherd puppy. Much safer to tame than " +"An adorable, defenseless German shepherd puppy. Much safer to tame than " "adult counterparts." msgstr "" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees" +msgid "Great Pyrenees" msgstr "" -#. ~ Description for great pyrenees +#. ~ Description for Great Pyrenees #: lang/json/MONSTER_from_json.py msgid "" "A large and powerful breed, the Great Pyrenees has a beautiful, thick white " @@ -39303,10 +39497,10 @@ msgid "" msgstr "" #: lang/json/MONSTER_from_json.py -msgid "great pyrenees puppy" +msgid "Great Pyrenees puppy" msgstr "" -#. ~ Description for great pyrenees puppy +#. ~ Description for Great Pyrenees puppy #: lang/json/MONSTER_from_json.py msgid "" "An adorable, defenseless Great Pyrenees puppy. Much safer to tame than " @@ -39320,7 +39514,7 @@ msgstr "" #. ~ Description for rottweiler #: lang/json/MONSTER_from_json.py msgid "" -"Terrifying breed to face feral, as the Rottweiler breed is descended from " +"Terrifying breed to face feral, as the rottweiler breed is descended from " "Roman legion mastiffs. Robust and vicious, quite capable of mauling a human" " to death." msgstr "" @@ -39332,7 +39526,7 @@ msgstr "" #. ~ Description for rottweiler puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Rottweiler puppy. Much safer to tame than adult " +"An adorable, defenseless rottweiler puppy. Much safer to tame than adult " "counterparts." msgstr "" @@ -39343,8 +39537,8 @@ msgstr "" #. ~ Description for cattle dog #: lang/json/MONSTER_from_json.py msgid "" -"An agile and sturdy breed that is welcome on any farm, the Australian Cattle" -" Dog is adept at leaping fences and herding livestock." +"An agile and sturdy breed that is welcome on any farm, the Australian cattle" +" dog is adept at leaping fences and herding livestock." msgstr "" #: lang/json/MONSTER_from_json.py @@ -39354,7 +39548,7 @@ msgstr "" #. ~ Description for cattle dog puppy #: lang/json/MONSTER_from_json.py msgid "" -"An adorable, defenseless Australian Cattle Dog puppy. Much safer to tame " +"An adorable, defenseless Australian cattle dog puppy. Much safer to tame " "than adult counterparts." msgstr "" @@ -39561,7 +39755,7 @@ msgstr "溝鼠" msgid "" "A worm-tailed rodent with long whiskers and beady eyes. The way it squeaks " "makes it sound... hungry." -msgstr "有著像蟲一般尾巴與長鬍鬚小眼睛的囓齒動物。牠急促的吱吱聲聽起來...餓了。" +msgstr "有著像蟲一般尾巴與長鬍鬚小眼睛的囓齒動物。牠急促的吱吱聲聽起來… 餓了。" #: lang/json/MONSTER_from_json.py msgid "lamb" @@ -39651,8 +39845,8 @@ msgid "" "been kept under extremely tight control, so as to itself maintain extremely " "tight control of its area. And then the Cataclysm struck." msgstr "" -"Leadworks LLC公司製造的T-107A1自動攔截者, 搭配.50口徑的BMG反器材步槍, 炸毀車輛保證沒有問題。它隨時都保持高度警戒, " -"就算在災變降臨之後, 它還是一樣。" +"Leadworks LLC 公司製造的 T-107A1 自動攔截者, 搭配 .50 口徑的 BMG 反器材步槍, " +"炸毀車輛保證沒有問題。它隨時都保持高度警戒, 就算在災變降臨之後, 它還是一樣。" #: lang/json/MONSTER_from_json.py msgid "milspec turret" @@ -39664,8 +39858,8 @@ msgid "" "Leadworks LLC's T-4A1 Sentry. It features improved firmware over General " "Atomics' TX-1 9x19mm model and an automated M4 carbine." msgstr "" -"Leadworks LLC公司製造的T-4A1哨兵, 它使用更為先進的9x19mm General Atomics' TX-1 晶片, " -"並搭載有自動M4卡賓槍。" +"Leadworks LLC 公司製造的 T-4A1 哨兵, 它使用更為先進的 General Atomics' TX-1 9x19mm 晶片, " +"並搭載有自動 M4 卡賓槍。" #: lang/json/MONSTER_from_json.py msgid "centipede" @@ -40060,7 +40254,7 @@ msgstr "鼻涕貪吃者" msgid "" "This swollen, gooey looking mutant child looks bad, even for a zombie. " "Maybe that's why it seems to want a hug so badly." -msgstr "這突變小孩看起來又腫又黏乎乎的, 即使在殭屍群裡也顯得十分難看。或許這就是它這麼渴望擁抱的原因吧..." +msgstr "這突變小孩看起來又腫又黏乎乎的, 即使在殭屍群裡也顯得十分難看。或許這就是它這麼渴望擁抱的原因吧。" #: lang/json/MONSTER_from_json.py msgid "sproglodyte" @@ -40206,7 +40400,7 @@ msgid "" "layer is made of reinforced plastic. It looks to be high tech, and in good " "shape." msgstr "" -"一架用兩腳走路的雞型機械布偶, 體型幾乎有你的兩倍大, 它身上穿著一件寫著 \"Let's Party!\" 的圍兜兜。奇怪的是, " +"一架用兩腳走路的雞型機械布偶, 體型幾乎有你的兩倍大, 它身上穿著一件寫著 \"Let's Party! \" 的圍兜兜。奇怪的是, " "她有婀娜的身材。其外層是強化塑膠, 看得出是高科技產物, 且處於良好狀態。" #: lang/json/MONSTER_from_json.py @@ -40339,7 +40533,7 @@ msgstr "豬形機械布偶" msgid "" "A bipedal animatronic pig, nearly twice your size. Little piggy go home, " "little piggy no no. Though it is a robot, it stinks like death." -msgstr "一隻雙腳行走的機器豬, 體型幾乎有你的兩倍大。小豬小豬快回家~儘管它是一隻機器豬, 身上的味道卻比死屍還要臭。" +msgstr "一隻雙腳行走的機器豬, 體型幾乎有你的兩倍大。小豬小豬快回家… 儘管它是一隻機器豬, 身上的味道卻比死屍還要臭。" #: lang/json/MONSTER_from_json.py msgid "animatronic sheep" @@ -40429,6 +40623,17 @@ msgstr "" msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet." msgstr "" +#: lang/json/MONSTER_from_json.py +msgid "Smoky bear" +msgstr "煙霧熊" + +#. ~ Description for Smoky bear +#: lang/json/MONSTER_from_json.py +msgid "" +"A smoking husk is all that remains of this once proud bear. Its black eyes " +"gaze at you with malice... and hunger." +msgstr "這隻曾經驕傲的熊只剩下煙霧外表。它的黑眼注視著你… 帶著惡意和飢餓。" + #: lang/json/MONSTER_from_json.py msgid "Compsognathus" msgstr "美頜龍" @@ -40669,7 +40874,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "riot control turret" -msgstr "" +msgstr "鎮暴砲塔" #. ~ Description for riot control turret #: lang/json/MONSTER_from_json.py @@ -40914,7 +41119,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py msgid "riotcontrol robot" -msgstr "" +msgstr "鎮暴機器人" #. ~ Description for riotcontrol robot #: lang/json/MONSTER_from_json.py @@ -41638,6 +41843,9 @@ msgid "" "radioactive gas leaks. Only a lunatic would dare build such a wreckless " "monster." msgstr "" +"一個回收的坦克機器人, 以滾燙的熱壓碎機改裝。雖然缺乏遠程武器, " +"但它的力量與裝甲使它能與塊頭最大的敵人一較高下。並聯的核融合核心給予這個機器人充足的電力, " +"但同時造成輻射性氣體外洩。只有喪心病狂的傢伙才敢製造這麼一個魯莽的怪物。" #: lang/json/MONSTER_from_json.py lang/json/TOOL_from_json.py msgid "gelatinous mass" @@ -41655,7 +41863,7 @@ msgstr "" #: lang/json/MONSTER_from_json.py lang/json/TOOL_from_json.py msgid "gray mass" msgid_plural "gray mass" -msgstr[0] "" +msgstr[0] "灰質團塊" #: lang/json/TOOLMOD_from_json.py msgid "base toolmod" @@ -41750,7 +41958,7 @@ msgid "" "This is a mining helmet with a heavy duty LED flashlight. Using this will " "turn the flashlight on and provide light, assuming it is charged with " "batteries." -msgstr "一個帶有遠程 LED 頭燈的採礦頭盔。如果它還有電, 用
就可以打開頭燈並提供光源。" +msgstr "這頂採礦頭盔安裝了重型 LED 頭燈。\"使用\" 以啟動它並提供照明, 前提是電池已經充電。" #: lang/json/TOOL_ARMOR_from_json.py msgid "mining helmet (on)" @@ -41802,7 +42010,7 @@ msgstr "%s 熄滅了。" msgid "" "This is a mining helmet with a heavy duty LED flashlight. The flashlight is" " turned on, and continually draining its batteries. Use it to turn it off." -msgstr "一個帶有遠程 LED 頭燈的採礦頭盔。頭燈已啟動並持續消耗電池的電力。用 來關閉。" +msgstr "這頂採礦頭盔安裝了重型 LED 頭燈。它已經啟動, 並且持續消耗電池。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "game watch" @@ -41814,7 +42022,7 @@ msgstr[0] "遊戲手錶" msgid "" "A waterproof digital watch with a built-in electronic game system, powered " "by standard batteries. Activate to play." -msgstr "一隻防水數位手錶, 內置電子遊戲系統, 使用標準電池供電。啟用以遊玩。" +msgstr "一隻防水數位手錶, 內建電子遊戲系統, 以標準電池供電。\"使用\" 以遊玩。" #: lang/json/TOOL_ARMOR_from_json.py msgid "hologram cloak" @@ -41880,14 +42088,14 @@ msgstr "你啟動了你的 %s。" #: src/iuse.cpp src/iuse.cpp #, c-format, no-python-format msgid "The %s's batteries are dead." -msgstr "%s的電池耗光了。" +msgstr "%s 的電池沒電了。" #. ~ Description for pair of thermal electric socks #: lang/json/TOOL_ARMOR_from_json.py msgid "" "This is a pair of socks with internal battery-powered heating elements. Use" " it to turn it on." -msgstr "這雙電熱襪內有電池供電的加熱元件。用 來啟動。" +msgstr "這雙襪子安裝了以電池供電的內部加熱元件。\"使用\" 以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "pair of thermal electric socks (on)" @@ -41916,7 +42124,7 @@ msgid "" "This is a pair of socks with internal battery-powered heating elements. " "They are currently on, and continually draining batteries. Use it to turn " "them off." -msgstr "這雙電熱襪內有電池供電的加熱元件。電源已啟動並持續消耗電池的電力。用 來關閉。" +msgstr "這雙襪子安裝了以電池供電的內部加熱元件。它已經啟動, 並且持續消耗電池。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "thermal electric suit" @@ -41928,7 +42136,7 @@ msgstr[0] "電熱裝" msgid "" "This is a full-body suit of thin thermal underwear equipped with internal " "battery-powered heating elements. Use it to turn it on." -msgstr "這件連身內衣內部有用電池供電的加熱元件, 你現在可以啟動控溫模式。" +msgstr "這套薄薄的全身發熱內衣安裝了以電池供電的內部加熱元件。\"使用\" 以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "thermal electric suit (on)" @@ -41941,7 +42149,7 @@ msgid "" "This is a full-body suit of thin thermal underwear equipped with internal " "battery-powered heating elements. It is currently on, and continually " "draining batteries. Use it to turn it off." -msgstr "這件連身內衣內部有用電池供電的加熱元件, 它現在已經啟動控溫模式並不斷的消耗電力, 你可以把它關閉。" +msgstr "這套薄薄的全身發熱內衣安裝了以電池供電的內部加熱元件。它已經啟動, 並且持續消耗電池。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "pair of thermal electric gloves" @@ -41953,7 +42161,7 @@ msgstr[0] "電熱手套" msgid "" "This is a pair of gloves with internal battery-powered heating elements. " "Use it to turn it on." -msgstr "這雙電熱襪內有電池供電的加熱元件。使用它來啟動。" +msgstr "這雙手套安裝了以電池供電的內部加熱元件。\"使用\" 以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "pair of thermal electric gloves (on)" @@ -41966,7 +42174,7 @@ msgid "" "This is a pair of gloves with internal battery-powered heating elements. " "They are currently on, and continually draining batteries. Use it to turn " "them off." -msgstr "這雙電熱襪內有電池供電的加熱元件。電源已啟動並持續消耗電池的電力。使用它來關閉。" +msgstr "這雙手套安裝了以電池供電的內部加熱元件。它已經啟動, 並且持續消耗電池。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "thermal electric balaclava" @@ -41978,7 +42186,7 @@ msgstr[0] "電熱頭套" msgid "" "This is a snug cloth mask with internal battery-powered heating elements. " "Use it to turn it on." -msgstr "這是一個舒適的布製面罩, 裡面裝有電池供電的加熱元件, 你現在可以啟動控溫模式。" +msgstr "這個貼身的棉布面罩安裝了以電池供電的內部加熱元件。\"使用\" 以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "thermal electric balaclava (on)" @@ -41991,7 +42199,7 @@ msgid "" "This is a snug cloth mask with internal battery-powered heating elements. " "It is are currently on, and continually draining batteries. Use it to turn " "it off." -msgstr "這是一個舒適的布製面罩, 裡面裝有電池供電的加熱元件, 它現在已經啟動並且不斷的消耗電力, 你可以把它關閉。" +msgstr "這個貼身的棉布面罩安裝了以電池供電的內部加熱元件。它已經啟動, 並且持續消耗電池。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "pair of binoculars" @@ -42010,29 +42218,29 @@ msgstr "" #: lang/json/TOOL_ARMOR_from_json.py msgid "headlamp" msgid_plural "headlamps" -msgstr[0] "" +msgstr[0] "頭燈" #. ~ Use action msg for headlamp. #: lang/json/TOOL_ARMOR_from_json.py msgid "You turn the headlamp on." -msgstr "" +msgstr "你啟動了頭燈。" #. ~ Use action need_charges_msg for headlamp. #: lang/json/TOOL_ARMOR_from_json.py msgid "The headlamp batteries are dead." -msgstr "" +msgstr "頭燈的電池沒電了。" #. ~ Description for headlamp #: lang/json/TOOL_ARMOR_from_json.py msgid "" "This is an LED headlamp with an adjustable strap so as to be comfortably " "worn on your head or attached to your helmet. Use it to turn it on." -msgstr "" +msgstr "這是一個 LED 頭燈, 附有可調節式綁帶, 可以舒適地戴在頭上或安裝在頭盔上。\"使用\" 以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "headlamp (on)" msgid_plural "headlamps (on)" -msgstr[0] "" +msgstr[0] "頭燈 (啟動)" #. ~ Description for headlamp (on) #: lang/json/TOOL_ARMOR_from_json.py @@ -42040,22 +42248,22 @@ msgid "" "This is an LED headlamp with an adjustable strap so as to be comfortably " "worn on your head or attached to your helmet. It is turned on, and " "continually draining batteries. Use it to turn it off." -msgstr "" +msgstr "這是一個 LED 頭燈, 附有可調節式綁帶, 可以舒適地戴在頭上或安裝在頭盔上。它已經啟動, 並且持續消耗電池。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "survivor headlamp" msgid_plural "survivor headlamps" -msgstr[0] "" +msgstr[0] "生存者頭燈" #. ~ Use action msg for survivor headlamp. #: lang/json/TOOL_ARMOR_from_json.py msgid "You turn the survivor headlamp on." -msgstr "" +msgstr "你啟動了生存者頭燈。" #. ~ Use action need_charges_msg for survivor headlamp. #: lang/json/TOOL_ARMOR_from_json.py msgid "The survivor headlamp batteries are dead." -msgstr "" +msgstr "生存者頭燈的電池沒電了。" #. ~ Description for survivor headlamp #: lang/json/TOOL_ARMOR_from_json.py @@ -42065,11 +42273,13 @@ msgid "" "allows it to be comfortably worn on your head or attached to your helmet. " "Use it to turn it on." msgstr "" +"這是一個訂製的 LED 頭燈, 以更大、更高效的電池組強化, 使它更耐用、更明亮。附有可調節式綁帶, 可以舒適地戴在頭上或安裝在頭盔上。\"使用\" " +"以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "survivor headlamp (on)" msgid_plural "survivor headlamps (on)" -msgstr[0] "" +msgstr[0] "生存者頭燈 (啟動)" #. ~ Description for survivor headlamp (on) #: lang/json/TOOL_ARMOR_from_json.py @@ -42079,11 +42289,13 @@ msgid "" "allows it to be comfortably worn on your head or attached to your helmet. " "It is turned on, and continually draining batteries. Use it to turn it off." msgstr "" +"這是一個訂製的 LED 頭燈, 以更大、更高效的電池組強化, 使它更耐用、更明亮。附有可調節式綁帶, 可以舒適地戴在頭上或安裝在頭盔上。它已經啟動, " +"並且持續消耗電池。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "RM13 combat armor" msgid_plural "RM13 combat armors" -msgstr[0] "RM13戰鬥裝甲" +msgstr[0] "RM13 戰鬥裝甲" #. ~ Description for RM13 combat armor #: lang/json/TOOL_ARMOR_from_json.py @@ -42091,12 +42303,12 @@ msgid "" "Internally powered by a maximum of ten plutonium fuel cells, this full-body " "suit of sleek black military armor represents the pinnacle of Rivtech's non-" "rigid powered armor technology. Use it to turn it on." -msgstr "最多可透過內部 10 個鈽燃料電池供電, 這件亮光黑的全身軍用裝甲是 Rivtech 公司的非剛性裝甲的代表作, 你現在可以把它啟動。" +msgstr "這套光亮的黑色全身軍用裝甲是 Rivtech 非剛性動力裝甲的巔峰之作, 最多能以 10 個鈽燃料電池進行內部供電。\"使用\" 以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "RM13 combat armor (on)" msgid_plural "RM13 combat armors (on)" -msgstr[0] "RM13戰鬥裝甲 (啟動)" +msgstr[0] "RM13 戰鬥裝甲 (啟動)" #. ~ Description for RM13 combat armor (on) #: lang/json/TOOL_ARMOR_from_json.py @@ -42106,8 +42318,8 @@ msgid "" "rigid powered armor technology. It is turned on, and continually draining " "power. Use it to turn it off." msgstr "" -"最多可透過內部 10 個鈽燃料電池供電, 這件亮光黑的全身軍用裝甲是 Rivtech 公司的非剛性裝甲的代表作, 你現在已經啟動並不斷的消耗電力, " -"你現在可以把它關閉。" +"這套光亮的黑色全身軍用裝甲是 Rivtech 非剛性動力裝甲的巔峰之作, 最多能以 10 個鈽燃料電池進行內部供電。它已經啟動, " +"並且持續消耗電力。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "rebreather mask" @@ -42129,7 +42341,7 @@ msgid "" "A mask worn over your mouth which, when loaded with the proper filters, " "recycles your exhaled breath for rebreathing while underwater. Use it to " "turn it on." -msgstr "一個能覆蓋你嘴巴的面具, 如果有安裝上正確的濾芯, 它能把你吐出的二氧化碳經由化學反應還原成氧氣讓你再利用, 你現在可以把它啟動。" +msgstr "一個能包覆嘴巴的面具, 當安裝合適的濾芯時, 能回收你呼出的氣體以便在水下循環呼吸。\"使用\" 以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "rebreather mask (on)" @@ -42142,14 +42354,12 @@ msgid "" "A mask worn over your mouth which, when loaded with the proper filters, " "recycles your exhaled breath for rebreathing while underwater. It is turned" " on, and continually consuming its filter. Use it to turn it off." -msgstr "" -"一個能覆蓋你嘴巴的面具, 如果有安裝上正確的濾芯, 它能把你吐出的二氧化碳經由化學反應還原成氧氣讓你再利用, 它現在已經啟動, 並不斷的消耗濾芯, " -"你現在可以把它關閉。" +msgstr "一個能包覆嘴巴的面具, 當安裝合適的濾芯時, 能回收你呼出的氣體以便在水下循環呼吸。它已經啟動, 並且持續消耗濾芯, \"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "XL rebreather mask" msgid_plural "XL rebreather masks" -msgstr[0] "XL 呼吸器面罩" +msgstr[0] "XL 循環式呼吸器面罩" #. ~ Description for XL rebreather mask #: lang/json/TOOL_ARMOR_from_json.py @@ -42159,13 +42369,13 @@ msgid "" "has been expanded substantially and can accommodate exotic anatomy. Use it " "to turn it on." msgstr "" -"一個能覆蓋你嘴巴的面具, 如果有安裝上正確的濾芯, 它能把你吐出的二氧化碳經由化學反應還原成氧氣讓你再利用。這個版本的面罩被加大, " -"可以被臉更大的人戴上, 你現在可以把它啟動。" +"一個能包覆嘴巴的面具, 當安裝合適的濾芯時, 能回收你呼出的氣體以便在水下循環呼吸。這個版本已經被加大, 可以容納畸形的臉部構造。\"使用\" " +"以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "XL rebreather mask (on)" msgid_plural "XL rebreather masks (on)" -msgstr[0] "XL 呼吸器面罩 (啟動)" +msgstr[0] "XL 循環式呼吸器面罩 (啟動)" #. ~ Description for XL rebreather mask (on) #: lang/json/TOOL_ARMOR_from_json.py @@ -42175,8 +42385,8 @@ msgid "" "has been expanded substantially and can accommodate exotic anatomy. It is " "turned on, and continually consuming its filter. Use it to turn it off." msgstr "" -"一個能覆蓋你嘴巴的面具, 如果有安裝上正確的濾芯, 它能把你吐出的二氧化碳經由化學反應還原成氧氣讓你再利用。這個版本的面罩被加大, " -"可以被臉更大的人戴上, 它現在已經啟動, 並不斷的消耗濾芯, 你現在可以把它關閉。" +"一個能包覆嘴巴的面具, 當安裝合適的濾芯時, 能回收你呼出的氣體以便在水下循環呼吸。這個版本已經被加大, 可以容納畸形的臉部構造。它已經啟動, " +"並且持續消耗濾芯, \"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "filter mask" @@ -42189,7 +42399,7 @@ msgid "" "A mask that straps over your mouth and nose and filters air. Protects from " "smoke, dust, and other contaminants quite well. It must be prepared before " "use." -msgstr "" +msgstr "一個綁在嘴巴與鼻子上以過濾空氣的面具。能提供相當的防護能力以抵禦煙霧、灰塵與其他汙染物。使用前必須準備。" #: lang/json/TOOL_ARMOR_from_json.py msgid "gas mask" @@ -42240,7 +42450,7 @@ msgstr[0] "XL 生存者防火面具" msgid "" "A custom-built, Nomex-insulated gas mask that covers the face and eyes " "regardless of your state of mutation. It provides excellent protection from" -" heat, smoke, teargas, and shrapnel. It must be prepared before use." +" heat, smoke, teargas, and shrapnel. It must be prepared before use." msgstr "" #: lang/json/TOOL_ARMOR_from_json.py @@ -42254,7 +42464,7 @@ msgid "" "A full-face mask commonly used by firefighters. The protective breathing " "apparatus provides excellent protection from smoke, flame, and other " "dangers. It must be prepared before use." -msgstr "" +msgstr "一個供消防員使用的全臉式面具。它的呼吸保護裝置能提供絕佳的防護能力以抵禦煙霧、火焰與其它危害。使用前必須準備。" #: lang/json/TOOL_ARMOR_from_json.py msgid "heavy survivor mask" @@ -42345,7 +42555,7 @@ msgstr[0] "夜視護目鏡" msgid "" "A pair of battery-powered goggles that amplify ambient light, allowing you " "to see in the dark. Use it to turn them on." -msgstr "一副能夠把光源放大並以電池供電的護目鏡, 讓你能夠在黑暗中視物。使用它來啟動。" +msgstr "一副以電池供電的護目鏡, 能放大環境光源, 使你在黑暗中看得見。\"使用\" 以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "pair of light amp goggles (on)" @@ -42358,43 +42568,43 @@ msgid "" "A pair of battery-powered goggles that amplify ambient light, allowing you " "to see in the dark. It is turned on, and continually draining batteries. " "Use it to turn them off." -msgstr "一副能夠把光源放大並以電池供電的護目鏡, 讓你能夠在黑暗中視物。它已經被打開了, 且不停的消耗著電池。 使用它來關閉。" +msgstr "一副以電池供電的護目鏡, 能放大環境光源, 讓你在黑暗中看得見。它已經啟動, 並且持續消耗電池。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "pair of infrared goggles" msgid_plural "pairs of infrared goggles" -msgstr[0] "紅外線成像眼鏡" +msgstr[0] "紅外線成像護目鏡" #. ~ Description for pair of infrared goggles #: lang/json/TOOL_ARMOR_from_json.py msgid "" "A pair of battery-powered goggles that grant infrared vision, allowing you " "to see warm-blooded creatures in the dark. Use it to turn them on." -msgstr "一副透過電池供電的紅外線成像眼鏡, 可以讓你在黑暗中看見溫血動物。使用它來打開。" +msgstr "一副以電池供電的護目鏡, 能提供紅外線視覺, 讓你在黑暗中看得見溫血生物。\"使用\" 以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "pair of infrared goggles (on)" msgid_plural "pairs of infrared goggles (on)" -msgstr[0] "紅外線成像眼鏡 (啟動)" +msgstr[0] "紅外線成像護目鏡 (啟動)" #. ~ Description for pair of infrared goggles (on) #: lang/json/TOOL_ARMOR_from_json.py msgid "" "A pair of battery-powered goggles that grant infrared vision, allowing you " "to see warm-blooded creatures in the dark. Use it to turn them off." -msgstr "一副以電池供電的護目鏡, 提供紅外線的視覺模式。使用者可以在黑暗中看見溫血生物。使用它來關閉。" +msgstr "一副以電池供電的護目鏡, 能提供紅外線視覺, 讓你在黑暗中看得見溫血生物。它已經啟動, 並且持續消耗電池。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "wearable RX12 jet injector" msgid_plural "wearable RX12 jet injectors" -msgstr[0] "可穿戴的RX12型注射器" +msgstr[0] "穿戴式 RX12 注射器" #. ~ Description for wearable RX12 jet injector #: lang/json/TOOL_ARMOR_from_json.py msgid "" "This is a modified RX12 jet injector which can be worn on the body. A label" " on the side warns against using more than two doses per hour." -msgstr "這是一管改良過的 RX12 型注射器, 可以穿戴在身體上。注射器側邊的標籤警示寫著每小時不要使用超過兩劑量。" +msgstr "這是一款改良的 RX12 注射器, 可以穿戴在身上。側邊的標籤警示寫著每小時不得使用超過兩劑。" #: lang/json/TOOL_ARMOR_from_json.py msgid "RX11 stimulant delivery system" @@ -42423,7 +42633,7 @@ msgid "" "A custom-built, armored rebreather mask that covers the face and eyes. It " "provides excellent protection from harm as well providing breathing gas " "while underwater. Use it to turn it on." -msgstr "一副自製且具裝甲的可覆蓋眼睛與臉部的潛水面具。提供了絕佳的傷害保護以及水中正常呼吸的能力。按下使用鍵以啟動它。" +msgstr "一副訂製的裝甲循環式呼吸器面罩, 能包覆臉部與眼睛。能提供絕佳的防護能力以抵禦傷害, 同時提供水中呼吸的能力。\"使用\" 以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "survivor divemask (on)" @@ -42438,7 +42648,8 @@ msgid "" "while underwater. It is turned on, and continually consuming its filter. " "Use it to turn it off." msgstr "" -"一副自製且具裝甲的可覆蓋眼睛與臉部的潛水面具。提供了絕佳的傷害保護以及水中正常呼吸的能力。現在是啟動的狀態並且持續消耗過濾器。按下使用鍵以關閉它。" +"一副訂製的裝甲循環式呼吸器面罩, 能包覆臉部與眼睛。能提供絕佳的防護能力以抵禦傷害, 同時提供水中呼吸的能力。它已經啟動, " +"並且持續消耗濾芯。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "XL survivor divemask" @@ -42458,19 +42669,19 @@ msgid "" " harm as well providing breathing gas while underwater. It is turned on, " "and continually consuming its filter. Use it to turn it off." msgstr "" -"一副自製具裝甲的潛水面具, 不論你的突變狀態, 均可完整覆蓋眼睛與臉部。提供絕佳的傷害保護以及水中正常呼吸的能力。現在是啟動的狀態, " -"並且持續消耗過濾器。按下使用鍵以關閉它。" +"一副訂製的裝甲循環式呼吸器面罩, 能包覆臉部與眼睛, 不論你的突變程度如何。能提供絕佳的防護能力以抵禦傷害, 同時提供水中呼吸的能力。它已經啟動, " +"並且持續消耗濾芯。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "unfolded poncho" msgid_plural "unfolded ponchos" -msgstr[0] "攤開的披風外套" +msgstr[0] "雨披 (展開)" #. ~ Description for unfolded poncho #: lang/json/TOOL_ARMOR_from_json.py msgid "" "A lightweight plastic rain poncho with a hood. Use it to fold for storage." -msgstr "一件摺疊起來的輕量塑膠雨披, 附有兜帽。使用它來摺疊儲存。" +msgstr "一件輕量的塑膠雨披, 附有兜帽。\"使用\" 以折疊它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "emergency blanket" @@ -42482,7 +42693,7 @@ msgstr[0] "救生毯" msgid "" "A blanket made of space-age material that covers your most important body " "parts. Use it to fold for storage." -msgstr "一條由未來材料製成的毯子, 可覆蓋身體大部分重要的部位。按下使用鍵摺疊它以獲得更多儲存空間。" +msgstr "一條由未來材料製成的毯子, 可覆蓋身體大部分重要的部位。按下使用鍵折疊它以獲得更多儲存空間。" #: lang/json/TOOL_ARMOR_from_json.py msgid "radiation biomonitor" @@ -42494,7 +42705,7 @@ msgstr[0] "輻射檢測器" msgid "" "A small battery-powered biometric safety device worn on the wrist. Activate" " to check your current level of radiation exposure." -msgstr "一個穿戴在手腕上, 用電池驅動的小型裝置, 啟動它來檢測你現在暴露在輻射下的程度。" +msgstr "一個以電池供電的小型生物測定安全裝置, 穿戴在手腕上。\"使用\" 以檢測當前的輻射暴露水平。" #: lang/json/TOOL_ARMOR_from_json.py msgid "hairpin" @@ -42528,7 +42739,9 @@ msgid "" "person that can travel the length and breadth of the apocalypse, rough it, " "slum it, struggle against terrible odds, win through and still know where " "their towel is, is clearly a force to be reckoned with." -msgstr "一條又大又軟的毛巾, 可以用來擦乾你的身體。一個經歷過災變、遭遇過可怕生物的人仍然知道他的毛巾在哪裡, 毛巾顯然有種神奇的魔力。" +msgstr "" +"這是一條鬆軟的大毛巾, 可以用來擦乾身體。一個人可以歷盡末日災變, 與恐怖的怪異對峙、纏鬥、掙扎, 並且在存活下來後仍然知道他的毛巾在哪裡, " +"顯然毛巾有種神奇的魔力。" #. ~ Description for towel #: lang/json/TOOL_ARMOR_from_json.py @@ -42836,7 +43049,7 @@ msgid "" "This suit of thin thermal underwear covers you from head to toe and is " "equipped with internal battery-powered heating elements. Use it to turn it " "on." -msgstr "這件薄薄的內衣把你從頭到腳包覆起來, 內部有使用電池供電的發熱元件, 你可以把它打開讓你保暖。" +msgstr "這套薄薄的發熱內衣能包覆全身, 並安裝了以電池供電的內部加熱元件。\"使用\" 以啟動它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "thermal electric outfit (on)" @@ -42849,7 +43062,7 @@ msgid "" "This suit of thin thermal underwear covers you from head to toe and is " "equipped with internal battery-powered heating elements. It is currently " "on, and continually draining batteries. Use it to turn it off." -msgstr "這件薄薄的內衣把你從頭到腳包覆起來, 內部有使用電池供電的發熱元件。它正在啟動中, 並且持續的消耗電力。你可以把它關閉。" +msgstr "這套薄薄的發熱內衣能包覆全身, 並安裝了以電池供電的內部加熱元件。它已經啟動, 並且持續消耗電池。\"使用\" 以關閉它。" #: lang/json/TOOL_ARMOR_from_json.py msgid "ski mask" @@ -42867,7 +43080,7 @@ msgstr "你把你的滑雪面罩戴鬆一點, 這樣比較不熱。" msgid "" "A warm wool mask that protects the head and face from cold. It has a full " "face opening that can be adjusted to set how much is exposed." -msgstr "一個溫暖的羊毛製面罩, 它讓你的頭跟臉不受寒冷侵襲。它可以讓你調整要露出多少的臉部。" +msgstr "一個溫暖的羊毛面罩, 保護頭部與臉部免於寒冷。它有個開口可以調整要露出多少臉部。" #: lang/json/TOOL_ARMOR_from_json.py msgid "ski mask (open)" @@ -42904,7 +43117,7 @@ msgstr "" #. ~ Description for whistle #: lang/json/TOOL_ARMOR_from_json.py msgid "A simple metal whistle, with a cord to wear it around your neck." -msgstr "一個簡單的金屬哨子, 附有繩子, 可穿掛在脖子上。" +msgstr "一個簡單的金屬哨子, 附有繩子, 可穿掛在頸部。" #: lang/json/TOOL_ARMOR_from_json.py msgid "harmonica with a holder" @@ -42961,7 +43174,7 @@ msgstr[0] "薩克斯風" #: lang/json/TOOL_ARMOR_from_json.py msgid "" "A brass alto saxophone with a neck strap, so you can wear it while playing." -msgstr "一個附有頸帶的銅製中音薩克斯風, 你可以穿戴著它來演奏。" +msgstr "一個附有頸部綁帶的銅製中音薩克斯風, 你可以穿戴著它來演奏。" #: lang/json/TOOL_ARMOR_from_json.py msgid "shooter's earmuffs" @@ -42984,7 +43197,7 @@ msgid "" "A pair of earmuffs favored by shooters. The earmuffs are turned off. They " "will block sounds over a certain decibel amount, assuming it is charged with" " batteries." -msgstr "一對備由射手青睞的耳罩。現在處於關閉狀態。它們能阻擋超過一定分貝的聲音, 前提是裡頭要有電。" +msgstr "一對備深受射手喜愛的耳罩, 現在已經關閉。它能阻擋超過一定分貝的聲音, 前提是電池已經充電。" #. ~ Description for shooter's earmuffs #: lang/json/TOOL_ARMOR_from_json.py @@ -42992,7 +43205,7 @@ msgid "" "A pair of earmuffs favored by shooters. The earmuffs are turned on. They " "will block sounds over a certain decibel amount, assuming it is charged with" " batteries." -msgstr "一對備由射手青睞的耳罩。現在處於啟動狀態。它們能阻擋超過一定分貝的聲音, 前提是裡頭要有電。" +msgstr "一對備深受射手喜愛的耳罩, 現在已經啟動。它能阻擋超過一定分貝的聲音, 前提是電池已經充電。" #: lang/json/TOOL_ARMOR_from_json.py msgid "stethoscope" @@ -43008,7 +43221,7 @@ msgstr "一件醫用工具。靠近物體並使用來進行聆聽。" #: lang/json/TOOL_ARMOR_from_json.py msgid "solar backpack (folded)" msgid_plural "solar backpacks (folded)" -msgstr[0] "" +msgstr[0] "太陽能板背包 (折疊)" #. ~ Description for solar backpack (folded) #: lang/json/TOOL_ARMOR_from_json.py @@ -43016,24 +43229,24 @@ msgid "" "Personal portable charging system consisting of an array of solar panels " "neatly folded in a form of a large backpack. It can be worn as one, and has" " an integrated cable to plug it into a cable charger system." -msgstr "" +msgstr "個人便攜式充電系統, 由一系列太陽能板組成, 整齊地折疊成大背包的形式。它可由單人佩戴, 並具有一個集成電纜, 可將其插入電纜充電器系統。" #: lang/json/TOOL_ARMOR_from_json.py msgid "solar backpack (unfolded)" msgid_plural "solar backpacks (unfolded)" -msgstr[0] "" +msgstr[0] "太陽能板背包 (展開)" #. ~ Description for solar backpack (unfolded) #: lang/json/TOOL_ARMOR_from_json.py msgid "" "Unfolded array of portable solar panels ready to push some power into an " "active cable charger system." -msgstr "" +msgstr "展開的太陽能板, 將電力輸入已開啟的電纜充電系統。" #: lang/json/TOOL_ARMOR_from_json.py msgid "quantum solar backpack (folded)" msgid_plural "quantum solar backpacks (folded)" -msgstr[0] "" +msgstr[0] "量子太陽能板背包 (折疊)" #. ~ Description for quantum solar backpack (folded) #: lang/json/TOOL_ARMOR_from_json.py @@ -43043,17 +43256,52 @@ msgid "" "and has an integrated cable to plug it into a cable charger system. Cutting" " edge technology." msgstr "" +"個人便攜式充電系統, 由一系列量子太陽能板組成, 整齊地折疊成大背包的形式。它可由單人佩戴, 並具有一個集成電纜, 可將其插入電纜充電器系統。尖端技術。" #: lang/json/TOOL_ARMOR_from_json.py msgid "quantum solar backpack (unfolded)" msgid_plural "quantum solar backpacks (unfolded)" -msgstr[0] "" +msgstr[0] "量子太陽能板背包 (展開)" #. ~ Description for quantum solar backpack (unfolded) #: lang/json/TOOL_ARMOR_from_json.py msgid "" "Unfolded array of portable quantum solar panels ready to push some power " "into an active cable charger system." +msgstr "展開的量子太陽能板, 將電力輸入已開啟的電纜充電系統。" + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet" +msgid_plural "riot helmets" +msgstr[0] "鎮暴頭盔" + +#. ~ Use action msg for riot helmet. +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You raise your visor." +msgstr "" + +#. ~ Description for riot helmet +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A helmet with a plastic shield that covers your entire face. Activate to " +"raise the face shield." +msgstr "" + +#: lang/json/TOOL_ARMOR_from_json.py +msgid "riot helmet (raised visor)" +msgid_plural "riot helmets (raised visor)" +msgstr[0] "" + +#. ~ Use action msg for riot helmet (raised visor). +#: lang/json/TOOL_ARMOR_from_json.py +msgid "You put down your visor." +msgstr "" + +#. ~ Description for riot helmet (raised visor) +#: lang/json/TOOL_ARMOR_from_json.py +msgid "" +"A riot helmet with a plastic face shield which is raised up. Activate to " +"lower the shield." msgstr "" #: lang/json/TOOL_from_json.py @@ -43261,26 +43509,26 @@ msgstr "這是一把經典的中世紀劍, 適合單手使用。這把看起來 #: lang/json/TOOL_from_json.py msgid "folded poncho" msgid_plural "folded ponchos" -msgstr[0] "折疊的雨披" +msgstr[0] "雨披 (折疊)" #. ~ Description for folded poncho #: lang/json/TOOL_from_json.py msgid "" "A folded lightweight plastic rain poncho with a hood. Use it to unfold for " "use." -msgstr "一件摺疊起來的輕量塑膠雨披, 附有兜帽。使用它來攤開。" +msgstr "一件輕量的塑膠雨披, 附有兜帽。\"使用\" 以展開它。" #: lang/json/TOOL_from_json.py msgid "folded emergency blanket" msgid_plural "folded emergency blankets" -msgstr[0] "摺疊的救生毯" +msgstr[0] "救生毯 (折疊)" #. ~ Description for folded emergency blanket #: lang/json/TOOL_from_json.py msgid "" "A folded blanket made of space-age materials that covers your most important" " body parts. Use it to unfold for use." -msgstr "一件摺疊起來的毯子, 由先進材料製作, 能夠蓋住你大部分的身體。使用它來攤開。" +msgstr "一件折疊起來的毯子, 由先進材料製作, 能夠蓋住你大部分的身體。\"使用\" 以展開它。" #: lang/json/TOOL_from_json.py msgid "EMP grenade" @@ -43380,7 +43628,7 @@ msgid "" "This is a unified power supply, or UPS. It is a device developed jointly by" " military and scientific interests for use in combat and the field. The UPS" " is designed to power armor and some guns, but drains batteries quickly." -msgstr "一個統一規格供電系統 (UPS), 由軍方與科學家共同開發適用於戰場的設備, 設計用來提供電能給動力裝甲與某些槍械, 但缺點是耗電迅速。" +msgstr "一個統一規格供電系統 (UPS), 由軍方與科學家共同開發適用於戰場的設備, 設計來提供電能給動力裝甲與某些槍械, 但缺點是耗電迅速。" #: lang/json/TOOL_from_json.py msgid "acid bomb" @@ -43470,7 +43718,7 @@ msgid "" "This is an enormously heavy block of oddly shaped steel with a chisel-like " "projection set into the corner. It's used in most metalworking fabrication " "recipes." -msgstr "形狀奇特如鋼鑿子般的極沉重鋼鐵。大部分用在進行鑄鐵相關的物品製作時。" +msgstr "這是一個極端沉重且形狀奇特的鋼塊, 其中一端有個鑿子形狀的突出物。能用於大部分的金屬加工配方。" #: lang/json/TOOL_from_json.py msgid "wood axe" @@ -43502,7 +43750,7 @@ msgstr[0] "氣壓計" #. ~ Description for barometer #: lang/json/TOOL_from_json.py msgid "A plastic barometer that can read the atmospheric pressure." -msgstr "一個塑膠製氣壓計可以用來偵測大氣壓力。" +msgstr "一個塑膠氣壓計, 可以用來檢視大氣壓力。" #. ~ Description for battle axe #: lang/json/TOOL_from_json.py @@ -43666,7 +43914,7 @@ msgstr "電磁脈衝無人機飛越你的頭頂並開始搜索區域!" #. ~ Use action hostile_msg for inactive EMP hack. #: lang/json/TOOL_from_json.py msgid "You misprogram the EMP hack; take cover!" -msgstr "你把電磁脈衝無人機的程式搞亂了;找掩護!" +msgstr "你把電磁脈衝無人機的程式搞亂了。找掩護!" #. ~ Description for inactive EMP hack #: lang/json/TOOL_from_json.py @@ -43681,7 +43929,7 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive C-4 hack" msgid_plural "inactive C-4 hacks" -msgstr[0] "未啟動的C-4 無人機" +msgstr[0] "未啟動的 C-4 無人機" #. ~ Use action friendly_msg for inactive C-4 hack. #: lang/json/TOOL_from_json.py @@ -43691,7 +43939,7 @@ msgstr "C-4 無人機飛越你的頭頂並開始搜索區域!" #. ~ Use action hostile_msg for inactive C-4 hack. #: lang/json/TOOL_from_json.py msgid "You misprogram the C-4 hack; take cover!" -msgstr "你把C-4 無人機的程式搞亂了;找掩護!" +msgstr "你把 C-4 無人機的程式搞亂了。找掩護!" #. ~ Description for inactive C-4 hack #: lang/json/TOOL_from_json.py @@ -43716,7 +43964,7 @@ msgstr "閃光彈無人機飛越你的頭頂並開始搜索區域!" #. ~ Use action hostile_msg for inactive flashbang hack. #: lang/json/TOOL_from_json.py msgid "You misprogram the flashbang hack; take cover!" -msgstr "你把閃光彈無人機的程式搞亂了;找掩護!" +msgstr "你把閃光彈無人機的程式搞亂了。找掩護!" #. ~ Description for inactive flashbang hack #: lang/json/TOOL_from_json.py @@ -43741,7 +43989,7 @@ msgstr "催涙彈無人機飛越你的頭頂並開始搜索區域!" #. ~ Use action hostile_msg for inactive tear gas hack. #: lang/json/TOOL_from_json.py msgid "You misprogram the tear gas hack; take cover!" -msgstr "你把催涙彈無人機的程式搞亂了;找掩護!" +msgstr "你把催涙彈無人機的程式搞亂了。找掩護!" #. ~ Description for inactive tear gas hack #: lang/json/TOOL_from_json.py @@ -43766,7 +44014,7 @@ msgstr "手榴彈無人機飛越你的頭頂並開始搜索區域!" #. ~ Use action hostile_msg for inactive grenade hack. #: lang/json/TOOL_from_json.py msgid "You misprogram the grenade hack; take cover!" -msgstr "你把手榴彈無人機的程式搞亂了;找掩護!" +msgstr "你把手榴彈無人機的程式搞亂了。找掩護!" #. ~ Description for inactive grenade hack #: lang/json/TOOL_from_json.py @@ -43823,7 +44071,7 @@ msgstr "鋸鳥飛越你的頭頂並開始搜索區域!" #. ~ Use action hostile_msg for inactive manhack. #: lang/json/TOOL_from_json.py msgid "You misprogram the manhack; it's hostile!" -msgstr "你把鋸鳥的程式搞亂了;變成敵對狀態!" +msgstr "你把鋸鳥的程式搞亂了。變成敵對狀態!" #. ~ Description for inactive manhack #. ~ Description for inactive hack @@ -43910,7 +44158,7 @@ msgstr "這是一種便攜式木炭爐。你可以用它來自製磚塊, 或是 #: lang/json/TOOL_from_json.py msgid "electric kiln" msgid_plural "electric kilns" -msgstr[0] "" +msgstr[0] "電窯" #. ~ Description for electric kiln #: lang/json/TOOL_from_json.py @@ -43920,6 +44168,8 @@ msgid "" "little mechanical know-how, you could probably even convert it to run " "directly off a vehicle's power system." msgstr "" +"一種便攜式的電窯, 由電池供電。它專為燒磚而設計, 但你可以用它來燒製任何粘土製成的東西。如果你機械技術夠的話, " +"甚至可以把它轉換連接到車輛電源系統來供電。" #: lang/json/TOOL_from_json.py msgid "firebrand (off)" @@ -43983,7 +44233,7 @@ msgstr "結合了黑暗時代的兩項經典-闊劍和火炬的組合。這把 msgid "" "This is an early modern sword seeing use in the 16th, 17th, and 18th " "centuries. Called 'broad' to contrast with the slimmer rapiers." -msgstr "一把仿 16 , 17, 18 世紀的古劍, 會稱為 \"闊\" 是因為刀身比一般的劍寬了許多。" +msgstr "這是一把在 16、17、18 世紀使用的近世刀劍。稱它為 \"闊\" 是對比於細長的刺劍。" #: lang/json/TOOL_from_json.py lang/json/trap_from_json.py msgid "bubble wrap" @@ -44144,7 +44394,7 @@ msgid "" "An electric meat carver powered by batteries. Two serrated blades that " "vibrate together to slice just about anything from turkey to ham... even " "zombies!" -msgstr "這是把由電池供電的電動鋸肉刀。兩片高速震動的鋸齒形刀片能把任何肉塊都切成片, 從火雞到火腿......甚至是殭屍!" +msgstr "這是把由電池供電的電動鋸肉刀。兩片高速震動的鋸齒形刀片能把任何肉塊都切成片, 從火雞到火腿… 甚至是殭屍!" #: lang/json/TOOL_from_json.py msgid "electric carver (on)" @@ -44159,19 +44409,19 @@ msgstr "這把開著的電動鋸刀正產生嗡嗡的叫著。使用它來關閉 #: lang/json/TOOL_from_json.py msgid "cat food" msgid_plural "cat food" -msgstr[0] "貓罐頭" +msgstr[0] "貓食" #. ~ Description for cat food #: lang/json/TOOL_from_json.py msgid "This is food for cats. It smells strange, but cats seem to love it." -msgstr "貓食, 雖然嚐起來味道特殊, 但貓咪很喜歡。" +msgstr "這是貓的食物。它聞起來很怪, 但是貓很喜歡。" #. ~ Description for cavalry saber #: lang/json/TOOL_from_json.py msgid "" "This is a curved sword associated with cavalry from the Early Modern period " "onwards. Lightweight but a deadly slashing weapon." -msgstr "這種彎刀從近代起就作為騎兵的裝備。是把輕便但致命的砍劈武器。" +msgstr "這是一把近世騎兵使用的彎刀。輕量但是致命的砍劈武器。" #: lang/json/TOOL_from_json.py msgid "cellphone" @@ -44197,8 +44447,8 @@ msgid "" "assuming it is sufficiently charged. It also has a clock app that includes " "an alarm." msgstr "" -"這是一支手機, 是智慧型手機的前輩。由於其可靠性、續航力、以及使用普通電池的能力, 在某些圈子中仍然很受歡迎。假如它有足夠的電力, " -"使用它可以開機並提供照明。同時它具有一個包含鬧鐘功能的時鐘應用程式。" +"這是一支手機, 是智慧型手機的前輩。由於其可靠性、續航力、以及使用一般電池的能力, 在某些圈子中仍然很受歡迎。\"使用\" 以啟動它並提供照明, " +"前提是它已經充足電。同時它具有一個包含鬧鐘功能的時鐘應用程式。" #: lang/json/TOOL_from_json.py msgid "cellphone - Flashlight" @@ -44373,7 +44623,7 @@ msgstr[0] "鐵工鑿子" msgid "" "This is a short, stout metalworking chisel. It's used in some metalworking " "fabrication recipes." -msgstr "一根短而粗的鐵工鑿子。可用在鑄造物品時的工具。" +msgstr "一根短而粗的鐵工鑿子。能用於一些金屬加工配方。" #: lang/json/TOOL_from_json.py msgid "circular saw (off)" @@ -44392,7 +44642,7 @@ msgid "" "enough to cut wood, metal, zombies, or in an emergency, pizza. The blade, " "while effective in combat, is hard to hit with due to its small size." msgstr "" -"一把輕量化的手持式無線圓鋸。快速轉動的圓形刀片足夠拿來切割木材, 金屬與殭屍, 緊急情況下也能切披薩。但也因刀片太小, 很難有效的進行攻擊。" +"一把輕量化的手持式無線圓鋸。快速轉動的圓形刀片足夠拿來切割木頭, 金屬與殭屍, 緊急情況下也能切披薩。但也因刀片太小, 很難有效的進行攻擊。" #: lang/json/TOOL_from_json.py msgid "circular saw (on)" @@ -44458,7 +44708,7 @@ msgstr "這把戰鬥鏈鋸已經啟動, 且不斷的消耗汽油。使用它可 #: lang/json/TOOL_from_json.py msgid "electric combat chainsaw (off)" msgid_plural "electric combat chainsaws (off)" -msgstr[0] "" +msgstr[0] "戰鬥電鋸 (關閉)" #. ~ Description for electric combat chainsaw (off) #: lang/json/TOOL_from_json.py @@ -44471,7 +44721,7 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "electric combat chainsaw (on)" msgid_plural "electric combat chainsaws (on)" -msgstr[0] "" +msgstr[0] "戰鬥電鋸 (啟動)" #. ~ Description for electric combat chainsaw (on) #: lang/json/TOOL_from_json.py @@ -44631,7 +44881,7 @@ msgstr[0] "坩鍋" msgid "" "This is a small metalworking crucible. It's used in some metalworking " "fabrication recipes." -msgstr "一個進行鑄鐵作業時的小坩鍋。能在鑄鐵時派上用場。" +msgstr "一個進行鑄鐵作業時的小坩鍋。能用於一些金屬加工配方。" #: lang/json/TOOL_from_json.py msgid "clay crucible" @@ -44682,7 +44932,7 @@ msgid "" "product of either genius or insanity, but not both; the weight ensures that " "only someone both strong and very skilled could possibly hope to use it." msgstr "" -"將鏈鋸不切實際的接在長棍兩端的武器。做出這玩意兒的人, 不知道是天才還是精神錯亂, 又或者都不是; 因為重量關係, " +"將鏈鋸不切實際的接在長棍兩端的武器。做出這玩意兒的人, 不知道是天才還是精神錯亂, 又或者都不是。因為重量關係, " "需要強壯又能熟練揮動它的人才有可能使用。" #: lang/json/TOOL_from_json.py @@ -44700,7 +44950,7 @@ msgstr "將鏈鋸不切實際的接在長棍兩端的武器。目前正不斷的 #: lang/json/TOOL_from_json.py msgid "electric chainsaw lajatang (off)" msgid_plural "electric chainsaw lajatangs (off)" -msgstr[0] "" +msgstr[0] "雙頭電鋸 (關閉)" #. ~ Description for electric chainsaw lajatang (off) #: lang/json/TOOL_from_json.py @@ -44714,7 +44964,7 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "electric chainsaw lajatang (on)" msgid_plural "electric chainsaw lajatangs (on)" -msgstr[0] "" +msgstr[0] "雙頭電鋸 (啟動)" #. ~ Description for electric chainsaw lajatang (on) #: lang/json/TOOL_from_json.py @@ -44741,7 +44991,7 @@ msgstr[0] "受損的帳篷" msgid "" "This is a small shelter, made of sticks and skins. Use it to place. This " "shelter has been damaged, and needs repairs." -msgstr "小型庇護所, 用木棍跟毛皮搭設, 使用它來設置。這東西已經受損, 需要修復。" +msgstr "小型庇護所, 用木棍跟毛皮搭設, 使用它來設置。這東西已經受損, 需要修理。" #: lang/json/TOOL_from_json.py msgid "food dehydrator" @@ -44797,12 +45047,12 @@ msgstr "這是一個小哨子。當使用時, 能夠吹響出高頻音效, 能 #: lang/json/TOOL_from_json.py msgid "dog food" msgid_plural "dog food" -msgstr[0] "寶路" +msgstr[0] "狗食" #. ~ Description for dog food #: lang/json/TOOL_from_json.py msgid "This is food for dogs. It smells strange, but dogs seem to love it." -msgstr "經典狗食, 雖然嚐起來味道特殊, 但小狗很喜歡。" +msgstr "這是狗的食物。它聞起來很怪, 但是狗很喜歡。" #: lang/json/TOOL_from_json.py msgid "dynamite" @@ -44858,7 +45108,7 @@ msgstr "你已經點燃了 %s, 試試看丟擲出去吧。" #: lang/json/TOOL_from_json.py lang/json/TOOL_from_json.py src/iuse.cpp #: src/iuse.cpp msgid "ssss..." -msgstr "嘶嘶嘶嘶..." +msgstr "嘶嘶嘶嘶…" #. ~ Description for dynamite (lit) #: lang/json/TOOL_from_json.py @@ -44921,7 +45171,7 @@ msgid "" "However, since the only police likely to respond are undead, you may have a long wait ahead, unless you get creative..." msgstr "" "一付電子手銬, 通常是警察或鎮暴機器人用來逮捕嫌犯時使用。它會持續的發出警報聲, 以警告嫌犯在移送過程中不要逃跑或者嘗試掙脫, 否則會讓你嘗嘗電擊的滋味。\n" -"但是, 當警察現在正忙著對抗殭屍, 你可能要等很久才會到達移送目的地了, 除非你有什麼其他特別的想法..." +"但是, 當警察現在正忙著對抗殭屍, 你可能要等很久才會到達移送目的地了, 除非你有什麼其他特別的想法…" #: lang/json/TOOL_from_json.py msgid "entrenching tool" @@ -44938,7 +45188,7 @@ msgstr "這是一個堅固的可折疊鏟子。通常用於軍隊中或是遠足 #: lang/json/TOOL_from_json.py msgid "e-ink tablet PC" msgid_plural "e-ink tablet PCs" -msgstr[0] "" +msgstr[0] "平板電腦" #. ~ Description for e-ink tablet PC #: lang/json/TOOL_from_json.py @@ -44989,7 +45239,7 @@ msgstr "這袖珍版的剪毛器主要用於剪頭髮, 你可以用它來剪頭 #: lang/json/TOOL_from_json.py msgid "electric jackhammer" msgid_plural "electric jackhammers" -msgstr[0] "電動手提電鑽" +msgstr[0] "電動手提鑿岩機" #. ~ Description for electric jackhammer #: lang/json/TOOL_from_json.py @@ -45296,7 +45546,7 @@ msgstr[0] "簡易釣竿" msgid "" "'Fishing rod' might be a bit too charitable of a description. In truth, " "this is a stick with a piece of string and a hook." -msgstr "用 '釣竿' 來稱呼它有點名過其實。事實上, 這只是一根帶著繩子和鈎子的木棒而已。" +msgstr "用 \"釣竿\" 來稱呼它有點名過其實。事實上, 這只是一根帶著繩子和鈎子的木棒而已。" #: lang/json/TOOL_from_json.py msgid "pro fishing rod" @@ -45368,12 +45618,12 @@ msgstr "一支簡單的鍍銀長笛。" #: lang/json/TOOL_from_json.py msgid "folding bicycle" msgid_plural "folding bicycles" -msgstr[0] "折疊腳踏車" +msgstr[0] "折疊式自行車" #. ~ Use action unfold_msg for folding bicycle. #: lang/json/TOOL_from_json.py msgid "You painstakingly unfold the bicycle and make it ready to ride." -msgstr "你展開了腳踏車, 準備騎乘。" +msgstr "你展開了自行車, 準備騎乘。" #. ~ Description for folding bicycle #: lang/json/TOOL_from_json.py @@ -45519,7 +45769,7 @@ msgstr "你打開了這盞燈。" #. ~ Use action need_charges_msg for oil lamp (off). #: lang/json/TOOL_from_json.py msgid "The lamp is empty." -msgstr "這盞燈沒有燃料。" +msgstr "這盞燈是空的。" #. ~ Description for gasoline lantern (off) #: lang/json/TOOL_from_json.py @@ -45589,7 +45839,7 @@ msgid "" "This is a small blue light glowstick. Use it to bend the plastic and break " "the glass cylinder inside to start the reaction. It will produce a small " "amount of light." -msgstr "這是一根小型的藍色螢光棒。折彎曲它能讓管內的化學物質開始反應, 並會產生少許的光。" +msgstr "這是一根小型藍色螢光棒。\"使用\" 以彎曲塑膠管, 使裡面的玻璃圓筒破裂以開始反應, 能產生少量的光線。" #: lang/json/TOOL_from_json.py msgid "dead glowstick" @@ -45705,7 +45955,7 @@ msgid "" "This is a demagnetized steel hammer with a wooden grip. With a hammer, " "nails, and two by fours in your inventory, you could board up adjacent doors" " and windows. It has myriad other uses as well." -msgstr "這是一把消磁的鋼製鐵鎚, 有一個木手把。使用鐵鎚、鐵釘與 2x4 木材就能夠加固鄰近門窗。另外還有許多用途。" +msgstr "這是一把消磁的鋼製鐵鎚, 有一個木頭手把。使用鐵鎚、鐵釘與 2x4 木材就能夠加固鄰近門窗。另外還有許多用途。" #: lang/json/TOOL_from_json.py msgid "hand drill" @@ -45770,7 +46020,7 @@ msgstr "一把鋒利, 長得像刀子的工具, 用來從蜂巢中刮取蜂蜜 #: lang/json/TOOL_from_json.py lang/json/vehicle_part_from_json.py msgid "bicycle horn" msgid_plural "bicycle horns" -msgstr[0] "腳踏車叭噗" +msgstr[0] "自行車叭噗" #. ~ Weak horn sound #. ~ Use action noise_message for bicycle horn. @@ -45781,7 +46031,7 @@ msgstr "叭叭。" #. ~ Use action use_message for bicycle horn. #: lang/json/TOOL_from_json.py msgid "You honk the bicycle horn." -msgstr "你按了腳踏車的吧噗。" +msgstr "你按了自行車的吧噗。" #. ~ Description for bicycle horn #: lang/json/TOOL_from_json.py @@ -45789,7 +46039,7 @@ msgid "" "This is a simple bulb horn, found on many bicycles. Use to honk. Honk " "honk." msgstr "" -"這是一個簡單的球形喇叭, 能在許多腳踏車上找到。使用它來叭噗。叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗。" +"這是一個簡單的球形喇叭, 能在許多自行車上找到。使用它來叭噗。叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗叭噗。" #: lang/json/TOOL_from_json.py lang/json/vehicle_part_from_json.py msgid "truck horn" @@ -45843,7 +46093,7 @@ msgstr[0] "濕度計" #. ~ Description for hygrometer #: lang/json/TOOL_from_json.py msgid "A plastic hygrometer that can read the relative humidity in the air." -msgstr "一個塑膠製的濕度計, 可以量測環境濕度。" +msgstr "一個塑膠濕度計, 可以用來檢視環境濕度。" #: lang/json/TOOL_from_json.py msgid "ice axe" @@ -45888,7 +46138,7 @@ msgstr[0] "凱夫勒板" msgid "" "This is a plate of reinforced Kevlar. It could be used to repair items made" " of Kevlar." -msgstr "這是一個凱夫勒板, 能夠拿來修理凱夫勒製物品。" +msgstr "這是一塊強化的凱夫勒板, 能用於修理凱夫勒製成的物品。" #: lang/json/TOOL_from_json.py msgid "finished charcoal kiln" @@ -46131,7 +46381,7 @@ msgstr "一個軍用的反人員地雷, 當踩上就會爆炸。" #: lang/json/TOOL_from_json.py msgid "gunsmith repair kit" msgid_plural "gunsmith repair kits" -msgstr[0] "槍匠維修工具" +msgstr[0] "槍匠修理工具" #. ~ Description for gunsmith repair kit #: lang/json/TOOL_from_json.py @@ -46139,7 +46389,7 @@ msgid "" "This is a complete toolkit made to repair damaged firearms. Powered by " "standard batteries, it is a vital tool for long-term firearms maintenance. " "It requires 25 charges of battery power per use." -msgstr "這是一個用來維修受損槍械的完整工具。利用一般電池供電, 這是對槍枝長期保養的重要工具。每次使用需要 25 電量的電池。" +msgstr "這是一個用來修理受損槍械的完整工具。利用一般電池供電, 這是對槍枝長期保養的重要工具。每次使用需要 25 電量的電池。" #: lang/json/TOOL_from_json.py msgid "large tent" @@ -46476,7 +46726,7 @@ msgstr "這個迷你核彈的計時器指示燈不停地在閃爍, 看起來就 #: lang/json/TOOL_from_json.py msgid "basic repair kit" msgid_plural "basic repair kits" -msgstr[0] "基本維修工具" +msgstr[0] "基本修理工具" #. ~ Description for basic repair kit #: lang/json/TOOL_from_json.py @@ -46484,7 +46734,7 @@ msgid "" "This is a portable toolkit. When supplied with duct tape, it serves as a " "vital tool for fixing items made of wood, paper, bone, or chitin. It " "requires 50 units of duct tape per use." -msgstr "這是個可攜帶的工具包。只要配合大力膠帶一起使用, 就能夠修復木製, 紙製, 骨製, 或甲殼製的物品。每次使用都需要消耗50單位的大力膠帶。" +msgstr "這是個可攜帶的工具包。只要配合大力膠帶一起使用, 就能夠修理木製、紙製、骨製、或甲殼製的物品。每次使用都需要消耗 50 單位的大力膠帶。" #: lang/json/TOOL_from_json.py msgid "plastic mold" @@ -46581,8 +46831,8 @@ msgid "" "morale steadily while on your person. It runs through batteries quickly; " "you can turn it off by using it. It also obscures your hearing." msgstr "" -"MP3 播放器啟動並攜帶時後會播放一些超讚的音樂, " -"能夠穩定的提昇你的士氣。但是電池很快就會用完;你可以在不需要的狀況下關閉。開啟時同時也會影響你的聽力。" +"MP3 播放器啟動並攜帶時後會播放一些超讚的音樂, 能夠穩定的提昇你的士氣。但是電池很快就會用完, " +"你可以在不需要的狀況下關閉。開啟時同時也會影響你的聽力。" #: lang/json/TOOL_from_json.py msgid "multi cooker" @@ -46623,7 +46873,7 @@ msgid "" "This is sharp needle made from a bone. It would be useful for making rough " "clothing and items. Its low quality makes it rather unsuitable for anything" " requiring speed or precision." -msgstr "用骨頭製成的銳利針頭。製作粗糙的服裝和物品時很有用。但它的低品質使得成品缺乏精度, 製作也相當費時。" +msgstr "用骨頭製成的銳利針頭。製作粗糙的衣物和物品時很有用。但它的低品質使得成品缺乏精度, 製作也相當費時。" #: lang/json/TOOL_from_json.py msgid "curved needle" @@ -46937,7 +47187,7 @@ msgstr[0] "塑膠塊" msgid "" "This is a piece of plastic. It could be used to fabricate, repair, or " "reinforce plastic items." -msgstr "這是一個塑膠塊, 能夠拿來製造、修理、強化塑膠物品。" +msgstr "這是一個塑膠塊, 能用於製造、修理或強化塑膠製成的物品。" #: lang/json/TOOL_from_json.py msgid "pliers" @@ -46966,14 +47216,14 @@ msgstr "一塊復古的懷表。能夠很清楚的表達時間, 另外也能拆 #: lang/json/TOOL_from_json.py msgid "pocket knife" msgid_plural "pocket knives" -msgstr[0] "摺疊小刀" +msgstr[0] "口袋刀" #. ~ Description for pocket knife #: lang/json/TOOL_from_json.py msgid "" "This is a small pocket knife. It isn't great for combat, but it's better " "than nothing. It's sharp enough to butcher with." -msgstr "這是一把小摺疊刀。雖然不是什麼戰鬥利器, 但聊勝於無。它夠銳利可用來屠宰。" +msgstr "這是一把小口袋刀。雖然不是什麼戰鬥利器, 但聊勝於無。它夠銳利可用來屠宰。" #: lang/json/TOOL_from_json.py msgid "electric polisher" @@ -47212,7 +47462,7 @@ msgstr "一張能緊密卷起攜帶的睡墊。可以讓你跟地板有所阻隔 #: lang/json/TOOL_from_json.py msgid "RX12 jet injector" msgid_plural "RX12 jet injectors" -msgstr[0] "RX12 注射槍" +msgstr[0] "RX12 注射器" #. ~ Description for RX12 jet injector #: lang/json/TOOL_from_json.py @@ -47221,8 +47471,7 @@ msgid "" " advanced fast-healing chemicals through the skin without using a needle. A" " label on the side warns against using more than two doses per hour." msgstr "" -"Rivtech RX12 注射槍是一種小型手槍外形的無針注射器, " -"可以通過皮膚直接將高療效的治療藥劑注入身體。旁邊的標籤上印有每小時使用不得超過兩次的警告文字。" +"Rivtech RX12 注射器是一種手槍外形的小型無針注射器, 用於通過皮膚注射先進的治療藥品。側邊的標籤警示寫著每小時不得使用超過兩劑。" #: lang/json/TOOL_from_json.py msgid "safe deposit box" @@ -47280,7 +47529,7 @@ msgstr[0] "剪刀" msgid "" "These are a long pair of heavy duty scissors. Use scissors to cut items " "made from cotton (like clothing) into rags." -msgstr "這是一把耐用的大剪刀。使用剪刀可以裁剪棉製的物品 (如衣料) 成布條。" +msgstr "這是一把耐用的大剪刀。使用剪刀可以將棉製的物品 (如衣物) 切割成布條。" #: lang/json/TOOL_from_json.py msgid "scrambler grenade" @@ -47364,7 +47613,7 @@ msgid "" "This farming tool has been modified into a weapon by reinforcing and " "rotating its blade 90 degrees, transforming it into a deadly giant blade on " "the end of a stick." -msgstr "由農業工具改良而成, 將刀刃旋轉90°並予以補強, 使它變成在棍子末端接上一個致命大刀刃的武器。" +msgstr "由農業工具改良而成, 將刀刃旋轉 90° 並予以補強, 使它變成在棍子末端接上一個致命大刀刃的武器。" #: lang/json/TOOL_from_json.py msgid "sewing kit" @@ -47379,7 +47628,7 @@ msgid "" "article of clothing to attempt to repair or reinforce that clothing. This " "uses your tailoring skill." msgstr "" -"這是一個塑膠盒裝著各種針頭與一些纏繞縫線的塑膠線軸, 與其他一些有用的縫紉工具。在物品或衣物上使用能夠嘗試修補或是強化該物。取決於你的裁縫技能。" +"這是一個塑膠盒裝著各種針頭與一些纏繞縫線的塑膠線軸, 與其他一些有用的縫紉工具。在物品或衣物上使用能夠嘗試修理或是強化該物。取決於你的裁縫技能。" #: lang/json/TOOL_from_json.py msgid "shaving kit" @@ -47579,7 +47828,7 @@ msgstr "這是一個手提滅火器, 內含高壓的二氧化碳。能夠有效 #: lang/json/TOOL_from_json.py msgid "firearm repair kit" msgid_plural "firearm repair kits" -msgstr[0] "槍械維修工具" +msgstr[0] "槍械修理工具" #. ~ Description for firearm repair kit #: lang/json/TOOL_from_json.py @@ -47587,7 +47836,7 @@ msgid "" "This is a portable toolkit made to repair damaged firearms. Powered by " "standard batteries, it is a vital tool for long-term firearms maintenance. " "It requires 100 charges of battery power per use." -msgstr "這是一個用來維修受損槍械的隨身工具。利用一般電池供電, 這是對槍枝長期保養的重要工具。每次使用需要 100 電量的電池。" +msgstr "這是一個用來修理受損槍械的隨身工具。利用一般電池供電, 這是對槍枝長期保養的重要工具。每次使用需要 100 電量的電池。" #: lang/json/TOOL_from_json.py msgid "smart lamp (off)" @@ -47638,12 +47887,12 @@ msgid "" "and mask. Commonly used in emergency situations, it provides immediate " "relief for asthma attacks or smoke inhalation, and can provide a brief burst" " of energy." -msgstr "一小罐醫用壓縮氧, 附帶調節器和面罩。能夠迅速緩解氣喘症狀和吸入煙霧的影響, 也能讓你在短時間內精神奕奕。" +msgstr "一小罐醫用壓縮氧, 附帶折疊式調節器和面罩。能夠迅速緩解氣喘症狀和吸入煙霧的影響, 也能讓你在短時間內精神奕奕。" -#: lang/json/TOOL_from_json.py +#: lang/json/TOOL_from_json.py src/crafting_gui.cpp msgid "soldering iron" msgid_plural "soldering irons" -msgstr[0] "電烙鐵" +msgstr[0] "電焊棒" #. ~ Description for soldering iron #: lang/json/TOOL_from_json.py @@ -47771,7 +48020,7 @@ msgid "" "A homemade collapsible telescope. Too large and inaccurate to use as a " "weapon scope, but carrying this item in your inventory will double the " "distance that is mapped around you during your travels." -msgstr "一個自製的可摺疊望遠鏡。它的體積太大也不夠準確, 無法當成槍械鏡頭使用。但你只需要將它放在你的物品欄裡, 就可以讓你旅途中的能見距離加倍。" +msgstr "一個自製的可折疊望遠鏡。它的體積太大也不夠準確, 無法當成槍械鏡頭使用。但你只需要將它放在你的物品欄裡, 就可以讓你旅途中的能見距離加倍。" #: lang/json/TOOL_from_json.py msgid "makeshift shaving kit" @@ -47795,7 +48044,7 @@ msgstr[0] "鍛造模具組" msgid "" "These are a set of swages and dies for metalsmithing. These loops and metal" " blocks are used in some metalworking fabrication recipes." -msgstr "一組鍛造時使用的型鐵與模具。這些金屬環與鐵塊常使用於一些冶煉製造的配方上。" +msgstr "一組鍛造時使用的型鐵與模具。這些金屬環與鐵塊能用於一些金屬加工配方。" #: lang/json/TOOL_from_json.py msgid "switchblade" @@ -47972,7 +48221,7 @@ msgstr[0] "溫度計" #. ~ Description for thermometer #: lang/json/TOOL_from_json.py msgid "A plastic thermometer that can read the air temperature." -msgstr "一個塑膠製的溫度計, 可以量測環境溫度。" +msgstr "一個塑膠溫度計, 可以用來檢視環境溫度。" #: lang/json/TOOL_from_json.py msgid "throwable fire extinguisher" @@ -47997,7 +48246,7 @@ msgstr[0] "鐵鉗" msgid "" "These are long, metal tongs. They are commonly used for cooking or in " "metalworking fabrication recipes." -msgstr "是一把長鐵鉗。它通常用於烹飪或在金屬加工製造上。" +msgstr "是一把長鐵鉗。它通常用於烹飪或在金屬加工配方。" #: lang/json/TOOL_from_json.py msgid "ANFO charge" @@ -48097,7 +48346,7 @@ msgid "" "filled with black gunpowder and scrap metal, equipped with a long fuse. Use" " this item to light the fuse. Should explode in a few minutes..." msgstr "" -"這是一個自製的爆炸裝置, 由一個裝滿黑火藥和廢金屬的大塑料罐製成, 上面插著根長長的引線。使用這個物品以點燃引線, 大概在幾分鐘內就會爆炸..." +"這是一個自製的爆炸裝置, 由一個裝滿黑火藥和廢金屬的大塑料罐製成, 上面插著根長長的引線。使用這個物品以點燃引線, 大概在幾分鐘內就會爆炸…" #: lang/json/TOOL_from_json.py msgid "active black gunpowder charge" @@ -48152,12 +48401,12 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "RDX sand bomb" msgid_plural "RDX sand bombs" -msgstr[0] "旋風砂彈" +msgstr[0] "旋風沙彈" #. ~ Use action msg for RDX sand bomb. #: lang/json/TOOL_from_json.py msgid "You light the fuse on the sand bomb. Throw it!" -msgstr "你已經點燃了砂彈。快扔了它!" +msgstr "你已經點燃了沙彈。快扔了它!" #. ~ Description for RDX sand bomb #: lang/json/TOOL_from_json.py @@ -48170,7 +48419,7 @@ msgstr "這是根裝著旋風炸藥和沙子的鋼管。前者推動後者形成 #: lang/json/TOOL_from_json.py msgid "active RDX sand bomb" msgid_plural "active RDX sand bombs" -msgstr[0] "啟動中旋風砂彈" +msgstr[0] "啟動中旋風沙彈" #. ~ Use action no_deactivate_msg for active RDX sand bomb. #: lang/json/TOOL_from_json.py @@ -48285,7 +48534,7 @@ msgid "" "sharp-edged teeth extends from the engine; turning the trimmer on will make " "them rapidly vibrate. The poor man's chainsaw as far as the zombies are " "concerned." -msgstr "無線, 雙面, 汽油動力修枝機。一長列鋒利的齒刃從發動機延伸出來;啟動修剪時會讓它們快速振動。對付殭屍而言這是窮人版的電鋸。" +msgstr "無線, 雙面, 汽油動力修枝機。一長列鋒利的齒刃從發動機延伸出來, 啟動修剪時會讓它們快速振動。對付殭屍而言這是窮人版的電鋸。" #: lang/json/TOOL_from_json.py msgid "hedge trimmer (on)" @@ -48458,7 +48707,7 @@ msgstr[0] "電焊機" msgid "" "This is a battery powered tool for welding metal pieces together. It is an " "indispensable tool for construction or repair." -msgstr "這個工具用於把金屬焊在一起。是個進行建設及維修時不可或缺的工具。" +msgstr "這個工具用於把金屬焊在一起。是個進行建造及修理時不可或缺的工具。" #: lang/json/TOOL_from_json.py msgid "makeshift welder" @@ -48530,7 +48779,7 @@ msgstr[0] "扳手" msgid "" "This is an adjustable crescent wrench. It could be a decent melee weapon, " "and is used in many mechanics crafting recipes." -msgstr "一個可調整的扳手。適合當武器用, 而且可以應用在許多機械製作的配方上。" +msgstr "一個可調整的扳手。它能作為不錯的近戰武器, 也能用於許多機械製作配方。" #: lang/json/TOOL_from_json.py msgid "X-Acto knife" @@ -48648,12 +48897,12 @@ msgstr[0] "鏈甲薄片" msgid "" "This is a sheet of riveted chainmail. With some skill, several of these " "sheets could be connected to make effective armor." -msgstr "這是用作釘上鏈甲的薄片。有足夠技能的話, 可以連接這些薄片去製作成一件實際的護甲。" +msgstr "這是一塊鉚接的鏈甲薄片。如果有足夠的技能, 數個薄片可以被連接製成實用的鎧甲。" #: lang/json/TOOL_from_json.py msgid "folding knife" msgid_plural "folding knives" -msgstr[0] "" +msgstr[0] "折疊刀" #. ~ Description for folding knife #: lang/json/TOOL_from_json.py @@ -48778,7 +49027,7 @@ msgstr "" #: lang/json/TOOL_from_json.py lang/json/furniture_from_json.py msgid "leather tarp" msgid_plural "leather tarps" -msgstr[0] "" +msgstr[0] "皮革篷布" #. ~ Description for leather tarp #: lang/json/TOOL_from_json.py @@ -48849,7 +49098,7 @@ msgid "" "This is a typical household flashlight with a plastic handle. Using this " "flashlight will turn it on and provide light, assuming it is charged with " "batteries." -msgstr "一支塑膠握把的典型家用手電筒。[使用] 它就能用來照明, 前提是它要裝有電池。" +msgstr "這支典型的家用手電筒帶有塑膠握把。\"使用\" 以啟動它並提供照明, 前提是電池已經充電。" #: lang/json/TOOL_from_json.py msgid "flashlight (on)" @@ -48869,7 +49118,7 @@ msgstr[0] "照明彈" #. ~ Use action menu_text for flare. #: lang/json/TOOL_from_json.py msgid "Strike the striker" -msgstr "燃點照明彈" +msgstr "點燃照明彈" #. ~ Use action msg for flare. #: lang/json/TOOL_from_json.py @@ -48916,7 +49165,7 @@ msgid "" "This is a heavy duty tubular aluminum LED flashlight as often used by " "security guards. Makes for a passable melee weapon. Using this flashlight " "will turn it on and provide light, assuming it is charged with batteries." -msgstr "這是一把耐用的鋁製 LED 手電筒, 保全的常見裝備。它也是一把還可以的近戰武器。打開它就能提供光源, 前提是它得要有裝電池。" +msgstr "這支重型管狀鋁製 LED 手電筒通常供保全人員使用。它也是一把還行的近戰武器。\"使用\" 以啟動它並提供照明, 前提是電池已經充電。" #: lang/json/TOOL_from_json.py msgid "heavy duty flashlight (on)" @@ -49052,7 +49301,7 @@ msgid "" "This is a radio with a transmitting unit. You could use it to contact " "someone who also has one. Unfortunately no one seems to use those " "nowadays..." -msgstr "這是個裝有訊號傳送元件的無線電。你可以用它來聯繫其他擁有無線電的人。不幸的是, 現在似乎沒有人在用了..." +msgstr "這是個裝有訊號傳送元件的無線電。你可以用它來聯繫其他擁有無線電的人。不幸的是, 現在似乎沒有人在用了…" #: lang/json/TOOL_from_json.py msgid "remote vehicle controller" @@ -49128,8 +49377,8 @@ msgid "" "to provide it with energy. The power cell is not compatible with standard " "batteries; it must be re-energized via a special recharging station." msgstr "" -"一個手工製, 從廢電器上拆下的充電電池。有足夠的電子技能, " -"你就能夠把這東西連接到電器上來供電。用了這個模組就無法使用標準電池充電;必須透過特殊的充電站才能充電。" +"一個手工製, 從廢電器上拆下的充電電池。有足夠的電子技能, 你就能夠把這東西連接到電器上來供電。用了這個模組就無法使用標準電池充電, " +"必須透過特殊的充電站才能充電。" #: lang/json/TOOL_from_json.py msgid "active nail bomb" @@ -49213,14 +49462,6 @@ msgid "" " to a potato." msgstr "" -#. ~ Description for scissor jack -#: lang/json/TOOL_from_json.py -msgid "" -"A compact scissor jack used for lifting vehicles. It's outfitted with " -"patented Aperture Science(tm) technology that lets it lift engines by " -"teleporting itself beneath them." -msgstr "" - #: lang/json/TOOL_from_json.py msgid "Dusk" msgid_plural "Dusks" @@ -49279,14 +49520,14 @@ msgstr "一把古中國刀, 由青銅製成, 刀身微曲, 配以杯形護手。 #: lang/json/TOOL_from_json.py msgid "bronze anvil" msgid_plural "bronze anvils" -msgstr[0] "" +msgstr[0] "青銅鐵砧" #. ~ Description for bronze anvil #: lang/json/TOOL_from_json.py msgid "" "This is a block of oddly shaped bronze with a chisel-like projection set " "into the corner. It's used in most metalworking fabrication recipes." -msgstr "" +msgstr "這是一個形狀奇特的青銅塊, 其中一端有個鑿子形狀的突出物。能用於大部分的金屬加工製作配方。" #. ~ Use action use_message for disarmed defense turret. #. ~ Use action use_message for disarmed military turret. @@ -49620,7 +49861,7 @@ msgstr "你點亮火種。" #. ~ Use action need_fire_msg for ember carrier. #: lang/json/TOOL_from_json.py msgid "You need a lighter or fire to light this." -msgstr "你需要打火機或火源來點燃它。" +msgstr "你需要一個打火機或火源來點燃它。" #. ~ Description for ember carrier #: lang/json/TOOL_from_json.py @@ -49717,7 +49958,7 @@ msgstr[0] "烏洛托品爐" msgid "" "Known as an Esbit stove, this is a lightweight, folding stove designed to " "use small hexamine tablets for cooking." -msgstr "被稱為 Esbit 爐, 這是一種重量輕、可折疊的煮食爐, 使用小烏洛托品片作燃料。" +msgstr "被稱為 Esbit 爐, 這是一種輕量的折疊式煮食爐, 使用小烏洛托品片作燃料。" #: lang/json/TOOL_from_json.py msgid "makeshift axe" @@ -50341,7 +50582,7 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "inactive tankbot" msgid_plural "inactive tankbots" -msgstr[0] "" +msgstr[0] "未啟動的坦克機器人" #: lang/json/TOOL_from_json.py msgid "inactive fist king" @@ -50382,6 +50623,15 @@ msgid "autonomous surgical razors" msgid_plural "autonomous surgical razors" msgstr[0] "" +#. ~ Description for autonomous surgical razors +#. ~ Description for Autonomous Surgical Razors +#: lang/json/TOOL_from_json.py lang/json/bionic_from_json.py +msgid "" +"Implanted on the user's fingers is a system of surgical grade razors. While" +" activated, they will continously drain power to make automated precise cuts" +" but you will be unable to wield anything." +msgstr "" + #: lang/json/TOOL_from_json.py msgid "growing blob frame" msgid_plural "growing blob frames" @@ -50391,12 +50641,12 @@ msgstr[0] "成長中的黏稠框架" #: lang/json/TOOL_from_json.py msgid "" "You test the frame; It wiggles, and then collapses into an lump of goo." -msgstr "你測試了這個框架;它蠕動著, 然後塌陷成一坨黏稠的物質。" +msgstr "你測試了這個框架。它蠕動著, 然後塌陷成一坨黏稠的物質。" #. ~ Use action not_ready_msg for growing blob frame. #: lang/json/TOOL_from_json.py msgid "You test the frame; it gives easily, it's still not sturdy enough" -msgstr "你測試了這個框架;它很容易變形, 還不夠堅固。" +msgstr "你測試了這個框架。它很容易變形, 還不夠堅固。" #. ~ Description for growing blob frame #: lang/json/TOOL_from_json.py @@ -50409,7 +50659,7 @@ msgstr "一個成長中的骨質車架。它塗著一層厚厚的軟泥, 尤其 #: lang/json/TOOL_from_json.py msgid "growing keratinous mass" msgid_plural "growing keratinous mass" -msgstr[0] "" +msgstr[0] "成長中的角質團塊" #. ~ Use action msg for growing keratinous mass. #. ~ Use action msg for growing beaded mass. @@ -50487,17 +50737,17 @@ msgstr "還沒完全成熟, 這團黏稠物還需要養料來完全成長。" #: lang/json/TOOL_from_json.py msgid "growing beaded mass" msgid_plural "growing beaded mass" -msgstr[0] "" +msgstr[0] "成長中的珠狀團塊" #: lang/json/TOOL_from_json.py msgid "growing icy mass" msgid_plural "growing icy mass" -msgstr[0] "" +msgstr[0] "成長中的冰冷團塊" #: lang/json/TOOL_from_json.py msgid "gelacier" msgid_plural "gelaciers" -msgstr[0] "" +msgstr[0] "凝膠冰川" #. ~ Description for gelacier #: lang/json/TOOL_from_json.py @@ -50511,7 +50761,7 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "growing cold mass" msgid_plural "growing cold mass" -msgstr[0] "" +msgstr[0] "成長中的寒冷團塊" #: lang/json/TOOL_from_json.py msgid "growing hairy mass" @@ -50541,7 +50791,7 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "multiplying gelatinous mass" msgid_plural "multiplying gelatinous mass" -msgstr[0] "" +msgstr[0] "分裂中的凝膠團塊" #. ~ Use action friendly_msg for multiplying gelatinous mass. #. ~ Use action hostile_msg for multiplying gelatinous mass. @@ -50588,7 +50838,7 @@ msgstr "" #: lang/json/TOOL_from_json.py msgid "multiplying gray mass" msgid_plural "multiplying gray mass" -msgstr[0] "" +msgstr[0] "分裂中的灰質團塊" #: lang/json/TOOL_from_json.py msgid "growing gray mass" @@ -50598,17 +50848,17 @@ msgstr[0] "成長中的灰質團塊" #: lang/json/TOOL_from_json.py msgid "growing spike-studded mass" msgid_plural "growing spike-studded mass" -msgstr[0] "" +msgstr[0] "成長中的滿鑲長釘團塊" #: lang/json/TOOL_from_json.py msgid "growing gasoline-laced mass" msgid_plural "growing gasoline-laced mass" -msgstr[0] "" +msgstr[0] "成長中的飽含汽油團塊" #: lang/json/TOOL_from_json.py msgid "growing acidic mass" msgid_plural "growing acidic mass" -msgstr[0] "" +msgstr[0] "成長中的酸性團塊" #: lang/json/TOOL_from_json.py msgid "oozing mass" @@ -50644,17 +50894,17 @@ msgstr[0] "成長中的卷鬚團塊" #: lang/json/TOOL_from_json.py msgid "growing spiked mass" msgid_plural "growing spiked mass" -msgstr[0] "" +msgstr[0] "成長中的長釘團塊" #: lang/json/TOOL_from_json.py msgid "growing spiny mass" msgid_plural "growing spiny mass" -msgstr[0] "" +msgstr[0] "成長中的帶刺團塊" #: lang/json/TOOL_from_json.py msgid "growing spiky mass" msgid_plural "growing spiky mass" -msgstr[0] "" +msgstr[0] "成長中的多刺團塊" #: lang/json/TOOL_from_json.py msgid "growing bright mass" @@ -50664,17 +50914,17 @@ msgstr[0] "成長中的明亮團塊" #: lang/json/TOOL_from_json.py msgid "growing viscous mass" msgid_plural "growing viscous mass" -msgstr[0] "" +msgstr[0] "成長中的黏性團塊" #: lang/json/TOOL_from_json.py msgid "growing warm mass" msgid_plural "growing warm mass" -msgstr[0] "" +msgstr[0] "成長中的溫暖團塊" #: lang/json/TOOL_from_json.py msgid "growing electrified mass" msgid_plural "growing electrified mass" -msgstr[0] "" +msgstr[0] "成長中的帶電團塊" #: lang/json/TOOL_from_json.py msgid "diamond cluster" @@ -50753,22 +51003,22 @@ msgid "" "A small device, not bigger than a man's fist. It provides primitive " "organisms with electric stimulation, reviving them and forcing them to obey " "your commands. This version only works on blobs." -msgstr "一個比人類拳頭稍微小一點的晶片, 可以發出生物電流控制一些原始的有機生物, 讓他們聽你的話, 這個版本的晶片只對黏液球有效。" +msgstr "一個比人類拳頭稍微小一點的晶片, 可以發出生物電流控制一些原始的有機生物, 讓他們聽你的話, 這個版本的晶片只對黏球怪有效。" #: lang/json/TOOL_from_json.py msgid "dormant blob" msgid_plural "dormant blobs" -msgstr[0] "睡眠中的黏液球" +msgstr[0] "休眠中的黏球怪" #. ~ Use action friendly_msg for dormant blob. #: lang/json/TOOL_from_json.py msgid "The blob becomes active and starts slithering around." -msgstr "這顆黏液球醒了過來, 並且開始四處滑行。" +msgstr "這顆黏球怪醒了過來, 並且開始四處滑行。" #. ~ Use action hostile_msg for dormant blob. #: lang/json/TOOL_from_json.py msgid "You've made a terrible mistake, the blob is hostile!" -msgstr "你犯了一些可怕的錯誤, 這顆黏液球現在處於敵對狀態!" +msgstr "你犯了一些可怕的錯誤, 這顆黏球怪現在處於敵對狀態!" #. ~ Description for dormant blob #: lang/json/TOOL_from_json.py @@ -50777,13 +51027,13 @@ msgid "" "together. A light shock from the UPS started the chip, bringing the blob " "back to life. Use this item to wake up the blob." msgstr "" -"幾塊黏液球的碎片被縫回它原本應有的樣子, 但是裡面塞了一塊控制晶片。只要從 UPS 中發出輕微的電流就可以啟動那塊晶片, 並讓這顆黏液球活過來, " -"你現在可以把這個黏液球從陰間召喚回來。" +"幾塊黏球怪的碎片被縫回它原本應有的樣子, 但是裡面塞了一塊控制晶片。只要從 UPS 中發出輕微的電流就可以啟動那塊晶片, 並讓這顆黏液球活過來, " +"你現在可以把這個黏球怪從陰間召喚回來。" #: lang/json/TOOL_from_json.py msgid "dormant minion" msgid_plural "dormant minions" -msgstr[0] "睡眠中的殭屍奴隸" +msgstr[0] "休眠中的殭屍奴隸" #. ~ Use action friendly_msg for dormant minion. #: lang/json/TOOL_from_json.py @@ -50802,7 +51052,7 @@ msgstr "" msgid "" "Your very own undead servant. The blob controlling its body is in a state " "of coma, awaiting your orders. Use this item to wake up the minion." -msgstr "只屬於你的不死奴僕, 有一顆黏液球控制了它的身體, 現在正處於昏迷狀態, 你現在可以叫醒它。" +msgstr "只屬於你的不死奴僕, 有一顆黏球怪控制了它的身體, 現在正處於昏迷狀態, 你現在可以叫醒它。" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "wheel" @@ -50820,35 +51070,35 @@ msgstr "裝甲輪胎" #. ~ Description for armored wheel #: lang/json/WHEEL_from_json.py msgid "A wide military grade wheel." -msgstr "一個軍用的寬車輪。" +msgstr "一個軍用的寬輪胎。" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "wheelbarrow wheel" -msgstr "手推車車輪" +msgstr "獨輪手推車輪胎" #. ~ Description for wheelbarrow wheel #: lang/json/WHEEL_from_json.py msgid "A small wheel from a common garden wheelbarrow." -msgstr "一個小車輪, 來自常見的花園單輪手推車。" +msgstr "一個小輪胎, 來自常見的花園獨輪手推車。" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "bicycle wheel" -msgstr "單車輪胎" +msgstr "自行車輪胎" #. ~ Description for bicycle wheel #: lang/json/WHEEL_from_json.py msgid "A bicycle wheel." -msgstr "一個單車車輪。" +msgstr "一個自行車輪胎。" #: lang/json/WHEEL_from_json.py msgid "set of casters" msgid_plural "sets of casters" -msgstr[0] "一組滑輪" +msgstr[0] "一套腳輪" #. ~ Description for set of casters #: lang/json/WHEEL_from_json.py msgid "A set of casters, like on a shopping cart." -msgstr "一組大賣場購物車的滑輪。" +msgstr "一組購物車的腳輪。" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "metal wheel" @@ -50890,17 +51140,17 @@ msgstr "小輪胎" msgid "" "A pretty small wheel. Probably from one of those Segway things. It is not " "very menacing." -msgstr "一個漂亮的小輪子。也許是那些賽格威電動車的。好像有點不可靠。" +msgstr "一個漂亮的小輪胎。也許是那些賽格威電動車的。好像有點不可靠。" #: lang/json/WHEEL_from_json.py msgid "pair of wheelchair wheels" msgid_plural "pairs of wheelchair wheels" -msgstr[0] "一對輪椅的輪子" +msgstr[0] "一對輪椅輪胎" #. ~ Description for pair of wheelchair wheels #: lang/json/WHEEL_from_json.py msgid "A pair of wheels for a wheelchair." -msgstr "一對輪椅用的車輪。" +msgstr "一對輪椅用的輪胎。" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "wide wheel" @@ -50913,21 +51163,21 @@ msgstr "一個寬輪胎。大概 \\o/ 這麼寬。" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "wooden cart wheel" -msgstr "木製購物車滑輪" +msgstr "木製手推車腳輪" #. ~ Description for wooden cart wheel #: lang/json/WHEEL_from_json.py msgid "A wooden cart wheel, hand made." -msgstr "一個木製、手工的購物車滑輪。" +msgstr "一個手工製作的木製手推車腳輪。" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "banded wooden cart wheel" -msgstr "包覆金屬片的木製購物車滑輪" +msgstr "包覆金屬片的木製手推車腳輪" #. ~ Description for banded wooden cart wheel #: lang/json/WHEEL_from_json.py msgid "A wooden cart wheel with metal bands for durability, hand made." -msgstr "一個木製購物車滑輪外層包覆了金屬片, 讓它更加的耐用, 純手工打造。" +msgstr "一個手工製作的木製手推車腳輪, 用金屬片包覆以增加耐用性。" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "inflatable section" @@ -50964,7 +51214,7 @@ msgstr "" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "Gelatinous track" -msgstr "" +msgstr "凝膠履帶" #. ~ Description for Gelatinous track #. ~ Description for Oozing track @@ -50979,15 +51229,15 @@ msgstr "" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "Oozing track" -msgstr "" +msgstr "軟泥履帶" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "Gray track" -msgstr "" +msgstr "灰質履帶" #: lang/json/WHEEL_from_json.py msgid "gelacier wheel" -msgstr "" +msgstr "凝膠冰川輪胎" #. ~ Description for gelacier wheel #: lang/json/WHEEL_from_json.py @@ -51011,7 +51261,7 @@ msgstr "" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "gelatinous wheel" -msgstr "凝膠車輪" +msgstr "凝膠輪胎" #. ~ Description for gelatinous wheel #: lang/json/WHEEL_from_json.py @@ -51019,11 +51269,11 @@ msgid "" "Filling a gelatinous mass with water has resulted in something that appears " "to be a cross between a wheel, an otherworldly abomination, and one of those" " old squeezy toys." -msgstr "" +msgstr "用水填充入凝膠狀物質, 型塑出一種十字狀物, 介於超凡憎惡的輪胎與老舊的擠壓玩具之間。" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "gray wheel" -msgstr "灰質車輪" +msgstr "灰質輪胎" #. ~ Description for gray wheel #: lang/json/WHEEL_from_json.py @@ -51047,7 +51297,7 @@ msgstr "" #: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py msgid "oozing wheel" -msgstr "軟泥車輪" +msgstr "軟泥輪胎" #. ~ Description for oozing wheel #: lang/json/WHEEL_from_json.py @@ -51126,15 +51376,15 @@ msgstr "停止屠宰?" #: lang/json/activity_type_from_json.py msgid "Stop field dressing?" -msgstr "" +msgstr "停止去除臟器?" #: lang/json/activity_type_from_json.py msgid "Stop quartering?" -msgstr "" +msgstr "停止四等分?" #: lang/json/activity_type_from_json.py msgid "Stop dissecting?" -msgstr "" +msgstr "停止解剖?" #: lang/json/activity_type_from_json.py msgid "Stop salvaging?" @@ -51146,7 +51396,7 @@ msgstr "停止採集?" #: lang/json/activity_type_from_json.py msgid "Stop construction?" -msgstr "停止建設?" +msgstr "停止建造?" #: lang/json/activity_type_from_json.py msgid "Stop interacting with the vehicle?" @@ -51158,7 +51408,7 @@ msgstr "停止訓練?" #: lang/json/activity_type_from_json.py msgid "Stop using first aid?" -msgstr "停止使用急救包?" +msgstr "停止使用急救箱?" #: lang/json/activity_type_from_json.py msgid "Stop fishing?" @@ -51174,7 +51424,7 @@ msgstr "停止挖洞?" #: lang/json/activity_type_from_json.py msgid "Stop smashing?" -msgstr "停止砸碎?" +msgstr "停止砸爛?" #: lang/json/activity_type_from_json.py msgid "Stop de-stressing?" @@ -51202,15 +51452,15 @@ msgstr "停止移動物品?" #: lang/json/activity_type_from_json.py msgid "Stop sorting out the loot?" -msgstr "" +msgstr "停止整理物資?" #: lang/json/activity_type_from_json.py msgid "Stop tilling the farm plot?" -msgstr "" +msgstr "停止耕地?" #: lang/json/activity_type_from_json.py msgid "Stop planting seeds?" -msgstr "" +msgstr "停止播種?" #: lang/json/activity_type_from_json.py msgid "Stop interacting with inventory?" @@ -51270,7 +51520,7 @@ msgstr "停止調校槍械?" #: lang/json/activity_type_from_json.py msgid "Stop modifying tool?" -msgstr "" +msgstr "停止調校工具?" #: lang/json/activity_type_from_json.py msgid "Stop interacting with the NPC?" @@ -51286,39 +51536,39 @@ msgstr "停止冥想?" #: lang/json/activity_type_from_json.py msgid "Stop washing?" -msgstr "" +msgstr "停止清洗?" #: lang/json/activity_type_from_json.py msgid "Stop cutting the metal?" -msgstr "" +msgstr "停止裁切金屬?" #: lang/json/activity_type_from_json.py msgid "Stop chopping down?" -msgstr "要停止伐木?" +msgstr "停止伐木?" #: lang/json/activity_type_from_json.py msgid "Stop drilling?" -msgstr "" +msgstr "停止鑽洞?" #: lang/json/activity_type_from_json.py msgid "Stop digging?" -msgstr "" +msgstr "停止挖掘?" #: lang/json/activity_type_from_json.py msgid "Stop filling?" -msgstr "" +msgstr "停止裝填?" #: lang/json/activity_type_from_json.py msgid "Stop shaving?" -msgstr "" +msgstr "停止刮鬍?" #: lang/json/activity_type_from_json.py msgid "Stop cutting your hair?" -msgstr "" +msgstr "停止理髮?" #: lang/json/activity_type_from_json.py msgid "Stop trying to fall asleep?" -msgstr "" +msgstr "停止嘗試入睡?" #: lang/json/ammunition_type_from_json.py msgid ".700 Nitro Express" @@ -51773,7 +52023,7 @@ msgid "" "you to extend and retract them at the cost of a small amount of power. " "These do considerable cutting damage, but prevent you from holding anything " "else while extended." -msgstr "" +msgstr "你的手指裡面透過手術安裝了凶狠的爪子, 允許你花費少許能量伸縮它。它能造成可觀的砍劈傷害, 但是在它伸出時你無法拿著任何東西。" #: lang/json/bionic_from_json.py msgid "Internal Climate Control" @@ -52105,7 +52355,7 @@ msgstr "天氣預報" #: lang/json/bionic_from_json.py msgid "Repair Nanobots" -msgstr "奈米修復器" +msgstr "奈米機器人修復器" #: lang/json/bionic_from_json.py msgid "Artificial Night Generator" @@ -52181,7 +52431,7 @@ msgstr "生化視覺障礙" msgid "" "Due to a badly misplaced dielectric stylette you are now suffering from mild" " optic neuropathy. Increases eye encumbrance by one." -msgstr "由於嚴重的安裝介質錯位, 造成你出現輕度視覺障礙。增加眼睛累贅1點。" +msgstr "由於嚴重的安裝介質錯位, 造成你出現輕度視覺障礙。增加眼睛累贅 1 點。" #: lang/json/bionic_from_json.py msgid "Power Armor Interface" @@ -52282,7 +52532,7 @@ msgid "" "A poorly-wired bionic which fails to serve its intended purpose, this " "malfunctioning device periodically short-circuits, causing systemic muscle " "tremors." -msgstr "一個亂接一通的生化插件無法正常的工作, 這個故障的裝置定期會短路, 造成全身肌肉抽搐。" +msgstr "一個亂接一通的生化插件未能正常工作, 這個故障的裝置定期會短路, 造成全身肌肉抽搐。" #: lang/json/bionic_from_json.py msgid "Electroshock Unit" @@ -52314,7 +52564,7 @@ msgstr "太陽能板" msgid "" "You have a few solar panels surgically installed. While in direct sunlight," " your power level will slowly recharge." -msgstr "" +msgstr "你手術安裝了數個太陽能板。只要陽光直射你就能夠慢慢充能。" #: lang/json/bionic_from_json.py msgid "Motor Control Overstimulator" @@ -52380,7 +52630,7 @@ msgstr "" #: lang/json/bionic_from_json.py msgid "Anti-Glare Compensators" -msgstr "防眩光裝置" +msgstr "眩光防護裝置" #. ~ Description for Anti-Glare Compensators #: lang/json/bionic_from_json.py @@ -52495,7 +52745,7 @@ msgstr "" #: lang/json/bionic_from_json.py msgid "Intravenous Needletip" -msgstr "" +msgstr "靜脈注射針" #. ~ Description for Intravenous Needletip #: lang/json/bionic_from_json.py @@ -52508,7 +52758,7 @@ msgstr "" #: lang/json/bionic_from_json.py msgid "Titanium Skeletal Bracing" -msgstr "" +msgstr "鈦製骨架支撐" #. ~ Description for Titanium Skeletal Bracing #: lang/json/bionic_from_json.py @@ -52520,7 +52770,7 @@ msgstr "" #: lang/json/bionic_from_json.py msgid "Kinetic Shock Absorbers" -msgstr "" +msgstr "動力減震系統" #. ~ Description for Kinetic Shock Absorbers #: lang/json/bionic_from_json.py @@ -52532,6 +52782,11 @@ msgid "" "of impaired movement." msgstr "" +#: lang/json/bionic_from_json.py lang/json/gun_from_json.py +msgid "Ionic Overload Generator" +msgid_plural "Ionic Overload Generators" +msgstr[0] "" + #: lang/json/bionic_from_json.py msgid "Synaptic Regeneration System" msgstr "" @@ -52545,12 +52800,6 @@ msgid "" "already, it will boost the rate of recovery while you sleep." msgstr "" -#: lang/json/bionic_from_json.py lang/json/gun_from_json.py -#: lang/json/gun_from_json.py -msgid "Ionic Overload Generator" -msgid_plural "Ionic Overload Generators" -msgstr[0] "" - #: lang/json/bionic_from_json.py msgid "Autonomous Surgical Razors" msgstr "" @@ -52610,7 +52859,7 @@ msgstr "眼睛" #: lang/json/bodypart_from_json.py msgid "Ranged combat is hampered." -msgstr "遠距離攻擊受阻。" +msgstr "遠程攻擊受阻。" #: lang/json/bodypart_from_json.py src/armor_layers.cpp msgid "Eyes" @@ -52646,7 +52895,7 @@ msgstr "左臂" #: lang/json/bodypart_from_json.py msgid "Melee and ranged combat is hampered." -msgstr "近戰及遠距攻擊受阻。" +msgstr "近戰及遠程攻擊受阻。" #: lang/json/bodypart_from_json.py src/armor_layers.cpp msgid "L. Arm" @@ -52819,7 +53068,7 @@ msgstr "搭建臨時避難所" #: lang/json/construction_from_json.py msgid "Build Door Curtain" -msgstr "建設門簾" +msgstr "建造門簾" #: lang/json/construction_from_json.py msgid "Can be deconstructed without tools." @@ -52827,11 +53076,11 @@ msgstr "不需要工具就能拆解。" #: lang/json/construction_from_json.py msgid "Build Makeshift Door" -msgstr "建設簡便門" +msgstr "建造簡便門" #: lang/json/construction_from_json.py msgid "Build Door" -msgstr "建設門" +msgstr "建造門" #: lang/json/construction_from_json.py msgid "Repair Wood Door" @@ -52847,11 +53096,11 @@ msgstr "強化木門" #: lang/json/construction_from_json.py msgid "Build Metal Door" -msgstr "建設金屬門" +msgstr "建造金屬門" #: lang/json/construction_from_json.py msgid "Build Window" -msgstr "建設窗戶" +msgstr "建造窗戶" #: lang/json/construction_from_json.py msgid "Clean Broken Window" @@ -52879,11 +53128,11 @@ msgstr "裝甲強化的窗戶" #: lang/json/construction_from_json.py msgid "Build Metal Bars" -msgstr "建設金屬欄杆" +msgstr "建造金屬欄杆" #: lang/json/construction_from_json.py msgid "Build Wood Wall" -msgstr "建設木牆" +msgstr "建造木牆" #: lang/json/construction_from_json.py msgid "Repair Wood Wall" @@ -52891,7 +53140,7 @@ msgstr "修理木牆" #: lang/json/construction_from_json.py msgid "Build Log Wall" -msgstr "建設原木牆" +msgstr "建造原木牆" #: lang/json/construction_from_json.py msgid "Repair Log Wall" @@ -52899,27 +53148,27 @@ msgstr "修理原木牆" #: lang/json/construction_from_json.py msgid "Build Sandbag Wall" -msgstr "建設沙袋牆" +msgstr "建造沙袋牆" #: lang/json/construction_from_json.py msgid "Build Metal Wall" -msgstr "建設金屬牆" +msgstr "建造金屬牆" #: lang/json/construction_from_json.py msgid "Build Brick Wall" -msgstr "建設磚牆" +msgstr "建造磚牆" #: lang/json/construction_from_json.py msgid "Build Simple Concrete Wall" -msgstr "建設簡單混凝土牆" +msgstr "建造簡單混凝土牆" #: lang/json/construction_from_json.py msgid "Build Reinforced Concrete Wall" -msgstr "建設強化混凝土牆" +msgstr "建造強化混凝土牆" #: lang/json/construction_from_json.py msgid "Build Metal Roof" -msgstr "建設金屬屋頂" +msgstr "建造金屬屋頂" #: lang/json/construction_from_json.py msgid "Must be supported on at least two sides." @@ -52927,11 +53176,11 @@ msgstr "需要最少有兩邊支撐。" #: lang/json/construction_from_json.py msgid "Build Concrete Roof" -msgstr "建設混凝土屋頂" +msgstr "建造混凝土屋頂" #: lang/json/construction_from_json.py msgid "Build Reinforced Concrete Roof" -msgstr "建設強化混凝土屋頂" +msgstr "建造強化混凝土屋頂" #: lang/json/construction_from_json.py msgid "Build Palisade Wall" @@ -52939,19 +53188,19 @@ msgstr "構建柵欄牆" #: lang/json/construction_from_json.py msgid "Build Stone Wall" -msgstr "建設石牆" +msgstr "建造石牆" #: lang/json/construction_from_json.py msgid "Build Roof" -msgstr "建設屋頂" +msgstr "建造屋頂" #: lang/json/construction_from_json.py msgid "Build Log & Sod Roof" -msgstr "建設原木草皮屋頂" +msgstr "建造原木草皮屋頂" #: lang/json/construction_from_json.py msgid "Build Rope & Pulley System" -msgstr "建設滑輪系統" +msgstr "建造滑輪系統" #: lang/json/construction_from_json.py msgid "" @@ -52961,7 +53210,7 @@ msgstr "" #: lang/json/construction_from_json.py msgid "Build Palisade Gate" -msgstr "建設柵欄門" +msgstr "建造柵欄門" #: lang/json/construction_from_json.py msgid "" @@ -52971,7 +53220,7 @@ msgstr "" #: lang/json/construction_from_json.py msgid "Build Fence Posts" -msgstr "建設柵欄柱" +msgstr "建造柵欄柱" #: lang/json/construction_from_json.py msgid "Build Fence" @@ -52979,7 +53228,7 @@ msgstr "建造護欄" #: lang/json/construction_from_json.py msgid "Build Fence Gate" -msgstr "建設護欄門" +msgstr "建造護欄門" #: lang/json/construction_from_json.py msgid "Build Rope Fence" @@ -52987,11 +53236,11 @@ msgstr "" #: lang/json/construction_from_json.py msgid "Build Wire Fence" -msgstr "建設鐵絲護欄" +msgstr "建造鐵絲護欄" #: lang/json/construction_from_json.py msgid "Build Barbed Wire Fence" -msgstr "" +msgstr "建造帶刺鐵絲護欄" #: lang/json/construction_from_json.py msgid "Build Chainlink Fence" @@ -53011,7 +53260,7 @@ msgstr "封住木箱" #: lang/json/construction_from_json.py msgid "Build Crate" -msgstr "建設木箱" +msgstr "建造木箱" #: lang/json/construction_from_json.py msgid "Seal Coffin" @@ -53019,87 +53268,87 @@ msgstr "封棺" #: lang/json/construction_from_json.py msgid "Build Coffin" -msgstr "建設棺材" +msgstr "建造棺材" #: lang/json/construction_from_json.py msgid "Build Bulletin Board" -msgstr "建設告示牌" +msgstr "建造告示牌" #: lang/json/construction_from_json.py msgid "Build Dresser" -msgstr "建設衣櫃" +msgstr "建造衣櫃" #: lang/json/construction_from_json.py msgid "Build Bookcase" -msgstr "建設書架" +msgstr "建造書架" #: lang/json/construction_from_json.py msgid "Build Locker" -msgstr "建設儲物櫃" +msgstr "建造儲物櫃" #: lang/json/construction_from_json.py msgid "Build Metal Rack" -msgstr "建設鐵架" +msgstr "建造鐵架" #: lang/json/construction_from_json.py msgid "Build Coat Rack" -msgstr "" +msgstr "建造大衣架" #: lang/json/construction_from_json.py msgid "Build Cupboard" -msgstr "建設櫥櫃" +msgstr "建造櫥櫃" #: lang/json/construction_from_json.py msgid "Build Counter" -msgstr "建設櫃檯" +msgstr "建造櫃檯" #: lang/json/construction_from_json.py msgid "Build Table" -msgstr "建設桌子" +msgstr "建造桌子" #: lang/json/construction_from_json.py msgid "Build Chair" -msgstr "建設椅子" +msgstr "建造椅子" #: lang/json/construction_from_json.py msgid "Build Stool" -msgstr "" +msgstr "建造凳子" #: lang/json/construction_from_json.py msgid "Build Bench" -msgstr "建設長椅" +msgstr "建造長椅" #: lang/json/construction_from_json.py msgid "Build Makeshift Bed" -msgstr "建設簡便床鋪" +msgstr "建造簡便床鋪" #: lang/json/construction_from_json.py msgid "Build Straw Bed" -msgstr "建設稻草床" +msgstr "建造稻草床" #: lang/json/construction_from_json.py msgid "Build Bed" -msgstr "建設床" +msgstr "建造床" #: lang/json/construction_from_json.py msgid "Build Armchair" -msgstr "建設扶手椅" +msgstr "建造扶手椅" #: lang/json/construction_from_json.py msgid "Build Sofa" -msgstr "建設沙發" +msgstr "建造沙發" #: lang/json/construction_from_json.py msgid "Build Sign" -msgstr "建設告示牌" +msgstr "建造告示牌" #: lang/json/construction_from_json.py msgid "Build Stone Fireplace" -msgstr "建設石爐" +msgstr "建造石爐" #: lang/json/construction_from_json.py msgid "Build Wood Stove" -msgstr "建設柴爐" +msgstr "建造柴爐" #: lang/json/construction_from_json.py msgid "Build Fermenting Vat" @@ -53123,7 +53372,7 @@ msgstr "放置蒸餾器" #: lang/json/construction_from_json.py msgid "Build Water Well" -msgstr "建設水井" +msgstr "建造水井" #: lang/json/construction_from_json.py msgid "Paint Wall Red" @@ -53187,15 +53436,15 @@ msgstr "往上採礦" #: lang/json/construction_from_json.py msgid "Start Vehicle Construction" -msgstr "開始車輛建設" +msgstr "開始車輛建造" #: lang/json/construction_from_json.py msgid "Build Road Barricade" -msgstr "建設路障" +msgstr "建造路障" #: lang/json/construction_from_json.py msgid "Build Pontoon Bridge" -msgstr "建設浮橋" +msgstr "建造浮橋" #: lang/json/construction_from_json.py msgid "Build Dock/Shallow Bridge" @@ -53203,15 +53452,15 @@ msgstr "建築碼頭/淺橋" #: lang/json/construction_from_json.py msgid "Cut Grass" -msgstr "" +msgstr "割草" #: lang/json/construction_from_json.py msgid "Remove Grass" -msgstr "" +msgstr "移除草" #: lang/json/construction_from_json.py msgid "Extract Sand" -msgstr "挖取沙" +msgstr "挖取沙子" #: lang/json/construction_from_json.py msgid "Extract Clay" @@ -53219,59 +53468,59 @@ msgstr "挖取黏土" #: lang/json/construction_from_json.py msgid "Build Charcoal Kiln" -msgstr "建設碳化爐" +msgstr "建造碳化爐" #: lang/json/construction_from_json.py msgid "Build Metal Charcoal Kiln" -msgstr "建設金屬碳化爐" +msgstr "建造金屬碳化爐" #: lang/json/construction_from_json.py msgid "Build Smoking Rack" -msgstr "建設煙燻架" +msgstr "建造煙燻架" #: lang/json/construction_from_json.py msgid "Build Rock Forge" -msgstr "建設石製鍛造爐" +msgstr "建造石製鍛造爐" #: lang/json/construction_from_json.py msgid "Build Clay Kiln" -msgstr "建設陶製碳化爐" +msgstr "建造陶製碳化爐" #: lang/json/construction_from_json.py msgid "Build Reinforced Glass Window" -msgstr "建設強化玻璃窗" +msgstr "建造強化玻璃窗" #: lang/json/construction_from_json.py msgid "Build Root Cellar" -msgstr "" +msgstr "建造塊根作物儲存窖" #: lang/json/construction_from_json.py msgid "You need a deep pit to construct a root cellar." -msgstr "" +msgstr "你需要一個深坑來建造塊根作物儲存窖" #: lang/json/construction_from_json.py msgid "Mark firewood source" -msgstr "" +msgstr "標記薪柴源" #: lang/json/construction_from_json.py msgid "Build Butchering Rack" -msgstr "" +msgstr "建造屠宰架" #: lang/json/construction_from_json.py msgid "Build Pine Lean-To" -msgstr "建設松樹棚舍" +msgstr "建造松樹棚舍" #: lang/json/construction_from_json.py msgid "Build Tarp Lean-To" -msgstr "建設篷布棚舍" +msgstr "建造篷布棚舍" #: lang/json/construction_from_json.py msgid "Build Wattle-and-Daub Wall" -msgstr "建設編泥牆" +msgstr "建造編泥牆" #: lang/json/construction_from_json.py msgid "Build Thatched Roof" -msgstr "建設茅草屋頂" +msgstr "建造茅草屋頂" #: lang/json/construction_from_json.py msgid "Repair Wattle-and-Daub Wall" @@ -53279,11 +53528,11 @@ msgstr "修理編泥牆" #: lang/json/construction_from_json.py msgid "Build Fire Ring" -msgstr "建設火環" +msgstr "建造火環" #: lang/json/construction_from_json.py msgid "Build Tarp Rain-Catcher" -msgstr "建設篷布雨水收集器" +msgstr "建造篷布雨水收集器" #: lang/json/construction_from_json.py msgid "Harvest Blob Feed from Corpse Pit: Smash to Harvest" @@ -53428,11 +53677,11 @@ msgstr "你做了一個怪夢。" #: lang/json/dream_from_json.py msgid "You feel... OK." -msgstr "你感到...狀態不錯。" +msgstr "你感到… 狀態不錯。" #: lang/json/dream_from_json.py msgid "You feel a yearning..." -msgstr "你有種嚮往的感覺..." +msgstr "你有種嚮往的感覺…" #: lang/json/dream_from_json.py msgid "You dream about the zoo, for some reason." @@ -53440,7 +53689,7 @@ msgstr "你不知道為什麼夢到了動物園。" #: lang/json/dream_from_json.py msgid "Your dreams... are complex and multifaceted." -msgstr "你的夢...複雜而多變。" +msgstr "你的夢… 複雜而多變。" #: lang/json/dream_from_json.py msgid "You dream of the tropics." @@ -53519,7 +53768,7 @@ msgstr "在夢中, 你看到了野獸模樣的自己感到很不安。" #: lang/json/dream_from_json.py msgid "You dream of foraging in the woods... mouth-first?" -msgstr "你夢見自己在森林裡覓食...用嘴巴?" +msgstr "你夢見自己在森林裡覓食… 用嘴巴?" #: lang/json/dream_from_json.py msgid "Your dream-reflection is rather bearish." @@ -53527,7 +53776,7 @@ msgstr "在夢裡, 你用熊的方式思考。" #: lang/json/dream_from_json.py msgid "You easily bound from the street to a roof..oh, only a dream." -msgstr "您輕鬆地一躍就從街上跳到了屋頂上...哦, 只是個夢而已。" +msgstr "您輕鬆地一躍就從街上跳到了屋頂上… 哦, 只是個夢而已。" #: lang/json/dream_from_json.py msgid "As you dream, your reflection looks rather catlike." @@ -53539,7 +53788,7 @@ msgstr "你做了一個有別人侵犯你的領地, 令人不愉快的夢。" #: lang/json/dream_from_json.py msgid "Your dream-self's muzzle looks... wait, muzzle?" -msgstr "你夢見自己帶著嘴套...等等, 嘴套?" +msgstr "你夢見自己帶著嘴套… 等等, 嘴套?" #: lang/json/dream_from_json.py msgid "You dream of grazing in an open field." @@ -53625,12 +53874,12 @@ msgstr "你夢見了一個在森林的家。" #: lang/json/dream_from_json.py msgid "You feel beautiful, and yet riven with worry..." -msgstr "你覺得很美麗, 但是又擔心四分五裂..." +msgstr "你覺得很美麗, 但是又擔心四分五裂…" #: lang/json/dream_from_json.py msgid "" "You can't quite work out what the dream is about... it just keeps changing." -msgstr "你無法確切明白這是個關於什麼的夢...它只是...一直在變化。" +msgstr "你無法確切明白這是個關於什麼的夢… 它只是… 一直在變化。" #: lang/json/dream_from_json.py msgid "Your dream is filled with creatures, and yet all seem like you." @@ -53640,17 +53889,17 @@ msgstr "你夢到被動物圍繞, 而且牠們似乎都很喜歡你。" msgid "" "You dream of stalking some sort of lizard... no, that can't be right, can " "it?" -msgstr "你夢見自己正在跟蹤某種蜥蜴...不, 那不可能是真的, 對吧?" +msgstr "你夢見自己正在跟蹤某種蜥蜴… 不, 那不可能是真的, 對吧?" #: lang/json/dream_from_json.py msgid "" "For some reason you dream of your shoes. They don't fit, and nothing seems " "to help..." -msgstr "不知為何你夢見你的鞋子。變得不合腳, 而且你不知道怎麼辦..." +msgstr "不知為何你夢見你的鞋子。變得不合腳, 而且你不知道怎麼辦…" #: lang/json/dream_from_json.py msgid "You dream of... sneaking." -msgstr "你夢見了...蛇。" +msgstr "你夢見了… 蛇。" #: lang/json/dream_from_json.py msgid "You dream of a cold winter night. Your jacket is too big to put on." @@ -53706,7 +53955,7 @@ msgstr "你做了一個你用牙齒進行殺戮的嚇人夢境。" msgid "" "Your dream of raiding a giant beehive has you licking your... muzzle in " "anticipation." -msgstr "你夢到正在襲擊巨大的蜂巢, 用你的...口器。" +msgstr "你夢到正在襲擊巨大的蜂巢, 用你的… 口器。" #: lang/json/dream_from_json.py msgid "" @@ -53760,13 +54009,13 @@ msgstr "你因為夢境中自己變成植物的真實性而嚇到。" #: lang/json/dream_from_json.py msgid "Your vivid dream of living as a slime blob frightens you." -msgstr "你被有關活的像是黏液球的生動夢境而嚇到。" +msgstr "你被有關活的像是黏球怪的生動夢境而嚇到。" #: lang/json/dream_from_json.py msgid "" "You find it hard to control your limbs after dreaming of amorphous blob " "life." -msgstr "在做完有關於球狀物的夢之後你發現你難以控制你的肢體。" +msgstr "在做完有關於不定形球狀生命體的夢之後, 你發現你難以控制你的肢體。" #: lang/json/dream_from_json.py msgid "Your dream of living in the dark for years is almost real." @@ -53839,7 +54088,7 @@ msgstr "經過了刺激與美味的狩獵, 你回到了你的巢。嗯, 沒錯, msgid "" "You weave between the zombies' legs, too small for them to catch. The gas " "station isn't far now, with all its soda and chips and- UGH, dream..." -msgstr "你在殭屍的雙腿間穿梭著, 你的身型太小以致於它們無法捕捉到你。加油站現在已經不遠了, 所有的蘇打水和薯片以及 - 呃, 一場夢..." +msgstr "你在殭屍的雙腿間穿梭著, 你的身型太小以致於它們無法捕捉到你。加油站現在已經不遠了, 所有的蘇打水和薯片以及 - 呃, 一場夢…" #: lang/json/dream_from_json.py msgid "" @@ -53893,7 +54142,7 @@ msgstr "一個割斷某些獵物的美好記憶冒了出來。" msgid "" "You wonder if you could find one of those 'salmon runs', or if they were " "just a legend..." -msgstr "你在想你是否能見到所謂的 \"鮭魚洄游\", 還是說那只是一個傳說而已..." +msgstr "你在想你是否能見到所謂的 \"鮭魚洄游\", 還是說那只是一個傳說而已…" #: lang/json/dream_from_json.py msgid "Ah, the wolf-slaying dream again. That's a good one..." @@ -53954,7 +54203,7 @@ msgstr "你夢到你浮誇的石灰建築變成了刻版無聊的建築, 嚇死 #: lang/json/dream_from_json.py msgid "" "Ah, the painting-the-planet dream again. Maybe if you assimilated more..." -msgstr "恩, 又是一個關於彩繪整個星球的夢, 如果你能夠了解更多就好了..." +msgstr "恩, 又是一個關於彩繪整個星球的夢, 如果你能夠了解更多就好了…" #: lang/json/dream_from_json.py msgid "" @@ -53977,7 +54226,7 @@ msgstr "你夢到你招聘了一群漁民來滿足你對海鮮的渴望。" #: lang/json/dream_from_json.py msgid "" "You excitedly web up an interloper and prepare to feast... nope, dream." -msgstr "你興奮的撒網、收網並且準備大快朵頤...然後一切都消失了, 只是一場夢。" +msgstr "你興奮的撒網、收網並且準備大快朵頤… 然後一切都消失了, 只是一場夢。" #: lang/json/dream_from_json.py msgid "Your dreams of having to live without a web frighten you." @@ -54012,7 +54261,7 @@ msgstr "你希望有人能理解你的掙扎。" #: lang/json/dream_from_json.py msgid "Your body flows slightly faster than you expected... oh, just a dream." -msgstr "你的身體比你預期的移動的更快...喔, 原來只是一場夢。" +msgstr "你的身體比你預期的移動的更快… 喔, 原來只是一場夢。" #: lang/json/dream_from_json.py msgid "FIGHT. FEED. FORWARD." @@ -54137,7 +54386,7 @@ msgstr "要求領導" #. ~ Description of effect 'Asked to Lead'. #: lang/json/effects_from_json.py msgid "AI tag for asking to lead NPCs. This is a bug if you have it." -msgstr "當你要求領導這些NPC們的時候, AI會標記這些NPC。如果你有這個標記, 那就是 bug。" +msgstr "當你要求領導這些 NPC 們的時候, AI 會標記這些 NPC。如果你有這個標記, 那就是 bug。" #: lang/json/effects_from_json.py msgid "Asked to Follow" @@ -54147,7 +54396,7 @@ msgstr "要求跟隨" #: lang/json/effects_from_json.py msgid "" "AI tag for asking to NPCs to follow you. This is a bug if you have it." -msgstr "當你要求NPC們跟著你時, AI會標記這些NPC。如果你有這個標記, 那就是 bug。" +msgstr "當你要求 NPC 們跟著你時, AI 會標記這些 NPC。如果你有這個標記, 那就是 bug。" #: lang/json/effects_from_json.py msgid "Asked to Train" @@ -54156,7 +54405,7 @@ msgstr "要求訓練" #. ~ Description of effect 'Asked to Train'. #: lang/json/effects_from_json.py msgid "AI tag for asking to NPCs to train you. This is a bug if you have it." -msgstr "當你要求NPC訓練你時, AI會標記這些NPC。如果你有這個標記, 那就是 bug。" +msgstr "當你要求 NPC 訓練你時, AI 會標記這些 NPC。如果你有這個標記, 那就是 bug。" #: lang/json/effects_from_json.py msgid "Asked Info" @@ -54167,7 +54416,7 @@ msgstr "要求資訊" msgid "" "AI tag for asking to NPCs for personal information. This is a bug if you " "have it." -msgstr "當你要求NPC提供個人訊息時, AI會標記這些NPC。如果你有這個標記, 那就是 bug。" +msgstr "當你要求 NPC 提供個人訊息時, AI 會標記這些 NPC。如果你有這個標記, 那就是 bug。" #: lang/json/effects_from_json.py msgid "Asked for Item" @@ -54176,7 +54425,7 @@ msgstr "要求物品" #. ~ Description of effect 'Asked for Item'. #: lang/json/effects_from_json.py msgid "AI tag for asking NPCs for items. This is a bug if you have it." -msgstr "當你要求NPC提供物品時, AI會標記這些NPC。如果你有這個標記, 那就是 bug。" +msgstr "當你要求 NPC 提供物品時, AI 會標記這些 NPC。如果你有這個標記, 那就是 bug。" #: lang/json/effects_from_json.py msgid "Currently Busy" @@ -54196,7 +54445,7 @@ msgstr "已給予任務物品" msgid "" "AI tag to prevent you from getting multiple quest items. This is a bug if " "you have it." -msgstr "一個給NPC以防止你獲取多個任務物品的標籤。如果你有這個標記, 那就是 bug。" +msgstr "一個給 NPC 以防止你獲取多個任務物品的標籤。如果你有這個標記, 那就是 bug。" #: lang/json/effects_from_json.py msgid "Catch Up" @@ -54205,7 +54454,7 @@ msgstr "要求跟上" #. ~ Description of effect 'Catch Up'. #: lang/json/effects_from_json.py msgid "AI tag for telling NPCs to catch up. This is a bug if you have it." -msgstr "一個叫NPC跟上你的標籤。如果你有這個標記, 那就是 bug。" +msgstr "一個叫 NPC 跟上你的標籤。如果你有這個標記, 那就是 bug。" #: lang/json/effects_from_json.py msgid "Allow to Sleep" @@ -54214,7 +54463,7 @@ msgstr "容許睡覺" #. ~ Description of effect 'Allow to Sleep'. #: lang/json/effects_from_json.py msgid "AI tag for telling NPCs to sleep. This is a bug if you have it." -msgstr "一個叫NPC去睡覺的標籤。如果你有這個標記, 那就是 bug。" +msgstr "一個叫 NPC 去睡覺的標籤。如果你有這個標記, 那就是 bug。" #: lang/json/effects_from_json.py msgid "Said Something Recently" @@ -54223,7 +54472,7 @@ msgstr "剛剛說了甚麼" #. ~ Description of effect 'Said Something Recently'. #: lang/json/effects_from_json.py msgid "AI tag to control NPC verbosity. This is a bug if you have it." -msgstr "一個控制NPC說贅言的標籤。如果你有這個標記, 那就是 bug。" +msgstr "一個控制 NPC 說贅言的標籤。如果你有這個標記, 那就是 bug。" #: lang/json/effects_from_json.py msgid "Infection" @@ -54317,7 +54566,7 @@ msgstr "倒地" #. ~ Description of effect 'Downed'. #: lang/json/effects_from_json.py msgid "You're knocked to the ground. You have to get up before you can move." -msgstr "你被擊倒在地上。你要先站起來才能移動。" +msgstr "你被擊倒在地上。你必須先站起來才能移動。" #. ~ Apply message for effect(s) 'Downed'. #: lang/json/effects_from_json.py @@ -54447,7 +54696,7 @@ msgstr "失明" #. ~ Description of effect 'Blind'. #: lang/json/effects_from_json.py msgid "Range of Sight: 0. You cannot see anything." -msgstr "" +msgstr "視野: 0。你看不見任何東西。" #. ~ Apply message for effect(s) 'Blind'. #: lang/json/effects_from_json.py @@ -54538,7 +54787,7 @@ msgstr "嚴重中毒" #. ~ Description of effect 'Badly Poisoned'. #: lang/json/effects_from_json.py msgid "You have been badly poisoned!" -msgstr "你嚴重的中毒了!" +msgstr "你嚴重中毒了!" #: lang/json/effects_from_json.py msgid "Food Poisoning" @@ -54636,12 +54885,12 @@ msgstr "雷射標記" msgid "A laser sight is targeting you!" msgstr "雷射標記正在瞄準你!" -#: lang/json/effects_from_json.py lang/json/item_action_from_json.py -#: lang/json/item_action_from_json.py +#: lang/json/effects_from_json.py +msgctxt "inhaled" msgid "Smoke" -msgstr "抽煙" +msgstr "煙霧" -#. ~ Description of effect 'Smoke'. +#. ~ Description of effect '{'ctxt': 'inhaled', 'str': 'Smoke'}'. #: lang/json/effects_from_json.py msgid "You've inhaled a lungful of thick smoke." msgstr "你吸入了大量濃煙。" @@ -54682,7 +54931,7 @@ msgstr "被噴膽汁" #. ~ Description of effect 'Boomered'. #: lang/json/effects_from_json.py msgid "Range of Sight: 1; You are covered in magenta bile!" -msgstr "可視範圍剩下 1 格; 你被粉紅色的汁液噴了滿身!" +msgstr "視野: 1。你被洋紅色的膽汁噴了滿身!" #. ~ Apply message for effect(s) 'Boomered'. #: lang/json/effects_from_json.py @@ -54696,7 +54945,7 @@ msgstr "發光的" #. ~ Description of effect 'Glowing'. #: lang/json/effects_from_json.py msgid "You are covered in glowing goo!" -msgstr "你全身被發光粘性物覆蓋!" +msgstr "你全身被發光的黏液覆蓋!" #. ~ Apply message for effect(s) 'Glowing'. #: lang/json/effects_from_json.py @@ -54767,7 +55016,7 @@ msgstr "你有一個看起來很糟的咬傷。" #. ~ Apply message for effect(s) 'Bite, Painful Bite'. #: lang/json/effects_from_json.py msgid "The bite wound feels really deep..." -msgstr "被咬的傷口很深..." +msgstr "被咬的傷口很深…" #. ~ Male memorial apply log for effect(s) 'Bite, Painful Bite'. #: lang/json/effects_from_json.py @@ -54785,13 +55034,13 @@ msgstr "受到深度咬傷。" #: lang/json/effects_from_json.py msgctxt "memorial_male" msgid "Recovered from a bite wound." -msgstr "從咬傷中痊癒。" +msgstr "從咬傷中痊癒了。" #. ~ Female memorial remove log for effect(s) 'Bite, Painful Bite'. #: lang/json/effects_from_json.py msgctxt "memorial_female" msgid "Recovered from a bite wound." -msgstr "從咬傷中痊癒。" +msgstr "從咬傷中痊癒了。" #: lang/json/effects_from_json.py msgid "Infected" @@ -54803,7 +55052,7 @@ msgstr "嚴重感染" #: lang/json/effects_from_json.py msgid "Pus Filled" -msgstr "重度化膿" +msgstr "嚴重化膿" #: lang/json/effects_from_json.py msgid "You have an infected wound." @@ -54833,23 +55082,23 @@ msgstr "受到感染。" #: lang/json/effects_from_json.py msgctxt "memorial_male" msgid "Recovered from an infection... this time." -msgstr "從感染中痊癒..." +msgstr "這次… 從感染中痊癒了。" #. ~ Female memorial remove log for effect(s) 'Infected, Badly Infected, Pus #. Filled'. #: lang/json/effects_from_json.py msgctxt "memorial_female" msgid "Recovered from an infection... this time." -msgstr "從感染中痊癒..." +msgstr "這次… 從感染中痊癒了。" #: lang/json/effects_from_json.py msgid "Recovering From Infection" -msgstr "從感染中復原" +msgstr "從感染中痊癒" #. ~ Description of effect 'Recovering From Infection'. #: lang/json/effects_from_json.py msgid "You are recovering from an infection." -msgstr "你正從感染中復原。" +msgstr "你正在從感染中痊癒。" #: lang/json/effects_from_json.py msgid "Bandaged" @@ -54862,12 +55111,12 @@ msgstr "你的傷口已經包紮了。" #: lang/json/effects_from_json.py msgid "Disinfected" -msgstr "" +msgstr "已消毒" #. ~ Description of effect 'Disinfected'. #: lang/json/effects_from_json.py msgid "Your wounds are disinfected." -msgstr "" +msgstr "你的傷口已經消毒了。" #: lang/json/effects_from_json.py msgid "Spore dusted" @@ -54892,7 +55141,7 @@ msgstr "你覺得生病了。" #: lang/json/effects_from_json.py msgid "Fungal infection" -msgstr "" +msgstr "真菌感染" #: lang/json/effects_from_json.py msgctxt "memorial_male" @@ -55037,7 +55286,7 @@ msgstr "你覺得 %s 有點熱。" #. ~ Speed name of effect(s) 'Warm, Hot, Scorching'. #: lang/json/effects_from_json.py lang/json/morale_type_from_json.py msgid "Hot" -msgstr "熱" +msgstr "炎熱" #. ~ Description of effect 'Hot'. #: lang/json/effects_from_json.py @@ -55152,7 +55401,7 @@ msgstr "" #. ~ Apply message for effect(s) 'Common Cold'. #: lang/json/effects_from_json.py msgid "You feel a cold coming on..." -msgstr "你覺得快感冒了..." +msgstr "你覺得快感冒了…" #. ~ Miss message for effect(s) 'Common Cold'. #: lang/json/effects_from_json.py @@ -55332,12 +55581,12 @@ msgstr "我們的敵人已經靠近, 暴力行動就要開始, 我們是粗壯 #. ~ Apply message for effect(s) 'Mycus Respite, Mycus Wrath'. #: lang/json/effects_from_json.py msgid "Mycal wrath fills our fibers, and we grow turgid." -msgstr "Mycal的憤怒充滿了我們的纖維, 我們變得更粗壯。" +msgstr "馬庫斯的憤怒充滿了我們的纖維, 我們變得更粗壯。" #. ~ Decay message for effect(s) 'Mycus Respite, Mycus Wrath'. #: lang/json/effects_from_json.py msgid "We require repose; our fibers are nearly spent..." -msgstr "我們需要根據, 我們的纖維就要用光了..." +msgstr "我們需要根據, 我們的纖維就要用光了…" #: lang/json/effects_from_json.py msgid "Meth comedown" @@ -55345,7 +55594,7 @@ msgstr "冰毒效果消退" #: lang/json/effects_from_json.py msgid "High on Meth" -msgstr "吸冰毒吸到High" +msgstr "冰毒效果高昂" #: lang/json/effects_from_json.py src/bionics.cpp msgid "Nicotine" @@ -55444,7 +55693,7 @@ msgstr "你覺得頭昏眼花。" #: lang/json/effects_from_json.py msgid "You can't look away from the faultline..." -msgstr "你的視線無法從斷層上移開..." +msgstr "你的視線無法從斷層上移開…" #: lang/json/effects_from_json.py msgid "Feared" @@ -55498,7 +55747,7 @@ msgstr "你的身體隨著治療發生奇怪的轉變。" #. ~ Apply message for effect(s) 'Stem cell treatment'. #: lang/json/effects_from_json.py msgid "You receive a pureed bone & enamel injection into your eyeball." -msgstr "你把骨泥及陶瓷混合物注射到你的眼球." +msgstr "你把骨泥及陶瓷混合物注射到你的眼球。" #: lang/json/effects_from_json.py msgid "Took anticonvulsant drugs" @@ -55520,11 +55769,9 @@ msgstr "放鬆瓦斯" #. ~ Description of effect 'Relaxation gas'. #: lang/json/effects_from_json.py msgid "" -"Strength - 3; Dexterity - 3; Intelligence - 2; Perception - 4\n" -"You are thoroughly relaxed and don't feel like moving. Fighting? Too much effort." -msgstr "" -"力量-3;敏捷-3;智力-2;感知-4。\n" -"你感到放鬆並且不想移動, 移動太費事了。" +"You are thoroughly relaxed and don't feel like moving. Fighting? Too much " +"effort." +msgstr "你感到放鬆並且不想移動。戰鬥? 太費事了。" #. ~ Apply message for effect(s) 'Relaxation gas'. #: lang/json/effects_from_json.py @@ -55575,7 +55822,7 @@ msgstr "你累到無法正常運作。" #. ~ Miss message for effect(s) 'Lacking Sleep'. #: lang/json/effects_from_json.py msgid "You don't have energy to fight." -msgstr "你沒有戰鬥的精力。" +msgstr "你沒有精力可以戰鬥。" #: lang/json/effects_from_json.py msgid "You lie down to go to sleep..." @@ -55702,7 +55949,7 @@ msgstr "隨著你的缺鐵情況改善, 你的貧血逐漸恢復中。" #: lang/json/effects_from_json.py msgid "VitA deficiency" -msgstr "維他命A缺乏症" +msgstr "維他命 A 缺乏症" #: lang/json/effects_from_json.py msgid "Poor vision" @@ -55715,7 +55962,7 @@ msgstr "夜盲症" #: lang/json/effects_from_json.py msgid "" "A lack of vitamin A in your diet will progressively worsen your vision." -msgstr "你的飲食中缺乏維他命A, 導致你的視力逐漸惡化。" +msgstr "你的飲食中缺乏維他命 A, 導致你的視力逐漸惡化。" #. ~ Apply message for effect(s) 'VitA deficiency, Poor vision, Night #. blindness'. @@ -55733,17 +55980,17 @@ msgstr "你的視力恢復正常。" #. blindness'. #: lang/json/effects_from_json.py msgid "Your vitamin A deficiency is nearly resolved." -msgstr "你的維他命A缺乏症已經快要解決了。" +msgstr "你的維他命 A 缺乏症已經快要解決了。" #. ~ Decay message for effect(s) 'VitA deficiency, Poor vision, Night #. blindness'. #: lang/json/effects_from_json.py msgid "Your vision improves as your Vitamin A deficiency improves." -msgstr "隨著你的維他命A缺乏情況改善, 你的視力逐漸改善中。" +msgstr "隨著你的維他命 A 缺乏情況改善, 你的視力逐漸改善中。" #: lang/json/effects_from_json.py msgid "B12 deficiency" -msgstr "維他命B12缺乏症" +msgstr "維他命 B12 缺乏症" #: lang/json/effects_from_json.py msgid "Slow healing" @@ -55755,7 +56002,7 @@ msgstr "無法癒合" #: lang/json/effects_from_json.py msgid "A lack of vitamin B12 in your diet will affect your ability to heal." -msgstr "你的飲食中缺乏維他命B12, 影響了你的癒合能力。" +msgstr "你的飲食中缺乏維他命 B12, 影響了你的癒合能力。" #. ~ Apply message for effect(s) 'B12 deficiency, Slow healing, No healing'. #: lang/json/effects_from_json.py @@ -55775,7 +56022,7 @@ msgstr "你的維他命 B12 缺乏症已經開始改善了。" #. ~ Decay message for effect(s) 'B12 deficiency, Slow healing, No healing'. #: lang/json/effects_from_json.py msgid "Your ability to heal returns as your Vitamin B12 deficiency improves." -msgstr "隨著你的維他命B12缺乏情況改善, 你的癒合能力逐漸回復中。" +msgstr "隨著你的維他命 B12 缺乏情況改善, 你的癒合能力逐漸回復中。" #: lang/json/effects_from_json.py msgid "Early scurvy" @@ -55793,7 +56040,7 @@ msgstr "嚴重壞血病" msgid "" "A lack of vitamin C in your diet will result in progressively worse symptoms" " of scurvy." -msgstr "你的飲食中缺乏維他命C, 導致你的壞血病症狀逐漸惡化。" +msgstr "你的飲食中缺乏維他命 C, 導致你的壞血病症狀逐漸惡化。" #. ~ Apply message for effect(s) 'Early scurvy, Scurvy, Bad Scurvy'. #: lang/json/effects_from_json.py @@ -55808,12 +56055,12 @@ msgstr "你的壞血病已經痊癒。" #. ~ Decay message for effect(s) 'Early scurvy, Scurvy, Bad Scurvy'. #: lang/json/effects_from_json.py msgid "Your vitamin C deficiency is starting to resolve." -msgstr "你的維他命C缺乏症已經開始改善了。" +msgstr "你的維他命 C 缺乏症已經開始改善了。" #. ~ Decay message for effect(s) 'Early scurvy, Scurvy, Bad Scurvy'. #: lang/json/effects_from_json.py msgid "Your scurvy lessens as your Vitamin C deficiency improves." -msgstr "隨著你的維他命C缺乏情況改善, 你的壞血病逐漸減輕中。" +msgstr "隨著你的維他命 C 缺乏情況改善, 你的壞血病逐漸減輕中。" #: lang/json/effects_from_json.py msgid "Hypervitaminosis" @@ -55849,21 +56096,22 @@ msgstr "開始復原" #: lang/json/effects_from_json.py msgid "Recovering" -msgstr "復原中" +msgstr "正在復原" #: lang/json/effects_from_json.py msgid "Mostly recovered" -msgstr "大致上復原" +msgstr "幾乎復原" #: lang/json/effects_from_json.py msgid "This damaged limb is slowly regaining its functions." msgstr "這個受傷的肢體正在慢慢恢復其功能。" -#: lang/json/effects_from_json.py src/options.cpp +#: lang/json/effects_from_json.py +msgctxt "physically" msgid "Disabled" -msgstr "停用" +msgstr "殘廢" -#. ~ Description of effect 'Disabled'. +#. ~ Description of effect '{'ctxt': 'physically', 'str': 'Disabled'}'. #: lang/json/effects_from_json.py msgid "This limb is damaged beyond use and may require a splint to recover." msgstr "這個肢體受傷太嚴重, 可能需要裝上夾板才能恢復。" @@ -55936,7 +56184,7 @@ msgstr "" #: lang/json/effects_from_json.py msgid "Sad" -msgstr "" +msgstr "難過" #. ~ Description of effect 'Sad'. #: lang/json/effects_from_json.py @@ -56620,7 +56868,7 @@ msgid "" "The largest gang of hooligans and bandits that preys upon other survivors. " "Even if you have no gear, there is always a need for slaves and fresh meat." msgstr "" -"由流氓或強盜所組成, 當前最強大的幫派組織, 專門掠奪其他生存者, 如果你身上沒有值錢的東西, 沒關係, 他們仍然需要奴隸, 或者....新鮮的肉。" +"由流氓或強盜所組成, 當前最強大的幫派組織, 專門掠奪其他生存者, 如果你身上沒有值錢的東西, 沒關係, 他們仍然需要奴隸, 或者… 新鮮的肉。" #: lang/json/faction_from_json.py msgid "Captives" @@ -56636,7 +56884,7 @@ msgstr "" #: lang/json/faction_from_json.py msgid "Refugees" -msgstr "" +msgstr "難民" #. ~ Description for Refugees #: lang/json/faction_from_json.py @@ -57546,7 +57794,7 @@ msgstr "香蒲" #: lang/json/furniture_from_json.py msgid "lilypad" -msgstr "" +msgstr "睡蓮" #: lang/json/furniture_from_json.py msgid "forge" @@ -57678,7 +57926,7 @@ msgstr "帆布地板" msgid "" "A rock kiln designed to burn wood and organic material into charcoal in " "absence of oxygen." -msgstr "" +msgstr "一座石製碳化爐, 設計用於無氧狀態下將木材和有機材料燒製成木炭。" #: lang/json/furniture_from_json.py msgid "metal charcoal kiln" @@ -57690,7 +57938,7 @@ msgstr "金屬碳化爐" msgid "" "A metal kiln designed to burn wood and organic material into charcoal in " "absence of oxygen." -msgstr "" +msgstr "一座金屬碳化爐, 設計用於無氧狀態下將木材和有機材料燒製成木炭。" #: lang/json/furniture_from_json.py msgid "filled metal charcoal kiln" @@ -57751,7 +57999,7 @@ msgstr "陶製碳化爐" #. ~ Description for clay kiln #: lang/json/furniture_from_json.py msgid "A kiln designed to bake clay pottery and bricks." -msgstr "" +msgstr "專門用來燒製陶器和磚塊的窯。" #: lang/json/furniture_from_json.py msgid "small boulder" @@ -57834,53 +58082,53 @@ msgstr "咚!" #: lang/json/furniture_from_json.py msgid "Autodoc Mk. XI" -msgstr "" +msgstr "全自動外科醫生 Mk. XI" #. ~ Description for Autodoc Mk. XI #: lang/json/furniture_from_json.py msgid "" "A surgical apparatus used for installation and uninstallation of bionics. " "It's only as skilled as its operator." -msgstr "" +msgstr "用於安裝和移除生化插件的外科手術機器。它的技能等級取決於操作者。" #: lang/json/furniture_from_json.py msgid "Autodoc operation couch" -msgstr "" +msgstr "全自動外科醫生操作沙發" #. ~ Description for Autodoc operation couch #: lang/json/furniture_from_json.py msgid "" "A plush red sofa made less comfortable by the medical machinery directly " "above it. It has a single leather strap on the right armrest." -msgstr "" +msgstr "一張豪華的紅色沙發, 它上面的醫療機械讓人坐起來不太舒服。右扶手上有一條皮革束帶。" #: lang/json/furniture_from_json.py msgid "butchering rack" -msgstr "" +msgstr "屠宰架" #. ~ Description for butchering rack #: lang/json/furniture_from_json.py msgid "Butchering rack designed to hang a carcass in the air." -msgstr "" +msgstr "屠宰架專門用來將待宰的屍體懸掛起來。" #. ~ Description for metal butchering rack #: lang/json/furniture_from_json.py msgid "" "Metal butchering rack designed to hang a carcass in the air. It can be " "deconstructed and folded for easy transportation." -msgstr "" +msgstr "金屬屠宰架專門用來將待宰的屍體懸掛起來。它可以拆移和折疊, 以便於攜行。" #. ~ Description for tourist table #: lang/json/furniture_from_json.py msgid "Small metal folding table, ideal for off-road trips into the wild." -msgstr "" +msgstr "小型金屬折疊桌, 非常適合野外旅行。" #. ~ Description for leather tarp #: lang/json/furniture_from_json.py msgid "" "A large sheet of sewn leather that can be used instead of a picnic blanket, " "but it's more valuable as a butchery appliance as it does not soak in blood." -msgstr "" +msgstr "可以用來代替野餐地毯的大片縫製皮革, 但它作為屠宰用具會更有價值, 因為它不會被血液侵滲。" #. ~ Description for fiber mat #: lang/json/furniture_from_json.py @@ -57888,7 +58136,7 @@ msgid "" "A large mat woven from fibrous material that can be used instead of a picnic" " blanket, but it's more valuable as a butchery appliance. Too thin to be a " "comfortable sleeping place." -msgstr "" +msgstr "由布料編織而成的大型墊子, 可用於代替野餐地毯, 但它作為屠宰用具會更有價值。因為太薄了, 所以無法作為舒適的睡眠場所。" #: lang/json/furniture_from_json.py msgid "mutated cactus" @@ -57964,7 +58212,7 @@ msgstr "大門已打開!" #. ~ 'pull' action message of some gate object. #: lang/json/gates_from_json.py msgid "You turn the handle..." -msgstr "你轉動方向盤..." +msgstr "你轉動方向盤…" #. ~ 'close' action message of some gate object. #: lang/json/gates_from_json.py @@ -57984,7 +58232,7 @@ msgstr "倉庫的門打開了!" #. ~ 'pull' action message of some gate object. #: lang/json/gates_from_json.py msgid "You pull the rope..." -msgstr "你拉動繩子..." +msgstr "你拉動繩子…" #. ~ 'close' action message of some gate object. #: lang/json/gates_from_json.py @@ -58024,72 +58272,72 @@ msgstr "你拉動控制桿…" #. ~ 'close' action message of some gate object. #: lang/json/gates_from_json.py msgid "The bookcase slides closed." -msgstr "" +msgstr "書櫃關起來了。" #. ~ 'fail' action message of some gate object. #: lang/json/gates_from_json.py msgid "The bookcase can't be closed!" -msgstr "" +msgstr "書櫃無法關起來!" #. ~ 'open' action message of some gate object. #: lang/json/gates_from_json.py msgid "The bookcase slides open!" -msgstr "" +msgstr "書櫃的門滑開了!" #. ~ 'pull' action message of some gate object. #: lang/json/gates_from_json.py msgid "You pull an odd looking book..." -msgstr "" +msgstr "你拉出一本奇怪的書…" #. ~ 'close' action message of some gate object. #: lang/json/gates_from_json.py msgid "The wall slides closed." -msgstr "" +msgstr "牆壁滑動關閉了。" #. ~ 'fail' action message of some gate object. #: lang/json/gates_from_json.py msgid "The sliding wall can't be closed!" -msgstr "" +msgstr "滑動牆無法關閉!" #. ~ 'open' action message of some gate object. #: lang/json/gates_from_json.py msgid "The wall slides open!" -msgstr "" +msgstr "牆壁滑動開啟了!" #. ~ 'pull' action message of some gate object. #: lang/json/gates_from_json.py msgid "You trigger the odd looking statue..." -msgstr "" +msgstr "你觸發了奇怪的雕像…" #. ~ 'pull' action message of some gate object. #: lang/json/gates_from_json.py msgid "You trigger the hidden mechanism..." -msgstr "" +msgstr "你觸發了隱藏的機關…" #. ~ 'pull' action message of some gate object. #: lang/json/gates_from_json.py msgid "You trigger the mechanism..." -msgstr "" +msgstr "你觸發了機關…" #. ~ 'close' action message of some gate object. #: lang/json/gates_from_json.py msgid "The glass wall slides closed." -msgstr "" +msgstr "玻璃牆滑動關閉了。" #. ~ 'fail' action message of some gate object. #: lang/json/gates_from_json.py msgid "The glass wall can't be closed!" -msgstr "" +msgstr "玻璃牆無法關閉!" #. ~ 'open' action message of some gate object. #: lang/json/gates_from_json.py msgid "The glass slides open!" -msgstr "" +msgstr "玻璃牆滑動開啟了!" #. ~ 'pull' action message of some gate object. #: lang/json/gates_from_json.py msgid "You activate the mechanism..." -msgstr "" +msgstr "你啟動了機關…" #. ~ 'close' action message of some gate object. #: lang/json/gates_from_json.py @@ -58254,14 +58502,14 @@ msgstr "" #: lang/json/gun_from_json.py msgid "wooden greatbow" msgid_plural "wooden greatbows" -msgstr[0] "" +msgstr[0] "木巨弓" #: lang/json/gun_from_json.py msgid "" "An extremely large and stiff longbow, made with enormous limbs and a thick " "string to take an immense amount of energy. Takes incredible strength to " "draw." -msgstr "" +msgstr "一張非常巨大而堅硬的長弓, 由巨大的弓臂和粗弓弦製成, 可以產生巨大的動能。需要令人難以置信的力量才拉的動。" #: lang/json/gun_from_json.py msgid "compound greatbow" @@ -58302,8 +58550,7 @@ msgid "" msgstr "一把可以藏在袖中的迷你手弩。由於尺寸的限制, 傷害並不高, 適合用於小型的狩獵遊戲。從這把弩射出的箭矢有一定的機率可以回收使用。" #: lang/json/gun_from_json.py lang/json/gun_from_json.py -#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py -#: lang/json/gunmod_from_json.py src/item.cpp +#: lang/json/gunmod_from_json.py lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" msgid "pistol" msgstr "手槍" @@ -58398,7 +58645,7 @@ msgstr[0] "" #: lang/json/gun_from_json.py msgid "A test item that is both a ranged weapon and a reach weapon" -msgstr "" +msgstr "一個測試物品, 同時是遠程武器與伸延武器。" #: lang/json/gun_from_json.py msgid "BB gun" @@ -58497,7 +58744,7 @@ msgstr[0] "坦克機器人主砲" #: lang/json/gun_from_json.py msgid "" "The 120mm cannon from a tankbot. If you have this, you'd best be debugging!" -msgstr "從坦克機器人身上拆下來的 120mm 加農砲, 如果你有這個, 你最好先進行一下程式除錯!" +msgstr "從坦克機器人身上拆下來的 120mm 砲, 如果你有這個, 你最好是正在除錯!" #: lang/json/gun_from_json.py msgid "Boeing XM-P plasma rifle" @@ -58889,7 +59136,7 @@ msgid "" " game hunters. Even though it fires the weak .22 round, it's perfectly " "capable of killing." msgstr "" -"魯格10/22結合了低後座力、可模組化改造與彈藥相當便宜的特性, 讓它受到一些槍枝狂熱份子的喜愛。雖然是使用威力較低的.22彈藥, " +"魯格 10/22 結合了低後座力、可模組化改造與彈藥相當便宜的特性, 讓它受到一些槍枝狂熱份子的喜愛。雖然是使用威力較低的 .22 彈藥, " "但對殺人來說是綽綽有餘。" #: lang/json/gun_from_json.py @@ -58907,7 +59154,7 @@ msgid "" "A popular, small .22 LR pistol. One of the many polymer frame pistols " "produced during the latter 20th-early 21st centuries; it has an underbarrel " "rail." -msgstr "一支普及的小型 .22 LR 手槍。眾多聚合物框架手槍的其中之一, 於20世紀至21世紀初期生產, 它的槍管下方有一個滑軌。" +msgstr "一支普及的小型 .22 LR 手槍。眾多聚合物框架手槍的其中之一, 於 20 世紀至 21 世紀初期生產, 它的槍管下方有一個滑軌。" #: lang/json/gun_from_json.py msgid "S&W 22A" @@ -58951,7 +59198,7 @@ msgstr[0] "H&K 416A5" msgid "" "Designed to replace the M4A1, the Heckler and Koch 416A5 features most of " "the former's strengths, while being considerably more durable." -msgstr "本槍被設計用來取代M4A1 步槍, 黑克勒&科赫公司生產的416A5 步槍有著前者的優點, 而且更加的耐用。" +msgstr "本槍被設計用來取代 M4A1 步槍, 黑克勒&科赫公司生產的 416A5 步槍有著前者的優點, 而且更加的耐用。" #: lang/json/gun_from_json.py msgid "H&K G36" @@ -58963,7 +59210,7 @@ msgid "" "Designed as a replacement for the early H&K G3 battle rifle, the G36 is more" " accurate, and uses the much-lighter .223 round, allowing for a higher ammo " "capacity." -msgstr "此型號是用來替換掉早期的 H&K G3 戰鬥步槍, G36的準確度更高, 並且使用更輕的 .223子彈, 能夠裝填更高容量的彈匣。" +msgstr "此型號是用來替換掉早期的 H&K G3 戰鬥步槍, G36 的準確度更高, 並且使用更輕的 .223 子彈, 能夠裝填更高容量的彈匣。" #: lang/json/gun_from_json.py msgid "L2037 Backup" @@ -58994,7 +59241,7 @@ msgid "" " There's no real place to incorporate aftermarket modifications on this " "barren proto-weapon." msgstr "" -"Leadworks LLC公司的 L523 犢牛式步槍基底, 使用常見的 5.56 子彈。它的設計能讓你快速、安全、有效率的更換組件, " +"Leadworks LLC 公司的 L523 犢牛式步槍基底, 使用常見的 5.56 子彈。它的設計能讓你快速、安全、有效率的更換組件, " "切換成不同類型的槍械。步槍基底 \"理論上\" 可以獨自運作, 但不建議你這樣做, " "而且會讓你的槍失去保固。這件新款的武器上沒有甚麼位置讓你安裝市面上的改造模組。" @@ -59077,10 +59324,10 @@ msgid "" "multiple applications, and is designed to part-swap quickly, safely, and " "effectively from one to the next. The battle rifle's (proprietary) " "combination optic & red-dot sights provide quick and accurate targeting, " -"with Leadworks gyro-stabilization system system and foregrip available for " -"greater control. Additionally it comes with grenade launcher module for " -"dealing with hard targets. Like the rest of the family, though, it doesn't " -"accept third-party modifications." +"with Leadworks gyro-stabilization system and foregrip available for greater " +"control. Additionally it comes with grenade launcher module for dealing " +"with hard targets. Like the rest of the family, though, it doesn't accept " +"third-party modifications." msgstr "" #: lang/json/gun_from_json.py @@ -59140,7 +59387,7 @@ msgid "" "A highly accurate and modular assault rifle specially designed for the " "United States Special Operations Command. The 'L' in its name stands for " "light, as it uses the lightweight .223 round." -msgstr "一把高精準且可附掛武器的突擊步槍, 專由美國特種部隊單位所使用。在其名稱中的 'L' 代表輕量, 因為它使用輕量的 .223子彈。" +msgstr "一把高精準且可附掛武器的突擊步槍, 專由美國特種部隊單位所使用。在其名稱中的 \"L\" 代表輕量, 因為它使用輕量的 .223子彈。" #: lang/json/gun_from_json.py msgid "SIG 552" @@ -59151,7 +59398,7 @@ msgstr[0] "SIG 552 步槍" msgid "" "A compact selective fire automatic rifle designed for the Swiss military. " "It features a three-round burst mode and an integrated folding stock." -msgstr "一把設計給瑞士軍隊, 小型的可選射擊模式自動步槍。它提供三點式射擊模式以及一個完整的摺疊式槍托。" +msgstr "一把設計給瑞士軍隊, 小型的可選射擊模式自動步槍。它提供三點式射擊模式以及一個完整的折疊式槍托。" #: lang/json/gun_from_json.py msgid "3 rd." @@ -59172,7 +59419,7 @@ msgstr "斯泰爾 AUG 是一把採用了犢牛式設計的澳製突擊步槍。 #: lang/json/gun_from_json.py msgid "handmade carbine" msgid_plural "handmade carbines" -msgstr[0] "" +msgstr[0] "手工製卡賓槍" #: lang/json/gun_from_json.py msgid "" @@ -59410,7 +59657,7 @@ msgid "" "A homemade lever-action rifle. While still a primitive pipe and 2x4 design," " some minor improvements have been made, such as an integral magazine for " "rounds, and chambering the more powerful .308 rounds." -msgstr "一把土製槓桿式步槍。雖然是由鋼管和2x4 木材組成, 但設計上已有所改良, 如整合填裝系統並可使用威力更強大的 .308 子彈。" +msgstr "一把土製槓桿式步槍。雖然是由鋼管和 2x4 木材組成, 但設計上已有所改良, 如整合填裝系統並可使用威力更強大的 .308 子彈。" #: lang/json/gun_from_json.py msgid "Savage 111F" @@ -59433,7 +59680,7 @@ msgid "" "A highly accurate and modular battle rifle specially designed for the United" " States Special Operations Command. The 'H' in its name stands for heavy, " "as it uses the powerful .308 round." -msgstr "一把高精準且可附掛武器的戰鬥步槍, 專由美國特種部隊單位所使用。在其名稱中的 'H' 代表重型, 因為它使用強大的 .308 子彈。" +msgstr "一把高精準且可附掛武器的戰鬥步槍, 專由美國特種部隊單位所使用。在其名稱中的 \"H\" 代表重型, 因為它使用強大的 .308 子彈。" #: lang/json/gun_from_json.py msgid "M24" @@ -59503,12 +59750,13 @@ msgid "" "The Colt Model 1861 Navy cap & ball .36-caliber revolver was a six-shot, " "single-action percussion weapon produced by Colt's Manufacturing Company " "from 1861 until 1873." -msgstr "柯爾特M1861海軍制式手槍是一把.36 口徑的單動式左輪手槍, 可裝彈6 發。由塞繆爾·柯爾特所研製。該槍一直持續生產至1873年。" +msgstr "" +"柯爾特 M1861 海軍制式手槍是一把 .36 口徑的單動式左輪手槍, 可裝彈 6 發。由塞繆爾·柯爾特所研製。該槍一直持續生產至 1873 年。" #: lang/json/gun_from_json.py msgid "2 Shot Special" msgid_plural "2 Shot Specials" -msgstr[0] "特製雙份烈酒" +msgstr[0] "特製雙發手槍" #: lang/json/gun_from_json.py msgid "" @@ -59516,7 +59764,7 @@ msgid "" "the name is less about the double barrels and more about the number of shots" " you'll get before it breaks down on you." msgstr "" -"一個手工製, 使用 .38 special 子彈的雙管手槍, 很不幸的, 這把槍的名字和它的雙槍管沒啥關係, 而是指它故障可能會害你中兩槍。" +"一個手工製, 使用 .38 special 子彈的雙管手槍, 很不幸的, 這把槍的名字和它的雙槍管沒啥關係, 而是指它故障可能會害你中兩槍。" #: lang/json/gun_from_json.py msgid "COP .38" @@ -59528,7 +59776,7 @@ msgid "" "The COP .38 is a small, chubby derringer pistol that bears a slight " "resemblance to the Mossberg Brownie. It has four barrels arranged in a " "square formation." -msgstr "COP .38是一把細小、圓胖的德林加槍, 跟Mossberg Brownie有一點相似, 它有四支排成四方形的槍管。" +msgstr "COP .38是一把細小、圓胖的德林加槍, 跟Mossberg Brownie 有一點相似, 它有四支排成四方形的槍管。" #: lang/json/gun_from_json.py msgid "Ruger LCR .38" @@ -59584,12 +59832,12 @@ msgstr[0] "SIG Pro .40" msgid "" "Originally marketed as a lightweight and compact alternative to older SIG " "handguns, the Pro .40 is popular among European police forces." -msgstr "最主要是銷售給輕武裝人員用來接替舊式的 SIG手槍, 這把Pro .40在歐洲警力中很受歡迎。" +msgstr "最主要是銷售給輕武裝人員用來接替舊式的 SIG 手槍, 這把 Pro .40 在歐洲警力中很受歡迎。" #: lang/json/gun_from_json.py msgid "handmade six-shooter" msgid_plural "handmade six-shooters" -msgstr[0] "" +msgstr[0] "手工製六發左輪手槍" #: lang/json/gun_from_json.py msgid "" @@ -59606,7 +59854,8 @@ msgstr[0] "S&W 610" msgid "" "The Smith and Wesson 610 is a classic six-shooter revolver chambered for " "10mm rounds, or for S&W's own .40 round." -msgstr "Smith & Wesson公司製的 610 是一把經典的6發裝10mm口徑左輪手槍, 也能裝填S&W公司的 .40口徑子彈。" +msgstr "" +"Smith & Wesson 公司製的 610 是一把經典的 6 發裝 10mm 口徑左輪手槍, 也能裝填 S&W 公司的 .40 口徑子彈。" #: lang/json/gun_from_json.py msgid "tube 40mm launcher" @@ -59734,12 +59983,10 @@ msgstr[0] "LeMat 左輪手槍" #: lang/json/gun_from_json.py msgid "" "A modernized version of the original LeMat revolver, a rare and expensive " -"firearm produced during the civil war. With a capacity of 9 modern .44 " +"firearm produced during the civil war. With a capacity of 9 modern .44 " "cartridges and a single 12 gauge shell, it makes a great companion for those" " who wander the \"Earth-that-was\"." msgstr "" -"一把現代化版本的 LeMat 左輪手槍, 在南北戰爭期間生產的一把稀有、昂貴的槍械。它可以裝填 9 發 .44 子彈以及一發散彈, 使它成為在 " -"\"曾經的地球\" 流浪的優秀夥伴。" #: lang/json/gun_from_json.py msgid "Ruger Redhawk" @@ -59788,7 +60035,7 @@ msgstr[0] "TDI Vector" msgid "" "The TDI Vector is a submachine gun with a unique, in-line design that makes " "recoil very manageable, even in the powerful .45 caliber." -msgstr "TDI Vector 此槍利用不均勻的後座力和同軸式設計, 以解決.45 口徑的嚴重後座力和槍口上揚問題。" +msgstr "TDI Vector 此槍利用不均勻的後座力和同軸式設計, 以解決 .45 口徑的嚴重後座力和槍口上揚問題。" #: lang/json/gun_from_json.py msgid "H&K UMP45" @@ -59800,7 +60047,7 @@ msgid "" "Developed as a successor to the MP5 submachine gun, the UMP45 retains the " "earlier model's supreme accuracy and low recoil, but in the higher .45 " "caliber." -msgstr "鑑於 MP5 這槍型的成功, UMP45保留了之前型號的優點與低後座力, 並加大了口徑達到 .45 的口徑。" +msgstr "鑑於 MP5 這槍型的成功, UMP45 保留了之前型號的優點與低後座力, 並加大了口徑達到 .45 的口徑。" #: lang/json/gun_from_json.py msgid "L2031 Enforcer" @@ -59939,7 +60186,7 @@ msgid "" "Designed as a personal defense weapon, the MP7 fires the high powered " "4.6x30mm round while being lightweight, compact in size, and practically " "recoil free." -msgstr "MP7被定位於個人自保武器, 能使用4.6x30mm彈藥, 並有著輕量化設計、體積微縮與低後座力的優點。" +msgstr "MP7 被定位於個人自保武器, 能使用 4.6x30mm 彈藥, 並有著輕量化設計、體積微縮與低後座力的優點。" #: lang/json/gun_from_json.py msgid "H&K UCP" @@ -59950,7 +60197,7 @@ msgstr[0] "H&K UCP" msgid "" "Designed to work with H&K's proprietary 4.6x30mm round, the UCP is a small " "pistol with a very high capacity, best used against armored opponents." -msgstr "設計用來擊發H&K公司專用4.6x30mm口徑子彈, 這把小手槍有著極高的容量, 能夠對抗有護具的對手。" +msgstr "設計用來擊發 H&K 公司專用 4.6x30mm 口徑子彈, 這把小手槍有著極高的容量, 能夠對抗有護具的對手。" #: lang/json/gun_from_json.py msgid "Barrett M107A1" @@ -60005,8 +60252,8 @@ msgid "" " Model 89 rifle packs all the power of the .500 S&W Magnum cartridge in to a" " package less likely to break one's wrist." msgstr "" -"以珍貴的Winchester Model 1886為構想, Big Horn Armory's Model 89步槍包含.500 " -"S&W麥格農子彈的所有力量而不會弄斷使用者的手腕。" +"以珍貴的 Winchester Model 1886 為構想, Big Horn Armory's Model 89 步槍包含 .500 S&W " +"麥格農子彈的所有力量而不會弄斷使用者的手腕。" #: lang/json/gun_from_json.py msgid "S&W 500" @@ -60028,7 +60275,7 @@ msgstr[0] "AK-74M 突擊步槍" msgid "" "The successor to the well-known AK-47 rifle. It combines the reliability of" " the AK series with the high-velocity, lightweight 5.45x39mm cartridge." -msgstr "廣為人知的AK-47步槍的後繼型號。它結合了AK系列的可靠性, 使用高彈速、輕量的5.45x39mm子彈。" +msgstr "廣為人知的 AK-47 步槍的後繼型號。它結合了 AK 系列的可靠性, 使用高彈速、輕量的 5.45x39mm 子彈。" #: lang/json/gun_from_json.py msgid "AN-94" @@ -60140,8 +60387,8 @@ msgid "" "replace it, but it is widely used by military all around the world. This " "version is chambered for 7.62x39mm." msgstr "" -"貝瑞塔 ARX-160 突擊步槍曾經參與美國軍隊發出的一項名為個人卡賓槍計劃第二階段的競標中, 以取代 M4 卡賓槍。最後並沒有取代, " -"但它在軍事上被廣泛用於世界各地。這把槍的口徑為 7.62x39mm。" +"貝瑞塔 ARX-160 突擊步槍曾經參與美國軍隊發出的一項名為個人卡賓槍計劃第二階段的競標中, 以取代 M4 卡賓槍。雖然它未能成功, " +"但這把槍在軍事上被廣泛地用於世界各地。它的口徑為 7.62x39mm。" #: lang/json/gun_from_json.py msgid "SKS" @@ -60159,49 +60406,49 @@ msgstr "" #: lang/json/gun_from_json.py msgid "Mosin-Nagant M44" msgid_plural "Mosin-Nagant M44" -msgstr[0] "莫辛-納甘 M44" +msgstr[0] "莫辛·納甘 M44" #: lang/json/gun_from_json.py msgid "" "The Model 44 is the carbine sized variant of the standard 1891/30. It has a" " shorter barrel, therefore it is weaker than the 1891/30, but easier to " "carry." -msgstr "M44是標準型莫辛-納甘1891/30的改短版。相較於原版主要是將槍管改短, 也因為這樣造成火力降低, 但更便於攜帶。" +msgstr "M44是標準型莫辛·納甘1891/30的改短版。相較於原版主要是將槍管改短, 也因為這樣造成火力降低, 但更便於攜帶。" #: lang/json/gun_from_json.py msgid "Mosin-Nagant M44-EBR" msgid_plural "Mosin-Nagant M44-EBR" -msgstr[0] "莫辛-納甘 M44-增強型戰鬥步槍" +msgstr[0] "莫辛·納甘 M44-增強型戰鬥步槍" #: lang/json/gun_from_json.py msgid "" "This carbine packs the classic Mosin-Nagant model 44 action in a modern-day " "stock capable of accepting modifications." -msgstr "這把步槍將經典的莫辛-納甘44型改裝成了現代化槍托, 並且能夠進行改造。" +msgstr "這把步槍將經典的莫辛·納甘44型改裝成了現代化槍托, 並且能夠進行改造。" #: lang/json/gun_from_json.py msgid "Mosin-Nagant 1891/30" msgid_plural "Mosin-Nagant 1891/30" -msgstr[0] "莫辛-納甘 1891/30步槍" +msgstr[0] "莫辛·納甘 1891/30步槍" #: lang/json/gun_from_json.py msgid "" "The Mosin-Nagant 1891/30 is a bolt action, internal magazine-fed, military " "rifle, developed by the Russian Empire, and later used and perfected by the " "Soviet Union." -msgstr "莫辛-納甘1891/30手動槍機步槍, 使用彈倉式供彈, 於沙皇俄國時期開發的軍用步槍, 蘇聯時期進行了重大改進後成為主力武器。" +msgstr "莫辛·納甘1891/30手動槍機步槍, 使用彈倉式供彈, 於沙皇俄國時期開發的軍用步槍, 蘇聯時期進行了重大改進後成為主力武器。" #: lang/json/gun_from_json.py msgid "Mosin-Nagant 1891/30-EBR" msgid_plural "Mosin-Nagant 1891/30-EBR" -msgstr[0] "莫辛-納甘1891/30-增強型戰鬥步槍" +msgstr[0] "莫辛·納甘1891/30-增強型戰鬥步槍" #: lang/json/gun_from_json.py msgid "" "This Mosin-Nagant has exchanged the classic wooden stock for a modern " "synthetic model, carefully balanced to the same weight and handling yet " "offering support for modern accessories." -msgstr "這把莫辛-納甘更換了傳統的木製槍托為現代化的合成款, 仔細的調校成相同重量並且還提供了現代化的配件支援。" +msgstr "這把莫辛·納甘更換了傳統的木製槍托為現代化的合成款, 仔細的調校成相同重量並且還提供了現代化的配件支援。" #: lang/json/gun_from_json.py msgid "PPSh-41" @@ -60264,9 +60511,9 @@ msgid "" "to deliver precise long-range takedowns, utilizing the proprietary Rivtech " "8mm caseless round. Accepts stick magazines." msgstr "" -"為了滿足軍隊中長距離神槍手的武器需求, Rivtech公司製造的RM11B斥侯步槍研發概念是希望能在惡劣情況下, " -"達到耐用且精準。以無拖式設計、集成式滅音器、數位化瞄準鏡, 以及兩發連射模式, 使得它能精確地遠距離擊倒敵人, " -"使用Rivtech公司專利生產的8mm無殼彈, 使用條狀彈匣。" +"為了滿足軍隊中長距離神槍手的武器需求, Rivtech 公司製造的 RM11B 斥侯步槍研發概念是希望能在惡劣情況下, " +"達到耐用且精準。以無拖式設計、集成式滅音器、數位化瞄準鏡, 以及兩發連射模式, 使得它能精確地遠距離擊倒敵人, 使用 Rivtech 公司專利生產的 " +"8mm 無殼彈, 使用條狀彈匣。" #: lang/json/gun_from_json.py msgid "RM2000 submachine gun" @@ -60279,7 +60526,7 @@ msgid "" "was designed for durability and ease of carrying under less than ideal " "circumstances. Accepts stick magazines." msgstr "" -"Rivtech RM2000的研發概念是希望該型步槍能在惡劣狀況下, 仍擁有可靠與易攜的性能。使用了特殊的口徑以達到強大火力。使用條狀彈匣。" +"Rivtech RM2000 的研發概念是希望該型步槍能在惡劣狀況下, 仍擁有可靠與易攜的性能。使用了特殊的口徑以達到強大火力。使用條狀彈匣。" #: lang/json/gun_from_json.py msgid "RM298 HMG" @@ -60308,7 +60555,7 @@ msgid "" " with its considerable bulk minimized by a compact and ergonomic layout. " "Accepts box magazines." msgstr "" -"原本設計為軍事用途, Rivtech公司製造的RM51突擊步槍研發概念是希望能在惡劣情況下, " +"原本設計為軍事用途, Rivtech 公司製造的 RM51 突擊步槍研發概念是希望能在惡劣情況下, " "仍然耐用、易用。它的體積經緊湊式人體工學設計以達到最小化的樣式。使用盒狀彈匣。" #: lang/json/gun_from_json.py @@ -60427,7 +60674,7 @@ msgstr[0] "Kel-Tec SUB-2000" msgid "" "A uniquely designed pistol caliber carbine with an integral folding stock " "and that makes use of 9x19mm Glock magazines." -msgstr "一把設計獨特的手槍口徑卡賓槍, 內置折疊槍托, 使用 9x19mm 格洛克彈匣。" +msgstr "一把設計獨特的手槍口徑卡賓槍, 內置折疊式槍托, 使用 9x19mm 格洛克彈匣。" #: lang/json/gun_from_json.py msgid "L2032 Lookout" @@ -60655,7 +60902,7 @@ msgstr "這把短來福槍的設計在古代歐洲的戰場曾經佔盡優勢, #: lang/json/gun_from_json.py msgid "handmade double-barrel flintlock" msgid_plural "handmade double-barrel flintlocks" -msgstr[0] "" +msgstr[0] "手工製雙管燧發槍" #: lang/json/gun_from_json.py msgid "" @@ -60704,7 +60951,7 @@ msgid "" "tremendous rate, making it impractical for use in prolonged engagements." msgstr "" "這把由異常工藝製作出過度強大的電磁步槍, 是設計用來發射磁力驅動物體來摧毀在其前方的一切東西, 不論是建築物, 車輛, " -"或是屍潮。然而這種武器的體積與重量讓手持相當困難;更不用提到會消耗大量的 UPS 電力, 使得它無法長時間使用。" +"或是屍潮。然而這種武器的體積與重量讓手持相當困難, 更不用提到會消耗大量的 UPS 電力, 使得它無法長時間使用。" #: lang/json/gun_from_json.py msgid "ferromagnetic rail rifle" @@ -60782,7 +61029,7 @@ msgstr[0] "手工自動霰彈槍" msgid "" "A six-barrel hand-cranked automatic shotgun made from bicycle parts. Though" " a bit unwieldy, it is exceedingly powerful for such a simple machine." -msgstr "一把用腳踏車零件製程的六管自動霰彈槍, 儘管有一點不好掌握, 但對於一個簡單的機械來說, 它擁有強大的破壞力。" +msgstr "一把用自行車零件製程的六管自動霰彈槍, 儘管有一點不好掌握, 但對於一個簡單的機械來說, 它擁有強大的破壞力。" #: lang/json/gun_from_json.py msgid "Kel-Tec KSG" @@ -60868,7 +61115,7 @@ msgid "" "One of the most popular shotguns on the market, the Remington 870 is used by" " hunters and law enforcement agencies alike thanks to its high accuracy and " "muzzle velocity." -msgstr "市場上的其中一把有名的霰彈槍, 因其高命中率以及高射速, 雷明登870霰彈槍常用於狩獵以及執法部門中。" +msgstr "市場上的其中一把有名的霰彈槍, 因其高命中率以及高射速, 雷明登 870 霰彈槍常用於狩獵以及執法部門中。" #: lang/json/gun_from_json.py msgid "shotgun revolver" @@ -60920,7 +61167,7 @@ msgstr "一把舊式的霰彈槍, 可能是個古董。是個槍管, 槍機, 擊 #: lang/json/gun_from_json.py msgid "handmade lever shotgun" msgid_plural "handmade lever shotguns" -msgstr[0] "" +msgstr[0] "手工製槓桿式霰彈槍" #: lang/json/gun_from_json.py msgid "" @@ -60957,7 +61204,7 @@ msgstr[0] "手持雷射砲" msgid "" "This is a laser cannon stripped from the barrel of a TX-5LR Cerberus laser " "turret that has been modified to use UPS power for firing." -msgstr "這把雷射加農砲是從 TX-5LR 雷射砲塔上拆下來的, 已經改裝為使用 UPS 供電。" +msgstr "這把雷射砲是從 TX-5LR 雷射砲塔上拆下來的, 已經改裝為使用 UPS 供電。" #: lang/json/gun_from_json.py msgid "A7 laser rifle" @@ -61094,7 +61341,7 @@ msgstr[0] ".223 鋼管步槍" #: lang/json/gun_from_json.py msgid "pipe SMG: .22" msgid_plural "pipe SMGs: .22" -msgstr[0] "" +msgstr[0] "鋼管衝鋒槍 (.22 口徑)" #: lang/json/gun_from_json.py msgid "" @@ -61106,22 +61353,22 @@ msgstr "一把粗製的衝鋒槍, 各部件都使用廢品砌成: 鋼管構成 #: lang/json/gun_from_json.py msgid "pipe SMG: .38" msgid_plural "pipe SMGs: .38" -msgstr[0] "" +msgstr[0] "鋼管衝鋒槍 (.38 口徑)" #: lang/json/gun_from_json.py msgid "pipe SMG: 9x19mm" msgid_plural "pipe SMGs: 9x19mm" -msgstr[0] "" +msgstr[0] "鋼管衝鋒槍 (9mm 口徑)" #: lang/json/gun_from_json.py msgid "pipe SMG: .40" msgid_plural "pipe SMGs: .40" -msgstr[0] "" +msgstr[0] "鋼管衝鋒槍 (.40 口徑)" #: lang/json/gun_from_json.py msgid "pipe SMG: .45" msgid_plural "pipe SMGs: .45" -msgstr[0] "" +msgstr[0] "鋼管衝鋒槍 (.45 口徑)" #: lang/json/gun_from_json.py msgid "" @@ -61489,8 +61736,8 @@ msgid "" "Individual Carbine competition to replace the M4 carbine. It failed to " "replace it, but it is widely used by military all around the world." msgstr "" -"貝瑞塔 ARX-160 突擊步槍曾經參與美國軍隊發出的一項名為個人卡賓槍計劃第二階段的競標中, 以取代 M4 卡賓槍。最後並沒有取代, " -"但它在軍事上被廣泛用於世界各地。" +"貝瑞塔 ARX-160 突擊步槍曾經參與美國軍隊發出的一項名為個人卡賓槍計劃第二階段的競標中, 以取代 M4 卡賓槍。雖然它未能成功, " +"但這把槍在軍事上被廣泛地用於世界各地。" #: lang/json/gun_from_json.py msgid "light machine gun" @@ -61628,7 +61875,7 @@ msgid "" "A homemade gun. While still a primitive pipe and 2x4 design, some minor " "improvements have been made, such as a tube system for feeding and " "chambering more powerful rifle rounds." -msgstr "一把土製槍械。雖然是由鋼管和2x4 木材組成, 但設計上已有所改良, 如管式填裝系統並可使用威力更強大的步槍子彈。" +msgstr "一把土製槍械。雖然是由鋼管和 2x4 木材組成, 但設計上已有所改良, 如管式填裝系統並可使用威力更強大的步槍子彈。" #: lang/json/gun_from_json.py msgid "survivor's carbine" @@ -61658,7 +61905,7 @@ msgstr[0] "手持雷射砲" msgid "" "This is a laser cannon stripped from the barrel of a laser turret; it has " "been modified to use UPS power for firing." -msgstr "這把雷射加農砲是從雷射砲塔上拆下來的, 經過改裝, 它現在使用 UPS 供電。" +msgstr "這把雷射砲是從雷射砲塔上拆下來的, 經過改裝, 它現在使用 UPS 供電。" #: lang/json/gun_from_json.py msgid "laser rifle" @@ -61688,7 +61935,7 @@ msgstr "這把手槍的尺寸比大多數傳統手槍大, 但卻沒有任何後 #: lang/json/gun_from_json.py msgid "scrap laser pistol" msgid_plural "scrap laser pistols" -msgstr[0] "廢品激光手槍" +msgstr[0] "廢品雷射手槍" #: lang/json/gun_from_json.py msgid "" @@ -61960,7 +62207,7 @@ msgstr "" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel shooter" msgid_plural "gel shooters" -msgstr[0] "" +msgstr[0] "凝膠射手" #: lang/json/gun_from_json.py msgid "" @@ -62001,6 +62248,9 @@ msgid "" "attached at your touch, but the weapon itself is inert without something to " "control it." msgstr "" +"活的團塊變成了一種自主武器。在這些以令人難以理解的生物中, 這個團塊更是一個令人困惑的突變, 這個團塊被一層厚厚的皮毛作為保護形式地包裹起來。此外, " +"它能夠模仿一些更易於辨識的生物顎骨的方式, 來投射成排的鈣化尖銳碎片。無定形的質量可以在你觸摸時成形與附著, 但武器本身是惰性的, " +"無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "blobsaw" @@ -62017,6 +62267,9 @@ msgid "" "attached at your touch, but the weapon itself is inert without something to " "control it." msgstr "" +"活的團塊變成了一種自主武器。作為一種在框架上延伸的屏障。雖然比起它較簡化的表兄弟在角質突起的數量上有所限制, " +"但它們卻可以投射和操控。這個團塊可以利用數以百計的鋒利尖牙將它所檢測到的任何東西粉碎成無法辨認的條狀物。無定形的質量可以在你觸摸時成形與附著, " +"但武器本身是惰性的, 無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "fuel puffer" @@ -62032,6 +62285,8 @@ msgid "" "at your touch, but the weapon itself is inert without something to control " "it." msgstr "" +"活的團塊變成了一種自主武器。它是一個相當挑剔的食客, 以汽油中的化學物質為食。消化後的物質變得極度粘稠, 並在威脅接近時發射, " +"將擊中的任何東西黏住。無定形的質量可以在你觸摸時成形與附著, 但武器本身是惰性的, 無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "acid puffer" @@ -62045,11 +62300,13 @@ msgid "" "at any nearby enemies. The amorphous mass can be shaped and attached at " "your touch, but the weapon itself is inert without something to control it." msgstr "" +"活的團塊變成了一種自主武器。過濾進料器, 消化過程將產生高度酸性的副產物, 然後排出到附近的任何敵人身上。無定形的質量可以在你觸摸時成形與附著, " +"但武器本身是惰性的, 無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel spiker" msgid_plural "gel spikers" -msgstr[0] "" +msgstr[0] "凝膠長釘" #: lang/json/gun_from_json.py msgid "" @@ -62060,11 +62317,13 @@ msgid "" "expiring in the process. The amorphous mass can be shaped and attached at " "your touch, but the weapon itself is inert without something to control it." msgstr "" +"活的團塊變成了一種自主武器。能夠在其內部鈣化大量獠牙般的碎片。它將這些碎片組與其自身的一小部分一起投擲。當投射到目的地時, 將向所有方向爆射出這些碎片," +" 最後在此過程中殞滅。無定形的質量可以在你觸摸時成形與附著, 但武器本身是惰性的, 無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel spouter" msgid_plural "gel spouters" -msgstr[0] "" +msgstr[0] "凝膠噴射器" #: lang/json/gun_from_json.py msgid "" @@ -62073,11 +62332,13 @@ msgid "" " be shaped and attached at your touch, but the weapon itself is inert " "without something to control it." msgstr "" +"活的團塊變成了一種自主武器。它可以從車輛水箱中吸水, 並強迫將水以寬錐形排出。無定形的質量可以在你觸摸時成形與附著, 但武器本身是惰性的, " +"無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel lancer" msgid_plural "gel lancers" -msgstr[0] "" +msgstr[0] "凝膠長矛手" #: lang/json/gun_from_json.py msgid "" @@ -62088,11 +62349,13 @@ msgid "" "amorphous mass can be shaped and attached at your touch, but the weapon " "itself is inert without something to control it." msgstr "" +"活的團塊變成了一種自主武器。它具有令人難以置信的感知能力, 能夠在大半徑範圍內定位和識別可能的威脅。當發現潛在的威脅時, " +"它會以驚人的速度和命中率來發射一個小的鈣化彈丸。無定形的質量可以在你觸摸時成形與附著, 但武器本身是惰性的, 無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel razor" msgid_plural "gel razors" -msgstr[0] "" +msgstr[0] "凝膠剃刀" #: lang/json/gun_from_json.py msgid "" @@ -62101,6 +62364,8 @@ msgid "" " nearby threats. The amorphous mass can be shaped and attached at your " "touch, but the weapon itself is inert without something to control it." msgstr "" +"活的團塊變成了一種自主武器。增強的新陳代謝使其能夠鈣化巨大的銳牙圓盤, 然後朝向附近的威脅發射。無定形的質量可以在你觸摸時成形與附著, " +"但武器本身是惰性的, 無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "shock bulb" @@ -62114,11 +62379,13 @@ msgid "" " The amorphous mass can be shaped and attached at your touch, but the " "weapon itself is inert without something to control it." msgstr "" +"活的團塊變成了一種自主武器。令人震驚的是, 它能夠以某種方式投射電力, 然後在附近的任何威脅中放電。無定形的質量可以在你觸摸時成形與附著, " +"但武器本身是惰性的, 無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "gel puffer" msgid_plural "gel puffers" -msgstr[0] "" +msgstr[0] "凝膠噴出器" #: lang/json/gun_from_json.py msgid "" @@ -62129,6 +62396,8 @@ msgid "" "mass can be shaped and attached at your touch, but the weapon itself is " "inert without something to control it." msgstr "" +"活的團塊變成了一種自主武器。它是一種過濾進料器, 可以去除任何處理營養物質的水, 並將剩餘的水排向附近的威脅物。過濾進料的過程也使剩餘的液體粘稠, " +"雖說它也很快就會消散。無定形的質量可以在你觸摸時成形與附著, 但武器本身是惰性的, 無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "fire puffer" @@ -62144,6 +62413,8 @@ msgid "" "attached at your touch, but the weapon itself is inert without something to " "control it." msgstr "" +"活的團塊變成了一種自主武器。它是一個相當挑剔的食客, 以汽油中的化學物質為食。消化後的物質仍然是高度易燃的, " +"並且在發射時還會激活位於外膜上的點火腺體。無定形的質量可以在你觸摸時成形與附著, 但武器本身是惰性的, 無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "spark blight" @@ -62159,6 +62430,8 @@ msgid "" "and attached at your touch, but the weapon itself is inert without something" " to control it." msgstr "" +"活的團塊變成了一種自主武器。它能夠以電的形式來存儲來自太陽光的能量。用奧妙無法理解的方式投射出高度集中的電流以應對任何可能的威脅。無定形的質量可以在你觸摸時成形與附著," +" 但武器本身是惰性的, 無需額外物件來控管它。" #: lang/json/gun_from_json.py lang/json/vehicle_part_from_json.py msgid "diamond lance" @@ -62359,7 +62632,7 @@ msgstr "" #: lang/json/gun_from_json.py msgid "hypervelocity driver" msgid_plural "hypervelocity drivers" -msgstr[0] "" +msgstr[0] "超高速傳動砲塔" #: lang/json/gun_from_json.py msgid "" @@ -62665,7 +62938,7 @@ msgstr[0] "自製全自動射擊改裝套件" msgid "" "Mechanism that allows your CW-24 rifle to fire in fully automatic mode. It " "is handmade." -msgstr "此改裝套件讓你的CW-24步槍以全自動射擊模式射擊。它是自製的。" +msgstr "此改裝套件讓你的 CW-24 步槍以全自動射擊模式射擊。它是自製的。" #: lang/json/gunmod_from_json.py msgid ".22 caliber conversion kit" @@ -62759,6 +63032,32 @@ msgid "" "reduction to accuracy." msgstr "" +#: lang/json/gunmod_from_json.py +msgid "belt feed adapter" +msgid_plural "belt feed adapters" +msgstr[0] "彈鏈進彈轉接器" + +#: lang/json/gunmod_from_json.py +msgid "" +"A kit providing the necessary parts for permanently converting a firearm " +"from magazine to belt-feed. Guaranteed to void your warranty." +msgstr "一組工具能將進彈方式由彈匣改為彈鏈, 這一定會讓你的保固失效。" + +#: lang/json/gunmod_from_json.py +msgid "magazine" +msgstr "彈匣" + +#: lang/json/gunmod_from_json.py +msgid "tuned mechanism" +msgid_plural "tuned mechanisms" +msgstr[0] "微調槍機" + +#: lang/json/gunmod_from_json.py +msgid "" +"A set of finely tuned internal components which increase the precision and " +"reliably of a firearm." +msgstr "一套微調過的槍械內部組件, 能增加其精度和可靠性。" + #: lang/json/gunmod_from_json.py msgid "arrow rest" msgid_plural "arrow rests" @@ -62792,35 +63091,35 @@ msgstr "一個裝在弓握把前的秤錘, 可使命中率提昇。除了增加 #: lang/json/gunmod_from_json.py msgid "stabilizer" -msgstr "" +msgstr "穩定桿" #: lang/json/gunmod_from_json.py msgid "bow stabilizer system" msgid_plural "bow stabilizer systems" -msgstr[0] "" +msgstr[0] "弓身穩定裝置" #: lang/json/gunmod_from_json.py msgid "" "A set of three stabilizing, dampened rods with a spring-loaded bracket to " "mount on modern bows. Takes extra time to set up when wielding, but doesn't" " take much extra space." -msgstr "" +msgstr "一套三個穩定用的阻尼桿, 帶有彈簧支架, 可安裝在現代弓上。手持時需要額外的時間來設置, 但不會佔用太多空間。" #: lang/json/gunmod_from_json.py msgid "bow dampening kit" msgid_plural "bow dampening kits" -msgstr[0] "" +msgstr[0] "弓身減震套件" #: lang/json/gunmod_from_json.py msgid "" "A set of simple pads and strips of fur or rubber with adhesive backing, " "designed to stick on the limbs and string of a bow to absorb vibrations. " "This substantially reduces noise during firing and can help with accuracy." -msgstr "" +msgstr "一套簡單的襯墊和毛皮, 或帶有粘性背襯的橡膠條, 設計用於粘在弓臂和弓弦以吸收振動。這大大地降低了射擊過程中的噪音, 有助於提高命中率。" #: lang/json/gunmod_from_json.py msgid "dampening" -msgstr "" +msgstr "安定器" #: lang/json/gunmod_from_json.py src/item.cpp msgctxt "gun_type_type" @@ -62875,18 +63174,18 @@ msgstr "測試 UPS 消耗的模組。這不應該出現, 如果你看到就是 #: lang/json/gunmod_from_json.py msgid "LW barrel extension" msgid_plural "LW barrel extensions" -msgstr[0] "" +msgstr[0] "LW 延長槍管" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in longer barrel increases the muzzle velocity of a " -"firearm, contributing to both accuracy and damage, but slows aiming." +"firearm, contributing to both accuracy and damage." msgstr "" #: lang/json/gunmod_from_json.py msgid "LW shortened barrel" msgid_plural "LW shortened barrels" -msgstr[0] "" +msgstr[0] "LW 縮短槍管" #: lang/json/gunmod_from_json.py msgid "" @@ -62898,12 +63197,12 @@ msgstr "" #: lang/json/gunmod_from_json.py msgid "LW heavy duty barrel" msgid_plural "LW heavy duty barrels" -msgstr[0] "" +msgstr[0] "LW 重型槍管" #: lang/json/gunmod_from_json.py msgid "" "A Leadworks built in heavy duty barrel especially designed for prolonged " -"shooting. Reduced accuracy but increase damage output and weapon range." +"shooting. Increases damage output and weapon range." msgstr "" #: lang/json/gunmod_from_json.py @@ -62928,9 +63227,8 @@ msgstr[0] "人體工學握把" #: lang/json/gunmod_from_json.py msgid "" -"A set of ergonomic replacement furniture for a firearm improving handling " -"and accuracy." -msgstr "一組用於槍械的人體工學握把, 能提升操縱性與準確度。" +"A set of ergonomic replacement furniture for a firearm improving handling." +msgstr "" #: lang/json/gunmod_from_json.py msgid "beam scatterer" @@ -62975,21 +63273,6 @@ msgstr "" msgid "emitter" msgstr "發射體" -#: lang/json/gunmod_from_json.py -msgid "belt feed adapter" -msgid_plural "belt feed adapters" -msgstr[0] "彈鏈進彈轉接器" - -#: lang/json/gunmod_from_json.py -msgid "" -"A kit providing the necessary parts for permanently converting a firearm " -"from magazine to belt-feed. Guaranteed to void your warranty." -msgstr "一組工具能將進彈方式由彈匣改為彈鏈, 這一定會讓你的保固失效。" - -#: lang/json/gunmod_from_json.py -msgid "magazine" -msgstr "彈匣" - #: lang/json/gunmod_from_json.py msgid "leadworks magazine adapter" msgid_plural "leadworks magazine adapters" @@ -63008,19 +63291,9 @@ msgstr[0] "競賽扳機" #: lang/json/gunmod_from_json.py msgid "" -"A precision weighted trigger assembly that improves a firearm's accuracy." -msgstr "一個精準加重的扳機, 裝上後能夠增進槍械命中率。" - -#: lang/json/gunmod_from_json.py -msgid "tuned mechanism" -msgid_plural "tuned mechanisms" -msgstr[0] "微調槍機" - -#: lang/json/gunmod_from_json.py -msgid "" -"A set of finely tuned internal components which increase the precision and " -"reliably of a firearm." -msgstr "一套微調過的槍械內部組件, 能增加其精度和可靠性。" +"A precision weighted trigger assembly that slightly improves a firearm's " +"accuracy." +msgstr "" #: lang/json/gunmod_from_json.py msgid "firearm waterproofing" @@ -63172,13 +63445,13 @@ msgstr[0] "陀螺穩定儀" #: lang/json/gunmod_from_json.py msgid "" "An advanced unit that straps onto the side of your firearm and reduces " -"vibration, greatly reducing recoil and increasing accuracy." -msgstr "一個先進的裝置可以幫助你穩定槍身, 大幅降低後座力與增加準確性。" +"vibration, greatly reducing recoil and slightly increasing accuracy." +msgstr "" #: lang/json/gunmod_from_json.py msgid "LW gyroscopic stabilizer" msgid_plural "LW gyroscopic stabilizers" -msgstr[0] "" +msgstr[0] "LW 陀螺穩定器" #: lang/json/gunmod_from_json.py msgid "An advanced Leadworks built in gyroscopic stabilizer." @@ -63187,14 +63460,14 @@ msgstr "" #: lang/json/gunmod_from_json.py msgid "five pin bow sight" msgid_plural "five pin bow sights" -msgstr[0] "" +msgstr[0] "五針弓瞄準具" #: lang/json/gunmod_from_json.py msgid "" "A set of adjustable optic fibre aiming pins with a bracket to mount on " "modern bows. Improves accuracy substantially, but takes a bit longer to " "line up." -msgstr "" +msgstr "一組可調節光纖瞄準針, 帶有支架, 可安裝在現代弓上。大大地提高了命中率, 但瞄準時間要長一些。" #: lang/json/gunmod_from_json.py msgid "sights" @@ -63203,25 +63476,25 @@ msgstr "瞄準具" #: lang/json/gunmod_from_json.py msgid "single pin bow sight" msgid_plural "single pin bow sights" -msgstr[0] "" +msgstr[0] "單針弓瞄準具" #: lang/json/gunmod_from_json.py msgid "" "A single aluminum pin with a bracket to mount on modern bows. Quick to use," " but not very accurate." -msgstr "" +msgstr "一個帶有支架的鋁製針, 可安裝在現代弓上。使用快捷, 但不是很準確。" #: lang/json/gunmod_from_json.py msgid "bow scope" msgid_plural "bow scopes" -msgstr[0] "" +msgstr[0] "弓瞄準鏡" #: lang/json/gunmod_from_json.py msgid "" "A single magnifying scope mounted on an adjustable bracket, with " "accompanying clarifier peep sight. Designed for extra long shots, but " "easily adjusted for short range. Spectacularly accurate." -msgstr "" +msgstr "單個放大鏡安裝在可調支架上, 附有清晰的助視窺孔。專為超長射距而設計, 但也能輕易調整為短距使用。非常精準。" #: lang/json/gunmod_from_json.py msgid "holographic sight" @@ -63279,13 +63552,14 @@ msgstr "民間與軍用的長程狙擊鏡, 大幅增加準確性與一點重量 #: lang/json/gunmod_from_json.py msgid "ACOG scope" msgid_plural "ACOG scopes" -msgstr[0] "" +msgstr[0] "ACOG 瞄準鏡" #: lang/json/gunmod_from_json.py msgid "" "An Advanced Combat Optical Gunsight, a milspec medium magnification scope. " "Increases weight but improves accuracy significantly." msgstr "" +"先進戰鬥光學瞄準鏡 (Advanced Combat Optical Gunsight, ACOG), 軍用中等放大瞄準鏡。增加重量但顯著地提高命中率。" #: lang/json/gunmod_from_json.py msgid "RS1219 scope" @@ -63302,62 +63576,64 @@ msgstr "RM11B 步槍系統的必須部件, RS1219 鷲鷹數位瞄準鏡提供自 #: lang/json/gunmod_from_json.py msgid "telescopic sight" msgid_plural "telescopic sights" -msgstr[0] "" +msgstr[0] "望遠鏡式瞄具" #: lang/json/gunmod_from_json.py msgid "" "A simple telescopic sight, essentially a small telescope with crosshairs. " "Increases weight but improves accuracy." -msgstr "" +msgstr "一個簡單的望遠鏡式瞄具, 基本上是一個帶有準星的小望遠鏡。增加重量但提高命中率。" #: lang/json/gunmod_from_json.py msgid "telescopic pistol sight" msgid_plural "telescopic pistol sights" -msgstr[0] "" +msgstr[0] "手槍望遠鏡式瞄具" #: lang/json/gunmod_from_json.py msgid "" "A simple telescopic sight intended for use on a handgun. Increases weight " "but improves accuracy greatly." -msgstr "" +msgstr "一個用於手槍的簡單望遠鏡式瞄具。增加了重量, 但大幅地提升了命中率。" #: lang/json/gunmod_from_json.py msgid "LW red dot sight" msgid_plural "LW red dot sights" -msgstr[0] "" +msgstr[0] "LW 內紅點瞄準鏡" #: lang/json/gunmod_from_json.py msgid "Built in red-dot sight for the Leadworks weapon." -msgstr "" +msgstr "內建於 Leadworks 武器中的紅點鏡。" #: lang/json/gunmod_from_json.py msgid "LW rifle scope" msgid_plural "LW rifle scopes" -msgstr[0] "" +msgstr[0] "LW 步槍瞄準鏡" #: lang/json/gunmod_from_json.py msgid "Built in rifle scope for the Leadworks weapon." -msgstr "" +msgstr "內建於 Leadworks 武器中的步槍瞄準鏡。" #: lang/json/gunmod_from_json.py msgid "LW ACOG scope" msgid_plural "LW ACOG scopes" -msgstr[0] "" +msgstr[0] "LW ACOG 瞄準鏡" #: lang/json/gunmod_from_json.py msgid "" "An Leadworks built in Advanced Combat Optical Gunsight, a milspec medium " "magnification scope. Improves accuracy significantly." msgstr "" +"Leadworks 內建的先進戰鬥光學瞄準鏡 (Advanced Combat Optical Gunsight, ACOG), " +"軍用中等放大瞄準鏡。顯著地提高命中率。" #: lang/json/gunmod_from_json.py msgid "LW holographic sight" msgid_plural "LW holographic sights" -msgstr[0] "" +msgstr[0] "LW 全像瞄準鏡" #: lang/json/gunmod_from_json.py msgid "Leadworks built in holographic sight." -msgstr "" +msgstr "Leadworks 內建的全像照準器。" #: lang/json/gunmod_from_json.py msgid "adjustable stock" @@ -63404,14 +63680,14 @@ msgstr "一個替換的槍托, 設計用來吸收後座力。" #: lang/json/gunmod_from_json.py msgid "cheek pad" msgid_plural "cheek pads" -msgstr[0] "" +msgstr[0] "面頰墊" #: lang/json/gunmod_from_json.py msgid "" "A stock accessory for sniper rifles and even DMRs considerably improving eye" " relief efficiency, prevents slipping, and reduces recoil to the neck and " "cheek." -msgstr "" +msgstr "用於狙擊步槍、甚至是精確射手步槍的槍托附件, 可顯著地提高眼部緩解效率、防止滑動, 並減少頸部和臉頰的後座力。" #: lang/json/gunmod_from_json.py msgid "aux flamethrower" @@ -63606,7 +63882,7 @@ msgstr "一個雙管霰彈槍, 能夠附掛在許多步槍的槍管下。一次 #: lang/json/gunmod_from_json.py msgid "LW underbarrel laser sight" msgid_plural "LW underbarrel laser sights" -msgstr[0] "" +msgstr[0] "LW 雷射瞄準器 (槍管下)" #: lang/json/gunmod_from_json.py msgid "" @@ -63668,7 +63944,7 @@ msgstr[0] "備用彈匣" msgid "" "A spare magazine you can keep on hand to make reloads faster, but must " "itself be reloaded before it can be used again." -msgstr "後備彈夾可以加快裝填速度, 但前提是裡面有子彈。" +msgstr "備用彈夾可以加快裝填速度, 但前提是裡面有子彈。" #: lang/json/gunmod_from_json.py msgid "extended magazine" @@ -63726,7 +64002,7 @@ msgstr[0] "5.45 口徑改裝套件" msgid "" "This kit is used to convert 6.54 rifle to the 5.45 caliber. The conversion " "results in slight reductions to recoil." -msgstr "此套件可以將6.54口徑的步槍改為5.45口徑, 將輕微減少後座力。" +msgstr "此套件可以將 6.54 口徑的步槍改為 5.45 口徑, 將輕微減少後座力。" #: lang/json/gunmod_from_json.py msgid "6.54 caliber conversion kit" @@ -63737,7 +64013,7 @@ msgstr[0] "6.54 口徑改裝套件" msgid "" "This kit is used to convert 5.45 rifle to the 6.54 caliber. The conversion " "results in increased recoil." -msgstr "此套件可以將5.45口徑的步槍改為6.54口徑, 將導致後座力的增加。" +msgstr "此套件可以將 5.45 口徑的步槍改為 6.54 口徑, 將導致後座力的增加。" #: lang/json/gunmod_from_json.py msgid "7.62 caliber conversion kit" @@ -63748,7 +64024,7 @@ msgstr[0] "7.62 口徑改裝套件" msgid "" "This kit is used to convert 6.54 rifle to the 7.62 caliber. The conversion " "results in increased recoil." -msgstr "此套件可以將6.54口徑的步槍改為7.62口徑, 將導致後座力的增加。" +msgstr "此套件可以將 6.54 口徑的步槍改為 7.62 口徑, 將導致後座力的增加。" #: lang/json/gunmod_from_json.py msgid "Flaregun conversion kit" @@ -63759,7 +64035,7 @@ msgstr[0] "信號槍改裝套件" msgid "" "Replacing several key parts flaregun to convert it to a .40 firearm. The " "conversion results in reduced accuracy and increased recoil." -msgstr "把信號槍改成.40口徑的槍枝, 這些修改將會降低武器的準確度以及增加後座力。" +msgstr "把信號槍改成 .40 口徑的槍枝, 這些修改將會降低武器的準確度以及增加後座力。" #: lang/json/gunmod_from_json.py msgid "" @@ -63898,7 +64174,7 @@ msgid "" " need to keep yourself hydrated and sleep periodically." msgstr "" "大災變與其他 roguelike 的遊戲有許多不同的地方。以往是探索地下城, 通常每一階都是有限的區域, " -"而大災變中你探索的是四方無限寬廣的世界。另外像其他 roguelike 的遊戲的方面就是你需要找尋食物;你也需要保持不脫水, 以及充分的睡眠。" +"而大災變中你探索的是四方無限寬廣的世界。另外像其他 roguelike 的遊戲的方面就是你需要找尋食物, 你也需要保持不脫水, 以及充分的睡眠。" #: lang/json/help_from_json.py msgid "" @@ -63911,11 +64187,11 @@ msgstr "" #: lang/json/help_from_json.py msgid ": Movement" -msgstr "" +msgstr ": 移動" #: lang/json/help_from_json.py msgid "Movement is performed using the numpad, or vikeys." -msgstr "移動的方法是使用數字鍵盤來達成, 或是hjkl。" +msgstr "移動是透過數字鍵盤或 vi 鍵 (hjklyubn) 來達成。" #: lang/json/help_from_json.py msgid "" @@ -63927,8 +64203,8 @@ msgid "" " you will then replenish a variable amount of movement points, depending on " "many factors (press to see the exact amount)." msgstr "" -"每走一步會消耗 100 移動點數 (或依照地形有所增減)。接著你會重新獲得不等的行動點數, 由各種因素決定 (按 " -" 以查看確切的數值)。" +"每走一步會消耗 100 行動點數 (或更多, 根據地形決定)。接著你會重新獲得不等的行動點數, 根據各種因素決定 (按 " +" 以檢視確切的數值)。" #: lang/json/help_from_json.py msgid "To attempt to hit a monster with your weapon, simply move into it." @@ -63977,7 +64253,7 @@ msgid "" "As time passes, you will begin to feel hunger and thirst. When this happens," " a status warning at the sidebar will appear. As hunger and thirst reach " "critical levels, you will begin to suffer movement penalties." -msgstr "隨著時間流逝, 你會開始感到飢餓和口渴。在這種情況下, 側邊欄上會顯示狀態警告。隨著飢餓和口渴達到嚴重水平, 你會在移動方面遭受懲罰。" +msgstr "隨著時間流逝, 你會開始感到飢餓和口渴。在這種情況下, 側邊欄上會顯示狀態警告。隨著飢餓和口渴程度加劇, 你會開始受到行動速度懲罰。" #: lang/json/help_from_json.py msgid "" @@ -63995,7 +64271,7 @@ msgstr "" "口渴比飢餓更危險, 但如果你吃得不好, 你有機會患上各種維他命缺乏症。缺乏症有著多個階段, " "因此你不會在一瞬間從完全健康演變成嚴重的壞血病。任何發展中和進行中的缺乏症都會顯示在角色狀態表上。缺乏症會導致各種懲罰, 但幸運的是, " "它們總是可逆的。綜合維他命丸可以幫助你補足任何缺乏的維他命, 但如果你攝取太多也會發生問題。確保要有均衡的飲食, " -"至少不是一塌糊塗的。你可以檢查食品以查看營養成份。" +"至少不是一塌糊塗的。你可以檢查食品以檢視營養成份。" #: lang/json/help_from_json.py msgid "" @@ -64038,9 +64314,8 @@ msgid "" "influence of many painkillers, the physiological side effects may slow you " "or reduce your stats." msgstr "" -"當你在任何狀況下受到傷害, 你將會感到疼痛。疼痛會減緩你的速度以及降低屬性, " -"所以想辦法儘早處理疼痛是勢在必行。最普遍的方法是服用藥物;阿斯匹靈、可待因、曲馬多、可待因酮, 以及其他更多的好選擇。但是要小心的是在止痛藥的作用下, " -"一些生理上的影響也可能減緩你的速度或是降低屬性。" +"當你在任何狀況下受到傷害, 你將會感到疼痛。疼痛會減緩你的速度以及降低屬性, 所以想辦法儘早處理疼痛是勢在必行。最普遍的方法是服用藥物, " +"阿斯匹靈、可待因、曲馬多、可待因酮, 以及其他更多的好選擇。但是要小心的是在止痛藥的作用下, 一些生理上的影響也可能減緩你的速度或是降低屬性。" #: lang/json/help_from_json.py msgid "" @@ -64065,8 +64340,8 @@ msgid "" "importantly, most are highly addictive. Stimulants range from the caffeine " "rush of cola to the more intense high of Adderall and methamphetamine." msgstr "" -"另一種常見的藥物就是興奮劑。興奮劑能夠讓你暫時的提昇能力, 增加你的移動速度或是許多屬性, " -"特別的是智力能夠讓你增加學習效率。興奮劑有兩個缺點;會讓人難以入眠, 而最最重要的是很容易上癮。從可樂的咖啡因到安非他命及冰毒都是屬於興奮劑。" +"另一種常見的藥物就是興奮劑。興奮劑能夠讓你暫時的提昇能力, 增加你的行動速度或是許多屬性, 特別的是智力能夠讓你增加學習效率。興奮劑有兩個缺點, " +"會讓人難以入眠, 而最最重要的是很容易上癮。從可樂的咖啡因到安非他命及冰毒都是屬於興奮劑。" #: lang/json/help_from_json.py msgid ": Addiction" @@ -64081,7 +64356,7 @@ msgid "" "last for days and will leave you very weak, so try to do it in a safe area." msgstr "" "許多藥物有潛在的致癮作用。你每次服用的時候將會有一定的機率成長為藥物上癮。服用越多藥物將會增加依賴性, 每種藥物的影響力差別很大, " -"但要擺脫藥癮只有一個方法;停止服用。這個過程可能會持續幾天, 並會讓你非常虛弱, 所以請在安全的地點再進行嘗試。" +"但要擺脫藥癮只有一個方法: 停止服用。這個過程可能會持續幾天, 並會讓你非常虛弱, 所以請在安全的地點再進行嘗試。" #: lang/json/help_from_json.py msgid "" @@ -64107,14 +64382,15 @@ msgid "" "options. Most morale-boosting activities can only take you to a certain " "level before they grow boring." msgstr "" -"有許多的方法能夠增加士氣;讀一本有趣的書、吃美味的食物、甚至是服用一些興奮藥物。大部分能讓士氣高漲的活動只能在你變得無聊前讓你達到某種程度。" +"有許多的方法能夠增加士氣: 讀一本有趣的書、吃美味的食物、甚至是服用一些興奮藥物。大部分能讓士氣高漲的活動只能在你變得無聊前讓你達到某種程度。" #: lang/json/help_from_json.py msgid "" "There are also lots of ways for your morale to decrease, beyond its natural " "decay. Eating disgusting food, reading a boring technical book, killing a " "friendly NPC, or going through drug withdrawal are some prominent examples." -msgstr "同時也有許多狀況會讓你士氣低落, 排除原本的自然沮喪。吃難吃的食物, 讀無聊的技術書籍, 殺害了無辜的NPC, 或是戒除藥癮, 諸如此類。" +msgstr "" +"同時也有許多狀況會讓你士氣低落, 排除原本的自然沮喪。吃難吃的食物, 讀無聊的技術書籍, 殺害了無辜的 NPC, 或是戒除藥癮, 諸如此類。" #: lang/json/help_from_json.py msgid "" @@ -64135,7 +64411,7 @@ msgid "" "learning potential. Higher or lower focus levels make it easier or harder to" " learn from practical experience." msgstr "" -"士氣同時也是影響學習效率的關鍵, 透過稱為'專注'的屬性。專注力的高低直接影響到你學習的效率。正常等級是100, " +"士氣同時也是影響學習效率的關鍵, 透過稱為'專注'的屬性。專注力的高低直接影響到你學習的效率。正常等級是 100, " "代表一般的學習能力。較高或較低的專注等級讓你較容易或較困難取得實際經驗。" #: lang/json/help_from_json.py @@ -64159,8 +64435,8 @@ msgid "" "decreases your focus rapidly, by giving a significant penalty to the set " "point of your focus." msgstr "" -"你的專注力也會受到特定狀況影響。透過實際練習來訓練你的技能會讓專注慢慢降低, " -"數值取決於你目前的專注等級(較高的專注降低的越多)。藉由讀書來訓練你的技能會持續降低你的專注。" +"你的專注力也會受到特定狀況影響。透過實際練習來訓練你的技能會讓專注慢慢降低, 數值取決於你目前的專注等級 " +"(較高的專注降低的越多)。藉由讀書來訓練你的技能會持續降低你的專注。" #: lang/json/help_from_json.py msgid ": Radioactivity and mutation" @@ -64184,7 +64460,7 @@ msgid "" " style considerably. It is possible to find substances that will remove " "mutations, though these are extremely rare." msgstr "" -"若是你照射到過量的輻射, 你可能會出現突變。大部分的突變都是負面的;然而, 也有可能產生優勢的突變, " +"若是你照射到過量的輻射, 你可能會出現突變。大部分的突變都是負面的, 然而, 也有可能產生優勢的突變, " "或是好壞並存的突變。你的突變可能會大大的改變你的玩法。你也能夠找到特殊物質來移除突變, 只是這類物質相當稀有。" #: lang/json/help_from_json.py @@ -64282,7 +64558,7 @@ msgid "" "-> Electronics lets you make a wide variety of tools with intricate uses." msgstr "" "->機械技能用於製造武器, 陷阱, 以及廣泛的工具。\n" -"->烹飪技能在低等級時只能用於製作美味食物的配方;而高等級時, 你能夠理解化學並製作化學武器以及藥劑。\n" +"->烹飪技能在低等級時只能用於製作美味食物的配方; 而高等級時, 你能夠理解化學並製作化學武器以及藥劑。\n" "->裁縫技能用於製作基本的衣物到堅固的護具。\n" "->電子技能讓你製作用途複雜的各式電子工具。" @@ -64291,7 +64567,7 @@ msgid "" "In addition to the primary crafting skills, other skills may be necessary to" " create certain items. Traps, Marksmanship, and First Aid are all required " "for certain items." -msgstr "除了主要的製作相關技能, 其他技能在製作特定物品時也可能用到。陷阱技能, 射擊技能, 以及急救技能, 都在製作特定物品時會用到。" +msgstr "除了主要的製作相關技能, 其他技能在製作特定物品時也可能用到。陷阱技能、射擊技能、以及急救技能, 都在製作特定物品時會用到。" #: lang/json/help_from_json.py msgid "" @@ -64313,7 +64589,7 @@ msgid "" "the Traps skill and possibly Mechanics." msgstr "" "當在危險的地區進行睡眠時, 設置陷阱來抵禦未知的入侵者才是明智的作法。遊戲世界中能夠找到一些陷阱, 最常見的就是泡泡紙 (當踩到時會發出明顯聲響, " -"讓你醒來) 以及捕獸夾 (會發出聲響以及傷害踩上的任何東西)。其餘的就需要透過製作物品的方式才能取得;需要陷阱技能或是一些機械技能。" +"讓你醒來) 以及捕獸夾 (會發出聲響以及傷害踩上的任何東西)。其餘的就需要透過製作物品的方式才能取得, 這會需要陷阱技能或是一些機械技能。" #: lang/json/help_from_json.py msgid "" @@ -64404,8 +64680,8 @@ msgid "" "\t dlt = damage less than (0-5) | {dlt:1}" msgstr "" "目前可用代碼:\n" -"\t c = 類別 (書籍, 食物, 等) | {c:books}\n" -"\t m = 材質 (棉, 凱夫勒, 等) | {m:iron}\n" +"\t c = 分類 (書籍, 食物… 等) | {c:books}\n" +"\t m = 材質 (棉, 凱夫勒… 等) | {m:iron}\n" "\t dgt = 傷害值大於 (0-5) | {dgt:2}\n" "\t dlt = 傷害值小於 (0-5) | {dlt:1}" @@ -64437,10 +64713,9 @@ msgid "" " and lose movement points. If a monster hits you, your clothing may absorb " "some damage, but you will absorb the excess." msgstr "" -"要用近戰武器來攻擊一個怪物, " -"只要向著它的方向移動。需要的時間取決於你武器的大小與重量。小而輕的武器是最快的;徒手攻擊能夠藉由提昇徒手戰鬥技能來增加速度, " -"並且有可能達到極速的境界。一次成功的鈍擊攻擊可能讓怪物被短暫震暈, 並失去它的行動點數。假如怪物擊中你, 你的衣物有機會吸收部分傷害, " -"剩下的會由你承受。" +"要用近戰武器來攻擊一個怪物, 只要向著它的方向移動。需要的時間取決於你武器的大小與重量。小而輕的武器是最快的, " +"徒手攻擊能夠藉由提昇徒手戰鬥技能來增加速度, 並且有可能達到極速的境界。一次成功的鈍擊攻擊可能讓怪物被短暫震暈, 並失去它的行動點數。假如怪物擊中你, " +"你的衣物有機會吸收部分傷害, 剩下的會由你承受。" #: lang/json/help_from_json.py msgid "" @@ -64449,7 +64724,7 @@ msgid "" " in a given firearm's description. Fortunately, a firearm often spawns with " "one such magazine in it." msgstr "" -"遇到成群的怪物可能需要用到槍械了。遊戲中的大多數槍械需要兼容的彈匣以裝填彈藥。槍械描述中會列出所有兼容的彈匣。幸運的是, " +"遇到成群的怪物可能需要用到槍械了。遊戲中的大多數槍械需要兼容的彈匣以裝填彈藥。槍械的描述中會列出所有兼容的彈匣。幸運的是, " "大部分出現的槍械都會有一個匹配的彈匣。" #: lang/json/help_from_json.py @@ -64481,11 +64756,9 @@ msgstr "彈匣的描述中還列出了其他兼容的彈藥。" msgid "" "Note that while several ammo types exist for a given caliber and magazine " "type, you can't mix and match these types into a single magazine. You can't " -"for example load 9x19mm JHP and 9x19 FMJ ammo into the same magazine, since " -"a magazine always requires identical rounds to be loaded in it." +"for example load 9x19mm JHP and 9x19mm FMJ ammo into the same magazine, " +"since a magazine always requires identical rounds to be loaded in it." msgstr "" -"請注意, 雖然同一口徑及種類的子彈有多種變體, 但玩家並不能將不同類型的子彈混合裝填到一個彈匣中。例如, 你不能將 9x19mm JHP 和 9x19 " -"FMJ 彈藥裝到同一個彈匣中, 因為一個彈匣中只能裝填一款彈藥。" #: lang/json/help_from_json.py msgid "" @@ -64496,8 +64769,8 @@ msgid "" "'a'ctivate the appropriate clothing item, at which point you'll get to " "choose which magazine to store." msgstr "" -"彈匣可以儲放於身上的配件, 如戰術背心和彈藥袋中, 以便拿取。彈匣的描述中會列出所有兼容的儲存配件。目前每件服裝最多只能儲放一個彈匣。要儲放彈匣的話, " -"按 'a' 啟動相應的服裝, 然後選擇要儲放的彈匣。" +"彈匣可以儲放於身上的配件, 如戰術背心和彈藥袋中, 以便拿取。彈匣的描述中會列出所有兼容的儲存配件。目前每件衣物最多只能儲放一個彈匣。要儲放彈匣的話, " +"按 a 啟動相應的衣物, 然後選擇要儲放的彈匣。" #: lang/json/help_from_json.py msgid "" @@ -64526,8 +64799,8 @@ msgid "" "found in their own traits, learned from manuals or by taking lessons from " "wandering masters." msgstr "" -"遊戲中有多樣化的戰鬥招數可以使用, 尤其是對於徒手戰士。你能夠在一開始藉由選擇 特質 中的 武術訓練 " -"來取得一項自學而成的招式。還能夠在遊戲中藉由特定流浪師父的特質及書籍來學到更多更多的武術。" +"遊戲中有多樣化的戰鬥招式可以使用, " +"尤其是對於徒手戰士。你能夠在一開始藉由武術訓練特質來選擇一個常用的招式。還能夠在遊戲中藉由特定流浪師父的特質及書籍來學到更多更多的武術。" #: lang/json/help_from_json.py msgid "" @@ -64549,8 +64822,8 @@ msgid "" "unarmed skill. You can check the moves by pressing '?' in the pick style " "menu." msgstr "" -"大部分的招式都關連了許多特殊走位。大部分都需要一定的技能, 不然就不會啟動, 直到你達到徒手技能的特定等級。你能夠在你的招式選單按下 '?' " -"來檢視你的招式走位。" +"大部分的招式都有各種與之相關的特殊走位。大部分有一定的技能需求, 不然就不會啟動, 直到你達到徒手技能的特定等級。你能夠在你的招式選單按下 ? " +"來檢視走位。" #: lang/json/help_from_json.py msgid "" @@ -64558,7 +64831,7 @@ msgid "" "These are varied and unique to each style, and range from special combo " "moves to bonuses depending on the situation you are in. You can check these " "by examining your style." -msgstr "許多招式也包含了特殊效果, 會在特定情況下解鎖。效果都很豐富並且獨特, 依照情況從特殊連擊到屬性加成都有。你能夠檢視招式來查看效果。" +msgstr "許多招式在特定條件下也具有特殊效果。每個招式的效果都很豐富並且獨特, 依照情況從特殊的連續動作到屬性加成都有。你能夠檢查招式以檢視效果。" #: lang/json/help_from_json.py msgid ": Survival tips" @@ -64573,9 +64846,9 @@ msgid "" " may carry others. Unless you plan on concentrating on melee combat, seek " "out gun stores as soon as possible and load up on more than one type." msgstr "" -"首先要做的事情就是檢查你的初始位置來找尋有用物品。你的初始儲存空間是有限的, 取得背包, 風衣, " -"或是其他有儲物空間的物品能夠讓你攜帶更多東西。找個武器也是很重要的;平底鍋, 菜刀, " -"以及許多常見的用品;五金行可能還有更多其他的種類。除非你決心專注在近身戰鬥, 不然從槍械商店取得多種槍械與彈藥是一個重要的目標。" +"首先要做的事情就是檢查你的起始地點來找尋有用物品。你的初始儲存空間是有限的, " +"取得背包、風衣、或是其他有儲物空間的物品能夠讓你攜帶更多東西。找個武器也是很重要的: 平底鍋、菜刀、以及許多常見的用品, " +"五金行可能還有更多其他的種類。除非你決心專注在近身戰鬥, 不然從槍械商店取得多種槍械與彈藥是一個重要的目標。" #: lang/json/help_from_json.py msgid "" @@ -64585,7 +64858,7 @@ msgid "" "equipment. The high concentration of zombies makes them a deathtrap -- but a" " necessary resource of food and ammunition." msgstr "" -"攜帶一些藥物也是同樣重要的;止痛藥是必須有的, 另外諸如香煙能讓生活更愜意 (小心上癮)。在城市搜刮物資是一個死亡之旅 - 因為物資豐富的關係, " +"攜帶一些藥物也是同樣重要的。止痛藥是必須有的, 另外諸如香煙能讓生活更愜意 (小心上癮)。在城市搜刮物資是一個死亡之旅 - 因為物資豐富的關係, " "聚集了成群的殭屍。當你蒐集足夠的物資後要儘快遠離城市。" #: lang/json/help_from_json.py @@ -64613,7 +64886,7 @@ msgid "" "damage. Items made of glass, ceramics, diamond or precious metals will be " "totally immune to acid." msgstr "" -"各種服裝材料有著不同的酸蝕抗性: 布 < 皮革 < 凱夫勒 < 塑膠。因此, 皮革和凱夫勒能提供一定保護, " +"各種衣物材料有著不同的酸蝕抗性: 布 < 皮革 < 凱夫勒 < 塑膠。因此, 皮革和凱夫勒能提供一定保護, " "而防護衣和橡膠靴能使你接近免疫酸性傷害。玻璃、陶瓷、鑽石和貴金屬製品對酸性完全免疫。" #: lang/json/help_from_json.py @@ -64664,7 +64937,7 @@ msgstr "" msgid "" "You control vehicles using the numpad, or vikeys. However, you control their" " controls, rather than the vehicle directly." -msgstr "你能利用數字鍵盤或方向按鍵來控制車輛。然而, 你是操作控制器, 而非直接使用車輛。" +msgstr "你能利用數字鍵盤或 vi 鍵 (hjklyubn) 來控制車輛。然而, 你是操作控制器, 而非直接使用車輛。" #: lang/json/help_from_json.py msgid "" @@ -64769,7 +65042,7 @@ msgstr "" #: lang/json/help_from_json.py msgid "<2>: Description of map symbols" -msgstr "" +msgstr "<2>: 地圖符號的描述" #: lang/json/help_from_json.py msgid "MAP SYMBOLS:" @@ -64882,7 +65155,7 @@ msgstr "" #: lang/json/help_from_json.py msgid " There are many others out there... search for them!" -msgstr "另外還有許多不同的東西...找找看吧!" +msgstr "另外還有許多不同的東西… 找找看吧!" #: lang/json/help_from_json.py msgid "" @@ -64890,7 +65163,7 @@ msgstr "" #: lang/json/help_from_json.py msgid "<3>: Description of gun types" -msgstr "" +msgstr "<3>: 槍械種類的描述" #: lang/json/help_from_json.py msgid "" @@ -64927,7 +65200,7 @@ msgid "" "The biggest drawback to shotguns is their noisiness. They are very loud, and impossible to silence. A shot that kills one zombie might attract three more! Because of this, shotguns are best reserved for emergencies." msgstr "" "( 霰彈槍\n" -"霰彈槍是遊戲中其中一種強大的武器, 擁有一擊必殺的能力。可使用獵鳥霰彈及獵鹿霰彈來簡單的命中怪物。然而, 這武器對付裝甲是相當沒有效率的, 甚至有些裝甲的怪物對於獵鹿霰彈的攻擊是免疫的。而獨頭霰彈能夠解決這個問題;同時也能加長射程。\n" +"霰彈槍是遊戲中其中一種強大的武器, 擁有一擊必殺的能力。可使用獵鳥霰彈及獵鹿霰彈來簡單的命中怪物。然而, 這武器對付裝甲是相當沒有效率的, 甚至有些裝甲的怪物對於獵鹿霰彈的攻擊是免疫的。而獨頭霰彈能夠解決這個問題, 同時也能加長射程。\n" "霰彈槍的缺點就是造成的聲音過大。非常大的聲音, 以致於無法低調行動。只要對著殭屍射擊了一發, 就會吸引附近全部的殭屍! 正因如此, 霰彈槍最好留在緊急的時候才使用。" #: lang/json/help_from_json.py @@ -64936,7 +65209,7 @@ msgid "" "Submachine guns are small weapons (some are barely larger than a handgun), designed for relatively close combat and the ability to spray large amounts of bullets. However, they are more effective when firing single shots, so use discretion. They mainly use the 9mm and .45 ammunition; however, other SMGs exist. They reload moderately quickly, and are suitable for close or medium-long range combat." msgstr "" "( 衝鋒槍\n" -"衝鋒槍是一種小型的武器 (有些甚至比手槍還小), 是設計在近距離戰鬥時快速射擊出大量子彈的武器。然而, 在單發射擊時也很有效, 所以要斟酌使用。通常使用 9mm 或 .45 口徑的彈藥;另外也有其他口徑的衝鋒槍。衝鋒槍能夠快速的重新裝填, 並且適合用在近距離或中長程的戰鬥上。" +"衝鋒槍是一種小型的武器 (有些甚至比手槍還小), 設計來在近距離戰鬥時快速射擊出大量的子彈。然而, 在單發射擊時也很有效, 所以要斟酌使用。通常使用 9mm 或 .45 口徑的彈藥, 另外也有其他口徑的衝鋒槍。衝鋒槍能夠快速的重新裝填, 並且適合用在近距離或中長程的戰鬥上。" #: lang/json/help_from_json.py msgid "" @@ -64944,7 +65217,7 @@ msgid "" "Hunting rifles are popular for their superior range and accuracy. What's more, their scopes or sights make shots fired at targets more than 10 tiles away as accurate as those with a shorter range. However, they are very poor at hitting targets 4 squares or less from the player. Unlike assault rifles, hunting rifles have no automatic fire. They are also slow to reload and fire, so when facing a large group of nearby enemies, they are not the best pick." msgstr "" "( 來福獵槍\n" -"來福獵槍的優勢在其超群的射程以及命中率。更重要的是, 透過其瞄準鏡或是覘孔能夠順利的擊中10格以外的目標。然而, 在 4 格內的目標卻很不容易擊中。不像突擊步槍, 來福獵槍沒有全自動連發射擊。同時其裝填與射擊速度都很慢, 所以當面對一大隊敵人的時候, 你還是換個武器吧。" +"來福獵槍的優勢在其超群的射程以及命中率。更重要的是, 透過其瞄準鏡或是覘孔能夠順利的擊中 10 格以外的目標。然而, 在 4 格內的目標卻很不容易擊中。不像突擊步槍, 來福獵槍沒有全自動連發射擊。同時其裝填與射擊速度都很慢, 所以當面對一大隊敵人的時候, 你還是換個武器吧。" #: lang/json/help_from_json.py msgid "" @@ -64953,8 +65226,8 @@ msgid "" "Assault rifles are an excellent choice for medium or long range combat, or even close-range bursts again a large number of enemies. They are difficult to use, and are best saved for skilled riflemen." msgstr "" "( 突擊步槍\n" -"突擊步槍與來福獵槍有許多相似點;他們同樣都很適合進行遠距離戰鬥, 有著相似的加成與懲罰。但不像來福獵槍, 突擊步槍能夠使用全自動連發射擊。突擊步槍的命中率比來福獵槍稍微低了點, 而使用連發射擊時命中率更低, 所以當你的技能較高的時候再來使用會比較好。\n" -"突擊步槍是中長成戰鬥的好選擇, 而近距離時也能利用連發的大量子彈來對付大量的敵人。雖然使用門檻較高, 但是在熟手上是個好用的武器。" +"突擊步槍與來福獵槍有許多相似點, 他們同樣都很適合進行遠距離戰鬥, 有著相似的加成與懲罰。但不像來福獵槍, 突擊步槍能夠使用全自動連發射擊。突擊步槍的命中率比來福獵槍稍微低了點, 而使用連發射擊時命中率更低, 所以當你的技能較高的時候再來使用會比較好。\n" +"突擊步槍是中長程戰鬥的好選擇, 而近距離時也能利用連發的大量子彈來對付大量的敵人。雖然使用門檻較高, 但是在熟手上是個好用的武器。" #: lang/json/help_from_json.py msgid "" @@ -64962,7 +65235,7 @@ msgid "" "Machine guns are one of the most powerful firearms available. They are even larger than assault rifles, and make poor melee weapons; however, they are capable of holding 100 or more rounds of highly-damaging ammunition. They are not built for accuracy, and firing single rounds is not very effective. However, they also possess a very high rate of fire and somewhat low recoil, making them very good at clearing out large numbers of enemies." msgstr "" "( 機槍\n" -"機槍是遊戲中其中一類強力的槍械。他們的體積比突擊步槍大很多, 因此沒辦法拿來當近戰武器;但是他們能夠裝填高達 100 發以上的高傷害子彈。這種武器不是已高命中率來設計的, 所以單發射擊沒什麼效率。然而, 他們卻能以極高的射擊速度與低後座力, 來達成掃除大量敵人的任務。" +"機槍是遊戲中其中一類強力的槍械。他們的體積比突擊步槍大很多, 因此沒辦法拿來當近戰武器, 但是他們能夠裝填高達 100 發以上的高傷害子彈。這種武器不是已高命中率來設計的, 所以單發射擊沒什麼效率。然而, 他們卻能以極高的射擊速度與低後座力, 來達成掃除大量敵人的任務。" #: lang/json/help_from_json.py msgid "" @@ -64972,7 +65245,7 @@ msgid "" msgstr "" "( 能量武器\n" "能量武器是對於各種步槍或手槍, 只要是發射雷射, 電漿, 或是其他發射能量彈武器的總稱。他們在災變發生時才剛研發出來, 因此非常稀少。\n" -"能量武器完全沒有後座力;幾乎是靜音的, 並且能夠對於遠距離的目標造成大量傷害。而能量武器的弱點就是彈藥相當稀少;因此要保留彈藥, 除非到了非用不可的地步。" +"能量武器完全沒有後座力, 幾乎是靜音的, 並且能夠對於遠距離的目標造成大量傷害。而能量武器的弱點就是彈藥相當稀少, 因此要保留彈藥, 除非到了非用不可的地步。" #: lang/json/help_from_json.py msgid "<4>: FAQ (contains spoilers!)" @@ -64983,8 +65256,8 @@ msgid "" "Q: What is Safe Mode, and why does it prevent me from moving?\n" "A: Safe Mode is a way to guarantee that you won't die by holding a movement key down. When a monster comes into view, your movement will be ignored until Safe Mode is turned off with the ! key. This ensures that the sudden appearance of a monster won't catch you off guard." msgstr "" -"Q: 什麼是安全模式, 為啥會讓我無法移動?\n" -"A: 安全模式是能夠讓你不會因為按著一個方向太久, 結果等放掉才發現已經被怪物殺死的一個機制。當一個怪物進入視野的時候, 你的所有移動會被忽略, 直到你用 '!' 把安全模式關閉。這樣能保證不會有怪物在你大意的時候追上你。" +"Q: 什麼是安全模式, 為什麼會讓我無法移動?\n" +"A: 安全模式是一個保障你不會因為按住了移動鍵而死掉的機制。當怪物進入視野的時候, 你的移動會被忽略直到你按 ! 把安全模式關閉。這可以確保突然出現的怪物不會讓你措手不及。" #: lang/json/help_from_json.py msgid "" @@ -64992,7 +65265,7 @@ msgid "" "A: Lots of the food found in towns is perishable and will only last a few days after the start of a new game. The electricity went out several days ago so fruit, milk and others are the first to go bad. After the first couple of days, you should switch to canned food, jerky, and hunting. Also, you should make sure to cook any food and purify any water you hunt up as it may contain parasites or otherwise be unsafe." msgstr "" "Q: 為啥好像我每次吃東西都會生病! 我哪裡做錯了?\n" -"A: 許多的在城鎮中找到的食物都是容易腐爛的, 而只能夠在從開始遊戲時保鮮一段時間而已。電力供應在數天前便消失了, 所以水果、牛奶以及其他的食物都會最快腐壞。當過了一些日子後, 你應該換成吃罐頭食品、肉乾並且進行狩獵。你也應該確保用淨化過的水來烹調你獵捕的食物, 不然有可能有寄生蟲或其他不安全的因素。" +"A: 許多的在城鎮中找到的食物都是容易腐敗的, 而只能夠在從開始遊戲時保鮮一段時間而已。電力供應在數天前便消失了, 所以水果、牛奶以及其他的食物都會最快腐敗。當過了一些日子後, 你應該換成吃罐頭食品、肉乾並且進行狩獵。你也應該確保用淨化過的水來烹調你獵捕的食物, 不然有可能有寄生蟲或其他不安全的因素。" #: lang/json/help_from_json.py msgid "" @@ -65024,7 +65297,7 @@ msgid "" "A: Your swimming ability is reduced greatly by the weight you are carrying, and is also adversely affected by the clothing you wear. Until you reach a high level of the swimming skill, you'll need to drop your equipment and remove your clothing to swim, making it a last-ditch escape plan." msgstr "" "Q: 為什麼我想要游泳都浮不起來?\n" -"A: 你的游泳能力會被你身上的負重給嚴重影響, 另外你穿的衣物也會影響。你必須要丟下你的裝備, 並脫光光才能游泳, 除非你的游泳技能達到一個水平。把游泳當成最後的逃命手段吧。" +"A: 你的游泳能力會被你身上的負重給嚴重影響, 另外你穿的衣物也會影響。你必須丟下你的裝備, 並且脫光光才能游泳, 除非你的游泳技能達到一個水平。把游泳當成最後的逃命手段吧。" #: lang/json/help_from_json.py msgid "" @@ -65046,7 +65319,7 @@ msgid "" "A: Check the difficulty of the recipe, and the primary skill used; your skill level should be around one and a half times the difficulty to be confident that it will succeed." msgstr "" "Q: 為什麼我製作物品老是失敗?\n" -"A: 檢查一下配方的難度, 以及需求的技能;你的技能應該要至少達到需求的一半以上才容易成功。" +"A: 檢查一下配方的難度, 以及需求的技能。你的技能應該要至少達到需求的一半以上才容易成功。" #: lang/json/help_from_json.py msgid "" @@ -65090,11 +65363,11 @@ msgstr "" #: lang/json/item_action_from_json.py msgid "Repair cotton/leather/wool/Nomex/fur" -msgstr "修復 棉/皮革/羊毛/諾梅克斯/毛皮" +msgstr "修理棉布/皮革/羊毛/諾梅克斯/毛皮" #: lang/json/item_action_from_json.py msgid "Repair metal/plastic/kevlar" -msgstr "修復 金屬/塑膠/凱夫勒" +msgstr "修理金屬/塑膠/凱夫勒" #: lang/json/item_action_from_json.py msgid "Modify Clothing" @@ -65146,7 +65419,7 @@ msgstr "加熱食物 (使用它)" #: lang/json/item_action_from_json.py msgid "Repair wood/paper/bone/chitin" -msgstr "修理木製/紙製/骨製/甲殼製的物品" +msgstr "修理木頭/紙張/骨頭/甲殼" #: lang/json/item_action_from_json.py msgid "Attach as toolmod" @@ -65247,15 +65520,15 @@ msgstr "附掛" #: lang/json/item_action_from_json.py msgid "Consume" -msgstr "消耗" +msgstr "食用" #: lang/json/item_action_from_json.py msgid "Use camera" -msgstr "" +msgstr "使用相機" #: lang/json/item_action_from_json.py msgid "Pour out" -msgstr "倒出來" +msgstr "倒出" #: lang/json/item_action_from_json.py msgid "Capture/place" @@ -65273,6 +65546,10 @@ msgstr "咀嚼" msgid "Clear rubble" msgstr "清理瓦礫" +#: lang/json/item_action_from_json.py +msgid "Flip" +msgstr "" + #: lang/json/item_action_from_json.py msgid "Snort coke" msgstr "" @@ -65301,6 +65578,11 @@ msgstr "吹響" msgid "Make it talk" msgstr "讓它說話" +#: lang/json/item_action_from_json.py +msgctxt "ECIG" +msgid "Smoke" +msgstr "抽菸" + #: lang/json/item_action_from_json.py msgid "Take off" msgstr "脫掉" @@ -65342,6 +65624,10 @@ msgstr "吸入" msgid "Drill" msgstr "鑽穿" +#: lang/json/item_action_from_json.py src/options.cpp +msgid "Ask" +msgstr "詢問" + #: lang/json/item_action_from_json.py lang/json/item_action_from_json.py #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Read" @@ -65384,8 +65670,9 @@ msgid "Squeeze" msgstr "擠壓" #: lang/json/item_action_from_json.py +msgctxt "PORTABLE_GAME" msgid "Play" -msgstr "玩" +msgstr "遊玩" #: lang/json/item_action_from_json.py msgid "Put up" @@ -65399,7 +65686,7 @@ msgstr "測量輻射" #: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py #: src/game_inventory.cpp msgid "..." -msgstr "..." +msgstr "…" #: lang/json/item_action_from_json.py msgid "Control an RC car" @@ -65421,6 +65708,11 @@ msgstr "刮鬍子" msgid "Siphon" msgstr "抽取" +#: lang/json/item_action_from_json.py +msgctxt "SMOKING" +msgid "Smoke" +msgstr "抽菸" + #: lang/json/item_action_from_json.py msgid "Write something" msgstr "寫字" @@ -65473,6 +65765,11 @@ msgstr "裝上/清空 子彈" msgid "Make some noise" msgstr "弄點聲音" +#: lang/json/item_action_from_json.py +msgctxt "musical_instrument" +msgid "Play" +msgstr "遊玩" + #: lang/json/item_action_from_json.py msgid "Activate/deactivate" msgstr "啟動/取消" @@ -65511,14 +65808,14 @@ msgstr "這件裝備有鬧鐘功能。" msgid "" "This clothing won't hinder special attacks that involve mutated " "anatomy." -msgstr "這件衣物並不會妨礙你身上畸形的身體部位進行特殊攻擊。" +msgstr "這件衣物不會妨礙你身上畸形部位進行特殊攻擊。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "" "This item can be activated or reloaded from adjacent tile without picking it" " up." -msgstr "" +msgstr "這個物品可以從相鄰的格子啟動或裝填, 而不用撿起它。" #: lang/json/json_flag_from_json.py msgid "" @@ -65539,20 +65836,20 @@ msgstr "背包和外衣之上的東西的衣物層級。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "This gear is strapped onto you." -msgstr "這件裝備能掛在你身上。" +msgstr "這件裝備可以繫結在身上。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "" "A follower could make use of this CBM if installed" " properly." -msgstr "" +msgstr "如果安裝正確, 你的同伴可以使用這個生化插件。" #: lang/json/json_flag_from_json.py msgid "" "Blinds the wearer while worn, and provides nominal protection vs flashbang " "flashes." -msgstr "穿著時會使佩戴者看不見;對閃光彈有著虛有其表的防護力。" +msgstr "穿著時會使佩戴者看不見, 對閃光彈有著虛有其表的防護力。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -65562,7 +65859,7 @@ msgstr "這件裝備會阻擋視線, 讓你完全看不見 unchanged. #: lang/json/json_flag_from_json.py msgid "This item can be used to block attacks when worn." -msgstr "穿戴這件物品可以格檔攻擊。" +msgstr "穿著這件物品可以格檔攻擊。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -65621,7 +65918,7 @@ msgstr "" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "This tastes better while hot." -msgstr "" +msgstr "這個食物加熱後嚐起來味道更好。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -65644,7 +65941,7 @@ msgstr "如果玩家具有時尚狂人特質, 穿著這件衣物會給予士氣 #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "This piece of clothing is fancy." -msgstr "這一件衣物很花俏。" +msgstr "這件衣物很花俏。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -65690,7 +65987,7 @@ msgstr "" msgid "" "This clothing prevents going underwater including both " "drowning and diving." -msgstr "這件衣物防止你沉入水中, 令你不會溺水無法潛水。" +msgstr "這件衣物防止你沉入水下, 讓你不會溺水無法潛水。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -65716,7 +66013,7 @@ msgstr "這件裝備能完全保護不受任何氣體影 msgid "" "This piece of clothing has a hood to keep your head warm if " "your head is unencumbered." -msgstr "這一件衣物有兜帽, 能夠在頭部沒有累贅時保暖。" +msgstr "這件衣物有兜帽, 能在頭部沒有累贅時提供保暖。" #: lang/json/json_flag_from_json.py msgid "" @@ -65743,7 +66040,7 @@ msgstr "" #: lang/json/json_flag_from_json.py msgid "" "Prevents repairing of this item even if otherwise suitable tools exist." -msgstr "避免修復此物品, 即使存在合適的工具。" +msgstr "無法修理此物品, 即使存在合適的工具。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -65759,20 +66056,20 @@ msgstr "外衣層。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "This gear is generally worn over clothing." -msgstr "這件裝備一般是穿在衣服之上的。" +msgstr "這件裝備可以穿戴在其他衣物的外層。" #: lang/json/json_flag_from_json.py msgid "" "Can always be worn no matter encumbrance/mutations/bionics/etc., but " "prevents any other clothing being worn over this." -msgstr "總是能穿在身上 (不受 累贅/突變/生化插件等 影響), 但無法在它上面穿上任何服裝。" +msgstr "總是能夠穿戴而無視累贅/突變/生化插件… 等, 但無法在它外面穿戴任何衣物。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "" "This clothing is large enough to accommodate abnormally large mutated " "anatomy." -msgstr "這件衣服大到足以容納異常大的畸形的身體部位。" +msgstr "這件衣物的尺寸大了一號, 足以容納異常大的畸形部位。" #: lang/json/json_flag_from_json.py msgid "" @@ -65791,14 +66088,14 @@ msgstr "這件裝備會降低音量到安全範圍。" msgid "" "Increases warmth for hands if the player's hands are cold and the player is " "wielding nothing." -msgstr "如果玩家的雙手覺得冷, 並且未有手持物品, 能增加手掌的保暖度。" +msgstr "如果玩家的雙手覺得冷, 並且沒有手持物品時, 增加手掌的保暖度。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "" "This clothing has pockets to warm your hands when you are " "wielding nothing." -msgstr "這件服裝有保暖的口袋, 手掌在沒持有物品時能夠保暖。" +msgstr "這件衣物有口袋, 能在手掌沒有持物時提供保暖。" #: lang/json/json_flag_from_json.py msgid "" @@ -65869,12 +66166,12 @@ msgstr "內衣層。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "This clothing lies close to the skin." -msgstr "這件衣物屬於貼身衣物。" +msgstr "這件衣物可以貼身穿著。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "This clothing is restrictive and slows your movement speed." -msgstr "這件衣服相當拘束並降低你的移動速度。" +msgstr "這件衣物相當拘束並且會降低你的移動速度。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -65902,7 +66199,7 @@ msgstr "這件衣物可以幫你遮擋刺眼的陽光。" msgid "" "Gives an additional moral bonus over FANCY if the player has the Stylish " "trait." -msgstr "" +msgstr "花俏的衣物能夠給予擁有時尚狂人特質的角色額外的士氣獎勵。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -65942,7 +66239,7 @@ msgstr "" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py msgid "This gear is worn on or around your waist." -msgstr "這件裝備可以穿戴或綁在你的腰部。" +msgstr "這件裝備可以穿戴或環繞在腰部。" #: lang/json/json_flag_from_json.py msgid "Acts as a watch and allows the player to see actual time." @@ -65963,7 +66260,7 @@ msgstr "防止被覆蓋的身體部分在任何情況下弄濕。" msgid "" "This clothing won't let water through. Unless you jump in the " "river or something like that." -msgstr "這件衣物並不透水, 除非你跳進河裡。" +msgstr "這件衣物是防水的, 除非你跳進河裡。" #: lang/json/json_flag_from_json.py msgid "" @@ -65976,7 +66273,7 @@ msgstr "" msgid "" "This clothing performs well even when soaking wet." " This can feel good." -msgstr "這件衣物即使濕透了也不折損它的機能性。而且還會感覺不錯。" +msgstr "這件衣物即使濕透也不折損它的機能性。而且還會感覺不錯。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -66046,7 +66343,7 @@ msgstr "" #: lang/json/json_flag_from_json.py msgid "This bionic can provide power to powered armor." -msgstr "" +msgstr "這個生化插件可以提供能量給動力裝甲。" #. ~ Please leave anything in unchanged. #: lang/json/json_flag_from_json.py @@ -66231,7 +66528,7 @@ msgstr "向下平移" #: lang/json/keybinding_from_json.py src/construction.cpp src/veh_interact.cpp msgid "Filter" -msgstr "篩選器" +msgstr "篩選" #: lang/json/keybinding_from_json.py msgid "Cancel menu" @@ -66239,7 +66536,7 @@ msgstr "取消選單" #: lang/json/keybinding_from_json.py msgid "Show description of melee style" -msgstr "" +msgstr "顯示招式詳細資訊" #: lang/json/keybinding_from_json.py msgid "Pan left" @@ -66295,11 +66592,11 @@ msgstr "下個物品" #: lang/json/keybinding_from_json.py msgid "Unmark selected item" -msgstr "取消標記選擇的物品" +msgstr "取消標記選中的物品" #: lang/json/keybinding_from_json.py msgid "Mark selected item" -msgstr "標記選擇的物品" +msgstr "標記選中的物品" #: lang/json/keybinding_from_json.py msgid "Add rule" @@ -66315,7 +66612,7 @@ msgstr "複製規則" #: lang/json/keybinding_from_json.py msgid "Move rule global <-> character" -msgstr "移動通用規則<->角色" +msgstr "在分頁間移動規則" #: lang/json/keybinding_from_json.py msgid "Enable rule" @@ -66327,11 +66624,11 @@ msgstr "停用規則" #: lang/json/keybinding_from_json.py msgid "Move rule up" -msgstr "規則向上移動" +msgstr "向上移動規則" #: lang/json/keybinding_from_json.py msgid "Move rule down" -msgstr "規則向下移動" +msgstr "向下移動規則" #: lang/json/keybinding_from_json.py msgid "Test rule" @@ -66339,15 +66636,15 @@ msgstr "測試規則" #: lang/json/keybinding_from_json.py msgid "Enable auto pickup option" -msgstr "啟動自動撿取選項" +msgstr "切換自動撿取選項" #: lang/json/keybinding_from_json.py msgid "Add default ruleset" -msgstr "添加預設規則集" +msgstr "新增預設規則集合" #: lang/json/keybinding_from_json.py msgid "Enable safemode option" -msgstr "啟動安全模式選項" +msgstr "切換安全模式選項" #: lang/json/keybinding_from_json.py msgid "Display Usage Help" @@ -66355,23 +66652,31 @@ msgstr "顯示使用說明" #: lang/json/keybinding_from_json.py msgid "Select armor for moving" -msgstr "移動某個裝甲" +msgstr "選擇裝備以重新排序" #: lang/json/keybinding_from_json.py msgid "Change side armor is worn on" -msgstr "把裝甲穿在另一側" +msgstr "把裝備穿到另一側" #: lang/json/keybinding_from_json.py msgid "Assign invlets to armor" -msgstr "指定特定裝甲的穿著順序" +msgstr "自動重定裝備代碼" + +#: lang/json/keybinding_from_json.py +msgid "Sort armor into natural layer order" +msgstr "自動排序所有裝備" #: lang/json/keybinding_from_json.py msgid "Equip armor from inventory" -msgstr "穿戴物品欄中的裝備" +msgstr "從物品欄穿戴裝備" + +#: lang/json/keybinding_from_json.py +msgid "Equip armor from inventory at this position" +msgstr "從物品欄穿戴裝備到選中的位置" #: lang/json/keybinding_from_json.py msgid "Unequip selected armor" -msgstr "移除所選的裝甲" +msgstr "脫掉選中的裝備" #: lang/json/keybinding_from_json.py msgid "Display Help" @@ -66379,7 +66684,7 @@ msgstr "顯示說明" #: lang/json/keybinding_from_json.py msgid "Reset filter" -msgstr "重置篩選器" +msgstr "重置篩選" #: lang/json/keybinding_from_json.py msgid "Cycle display mode" @@ -66387,11 +66692,11 @@ msgstr "切換顯示模式" #: lang/json/keybinding_from_json.py msgid "Show recipe result" -msgstr "顯示合成的結果" +msgstr "顯示物品描述" #: lang/json/keybinding_from_json.py msgid "Hide/show recipe" -msgstr "" +msgstr "顯示/隱藏配方" #: lang/json/keybinding_from_json.py msgid "Batch crafting" @@ -66399,11 +66704,11 @@ msgstr "批量製作" #: lang/json/keybinding_from_json.py msgid "Related recipes" -msgstr "" +msgstr "相關配方" #: lang/json/keybinding_from_json.py msgid "Center On Character" -msgstr "角色居中" +msgstr "角色置中" #: lang/json/keybinding_from_json.py msgid "Go Up" @@ -66415,19 +66720,19 @@ msgstr "往下" #: lang/json/keybinding_from_json.py msgid "Next level" -msgstr "下一層" +msgstr "下個關卡" #: lang/json/keybinding_from_json.py msgid "Previous level" -msgstr "上一層" +msgstr "上個關卡" #: lang/json/keybinding_from_json.py msgid "Undo move" -msgstr "回復上一個動作" +msgstr "取消移動" #: lang/json/keybinding_from_json.py msgid "Create New level" -msgstr "創建新一層" +msgstr "建立新關卡" #: lang/json/keybinding_from_json.py msgid "Toggle Flag" @@ -66435,11 +66740,11 @@ msgstr "切換旗標" #: lang/json/keybinding_from_json.py msgid "Toggle lights" -msgstr "" +msgstr "切換燈光" #: lang/json/keybinding_from_json.py msgid "Reset level" -msgstr "" +msgstr "重置關卡" #: lang/json/keybinding_from_json.py msgid "Confirm Choice" @@ -66447,35 +66752,35 @@ msgstr "確認選擇" #: lang/json/keybinding_from_json.py msgid "Save mods as default" -msgstr "設定為預設模組" +msgstr "儲存模組讀取順序為預設值" #: lang/json/keybinding_from_json.py msgid "View full mod description" -msgstr "" +msgstr "顯示完整模組描述" #: lang/json/keybinding_from_json.py msgid "Move selected mod up" -msgstr "將所選定的模組順序提高" +msgstr "提高模組讀取順序" #: lang/json/keybinding_from_json.py msgid "Move selected mod down" -msgstr "將所選定的模組順序降低" +msgstr "降低模組讀取順序" #: lang/json/keybinding_from_json.py msgid "Move to next category tab" -msgstr "移動至下個目錄分頁" +msgstr "移到下個分類" #: lang/json/keybinding_from_json.py msgid "Move to previous category tab" -msgstr "移動至上個目錄分頁" +msgstr "移到上個分類" #: lang/json/keybinding_from_json.py msgid "Pick random world name" -msgstr "挑選隨機世界名稱" +msgstr "隨機挑選世界名稱" #: lang/json/keybinding_from_json.py msgid "Exit worldgen screen" -msgstr "離開世界生成選單" +msgstr "離開創造世界畫面" #: lang/json/keybinding_from_json.py msgid "Delete Note" @@ -66483,7 +66788,7 @@ msgstr "刪除註記" #: lang/json/keybinding_from_json.py msgid "Create/Edit Note" -msgstr "新增/編輯 註記" +msgstr "新增/編輯註記" #: lang/json/keybinding_from_json.py msgid "List Notes" @@ -66507,7 +66812,7 @@ msgstr "切換屍潮顯示" #: lang/json/keybinding_from_json.py msgid "Toggle Explored" -msgstr "切換已探索標記" +msgstr "切換探索標記" #: lang/json/keybinding_from_json.py msgid "Place Overmap Terrain" @@ -66515,7 +66820,7 @@ msgstr "放置大地圖地形" #: lang/json/keybinding_from_json.py msgid "Place Overmap Special" -msgstr "放置大地圖特殊" +msgstr "放置大地圖特殊地點" #: lang/json/keybinding_from_json.py msgid "Rotate" @@ -66583,11 +66888,11 @@ msgstr "鼠標移動" #: lang/json/keybinding_from_json.py msgid "Go to next tab" -msgstr "到下個分頁" +msgstr "移到下個分頁" #: lang/json/keybinding_from_json.py msgid "Go to prev tab" -msgstr "到上個分頁" +msgstr "移到上個分頁" #: lang/json/keybinding_from_json.py msgid "Toggle Fast Scroll" @@ -66611,7 +66916,7 @@ msgstr "改變性別" #: lang/json/keybinding_from_json.py msgid "Save template" -msgstr "儲存模版" +msgstr "儲存模板" #: lang/json/keybinding_from_json.py msgid "Start" @@ -66619,15 +66924,15 @@ msgstr "開始" #: lang/json/keybinding_from_json.py msgid "Delete template" -msgstr "刪除模版" +msgstr "刪除模板" #: lang/json/keybinding_from_json.py msgid "Reroll Random Character" -msgstr "重製隨機角色" +msgstr "重擲隨機角色" #: lang/json/keybinding_from_json.py msgid "Reroll Random Character With Scenario" -msgstr "重製隨機角色的劇情" +msgstr "重擲隨機角色以及劇情" #: lang/json/keybinding_from_json.py msgid "Pick random character name" @@ -66635,15 +66940,15 @@ msgstr "隨機挑選角色名字" #: lang/json/keybinding_from_json.py msgid "Choose character start location" -msgstr "選擇角色生成開始的地點" +msgstr "選擇角色起始地點" #: lang/json/keybinding_from_json.py msgid "Exit new character screen" -msgstr "離開角色生成選單" +msgstr "離開創造角色選單" #: lang/json/keybinding_from_json.py msgid "Toggle sorting order" -msgstr "切換排序順序" +msgstr "改變排序模式" #: lang/json/keybinding_from_json.py msgid "Scroll description up" @@ -66699,31 +67004,31 @@ msgstr "為某一臺車輛重新指定標籤" #: lang/json/keybinding_from_json.py msgid "Scroll up through fuel list" -msgstr "" +msgstr "向上捲動燃料列表" #: lang/json/keybinding_from_json.py msgid "Scroll down through fuel list" -msgstr "" +msgstr "向下捲動燃料列表" #: lang/json/keybinding_from_json.py msgid "Scroll up through vehicle part descriptions" -msgstr "" +msgstr "向上捲動車輛零件描述" #: lang/json/keybinding_from_json.py msgid "Scroll down through vehicle part descriptions" -msgstr "" +msgstr "向下捲動車輛零件描述" #: lang/json/keybinding_from_json.py msgid "Scroll up through vehicle overview" -msgstr "" +msgstr "向上捲動車輛概覽" #: lang/json/keybinding_from_json.py msgid "Scroll down through vehicle overview" -msgstr "" +msgstr "向下捲動車輛概覽" #: lang/json/keybinding_from_json.py msgid "Toggle unavailable constructions" -msgstr "切換能建設的項目" +msgstr "切換能建造的項目" #: lang/json/keybinding_from_json.py msgid "Scroll to previous stage" @@ -66759,7 +67064,7 @@ msgstr "更改形狀" #: lang/json/keybinding_from_json.py msgid "Switch to move point / confirm" -msgstr "切換到移動點/確認" +msgstr "切換移動點/確認" #: lang/json/keybinding_from_json.py msgid "Edit traps" @@ -66807,15 +67112,15 @@ msgstr "向下移一大步" #: lang/json/keybinding_from_json.py msgid "Toggle category selection mode" -msgstr "切換目錄選擇模式" +msgstr "切換分類選擇模式" #: lang/json/keybinding_from_json.py msgid "Set item filter" -msgstr "" +msgstr "篩選" #: lang/json/keybinding_from_json.py msgid "Toggle activate/examine" -msgstr "切換 使用/檢視" +msgstr "切換啟動/檢視" #: lang/json/keybinding_from_json.py src/npcmove.cpp msgid "Pause" @@ -66859,7 +67164,7 @@ msgstr "砸附近的地形" #: lang/json/keybinding_from_json.py msgid "Examine Nearby Terrain" -msgstr "查看附近的地形" +msgstr "檢查附近的地形" #: lang/json/keybinding_from_json.py msgid "Advanced Inventory management" @@ -66871,7 +67176,7 @@ msgstr "撿起物品" #: lang/json/keybinding_from_json.py msgid "Grab something nearby" -msgstr "抓取鄰近的某物" +msgstr "拖行鄰近的某物" #: lang/json/keybinding_from_json.py msgid "Haul items along the ground" @@ -66911,7 +67216,7 @@ msgstr "打開物品欄" #: lang/json/keybinding_from_json.py msgid "Compare two Items" -msgstr "比較兩個物品" +msgstr "比較物品" #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Swap Inventory Letters" @@ -66919,19 +67224,19 @@ msgstr "更換物品代碼" #: lang/json/keybinding_from_json.py msgid "Apply or Use Item" -msgstr "套用或使用物品" +msgstr "使用物品" #: lang/json/keybinding_from_json.py msgid "Apply or Use Wielded Item" -msgstr "套用或使用在手上的物品" +msgstr "使用手持中的物品" #: lang/json/keybinding_from_json.py msgid "Wear Item" -msgstr "穿起物品" +msgstr "穿戴物品" #: lang/json/keybinding_from_json.py msgid "Take Off Worn Item" -msgstr "脫掉受損的物品" +msgstr "脫掉物品" #: lang/json/keybinding_from_json.py msgid "Wield" @@ -66939,15 +67244,15 @@ msgstr "手持" #: lang/json/keybinding_from_json.py msgid "Select Martial Arts Style" -msgstr "選擇武術風格" +msgstr "選擇武術招式" #: lang/json/keybinding_from_json.py msgid "Reload Wielded Item" -msgstr "裝填手持的物品" +msgstr "裝填手持中的物品" #: lang/json/keybinding_from_json.py msgid "Unload or Empty Wielded Item" -msgstr "清空手持的物品" +msgstr "清空手持中的物品" #: lang/json/keybinding_from_json.py msgid "Throw Item" @@ -66955,11 +67260,11 @@ msgstr "投擲物品" #: lang/json/keybinding_from_json.py msgid "Fire Wielded Item" -msgstr "發射手持的物品" +msgstr "發射手持中的物品" #: lang/json/keybinding_from_json.py msgid "Toggle attack mode of Wielded Item" -msgstr "切換手持物品的攻擊模式" +msgstr "切換手持中的物品的攻擊模式" #: lang/json/keybinding_from_json.py msgid "Drop Item" @@ -66979,7 +67284,7 @@ msgstr "檢視/啟動 突變" #: lang/json/keybinding_from_json.py msgid "Re-layer armor/clothing" -msgstr "重新安排裝甲/衣物的層次" +msgstr "重新排序裝備層級" #: lang/json/keybinding_from_json.py msgid "Wait for Several Minutes" @@ -66991,11 +67296,11 @@ msgstr "製作物品" #: lang/json/keybinding_from_json.py msgid "Recraft last recipe" -msgstr "重複上一個製造" +msgstr "重複製作上一個配方" #: lang/json/keybinding_from_json.py msgid "Construct Terrain" -msgstr "建設地形" +msgstr "建造地形" #: lang/json/keybinding_from_json.py msgid "Disassemble items" @@ -67096,7 +67401,7 @@ msgstr "切換像素小地圖" #: lang/json/keybinding_from_json.py msgid "Reload Tileset" -msgstr "重新載入圖像包" +msgstr "重新讀取圖像包" #: lang/json/keybinding_from_json.py msgid "Toggle Auto Features" @@ -67148,7 +67453,7 @@ msgstr "視角向西北移動" #: lang/json/keybinding_from_json.py msgid "Burst-Fire Wielded Item" -msgstr "手持的物品切換成連發" +msgstr "切換手持中的物品為連發" #: lang/json/keybinding_from_json.py msgid "Craft as long as possible" @@ -67168,7 +67473,7 @@ msgstr "主選單" #: lang/json/keybinding_from_json.py src/input.cpp msgid "Keybindings" -msgstr "按鍵對應" +msgstr "熱鍵設定" #: lang/json/keybinding_from_json.py src/game.cpp msgid "Options" @@ -67196,11 +67501,11 @@ msgstr "切換移動模式 (走/跑)" #: lang/json/keybinding_from_json.py src/game_inventory.cpp msgid "Compare" -msgstr "比較" +msgstr "比較物品" #: lang/json/keybinding_from_json.py src/iexamine.cpp msgid "Examine" -msgstr "檢視" +msgstr "檢查" #: lang/json/keybinding_from_json.py msgid "Increase priority" @@ -67212,7 +67517,23 @@ msgstr "降低優先權" #: lang/json/keybinding_from_json.py msgid "Change sort order" -msgstr "改變排序順序" +msgstr "改變排序模式" + +#: lang/json/keybinding_from_json.py +msgid "Add to safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "Remove from safemode blacklist" +msgstr "" + +#: lang/json/keybinding_from_json.py +msgid "look around" +msgstr "" + +#: lang/json/keybinding_from_json.py src/field.cpp +msgid "fire" +msgstr "火" #: lang/json/keybinding_from_json.py msgid "List items and monsters" @@ -67220,21 +67541,21 @@ msgstr "列出物品及怪物" #: lang/json/keybinding_from_json.py msgid "Reassign invlet" -msgstr "重新指定穿著層次" +msgstr "重定代碼" #: lang/json/keybinding_from_json.py src/construction.cpp src/faction.cpp #: src/game.cpp src/mission_companion.cpp msgid "Move cursor up" -msgstr "移動游標向上" +msgstr "向上移動游標" #: lang/json/keybinding_from_json.py src/construction.cpp src/faction.cpp #: src/game.cpp src/mission_companion.cpp msgid "Move cursor down" -msgstr "移動游標向下" +msgstr "向下移動游標" #: lang/json/keybinding_from_json.py msgid "Exit this keybinding screen" -msgstr "" +msgstr "離開熱鍵設定畫面" #: lang/json/keybinding_from_json.py msgid "Remove bindings" @@ -67242,11 +67563,11 @@ msgstr "移除熱鍵" #: lang/json/keybinding_from_json.py msgid "Add local keybinding" -msgstr "自訂熱鍵" +msgstr "新增本地熱鍵" #: lang/json/keybinding_from_json.py msgid "Add global keybinding" -msgstr "新增通用熱鍵" +msgstr "新增全域熱鍵" #: lang/json/keybinding_from_json.py msgid "Add zone" @@ -67258,11 +67579,11 @@ msgstr "移除區域" #: lang/json/keybinding_from_json.py msgid "Move zone up" -msgstr "區域向上移動" +msgstr "向上移動區域" #: lang/json/keybinding_from_json.py msgid "Move zone down" -msgstr "區域向下移動" +msgstr "向下移動區域" #: lang/json/keybinding_from_json.py msgid "Show zone on map" @@ -67270,7 +67591,7 @@ msgstr "在地圖上顯示區域" #: lang/json/keybinding_from_json.py msgid "Enable zone" -msgstr "啟動區域" +msgstr "啟用區域" #: lang/json/keybinding_from_json.py msgid "Disable zone" @@ -67298,11 +67619,11 @@ msgstr "切換車輛" #: lang/json/keybinding_from_json.py msgid "Toggle auto-pickup for item" -msgstr "切換自動撿取物品功能" +msgstr "切換自動撿取物品" #: lang/json/keybinding_from_json.py msgid "Change sorting mode" -msgstr "改變排序類型" +msgstr "改變排序模式" #: lang/json/keybinding_from_json.py msgid "Move a single item" @@ -67314,7 +67635,7 @@ msgstr "移動多件物品" #: lang/json/keybinding_from_json.py msgid "Move item stack" -msgstr "移動物品堆疊" +msgstr "移動整堆物品" #: lang/json/keybinding_from_json.py msgid "Move all items" @@ -67322,67 +67643,67 @@ msgstr "移動所有物品" #: lang/json/keybinding_from_json.py msgid "Select items @ North-West" -msgstr "選擇物品 @ 西北" +msgstr "選擇 @ 西北" #: lang/json/keybinding_from_json.py msgid "Select items @ North" -msgstr "選擇物品 @ 北" +msgstr "選擇 @ 北" #: lang/json/keybinding_from_json.py msgid "Select items @ North-East" -msgstr "選擇物品 @ 東北" +msgstr "選擇 @ 東北" #: lang/json/keybinding_from_json.py msgid "Select items @ West" -msgstr "選擇物品 @ 西" +msgstr "選擇 @ 西" #: lang/json/keybinding_from_json.py msgid "Select items @ center" -msgstr "選擇物品 @ 中央" +msgstr "選擇 @ 中央" #: lang/json/keybinding_from_json.py msgid "Select items @ East" -msgstr "選擇物品 @ 東" +msgstr "選擇 @ 東" #: lang/json/keybinding_from_json.py msgid "Select items @ South-West" -msgstr "選擇物品 @ 西南" +msgstr "選擇 @ 西南" #: lang/json/keybinding_from_json.py msgid "Select items @ South" -msgstr "選擇物品 @ 南" +msgstr "選擇 @ 南" #: lang/json/keybinding_from_json.py msgid "Select items @ South-East" -msgstr "選擇物品 @ 東南" +msgstr "選擇 @ 東南" #: lang/json/keybinding_from_json.py msgid "Select items in inventory" -msgstr "選擇於物品欄的物品" +msgstr "選擇物品欄" #: lang/json/keybinding_from_json.py msgid "Select items @ all 9 fields" -msgstr "選擇以玩家為中心周圍9公格的區塊" +msgstr "選擇周圍地區" #: lang/json/keybinding_from_json.py msgid "Select items in dragged container" -msgstr "選擇於容器的物品" +msgstr "選擇拖行中的車輛" #: lang/json/keybinding_from_json.py msgid "Select items in container" -msgstr "選擇於容器的物品" +msgstr "選擇容器" #: lang/json/keybinding_from_json.py msgid "Select items currently worn" -msgstr "選擇正穿戴的物品" +msgstr "選擇穿戴中的物品" #: lang/json/keybinding_from_json.py msgid "Restore default layout" -msgstr "" +msgstr "復原預設佈局" #: lang/json/keybinding_from_json.py msgid "Save default layout" -msgstr "" +msgstr "儲存預設佈局" #: lang/json/keybinding_from_json.py msgid "Sew" @@ -67394,21 +67715,19 @@ msgstr "移除自訂顏色" #: lang/json/keybinding_from_json.py msgid "Load color template" -msgstr "載入顏色模板" +msgstr "讀取顏色模板" -#: lang/json/keybinding_from_json.py src/craft_command.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/veh_interact.cpp msgid "Yes" msgstr "是" -#: lang/json/keybinding_from_json.py src/craft_command.cpp src/options.cpp -#: src/veh_interact.cpp +#: lang/json/keybinding_from_json.py src/options.cpp src/veh_interact.cpp msgid "No" msgstr "否" #: lang/json/keybinding_from_json.py msgid "Ignore further distractions and finish" -msgstr "" +msgstr "忽略所有中斷事件並完成。" #: lang/json/keybinding_from_json.py msgid "Cancel popup" @@ -67416,7 +67735,7 @@ msgstr "" #: lang/json/keybinding_from_json.py src/pickup.cpp src/vehicle_use.cpp msgid "Control multiple electronics" -msgstr "" +msgstr "控制多個電子設備" #: lang/json/keybinding_from_json.py src/vehicle_use.cpp msgid "Control individual engines" @@ -67424,7 +67743,7 @@ msgstr "控制個別引擎" #: lang/json/keybinding_from_json.py src/pickup.cpp msgid "Fold vehicle" -msgstr "摺疊車輛" +msgstr "折疊車輛" #: lang/json/keybinding_from_json.py msgid "Release controls" @@ -67532,11 +67851,11 @@ msgstr "手動瞄準槍塔" #: lang/json/keybinding_from_json.py src/vehicle_use.cpp msgid "Aim automatic turrets" -msgstr "" +msgstr "自動化砲塔瞄準" #: lang/json/keybinding_from_json.py src/vehicle_use.cpp msgid "Aim individual turret" -msgstr "" +msgstr "單一砲塔瞄準" #: lang/json/keybinding_from_json.py src/vehicle_use.cpp msgid "Set turret targeting modes" @@ -67552,6 +67871,11 @@ msgstr "財政部整合電腦化銀行" msgid "Open Vault" msgstr "開啟保管庫" +#. ~ Computer name +#: lang/json/mapgen_from_json.py +msgid "High Security Consolidated Computerized Bank of the Treasury" +msgstr "" + #. ~ Sign #: lang/json/mapgen_from_json.py msgid "Closed at sunset." @@ -67905,7 +68229,7 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "SAND" -msgstr "" +msgstr "沙子" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -67925,7 +68249,7 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "CLAY" -msgstr "" +msgstr "黏土" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -68151,22 +68475,22 @@ msgstr "" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "GLASS" -msgstr "" +msgstr "玻璃" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "ALUMINUM" -msgstr "" +msgstr "鋁" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "PAPER" -msgstr "" +msgstr "紙" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "PLASTIC" -msgstr "" +msgstr "塑膠" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -68176,22 +68500,22 @@ msgstr "電子" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "COPPER" -msgstr "" +msgstr "銅" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "IRON" -msgstr "" +msgstr "鐵" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "BATTERIES" -msgstr "" +msgstr "電池" #. ~ Sign #: lang/json/mapgen_from_json.py msgid "STEEL" -msgstr "" +msgstr "鋼" #. ~ Sign #: lang/json/mapgen_from_json.py @@ -68247,7 +68571,8 @@ msgid "Emergency Message" msgstr "緊急訊息" #. ~ Computer option -#: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py +#: lang/json/mapgen_from_json.py lang/json/mapgen_from_json.py +#: lang/json/mission_def_from_json.py msgid "Disable External Power" msgstr "停用外置電源" @@ -68308,7 +68633,6 @@ msgstr "錯誤: 無法連上訊號" #. ~ Computer option #: lang/json/mapgen_from_json.py lang/json/mission_def_from_json.py -#: lang/json/mission_def_from_json.py msgid "Install Repeater Mod" msgstr "安裝中繼器模組" @@ -68335,7 +68659,7 @@ msgstr "" #. ~ Computer name #: lang/json/mapgen_from_json.py msgid "Operating Theatre Access Control" -msgstr "" +msgstr "手術室門禁控制" #. ~ Computer option #: lang/json/mapgen_from_json.py @@ -68455,7 +68779,7 @@ msgstr "" #. ~ Computer name #: lang/json/mapgen_from_json.py msgid "Laboratory Train Controls" -msgstr "" +msgstr "實驗室列車控制" #. ~ Computer option #: lang/json/mapgen_from_json.py @@ -68470,7 +68794,7 @@ msgstr "" #. ~ Computer name #: lang/json/mapgen_from_json.py msgid "Missile Control" -msgstr "" +msgstr "導彈控制" #. ~ Computer option #: lang/json/mapgen_from_json.py src/mapgen.cpp @@ -68484,7 +68808,7 @@ msgstr "解除飛彈" #: lang/json/martial_art_from_json.py msgid "No style" -msgstr "無招式" +msgstr "沒有招式" #. ~ Description for martial art 'No style' #: lang/json/martial_art_from_json.py @@ -68523,7 +68847,7 @@ msgid "" "Karate is a popular martial art, originating from Japan. It focuses on " "rapid, precise attacks, blocks, and fluid movement. A successful hit allows" " you an extra dodge and two extra blocks on the following round." -msgstr "空手道是來自於日本的有名流派。其專注於快速精準的攻擊阻擋及靈活的走位。攻擊命中能讓你在接下來的回合能夠增加額外的閃避及兩點的格擋。" +msgstr "空手道是來自於日本的有名武術。其專注於快速精準的攻擊阻擋及靈活的走位。攻擊命中能讓你在接下來的回合能夠增加額外的閃避及兩點的格擋。" #: lang/json/martial_art_from_json.py msgid "Karate Hit" @@ -68633,7 +68957,7 @@ msgid "" "damage and attacking boosts dodge. These bonuses stack up to three times " "each." msgstr "" -"源自於巴西的一種類舞蹈武術, 巴西戰舞注重於流暢的走位及掃踢。每走一步都能獲得命中與傷害加成, 而攻擊時又能獲得閃避加成;每種加成最多能堆疊三次。" +"源自於巴西的一種類舞蹈招式, 巴西戰舞注重於流暢的走位及掃踢。每走一步都能獲得命中與傷害加成, 而攻擊時又能獲得閃避加成, 每種加成最多能堆疊三次。" #: lang/json/martial_art_from_json.py msgid "Capoeira Tempo" @@ -68743,7 +69067,7 @@ msgid "" "wielded weapons. It also includes strength training; your blocks absorb " "extra damage the stronger you are." msgstr "" -"跆拳道是韓國的國家運動, 曾於20世紀用於南韓陸軍的訓練。它注重於踢擊技巧, 因此不會因手持武器獲益。它同時也包含了力量的訓練。你的力量越強, " +"跆拳道是韓國的國家運動, 曾於 20 世紀用於南韓陸軍的訓練。它注重於踢擊技巧, 因此不會因手持武器獲益。它同時也包含了力量的訓練。你的力量越強, " "每次格擋受到的傷害越小。" #. ~ Description of buff for martial art 'Taekwondo' @@ -68938,7 +69262,7 @@ msgid "" "techniques and jumping dodges. Dexterity determines the majority of your " "damage, rather than Strength; you also receive a dodge bonus the turn after " "moving a tile." -msgstr "少林五形拳的其中一式。鶴形拳使用複雜的手部技法及跳躍閃避。敏捷屬性能夠提昇此式的攻擊力, 而非力量屬性;同時你每走一步就能獲得閃避加成。" +msgstr "少林五形拳的其中一式。鶴形拳使用複雜的手部技法及跳躍閃避。敏捷屬性能夠提昇此式的攻擊力, 而非力量屬性。同時你每走一步就能獲得閃避加成。" #: lang/json/martial_art_from_json.py msgid "Crane's Precision" @@ -69028,7 +69352,7 @@ msgid "" "One of the five Shaolin animal styles. The Tiger focuses on relentless " "attacks above all else. Your Strength determines your accuracy, and your " "attacks do increasing damage as you continue attacking." -msgstr "少林五形拳的其中一式。虎形拳注重於連續進攻。力量屬性能夠提昇此式的命中率;連續的攻擊會使威力不斷提升。" +msgstr "少林五形拳的其中一式。虎形拳注重於連續進攻。力量屬性能夠提昇此式的命中率。連續的攻擊會使威力不斷提升。" #: lang/json/martial_art_from_json.py msgid "Tiger Fury" @@ -69077,7 +69401,7 @@ msgstr "蜈蚣毒" msgid "" "One of the Five Deadly Venoms. Centipede Style uses an onslaught of rapid " "strikes. Each attack you land increases your speed by 4." -msgstr "五毒門其中的一種拳法, 蜈蚣拳會施展快速而猛烈的攻擊, 每一次攻擊你都會提昇速度4點。" +msgstr "五毒門其中的一種拳法, 蜈蚣拳會施展快速而猛烈的攻擊, 每一次攻擊你都會提昇速度 4 點。" #: lang/json/martial_art_from_json.py msgid "Hundred-Hitter" @@ -69226,7 +69550,7 @@ msgstr "" #: lang/json/martial_art_from_json.py msgid "Displacement" -msgstr "" +msgstr "替換" #. ~ Description of buff 'Displacement' for martial art 'Medieval #. Swordsmanship' @@ -69306,7 +69630,7 @@ msgstr "粉碎的" #: lang/json/material_from_json.py msgid "Biosilicified Chitin" -msgstr "" +msgstr "生物矽化甲殼" #: lang/json/material_from_json.py msgid "cracked" @@ -69334,7 +69658,7 @@ msgstr "刮痕的" #: lang/json/material_from_json.py msgid "Budget Steel" -msgstr "" +msgstr "低價鋼材" #: lang/json/material_from_json.py msgid "Ceramic" @@ -69546,23 +69870,23 @@ msgstr "蔬菜" #: lang/json/material_from_json.py msgid "Tomato" -msgstr "" +msgstr "蕃茄" #: lang/json/material_from_json.py msgid "Bean" -msgstr "" +msgstr "豆子" #: lang/json/material_from_json.py msgid "Garlic" -msgstr "" +msgstr "大蒜" #: lang/json/material_from_json.py msgid "Nut" -msgstr "" +msgstr "堅果" #: lang/json/material_from_json.py msgid "Mushroom" -msgstr "" +msgstr "蘑菇" #: lang/json/material_from_json.py src/defense.cpp msgid "Water" @@ -69574,7 +69898,7 @@ msgstr "小麥" #: lang/json/material_from_json.py msgid "Wood" -msgstr "木材" +msgstr "木頭" #: lang/json/material_from_json.py msgid "splintered" @@ -69586,19 +69910,19 @@ msgstr "羊毛" #: lang/json/material_from_json.py msgid "Feces" -msgstr "" +msgstr "屎" #: lang/json/material_from_json.py msgid "squashed" -msgstr "" +msgstr "壓扁的" #: lang/json/material_from_json.py msgid "mashed" -msgstr "" +msgstr "搗碎的" #: lang/json/material_from_json.py msgid "mushed" -msgstr "" +msgstr "搗成泥" #: lang/json/material_from_json.py msgid "Bronze" @@ -69633,7 +69957,8 @@ msgstr "到圖書館試試。" msgid "Got that book for me?" msgstr "有我要的書本嗎?" -#: lang/json/mission_def_from_json.py src/npctalk.cpp src/npctalk.cpp +#: lang/json/mission_def_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Thanks!" msgstr "謝謝!" @@ -69643,7 +69968,7 @@ msgstr "好的, 那麼交給我吧。" #: lang/json/mission_def_from_json.py msgid "Shit happens." -msgstr "" +msgstr "世事難料。" #: lang/json/mission_def_from_json.py msgid "Follow Sarcophagus Team" @@ -69651,7 +69976,7 @@ msgstr "跟隨石棺小組" #: lang/json/mission_def_from_json.py msgid "You wouldn't believe what I found..." -msgstr "你絕對不會相信我找到什麼..." +msgstr "你絕對不會相信我找到什麼…" #: lang/json/mission_def_from_json.py msgid "" @@ -69670,7 +69995,7 @@ msgstr "" #: lang/json/mission_def_from_json.py msgid "Fuck ya, America!" -msgstr "美國屌爆啦!" +msgstr "去你的美國!" #: lang/json/mission_def_from_json.py msgid "" @@ -69706,7 +70031,7 @@ msgstr "清除後灣區" #: lang/json/mission_def_from_json.py msgid "We need help..." -msgstr "我們需要幫助..." +msgstr "我們需要幫助…" #: lang/json/mission_def_from_json.py msgid "" @@ -69717,8 +70042,8 @@ msgid "" "turned into something different. Kill all of them and make sure they won't " "bother us again. We can't pay much but it would help us to reclaim the bay." msgstr "" -"如果你真的想幫我們, 可以去把後灣的殭屍清掉。大災變發生的第一天我們都慌慘了, " -"只好把充滿殭屍的後灣區封鎖起來。我們原本抱持著希望的領導者最後也放棄了... 甚至變得我們都認不出來。 去把後灣區清光, " +"如果你真的想幫我們, 可以去把後灣區的殭屍清掉。大災變發生的第一天我們都慌慘了, " +"只好把充滿殭屍的後灣區封鎖起來。我們原本抱持著希望的領導者最後也放棄了… 甚至變得我們都認不出來。 去把它們清光, " "讓我們不再受到威脅。我們沒辦法給你什麼, 但至少這能幫我們奪回後灣區。" #: lang/json/mission_def_from_json.py @@ -69750,7 +70075,7 @@ msgstr "這樣做對我們有什麼好處?" #: lang/json/mission_def_from_json.py msgid "It was a lost cause anyways..." -msgstr "反正都失敗了..." +msgstr "反正都失敗了…" #: lang/json/mission_def_from_json.py msgid "Missing Caravan" @@ -69833,7 +70158,7 @@ msgid "" "get an electrical expansion working for a year or two. I know they are rare" " but running generators isn't a viable option in the basement." msgstr "" -"我們開始在這建設新的設施, 並期望讓少數的新電力系統上線... 不幸的是, " +"我們開始在這建造新的設施, 並期望讓少數的新電力系統上線… 不幸的是, " "我們既有的系統仰賴一種稱作放射性同位素熱電機的陣列系統。據我了解這就像是一個巨大的電池之類的東西。我們能夠擴充我們的電力系統, 但是這麼做的話, " "我們會需要足夠的鈽。有 25 個鈽電池就能夠讓一個電力擴充系統工作一到兩年。我知道這東西很稀有, 但在地下室運作發電機不是一個可行的方法。" @@ -69865,13 +70190,13 @@ msgstr "我… 透… 不過… 氣…" #: lang/json/mission_def_from_json.py msgid "I'm asthmatic. I need you to get an inhaler for me..." -msgstr "我有氣喘。我需要你幫我拿吸入器..." +msgstr "我有氣喘。我需要你幫我拿吸入器…" #: lang/json/mission_def_from_json.py msgid "" "Oh, thank god, thank you so much! I won't last more than a couple of days, " "so hurry..." -msgstr "喔, 感謝老天爺, 真是謝謝你! 我也許只能再撐幾天而已了, 所以請趕快..." +msgstr "喔, 感謝老天爺, 真是謝謝你! 我也許只能再撐幾天而已了, 所以請趕快…" #: lang/json/mission_def_from_json.py msgid "What?! Please, without your help!" @@ -69903,11 +70228,11 @@ msgstr "找尋抗生素" #: lang/json/mission_def_from_json.py msgid "This infection is bad, bad..." -msgstr "這感染很嚴重, 嚴重..." +msgstr "這感染很嚴重, 嚴重…" #: lang/json/mission_def_from_json.py msgid "I'm infected. Badly. I need you to get some antibiotics for me..." -msgstr "我被嚴重感染了。我需要你幫我拿些抗生素..." +msgstr "我被嚴重感染了。我需要你幫我拿些抗生素…" #: lang/json/mission_def_from_json.py msgid "Find any antibiotics yet?" @@ -69948,7 +70273,7 @@ msgstr "黑盒子找的如何了?" #: lang/json/mission_def_from_json.py msgid "America, fuck ya!" -msgstr "美國屌爆啦!" +msgstr "去你的美國!" #: lang/json/mission_def_from_json.py msgid "What?! I out'ta whip you're ass." @@ -69964,7 +70289,7 @@ msgstr "取得黑盒子內容" #: lang/json/mission_def_from_json.py msgid "With the black box in hand, we need to find a lab." -msgstr "有了黑盒子, 我們必須要找到間實驗室。" +msgstr "有了黑盒子, 我們需要找到一間實驗室。" #: lang/json/mission_def_from_json.py msgid "" @@ -69976,7 +70301,7 @@ msgid "" "can get inside and find a computer lab that still works you ought to be able" " to find out what's in the black box." msgstr "" -"謝謝你的搜索我們才能找到黑盒子, 但是我們必須要看看裡面有什麼。現在大部分的建築都已經沒有電力了, " +"謝謝你的搜索我們才能找到黑盒子, 但是我們還需要看看裡面有什麼。現在大部分的建築都已經沒有電力了, " "但是還是有些有備用電力。你有見過有些地方有突然出現的科學實驗室嗎? 那些混蛋建築前門有發亮的終端機, " "所以我知道裡面一定有電。若是你能夠進入實驗室並找到台能用的電腦, 你應該就能知道黑盒子裡面裝的東西了。" @@ -69984,13 +70309,13 @@ msgstr "" msgid "" "When I was play'n with the terminal for the one I ran into it kept asking " "for an ID card. Finding one would be the first order of business." -msgstr "當我在亂玩其中一部終端機時, 它一直在跟我要 ID卡。去找一張 ID卡是進入實驗室的第一步。" +msgstr "當我在亂玩其中一部終端機時, 它一直在跟我要 ID 卡。去找一張 ID 卡是進入實驗室的第一步。" #: lang/json/mission_def_from_json.py msgid "" "America, fuck ya! I was in the guard a few years back so I'm confident I " "can make heads-or-tails of these transmissions." -msgstr "屌爆啦美國! 我過去都在做後勤, 所以我有自信能完整控制這些傳輸。" +msgstr "去你的美國! 我這幾年都在當警衛, 所以我有自信能讀懂這些紀錄。" #: lang/json/mission_def_from_json.py msgid "Damn, I maybe we can find an egg-head to crack the terminal." @@ -70002,7 +70327,7 @@ msgstr "找到副警長警徽" #: lang/json/mission_def_from_json.py msgid "Those twisted snakes..." -msgstr "這些扭曲的蛇..." +msgstr "這些扭曲的蛇…" #: lang/json/mission_def_from_json.py msgid "" @@ -70021,11 +70346,11 @@ msgstr "我會檢查警察局。" msgid "" "We're also official... just hang in there and I'll show you what we can " "really do." -msgstr "我們也是官方了... 堅持下去, 我來告訴你我們真正能做的事。" +msgstr "我們好歹也是公務員… 好好待在那, 讓我來告訴你我們真正的能耐。" #: lang/json/mission_def_from_json.py msgid "They shouldn't be that hard to find... should they?" -msgstr "這應該不難找到...應該吧?" +msgstr "這應該不難找到… 應該吧?" #: lang/json/mission_def_from_json.py msgid "Any luck?" @@ -70037,7 +70362,7 @@ msgstr "太好了, 副警長。我們整裝待發了。" #: lang/json/mission_def_from_json.py msgid "Thanks for trying... I guess." -msgstr "感謝你的嘗試...也許吧。" +msgstr "感謝你的嘗試… 也許吧。" #: lang/json/mission_def_from_json.py msgid "The day of reckoning will come for the criminals if it hasn't already." @@ -70063,7 +70388,7 @@ msgstr "太讚了! 幫我找到一面美國國旗吧。" #: lang/json/mission_def_from_json.py msgid "Seriously? God damned commie..." -msgstr "真的嗎? 天殺的共產黨..." +msgstr "真的嗎? 天殺的共產黨…" #: lang/json/mission_def_from_json.py msgid "Find a large federal building or school, they must have one." @@ -70114,7 +70439,7 @@ msgstr "試試看去一些大公司的建築之類的地方, 這些地方都會 msgid "" "Great, let's see... uh... hmmm... Fine, I didn't even do my own taxes but " "I'm sure this will prove their guilt if we get an expert to examine it." -msgstr "太好了, 我們來看看... 喔...嗯... 很好。我雖然連自己都沒在報稅, 但是我敢肯定要是我們有專家來查的話, 這將能夠證明他們的罪。" +msgstr "太好了, 我們來看看… 喔… 嗯… 很好。我雖然連自己都沒在報稅, 但是我敢肯定要是我們有專家來查的話, 這將能夠證明他們的罪。" #: lang/json/mission_def_from_json.py msgid "" @@ -70127,14 +70452,14 @@ msgstr "尋找病歷" #: lang/json/mission_def_from_json.py msgid "I hope I don't see many names I know..." -msgstr "希望不要看到太多我認識的名字..." +msgstr "希望不要看到太多我認識的名字…" #: lang/json/mission_def_from_json.py msgid "" "I've lost so many friends... please find me a patient list from the regional" " hospital or doctor's office. I just want to know who might still be out " "there." -msgstr "我已經失去了許多朋友... 請幫我從醫院或是診所找到病人名單。我只是想知道還有誰活著。" +msgstr "我已經失去了許多朋友… 請幫我從醫院或是診所找到病人名單。我只是想知道還有誰活著。" #: lang/json/mission_def_from_json.py msgid "" @@ -70154,11 +70479,11 @@ msgstr "我猜你可能會闖進有一大堆殭屍的醫院, 所以請你小心 #: lang/json/mission_def_from_json.py msgid "Oh dear, I thought Timmy would have made it..." -msgstr "喔老天, 我以為 Timmy 能熬過來的..." +msgstr "喔老天, 我以為 Timmy 能熬過來的…" #: lang/json/mission_def_from_json.py msgid "I bet some of them are still out there..." -msgstr "我猜還有一些還在那..." +msgstr "我猜還有一些還在那…" #: lang/json/mission_def_from_json.py msgid "Find Weather Log" @@ -70166,7 +70491,7 @@ msgstr "尋找天氣日誌" #: lang/json/mission_def_from_json.py msgid "I wonder if a retreat might exist..." -msgstr "我想應該沒有退路了..." +msgstr "我想應該沒有退路了…" #: lang/json/mission_def_from_json.py msgid "" @@ -70209,7 +70534,7 @@ msgstr "找尋聖物" #: lang/json/mission_def_from_json.py msgid "St. Michael the archangel defend me in battle..." -msgstr "媽祖保佑我..." +msgstr "媽祖保佑我…" #: lang/json/mission_def_from_json.py msgid "" @@ -70218,7 +70543,7 @@ msgid "" "truth to them. Please go and find me a religious relic... I doubt it will " "be of much use but I've got to hope in something." msgstr "" -"雖然世界已經不像是我們所理解的現實那樣, 這也讓一些過去被摒棄的古老迷信變得有一些可信度。請出發幫我找到一件宗教聖物.....也許會沒有用, " +"雖然世界已經不像是我們所理解的現實那樣, 這也讓一些過去被摒棄的古老迷信變得有一些可信度。請出發幫我找到一件宗教聖物… 也許會沒有用, " "但至少是我僅存的希望。" #: lang/json/mission_def_from_json.py @@ -70228,7 +70553,7 @@ msgstr "我會為你祝福, 也祈禱神帶領你找到方向。" #: lang/json/mission_def_from_json.py msgid "Ya, I guess the stress may just be getting to me..." -msgstr "好, 我想我開始有壓力了..." +msgstr "好, 我想我開始有壓力了…" #: lang/json/mission_def_from_json.py msgid "I suppose a large church or cathedral may have something." @@ -70240,7 +70565,7 @@ msgstr "有找到嗎? 請幫我找到小聖物。任何一種都行。" #: lang/json/mission_def_from_json.py msgid "Thank you, I need some time alone now..." -msgstr "謝謝你, 我想我需要一些時間獨處..." +msgstr "謝謝你, 我想我需要一些時間獨處…" #: lang/json/mission_def_from_json.py msgid "Retrieve Deposit Box" @@ -70284,7 +70609,7 @@ msgstr "取回軟體" #: lang/json/mission_def_from_json.py msgid "Oh man, I can't believe I forgot to download it..." -msgstr "喔不, 我不敢相信我居然忘記下載了..." +msgstr "喔不, 我不敢相信我居然忘記下載了…" #: lang/json/mission_def_from_json.py msgid "There's some important software on my computer that I need on USB." @@ -70296,7 +70621,7 @@ msgstr "謝謝! 就只要把資料拷貝到這個USB隨身碟上再拿給我就 #: lang/json/mission_def_from_json.py msgid "Seriously? It's an easy job..." -msgstr "是嗎? 這工作很簡單耶..." +msgstr "是嗎? 這工作很簡單耶…" #: lang/json/mission_def_from_json.py msgid "Take this USB drive. Use the console, and download the software." @@ -70312,7 +70637,7 @@ msgstr "太棒了, 謝謝你!" #: lang/json/mission_def_from_json.py msgid "Wow, you failed? All that work, down the drain..." -msgstr "哇咧, 你失敗了? 我的心血都沒了...." +msgstr "哇咧, 你失敗了? 我的心血都沒了…" #: lang/json/mission_def_from_json.py msgid "Analyze Zombie Blood" @@ -70320,7 +70645,7 @@ msgstr "分析殭屍血液" #: lang/json/mission_def_from_json.py msgid "It could be very informative to perform an analysis of zombie blood..." -msgstr "要是能對殭屍的血液進行分析將會是很有用的情報..." +msgstr "要是能對殭屍的血液進行分析將會是很有用的情報…" #: lang/json/mission_def_from_json.py msgid "" @@ -70338,13 +70663,13 @@ msgstr "" #: lang/json/mission_def_from_json.py msgid "" "Are you sure? The scientific value of that blood data could be priceless..." -msgstr "你確定嗎? 那血液資料的科學價值可能是無價的..." +msgstr "你確定嗎? 那血液資料的科學價值可能是無價的…" #: lang/json/mission_def_from_json.py msgid "" "The centrifuge is a bit technical; you might want to study up on the usage " "of computers before completing that part." -msgstr "操作離心機會需要一些技術;你也許要先學習一些電腦技能才能完成這些操作。" +msgstr "操作離心機會需要一些技術, 你也許要先學習一些電腦技能才能完成這些操作。" #: lang/json/mission_def_from_json.py msgid "Well, do you have the data yet?" @@ -70360,7 +70685,7 @@ msgstr "等等, 你不可能已經有資料了! 騙人!" #: lang/json/mission_def_from_json.py msgid "What a shame, that data could have proved invaluable..." -msgstr "真糟糕, 那資料也許是無價之寶..." +msgstr "真糟糕, 那資料也許是無價之寶…" #: lang/json/mission_def_from_json.py msgid "Investigate Cult" @@ -70375,7 +70700,7 @@ msgid "" "location for me? I'm not sure what was going on here but the priest seemed " "fairly worried about it." msgstr "" -"你絕對想不到這日記有多有趣。我有兩條非常有用的線索...第一條, 天主教教會已經進行對於全球邪教現象的調查, " +"你絕對想不到這日記有多有趣。我有兩條非常有用的線索… 第一條, 天主教教會已經進行對於全球邪教現象的調查, " "而他們最近也相當關注當地的邪教組織。你能夠幫我找到邪教組織的位置嗎? 我不曉得發生了什麼事, 但牧師也似乎非常擔心。" #: lang/json/mission_def_from_json.py @@ -70386,7 +70711,7 @@ msgid "" "before and after the outbreak. The name of the cult is believed to be the " "Church of Starry Wisdom but it is noted that accounts differ." msgstr "" -"我會為你祝福, 也祈禱神帶領你找到方向...你會比以前更需要的。有一個關於正好在大爆發之前的人類獻祭記錄。邪教的組織應該是在星慧教堂聚集, " +"我會為你祝福, 也祈禱神帶領你找到方向… 你會比以前更需要的。有一個關於正好在大爆發之前的人類獻祭記錄。邪教的組織應該是在星慧教堂聚集, " "但是也可能有不同的說法。" #: lang/json/mission_def_from_json.py @@ -70395,11 +70720,11 @@ msgid "" "not sure what you might be looking for but I'm positive you'll find " "something out of the ordinary if you look long enough." msgstr "" -"我想那地點應該依然是被佔據的狀態, 所以我至少會帶一些槍械... 我不確定你會找到什麼, 但要是你仔細找的話, 我認為你會找到一些不尋常的東西。" +"我想那地點應該依然是被佔據的狀態, 所以我至少會帶一些槍械… 我不確定你會找到什麼, 但要是你仔細找的話, 我認為你會找到一些不尋常的東西。" #: lang/json/mission_def_from_json.py msgid "I'm positive there is something there... there has to be, any luck?" -msgstr "我很肯定那裏一定會有什麼... 一定有, 你有消息嗎?" +msgstr "我很肯定那裏一定會有什麼… 一定有, 你有消息嗎?" #: lang/json/mission_def_from_json.py msgid "" @@ -70408,7 +70733,7 @@ msgid "" "survivors of this cult... I don't known if they are responsible for the " "outbreak but they certainly know more about it than I do." msgstr "" -"謝謝你所做的一切... 這些惡魔般的生物證明了教會的恐慌很有道理。我們的第一要務就是找出邪教中的生還者... 我不知道他們是否要對這個災情負責, " +"謝謝你所做的一切… 這些惡魔般的生物證明了教會的恐慌很有道理。我們的第一要務就是找出邪教中的生還者… 我不知道他們是否要對這個災情負責, " "但是我們肯定能從他們身上取得更多情報。" #: lang/json/mission_def_from_json.py @@ -70423,11 +70748,8 @@ msgid "" "admits the individual is rather unstable, to put it lightly, but the priest " "personally believed the man was some kind of repentant visionary. I'm not " "in a position to cast out the account just yet... it seems the man has " -"prophesied events accurately before concerning the Church of Starry Wisdom." +"prophesied events accurately before concerning the Church of Starry Wisdom." msgstr "" -"如果你願意的話, 我還有另一個任務。牧師特別提到了一位囚犯。我想知道你是否能瞭解在他身上發生了什麼事情, " -"或是他在牢房裡留下了什麼東西。牧師承認這人非常不穩定...雖然只是輕描淡寫, " -"但他認為這個人有一些懺悔的想法。我目前還沒有立場排除這些報告...不過他之前似乎準確地預言了關於星慧教堂的事件。" #: lang/json/mission_def_from_json.py msgid "" @@ -70436,7 +70758,7 @@ msgid "" "not sure what they would have decided to do with the inmates when they knew " "death was almost certain. " msgstr "" -"我會為你祝福, 也祈禱神帶領你找到方向... 我只能想像那監獄根本是地獄的翻版。當這些囚犯死期將近的時候, 我不知道他們會對這些人做出什麼事。 " +"我會為你祝福, 也祈禱神帶領你找到方向… 我只能想像那監獄根本是地獄的翻版。當這些囚犯死期將近的時候, 我不知道他們會對這些人做出什麼事。 " #: lang/json/mission_def_from_json.py msgid "" @@ -70454,7 +70776,7 @@ msgstr "謝謝你, 我不知道該怎麼做, 但是我會考慮你的說法。" #: lang/json/mission_def_from_json.py msgid "Well damn, you must be the guys here to pick me up..." -msgstr "靠, 你一定就是來接我的人..." +msgstr "靠, 你一定就是來接我的人…" #: lang/json/mission_def_from_json.py msgid "" @@ -70488,11 +70810,11 @@ msgstr "有問題嗎老大?" #: lang/json/mission_def_from_json.py msgid "Wait... are you really making me a deputy?" -msgstr "等等...你真的要讓我當副警長嗎?" +msgstr "等等… 你真的要讓我當副警長嗎?" #: lang/json/mission_def_from_json.py msgid "I don't think so..." -msgstr "我不這麼認為..." +msgstr "我不這麼認為…" #: lang/json/mission_def_from_json.py msgid "Quitting already?" @@ -70504,7 +70826,7 @@ msgstr "殺掉 100 隻殭屍" #: lang/json/mission_def_from_json.py msgid "You seem to know this new world better than most..." -msgstr "你似乎比其他人更了解這個新世界..." +msgstr "你似乎比其他人更了解這個新世界…" #: lang/json/mission_def_from_json.py msgid "" @@ -70527,7 +70849,7 @@ msgid "" "Hey, I know I wouldn't volunteer for it either... but then I remember that " "most of us survivors won't make it unless someone decides to take the " "initiative." -msgstr "嘿, 你知道我不是自願的吧... 但是我後來想到如果不採取主動的話, 我們這些倖存者根本難以活下去。" +msgstr "嘿, 你知道我不是自願的吧… 但是我後來想到如果不採取主動的話, 我們這些倖存者根本難以活下去。" #: lang/json/mission_def_from_json.py msgid "I'd secure an ammo cache and try to sweep a town in multiple passes." @@ -70541,7 +70863,7 @@ msgstr "把它們打倒了嗎?" msgid "" "Man... you're a goddamn machine. It was a pleasure working with you. You " "know, you may just change our little neck of the world if you keep this up." -msgstr "大哥...你真是無敵的殺戮機器。和你一起行動真是榮幸。你知道, 你可能讓這世界更有希望了。" +msgstr "大哥… 你真是無敵的殺戮機器。和你一起行動真是榮幸。你知道, 你可能讓這世界更有希望了。" #: lang/json/mission_def_from_json.py msgid "I don't think that was quite a hundred dead zeds." @@ -70554,7 +70876,7 @@ msgstr "殺掉屍群首領" #: lang/json/mission_def_from_json.py msgid "" "I've heard some bad rumors so I hope you are up for another challenge..." -msgstr "我有聽到一些不好的謠言, 所以我希望你準備好對付另一個挑戰了..." +msgstr "我有聽到一些不好的謠言, 所以我希望你準備好對付另一個挑戰了…" #: lang/json/mission_def_from_json.py msgid "" @@ -70599,7 +70921,7 @@ msgstr "殺掉變種人魔獸" msgid "" "The eater of the dead... something was ripping zombies to shreds and only " "leaving a few scattered limbs..." -msgstr "掠食活死人的怪物... 有東西把殭屍撕成肢體四散的碎片..." +msgstr "掠食活死人的怪物… 有東西把殭屍撕成肢體四散的碎片…" #: lang/json/mission_def_from_json.py msgid "" @@ -70641,7 +70963,7 @@ msgstr "當我看森林深處時, 似乎有什麼隱藏在陰影中的東西正 msgid "" "I'm glad you came back alive... I wasn't sure if I had sent you to your " "death." -msgstr "我很高興你活著回來...我都不確定是不是派你去送死了。" +msgstr "我很高興你活著回來… 我都不確定是不是派你去送死了。" #: lang/json/mission_def_from_json.py msgid "Kill Zombie Mom" @@ -70649,29 +70971,29 @@ msgstr "殺掉變殭屍的老媽" #: lang/json/mission_def_from_json.py msgid "Oh god, I can't believe it happened..." -msgstr "我的天哪, 我不敢相信這是真的..." +msgstr "我的天哪, 我不敢相信這是真的…" #: lang/json/mission_def_from_json.py msgid "" "My mom... she's... she was killed, but then she just got back up... she's " "one of those things now. Can you put her out of her misery for me?" -msgstr "我媽... 她 ... 她被殺了, 但是沒多久她又爬起來了... 她現在已經變成那種東西了。你可以幫我讓她解脫嗎?" +msgstr "我媽… 她… 她被殺了, 但是沒多久她又爬起來了… 她現在已經變成那種東西了。你可以幫我讓她解脫嗎?" #: lang/json/mission_def_from_json.py msgid "Thank you... she would've wanted it this way." -msgstr "謝謝你... 我想她也會願意這麼做。" +msgstr "謝謝你… 我想她也會願意這麼做。" #: lang/json/mission_def_from_json.py msgid "Please reconsider, I know she's suffering..." -msgstr "拜託你再考慮考慮, 我知道她正在受苦..." +msgstr "拜託你再考慮考慮, 我知道她正在受苦…" #: lang/json/mission_def_from_json.py msgid "Find a gun if you can, make it quick..." -msgstr "假如可以的話找把槍, 早點解決..." +msgstr "假如可以的話找把槍, 早點解決…" #: lang/json/mission_def_from_json.py msgid "Well...? Did you... finish things for my mom?" -msgstr "嗯...? 你...讓我媽解脫了嗎?" +msgstr "嗯…? 你… 讓我媽解脫了嗎?" #: lang/json/mission_def_from_json.py msgid "Thank you. I couldn't rest until I knew that was finished." @@ -70679,7 +71001,7 @@ msgstr "謝謝你。這事結束後我終於可以好好休息了。" #: lang/json/mission_def_from_json.py msgid "Really... that's too bad." -msgstr "真的...那真是太糟了。" +msgstr "真的… 那真是太糟了。" #: lang/json/mission_def_from_json.py msgid "Null mission" @@ -70760,14 +71082,12 @@ msgid "" "My chief responsibility is to monitor radio traffic and locate potential " "targets to secure or rescue. The majority of radio repeaters are down and " "those that are working have only emergency power. If you have a basic " -"understanding of electronics you should be able to fabricate the 'radio " +"understanding of electronics you should be able to fabricate the 'radio " "repeater mod' found in these plans. When this mod is attached to a radio " "station's main terminal, all short range radio traffic on emergency channels" " is boosted so we can pick it up at much longer ranges. I really need you " "make me one." msgstr "" -"我們的頭目要求把通訊給恢復與定位。主要的裝置都已經準備好了, 只缺緊急電力跟一些其他東西。如果你有一些基本的電子知識, 你應該可以利用 " -"\"無線電維修模組\"。把它裝在無線電站的主機上面, 就可以把訊號強化到在較遠的地方也可以接收到的程度。希望你可以幫幫我們。" #: lang/json/mission_def_from_json.py msgid "" @@ -70804,7 +71124,7 @@ msgstr "" msgid "" "Thanks, I should be ready for you to install the radio repeater mods by the " "time you get back." -msgstr "感謝, 我應該能在你回來的時後準備好無線電維修模組。" +msgstr "感謝, 我應該能在你回來的時後準備好無線電修理模組。" #: lang/json/mission_def_from_json.py msgid "Try searching on the outskirts of towns." @@ -70883,7 +71203,7 @@ msgid "" "quick end... execute both of them for their crimes. Complete this and the " "Old Guard will consider you an asset in the region." msgstr "" -"我不太喜歡讓陌生的人加入我們, 但你存活了這麼久想必相當有一套。現在有個小屋被至少兩個土匪佔據, 他們盯上的獵物都難逃一劫... 去解決掉他們, " +"我不太喜歡讓陌生的人加入我們, 但你存活了這麼久想必相當有一套。現在有個小屋被至少兩個土匪佔據, 他們盯上的獵物都難逃一劫… 去解決掉他們, " "他們必須為犯下的罪行負責。完成後舊日守衛就會把你當成是這裡的一員。" #: lang/json/mission_def_from_json.py @@ -70933,7 +71253,7 @@ msgstr "有機會的話就回來, 我們會需要像你的好人。" #: lang/json/mission_def_from_json.py msgid "If they draw first blood their friends are less likely to blame you..." -msgstr "假如是他們先動手的話, 他們的朋友就沒什麼好責難你的..." +msgstr "假如是他們先動手的話, 他們的朋友就沒什麼好責難你的…" #: lang/json/mission_def_from_json.py msgid "You deal with the rat?" @@ -70954,8 +71274,8 @@ msgid "" "a packed caravan. They didn't hear any shots but I suppose some raider may " "have been real sneaky. Check out the area and report anything you find." msgstr "" -"還有另一個怪物困擾著商家, 但這次不是人... 至少我覺得不像人。護衛走到貨車後面就消失了。他們沒有聽到任何槍聲, " -"但或許有些強盜很擅於匿蹤。查看區域並回報你發現的所有事情。" +"還有另一個怪物困擾著商家, 但這次不是人… 至少我覺得不像人。護衛走到貨車後面就消失了。他們沒有聽到任何槍聲, " +"但或許有些強盜很擅於匿蹤。檢查區域並回報你發現的所有事情。" #: lang/json/mission_def_from_json.py msgid "Thanks, keeping the people safe is what we try and do." @@ -71006,7 +71326,7 @@ msgstr "" msgid "" "I'd recommend having two deputies... it would be a death trap if a single " "man got surrounded." -msgstr "我建議找兩位副手... 要是一個人被包圍的話必死無疑。" +msgstr "我建議找兩位副手… 要是一個人被包圍的話必死無疑。" #: lang/json/mission_def_from_json.py msgid "Has the leadership been dealt with?" @@ -71093,7 +71413,7 @@ msgid "" "demand regardless of what the scavengers can find. Could you bring me at " "least enough seeds to plant a small 10 meter long patch?" msgstr "" -"糖和糖蜜一直供應短缺。我已經申請了更多...但恐怕會有好一段時間無法取得可靠的供應來源。如果你有興趣, 我們還需要一些甜菜籽以便滿足未來的需求, " +"糖和糖蜜一直供應短缺。我已經申請了更多… 但恐怕會有好一段時間無法取得可靠的供應來源。如果你有興趣, 我們還需要一些甜菜籽以便滿足未來的需求, " "不論拾荒者們能找到什麼。你可以替我帶來至少足以種植 10 米田地的甜菜籽嗎?" #: lang/json/mission_def_from_json.py @@ -71161,7 +71481,7 @@ msgid "" "one your first priority. " msgstr "" "我們的首要目標是把穀倉圍起來, 讓難民們有一個安全的地方睡覺。在開始工程之前, 我們需要大量的木材作準備。封閉穀倉的四個入口需要接近 400 塊 2x4" -" 木材… 如果你能提供一半的木材, 我們有辦法搞定另外一半還有完成建設。如果你沒有卡車的話, 我想你要先找一台。" +" 木材… 如果你能提供一半的木材, 我們有辦法搞定另外一半還有完成建造。如果你沒有卡車的話, 我想你要先找一台。" #: lang/json/mission_def_from_json.py msgid "" @@ -71198,7 +71518,7 @@ msgstr "" #: lang/json/mission_def_from_json.py msgid "We'll do our best to make them last..." -msgstr "我們將盡最大努力使資源多撐一會..." +msgstr "我們將盡最大努力使資源多撐一會…" #: lang/json/mission_def_from_json.py msgid "Homes, hospitals, labs, and doctor offices would be where I'd check." @@ -71229,7 +71549,7 @@ msgstr "" #: lang/json/mission_def_from_json.py msgid "With two, we should be able to repair one if it breaks." -msgstr "有兩部的話, 其中一部壞掉我們也能用另一部修復好。" +msgstr "有兩部的話, 其中一部壞掉我們也能用另一部來修理。" #: lang/json/mission_def_from_json.py msgid "" @@ -71264,7 +71584,7 @@ msgstr "我就指望你了。" msgid "" "Cars can be found in traffic jams along roads or in parking lots... I'm " "sure you can find a few." -msgstr "汽車可以在堵塞的道路或是停車場找到......我敢肯定你能找到一些。" +msgstr "汽車可以在堵塞的道路或是停車場找到… 我敢肯定你能找到一些。" #: lang/json/mission_def_from_json.py msgid "Do you have the car batteries?" @@ -71354,8 +71674,8 @@ msgid "" "something along those lines." msgstr "" "發展速度最近慢了下來。有些人來到了哨站, 但辛勤勞動掙扎求存的生活方式令他們決定離開。我們問了大家的意見, 儘管有其他追切的需要, " -"搭建一間酒吧能夠吸引一些酷愛自由的人來到前哨。不像其他的定居點, 有著更多的人手我們就能生產...至少從長遠來看...更多的食物。不幸的是, " -"這裡沒有人有釀酒經驗, 所以需要你尋找一本叫《私家釀酒者聖經》之類的書。" +"搭建一間酒吧能夠吸引一些酷愛自由的人來到前哨。不像其他的定居點, 有著更多的人手我們就能生產… 至少從長遠來看… 更多的食物。不幸的是, " +"這裡沒有人有釀酒經驗, 所以需要你尋找一本叫 \"私家釀酒者聖經\" 之類的書。" #: lang/json/mission_def_from_json.py msgid "I guess you should search homes or libraries?" @@ -71506,7 +71826,7 @@ msgid "" "Salt is key to preserving meat and other perishables... without any excess " "food it wouldn't do us much good now but I imagine we'll need to send you " "out to get more in the future. " -msgstr "鹽是保存肉類和其他易腐壞食物的關鍵… 雖然現在沒有多餘的食物所以用不上, 但我想將來還會需要你出去獲得更多的鹽。" +msgstr "鹽是保存肉類和其他容易腐敗的食物的關鍵… 雖然現在沒有多餘的食物所以用不上, 但我想將來還會需要你出去獲得更多的鹽。" #: lang/json/mission_def_from_json.py msgid "" @@ -71573,7 +71893,7 @@ msgid "" msgstr "" "感謝你的努力, 目前我們的生存能力顯著增加了。接下來的優先事項是確保更清潔的水源。之前在牧場後面的池塘取水導致了痢疾爆發, " "我們需要盡快改善難民營的衛生條件。第一步需要挖井, 並在穀倉修建石爐讓移民煮沸飲用水。計劃需要你提供至少 75 塊大石頭, " -"最好能在我們都病倒之前完成。完成建設之後, 我們保證你也能夠使用這些設施。" +"最好能在我們都病倒之前完成。完成建造之後, 我們保證你也能夠使用這些設施。" #: lang/json/mission_def_from_json.py msgid "" @@ -71612,7 +71932,7 @@ msgstr "" msgid "" "Hopefully we will be able to assign new migrants to help fulfill our needs " "in the future." -msgstr "希望我們可以分派新的難民去幫我們滿足將來的需要。" +msgstr "希望我們可以指派新的難民以幫我們滿足將來的需要。" #: lang/json/mission_def_from_json.py msgid "" @@ -71636,7 +71956,7 @@ msgid "" " manually operated sawmill but we will need two motors to control the actual" " blades. We were hoping you might be able to secure the motors for us." msgstr "" -"建造水井之後, 我們幾乎可以自給自足了。為了從這裡擴展出去, 我們將需要大量的木材以建造防禦工事及新的建築物。我們正在建設一間手動鋸木廠, " +"建造水井之後, 我們幾乎可以自給自足了。為了從這裡擴展出去, 我們將需要大量的木材以建造防禦工事及新的建築物。我們正在建造一間手動鋸木廠, " "但需要兩台馬達來控制鋸木的刀片。我們希望你能夠找到馬達。" #: lang/json/mission_def_from_json.py @@ -71665,7 +71985,7 @@ msgstr "" #: lang/json/mission_def_from_json.py msgid "I'm sure you can find bleach in most homes..." -msgstr "我相信你可以在大多數民居中找到漂白水..." +msgstr "我相信你可以在大多數民居中找到漂白水…" #: lang/json/mission_def_from_json.py msgid "" @@ -71781,8 +72101,8 @@ msgid "" "able to treat the most vulnerable before they spread anything to the rest of" " us." msgstr "" -"由於營養不良, 疾病正在迅速傳播, 對此我也無能為力。隨著糧食稀缺, 人們願意盡其所能生存。 我必須開始在哨站提供維他命, " -"去防止間接因營養不足導致的死亡風險。 我知道這數量不少, 但是如果你能給我 200 顆綜合維他命丸, 那我就能在疾病大幅擴散之前, 保護抵抗力最弱的人。" +"由於營養不良, 疾病正在迅速傳播, 對此我也無能為力。隨著糧食稀缺, 人們願意盡其所能生存。我需要開始在哨站提供維他命, " +"去防止間接因營養不足導致的死亡風險。我知道這數量不少, 但是如果你能給我 200 顆綜合維他命丸, 那我就能在疾病大幅擴散之前, 保護抵抗力最弱的人。" #: lang/json/mission_def_from_json.py msgid "Do you have the vitamins?" @@ -71907,7 +72227,8 @@ msgid "" "really need a copy. The doctor is requesting a lot of supplies that I'm not" " familiar with but I believe I could make if I could get a copy of the book." msgstr "" -"你有聽過一本叫《高級急救護理指南》的書嗎? 我現在很需要一本。醫生要求我提供很多我不熟悉的物資, 但我相信如果我有那本書的話, 我應該可以製作到。" +"你有聽過一本叫 \"高級急救護理指南\" 的書嗎? 我現在很需要一本。醫生要求我提供很多我不熟悉的物資, 但我相信如果我有那本書的話, " +"我應該可以製作到。" #: lang/json/mission_def_from_json.py msgid "Libraries are the only place I'd think to look." @@ -71915,7 +72236,7 @@ msgstr "圖書館是我唯一想去調查的地方。" #: lang/json/mission_def_from_json.py msgid "Do you have the Guide to Advanced Emergency Care?" -msgstr "你有沒有《高級急救護理指南》?" +msgstr "你有沒有 \"高級急救護理指南\"?" #: lang/json/mission_def_from_json.py msgid "Make 12 Knife Spears" @@ -71929,7 +72250,7 @@ msgid "" "monsters. Could you make me a dozen of them? I may need more later but " "that should help the first few teams." msgstr "" -"我不時需要額外的生存裝備去給新人使用。最基本的武器是大家都會有的刀矛... 它同時提供很好的距離和殺傷力, " +"我不時需要額外的生存裝備去給新人使用。最基本的武器是大家都會有的刀矛… 它同時提供很好的距離和殺傷力, " "而且容易用來對付最常見的怪物。你可以幫我製作一打嗎? 我或者會需要更多, 但那應該可以幫到最初的幾隊小隊。" #: lang/json/mission_def_from_json.py @@ -71969,7 +72290,7 @@ msgid "" "armor? The life-expectancy of my scavengers would drastically increase if " "you did." msgstr "" -"耐用、抵禦爬窗時的撕裂風險、以及抵抗野生動物襲擊的衣服現在有很高的需求。最能幫到我們進行野外探索的是皮革護甲, " +"耐用、抵禦爬窗時的撕裂風險、以及抵抗野生動物襲擊的衣物現在有很高的需求。最能幫到我們進行野外探索的是皮革護甲, " "但以我們有限的資源實在很難去製作。你可以幫我們製作三套皮革護甲嗎? 如果你做到的話, 我的拾荒者的生存率將會大幅提高。" #: lang/json/mission_def_from_json.py @@ -72012,7 +72333,7 @@ msgstr "到達農舍" #: lang/json/mission_def_from_json.py msgid "I just need a place to start over..." -msgstr "我只是需要一個重新開始的地方..." +msgstr "我只是需要一個重新開始的地方…" #: lang/json/mission_def_from_json.py msgid "" @@ -72056,11 +72377,11 @@ msgstr "我猜這只是在做夢。" #: lang/json/mission_def_from_json.py msgid "Reach FEMA Camp" -msgstr "到達急難救助營" +msgstr "到達聯邦緊急事務管理署營地" #: lang/json/mission_def_from_json.py msgid "Maybe they escaped to one of the camps..." -msgstr "也許他們逃脫到某個營地了..." +msgstr "也許他們逃脫到某個營地了…" #: lang/json/mission_def_from_json.py msgid "" @@ -72069,12 +72390,12 @@ msgid "" "one of the FEMA camps? I know some were overrun but I don't want to believe" " all of them could have fallen." msgstr "" -"我對你的感謝已經無法用言語形容了, 但是我還有另一個請求。你似乎是有能力的人... 你能夠帶我到其中一個急難救助營嗎? 我知道很多營地都已經陷落了, " -"但是我不相信他們會全數淪陷。" +"我對你的感謝已經無法用言語形容了, 但是我還有另一個請求。你似乎是有能力的人… 你能夠帶我到其中一個聯邦緊急事務管理署營地嗎? " +"我知道很多營地都已經陷落了, 但是我不相信他們會全數淪陷。" #: lang/json/mission_def_from_json.py msgid "Thank you, just bring me to the camp... I just want to see." -msgstr "謝謝你, 就帶我到營地吧... 我就是想看一下。" +msgstr "謝謝你, 就帶我到營地吧… 我就是想看一下。" #: lang/json/mission_def_from_json.py msgid "Please, I don't know what else to do." @@ -72136,15 +72457,15 @@ msgid "" "woods. Wasn't sure how long we were going to be so I told him to just camp " "there until we picked him up." msgstr "" -"我們有另一問題要處理, " -"而我不認為這能夠靠我們單獨應付。所以我放話出去並為我們找了個志願者...之類的。他雖然很瞎但是他對槍械還算在行。他去收集一些他認為有價值的物資並且會在森林小屋跟我們會合。我們不確定要花多久時間才會到達," -" 所以我告訴他在那邊駐紮直到我們去接他。" +"我們有另一問題要處理, 而我不認為這能夠靠我們單獨應付。所以我放話出去並為我們找了個志願者… " +"之類的。他雖然很瞎但是他對槍械還算在行。他去收集一些他認為有價值的物資並且會在森林小屋跟我們會合。我們不確定要花多久時間才會到達, " +"所以我告訴他在那邊駐紮直到我們去接他。" #: lang/json/mission_def_from_json.py msgid "" "Rodger, if he's a no-show then any other gunslinger will do... but I doubt " "he'll quit before we even begin." -msgstr "瞭解, 要是他沒出現的話, 那麼其他的槍手也行... 但是我覺得他會在我們還沒開始之前就不幹了。" +msgstr "瞭解, 要是他沒出現的話, 那麼其他的槍手也行… 但是我覺得他會在我們還沒開始之前就不幹了。" #: lang/json/mission_def_from_json.py msgid "" @@ -72168,7 +72489,7 @@ msgstr "找到遺失的狗" #: lang/json/mission_def_from_json.py msgid "Oh, my poor puppy..." -msgstr "喔, 我可憐的狗狗..." +msgstr "喔, 我可憐的狗狗…" #: lang/json/mission_def_from_json.py msgid "" @@ -72187,7 +72508,7 @@ msgstr "拜託, 請為我可憐的小狗狗著想!" msgid "" "Take my dog whistle; if the dog starts running off, blow it and he'll return" " to your side." -msgstr "拿著我的狗哨;假如狗狗跑走了, 吹響這個狗哨他就會回來你身邊了。" +msgstr "拿著我的狗哨。假如狗狗跑走了, 吹響這個狗哨他就會回來你身邊了。" #: lang/json/mission_def_from_json.py msgid "Have you found my dog yet?" @@ -72199,7 +72520,7 @@ msgstr "非常謝謝你幫我找到牠!" #: lang/json/mission_def_from_json.py msgid "Oh no! My poor puppy..." -msgstr "喔不! 我可憐的狗狗..." +msgstr "喔不! 我可憐的狗狗…" #: lang/json/mission_def_from_json.py msgid "Reach Refugee Center" @@ -72357,14 +72678,14 @@ msgstr "%1$s 刺穿了 的軀幹!" #, c-format, no-python-format msgid "" "The %1$s tries to impale your torso, but fails to penetrate your armor!" -msgstr "%1$s 嘗試刺穿你的軀幹, 但是無法穿透你的護甲!" +msgstr "%1$s 嘗試刺穿你的軀幹, 但是未能穿透護甲!" #: lang/json/monster_attack_from_json.py src/monattack.cpp #, c-format, no-python-format msgid "" "The %1$s tries to impale 's torso, but fails to penetrate their " "armor!" -msgstr "%1$s 嘗試刺穿 的軀幹, 但是無法穿透護甲!" +msgstr "%1$s 嘗試刺穿 的軀幹, 但是未能穿透護甲!" #: lang/json/monster_attack_from_json.py #, no-python-format @@ -72374,7 +72695,7 @@ msgstr "%1$s 抓向你!" #: lang/json/monster_attack_from_json.py #, no-python-format msgid "The %1$s claws at !" -msgstr "%1$s 抓向!" +msgstr "%1$s 抓向 !" #: lang/json/monster_attack_from_json.py #, no-python-format @@ -72551,7 +72872,7 @@ msgstr "吃了不易消化的食物" #: lang/json/morale_type_from_json.py msgid "Wet" -msgstr "濕透了" +msgstr "濕透" #: lang/json/morale_type_from_json.py msgid "Dried Off" @@ -72678,12 +72999,12 @@ msgstr "任何" #. ~ Mutation class: Any mutagen_message #: lang/json/mutation_category_from_json.py msgid "You feel strange." -msgstr "" +msgstr "你感覺很怪。" #. ~ Mutation class: Any iv_message #: lang/json/mutation_category_from_json.py src/mutation_data.cpp msgid "You inject yoursel-arRGH!" -msgstr "你對自己注射...唉唷!" +msgstr "你對自己注射… 唉唷!" #. ~ Mutation class: Any iv_sleep_message #: lang/json/mutation_category_from_json.py @@ -72693,12 +73014,12 @@ msgstr "你掙扎著倒臥在地面上。" #. ~ Mutation class: Any iv_sound_message #: lang/json/mutation_category_from_json.py msgid "yourself scream in agony!" -msgstr "" +msgstr "你痛苦地尖叫!" #. ~ Mutation class: Any junkie_message #: lang/json/mutation_category_from_json.py src/iuse_actor.cpp msgid "You quiver with anticipation..." -msgstr "你顫抖著期待......" +msgstr "你帶著期待顫抖著…" #. ~ Mutation class name #: lang/json/mutation_category_from_json.py lang/json/mutation_from_json.py @@ -72740,7 +73061,7 @@ msgstr "你出現耳鳴, 並且覺得身體僵硬。" #. ~ Mutation class: Insect iv_message #: lang/json/mutation_category_from_json.py msgid "You sting yourself... for the Queen." -msgstr "" +msgstr "你刺了自己… 為了女王。" #. ~ Mutation class: Insect Male memorial messsage #: lang/json/mutation_category_from_json.py @@ -72767,7 +73088,7 @@ msgstr "你覺得變陰沈。" #. ~ Mutation class: Spider iv_message #: lang/json/mutation_category_from_json.py msgid "Mmm... the *special* venom." -msgstr "" +msgstr "嗯… *特殊* 的毒液" #. ~ Mutation class: Spider Male memorial messsage #: lang/json/mutation_category_from_json.py @@ -72799,7 +73120,7 @@ msgstr "這東西讓你退化。變得更原始!" #. ~ Mutation class: Slime junkie_message #: lang/json/mutation_category_from_json.py msgid "Maybe if you drank enough, you'd become mutagen..." -msgstr "也許你喝夠多, 就會出現突變..." +msgstr "也許你喝夠多, 就會出現突變…" #. ~ Mutation class: Slime Male memorial messsage #: lang/json/mutation_category_from_json.py @@ -72859,13 +73180,13 @@ msgstr "" #: lang/json/mutation_category_from_json.py msgctxt "memorial_male" msgid "Found that survival *is* everything." -msgstr "明白了生存*才是*一切。" +msgstr "明白了生存 *才是* 一切。" #. ~ Mutation class: Rat Female memorial messsage #: lang/json/mutation_category_from_json.py msgctxt "memorial_female" msgid "Found that survival *is* everything." -msgstr "明白了生存*才是*一切。" +msgstr "明白了生存 *才是* 一切。" #. ~ Mutation class name #: lang/json/mutation_category_from_json.py lang/json/mutation_from_json.py @@ -73011,7 +73332,7 @@ msgstr "頭足生物" #: lang/json/mutation_category_from_json.py msgid "" "Your mind is overcome by images of eldritch horrors... and then they pass." -msgstr "你的腦海裡充滿了可怕影像...過了一會兒才消失。" +msgstr "你的腦海裡充滿了可怕影像… 過了一會兒才消失。" #. ~ Mutation class: Cephalopod iv_message #: lang/json/mutation_category_from_json.py @@ -73099,7 +73420,7 @@ msgstr "你渴望到一個涼爽, 黑暗的地方躲起來。" #. ~ Mutation class: Troglobite iv_message #: lang/json/mutation_category_from_json.py msgid "As you press the plunger, it all goes so bright..." -msgstr "當你按下活塞後, 一切都變得無比明亮..." +msgstr "當你按下活塞後, 一切都變得無比明亮…" #. ~ Mutation class: Troglobite Male memorial messsage #: lang/json/mutation_category_from_json.py @@ -73121,7 +73442,7 @@ msgstr "阿爾法" #. ~ Mutation class: Alpha mutagen_message #: lang/json/mutation_category_from_json.py msgid "You feel... better. Somehow." -msgstr "你感覺...好多了。不知為何。" +msgstr "你感覺… 好多了。不知為何。" #. ~ Mutation class: Alpha iv_message #: lang/json/mutation_category_from_json.py @@ -73193,7 +73514,7 @@ msgstr "" #. ~ Mutation class: Chimera iv_sleep_message #: lang/json/mutation_category_from_json.py msgid "With a final *pop*, you go out like a light." -msgstr "隨著最後的*碰*一聲, 你就像一盞燈熄滅了。" +msgstr "隨著最後的 *碰* 一聲, 你就像一盞燈熄滅了。" #. ~ Mutation class: Chimera iv_sound_message #: lang/json/mutation_category_from_json.py @@ -73230,7 +73551,7 @@ msgstr "所有東西在一剎那間變綠了。" #. ~ Mutation class: Fey iv_sleep_message #: lang/json/mutation_category_from_json.py msgid "It's painfully beautiful..." -msgstr "痛苦之美啊...." +msgstr "痛苦之美啊…" #. ~ Mutation class: Fey Male memorial messsage #: lang/json/mutation_category_from_json.py @@ -73397,7 +73718,7 @@ msgstr "快速痊癒" msgid "" "You heal faster when sleeping and will even recover small amount of HP when " "not sleeping." -msgstr "你在睡眠時會恢復得比平時快, 在醒著時也能恢復小量的 HP。" +msgstr "你在睡眠時會痊癒得比平時快, 甚至在醒著時也能恢復少量的 HP。" #: lang/json/mutation_from_json.py msgid "Light Eater" @@ -73492,7 +73813,7 @@ msgstr "硬漢體質" #, no-python-format msgid "" "It takes a lot to bring you down! You get a 20% bonus to all hit points." -msgstr "想打倒你要付出更多代價! 你獲得 20% 的HP加成。" +msgstr "想打倒你要付出更多代價! 你獲得 20% 的 HP 加成。" #: lang/json/mutation_from_json.py msgid "Durable" @@ -73503,7 +73824,7 @@ msgstr "強悍體質" #, no-python-format msgid "" "You can shrug off almost anything! You get a 30% bonus to all hit points." -msgstr "你幾乎不怕所有事情! 你獲得 30% 的HP加成。" +msgstr "你幾乎不怕所有事情! 你獲得 30% 的 HP 加成。" #: lang/json/mutation_from_json.py msgid "Unbreakable" @@ -73513,7 +73834,7 @@ msgstr "不敗體質" #: lang/json/mutation_from_json.py #, no-python-format msgid "Nothing can break you! You get a 40% bonus to all hit points." -msgstr "你什麼都不怕! 你獲得 40% 的HP加成。" +msgstr "你什麼都不怕! 你獲得 40% 的 HP 加成。" #: lang/json/mutation_from_json.py msgid "Thick-Skinned" @@ -73524,7 +73845,7 @@ msgstr "堅硬皮膚" msgid "" "Your skin is tough. Cutting damage is slightly reduced for you. Slightly " "decreases wet penalties." -msgstr "你的皮膚是硬的。能夠稍微減少砍劈傷害。也能稍微減輕身體潮溼的懲罰。" +msgstr "你的皮膚很堅韌。稍微減少受到的砍劈傷害。同時稍微減輕濕透時的懲罰。" #: lang/json/mutation_from_json.py msgid "Packmule" @@ -73961,7 +74282,7 @@ msgstr "復原慢" #. ~ Description for Slow Healer #: lang/json/mutation_from_json.py msgid "You heal a little slower than most; sleeping will heal less lost HP." -msgstr "你的復原能力比一般人差了點;睡眠時回復的HP比較少。" +msgstr "你的復原能力比一般人差了點, 睡眠時回復的 HP 比較少。" #: lang/json/mutation_from_json.py msgid "Poor Healer" @@ -74119,7 +74440,7 @@ msgstr "細皮嫩肉" #. ~ Description for Thin-Skinned #: lang/json/mutation_from_json.py msgid "Your skin is fragile. Cutting damage is slightly increased for you." -msgstr "你的皮膚容易受傷。砍劈對你的傷害稍微增加。" +msgstr "你的皮膚很脆弱。稍微增加受到的砍劈傷害。" #: lang/json/mutation_from_json.py msgid "Hates Vegetables" @@ -74434,7 +74755,7 @@ msgstr "羊毛過敏" msgid "" "You are badly allergic to wool, and can not wear any clothing made of the " "substance." -msgstr "你對羊毛過敏, 所以不能穿戴各式的羊毛製品。" +msgstr "你對羊毛嚴重過敏, 所以不能穿戴任何羊毛製成的衣物。" #: lang/json/mutation_from_json.py msgid "Truth Teller" @@ -74569,7 +74890,7 @@ msgstr "妖精之眼" msgid "" "Your eyes have turned...green. It's tough to tell the exact shade as it " "seems to shift. The effect is ...pleasant." -msgstr "你的眼睛變成了...綠色。陰影對你來說不存在。效果...真讚。" +msgstr "你的眼睛變成了… 綠色。陰影對你來說不存在。效果… 真讚。" #: lang/json/mutation_from_json.py msgid "Fey Vision" @@ -74776,7 +75097,7 @@ msgstr "鳃" msgid "" "You've grown a set of gills in your neck, allowing you to breathe " "underwater. Slightly increases wet benefits." -msgstr "你的脖子長出了一對鰓, 讓你能夠在水下呼吸。在濕水狀態下會獲得輕微加成。" +msgstr "你的頸部長出了一對鰓, 讓你能夠在水下呼吸。在濕水狀態下會獲得輕微加成。" #: lang/json/mutation_from_json.py msgid "Cephalopod Gills" @@ -74787,7 +75108,7 @@ msgstr "頭足類之鰓" msgid "" "You've grown a set of gills, running from your neck up behind your ears. " "They allow you to breathe underwater and slightly increase wet benefits." -msgstr "你的耳朵後一直延伸到脖子上長了一對䚡, 你現在可以在水下呼吸, 在濕水狀態下也會獲得輕微加成。" +msgstr "你的耳朵後一直延伸到頸部長了一對䚡, 你現在可以在水下呼吸, 在濕水狀態下也會獲得輕微加成。" #: lang/json/mutation_from_json.py msgid "Mycus Flesh" @@ -74887,7 +75208,7 @@ msgid "" "Iridescent feathers have grown to cover your entire body, providing a " "marginal protection against attacks and minor protection from cold. They " "also provide a natural waterproofing." -msgstr "你的身體長出了五彩的羽毛, 對於攻擊能夠提供部分的保護, 同時也能夠讓你免於受寒。並且讓你擁有天然的防水層。" +msgstr "七彩的羽毛長滿了你的全身, 提供了些微的攻擊防護與防寒能力, 同時提供了天然的防水層。" #: lang/json/mutation_from_json.py msgid "Down" @@ -74920,7 +75241,7 @@ msgstr "毛皮" msgid "" "Thick black fur has grown to cover your entire body, providing a marginal " "protection against attacks, and considerable protection from cold." -msgstr "厚重的黑毛長滿你的全身, 對於攻擊提供了一些保護, 並且能夠有效的禦寒。" +msgstr "厚實的黑色毛皮長滿了你的全身, 提供了些微的攻擊防護與可觀的防寒能力。" #: lang/json/mutation_from_json.py msgid "Shaggy Fur" @@ -74942,7 +75263,7 @@ msgstr "灰色毛皮" msgid "" "Dense gray fur has grown to cover your entire body, providing a marginal " "protection against attacks, and considerable protection from cold." -msgstr "濃密的灰色毛皮覆蓋你的整個身體, 對於攻擊提供了一些保護, 並且能夠有效的禦寒。" +msgstr "濃密的灰色毛皮長滿了你的全身, 提供了些微的攻擊防護與可觀的防寒能力。" #: lang/json/mutation_from_json.py msgid "Sleek Fur" @@ -74962,7 +75283,7 @@ msgstr "山貓毛皮" msgid "" "Your fur's grown out significantly around your cheeks and neck. It provides" " minor protection against attacks." -msgstr "你的下巴與頸部長滿了明顯的毛皮。能夠對抗輕微的傷害。" +msgstr "你的毛皮明顯地長滿了下巴與頸部, 提供了些微的攻擊防護。" #: lang/json/mutation_from_json.py msgid "Chitinous Skin" @@ -75044,7 +75365,7 @@ msgid "" "Significant amounts of your hairs have loosened. If some creature tries to " "attack you, your assailant is quite likely to get fine, bristly chitin in an" " irritating spot; it doesn't carry your venom but it will be distracting." -msgstr "你大量的毛髮都已脫落。若是一些怪物要攻擊你, 將會被被你類甲殼的毛髮刺到;這東西沒有毒性, 只能轉移注意力。" +msgstr "你大量的毛髮都已脫落。若是一些怪物要攻擊你, 將會被被你類甲殼的毛髮刺到。這東西沒有毒性, 只能轉移注意力。" #: lang/json/mutation_from_json.py msgid "Spines" @@ -75056,7 +75377,7 @@ msgid "" "Your skin is covered with fine spines. Whenever an unarmed opponent strikes" " a part of your body that is not covered by clothing, they will receive " "moderate damage." -msgstr "你的皮膚覆蓋了細小的刺。只要敵人與你徒手對戰時攻擊到你沒穿衣服的部份, 就會受到一定的傷害。" +msgstr "你的皮膚覆蓋了細小的刺。只要敵人與你徒手對戰時攻擊到你沒穿衣物的部份, 就會受到一定的傷害。" #: lang/json/mutation_from_json.py msgid "Quills" @@ -75068,7 +75389,7 @@ msgid "" "Your body is covered with large quills. Whenever an unarmed opponent " "strikes a part of your body that is not covered by clothing, they will " "receive significant damage." -msgstr "你的全身覆蓋了又大又長的刺。只要敵人與你徒手對戰時攻擊到你沒穿衣服的部份, 就會受到極大的傷害。" +msgstr "你的全身覆蓋了又大又長的刺。只要敵人與你徒手對戰時攻擊到你沒穿衣物的部份, 就會受到極大的傷害。" #: lang/json/mutation_from_json.py msgid "Phelloderm" @@ -75104,7 +75425,7 @@ msgid "" "Your skin is covered in small, woody thorns. Whenever an unarmed opponent " "strikes a part of your body that is not covered by clothing, they will " "receive minor damage. Your punches may also deal extra damage." -msgstr "你的全身覆蓋了又細小的木質荊棘。只要敵人與你徒手對戰時攻擊到你沒穿衣服的部份, 就會受到些許傷害。你的拳頭也能造成額外的傷害。" +msgstr "你的全身覆蓋了又細小的木質荊棘。只要敵人與你徒手對戰時攻擊到你沒穿衣物的部份, 就會受到些許傷害。你的拳頭也能造成額外的傷害。" #: lang/json/mutation_from_json.py msgid "Leaves" @@ -75205,7 +75526,7 @@ msgstr "狼爪" msgid "" "You have claws on the ends of your fingers. If you aren't wearing gloves, " "your unarmed attacks deal a minor amount of cutting damage." -msgstr "你的手指末端突變成了爪子。假如你沒有戴手套, 你的徒手攻擊能夠造成額外的砍劈傷害。" +msgstr "你的手指末端有爪子。假如你沒有戴手套, 你的徒手攻擊能造成少量的砍劈傷害。" #: lang/json/mutation_from_json.py msgid "Rat Claws" @@ -75236,7 +75557,7 @@ msgstr "伸縮爪" msgid "" "You have claws on the ends of your fingers, and can extend or retract them " "as desired. Gloves will still get in the way, though." -msgstr "你的手指末端長出了爪子, 而且可以隨意伸長或縮短, 雖然現在手套有點礙事。" +msgstr "你的手指末端有爪子, 而且可以隨意伸長或縮短。不過手套仍然有點礙事。" #: lang/json/mutation_from_json.py msgid "Tentacle Rakes" @@ -75247,7 +75568,7 @@ msgstr "觸手倒鉤" msgid "" "Your upper tentacles have grown large, hook-barbed rakes on the ends. " "They're quite vicious, but really aren't suited for fine manipulation." -msgstr "你上半身的觸手長的更粗大, 還在末端長出了鉤刺。雖然看起來滿凶狠的, 但它們真的不太好控制。" +msgstr "你上半身的觸手末端長出了巨大的倒鉤。它們相當兇狠, 但實在不適合精細操作。" #: lang/json/mutation_from_json.py msgid "Large Talons" @@ -75281,7 +75602,7 @@ msgstr "馬洛斯帶原者" msgid "" "Ever since you ate that Marloss berry, you can't get its scent out of your " "nose, and you have a strong desire to try some seeds and...sap?" -msgstr "自從你吃了馬洛斯莓, 那種味道一直在你的鼻腔中縈繞, 現在你非常的想要吃吃看他的種子或者...樹液?" +msgstr "自從你吃了馬洛斯莓, 那種味道一直在你的鼻腔中縈繞, 現在你非常的想要吃吃看他的種子或者… 樹液?" #: lang/json/mutation_from_json.py msgid "Marloss Vessel" @@ -75292,7 +75613,7 @@ msgstr "馬洛斯容器" msgid "" "Ever since you ate that Marloss seed, you can't get its taste off of your " "tongue, and you have a strong desire to try some berries and...sap?" -msgstr "自從你吃了馬洛斯種子, 那種味道一直在你的舌頭上揮之不去, 現在你非常的想要吃吃看他的果實或者...樹液?" +msgstr "自從你吃了馬洛斯種子, 那種味道一直在你的舌頭上揮之不去, 現在你非常的想要吃吃看他的果實或者… 樹液?" #: lang/json/mutation_from_json.py msgid "Marloss Vector" @@ -75449,7 +75770,7 @@ msgstr "靈活的四肢" #. ~ Description for Stretchy Limbs #: lang/json/mutation_from_json.py msgid "Your limbs seem to have a little more 'give' to them. +1 Dexterity." -msgstr "你的四肢似乎更容易彎曲。增加1點敏捷。" +msgstr "你的四肢似乎更容易彎曲。增加 1 點敏捷。" #: lang/json/mutation_from_json.py msgid "Rubbery Limbs" @@ -75460,7 +75781,7 @@ msgstr "橡膠般的四肢" msgid "" "Your limbs are significantly more flexible than any pathetic human arm or " "leg. +3 Dexterity, -2 Strength." -msgstr "你的四肢比任何可悲的人類手腳明顯的靈活許多。增加3點敏捷, 減少2點力量。" +msgstr "你的四肢比任何可悲的人類手腳明顯的靈活許多。增加 3 點敏捷, 減少 2 點力量。" #: lang/json/mutation_from_json.py msgid "Pseudolimbs" @@ -75470,7 +75791,7 @@ msgstr "偽四肢" #: lang/json/mutation_from_json.py msgid "" "Your pseudopod-like limbs can fit into anything! +4 Dexterity, -4 Strength." -msgstr "你的類動植物偽足四肢可以穿戴任何裝備。增加4點敏捷, 減少4點力量。" +msgstr "你的類動植物偽足四肢可以穿戴任何裝備。增加 4 點敏捷, 減少 4 點力量。" #: lang/json/mutation_from_json.py msgid "Compound Eyes" @@ -75506,17 +75827,17 @@ msgid "" "You have grown large, curved, and wickedly sharp talons in place of your big" " toes. Fortunately, they don't get in the way of your movement. " "Unfortunately, they do prevent you from wearing footgear." -msgstr "你的大拇指長出了大而彎曲的尖銳爪子。幸運的是, 它們並不會影響你的行動。不幸的是, 你沒辦法穿鞋。" +msgstr "你的大拇指長出了大而彎曲的尖銳爪子。幸運的是, 它們並不會影響你的移動。不幸的是, 你沒辦法穿鞋。" #: lang/json/mutation_from_json.py #, no-python-format msgid "You slash %s with a talon" -msgstr "你用爪子撕抓 %s" +msgstr "你用爪子斬擊 %s" #: lang/json/mutation_from_json.py #, no-python-format msgid "%1$s slashes %2$s with a talon" -msgstr "%1$s 用爪子撕抓 %2$s" +msgstr "%1$s 用爪子斬擊 %2$s" #: lang/json/mutation_from_json.py msgid "Hooves" @@ -75528,7 +75849,7 @@ msgid "" "Your feet have fused into hooves. This allows kicking attacks to do much " "more damage, provides natural armor, and removes the need to wear shoes; " "however, you can not wear shoes of any kind. Reduces wet effects." -msgstr "你的腳掌特化成了蹄。能夠讓你的踢擊造成更多傷害, 也像是天然的護甲, 移除了穿鞋的需求;但你再也不能穿任何的鞋子。減低濕透的影響。" +msgstr "你的腳掌特化成了蹄。能夠讓你的踢擊造成更多傷害, 也像是天然的護甲, 移除了穿鞋的需求, 但你再也不能穿任何的鞋子。減低濕透的影響。" #: lang/json/mutation_from_json.py #, no-python-format @@ -75581,7 +75902,7 @@ msgstr "食腐" msgid "" "Your digestive system is specialized to allow you to consume decaying " "material. You can eat rotten food, albeit for less nutrition than usual." -msgstr "你的消化系統特化成可以消化腐敗的食物。你能吃腐敗的食物, 儘管營養比較少。" +msgstr "你的消化系統特化成可以消化腐敗的食物。你能食用腐敗的食物, 儘管營養比較少。" #: lang/json/mutation_from_json.py msgid "Saprophage" @@ -75593,7 +75914,7 @@ msgid "" "You prefer to sustain yourself using your roots and direct nutrient " "extraction/synthesis. You can still consume 'food', though, if you have to:" " you merely prefer it aged a little." -msgstr "你喜歡以你自己的根部以及直接萃取營養的組織來養活你自己。如果必須的話, 你還是可以消耗一般的食物, 不過你還是比較喜歡腐壞的食物。" +msgstr "你喜歡以你自己的根部以及直接萃取營養的組織來養活你自己。如果必須的話, 你還是可以食用一般的食物, 不過你還是比較喜歡腐敗的食物。" #: lang/json/mutation_from_json.py msgid "Gizzard" @@ -75662,7 +75983,7 @@ msgstr "死人生吃" msgid "" "Eating rotting, long-dead flesh is good for the struggle, and safe--if still" " completely unappealing--for you." -msgstr "吃腐爛, 死很久的殭屍肉都有助你對抗飢餓, 也很安全--全看你願不願意吃而已。" +msgstr "食用腐敗、死去很久的肉有助於你對抗飢餓, 也很安全。看你願不願意吃而已。" #: lang/json/mutation_from_json.py msgid "Burrowing" @@ -75684,7 +76005,7 @@ msgid "" "Your fangs have grown extremely large and incredibly sharp. They make it " "impossible to wear mouthgear and difficult to eat... but leave nasty wounds" " when you bite." -msgstr "你的獠牙特化的非常長且銳利。讓你無法穿在嘴部裝備, 並且進食困難... 但是咬人的時候會留下可怕的傷痕。" +msgstr "你的獠牙特化的非常長且銳利。讓你無法穿在嘴部裝備, 並且進食困難… 但是咬人的時候會留下可怕的傷痕。" #: lang/json/mutation_from_json.py #, no-python-format @@ -75861,7 +76182,7 @@ msgid "" "You have a long tail with a tuft on the end. You find yourself " "instinctively swatting away flies with it, though it's not as effective at " "balancing you as you'd like. Prevents wearing non-fabric pants." -msgstr "你有著長尾巴, 末端為毛球狀。你發現自己會把附近的蒼蠅趕跑, 但是這不會影響你的身體平衡。不能穿戴非纖維製的褲子。" +msgstr "你有一條長尾巴, 末端有一簇毛球。你發現自己會本能地用它拍走蒼蠅, 雖然它不像你想的那樣能有效為你提供平衡。無法穿戴非纖維製的褲子。" #: lang/json/mutation_from_json.py msgid "Rodent Tail" @@ -75984,7 +76305,7 @@ msgstr "皮粗肉厚" msgid "" "You can survive injuries that would incapacitate humans: you get a 20% bonus" " to all hit points. Stacks with Tough, etc." -msgstr "你可以忍受那些原本可讓人類殘廢的傷害。你獲得身體全部位的20%生命加成。根據身體強壯程度而可疊加。" +msgstr "你可以忍受那些原本可讓人類殘廢的傷害。你獲得身體全部位的 20% 生命加成。根據身體強壯程度而可疊加。" #: lang/json/mutation_from_json.py msgid "Solidly Built" @@ -76008,7 +76329,7 @@ msgstr "無敵浩克" msgid "" "You can simply take the punishment from lesser beings and keep going. You " "get a 40% bonus to all hit points. Stacks with Tough, etc." -msgstr "你可以輕鬆地面對各種傷害威脅並且持續地生活下去。你獲得身體全部位的40%生命加成。根據身體強壯程度而可疊加。" +msgstr "你可以輕鬆地面對各種傷害威脅並且持續地生活下去。你獲得身體全部位的 40% 生命加成。根據身體強壯程度而可疊加。" #: lang/json/mutation_from_json.py msgid "Pain Recovery" @@ -76424,7 +76745,7 @@ msgstr "巨人" #. ~ Description for Large #: lang/json/mutation_from_json.py msgid "You carry your rugged body with the dignity you deserve. Strength +2." -msgstr "你的體態反應著你該有的尊嚴。力量+2。" +msgstr "你的體態反應著你該有的尊嚴。力量 +2。" #: lang/json/mutation_from_json.py msgid "Freakishly Huge" @@ -76437,7 +76758,7 @@ msgid "" " into human-sized clothing or vehicles. Much of it is powerful muscle mass " "(Strength +4), but it's a real pain to haul around." msgstr "" -"你長得更大了, 最明顯的一點就是連大尺碼你也穿不下, 大卡車也坐不下了。有著強大的肌肉 (力量+4), 但是這麼大的軀體要進行長途旅行是很痛苦的。" +"你長得更大了, 最明顯的一點就是連大尺碼你也穿不下, 大卡車也坐不下了。有著強大的肌肉 (力量 +4), 但是這麼大的軀體要進行長途旅行是很痛苦的。" #: lang/json/mutation_from_json.py msgid "Huge" @@ -76448,7 +76769,7 @@ msgstr "超巨人" msgid "" "Your cardiovascular system has caught up with your muscular physique, so who" " needs pathetic human cars? Strength +4." -msgstr "你的心血管系統已經配合上了你的肌肉體魄, 那麼誰還需要可悲的人類汽車? 力量+4。" +msgstr "你的心血管系統已經配合上了你的肌肉體魄, 那麼誰還需要可悲的人類汽車? 力量 +4。" #: lang/json/mutation_from_json.py msgid "Strong" @@ -76917,7 +77238,7 @@ msgstr "長吻" msgid "" "Your face and jaw have begun...changing. Masks and such fit OK, but you're " "noticeably mutated." -msgstr "你的臉與下巴開始...變化。目前還可以帶上面具之類的嘴部裝備, 但是你其實已經出現突變了。" +msgstr "你的臉與下巴開始… 變化。目前還可以帶上面具之類的嘴部裝備, 但是你其實已經出現突變了。" #: lang/json/mutation_from_json.py msgid "Bovine Snout" @@ -77029,7 +77350,7 @@ msgid "" "very light as a result, enabling you to move and attack 20% faster, but also" " frail; you can carry 40% less, and bashing attacks injure you more." msgstr "" -"你有禽骨綜合症 - 你的骨頭幾乎是空心的。由於你的身體輕盈, 讓你的攻擊和移動速度提昇 20%, 同時也有缺點;你的負重能力降低 40%, " +"你有禽骨綜合症: 你的骨頭幾乎是空心的。由於你的身體輕盈, 讓你的攻擊和移動速度提昇 20%。同時也有缺點: 你的負重能力降低 40%, " "並且鈍擊讓你受到的傷害更嚴重。" #. ~ Description for Nausea @@ -77103,7 +77424,7 @@ msgstr "易脫水" #. ~ Description for High Thirst #: lang/json/mutation_from_json.py msgid "Your body dries out easily; you need to drink more water." -msgstr "你的身體很容易脫水;你需要補充更多的水份。" +msgstr "你的身體很容易脫水, 你需要補充更多的水份。" #: lang/json/mutation_from_json.py msgid "Very Thirsty" @@ -77264,7 +77585,7 @@ msgstr "你的手融合而成類似爪子。進行精細的動作很困難: 手 #: lang/json/mutation_from_json.py msgid "Broad Paws" -msgstr "寬大手掌" +msgstr "寬大爪子" #. ~ Description for Broad Paws #: lang/json/mutation_from_json.py @@ -77272,8 +77593,7 @@ msgid "" "Your paws are much larger now. Manual dexterity is is difficult: permanent " "hand encumbrance of 20, serious problems crafting, and no gloves. But you " "can swim more effectively." -msgstr "" -"你的雙掌大了許多。手部不易做出靈巧動作: 手部的累贅程度永久 +20, 製作物品會有嚴重的問題, 當然也不能戴手套。但是你游泳的效率會好很多。" +msgstr "你的爪子大了許多。不易做出靈巧動作: 手掌累贅永久 +20, 製作物品會有嚴重的問題, 也不能戴手套。但是你游泳的效率會好很多。" #: lang/json/mutation_from_json.py msgid "Beak" @@ -77327,7 +77647,7 @@ msgstr "蜂鳥鳥嘴" msgid "" "Though your beak's not suitable for pecking, those flowers out there are a " "good source of energy. Examine them to feed." -msgstr "雖然你的鳥嘴不適合用來啄東西, 但外頭的花朵是最佳的活力來源。檢視花朵以攝取食物。" +msgstr "雖然你的鳥嘴不適合用來啄東西, 但外頭的花朵是最佳的活力來源。檢查花朵以攝取食物。" #: lang/json/mutation_from_json.py msgid "Genetically Unstable" @@ -77426,7 +77746,7 @@ msgstr "全細胞身體" msgid "" "Your body is more or less one consistent whole: a single, giant, omni-cell " "that alters itself as needed." -msgstr "你的身體大體上仍是一個前後一致的個體;一個單獨且巨大的全細胞會根據身體需求轉換成而適當的狀態。" +msgstr "你的身體大體上仍是一個前後一致的個體: 一個單獨且巨大的全細胞會根據身體需求轉換成而適當的狀態。" #: lang/json/mutation_from_json.py msgid "Herbivore" @@ -77438,7 +77758,7 @@ msgid "" "Your body's ability to digest meat is severely hampered. Eating meat has a " "good chance of making you vomit it back up; even if you manage to keep it " "down, its nutritional value is greatly reduced." -msgstr "你身體消化肉類的能力大大降低。吃肉之後很有可能會讓你嘔吐;即使沒有吐出所獲得的養分也很有限。" +msgstr "你身體消化肉類的能力大大降低。吃肉之後很有可能會讓你嘔吐, 即使沒有吐出所獲得的養分也很有限。" #: lang/json/mutation_from_json.py msgid "Carnivore" @@ -77598,7 +77918,7 @@ msgid "" "your speed for every 5 (2.8) degrees below 65 F (18.3 C). This sluggishness" " helps you conserve energy, however." msgstr "" -"環境溫度的高低反應在你的肌肉上。身處在在華氏65度 (攝氏18.3度) 以下時, 每低於華氏5度 (攝氏2.8度) 就會降低你的速度 " +"環境溫度的高低反應在你的肌肉上。身處在在華氏 65 度 (攝氏18.3度) 以下時, 每低於華氏 5 度 (攝氏 2.8 度) 就會降低你的速度 " "1%。不過這也稍為幫助你節省能量。" #: lang/json/mutation_from_json.py @@ -77613,7 +77933,7 @@ msgid "" "1% of your speed for every 3 (1.7) degrees below 65 F (18.3 C), but your " "slow metabolism requires much less food." msgstr "" -"環境溫度的高低大量反應在你的肌肉上。身處在華氏65度 (攝氏18.3度) 以下時, 每低於華氏3度 (攝氏1.7度) 就會降低你的速度 " +"環境溫度的高低大量反應在你的肌肉上。身處在華氏 65 度 (攝氏18.3度) 以下時, 每低於華氏 3 度 (攝氏 1.7 度) 就會降低你的速度 " "1%。但減慢了新陳代謝也使你需要更少食物。" #: lang/json/mutation_from_json.py @@ -77628,8 +77948,8 @@ msgid "" "speed for every 2 (1.1) degrees below 65 F (18.3 C), but only need to eat " "about half as much as before." msgstr "" -"你現在是冷血動物且需要依賴熱能去行動。當你身處在華氏65度 (攝氏18.3度) 以下時, 每低於華氏2度 (攝氏1.1度) 就會使你失去 1% 速度, " -"但同時使你只需要吃平時一半的食物。" +"你現在是冷血動物且需要依賴熱能去行動。當你身處在華氏 65 度 (攝氏 18.3 度) 以下時, 每低於華氏 2 度 (攝氏1.1度) 就會使你失去 " +"1% 速度, 但同時使你只需要吃平時一半的食物。" #: lang/json/mutation_from_json.py msgid "Ectothermic" @@ -77642,8 +77962,8 @@ msgid "" "--for every 2 (1.1) degrees below or above 65 F (18.3 C). You only need to " "eat half as much as an average human." msgstr "" -"你已經完全變成冷血動物。身處在華氏65度 (攝氏18.3度) 以下 (以上) 時, 每低於 (高於) 華氏2度 (攝氏1.1度) 會使你失去 (增加) " -"速度。你也只需要進食正常人一半的食物。" +"你已經完全變成冷血動物。身處在華氏 65 度 (攝氏18.3度) 以下 (以上) 時, 每低於 (高於) 華氏 2 度 (攝氏 1.1 度) 會使你失去" +" (增加) 速度。你也只需要進食正常人一半的食物。" #: lang/json/mutation_from_json.py msgid "Growling Voice" @@ -77832,7 +78152,7 @@ msgid "" "You find you can use the empty space as 16 storage space, but cannot wear " "anything on your torso. Somewhat reduces wet effects." msgstr "" -"你的軀幹長出了一層薄殼, 可作為極佳的護甲。你同時在裡面還找到 16 單位的儲物空間, 但是你就不能再軀幹上穿上任何東西了。稍微增加防水能力。" +"你的軀幹長出了一層薄殼, 可作為極佳的護甲。你同時在裡面還找到 16 單位的儲物空間, 但是你就不能再軀幹上穿戴任何東西了。稍微增加防水能力。" #: lang/json/mutation_from_json.py msgid "Roomy Shell" @@ -77935,7 +78255,7 @@ msgstr "文明崩壞? 太讚了! 你和你的親戚再也不用擔心屠宰場 msgid "" "It would be good to be a Queen, having workers constantly servicing your " "every need...but how would you keep them in line?" -msgstr "當個皇后真好, 有工人服伺你的需要...但, 要怎麼讓他們排好隊?" +msgstr "當個皇后真好, 有工人服伺你的需要… 但, 要怎麼讓他們排好隊?" #. ~ Description for Plant #: lang/json/mutation_from_json.py @@ -77953,7 +78273,7 @@ msgstr "水形" msgid "" "What was that old advertisement, 'paint the planet'? That might be a good " "long-term goal, but for now..." -msgstr "曾經有個古老的廣告叫什麼... \"彩繪地球\"? 那也許是個很好的長期目標, 但是目前來說..." +msgstr "曾經有個古老的廣告叫什麼… \"彩繪地球\"? 那也許是個很好的長期目標, 但是目前來說…" #: lang/json/mutation_from_json.py msgid "Subterranean" @@ -78472,7 +78792,7 @@ msgstr "除錯工具空間" msgid "" "Crafting and construction requirements bugger off with this one. Apply with" " care." -msgstr "不再為物品製作及建設時的各種要求費心。小心應用。" +msgstr "不再為物品製作及建造時的各種要求費心。小心應用。" #: lang/json/mutation_from_json.py msgid "Debug CBM Slots Limits" @@ -78644,7 +78964,7 @@ msgstr "科學家" #: lang/json/npc_class_from_json.py msgid "I'm looking for clues concerning these monsters' origins..." -msgstr "我正在尋找這些怪物的源頭線索..." +msgstr "我正在尋找這些怪物的源頭線索…" #: lang/json/npc_class_from_json.py msgid "Bounty Hunter" @@ -78713,7 +79033,7 @@ msgstr "" #: lang/json/npc_class_from_json.py lang/json/npc_from_json.py msgid "Refugee" -msgstr "" +msgstr "難民" #: lang/json/npc_class_from_json.py msgid "I got locked up those yahoos." @@ -78849,7 +79169,7 @@ msgstr "" #: lang/json/npc_class_from_json.py msgid "Troglobite Mutant" -msgstr "" +msgstr "穴居動物突變" #: lang/json/npc_class_from_json.py msgid "" @@ -78955,19 +79275,19 @@ msgstr "" #: lang/json/npc_from_json.py msgid "Broker" -msgstr "" +msgstr "盤商" #: lang/json/npc_from_json.py msgid "Guard" -msgstr "" +msgstr "守衛" #: lang/json/npc_from_json.py msgid "Foreman" -msgstr "" +msgstr "工頭" #: lang/json/npc_from_json.py msgid "Carpenter" -msgstr "" +msgstr "木匠" #: lang/json/npc_from_json.py msgid "Lumberjack" @@ -78975,11 +79295,11 @@ msgstr "伐木工" #: lang/json/npc_from_json.py msgid "Woodworker" -msgstr "" +msgstr "木工" #: lang/json/npc_from_json.py msgid "Crop Overseer" -msgstr "" +msgstr "作物巡查員" #: lang/json/npc_from_json.py msgid "Farmer" @@ -78987,27 +79307,27 @@ msgstr "農夫" #: lang/json/npc_from_json.py msgid "Laborer" -msgstr "" +msgstr "勞工" #: lang/json/npc_from_json.py msgid "Nurse" -msgstr "" +msgstr "護士" #: lang/json/npc_from_json.py msgid "Scrapper" -msgstr "" +msgstr "廢料承辦員" #: lang/json/npc_from_json.py msgid "Scavenger Boss" -msgstr "" +msgstr "拾荒者頭目" #: lang/json/npc_from_json.py msgid "Barber" -msgstr "" +msgstr "理髮師" #: lang/json/npc_from_json.py msgid "Merc" -msgstr "" +msgstr "商人" #: lang/json/npc_from_json.py msgid "Makayla Sanchez" @@ -79015,15 +79335,15 @@ msgstr "" #: lang/json/npc_from_json.py msgid "Bandit" -msgstr "" +msgstr "強盜" #: lang/json/npc_from_json.py msgid "Psycho" -msgstr "" +msgstr "精神病患" #: lang/json/npc_from_json.py msgid "Raider" -msgstr "" +msgstr "掠奪者" #: lang/json/overmap_terrain_from_json.py #: lang/json/overmap_terrain_from_json.py src/mapdata.cpp src/mapdata.cpp @@ -79038,7 +79358,7 @@ msgstr "露天的" #: lang/json/overmap_terrain_from_json.py msgid "city building" -msgstr "" +msgstr "城市建築" #: lang/json/overmap_terrain_from_json.py msgid "basement" @@ -79092,13 +79412,13 @@ msgstr "河" msgid "river bank" msgstr "河岸" -#: lang/json/overmap_terrain_from_json.py +#: lang/json/overmap_terrain_from_json.py lang/json/snippet_from_json.py msgid "house" msgstr "房屋" #: lang/json/overmap_terrain_from_json.py msgid "duplex" -msgstr "" +msgstr "複式房子" #: lang/json/overmap_terrain_from_json.py msgid "parking lot" @@ -79142,7 +79462,7 @@ msgstr "停車塔" #: lang/json/overmap_terrain_from_json.py msgid "office courtyard" -msgstr "" +msgstr "辦公室庭院" #: lang/json/overmap_terrain_from_json.py msgid "church" @@ -79214,11 +79534,11 @@ msgstr "酒吧" #: lang/json/overmap_terrain_from_json.py msgid "butcher shop" -msgstr "" +msgstr "肉店" #: lang/json/overmap_terrain_from_json.py msgid "bike shop" -msgstr "" +msgstr "自行車商店" #: lang/json/overmap_terrain_from_json.py msgid "pizza parlor" @@ -79346,7 +79666,7 @@ msgstr "利爪怪巢穴" #: lang/json/overmap_terrain_from_json.py msgid "fema camp" -msgstr "急難救助營" +msgstr "聯邦緊急事務管理署營地" #: lang/json/overmap_terrain_from_json.py msgid "radio station" @@ -79366,23 +79686,23 @@ msgstr "實驗室" #: lang/json/overmap_terrain_from_json.py msgid "science lab tower" -msgstr "" +msgstr "實驗室大樓" #: lang/json/overmap_terrain_from_json.py msgid "science train depot" -msgstr "" +msgstr "實驗室車站" #: lang/json/overmap_terrain_from_json.py msgid "central train depot" -msgstr "" +msgstr "中央車站" #: lang/json/overmap_terrain_from_json.py msgid "access shaft" -msgstr "" +msgstr "通道井" #: lang/json/overmap_terrain_from_json.py msgid "central lab" -msgstr "" +msgstr "中心實驗室" #: lang/json/overmap_terrain_from_json.py msgid "military bunker" @@ -79462,7 +79782,7 @@ msgstr "蟻丘" #: lang/json/overmap_terrain_from_json.py msgid "sulfurous anthill" -msgstr "" +msgstr "含硫蟻丘" #: lang/json/overmap_terrain_from_json.py msgid "slime pit" @@ -79490,7 +79810,7 @@ msgstr "地獄入口" #: lang/json/overmap_terrain_from_json.py msgid "subway station (sewer level)" -msgstr "" +msgstr "地鐵站 (下水道)" #: lang/json/overmap_terrain_from_json.py msgid "subway station (underground level)" @@ -79526,7 +79846,7 @@ msgstr "教戰室" #: lang/json/overmap_terrain_from_json.py msgid "mall - loading bay" -msgstr "購物中心-卸貨區" +msgstr "購物中心 - 卸貨區" #: lang/json/overmap_terrain_from_json.py msgid "mall - utilities" @@ -79767,7 +80087,7 @@ msgstr "路邊攤" #: lang/json/overmap_terrain_from_json.py msgid "garage - gas station" -msgstr "" +msgstr "車庫 - 加油站" #: lang/json/overmap_terrain_from_json.py msgid "religious cemetery" @@ -79819,7 +80139,7 @@ msgstr "州立公園停車場" #: lang/json/overmap_terrain_from_json.py msgid "fishing pond" -msgstr "" +msgstr "釣魚池" #: lang/json/overmap_terrain_from_json.py msgid "small cemetery" @@ -79831,7 +80151,7 @@ msgstr "果樹園" #: lang/json/overmap_terrain_from_json.py msgid "skate park" -msgstr "" +msgstr "滑板公園" #: lang/json/overmap_terrain_from_json.py msgid "small office" @@ -79859,39 +80179,39 @@ msgstr "小型貯藏庫" #: lang/json/overmap_terrain_from_json.py msgid "lumberyard" -msgstr "" +msgstr "伐木場" #: lang/json/overmap_terrain_from_json.py msgid "construction site" -msgstr "" +msgstr "工地" #: lang/json/overmap_terrain_from_json.py msgid "post office" -msgstr "" +msgstr "郵局" #: lang/json/overmap_terrain_from_json.py msgid "candy shop" -msgstr "" +msgstr "糖果店" #: lang/json/overmap_terrain_from_json.py msgid "bakery" -msgstr "" +msgstr "烘焙坊" #: lang/json/overmap_terrain_from_json.py msgid "icecream shop" -msgstr "" +msgstr "冰淇淋店" #: lang/json/overmap_terrain_from_json.py msgid "camp survey" -msgstr "" +msgstr "調查營地" #: lang/json/overmap_terrain_from_json.py msgid "survivor camp" -msgstr "" +msgstr "倖存者營地" #: lang/json/overmap_terrain_from_json.py msgid "survivor base" -msgstr "" +msgstr "倖存者基地" #: lang/json/overmap_terrain_from_json.py msgid "farm survey" @@ -79912,19 +80232,19 @@ msgstr "" #: lang/json/overmap_terrain_from_json.py msgid "kitchen" -msgstr "" +msgstr "廚房" #: lang/json/overmap_terrain_from_json.py msgid "hide site" -msgstr "" +msgstr "藏匿地" #: lang/json/overmap_terrain_from_json.py msgid "trench" -msgstr "" +msgstr "壕溝" #: lang/json/overmap_terrain_from_json.py msgid "spiked trench" -msgstr "" +msgstr "尖刺壕" #: lang/json/overmap_terrain_from_json.py msgid "blacksmith survey" @@ -79932,120 +80252,120 @@ msgstr "" #: lang/json/overmap_terrain_from_json.py msgid "blacksmith shop" -msgstr "" +msgstr "鐵匠鋪" #: lang/json/overmap_terrain_from_json.py msgid "dumpsite" -msgstr "" +msgstr "垃圾場" #: lang/json/overmap_terrain_from_json.py msgid "dump" -msgstr "" +msgstr "垃圾場" #: lang/json/overmap_terrain_from_json.py msgid "recycle center" -msgstr "" +msgstr "回收中心" #: lang/json/overmap_terrain_from_json.py msgid "landfill" -msgstr "" +msgstr "垃圾掩埋場" #: lang/json/overmap_terrain_from_json.py msgid "junkyard" -msgstr "" +msgstr "垃圾場" #: lang/json/overmap_terrain_from_json.py msgid "nature trail" -msgstr "" +msgstr "自然步道" #: lang/json/overmap_terrain_from_json.py msgid "public pond" -msgstr "" +msgstr "公共池塘" #: lang/json/overmap_terrain_from_json.py msgid "cemetery" -msgstr "" +msgstr "公墓" #: lang/json/overmap_terrain_from_json.py msgid "community garden" -msgstr "" +msgstr "社區花園" #: lang/json/overmap_terrain_from_json.py msgid "public garden" -msgstr "" +msgstr "公共花園" #: lang/json/overmap_terrain_from_json.py msgid "botanical garden" -msgstr "" +msgstr "植物園" #: lang/json/overmap_terrain_from_json.py msgid "tree farm" -msgstr "" +msgstr "林場" #: lang/json/overmap_terrain_from_json.py msgid "dirt road" -msgstr "" +msgstr "泥土路" #: lang/json/overmap_terrain_from_json.py msgid "rural house" -msgstr "" +msgstr "農村的房子" #: lang/json/overmap_terrain_from_json.py msgid "moonshine still" -msgstr "" +msgstr "私釀酒廠" #: lang/json/overmap_terrain_from_json.py msgid "shooting range" -msgstr "" +msgstr "靶場" #: lang/json/overmap_terrain_from_json.py #: lang/json/start_location_from_json.py msgid "campground" -msgstr "" +msgstr "露營地" #: lang/json/overmap_terrain_from_json.py msgid "desolate barn" -msgstr "" +msgstr "荒僻的穀倉" #: lang/json/overmap_terrain_from_json.py msgid "empty commercial lot" -msgstr "" +msgstr "閒置的商業地段" #: lang/json/overmap_terrain_from_json.py msgid "empty residential lot" -msgstr "" +msgstr "閒置的住宅用地" #: lang/json/overmap_terrain_from_json.py msgid "abandoned warehouse" -msgstr "" +msgstr "廢棄的倉庫" #: lang/json/overmap_terrain_from_json.py msgid "dollar store" -msgstr "" +msgstr "十元商店" #: lang/json/overmap_terrain_from_json.py msgid "LAN center" -msgstr "" +msgstr "區網中心" #: lang/json/overmap_terrain_from_json.py msgid "landscaping supply co" -msgstr "" +msgstr "園林綠化公司" #: lang/json/overmap_terrain_from_json.py msgid "golf course" -msgstr "" +msgstr "高爾夫球場" #: lang/json/overmap_terrain_from_json.py msgid "golf course parking lot" -msgstr "" +msgstr "高爾夫球場停車場" #: lang/json/overmap_terrain_from_json.py msgid "golf course service building" -msgstr "" +msgstr "高爾夫球場服務大樓" #: lang/json/overmap_terrain_from_json.py msgid "veterans of foreign wars" -msgstr "" +msgstr "海外作戰退伍軍人協會" #: lang/json/overmap_terrain_from_json.py msgid "thrift store" @@ -80061,7 +80381,7 @@ msgstr "寵物用品店" #: lang/json/overmap_terrain_from_json.py msgid "storage units" -msgstr "" +msgstr "倉儲庫房" #: lang/json/overmap_terrain_from_json.py msgid "baseball field" @@ -80069,71 +80389,71 @@ msgstr "棒球場" #: lang/json/overmap_terrain_from_json.py msgid "abandoned shopping plaza" -msgstr "" +msgstr "廢棄的購物廣場" #: lang/json/overmap_terrain_from_json.py msgid "rest area" -msgstr "" +msgstr "休息區" #: lang/json/overmap_terrain_from_json.py msgid "rest area parking" -msgstr "" +msgstr "休息區停車場" #: lang/json/overmap_terrain_from_json.py msgid "zoo parking" -msgstr "" +msgstr "動物園停車場" #: lang/json/overmap_terrain_from_json.py msgid "zoo pavilion" -msgstr "" +msgstr "動物園展館" #: lang/json/overmap_terrain_from_json.py msgid "zoo" -msgstr "" +msgstr "動物園" #: lang/json/overmap_terrain_from_json.py msgid "stadium parking" -msgstr "" +msgstr "體育館停車場" #: lang/json/overmap_terrain_from_json.py msgid "stadium" -msgstr "" +msgstr "體育館" #: lang/json/overmap_terrain_from_json.py msgid "stadium entrance" -msgstr "" +msgstr "體育館入口" #: lang/json/overmap_terrain_from_json.py msgid "stadium field" -msgstr "" +msgstr "體育館球場" #: lang/json/overmap_terrain_from_json.py msgid "stadium garage" -msgstr "" +msgstr "體育館車庫" #: lang/json/overmap_terrain_from_json.py msgid "stadium bar" -msgstr "" +msgstr "體育館酒吧" #: lang/json/overmap_terrain_from_json.py msgid "Head Shop" -msgstr "" +msgstr "大麻專賣店" #: lang/json/overmap_terrain_from_json.py msgid "Natural Spring" -msgstr "" +msgstr "天然溫泉" #: lang/json/overmap_terrain_from_json.py msgid "movie theater" -msgstr "" +msgstr "電影院" #: lang/json/overmap_terrain_from_json.py msgid "movie theater entrance" -msgstr "" +msgstr "電影院入口" #: lang/json/overmap_terrain_from_json.py msgid "paintball field" -msgstr "" +msgstr "漆彈射擊場" #: lang/json/overmap_terrain_from_json.py msgid "smoking lounge" @@ -80141,31 +80461,39 @@ msgstr "吸菸室" #: lang/json/overmap_terrain_from_json.py msgid "music venue" -msgstr "" +msgstr "音樂廳" #: lang/json/overmap_terrain_from_json.py msgid "gambling hall" -msgstr "" +msgstr "賭場大廳" #: lang/json/overmap_terrain_from_json.py msgid "homeless camp" -msgstr "" +msgstr "街友營地" #: lang/json/overmap_terrain_from_json.py msgid "small scrap yard" -msgstr "" +msgstr "小型廢料場" #: lang/json/overmap_terrain_from_json.py msgid "strip club" -msgstr "" +msgstr "脫衣舞俱樂部" #: lang/json/overmap_terrain_from_json.py msgid "trailer park" -msgstr "" +msgstr "旅行拖車園區" #: lang/json/overmap_terrain_from_json.py msgid "mass grave" -msgstr "" +msgstr "萬人塚" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station" +msgstr "火車站" + +#: lang/json/overmap_terrain_from_json.py +msgid "railroad station parking lot" +msgstr "火車站停車場" #: lang/json/overmap_terrain_from_json.py msgid "abandoned drive-through" @@ -80173,11 +80501,11 @@ msgstr "廢棄的得來速" #: lang/json/overmap_terrain_from_json.py msgid "animal pound" -msgstr "" +msgstr "動物拘留所" #: lang/json/overmap_terrain_from_json.py msgid "animal shelter" -msgstr "" +msgstr "動物收容所" #: lang/json/overmap_terrain_from_json.py msgid "antique store" @@ -80245,11 +80573,11 @@ msgstr "破產比薩店" #: lang/json/overmap_terrain_from_json.py msgid "boat rental" -msgstr "" +msgstr "船隻租賃" #: lang/json/overmap_terrain_from_json.py msgid "riverside dwelling" -msgstr "" +msgstr "河濱住宅" #: lang/json/overmap_terrain_from_json.py msgid "municipal reactor" @@ -80265,11 +80593,11 @@ msgstr "廢料貯藏庫" #: lang/json/overmap_terrain_from_json.py msgid "reactor control" -msgstr "" +msgstr "反應爐操控" #: lang/json/overmap_terrain_from_json.py msgid "reactor room" -msgstr "" +msgstr "核反應堆室" #: lang/json/overmap_terrain_from_json.py msgid "wildlife field office" @@ -80277,55 +80605,55 @@ msgstr "野生動物飼養基地" #: lang/json/overmap_terrain_from_json.py msgid "diner" -msgstr "" +msgstr "飯店" #: lang/json/overmap_terrain_from_json.py msgid "apartment" -msgstr "" +msgstr "公寓" #: lang/json/overmap_terrain_from_json.py msgid "dealership" -msgstr "" +msgstr "經銷商" #: lang/json/overmap_terrain_from_json.py msgid "outdoorsman's store" -msgstr "" +msgstr "戶外活動用品店" #: lang/json/overmap_terrain_from_json.py msgid "gaming store" -msgstr "" +msgstr "電子遊戲機店" #: lang/json/overmap_terrain_from_json.py msgid "airport" -msgstr "" +msgstr "機場" #: lang/json/overmap_terrain_from_json.py msgid "runway" -msgstr "" +msgstr "跑道" #: lang/json/overmap_terrain_from_json.py msgid "light industry" -msgstr "" +msgstr "輕工業" #: lang/json/overmap_terrain_from_json.py msgid "reception" -msgstr "" +msgstr "招待所" #: lang/json/overmap_terrain_from_json.py msgid "bunker" -msgstr "" +msgstr "地堡" #: lang/json/overmap_terrain_from_json.py msgid "scavenger bunker" -msgstr "" +msgstr "拾荒者地堡" #: lang/json/overmap_terrain_from_json.py msgid "VFW hall" -msgstr "" +msgstr "海外作戰退伍軍人協會大廳" #: lang/json/overmap_terrain_from_json.py msgid "apartment towers" -msgstr "" +msgstr "公寓大樓" #: lang/json/overmap_terrain_from_json.py msgid "factory" @@ -80357,83 +80685,83 @@ msgstr "國民警衛隊營地" #: lang/json/overmap_terrain_from_json.py msgid "Heliport" -msgstr "" +msgstr "直升機場" #: lang/json/overmap_terrain_from_json.py msgid "motor pool" -msgstr "" +msgstr "車輛調配場" #: lang/json/overmap_terrain_from_json.py msgid "repair bay" -msgstr "" +msgstr "修理區" #: lang/json/overmap_terrain_from_json.py msgid "barracks" -msgstr "" +msgstr "兵營" #: lang/json/overmap_terrain_from_json.py msgid "fuel point" -msgstr "" +msgstr "加油站" #: lang/json/overmap_terrain_from_json.py msgid "company ops facility" -msgstr "" +msgstr "行政大樓" #: lang/json/overmap_terrain_from_json.py msgid "arms room" -msgstr "" +msgstr "軍械室" #: lang/json/overmap_terrain_from_json.py msgid "dining facility" -msgstr "" +msgstr "餐飲設施" #: lang/json/overmap_terrain_from_json.py msgid "adv. warfare center" -msgstr "" +msgstr "先進戰鬥中心" #: lang/json/overmap_terrain_from_json.py msgid "range" -msgstr "" +msgstr "靶場" #: lang/json/overmap_terrain_from_json.py msgid "aid station" -msgstr "" +msgstr "醫護站" #: lang/json/overmap_terrain_from_json.py msgid "commo building" -msgstr "" +msgstr "通信大樓" #: lang/json/overmap_terrain_from_json.py msgid "battalion HQ" -msgstr "" +msgstr "營總部" #: lang/json/overmap_terrain_from_json.py msgid "flag pole" -msgstr "" +msgstr "旗桿" #: lang/json/overmap_terrain_from_json.py msgid "shoppette" -msgstr "" +msgstr "營站" #: lang/json/overmap_terrain_from_json.py msgid "gym" -msgstr "" +msgstr "健身房" #: lang/json/overmap_terrain_from_json.py msgid "ammunition supply point" -msgstr "" +msgstr "彈藥庫" #: lang/json/overmap_terrain_from_json.py msgid "Launch Station" -msgstr "" +msgstr "發射站" #: lang/json/overmap_terrain_from_json.py msgid "helipad" -msgstr "" +msgstr "直升機停機坪" #: lang/json/overmap_terrain_from_json.py msgid "Military Complex" -msgstr "" +msgstr "軍工複合體" #: lang/json/overmap_terrain_from_json.py #: lang/json/overmap_terrain_from_json.py src/vehicle_use.cpp @@ -80442,23 +80770,23 @@ msgstr "反應爐" #: lang/json/overmap_terrain_from_json.py msgid "weapons lab" -msgstr "" +msgstr "武器實驗室" #: lang/json/overmap_terrain_from_json.py msgid "genetics lab" -msgstr "" +msgstr "遺傳學實驗室" #: lang/json/overmap_terrain_from_json.py msgid "microbiology lab" -msgstr "" +msgstr "微生物學實驗室" #: lang/json/overmap_terrain_from_json.py msgid "rocketry lab" -msgstr "" +msgstr "火箭實驗室" #: lang/json/overmap_terrain_from_json.py msgid "robot dispatch center" -msgstr "" +msgstr "機器人調度中心" #: lang/json/overmap_terrain_from_json.py msgid "dense urban" @@ -80490,7 +80818,7 @@ msgstr "汽車修理工房" #: lang/json/overmap_terrain_from_json.py msgid "mechanic garage" -msgstr "" +msgstr "機具車庫" #: lang/json/overmap_terrain_from_json.py msgid "interface" @@ -80502,31 +80830,31 @@ msgstr "變電所" #: lang/json/overmap_terrain_from_json.py msgid "animal clinic" -msgstr "" +msgstr "動物診所" #: lang/json/overmap_terrain_from_json.py msgid "war memorial" -msgstr "" +msgstr "戰爭紀念館" #: lang/json/overmap_terrain_from_json.py msgid "ruined cabin - barn" -msgstr "" +msgstr "頹傾小屋 - 穀倉" #: lang/json/overmap_terrain_from_json.py msgid "ruined cabin - car corner" -msgstr "" +msgstr "頹傾小屋 - 牆角" #: lang/json/overmap_terrain_from_json.py msgid "ruined cabin - dirt plaza" -msgstr "" +msgstr "頹傾小屋 - 泥土廣場" #: lang/json/overmap_terrain_from_json.py msgid "FEMA refugee camp" -msgstr "" +msgstr "聯邦緊急事務管理署難民營" #: lang/json/overmap_terrain_from_json.py msgid "megastore roof" -msgstr "" +msgstr "大賣場屋頂" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -80878,7 +81206,7 @@ msgid "" "grand tours now, but as the saying goes: Life is like riding a bicycle, you " "got to keep moving." msgstr "" -"在災變到來以前, 你是一個前途光明的自行車賽車手, 或許你現在已經不用再比賽了, 但是就像俗話說的: 生命就像騎上一台腳踏車, 你必須前進。" +"在災變到來以前, 你是一個前途光明的自行車賽車手, 或許你現在已經不用再比賽了, 但是就像俗話說的: 生命就像騎上一台自行車, 你必須前進。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -80894,7 +81222,7 @@ msgid "" "grand tours now, but as the saying goes: Life is like riding a bicycle, you " "got to keep moving." msgstr "" -"在災變到來以前, 你是一個前途光明的自行車賽車手, 或許你現在已經不用再比賽了, 但是就像俗話說的: 生命就像騎上一台腳踏車, 你必須前進。" +"在災變到來以前, 你是一個前途光明的自行車賽車手, 或許你現在已經不用再比賽了, 但是就像俗話說的: 生命就像騎上一台自行車, 你必須前進。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -81778,7 +82106,7 @@ msgid "" "You were in the middle of a nice, hot shower when the cataclysm struck! You" " barely managed to escape with some soap and the most massively useful thing" " ever... a towel." -msgstr "災變降臨時, 你正洗著一個舒服的熱水澡, 你逃出來的時候身上帶著肥皂, 還有人類歷史上最有用的東西....一條毛巾。" +msgstr "災變降臨時, 你正洗著一個舒服的熱水澡, 你逃出來的時候身上帶著肥皂, 還有人類歷史上最有用的東西… 一條毛巾。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -81792,7 +82120,7 @@ msgid "" "You were in the middle of a nice, hot shower when the cataclysm struck! You" " barely managed to escape with some soap and the most massively useful thing" " ever... a towel." -msgstr "災變降臨時, 你正洗著一個舒服的熱水澡, 你逃出來的時候身上帶著肥皂, 還有人類歷史上最有用的東西....一條毛巾。" +msgstr "災變降臨時, 你正洗著一個舒服的熱水澡, 你逃出來的時候身上帶著肥皂, 還有人類歷史上最有用的東西… 一條毛巾。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -82768,7 +83096,8 @@ msgid "" " The world has moved on but your posthuman hunger still cries out to be " "fed; where will you get your bionic fix now?" msgstr "" -"過去你迷戀於生化增強科技, 出入在誨暗黑街的地下生化診所, 裝了許多二手CBM。世界繼續轉動, 而你渴望的人格還想要更多;你現在要到哪裡才能修生化插件?" +"過去你迷戀於生化增強科技, 出入在誨暗黑街的地下生化診所, 裝了許多二手生化插件。世界繼續轉動, " +"而你渴望的人格還想要更多。你現在要到哪裡才能修生化插件?" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -82784,7 +83113,8 @@ msgid "" " The world has moved on but your posthuman hunger still cries out to be " "fed; where will you get your bionic fix now?" msgstr "" -"過去你迷戀於生化增強科技, 出入在誨暗黑街的地下生化診所, 裝了許多二手CBM。世界繼續轉動, 而你渴望的人格還想要更多;你現在要到哪裡才能修生化插件?" +"過去你迷戀於生化增強科技, 出入在誨暗黑街的地下生化診所, 裝了許多二手生化插件。世界繼續轉動, " +"而你渴望的人格還想要更多。你現在要到哪裡才能修生化插件?" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -83200,7 +83530,7 @@ msgid "" "You were delivering the morning paper along your usual route when the " "Cataclysm struck. The undead hordes don't seem to value the latest news, " "but at least your trusty bicycle is still in working order." -msgstr "當你沿著日常路線投遞晨報時, 大災變來襲。那一大群的不死者似乎不怎麼重視最新消息, 但起碼你最信賴的腳踏車仍能正常運轉。" +msgstr "當你沿著日常路線投遞晨報時, 大災變來襲。那一大群的不死者似乎不怎麼重視最新消息, 但起碼你最信賴的自行車仍能正常運轉。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -83214,7 +83544,7 @@ msgid "" "You were delivering the morning paper along your usual route when the " "Cataclysm struck. The undead hordes don't seem to value the latest news, " "but at least your trusty bicycle is still in working order." -msgstr "當你沿著日常路線投遞晨報時, 大災變來襲。那一大群的不死者似乎不怎麼重視最新消息, 但起碼你最信賴的腳踏車仍能正常運轉。" +msgstr "當你沿著日常路線投遞晨報時, 大災變來襲。那一大群的不死者似乎不怎麼重視最新消息, 但起碼你最信賴的自行車仍能正常運轉。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -83499,8 +83829,7 @@ msgid "" "basic training for your job. You do however have your trusty tazer, baton, " "and pocket knife." msgstr "" -"你是一名大賣場的警衛。雖說是一名警衛, 但你並沒有學到任何有用的技能, 除了一些警衛相關的基本訓練之外。然而幸好你身上還攜帶著一些好夥伴, " -"電擊槍、警棍以及小摺刀。" +"你是一名大賣場的保全。除了一些保全相關的基本訓練之外, 你沒有學到任何有用的技能。然而幸好你身上還攜帶著一些好夥伴, 電擊槍、警棍以及口袋刀。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -83515,8 +83844,7 @@ msgid "" "basic training for your job. You do however have your trusty tazer, baton, " "and pocket knife." msgstr "" -"你是一名大賣場的警衛。雖說是一名警衛, 但你並沒有學到任何有用的技能, 除了一些警衛相關的基本訓練之外。然而幸好你身上還攜帶著一些好夥伴, " -"電擊槍、警棍以及小摺刀。" +"妳是一名大賣場的保全。除了一些保全相關的基本訓練之外, 妳沒有學到任何有用的技能。然而幸好妳身上還攜帶著一些好夥伴, 電擊槍、警棍以及口袋刀。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -83830,7 +84158,7 @@ msgid "" "fun chemicals that make things go boom. At least now no one's around to " "tell you that you can't." msgstr "" -"你是學校科學社的社員, 而你現在感到心煩意亂, 就像當初學校不讓你玩些真正有趣的化學藥劑(會讓東西爆炸那種)時一樣。但起碼現在不會有人在你旁邊, " +"你是學校科學社的社員, 而你現在感到心煩意亂, 就像當初學校不讓你玩些真正有趣的化學藥劑 (會讓東西爆炸那種) 時一樣。但起碼現在不會有人在你旁邊, " "叫你不能做什麼。" #: lang/json/professions_from_json.py @@ -83847,7 +84175,7 @@ msgid "" "fun chemicals that make things go boom. At least now no one's around to " "tell you that you can't." msgstr "" -"你是學校科學社的社員, 而你現在感到心煩意亂, 就像當初學校不讓你玩些真正有趣的化學藥劑(會讓東西爆炸那種)時一樣。但起碼現在不會有人在你旁邊, " +"你是學校科學社的社員, 而你現在感到心煩意亂, 就像當初學校不讓你玩些真正有趣的化學藥劑 (會讓東西爆炸那種) 時一樣。但起碼現在不會有人在你旁邊, " "叫你不能做什麼。" #: lang/json/professions_from_json.py @@ -83862,7 +84190,7 @@ msgid "" "You were a member of the school A/V club. You're sure there's some way you " "can use your technical skills to help stay alive. You just haven't figured " "out how to make an awesome death ray yet." -msgstr "你是學校影音社的一個社員。你很確信你擁有的科技知識能夠幫助你生存。只是你還摸不清楚到底要怎麼做出一個強大的死光射線裝置。" +msgstr "你是學校影音社的一個社員。你很確信你擁有的科技知識能夠幫助你生存。只是你還沒搞清楚到底要怎麼做出一個強大的死光射線裝置。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -83876,7 +84204,7 @@ msgid "" "You were a member of the school A/V club. You're sure there's some way you " "can use your technical skills to help stay alive. You just haven't figured " "out how to make an awesome death ray yet." -msgstr "你是學校影音社的一個社員。你很確信你擁有的科技知識能夠幫助你生存。只是你還摸不清楚到底要怎麼做出一個強大的死光射線裝置。" +msgstr "你是學校影音社的一個社員。你很確信你擁有的科技知識能夠幫助你生存。只是你還沒搞清楚到底要怎麼做出一個強大的死光射線裝置。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -84061,7 +84389,7 @@ msgctxt "prof_desc_male" msgid "" "You came here to get a taste of New England; Now you hope New England won't " "get a taste of you!" -msgstr "你來到這裡打算品味新英格蘭;現在你只希望新英格蘭不會吞噬你!" +msgstr "你來到這裡打算品味新英格蘭, 現在你只希望新英格蘭不會吞噬你!" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -84074,7 +84402,7 @@ msgctxt "prof_desc_female" msgid "" "You came here to get a taste of New England; Now you hope New England won't " "get a taste of you!" -msgstr "你來到這裡打算品味新英格蘭;現在你只希望新英格蘭不會吞噬你!" +msgstr "你來到這裡打算品味新英格蘭, 現在你只希望新英格蘭不會吞噬你!" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -84741,7 +85069,7 @@ msgctxt "prof_desc_male" msgid "" "Sworn defender of the land; you are a knight, an educated warrior trained " "since childhood in the ways of honorable combat." -msgstr "誓死捍衛國土;你是一位騎士, 一個受過教育的武士, 從小以光榮戰鬥的方式培訓。" +msgstr "誓死捍衛國土。你是一位騎士, 一個受過教育的武士, 從小以光榮戰鬥的方式培訓。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -84754,7 +85082,7 @@ msgctxt "prof_desc_female" msgid "" "Sworn defender of the land; you are a knight, an educated warrior trained " "since childhood in the ways of honorable combat." -msgstr "誓死捍衛國土;你是一位騎士, 一個受過教育的武士, 從小以光榮戰鬥的方式培訓。" +msgstr "誓死捍衛國土。你是一位騎士, 一個受過教育的武士, 從小以光榮戰鬥的方式培訓。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -84767,7 +85095,7 @@ msgctxt "prof_desc_male" msgid "" "A wise student of ancient and forbidden knowledge; you are a wizard, a " "mystical practitioner of the (bionic) arcane arts." -msgstr "鑽研古代禁忌知識的狡邪研究者; 你是巫師, 祕法 (生化技術) 這門藝術的操縱者。" +msgstr "鑽研古代禁忌知識的狡邪研究者。你是巫師, 祕法 (生化技術) 這門藝術的操縱者。" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -84780,7 +85108,7 @@ msgctxt "prof_desc_female" msgid "" "A wise student of ancient and forbidden knowledge; you are a wizard, a " "mystical practitioner of the (bionic) arcane arts." -msgstr "鑽研古代禁忌知識的狡邪研究者; 妳是巫師, 祕法 (生化技術) 這門藝術的操縱者。" +msgstr "鑽研古代禁忌知識的狡邪研究者。妳是巫師, 祕法 (生化技術) 這門藝術的操縱者。" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -84897,7 +85225,7 @@ msgid "" "income, you have been able to travel extensively. You've traveled here to " "get a taste of New England; now you hope New England won't get a taste of " "you!" -msgstr "你渴望冒險、追求美食, 還有可觀的收入。你到過不少地方旅行。你來到這裡打算品味新英格蘭;現在你只希望新英格蘭不會吞噬你!" +msgstr "你渴望冒險、追求美食, 還有可觀的收入。你到過不少地方旅行。你來到這裡打算品味新英格蘭, 現在你只希望新英格蘭不會吞噬你!" #: lang/json/professions_from_json.py msgctxt "profession_female" @@ -84912,7 +85240,7 @@ msgid "" "income, you have been able to travel extensively. You've traveled here to " "get a taste of New England; now you hope New England won't get a taste of " "you!" -msgstr "你渴望冒險、追求美食, 還有可觀的收入。你到過不少地方旅行。你來到這裡打算品味新英格蘭;現在你只希望新英格蘭不會吞噬你!" +msgstr "你渴望冒險、追求美食, 還有可觀的收入。你到過不少地方旅行。你來到這裡打算品味新英格蘭, 現在你只希望新英格蘭不會吞噬你!" #: lang/json/professions_from_json.py msgctxt "profession_male" @@ -85198,6 +85526,116 @@ msgid "" "find yourself needing those skills to survive. " msgstr "" +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Awakened" +msgstr "" + +#. ~ Profession (male Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Awakened" +msgstr "" + +#. ~ Profession (female Awakened) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You were awoken in the middle of the night by a noise. Armed only with a " +"flashlight you went to investigate, now you face the cataclysm." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (male Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Bionic Cyclist" +msgstr "" + +#. ~ Profession (female Bionic Cyclist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"Your training and augmentation for the Cyber-Olympics cycling competition " +"gave you an edge on escaping the start of the cataclysm. Can you keep on " +"running from it forever?" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Welder" +msgstr "" + +#. ~ Profession (male Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Welder" +msgstr "" + +#. ~ Profession (female Welder) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You worked as a welder for an off shore company before the cataclysm. You " +"were on your way back home when it struck. At least you got the tools of " +"your craft." +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_male" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (male Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_male" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + +#: lang/json/professions_from_json.py +msgctxt "profession_female" +msgid "Primitive Survivalist" +msgstr "" + +#. ~ Profession (female Primitive Survivalist) description +#: lang/json/professions_from_json.py +msgctxt "prof_desc_female" +msgid "" +"You knew the day would come, the day it all went to shit. You prepared " +"yourself, not by gear but sheer skill; all those days in the woods paid off." +" If your ancestors survived with no tech, you'll be damned if you dont't" +msgstr "" + #. ~ Crafting recipes category name #: lang/json/recipe_category_from_json.py msgid "WEAPON" @@ -85623,7 +86061,7 @@ msgstr "" #: lang/json/recipe_from_json.py msgid "Building a forge and kiln is our first task." -msgstr "" +msgstr "建造鍛造爐和碳化爐是我們的首要任務。" #: lang/json/recipe_from_json.py msgid "Building a proper roof for the shop is the next step." @@ -85686,411 +86124,411 @@ msgstr "廚房" #: lang/json/recipe_group_from_json.py msgid "Blacksmith Shop" -msgstr "" +msgstr "鐵匠鋪" #: lang/json/recipe_group_from_json.py msgid " Cook: Meat, Cooked" -msgstr "" +msgstr "烹飪: 肉, 熟食" #: lang/json/recipe_group_from_json.py msgid " Cook: Fish, Cooked" -msgstr "" +msgstr "烹飪: 魚, 熟食" #: lang/json/recipe_group_from_json.py msgid " Cook: Veggy, Cooked" -msgstr "" +msgstr "烹飪: 蔬菜, 熟食" #: lang/json/recipe_group_from_json.py msgid " Cook: Offal, Cooked" -msgstr "" +msgstr "烹飪: 內臟, 熟食" #: lang/json/recipe_group_from_json.py msgid " Cook: Egg, Boiled" -msgstr "" +msgstr "烹飪: 蛋, 熟食" #: lang/json/recipe_group_from_json.py msgid " Cook: Starch" -msgstr "" +msgstr "烹飪: 澱粉" #: lang/json/recipe_group_from_json.py msgid " Cook: Flatbread" -msgstr "" +msgstr "烹飪: 麵餅" #: lang/json/recipe_group_from_json.py msgid " Cook: Veggy, Cooked Wild" -msgstr "" +msgstr "烹飪: 蔬菜, 野炊" #: lang/json/recipe_group_from_json.py msgid " Cook: Flour" -msgstr "" +msgstr "烹飪: 麵粉" #: lang/json/recipe_group_from_json.py msgid " Cook: Salt" -msgstr "" +msgstr "烹飪: 鹽" #: lang/json/recipe_group_from_json.py msgid " Cook: Bread" -msgstr "" +msgstr "烹飪: 麵包" #: lang/json/recipe_group_from_json.py msgid " Cook: Fruit Leather" -msgstr "" +msgstr "烹飪: 果乾" #: lang/json/recipe_group_from_json.py msgid " Cook: Meat Jerky" -msgstr "" +msgstr "烹飪: 肉乾" #: lang/json/recipe_group_from_json.py msgid " Cook: Mushroom, Cooked" -msgstr "" +msgstr "烹飪: 蘑菇, 熟食" #: lang/json/recipe_group_from_json.py msgid " Cook: Lard" -msgstr "" +msgstr "烹飪: 豬油" #: lang/json/recipe_group_from_json.py msgid " Cook: Cornmeal" -msgstr "" +msgstr "烹飪: 玉米粉" #: lang/json/recipe_group_from_json.py msgid " Cook: Meat Pie" -msgstr "" +msgstr "烹飪: 肉餡餅" #: lang/json/recipe_group_from_json.py msgid " Cook: Meat, Smoked" -msgstr "" +msgstr "烹飪: 肉, 煙燻" #: lang/json/recipe_group_from_json.py msgid " Cook: Veggy Pie" -msgstr "" +msgstr "烹飪: 蔬菜餡餅" #: lang/json/recipe_group_from_json.py msgid " Cook: Fish, Smoked" -msgstr "" +msgstr "烹飪: 魚, 煙燻" #: lang/json/recipe_group_from_json.py msgid " Cook: Sugar" -msgstr "" +msgstr "烹飪: 糖" #: lang/json/recipe_group_from_json.py msgid " Cook: Mushroom, Dried" -msgstr "" +msgstr "烹飪: 蘑菇, 脫水" #: lang/json/recipe_group_from_json.py msgid " Cook: Fruit, Dehydrated" -msgstr "" +msgstr "烹飪: 水果, 脫水" #: lang/json/recipe_group_from_json.py msgid " Cook: Sausage" -msgstr "" +msgstr "烹飪: 香腸" #: lang/json/recipe_group_from_json.py msgid " Cook: Hardtack" -msgstr "" +msgstr "烹飪: 壓縮餅乾" #: lang/json/recipe_group_from_json.py msgid " Cook: Sausage, Wasteland" -msgstr "" +msgstr "烹飪: 香腸, 荒地" #: lang/json/recipe_group_from_json.py msgid " Cook: Veggy, Pickled" -msgstr "" +msgstr "烹飪: 蔬菜, 醃製" #: lang/json/recipe_group_from_json.py msgid " Cook: Cheese, Hard" -msgstr "" +msgstr "烹飪: 奶酪, 硬質" #: lang/json/recipe_group_from_json.py msgid " Cook: Pemmican" -msgstr "" +msgstr "烹飪: 乾肉餅" #: lang/json/recipe_group_from_json.py msgid " Cook: Veggy Aspic" -msgstr "" +msgstr "烹飪: 蔬菜肉凍" #: lang/json/recipe_group_from_json.py msgid " Cook: Meat, Canned" -msgstr "" +msgstr "烹飪: 肉, 罐頭" #: lang/json/recipe_group_from_json.py msgid " Cook: Meat Aspic" -msgstr "" +msgstr "烹飪: 肉凍" #: lang/json/recipe_group_from_json.py msgid " Craft: Pointy Sticks" -msgstr "" +msgstr "製作: 尖木棍" #: lang/json/recipe_group_from_json.py msgid " Craft: Wild Veggy Stems" -msgstr "" +msgstr "製作: 野生植物莖" #: lang/json/recipe_group_from_json.py msgid " Craft: Dandelion Seeds" -msgstr "" +msgstr "製作: 蒲公英籽" #: lang/json/recipe_group_from_json.py msgid " Craft: Potato, Starter" -msgstr "" +msgstr " 製作: 馬鈴薯, 初學者" #: lang/json/recipe_group_from_json.py msgid " Craft: Buckwheat Seeds" -msgstr "" +msgstr " 製作: 蕎麥種子" #: lang/json/recipe_group_from_json.py msgid " Craft: Copper, Scrap" -msgstr "" +msgstr " 製作: 銅, 廢料" #: lang/json/recipe_group_from_json.py msgid " Craft: Charcoal" -msgstr "" +msgstr " 製作: 木炭" #: lang/json/recipe_group_from_json.py msgid " Craft: Spike" -msgstr "" +msgstr " 製作: 尖刺" #: lang/json/recipe_group_from_json.py msgid " Craft: Steel, Chunk" -msgstr "" +msgstr " 製作: 鋼, 小塊" #: lang/json/recipe_group_from_json.py msgid " Craft: Knife, Copper" -msgstr "" +msgstr " 製作: 小刀, 銅" #: lang/json/recipe_group_from_json.py msgid " Craft: Sword, Crude" -msgstr "" +msgstr " 製作: 劍, 粗製" #: lang/json/recipe_group_from_json.py msgid " Craft: Pot, Copper" -msgstr "" +msgstr " 製作: 鍋子, 銅" #: lang/json/recipe_group_from_json.py msgid " Craft: Anvil" -msgstr "" +msgstr " 製作: 鐵砧" #: lang/json/recipe_group_from_json.py msgid " Craft: Steel, Lump" -msgstr "" +msgstr " 製作: 鋼, 大塊" #: lang/json/recipe_group_from_json.py msgid " Craft: Crossbow Bolt, Steel" -msgstr "" +msgstr " 製作: 十字弓箭, 鋼" #: lang/json/recipe_group_from_json.py msgid " Craft: Armor, Scrap Suit" -msgstr "" +msgstr " 製作: 護甲, 廢金屬裝" #: lang/json/recipe_group_from_json.py msgid " Craft: Axe, Copper" -msgstr "" +msgstr " 製作: 斧頭, 銅" #: lang/json/recipe_group_from_json.py msgid " Craft: Spear, Copper" -msgstr "" +msgstr " 製作: 長矛, 銅" #: lang/json/recipe_group_from_json.py msgid " Craft: Metalworking Chisel" -msgstr "" +msgstr " 製作: 鐵工鑿子" #: lang/json/recipe_group_from_json.py msgid " Craft: Hammer" -msgstr "" +msgstr " 製作: 鐵鎚" #: lang/json/recipe_group_from_json.py msgid " Craft: Metal Tongs" -msgstr "" +msgstr " 製作: 鐵鉗" #: lang/json/recipe_group_from_json.py msgid " Craft: Nail" -msgstr "" +msgstr " 製作: 鐵釘" #: lang/json/recipe_group_from_json.py msgid " Craft: Wire" -msgstr "" +msgstr " 製作: 鐵絲" #: lang/json/recipe_group_from_json.py msgid " Craft: Swage and Die Set" -msgstr "" +msgstr " 製作: 鍛造模具組" #: lang/json/recipe_group_from_json.py msgid " Craft: Blade" -msgstr "" +msgstr " 製作: 刀刃" #: lang/json/recipe_group_from_json.py msgid " Craft: Bearings" -msgstr "" +msgstr " 製作: 滾珠軸承" #: lang/json/recipe_group_from_json.py msgid " Craft: Caltrops" -msgstr "" +msgstr " 製作: 雞爪釘" #: lang/json/recipe_group_from_json.py msgid " Craft: Hand Drill" -msgstr "" +msgstr " 製作: 手動鑽頭" #: lang/json/recipe_group_from_json.py msgid " Craft: Sheet Metal" -msgstr "" +msgstr " 製作: 薄鐵板" #: lang/json/recipe_group_from_json.py msgid " Craft: Chain" -msgstr "" +msgstr " 製作: 鋼鏈" #: lang/json/recipe_group_from_json.py msgid " Craft: Shovel" -msgstr "" +msgstr " 製作: 鏟子" #: lang/json/recipe_group_from_json.py msgid " Craft: Rebar" -msgstr "" +msgstr " 製作: 鋼筋" #: lang/json/recipe_group_from_json.py msgid " Craft: Golden Ring" -msgstr "" +msgstr " 製作: 金戒指" #: lang/json/recipe_group_from_json.py msgid " Craft: Hammer, Sledge" -msgstr "" +msgstr " 製作: 鐵鎚, 大鐵鎚" #: lang/json/recipe_group_from_json.py msgid " Craft: Knife, Combat" -msgstr "" +msgstr " 製作: 小刀, 戰鬥" #: lang/json/recipe_group_from_json.py msgid " Craft: Spear, Steel" -msgstr "" +msgstr " 製作: 長矛, 鋼" #: lang/json/recipe_group_from_json.py msgid " Craft: Machete" -msgstr "" +msgstr " 製作: 開山刀" #: lang/json/recipe_group_from_json.py msgid " Craft: Pipe" -msgstr "" +msgstr " 製作: 鋼管" #: lang/json/recipe_group_from_json.py msgid " Craft: Screwdriver" -msgstr "" +msgstr " 製作: 螺絲起子" #: lang/json/recipe_group_from_json.py msgid " Craft: Axe, Throwing" -msgstr "" +msgstr " 製作: 斧頭, 投擲" #: lang/json/recipe_group_from_json.py msgid " Craft: Wrench" -msgstr "" +msgstr " 製作: 扳手" #: lang/json/recipe_group_from_json.py msgid " Craft: Hatchet" -msgstr "" +msgstr " 製作: 手斧" #: lang/json/recipe_group_from_json.py msgid " Craft: Knife, Throwing" -msgstr "" +msgstr " 製作: 小刀, 投擲" #: lang/json/recipe_group_from_json.py msgid " Craft: Crowbar" -msgstr "" +msgstr " 製作: 橇棍" #: lang/json/recipe_group_from_json.py msgid " Craft: Pot" -msgstr "" +msgstr " 製作: 鍋子" #: lang/json/recipe_group_from_json.py msgid " Craft: Hoe" -msgstr "" +msgstr " 製作, 鋤" #: lang/json/recipe_group_from_json.py msgid " Craft: Pliers" -msgstr "" +msgstr " 製作: 鉗子" #: lang/json/recipe_group_from_json.py msgid " Craft: Halberd" -msgstr "" +msgstr " 製作: 長戟" #: lang/json/recipe_group_from_json.py msgid " Craft: Armor, Cuirass" -msgstr "" +msgstr " 製作: 護甲, 胸甲" #: lang/json/recipe_group_from_json.py msgid " Craft: Knife, Pocket" -msgstr "" +msgstr " 製作: 小刀, 口袋" #: lang/json/recipe_group_from_json.py msgid " Craft: Hammer, War" -msgstr "" +msgstr " 製作: 鐵鎚, 戰爭" #: lang/json/recipe_group_from_json.py msgid " Craft: Helm, Great" -msgstr "" +msgstr " 製作: 頭盔, 巨大" #: lang/json/recipe_group_from_json.py msgid " Craft: Armor, Plate" -msgstr "" +msgstr " 製作: 護甲, 板甲" #: lang/json/recipe_group_from_json.py msgid " Craft: Sword, Broadsword" -msgstr "" +msgstr " 製作: 劍, 闊劍" #: lang/json/recipe_group_from_json.py msgid " Craft: Sword, Scimitar" -msgstr "" +msgstr " 製作: 劍, 彎刀" #: lang/json/recipe_group_from_json.py msgid " Craft: Axe, Fire" -msgstr "" +msgstr " 製作: 斧頭, 消防" #: lang/json/recipe_group_from_json.py msgid " Craft: Hacksaw" -msgstr "" +msgstr " 製作: 鋼鋸" #: lang/json/recipe_group_from_json.py msgid " Craft: Woodsaw" -msgstr "" +msgstr " 製作: 木鋸" #: lang/json/recipe_group_from_json.py msgid " Craft: Spear, Awl Pike" -msgstr "" +msgstr " 製作: 長矛, 錐槍" #: lang/json/recipe_group_from_json.py msgid " Craft: Sword, Rapier" -msgstr "" +msgstr " 製作: 刀劍, 刺劍" #: lang/json/recipe_group_from_json.py msgid " Craft: Halligan Bar" -msgstr "" +msgstr " 製作: 哈利根鐵鋌" #: lang/json/recipe_group_from_json.py msgid " Craft: Sword, Zweihander" -msgstr "" +msgstr " 製作: 刀劍, 德國雙手劍" #: lang/json/recipe_group_from_json.py msgid " Craft: Pickaxe" -msgstr "" +msgstr " 製作: 十字鎬" #: lang/json/recipe_group_from_json.py msgid " Craft: Sheet Metal, Drop Hammer" -msgstr "" +msgstr " 製作: 薄鐵板, 鍛造鎚" #: lang/json/recipe_group_from_json.py msgid " Craft: Chain, Drop Hammer" -msgstr "" +msgstr " 製作: 鋼鏈, 鍛造鎚" #: lang/json/recipe_group_from_json.py msgid " Craft: Nail, Drop Hammer" -msgstr "" +msgstr " 製作: 鐵釘, 鍛造鎚" #: lang/json/recipe_group_from_json.py msgid " Craft: Wire, Drop Hammer" -msgstr "" +msgstr " 製作: 鐵絲, 鍛造鎚" #: lang/json/recipe_group_from_json.py msgid " Craft: Pipe, Drop Hammer" -msgstr "" +msgstr " 製作: 鋼管, 鍛造鎚" #: lang/json/recipe_group_from_json.py msgid " Craft: Rebar, Drop Hammer" -msgstr "" +msgstr " 製作: 鋼筋, 鍛造鎚" #. ~ Name for scenario 'Evacuee' for a male character #: lang/json/scenario_from_json.py @@ -86130,13 +86568,13 @@ msgstr "避難所" #: lang/json/scenario_from_json.py msgctxt "scenario_male" msgid "Refugee" -msgstr "" +msgstr "難民" #. ~ Name for scenario 'Refugee' for a female character #: lang/json/scenario_from_json.py msgctxt "scenario_female" msgid "Refugee" -msgstr "" +msgstr "難民" #. ~ Description for scenario 'Refugee' for a male character. #: lang/json/scenario_from_json.py @@ -86144,7 +86582,7 @@ msgctxt "scen_desc_male" msgid "" "You made it to one of the refugee centers, but they've refused to let you " "join the others underground. Looks like you're on your own..." -msgstr "" +msgstr "你成功抵達了一個難民中心, 但是他們拒絕讓你加入地下的其他人。看來你現在是孤身一人了…" #. ~ Description for scenario 'Refugee' for a female character. #: lang/json/scenario_from_json.py @@ -86152,13 +86590,13 @@ msgctxt "scen_desc_female" msgid "" "You made it to one of the refugee centers, but they've refused to let you " "join the others underground. Looks like you're on your own..." -msgstr "" +msgstr "你成功抵達了一個難民中心, 但是他們拒絕讓你加入地下的其他人。看來你現在是孤身一人了…" #. ~ Starting location for scenario 'Refugee'. #: lang/json/scenario_from_json.py msgctxt "start_name" msgid "Refugee Center" -msgstr "" +msgstr "難民中心" #. ~ Name for scenario 'Missed' for a male character #: lang/json/scenario_from_json.py @@ -86344,17 +86782,17 @@ msgstr "挑戰-實驗室" #: lang/json/scenario_from_json.py msgctxt "scen_desc_male" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." -msgstr "" +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." +msgstr "你被鎖在實驗室而且 (看似) 無路可逃! 找到一條逃生的路徑或是餓死在裡面。" #. ~ Description for scenario 'Challenge-Lab' for a female character. #: lang/json/scenario_from_json.py msgctxt "scen_desc_female" msgid "" -"You were locked in a lab cell until some kind of monster broke the glass. " -"The lab is in lockdown! Find a way to escape." -msgstr "" +"You've been locked in a lab with no (obvious) way out! Find a way to escape" +" or starve to death." +msgstr "妳被鎖在實驗室而且 (看似) 無路可逃! 找到一條逃生的路徑或是餓死在裡面。" #. ~ Starting location for scenario 'Challenge-Lab'. #: lang/json/scenario_from_json.py @@ -86453,8 +86891,8 @@ msgid "" "hurt you. Supplies are running low, and for the first time since the " "cataclysm, you will be forced to face the outside world." msgstr "" -"在災變爆發時, 你躲進了一個附近的避難所。你在裡面生活, 足不出戶, 以免被來自外界的 \"未知\" 傷害。隨著補給減少, " -"你不得不...打從災變以來第一次...被迫面對外面的世界。" +"在災變爆發時, 你躲進了一個附近的避難所。你在裡面生活, 足不出戶, 以免被來自外界的 \"未知\" 傷害。隨著補給減少, 你不得不… " +"打從災變以來第一次… 被迫面對外面的世界。" #. ~ Description for scenario 'Sheltered' for a female character. #: lang/json/scenario_from_json.py @@ -86465,8 +86903,8 @@ msgid "" "hurt you. Supplies are running low, and for the first time since the " "cataclysm, you will be forced to face the outside world." msgstr "" -"在災變爆發時, 你躲進了附近的一個避難所。你住在裡面且足不出戶, 以免受到來自外界的未知事物傷害。隨著補給減少, " -"你不得不...打從災變以來第一次...被迫面對外面的世界。" +"在災變爆發時, 你躲進了附近的一個避難所。你住在裡面且足不出戶, 以免受到來自外界的未知事物傷害。隨著補給減少, 你不得不… 打從災變以來第一次… " +"被迫面對外面的世界。" #. ~ Starting location for scenario 'Sheltered'. #: lang/json/scenario_from_json.py @@ -86594,7 +87032,7 @@ msgctxt "scen_desc_male" msgid "" "You've survived for as long as you could inside of the mall you worked at as" " a security guard. Find a way out and try your best to survive." -msgstr "你在百貨商城的警衛經驗讓你在商城裡存活許久。找到出路並盡力生存吧。" +msgstr "你在百貨商城的保全經驗讓你在商城裡存活許久。找到出路並盡力生存吧。" #. ~ Description for scenario 'Mall Cop' for a female character. #: lang/json/scenario_from_json.py @@ -86602,7 +87040,7 @@ msgctxt "scen_desc_female" msgid "" "You've survived for as long as you could inside of the mall you worked at as" " a security guard. Find a way out and try your best to survive." -msgstr "你在百貨商城的警衛經驗讓你在商城裡存活許久。找到出路並盡力生存吧。" +msgstr "你在百貨商城的保全經驗讓你在商城裡存活許久。找到出路並盡力生存吧。" #. ~ Starting location for scenario 'Mall Cop'. #: lang/json/scenario_from_json.py @@ -86928,7 +87366,7 @@ msgstr "" #: lang/json/scenario_from_json.py msgctxt "start_name" msgid "Shady Basement" -msgstr "" +msgstr "陰涼的地下室" #. ~ Name for scenario 'At the Zoo' for a male character #: lang/json/scenario_from_json.py @@ -87094,17 +87532,53 @@ msgid "" "zombies." msgstr "" +#. ~ Name for scenario 'Bunker Evacuee' for a male character +#: lang/json/scenario_from_json.py +msgctxt "scenario_male" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Name for scenario 'Bunker Evacuee' for a female character +#: lang/json/scenario_from_json.py +msgctxt "scenario_female" +msgid "Bunker Evacuee" +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a male character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_male" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Description for scenario 'Bunker Evacuee' for a female character. +#: lang/json/scenario_from_json.py +msgctxt "scen_desc_female" +msgid "" +"You had connections, or intel somehow..., and because of it, you found this " +"LMOE Shelter. It's summer now and you somehow survived, now things get a " +"little bit easier." +msgstr "" + +#. ~ Starting location for scenario 'Bunker Evacuee'. +#: lang/json/scenario_from_json.py +msgctxt "start_name" +msgid "LMOE Shelter" +msgstr "" + #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a male character #: lang/json/scenario_from_json.py msgctxt "scenario_male" msgid "Challenge-FEMA Death Camp" -msgstr "挑戰-急難救助營: 死亡陷阱" +msgstr "挑戰-聯邦緊急事務管理署死亡營地" #. ~ Name for scenario 'Challenge-FEMA Death Camp' for a female character #: lang/json/scenario_from_json.py msgctxt "scenario_female" msgid "Challenge-FEMA Death Camp" -msgstr "挑戰-急難救助營: 死亡陷阱" +msgstr "挑戰-聯邦緊急事務管理署死亡營地" #. ~ Description for scenario 'Challenge-FEMA Death Camp' for a male #. character. @@ -87116,6 +87590,8 @@ msgid "" "fast...wounded, infected, surrounded by fire you lay...and they just keep " "coming..." msgstr "" +"你被徵召來維持聯邦緊急事務管理署營地的秩序, 是眾多執法者與軍警人員的其中一員。然而事情快速惡化… 受傷、感染、你休息的地方失火… 而 \"它們\" " +"只是不斷湧來…" #. ~ Description for scenario 'Challenge-FEMA Death Camp' for a female #. character. @@ -87127,12 +87603,14 @@ msgid "" "fast...wounded, infected, surrounded by fire you lay...and they just keep " "coming..." msgstr "" +"你被徵召來維持聯邦緊急事務管理署營地的秩序, 是眾多執法者與軍警人員的其中一員。然而事情快速惡化… 受傷、感染、你休息的地方失火… 而 \"它們\" " +"只是不斷湧來…" #. ~ Starting location for scenario 'Challenge-FEMA Death Camp'. #: lang/json/scenario_from_json.py msgctxt "start_name" msgid "Fema Camp" -msgstr "急難救助營" +msgstr "聯邦緊急事務管理署營地" #. ~ Name for scenario 'Mansion Holdout' for a male character #: lang/json/scenario_from_json.py @@ -87233,7 +87711,7 @@ msgid "" " a user to navigate complex software systems and even bypass their security." msgstr "你折騰電腦的技能。較高的等級能夠讓你掌握複雜的電腦系統甚至繞過它的安全防護。" -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "cooking" msgstr "烹飪" @@ -87303,7 +87781,7 @@ msgid "" "Your skill in engineering, maintaining and repairing vehicles and other " "mechanical systems. This skill covers the craft of items with complex " "parts, and plays a role in the installation of bionic equipment." -msgstr "你在工程, 維護及修理車輛與其他機械系統的技能。這個技能包含了能使用複雜零件製作物品, 並且在安裝生化插件時扮演重要的角色。" +msgstr "你在工程、維護、修理車輛與其他機械系統的技能。這個技能包含了能使用複雜零件製作物品, 並且在安裝生化插件時扮演重要的角色。" #: lang/json/skill_from_json.py msgid "speaking" @@ -87339,9 +87817,9 @@ msgid "" "Your ability to stay afloat and move around in bodies of water. This skill " "keeps you from drowning, affects your combat effectiveness and speed in deep" " water, and determines the detriment of swimming with heavier gear." -msgstr "你浮起並在水中移動的能力。這個技能能夠讓你不被溺死, 影響了你在深水中的戰鬥效率及速度, 以及身上的沉重裝備對游泳的不利程度。" +msgstr "你浮起並在水中移動的能力。這個技能能夠讓你不會溺水, 影響了你在深水中的戰鬥效率及速度, 以及身上的沉重裝備對游泳的不利程度。" -#: lang/json/skill_from_json.py +#: lang/json/skill_from_json.py src/crafting_gui.cpp msgid "tailoring" msgstr "裁縫" @@ -87351,7 +87829,7 @@ msgid "" "Your skill in the craft and repair of clothing, bags, blankets and other " "textiles. Affects knitting, sewing, stitching, weaving, and nearly anything" " else involving a needle and thread." -msgstr "你製作及修復衣物、包包、毯子以及其他編織物的能力。影響了編織, 縫紉、和涉及針和線的任何工作。" +msgstr "你製作及修理衣物、包包、毯子以及其他編織物的能力。影響了編織, 縫紉、和涉及針和線的任何工作。" #: lang/json/skill_from_json.py msgid "trapping" @@ -87399,7 +87877,7 @@ msgid "" "Your skill in fighting with weaponry designed to cut, hack and slash an " "opponent. Lower levels of skill increase accuracy and damage, while higher " "levels will help to bypass heavy armor and thick hides." -msgstr "你使用鋒利武器進行砍劈, 切割對手的戰鬥技巧。在較低的等級時是增加命中率與傷害, 較高的等級時將會讓能你繞過重裝甲或是厚重的表皮進行攻擊。" +msgstr "使用設計來切割、劈砍、斬擊的武器與對手戰鬥的技巧。技能等級較低時增加命中率與傷害, 技能等級較高時則有助於繞過厚重的裝甲與厚實的表皮。" #: lang/json/skill_from_json.py msgid "dodging" @@ -87423,7 +87901,7 @@ msgid "" "Your overall skill in using bows and firearms. With higher levels, this " "general experience increases accuracy with any bows or firearms, but is " "secondary to practice with the type of ranged weapon in question." -msgstr "你使用槍械與弓箭的整體技能。提高此技能等級能夠提昇任何槍械與弓箭的命中率, 但是相比起操作特定遠距武器的技巧影響較為次要。" +msgstr "你使用槍械與弓箭的整體技能。提高此技能等級能夠提昇任何槍械與弓箭的命中率, 但是相比起操作特定遠程武器的技巧影響較為次要。" #: lang/json/skill_from_json.py msgid "launchers" @@ -87676,7 +88154,7 @@ msgstr "" msgid "" "Feeling odd after waking up? Try eating healthier and your health may " "improve." -msgstr "睡醒後覺得怪怪的? 試試吃建康一點, 你的建康狀況能夠改善的。" +msgstr "睡醒後覺得怪怪的? 試試吃健康一點, 你的健康狀況能夠改善的。" #: lang/json/snippet_from_json.py msgid "" @@ -87762,7 +88240,7 @@ msgstr "" msgid "" "A full stomach will not solve your starvation. Give it time and eat " "regularly." -msgstr "飽腹不會解決你的飢餓問題。給它點時間, 並且定期進食。" +msgstr "飽腹不會解決你的營養不良問題。給它點時間, 並且定期進食。" #: lang/json/snippet_from_json.py msgid "" @@ -87796,7 +88274,7 @@ msgstr "" msgid "" "Some dry foods can be eaten frozen. Some foods become mushy after " "defrosting." -msgstr "有些乾燥的食物可以在冷凍狀態食用。有些食物在解凍後會變成糊狀。" +msgstr "有些乾燥的食物可以在冰凍狀態食用。有些食物在解凍後會變成糊狀。" #: lang/json/snippet_from_json.py msgid "Thirsty on a long winter journey? Take a thermos with you." @@ -87819,6 +88297,42 @@ msgid "" "spawn with more resources." msgstr "不要害怕讓你自己的遊戲變得更容易。世界可以在建立時產生更多的物資。" +#: lang/json/snippet_from_json.py +msgid "" +"Don't get caught with your pants down. There's no toilet paper anymore " +"anyway." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Impaired movement speed through difficult terrain can be used as an " +"advantage." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"When the whole town is one big supermarket a shopping cart becomes your best" +" friend." +msgstr "當整個城鎮都變成了一座大型超市時, 一台購物車就是你最好的朋友。" + +#: lang/json/snippet_from_json.py +msgid "" +"Trying out different characters, professions, and scenarios can spice up " +"your game. Roleplay!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Survivor saved is a friend earned. Most of the time..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Learning how to play? Visit keybindings menu and learn your ropes." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Expect the unexpected, even if it's the Spanish Inquisition." +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "You feel great! It doesn't seem like wounds could even slow you down for " @@ -87977,7 +88491,7 @@ msgstr "睡眼惺忪半夢半醒間, 你思考著為何這樣對待自己。" msgid "" "Awareness seems to only come with a battle... and your body seem to be on " "its side." -msgstr "你正在和睡意苦戰...你的身體似乎也不支持你。" +msgstr "你正在和睡意苦戰… 你的身體似乎也不支持你。" #: lang/json/snippet_from_json.py msgid "" @@ -87986,7 +88500,7 @@ msgid "" "something: 31-34 meters and it's apparently impotent. The Director sent 'em" " back with a note that we're scientists, not firmware devs." msgstr "" -"卡士伯將軍要我們找出這隻機器人的人工智慧發生什麼事。很明顯的, 這是某個黑心防禦工事承包商的玩具坦克捅出來的婁子。在線路第 31 到第 34 " +"卡士伯將軍要我們搞清楚這隻機器人的人工智慧發生什麼事。很明顯的, 這是某個黑心防禦工事承包商的玩具坦克捅出來的婁子。在線路第 31 到第 34 " "公尺的地方出了問題, 那個地方顯然很重要。監督者把屬下都叫回去了, 並留下了一張紙條, 上面說 \"我們是科學家, 不是軟體工程師! \"" #: lang/json/snippet_from_json.py @@ -88000,7 +88514,7 @@ msgid "" "Our chemical department has perfected an untargeted stem cell treatment. " "Consumption of the treatment will reverse the effects of mutation, and may " "even cure congenital defects. This substance has been denoted PE018." -msgstr "我們的化學部門已經完善了無針對性的幹細胞治療法。能夠回復突變的影響, 甚至可能治癒先天性缺陷。此物質已被記錄在PE018報告。" +msgstr "我們的化學部門已經完善了無針對性的幹細胞治療法。能夠回復突變的影響, 甚至可能治癒先天性缺陷。此物質已被記錄在 PE018 報告。" #: lang/json/snippet_from_json.py msgid "" @@ -88008,7 +88522,8 @@ msgid "" "substances, alternating between the mutagen and the purifier. Ultimately, " "the subject returned to baseline state with no apparent side effects." msgstr "" -"PE012和PE018都表現出極大的穩定性。某個樣本同時用了這兩個物質, 在突變劑與淨化劑中切換。最終, 樣本回歸到基本狀態並且沒有顯現出任何的副作用。" +"PE012 和 PE018 都表現出極大的穩定性。某個樣本同時用了這兩個物質, 在突變劑與淨化劑中切換。最終, " +"樣本回歸到基本狀態並且沒有顯現出任何的副作用。" #: lang/json/snippet_from_json.py msgid "" @@ -88031,7 +88546,8 @@ msgid "" "that we prepare for the inevitable. PE050 can be quickly and cheaply " "reconfigured for |||||ERROR: FILE CORRUPT|||||" msgstr "" -":.||||錯誤||隨著XE037違反隔離政策, Maiar博士建議我們做好準備。PE050 能夠快速廉價的配置給 |||||錯誤: 文件損壞|||||" +":.||||錯誤||隨著 XE037 違反隔離政策, Maiar 博士建議我們做好準備。PE050 能夠快速廉價的配置給 |||||錯誤: " +"文件損壞|||||" #: lang/json/snippet_from_json.py msgid "" @@ -88059,7 +88575,8 @@ msgid "" "psychopharmacological department assets are being assigned to Dr. Sattler's " "PE070 project." msgstr "" -"鑑於目前的人口推算, PE065的佈署已不再可行。我們就是沒那麼多庫存。剩餘的化學品與精神藥物將會重新分配到 Sattler 博士的PE070計畫之中。" +"鑑於目前的人口推算, PE065 的佈署已不再可行。我們就是沒那麼多庫存。剩餘的化學品與精神藥物將會重新指派到 Sattler 博士的 PE070 " +"計畫之中。" #: lang/json/snippet_from_json.py msgid "" @@ -88112,7 +88629,7 @@ msgid "" "return immediately, but shifted by several meters. Our subjects oscillated " "so quickly that none were even aware that they had visited lower planes." msgstr "" -"我們已經達成了一個有趣的發現;透過高能量來產生一個微型通道, 一個人就能夠傳送到四維空間並迅速返回, " +"我們已經達成了一個有趣的發現: 透過高能量來產生一個微型通道, 一個人就能夠傳送到四維空間並迅速返回, " "而且還會位移若干公尺的距離。測試對象的振盪速度之快, 快到連他們自己都沒察覺傳送的過程。" #: lang/json/snippet_from_json.py @@ -88131,7 +88648,7 @@ msgid "" "Our research on teleportation has ground to a halt. For some reason, the " "creation of a long-range transportation device eludes us, and one can " "transfer no further than 30 meters." -msgstr "我們對於傳送裝置的研究陷入了瓶頸。因為某種因素, 我們無法製造出長程傳送的裝置, 因此目前人體的傳送距離最多只能達到30公尺。" +msgstr "我們對於傳送裝置的研究陷入了瓶頸。因為某種因素, 我們無法製造出長程傳送的裝置, 因此目前人體的傳送距離最多只能達到 30 公尺。" #: lang/json/snippet_from_json.py msgid "" @@ -88185,7 +88702,7 @@ msgid "" "Our lifeform extraction program continues to produce samples of specimen " "XE037. It seems to be a kind of living, semi-sentient primordial ooze, and " "is the basis of much of the life we have found." -msgstr "我們的生命體萃取程式持續的生產樣本XE037。這似乎是一種有生命、半意識的原始軟泥, 也是我們找到的大多數生命的基礎。" +msgstr "我們的生命體萃取程式持續的生產樣本 XE037。這似乎是一種有生命、半意識的原始軟泥, 也是我們找到的大多數生命的基礎。" #: lang/json/snippet_from_json.py msgid "" @@ -88209,7 +88726,7 @@ msgid "" "similarity to XE037. XE142 and XE157 in particular show the same amorphous," " slime-like structure as XE037, suggesting a close genetic relationship." msgstr "" -"幾個我們已經發展出的進階樣本顯示出與XE037驚異的相似度。XE142 與 XE157 , 特別是與XE037出現相同的無定形結構, " +"幾個我們已經發展出的進階樣本顯示出與 XE037 驚異的相似度。XE142 與 XE157 , 特別是與 XE037 出現相同的不定形結構, " "代表有近親的基因關係。" #: lang/json/snippet_from_json.py @@ -88219,7 +88736,7 @@ msgid "" "weaponry, but they were susceptible to directed energy weapons and " "flagration." msgstr "" -"今天我們測試了各種武器來對抗XE142和XE157這兩種次級無定形樣本。這些樣本的狀態證明了拋射武器對其是幾乎無用的, " +"今天我們測試了各種武器來對抗 XE142 和 XE157 這兩種次級不定形樣本。這些樣本的狀態證明了拋射武器對其是幾乎無用的, " "但是它們會受到指向性能量武器的傷害並爆炸。" #: lang/json/snippet_from_json.py @@ -88229,8 +88746,8 @@ msgid "" "disintegrated. This suggests that XE037, while compatible with subprime " "lifeforms, shows only destructive effects on prime plane lifeforms." msgstr "" -"我們的複製部門無法產生實驗結果。在裝有幹細胞治療樣本XE037的大桶, 與控制組的大桶, " -"測試對象就簡單的崩解了。這表示了當XE037與次級生命體相容時, 將會對主生命體產生毀滅性的影響。" +"我們的複製部門無法產生實驗結果。在裝有幹細胞治療樣本 XE037 的大桶, 與控制組的大桶, 測試對象就簡單的崩解了。這表示了當 XE037 " +"與次級生命體相容時, 將會對主生命體產生毀滅性的影響。" #: lang/json/snippet_from_json.py msgid "" @@ -88254,15 +88771,15 @@ msgid "" "examination, the subject went through a revivification progress, but " "displayed next to no human intelligence." msgstr "" -"今天我們利用XE037的極小樣本, 添加到水裡, 來對TP92測試對象來進行實驗, 並預先終結測試對象。在進行屍檢時, 測試對象出現復活的程序, " -"但是並沒有顯示出有人類智力的狀況。" +"今天我們利用 XE037 的極小樣本, 添加到水裡, 來對 TP92 測試對象來進行實驗, 並預先終結測試對象。在進行屍檢時, 測試對象出現復活的程序," +" 但是並沒有顯示出有人類智力的狀況。" #: lang/json/snippet_from_json.py msgid "" "Mendelson shows a dismaying lack of organization and security consciousness." " Containment of all samples of XE037 is of critical importance, as shown by" " contamination experiments." -msgstr "曼德森出現缺乏管理與安全意識的狀況。管制XE037樣本是至關重要的, 就像受污染實驗所顯示的結果。" +msgstr "曼德森出現缺乏管理與安全意識的狀況。管制 XE037 樣本是至關重要的, 就像受污染實驗所顯示的結果。" #: lang/json/snippet_from_json.py msgid "" @@ -88271,7 +88788,7 @@ msgid "" "forces. Before the sample was destroyed, it managed to kill two men. " "Alarmingly, their corpses displayed mobility and extreme aggression." msgstr "" -"曼德森已經被終止接觸以下與XE037的有關事件。大量的樣本離開了他的實驗室, 並且與我們的保全武力接戰。在所有的樣本被摧毀前, " +"曼德森已經被終止接觸以下與 XE037 的有關事件。大量的樣本離開了他的實驗室, 並且與我們的保全武力接戰。在所有的樣本被摧毀前, " "我們有兩位人員被殺死。令人擔心的是, 他們的屍體出現了活動性與極端的攻擊性。" #: lang/json/snippet_from_json.py @@ -88281,7 +88798,7 @@ msgid "" "two prior occasions. Sadly, our human subject pool is dwindling due to the " "short lifespan of subjects in this program. More will be acquired soon." msgstr "" -"我們已經創建了一個新的部門來研究XE037對人體的影響, 特別是檢查先前兩次事件的復活影響。不幸的是, " +"我們已經創建了一個新的部門來研究 XE037 對人體的影響, 特別是檢查先前兩次事件的復活影響。不幸的是, " "我們的人類測試對象庫存因為此計畫而不斷減少。在近期內會進行補充。" #: lang/json/snippet_from_json.py @@ -88290,7 +88807,7 @@ msgid "" "same revivifying effect, oddly enough. Acquiring non-human subjects, sadly," " is a long and costly process, and research into this area is lacking." msgstr "" -"在非人類的哺乳類測試對象上使用XE037不會出現相同的復活現象, 非常奇怪。不幸的是, 取得非人類測試對象, 是漫長且昂貴的過程, " +"在非人類的哺乳類測試對象上使用 XE037 不會出現相同的復活現象, 非常奇怪。不幸的是, 取得非人類測試對象, 是漫長且昂貴的過程, " "所以在這領域的研究上非常缺乏。" #: lang/json/snippet_from_json.py @@ -88300,7 +88817,7 @@ msgid "" "their way into the lab. Horrifyingly, XE037 caused near-instant mutation " "and gigantism in the insects, and security intervention was required." msgstr "" -"在我們好奇對非人類哺乳動物測試XE037之後, 我們決定對一些跑到實驗室的昆蟲來測試。可怕的是, XE037立即讓這些昆蟲產生了巨大化突變, " +"在我們好奇對非人類哺乳動物測試 XE037 之後, 我們決定對一些跑到實驗室的昆蟲來測試。可怕的是, XE037 立即讓這些昆蟲產生了巨大化突變, " "只好進行安全干預。" #: lang/json/snippet_from_json.py @@ -88309,7 +88826,7 @@ msgid "" "was premature. Exposure introduces a persistent, low level infection in all" " mammal subjects, but quickly enters a form of stasis and seems to go " "dormant." -msgstr "先前臆測復活只發生在人類和昆蟲是不成熟的。照射之後所有的哺乳類對象會造成一種永久性的輕微感染, 但是很快地就會進入了潛伏形式。" +msgstr "先前臆測復活只發生在人類和昆蟲是不成熟的。照射之後所有的哺乳類對象會造成一種永久性的輕微感染, 但是很快地就會進入像是休眠的靜止狀態。" #: lang/json/snippet_from_json.py msgid "" @@ -88318,8 +88835,8 @@ msgid "" "mammals such as lab rats do not obtain this critical mass of XE037 before " "going dormant. Larger canine subjects, however, do." msgstr "" -"檢定哺乳類測試對象復活作用的主要因素似乎與體內XE037的劑量與經過時間有關。像是實驗室老鼠這種較小的哺乳類, " -"在反應衰竭前不會有XE037的變異反應。大型的犬科測試對象就會。" +"檢定哺乳類測試對象復活作用的主要因素似乎與體內 XE037 的劑量與經過時間有關。像是實驗室老鼠這種較小的哺乳類, 在反應衰竭前不會有 XE037 " +"的變異反應。大型的犬科測試對象就會。" #: lang/json/snippet_from_json.py msgid "" @@ -88334,8 +88851,8 @@ msgid "" "to a deceased body; revivification only occurs when the subject is exposed " "to XE037 prior to expiration." msgstr "" -"程序S37ZBE, 研究 XE037 " -"對於惰性人體的影響有了極大的進展。最近我們發現XE037用於已經死亡的個體不會有任何效果;復活作用只有在個體尚存活前有照射到之後才有效果。" +"程序 S37ZBE, 研究 XE037 對於惰性人體的影響有了極大的進展。最近我們發現 XE037 用於已經死亡的個體不會有任何效果, " +"復活作用只有在個體尚存活前有照射到之後才有效果。" #: lang/json/snippet_from_json.py msgid "" @@ -88343,7 +88860,7 @@ msgid "" " Direct subcutaneous injection of XE037 quickly spreads through the body, " "and while it immediately enters stasis after equalizing, it remains in the " "body." -msgstr "試圖將XE037用於非哺乳類的研究已經有了一些進展。若直接將XE037進行皮下注射, 待循環擴散到全身之後, 便會留存在體內潛伏。" +msgstr "試圖將 XE037 用於非哺乳類的研究已經有了一些進展。若直接將 XE037 進行皮下注射, 待循環擴散到全身之後, 便會留存在體內潛伏。" #: lang/json/snippet_from_json.py msgid "" @@ -88353,7 +88870,7 @@ msgid "" "electrocuted, and another researcher at the opposite end of the lab " "sustained severe current burns, despite never approaching the cage." msgstr "" -"在24號實驗室發生一起兩人受傷的致命性事故。一隻在進行破潛伏專案的老鼠被掛在監視儀器前一整晚。在打開籠子的時候, 賽門貝爾維觸電了, " +"在 24 號實驗室發生一起兩人受傷的致命性事故。一隻在進行破潛伏專案的老鼠被掛在監視儀器前一整晚。在打開籠子的時候, 賽門貝爾維觸電了, " "在實驗室另一端的研究員也受到嚴重的持續灼傷, 儘管他完全沒有靠近籠子。" #: lang/json/snippet_from_json.py @@ -88393,7 +88910,7 @@ msgid "" "be random. T3D appears to be in immense pain as a result of these changes, " "but the lack of an oral opening has rendered him unable to vocalize." msgstr "" -"在 XE037 的隔離測試中, T3D受到長期照射導致顯著的結構性變化。這狀況不是隨機的。T3D 顯現出了對於變異極大的痛苦, 由於變異的因素, " +"在 XE037 的隔離測試中, T3D 受到長期照射導致顯著的結構性變化。這狀況不是隨機的。T3D 顯現出了對於變異極大的痛苦, 由於變異的因素, " "讓他缺少了開放的口腔能夠發聲。" #: lang/json/snippet_from_json.py @@ -88520,15 +89037,15 @@ msgid "" "substance which renders XE037 inert after it has activated would be " "immensely useful in the case of an outbreak." msgstr "" -"PE062, 我們對於 XE037 的解藥, 已經接近完美了。可惜的是, 製作 PE062 " -"的過程耗費大量金錢與時間成本。並且在已死亡的測試對象上沒有效果; 只有在 XE037 還在潛伏狀態時才能阻止發作。" +"PE062, 我們對於 XE037 的解藥, 已經接近完美了。可惜的是, 製作 PE062 的過程耗費大量金錢與時間成本, " +"並且在已死亡的測試對象上沒有效果, 只有在 XE037 還在潛伏狀態時才能阻止發作。" #: lang/json/snippet_from_json.py msgid "" "An alarming discovery has been made. A colony of XE037 has formed nearly a " "half mile from the laboratory. It is unclear how it escaped; it is quite " "possible that it is in the ground water now." -msgstr "發生一件緊急的狀況。在離實驗區域半英哩遠的地方出現 XE037 病菌。目前尚不知如何洩漏; 看來很有可能已經存在於地下水了。" +msgstr "發生一件緊急的狀況。在離實驗區域半英哩遠的地方出現 XE037 病菌。目前尚不知如何洩漏, 看來很有可能已經存在於地下水了。" #: lang/json/snippet_from_json.py msgid "" @@ -88584,6 +89101,566 @@ msgstr "" "XE037 復活已達到臨界水平, 迅速壓倒現有的軍事和地區警方的戰鬥力。每一個在現場的團隊都遇到了敵對樣本, " "部分團體甚至已經失去聯絡。薩維奇博士提出了一個戰略重新部署方案, 地點是稱為 \"避難所\" 的大型地下都市, 並將在該處繼續生產 PE062。" +#: lang/json/snippet_from_json.py +msgid "popular " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "top-forty " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "coorporate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "commercial " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "alternative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "college " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "arthouse " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "underground " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "experimental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "forgotten " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "traditional " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "historical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "classic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "modern " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "adult " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contemporary " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Christian " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Pagan " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "British " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Continental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tropical " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "island " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "New York " +msgstr "紐約 " + +#: lang/json/snippet_from_json.py +msgid "Hollywood " +msgstr "好萊塢 " + +#: lang/json/snippet_from_json.py +msgid "Trans-Pacific " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Latin " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "instrumental " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "fusion " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "visual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "liquid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "digital " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "procedurally generated " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "melodic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "harmonious " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "discordant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "contextual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "conceptual " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "collaborative " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "rhythmic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "retro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "post" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "anti" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hard " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "soft " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "speed " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "slow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hi-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lo-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mid-fi " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ambient " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dance " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "chill " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psycho" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "turbo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "prog " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "glam " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "outsider " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "indie " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "dark " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "death " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "acid " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "space " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghetto " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "street " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "urban " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "world " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Euro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Afro" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "grunge " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "brass " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "splatter " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "swamp " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ghost " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shadow " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "neuro " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hyper" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "carnival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "meta" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "techno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "synth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "robo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "skate " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "freak " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "surf " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mutant " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Jurassic " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "free " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "garbage " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "break " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "laser " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "porno " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "hypno" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "lunar " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "thunder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "clown " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "murder " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "narco " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gangster " +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-tune" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-core" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-wave" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-beat" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-step" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-pop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-hop" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-drums" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-style" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "-chant" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "folk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "country" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "jazz" +msgstr "爵士" + +#: lang/json/snippet_from_json.py +msgid "blues" +msgstr "藍調" + +#: lang/json/snippet_from_json.py +msgid "soul" +msgstr "靈魂" + +#: lang/json/snippet_from_json.py +msgid "R&B" +msgstr "R&B" + +#: lang/json/snippet_from_json.py +msgid "hip-hop" +msgstr "嘻哈" + +#: lang/json/snippet_from_json.py +msgid "swing" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "funk" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "disco" +msgstr "迪斯可" + +#: lang/json/snippet_from_json.py +msgid "polka" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "tango" +msgstr "探戈" + +#: lang/json/snippet_from_json.py +msgid "salsa" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "mambo" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "electronic" +msgstr "電子" + +#: lang/json/snippet_from_json.py +msgid "metal" +msgstr "重金屬" + +#: lang/json/snippet_from_json.py +msgid "reaggae" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "ska" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "punk" +msgstr "屁孩" + +#: lang/json/snippet_from_json.py +msgid "thrash" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "goth" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "industrial" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "psychedelic" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "noise" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "sound" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "revival" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "gospel" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "opera" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "shanties" +msgstr "" + #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. " @@ -88712,7 +89789,7 @@ msgid "" "down over his eyes. The captions read: \"It's a tough job, so why should " "you have to do it?\" and \"R.U.R. Technology you can Trust.\"" msgstr "" -"這是全能機器牌機械勞工的廣告。上面有著機器人搬運沈重磚塊的圖案。背景中則有人類工頭拉下帽子在睡大覺。標題寫著: \"何必親手做艱苦的工作?\" 以及 " +"這是全能機器牌機械勞工的廣告。上面有著機器人搬運沈重磚塊的圖案。背景中則有人類工頭拉下帽子在睡大覺。標題寫著: \"何必親手做艱苦的工作? \" 以及 " "\"你能信任的全能機器。\"" #: lang/json/snippet_from_json.py @@ -88770,7 +89847,7 @@ msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " "a man carrying a somewhat confused horse on his shoulders. He is flanked by" " two scantily clad nurses who hold bloody chainsaws and give approving " -"thumbs up. His bulging knees and elbows are stiched and seem to be the " +"thumbs up. His bulging knees and elbows are stitched and seem to be the " "source of his ability. The caption reads: \"Brand new! Horse power at " "hand!\"" msgstr "" @@ -88778,7 +89855,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "" "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of " -"a man smiling while being relentlesly punched by a boxer. He doesn't even " +"a man smiling while being relentlessly punched by a boxer. He doesn't even " "sweat as punches have no effect on him. Two scantily clad nurses give " "approving thumbs up from the background. The caption reads: \"Bouncy as " "never before! Absorb those shocks!\"" @@ -88812,7 +89889,7 @@ msgid "" "approaching wildlife. The caption reads: \"Rivtech caseless firearms. " "Superior stopping power.\"" msgstr "" -"這是Rivtech牌的槍械廣告。上面畫著三個全副武裝的獵人。每一位都帶著不同樣貌的漂亮武器並且對著蜂擁來襲的敵人開槍。標題寫著: " +"這是 Rivtech 牌的槍械廣告。上面畫著三個全副武裝的獵人。每一位都帶著不同樣貌的漂亮武器並且對著蜂擁來襲的敵人開槍。標題寫著: " "\"Rivtech無殼槍械, 強勁的遏止力量! \"" #: lang/json/snippet_from_json.py @@ -88823,7 +89900,7 @@ msgid "" "synthetic adenosine triphosphate recovery system on the market.\" and " "\"Rivtech Bionics, guaranteed for life.\"" msgstr "" -"這是 Rivtech 牌的肌肉增強CBM廣告。紅色背景的上面畫著一隻很時尚風格正在咆嘯的狼。標題寫著: \"Rivtech " +"這是 Rivtech 牌的肌肉增強生化插件廣告。紅色背景的上面畫著一隻很時尚風格正在咆嘯的狼。標題寫著: \"Rivtech " "神經刺激的生化肌肉纖維生化插件。市場上最有效的合成磷酸腺苷回收系統。\" 以及 \"Rivtech 生化插件, 終生保固。\"" #: lang/json/snippet_from_json.py @@ -88974,7 +90051,7 @@ msgid "" "further notice. Stay indoors. Violators will be shot on sight." msgstr "" "這是一則來自美國軍方的公開警告, 他用多種不同語言簡短扼要的寫道: 美國總統已經宣布全國範圍內實施片面戒嚴, 民眾應就地尋找避難場所, " -"直到具有授權的軍事人員將其疏散到緊急管理營地。如無另行通知, 本戒嚴令將持續生效。留在室內, 違反者一經發現, 將遭到射殺 ." +"直到具有授權的軍事人員將其疏散到緊急管理營地。如無另行通知, 本戒嚴令將持續生效。留在室內, 違反者一經發現, 將遭到射殺。" #: lang/json/snippet_from_json.py msgid "" @@ -89046,7 +90123,7 @@ msgid "" "claymore walking towards the viewer. At his side is his trusty cyberdog " "companion and in the background is an explosion." msgstr "" -"這是一張巨大的 \"灰岩行動6, 犬人的復仇\" 電影海報。上面畫著爆炸中的背景, " +"這是一張巨大的 \"灰岩行動 6, 犬人的復仇\" 電影海報。上面畫著爆炸中的背景, " "一個上鏡且穿著皮衣的男人拿著左輪手槍和大砍刀走向觀眾。他的身旁有他最信任的機械狗夥伴。" #: lang/json/snippet_from_json.py @@ -89120,7 +90197,7 @@ msgid "" "there seems to be no information about *how* one might do so." msgstr "" "這是一張宣傳地下碉堡的傳單。傳單印了一幅核彈毀滅一個地巿時一個家庭聚集在地底的畫像。上面有一句標語寫了在中間 \"擔心敵人的攻擊? 想保護你的家人? " -"今天就參加避難所計劃吧。\" 不過裡面似乎沒有提及到 *如何* 會有這個功能。" +"今天就參加避難所計劃吧。\" 不過裡面似乎沒有提及到這些會 *如何* 發生。" #: lang/json/snippet_from_json.py msgid "" @@ -89376,7 +90453,7 @@ msgstr "\"我男友趁我睡覺時偷了我的手搶。於是我把他鎖在浴 #: lang/json/snippet_from_json.py msgid "\"I get air conditioners, but... this whole laboratory is frozen to ice!\"" -msgstr "\"我找到了空調, 可是…整個實驗室都被冰凍了! \"" +msgstr "\"我找到了空調, 可是… 整個實驗室都被冰凍了! \"" #: lang/json/snippet_from_json.py msgid "\"Fuck aerodynamics, I want another engine!\"" @@ -89397,7 +90474,7 @@ msgstr "\"為什麼你躲在農場? 對, 這裡很偏僻, 不過如果他們知 #: lang/json/snippet_from_json.py msgid "" "\"Imagine if this spread to, like, Australia. Zombie kangaroos. Haha...\"" -msgstr "\"想像一下, 如果這場大災變擴散到其他地方, 像澳洲...袋鼠殭屍。哈哈...\"" +msgstr "\"想像一下, 如果這場大災變擴散到其他地方, 像澳洲… 袋鼠殭屍。哈哈… \"" #: lang/json/snippet_from_json.py msgid "" @@ -89436,7 +90513,7 @@ msgstr "" msgid "" "\"Those evac shelters have basements. Remember when they were full of food?" " Every single one is fucking empty now...\"" -msgstr "\"那些隔離避難所都有地下室。還記得那裡曾經都是滿滿的食物嗎? 現在每一個都是空的...\"" +msgstr "\"那些隔離避難所都有地下室。還記得那裡曾經都是滿滿的食物嗎? 現在每一個都是空的… \"" #: lang/json/snippet_from_json.py msgid "" @@ -89464,7 +90541,7 @@ msgstr "這裡有一小行血字。\"殭屍王之血\"" msgid "" "\"Local auto shop is full of the things. And to think I worked with them on" " repairing cars... now they're just... fucking corpses.\"" -msgstr "\"保養廠裡已經全是那些東西了。想到不久前我還跟他們一起修車...現在他們卻已經是...他媽的殭屍。\"" +msgstr "\"保養廠裡已經全是那些東西了。想到不久前我還跟他們一起修車… 現在他們卻已經是… 他媽的殭屍。\"" #: lang/json/snippet_from_json.py msgid "\"DON'T EAT THE SLIME DON'T EAT THE SLIME DON'T EAT THE SLIME\"" @@ -89474,7 +90551,7 @@ msgstr "\"不要吃黏液不要吃黏液不要吃黏液\"" msgid "" "\"I used to be human. But... my arms... they are like tentacles. I slither" " along akin to a snail and I shed my feathers every day.\"" -msgstr "\"我曾經是人類。但是...我的手臂...他們就像觸手一樣。我每天像蝸牛一樣爬行, 還掉了一堆羽毛。\"" +msgstr "\"我曾經是人類。但是… 我的手臂… 他們就像觸手一樣。我每天像蝸牛一樣爬行, 還掉了一堆羽毛。\"" #: lang/json/snippet_from_json.py msgid "\"I don't have enough time to double tap. You don't either.\"" @@ -89519,17 +90596,17 @@ msgid "" "\"There are five basic rules to survival. One, stay prepared and watchful." " Two, keep your iron sights lined up or succumb. Three, stay FAR WAY from " "all\"" -msgstr "關於生存有五個基本原則: 第一, 隨時作好準備並保持警惕。第二, 瞄準你的準星。第三, 遠離一切。" +msgstr "\"關於生存有五個基本原則: 第一, 隨時作好準備並保持警惕。第二, 瞄準你的準星。第三, 遠離一切。\"" #: lang/json/snippet_from_json.py msgid "" "\"The bricks of this bathroom look like a face. Haha... it's all I can " "focus on. At least let me shit before you break down the door. Please...\"" -msgstr "這間浴室的磚牆看起來真像一張臉。哈哈...這是我唯一能用來轉移注意力的東西了。至少在你破門而入之前讓我拉完屎, 拜託了..." +msgstr "\"這間浴室的磚牆看起來真像一張臉。哈哈… 這是我唯一能用來轉移注意力的東西了。至少在你破門而入之前讓我拉完屎, 拜託了… \"" #: lang/json/snippet_from_json.py msgid "\"What the hell are they mining for in these shafts?\"" -msgstr "他們在這些豎坑裡挖什麼鬼東西?" +msgstr "\"他們在這些豎井裡挖什麼鬼東西? \"" #: lang/json/snippet_from_json.py msgid "\"I am one with the plants.\"" @@ -89543,7 +90620,7 @@ msgstr "\"闊劍! 耶! \"" msgid "" "\"If you see a trail of dirt getting displaced in your direction... run. " "Run for your life.\"" -msgstr "如果你看到一串被掀起的土壤不斷朝著你的方向前進......跑, 趕快逃命" +msgstr "\"如果你看到一串被掀起的土壤不斷朝著你的方向前進… 快跑。\"" #: lang/json/snippet_from_json.py msgid "\"Don't fall down a nuclear silo, they left 'em all open\"" @@ -89561,7 +90638,7 @@ msgstr "\"末日之後圖書館就沒用了。\"" msgid "" "\"I swear to God I've seen these plant things before! In a book, or " "something! I swear...\"" -msgstr "\"我對天發誓我看過這些植物! 在一本書或是什麼地方! 我發誓...\"" +msgstr "\"我對天發誓我看過這些植物! 在一本書或是什麼地方! 我發誓… \"" #: lang/json/snippet_from_json.py msgid "\"Is robbing a bank easier or harder now that all the guards are undead?\"" @@ -89575,13 +90652,13 @@ msgstr "\"確定你的車真的停下之後再下車\"" msgid "" "\"I found some kind of stone pyramid with spikes. I feel... I feel like I'm" " being watched.\"" -msgstr "我發現了一石砌金字塔尖碑。我覺得...我覺得我被監視了" +msgstr "\"我發現了一石砌金字塔尖碑。我覺得… 我覺得我被監視了\"" #: lang/json/snippet_from_json.py msgid "" "\"Why would you ever hide in a damn gun store? The owner... he was a moron " "alright.\"" -msgstr "\"為什麼你會躲在一家該死的槍械商店裡? 老闆...他是個傻瓜嗎? \"" +msgstr "\"為什麼你會躲在一家該死的槍械商店裡? 老闆… 他是個傻瓜嗎? \"" #: lang/json/snippet_from_json.py msgid "\"This apocalypse will be good for the US financial crisis\"" @@ -89607,7 +90684,7 @@ msgstr "\"瑪力說得對\"" #: lang/json/snippet_from_json.py msgid "\"I... I just put a muffler onto a... nail gun.\"" -msgstr "\"我...我只是把一個消音器裝到....釘槍上。\"" +msgstr "\"我… 我只是把一個消音器裝到… 釘槍上。\"" #: lang/json/snippet_from_json.py msgid "" @@ -89633,7 +90710,7 @@ msgstr "\"那些在坑旁邊的東西是啥? 就是那些像史萊姆一樣的 msgid "" "\"Everyone used their gas to get to another town... but it's the same story " "everywhere.\"" -msgstr "\"每個人都開車去其他城市...可是同樣的故事不斷上演。\"" +msgstr "\"每個人都開車去其他城市… 可是同樣的故事在每一個地方上演。\"" #: lang/json/snippet_from_json.py msgid "\"The gas the gas the green gas spreads forever\"" @@ -89649,7 +90726,7 @@ msgstr "\"絕大多數的東西可以靠霰彈槍。更多的東西可以靠手 msgid "" "\"My friend gave me lit dynamite, but it hasn't exploded yet... I don't " "think that's supposed to happen. God help us.\"" -msgstr "\"我的同伴幫我點燃了炸藥, 但是卻還沒爆炸... 這不應該發生的。老天保佑。\"" +msgstr "\"我的同伴幫我點燃了炸藥, 但是卻還沒爆炸… 這不應該發生的。老天保佑。\"" #: lang/json/snippet_from_json.py msgid "" @@ -89699,9 +90776,7 @@ msgstr "\"殭屍、活屍、活死人、遊蕩者、不死者、咬人精、行 msgid "" "\"I left a stash of rechargeable batteries in my safe and apparently the " "goddamn zombie Tooth Fairy has taken them all.\"" -msgstr "" -"\"我把一堆可充電電池放在了我的保險箱裡, 但哪個天殺的殭屍牙仙把它們全拿走了? \"\n" -"PS.牙仙是歐美等西方國家傳說中的妖精。傳說中, 小孩子脫掉乳齒後, 將乳齒放在枕頭底, 夜晚時牙仙就會取走放在枕頭底的牙齒, 換成一個金幣。" +msgstr "\"我把一堆可充電電池放在了我的保險箱裡, 但哪個天殺的殭屍牙仙把它們全拿走了? \"" #: lang/json/snippet_from_json.py msgid "" @@ -89727,7 +90802,7 @@ msgstr "\"有隻狗咬了我的腿, 醫院會讓我感覺好些\"" msgid "" "\"They said a walking cane was a useless weapon... but then I hit one of " "them with it.\"" -msgstr "\"他們說拐杖是無用的武器...後來我用它揍了其中一個人。\"" +msgstr "\"他們說拐杖是無用的武器… 後來我用它揍了其中一個人。\"" #: lang/json/snippet_from_json.py msgid "" @@ -89757,7 +90832,7 @@ msgstr "\"我提議一種新的貨幣: 9mm。\"" msgid "" "\"Something wrong, with cars..., ram, and,. my speedometer read six " "hundred.,.thousand can't feel lungs,\"" -msgstr "\"車子出了點問題...好快, 我的時速表上顯示著600...不...1000, 我快要不能呼吸了。\"" +msgstr "\"車子出了點問題… 好快, 我的時速表上顯示著 600… 不… 1000, 我快要不能呼吸了。\"" #: lang/json/snippet_from_json.py msgid "" @@ -89776,7 +90851,7 @@ msgstr "\"你無法穿過煙霧看到他們, 他們也不能。\"" #: lang/json/snippet_from_json.py msgid "\"There's gotta be a better use of all this rebar...\"" -msgstr "\"應該有更好的方法好來利用這些鋼筋...\"" +msgstr "\"應該有更好的方法好來利用這些鋼筋… \"" #: lang/json/snippet_from_json.py msgid "" @@ -89860,11 +90935,11 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "\"CHINA DID THIS\"" -msgstr "" +msgstr "\"這一定是中國幹的\"" #: lang/json/snippet_from_json.py msgid "\"RUSSIA DID THIS\"" -msgstr "" +msgstr "\"這一定是俄羅斯幹的\"" #: lang/json/snippet_from_json.py msgid "" @@ -90054,7 +91129,7 @@ msgstr "" msgid "" "\"Tried wearing dead zombie clothes, but they still knew I was alive! It's " "like they're a hivemind, man!\"" -msgstr "\"嘗試穿上死亡殭屍的衣服, 但牠們仍然知道我還生存! 這和牠們是一個集合意識一樣啊, 老兄! \"" +msgstr "\"嘗試穿戴死亡殭屍的衣服, 但牠們仍然知道我還生存! 這和牠們是一個集合意識一樣啊, 老兄! \"" #: lang/json/snippet_from_json.py msgid "\"MY PALMS ONLY GROW IN POWER!\"" @@ -90080,7 +91155,7 @@ msgstr "\"哇呀, 我把妹妹的胰島素放進內燃機。該死。\"" msgid "" "\"traveled with a few friends after the thing started. mostly stuck to bike" " paths and eaten fruit and mushroomdhfhghghhhh\"" -msgstr "" +msgstr "\"事件發生後, 與幾個朋友一起旅行。大部分都停留在自行車道上, 吃了水果和蘑菇姑估咕沽鈷… \"" #: lang/json/snippet_from_json.py msgid "" @@ -90529,8 +91604,8 @@ msgid "" "Please retreat to your nearest evacuation center outside town and await " "extraction.\"" msgstr "" -"城鎮已經淪陷: 聯邦緊急事故管理總署的一位官員於今天發表聲明: \"不要為了試圖保護你的財產而留在城鎮裡, " -"入侵者使用先進的追蹤技術-但也或許是用聞的。請撤退到城外離你最近的避難中心並且等待救援。\"" +"城鎮已經淪陷: 聯邦緊急事務管理署的一位官員於今天發表聲明: \"不要為了試圖保護你的財產而留在城鎮裡: 入侵者使用先進的追蹤技術, " +"或許是依靠氣味。請撤退到城外離你最近的避難中心並且等待救援。\"" #: lang/json/snippet_from_json.py msgid "" @@ -90539,8 +91614,8 @@ msgid "" "word yet on if this is a deliberate tactic or a side effect of the earlier " "bombings." msgstr "" -"公告: " -"\"當心酸雨\"。有些具腐蝕性的化學物質飄到空中同雨雲結合引起化學反應成可致死的酸雨。目前尚無法認定這是人為的蓄意計畫或僅是先前實驗室爆炸案的副作用。" +"公告: \"當心酸雨\": " +"有些具腐蝕性的化學物質飄到空中同雨雲結合引起化學反應成可致死的酸雨。目前尚無法認定這是人為的蓄意計畫或僅是先前實驗室爆炸案的副作用。" #: lang/json/snippet_from_json.py msgid "" @@ -90555,7 +91630,7 @@ msgid "" "SOLDIERS SEEN HEADED UNDERGROUND. Rumors abound as eyewitness see troops " "headed underground near a local salon. Expert sources suggest that the " "soldiers may be headed to a possible underground bunker." -msgstr "《目擊到士兵暗中前往地底。》當地有很多目擊者聲稱, 看到在一家沙龍附近有部隊進入地底。專家認為, 士兵們可能是前往某處未知的地下碉堡。" +msgstr "\"目擊到士兵暗中前往地底\": 當地有很多目擊者聲稱, 看到在一家沙龍附近有部隊進入地底。專家認為, 士兵們可能是前往某處未知的地下碉堡。" #: lang/json/snippet_from_json.py msgid "" @@ -90574,7 +91649,7 @@ msgid "" "weaken enemies or improve our own troops. \"We're still in Alpha testing,\"" " says Kevin, \"It really needs a Bugfix\"." msgstr "" -"顛覆世界: 科學家凱文.瘤彈透露了一些 \"真實手榴彈\" 跟傳送科技有關的消息。他宣稱這可以用來削弱敵人或是增強我方。凱文說: " +"顛覆世界: 科學家凱文·瘤彈透露了一些 \"真實手榴彈\" 跟傳送科技有關的消息。他宣稱這可以用來削弱敵人或是增強我方。凱文說: " "\"我們仍然處於初步測試, 這個東西還有得除錯。\"" #: lang/json/snippet_from_json.py @@ -90634,7 +91709,7 @@ msgid "" "The Future... powered by COFFEE! Rivtech brings you the greatest " "revolution since espresso. Why wait for milk to boil? Have your coffee " "ready instantly with \"THE POWER OF THE ATOM\"!" -msgstr "未來...是由 \"咖啡\" 驅動的! Rivtech 帶給你最棒的濃縮咖啡革命。為什麼還要等牛奶煮開? 讓你的咖啡藉由 \"原子之力\" 瞬間完成吧!" +msgstr "未來… 是由 \"咖啡\" 驅動的! Rivtech 帶給你最棒的濃縮咖啡革命。為什麼還要等牛奶煮開? 讓你的咖啡藉由 \"原子之力\" 瞬間完成吧!" #: lang/json/snippet_from_json.py msgid "" @@ -90704,7 +91779,7 @@ msgid "" "reality\". Apparently it will be crowdsourced via Kickstarter as \"Project " "Cataclysm\" " msgstr "" -"GRANADE 尋找丰榴彈的經費: 本文調查了傳聞中的前科學家 Kevin Granade 正在尋求公眾募款, 為了研發現實扭曲武器 \"丰榴彈\", 其 \"[...略] 工作原理是修補現實\"。顯然這將會透過 Kickstarter 進行群眾募款來完成 \"烏日計畫\"。\n" +"GRANADE 尋找丰榴彈的經費: 本文調查了傳聞中的前科學家 Kevin Granade 正在尋求公眾募款, 為了研發現實扭曲武器 \"丰榴彈\", 其 \"[… 略] 工作原理是修補現實\"。顯然這將會透過 Kickstarter 進行群眾募款來完成 \"烏日計畫\"。\n" "(此為開發者惡搞新聞, 利用 Kevin Granade 與 Grenade 相似的文字與你正在玩的此遊戲)" #: lang/json/snippet_from_json.py @@ -90860,7 +91935,7 @@ msgid "" "BIRDHOUSE MONTHLY... Which wood would a woodpecker prefer? This month we " "discuss hardwood versus soft woods, whether to lacquer, oil or paint, and " "which type of nails you should use!" -msgstr "鳥籠月刊...啄木鳥比較喜歡啄哪種木頭? 這個月我們討論軟木與硬木, 是否上漆或上油, 以及你該用哪種釘子!" +msgstr "鳥籠月刊… 啄木鳥比較喜歡啄哪種木頭? 這個月我們討論軟木與硬木, 是否上漆或上油, 以及你該用哪種釘子!" #: lang/json/snippet_from_json.py msgid "" @@ -90997,7 +92072,7 @@ msgid "" "why not buy an MP3 PLAYER or a GAME CONSOLE? Chase those Blues away at " "GREENS Supermarket" msgstr "" -"覺得憂鬱? 試試雜誌上的 \"松青\"! 本地的超市! 若是好的雜誌無法讓你開心...試試垃圾食物! 或是買個 MP3 " +"覺得憂鬱? 試試雜誌上的 \"松青\"! 本地的超市! 若是好的雜誌無法讓你開心… 試試垃圾食物! 或是買個 MP3 " "播放器或電玩主機。讓松青超市把這些憂鬱趕走吧。" #: lang/json/snippet_from_json.py @@ -91015,8 +92090,8 @@ msgid "" "TECHNICIAN offer limitless growth potential! Please contact your employment" " adviser if you have any questions." msgstr "" -"《需要新工作? 》現在你可以擁有一間舒適的家, 來看看最有前途的職業空缺吧。一些空缺職位, 例如地質工程師助手或者設施技工, 都有著無窮的增長潛力! " -"如果你有任何問題, 請聯繫你的就業顧問。" +"\"需要新工作? \" 現在你可以擁有一間舒適的家, 來看看最有前途的職業空缺吧。一些空缺職位, 例如地質工程師助手或者設施技工, " +"都有著無窮的增長潛力! 如果你有任何問題, 請聯繫你的就業顧問。" #: lang/json/snippet_from_json.py msgid "" @@ -91025,8 +92100,8 @@ msgid "" "will receive additional hazardous pay and time off. Please go to the " "engineering office on level 3 if you are interested." msgstr "" -"《你有一雙巧手嗎? 》工程界永遠需要更多人手讓我們的家良好運作! 作為獎勵, 任何在三樓工作的人員都會得到額外的危險工作補貼及休假。如果你有意加入, " -"請到三樓的工程辦公室。" +"\"你有一雙巧手嗎? \"工程界永遠需要更多人手讓我們的家良好運作! 作為獎勵, 任何在三樓工作的人員都會得到額外的危險工作補貼及休假。如果你有意加入," +" 請到三樓的工程辦公室。" #: lang/json/snippet_from_json.py msgid "" @@ -91050,27 +92125,27 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "You feel cold. You need the warmth of a fire." -msgstr "" +msgstr "你覺得冷, 你需要火的溫暖。" #: lang/json/snippet_from_json.py msgid "Maybe a fire could calm your nerves?" -msgstr "" +msgstr "也許火可以平息你的焦慮?" #: lang/json/snippet_from_json.py msgid "You need to ignite something." -msgstr "" +msgstr "你需要點燃一些東西。" #: lang/json/snippet_from_json.py msgid "You daydream of crackling fire..." -msgstr "" +msgstr "你遐想著劈哩啪啦的火…" #: lang/json/snippet_from_json.py msgid "You shiver. A fire would be great right now." -msgstr "" +msgstr "你顫抖著。現在如果有火的話會很受用。" #: lang/json/snippet_from_json.py msgid "You think of randomly lighting a fire, but decide against it." -msgstr "" +msgstr "你想要隨機點火, 但最後決定放棄。" #: lang/json/snippet_from_json.py msgid "This is a test of the sign snippet system" @@ -91119,7 +92194,7 @@ msgstr "要是你看到一大群的殭屍接近, 快逃! 若是你沒有戰術 msgid "" "Watch out for those zombies that shriek; they'll let other zombies know " "where you are, and will attract them from all over." -msgstr "小心會尖叫的殭屍;他們會讓其他殭屍知道你在哪, 並且會從四面八方吸引過來。" +msgstr "小心會尖叫的殭屍, 他們會讓其他殭屍知道你在哪, 並且會從四面八方吸引過來。" #: lang/json/snippet_from_json.py msgid "" @@ -91138,7 +92213,7 @@ msgid "" "There's this type of zombie that can shoot bolts of lightning! Stay away " "from walls and stuff when they do... the electricity can travel along solid " "surfaces." -msgstr "還有殭屍是能夠發射閃電的! 離牆壁或其他物品遠點... 因為電能夠透過其他固體傳導。" +msgstr "還有殭屍是能夠發射閃電的! 離牆壁或其他物品遠點… 因為電能夠透過其他固體傳導。" #: lang/json/snippet_from_json.py msgid "" @@ -91151,7 +92226,7 @@ msgid "" "If you run into a zombie hulk, it's probably a good idea to run. They're " "fast as hell, but pretty dumb; they'll try to smash through obstacles rather" " than going around, and that slows them down a lot." -msgstr "要是你被殭屍浩克發現, 你最好是快逃。他的速度雖然很快, 但是很笨;他們追擊時會砸爛擋路的所有東西, 反而會讓他們速度減緩很多。" +msgstr "要是你被殭屍浩克發現, 你最好是快逃。他的速度雖然很快, 但是很笨。他們追擊時會砸爛擋路的所有東西, 反而會讓他們速度減緩很多。" #: lang/json/snippet_from_json.py msgid "" @@ -91183,7 +92258,7 @@ msgid "" "Don't try to take on a skeleton with a bladed weapon... you'll just leave " "scratch marks. You've got to shatter those bones with a hammer or " "something." -msgstr "別試著用刀劍之類的砍劈武器來攻擊骷髏怪... 你只能對他們造成刮痕。你必須用類似鎚子的鈍擊武器來把他們敲成碎片。" +msgstr "別試著用刀劍之類的砍劈武器來攻擊骷髏怪… 你只能對他們造成刮痕。你必須用類似鎚子的鈍擊武器來把他們敲成碎片。" #: lang/json/snippet_from_json.py msgid "" @@ -91203,7 +92278,7 @@ msgstr "" msgid "" "Oh man, have you gone down into the old subway systems? I'd be careful... " "there's these things down there that are like zombies, but tougher." -msgstr "兄弟, 你有沒有下去過舊的地下鐵系統? 我會很小心... 那裡有一些類似殭屍的東西, 但是更強。" +msgstr "兄弟, 你有沒有下去過舊的地下鐵系統? 我會很小心… 那裡有一些類似殭屍的東西, 但是更強。" #: lang/json/snippet_from_json.py msgid "" @@ -91236,7 +92311,7 @@ msgid "" "They're rare, but molebots are nasty things. They bore through the ground, " "then pop up to stab ya. Still, you're safe from them if you stay on " "pavement..." -msgstr "雖然很少遇到, 但是地鼠機器人很討厭。它們能夠鑽入地底, 然後衝出地表來刺你。當然, 你待在硬路面就安全了..." +msgstr "雖然很少遇到, 但是地鼠機器人很討厭。它們能夠鑽入地底, 然後衝出地表來刺你。當然, 你待在硬路面就安全了…" #: lang/json/snippet_from_json.py msgid "Don't fire your gun if you can help it--the noise attracts monsters!" @@ -91252,7 +92327,7 @@ msgstr "站在窗戶後是很好的戰略。殭屍爬窗很花時間, 讓你有 msgid "" "Zombies are pretty dumb... heck, most monsters are! If you can get a fire " "going between you and them, they'll just run straight through it." -msgstr "殭屍是非常笨的... 嘿, 大部分的怪物也是! 若是你能夠在你和怪物中生火, 他們就只會直直的衝入火海中。" +msgstr "殭屍是非常笨的… 嘿, 大部分的怪物也是! 若是你能夠在你和怪物中生火, 他們就只會直直的衝入火海中。" #: lang/json/snippet_from_json.py msgid "" @@ -91300,15 +92375,14 @@ msgid "" "For a good melee weapon, you can't beat a machete. I've seen a guy take " "down a zombie brute with one! Of course, if you can find a katana, that " "might be even better..." -msgstr "" -"作為一件良好的近戰武器, 你無法抗拒開山刀的誘惑。我曾見過有個傢伙用開山刀幹掉一整群殭屍! 當然, 你要是能找到武士刀的話, 那就更好了..." +msgstr "作為一件良好的近戰武器, 你無法抗拒開山刀的誘惑。我曾見過有個傢伙用開山刀幹掉一整群殭屍! 當然, 你要是能找到武士刀的話, 那就更好了…" #: lang/json/snippet_from_json.py msgid "" "You know, a glass bottle can make a good weapon in a pinch. If you break it" " over someone's head, the shattering glass will hurt them extra. Of course," " it might hurt your hands, too..." -msgstr "你知道嗎, 玻璃瓶也能夠當做一個很好的近戰武器。若是你拿去敲某人的頭, 玻璃破片會造成額外的傷害。當然, 也可能會傷到你的手掌..." +msgstr "你知道嗎, 玻璃瓶也能夠當做一個很好的近戰武器。若是你拿去敲某人的頭, 玻璃破片會造成額外的傷害。當然, 也可能會傷到你的手掌…" #: lang/json/snippet_from_json.py msgid "" @@ -91340,7 +92414,7 @@ msgid "" "Shotguns are nice; you can take out lots of baddies with a single shot. " "Just remember that they're noisy as hell, and you might end up attracting " "more than you kill." -msgstr "霰彈槍很讚;你能用一槍就幹掉一群壞東西。只是要記得這東西會產生很大的噪音, 可能會引來更多殺不完的怪物。" +msgstr "霰彈槍很讚, 你能用一槍就幹掉一群壞東西。只是要記得這東西會產生很大的噪音, 可能會引來更多殺不完的怪物。" #: lang/json/snippet_from_json.py msgid "" @@ -91367,14 +92441,14 @@ msgid "" "I've seen a couple guys running around with laser pistols. They seem like " "the perfect weapon... quiet, accurate, and deadly. But I've never found " "one, and I bet ammo is wicked scarce..." -msgstr "我曾看過有人拿過雷射手槍。看起來好像是完美的武器... 安靜, 準確, 又致命。但是我從來就沒拿到過, 而且我猜彈藥一定很稀少..." +msgstr "我曾看過有人拿過雷射手槍。看起來好像是完美的武器… 安靜, 準確, 又致命。但是我從來就沒拿到過, 而且我猜彈藥一定很稀少…" #: lang/json/snippet_from_json.py msgid "" "When it comes to footwear, you've got two basic choices as far as I see it; " "sneakers, for running extra fast, or boots for durability. Depends on your " "style, I guess." -msgstr "說到腳上穿的, 我目前知道你有兩種基本的選擇;運動鞋, 能夠跑的更快, 或是靴子, 更耐用。端看你想要走哪種路線。" +msgstr "說起各種鞋款, 據我所知你有兩種基本選擇: 運動鞋便於快跑, 靴子則更為耐用。依據你想走的風格決定。" #: lang/json/snippet_from_json.py msgid "" @@ -91392,7 +92466,7 @@ msgstr "身上最好帶著過濾面罩或是防毒面具。你永遠不知道何 msgid "" "There's basically no reason not to wear safety glasses... nothing is worse " "than taking a hit to the eyes and getting blinded for a few seconds." -msgstr "基本上沒有不戴護目鏡的理由... 沒有什麼比被擊中眼睛造成失明更慘的了。" +msgstr "基本上沒有不戴護目鏡的理由… 沒有什麼比被擊中眼睛造成失明更慘的了。" #: lang/json/snippet_from_json.py msgid "" @@ -91547,13 +92621,13 @@ msgid "" "swim. Just make sure you drop as much stuff as possible first, and maybe " "strip naked, or you'll sink like a rock." msgstr "" -"假使有必要的話, 你可以利用游泳過河來脫逃;大部分的怪物都不會游泳。只是要先確認你東西沒有帶太多, 或乾脆直接脫光光, 不然你會立刻像石頭沉到水裡。" +"假使有必要的話, 你可以利用游泳過河來脫逃。大部分的怪物都不會游泳。只是要先確認你東西沒有帶太多, 或乾脆直接脫光光, 不然你會立刻像石頭沉到水裡。" #: lang/json/snippet_from_json.py msgid "" "Houses can be a surprisingly good resource for all kinds of stuff; clothing," " medication, food, books, and more." -msgstr "房屋裡有各種出乎意料的物資;衣物、藥品、食物、書籍等等。" +msgstr "房屋裡有各種出乎意料的物資: 衣物、藥品、食物、書籍等等。" #: lang/json/snippet_from_json.py msgid "" @@ -91565,13 +92639,13 @@ msgstr "雖然不多, 但加油站是汽油的好來源, 能夠讓動力工具 msgid "" "It's not like in the movies--shooting a gas pump won't make it explode. But" " it WILL make it leak all over the place, which is a definite fire hazard." -msgstr "不像電影--射擊汽油泵並不會爆炸。只會讓汽油流的到處都是, 容易造成火災。" +msgstr "不像電影… 射擊汽油泵並不會爆炸。只會讓汽油流的到處都是, 容易造成火災。" #: lang/json/snippet_from_json.py msgid "" "I know grocery stores and stuff are full of fruit, but be careful, it's " "probably rotten." -msgstr "我知道雜貨店有很多水果, 但是有可能是腐爛掉的。" +msgstr "我知道雜貨店有很多水果, 但是有可能是腐敗掉的。" #: lang/json/snippet_from_json.py msgid "" @@ -91595,14 +92669,14 @@ msgstr "酒類專賣店也是個拿非酒類飲料的好地方。雖然我也不 msgid "" "Most gun stores follow pretty similar layouts. The restricted stuff--SMGs, " "assault rifles, and most importantly ammo--are always behind the counter." -msgstr "大部分的槍械商店有著類似的佈置。一些受管制的東西--衝鋒槍, 突擊步槍, 和最重要的彈藥--通常都放在櫃檯後方。" +msgstr "大部分的槍械商店有著類似的佈局。一些受管制的東西… 衝鋒槍, 突擊步槍, 和最重要的彈藥… 通常都放在櫃檯後方。" #: lang/json/snippet_from_json.py msgid "" "I've spent many nights in the changing rooms at the back of clothing stores." " Walls on four sides, far from the store's entrance, a corridor for easy " "defense... it's perfect!" -msgstr "我曾在服飾店的更衣間安然度過好幾個夜晚。四面都有牆、遠離店門口、易於防守的狹窄走廊... 真完美!" +msgstr "我曾在服飾店的更衣間安然度過好幾個夜晚。四面都有牆、遠離店門口、易於防守的狹窄走廊… 真完美!" #: lang/json/snippet_from_json.py msgid "" @@ -91648,17 +92722,202 @@ msgid "" " you in a sleep." msgstr "" +#: lang/json/snippet_from_json.py +msgid "" +"Be wary of anything deeper than your average basement. Some folks heard " +"scary screams from the ventilation shafts of mines and labs. Very " +"unsettling screams." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "A screwdriver a day keeps the scurvy away!" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Hungrier, than usual? Natural oils can help. Not tasty at all, but who " +"cares when eating your leg is the second option?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Terrain can turn the tide of a battle, make sure you use it against your " +"enemies, lest it be used against you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Folks that passed by the mine said something about foul smell. If you plan " +"a visit there consider taking a a gas mask with you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Knowledge is power. Seriously, just pick up a book." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Nothing can kill you if everything is already dead. Well, except cold, " +"hunger, and… never mind." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I met a girl that insisted that she saw a land shark boring through rock, " +"walls, and dirt alike. I'd consider it a fable, but I've seen things, and " +"can't just say it's a lie." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Boil first, then drink. Ten men caravan once drank from a spring, and they " +"are now known as a three man caravan." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've once seen a full duffel bag pass hands five times in a week. Having a " +"lot of stuff is a moot point if you can't run from zombies." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tim says you can drive a car through a horde of zombies. Tim is now a " +"zombie. Any questions?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"They said: go solar, save the environment and yourself. Well... there is no" +" environment to save now, but one can still save thyself I guess." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"If you can't find a knife try smashing potted plants. It just might give " +"you everything you need to make one." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"What's the difference between a good and a bad choke point? The good one " +"has another back door behind you." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"So, methinks: if you could convince the cop-bots that you are their " +"superior..." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"You'd be surprised how many items can be disassembled into their components." +" This guy around here, McSomething whatever his name is, is a master at " +"this." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A soldering iron can be an aspiring mechanics' best friend. You can also " +"cauterize a wound with it, but as many people died as lived from that " +"treatment, so I guess it's a last resort." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I've seen some folks running with freshly installed CBMs. That means there " +"is a way to get them from places other than ransacked shops. Maybe that " +"explains those cut-up bodies I've seen around." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I'm fed up with smoked meat, but it lasts so long. Well... if I had more " +"heart for learning cooking I guess I'd be able to diversify my food without " +"sacrificing its shelf life." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, " +"burning down a building to smoke few hordes is ok, but burning a whole town " +"with all the loot certainly is not." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Mr Tombstone always said: take nothing with you for the raids, save the " +"space for loot. He was known as Joe then and he rightfully earned his " +"nickname as the first tombstone 'owner' in this place." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A friend is a second mouth to fill, but when it comes to work four hands are" +" always better than two." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I was against drugs until I was almost killed by a zombie and was hauling my" +" sorry ass away from the horde, with nothing more but some white powder I " +"got from that zombie. Saved me that time." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Not sure if Mike is sane any more. He was unfortunate enough to be driven " +"in to a school one time. This experience broke more than his ribs then." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"A thought about explosives. If you can still run and it did not went boom " +"yet, run some more. There is no such thing as excess space between you and " +"a stick of dynamite." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "Avoid using launchers in narrow hallways, you might miss." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Met a mad chemist once. She made a battery from a potato... or was it " +"lemon?" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I have no idea why zombie grenadiers always holds a grenade in its hand. " +"Muscle memory? Anyway, by no means you want to be near when it falls." +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"Is it dead yet? How can you tell if it was dead before and it's dead now? " +"I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash " +"smash smash*" +msgstr "" + +#: lang/json/snippet_from_json.py +msgid "" +"I hear there's strange big berries around, but why don't I hear first hand " +"if they are filling for their size or not?" +msgstr "" + #: lang/json/snippet_from_json.py msgid " " msgstr " " #: lang/json/snippet_from_json.py msgid "asshat" -msgstr "" +msgstr "蠢人" #: lang/json/snippet_from_json.py msgid "asswipe" -msgstr "" +msgstr "屎人" #: lang/json/snippet_from_json.py msgid "bag of shit" @@ -91666,35 +92925,35 @@ msgstr "一坨屎" #: lang/json/snippet_from_json.py msgid "bastard" -msgstr "" +msgstr "混蛋" #: lang/json/snippet_from_json.py msgid "blockhead" -msgstr "" +msgstr "傻瓜" #: lang/json/snippet_from_json.py msgid "chump" -msgstr "" +msgstr "傻蛋" #: lang/json/snippet_from_json.py msgid "clown" -msgstr "" +msgstr "丑角" #: lang/json/snippet_from_json.py msgid "cretin" -msgstr "" +msgstr "白癡" #: lang/json/snippet_from_json.py msgid "degenerate" -msgstr "" +msgstr "爛人" #: lang/json/snippet_from_json.py msgid "dick" -msgstr "" +msgstr "鳥人" #: lang/json/snippet_from_json.py msgid "dipshit" -msgstr "" +msgstr "賤人" #: lang/json/snippet_from_json.py msgid "douchebag" @@ -91702,23 +92961,23 @@ msgstr "惡棍" #: lang/json/snippet_from_json.py msgid "dumbass" -msgstr "" +msgstr "笨蛋" #: lang/json/snippet_from_json.py msgid "dumb " -msgstr "" +msgstr "愚蠢的 " #: lang/json/snippet_from_json.py msgid "fool" -msgstr "" +msgstr "傻子" #: lang/json/snippet_from_json.py msgid "freak" -msgstr "" +msgstr "怪人" #: lang/json/snippet_from_json.py msgid "goon" -msgstr "" +msgstr "獃子" #: lang/json/snippet_from_json.py msgid "half-eaten " @@ -91726,35 +92985,31 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "idiot" -msgstr "" +msgstr "白痴" #: lang/json/snippet_from_json.py msgid "imbecile" -msgstr "" +msgstr "笨人" #: lang/json/snippet_from_json.py msgid "jackass" -msgstr "" +msgstr "笨驢" #: lang/json/snippet_from_json.py msgid "moron" -msgstr "" +msgstr "低能兒" #: lang/json/snippet_from_json.py msgid "nitwit" -msgstr "" +msgstr "傻貨" #: lang/json/snippet_from_json.py msgid "piece of an ass" -msgstr "" +msgstr "尤物" #: lang/json/snippet_from_json.py msgid "piece of shit" -msgstr "" - -#: lang/json/snippet_from_json.py -msgid "punk" -msgstr "屁孩" +msgstr "廢物" #: lang/json/snippet_from_json.py msgid "scumbag" @@ -91762,15 +93017,15 @@ msgstr "人渣" #: lang/json/snippet_from_json.py msgid "shit-brained " -msgstr "" +msgstr "頭殼裝屎的 " #: lang/json/snippet_from_json.py msgid "shit-eater" -msgstr "" +msgstr "吃屎鬼" #: lang/json/snippet_from_json.py msgid "shitass" -msgstr "" +msgstr "屎爛人" #: lang/json/snippet_from_json.py msgid "shitbag" @@ -91778,31 +93033,31 @@ msgstr "蠢貨" #: lang/json/snippet_from_json.py msgid "shitface" -msgstr "" +msgstr "討厭鬼" #: lang/json/snippet_from_json.py msgid "son of a " -msgstr "" +msgstr " 崽子" #: lang/json/snippet_from_json.py msgid "stinky " -msgstr "" +msgstr "臭 " #: lang/json/snippet_from_json.py msgid "stupidass" -msgstr "" +msgstr "弱智" #: lang/json/snippet_from_json.py msgid "stupid " -msgstr "" +msgstr "愚笨的 " #: lang/json/snippet_from_json.py msgid "swine" -msgstr "" +msgstr "笨豬" #: lang/json/snippet_from_json.py msgid "zombie food" -msgstr "" +msgstr "殭屍食糧" #: lang/json/snippet_from_json.py msgid "loser" @@ -91842,23 +93097,23 @@ msgstr "蠢蛋" #: lang/json/snippet_from_json.py msgid " if I won't get some water soon." -msgstr "" +msgstr "如果我不快點喝點水的話 。" #: lang/json/snippet_from_json.py msgid "Can you get me some water, ?" -msgstr "" +msgstr "可以給我點水喝嗎, ?" #: lang/json/snippet_from_json.py msgid "Do you have something to drink, ?" -msgstr "" +msgstr "有什麼吃的東西嗎, ?" #: lang/json/snippet_from_json.py msgid "I need some water!" -msgstr "" +msgstr "我需要一些 的水!" #: lang/json/snippet_from_json.py msgid "My mouth is dry." -msgstr "" +msgstr "我的嘴好乾。" #: lang/json/snippet_from_json.py msgid "When we drinkin'?" @@ -91874,11 +93129,11 @@ msgstr "我口乾舌燥, 我需要喝的東西。" #: lang/json/snippet_from_json.py msgid "I'm thirsty..." -msgstr "我渴了..." +msgstr "我渴了…" #: lang/json/snippet_from_json.py msgid "I'm thirsty." -msgstr "" +msgstr "我 渴了。" #: lang/json/snippet_from_json.py msgid "I'm thirsty." @@ -91890,7 +93145,7 @@ msgstr "可以給我點喝的東西嗎, ?" #: lang/json/snippet_from_json.py msgid "I need to get some water." -msgstr "我 需要喝點水." +msgstr "我 需要喝點水。" #: lang/json/snippet_from_json.py msgid " if I don't drink something." @@ -91898,7 +93153,7 @@ msgstr "如果我不喝點東西的話。" #: lang/json/snippet_from_json.py msgid "Water... Is there an oasis nearby?" -msgstr "水...附近是不是有個綠洲?" +msgstr "水… 附近是不是有個綠洲?" #: lang/json/snippet_from_json.py msgid "Did you know that lack of water kills faster than lack of rest?" @@ -91906,7 +93161,7 @@ msgstr "你知道缺水比缺乏休息死得更快嗎?" #: lang/json/snippet_from_json.py msgid "darn" -msgstr "" +msgstr "縫補" #: lang/json/snippet_from_json.py msgid "fuck" @@ -91918,7 +93173,7 @@ msgstr "該死的" #: lang/json/snippet_from_json.py msgid "goddamnit" -msgstr "" +msgstr "他媽的" #: lang/json/snippet_from_json.py msgid "damn" @@ -92030,31 +93285,31 @@ msgstr "嗨 " #: lang/json/snippet_from_json.py msgid "never" -msgstr "" +msgstr "絕不" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/crafting_gui.cpp msgid "no" -msgstr "不" +msgstr "否" #: lang/json/snippet_from_json.py msgid "not gonna happen" -msgstr "" +msgstr "不會發生" #: lang/json/snippet_from_json.py msgid "not happening" -msgstr "" +msgstr "沒發生" #: lang/json/snippet_from_json.py msgid "over my dead body" -msgstr "" +msgstr "除非我死了" #: lang/json/snippet_from_json.py msgid "when pigs fly" -msgstr "" +msgstr "天方夜譚" #: lang/json/snippet_from_json.py msgid "won't happen" -msgstr "" +msgstr "不會發生" #: lang/json/snippet_from_json.py msgid "fuck no" @@ -92098,7 +93353,7 @@ msgstr "再見, !" #: lang/json/snippet_from_json.py msgid "I'm leaving." -msgstr "" +msgstr "我要走了。" #: lang/json/snippet_from_json.py msgid "So long, !" @@ -92118,15 +93373,15 @@ msgstr "掰掰, !" #: lang/json/snippet_from_json.py msgid "consider yourself dead" -msgstr "" +msgstr "你死定了。" #: lang/json/snippet_from_json.py msgid "I'll destroy you" -msgstr "" +msgstr "我要毀了你" #: lang/json/snippet_from_json.py msgid "I'll kick your ass" -msgstr "" +msgstr "我要教訓你" #: lang/json/snippet_from_json.py msgid "I'll kill you" @@ -92134,15 +93389,15 @@ msgstr "我要殺了你" #: lang/json/snippet_from_json.py msgid "I'll send you to hell" -msgstr "" +msgstr "我要送你上西天" #: lang/json/snippet_from_json.py msgid "I'm gonna kick your ass" -msgstr "" +msgstr "我要來教訓你" #: lang/json/snippet_from_json.py msgid "you won't make it out alive" -msgstr "" +msgstr "你活不了了" #: lang/json/snippet_from_json.py msgid "you're dead" @@ -92166,7 +93421,7 @@ msgstr "你就是一個死掉的" #: lang/json/snippet_from_json.py msgid "you'll taste my " -msgstr "讓你嘗嘗我的" +msgstr "讓你嚐嚐我的" #: lang/json/snippet_from_json.py msgid "you're dead" @@ -92218,7 +93473,7 @@ msgstr "我剩下的日子就不多了" #: lang/json/snippet_from_json.py msgid "Can you wait?" -msgstr "" +msgstr "等一下好嗎?" #: lang/json/snippet_from_json.py msgid "Hey, where are you?" @@ -92226,7 +93481,7 @@ msgstr "嘿, 你在哪裡?" #: lang/json/snippet_from_json.py msgid "Wait!" -msgstr "" +msgstr "等等!" #: lang/json/snippet_from_json.py msgid "Wait up, !" @@ -92310,15 +93565,15 @@ msgstr "朋友" #: lang/json/snippet_from_json.py msgid "comrade" -msgstr "" +msgstr "同志" #: lang/json/snippet_from_json.py msgid "fellow" -msgstr "" +msgstr "同伴" #: lang/json/snippet_from_json.py msgid "lad" -msgstr "" +msgstr "小夥子" #: lang/json/snippet_from_json.py msgid "mate" @@ -92326,11 +93581,11 @@ msgstr "夥伴" #: lang/json/snippet_from_json.py msgid "nomad" -msgstr "" +msgstr "游牧民" #: lang/json/snippet_from_json.py msgid "partner" -msgstr "" +msgstr "夥伴" #: lang/json/snippet_from_json.py msgid "stranger" @@ -92338,7 +93593,7 @@ msgstr "陌生人" #: lang/json/snippet_from_json.py msgid "survivor" -msgstr "" +msgstr "倖存者" #: lang/json/snippet_from_json.py msgid "friend" @@ -92386,39 +93641,39 @@ msgstr "快過來這裡!" #: lang/json/snippet_from_json.py msgid "Get over here, !" -msgstr "" +msgstr " 快來這!" #: lang/json/snippet_from_json.py msgid "Keep close, !" -msgstr "" +msgstr " 別落後!" #: lang/json/snippet_from_json.py msgid "Keep it moving, !" -msgstr "" +msgstr " 繼續移動!" #: lang/json/snippet_from_json.py msgid "Keep up, !" -msgstr "" +msgstr " 跟上!" #: lang/json/snippet_from_json.py msgid "Let's keep going, !" -msgstr "" +msgstr " 繼續走!" #: lang/json/snippet_from_json.py msgid "Over here!" -msgstr "" +msgstr "在這!" #: lang/json/snippet_from_json.py msgid "Over here, !" -msgstr "" +msgstr " 快過來!" #: lang/json/snippet_from_json.py msgid "Stay close, !" -msgstr "" +msgstr " 靠近點!" #: lang/json/snippet_from_json.py msgid "Stay with me, !" -msgstr "" +msgstr " 跟著我!" #: lang/json/snippet_from_json.py msgid "Catch up, !" @@ -92454,7 +93709,7 @@ msgstr "我們繼續走!" #: lang/json/snippet_from_json.py msgid "I can barely keep my eyes open." -msgstr "" +msgstr "我只能勉強保持清醒。" #: lang/json/snippet_from_json.py msgid "When we sleepin'?" @@ -92502,23 +93757,23 @@ msgstr "我只是要去睡覺了, ?" #: lang/json/snippet_from_json.py msgid "I'm going to sleep now." -msgstr "" +msgstr "我要睡了。" #: lang/json/snippet_from_json.py msgid "I'm off to bed. Wake me if you need me." -msgstr "" +msgstr "我去睡了。需要時叫醒我。" #: lang/json/snippet_from_json.py msgid "I'm going to sleep over there." -msgstr "" +msgstr "我要去那邊睡了。" #: lang/json/snippet_from_json.py msgid "Time for bed! See you in the morning." -msgstr "" +msgstr "該睡了! 早上見。" #: lang/json/snippet_from_json.py msgid "There's a bed calling my name, and I'm going to it." -msgstr "" +msgstr "床兒正在呼喚著我呢, 我要去找它了。" #: lang/json/snippet_from_json.py msgid "Good night! Wake me if you need me." @@ -92526,23 +93781,23 @@ msgstr "晚安! 如果需要我就叫醒我吧。" #: lang/json/snippet_from_json.py msgid "extremely" -msgstr "" +msgstr "極端地" #: lang/json/snippet_from_json.py msgid "greatly" -msgstr "" +msgstr "巨大地" #: lang/json/snippet_from_json.py msgid "highly" -msgstr "" +msgstr "高度地" #: lang/json/snippet_from_json.py msgid "incredibly" -msgstr "" +msgstr "令人難以置信地" #: lang/json/snippet_from_json.py msgid "quite" -msgstr "" +msgstr "相當地" #: lang/json/snippet_from_json.py msgid "really" @@ -92550,7 +93805,7 @@ msgstr "真的" #: lang/json/snippet_from_json.py msgid "utterly" -msgstr "" +msgstr "徹底地" #: lang/json/snippet_from_json.py msgid "fucking" @@ -92630,7 +93885,7 @@ msgstr "清楚嗎" #: lang/json/snippet_from_json.py msgid "seriously" -msgstr "" +msgstr "認真地" #: lang/json/snippet_from_json.py msgid "absolutely" @@ -92670,7 +93925,7 @@ msgstr "抱歉, 請讓我過。" #: lang/json/snippet_from_json.py msgid "Hey , can I get through?" -msgstr "嘿 , 可以讓我過嗎?" +msgstr "嘿, , 可以讓我過嗎?" #: lang/json/snippet_from_json.py msgid "Let me get past you, ." @@ -92682,7 +93937,7 @@ msgstr "讓我過去, ?" #: lang/json/snippet_from_json.py msgid "Step aside, !" -msgstr "" +msgstr "閃到一邊, !" #: lang/json/snippet_from_json.py msgid "Can I get past you, ?" @@ -92738,7 +93993,7 @@ msgstr "謝了, !" #: lang/json/snippet_from_json.py msgid "content" -msgstr "" +msgstr "適度地" #: lang/json/snippet_from_json.py msgid "glad" @@ -92754,7 +94009,7 @@ msgstr "超享受" #: lang/json/snippet_from_json.py msgid "pleased" -msgstr "" +msgstr "滿意地" #: lang/json/snippet_from_json.py msgid "ecstatic" @@ -92928,9 +94183,9 @@ msgstr "好的 舉起手!" msgid "Hands in the air, !" msgstr "把手舉在空中, !" -#: lang/json/snippet_from_json.py +#: lang/json/snippet_from_json.py src/martialarts.cpp msgid "Move" -msgstr "讓開" +msgstr "移動" #: lang/json/snippet_from_json.py msgid "Move your ass" @@ -92970,7 +94225,7 @@ msgstr "別擋住我的火線" #: lang/json/snippet_from_json.py msgid "I almost want to eat my now." -msgstr "" +msgstr "我差點想要吃掉我的 。" #: lang/json/snippet_from_json.py msgid "When we eatin'?" @@ -92986,7 +94241,7 @@ msgstr "午休的完美時機。" #: lang/json/snippet_from_json.py msgid "I'm hungry..." -msgstr "我餓了..." +msgstr "我餓了…" #: lang/json/snippet_from_json.py msgid "I'm hungry." @@ -93042,54 +94297,54 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "Fire in the hole!" -msgstr "" +msgstr "小心!" #: lang/json/snippet_from_json.py msgid "Get cover!" -msgstr "" +msgstr "快找掩護!" #: lang/json/snippet_from_json.py msgid "Get down!" -msgstr "" +msgstr "快蹲下!" #: lang/json/snippet_from_json.py msgid "Hit the dirt!" -msgstr "" +msgstr "快趴下!" #: lang/json/snippet_from_json.py msgid "This shit is gonna blow!" -msgstr "" +msgstr "這 鬼東西快要爆了!" #: lang/json/snippet_from_json.py msgid "I'm standing way too close to this firecracker." -msgstr "" +msgstr "我站得離這 鞭炮太近了。" #: lang/json/snippet_from_json.py msgid "I need to get some distance." -msgstr "" +msgstr "我 需要離遠點。" #: lang/json/snippet_from_json.py msgid "I'm getting my ass out of here! You'd better do the same, !" -msgstr "" +msgstr "我要滾蛋了! 你最好也快走!" #: lang/json/snippet_from_json.py msgid "Fire in the hole, motherfuckers!" -msgstr "" +msgstr "小心! 屌絲們!" #: lang/json/snippet_from_json.py msgid "This is not the world I have chosen. They even took my CDs!.." -msgstr "" +msgstr "這不是我選擇的世界。他們甚至拿走了我的 CD!" #: lang/json/snippet_from_json.py msgid "Dark days are ahead, but is that all?" -msgstr "" +msgstr "前頭是暗無天日的未來, 可僅只於此嗎?" #: lang/json/snippet_from_json.py msgid "" "This is a crumpled old advertisement for a local pizzaria. It depicts " "smiling kids and some sort of animal mascot. The flier reads \"Eat, rock, " "party, play.\"" -msgstr "" +msgstr "這是一個當地披薩店的皺巴巴的舊廣告。它描繪了微笑的孩子和某種動物吉祥物。傳單上寫著 \"飲食、搖滾、聚會、玩樂\"。" #: lang/json/snippet_from_json.py msgid "" @@ -93098,22 +94353,24 @@ msgid "" "party, play!\" Someone has crudely scrawled underneath it \"Smoke weed " "every day!\"" msgstr "" +"這是一個當地披薩店的皺巴巴的舊廣告。它描繪了微笑的孩子和某種動物吉祥物。傳單上寫著 \"飲食、搖滾、聚會、玩樂\"。有人在下面塗鴉寫著 \"每日哈大麻!" +" \"" #: lang/json/snippet_from_json.py msgid "\"This is a kids place, why is their mascot so stacked!?\"" -msgstr "" +msgstr "\"這是一個孩子們的地方, 為什麼他們的吉祥物會如此性感火辣!?\"" #: lang/json/snippet_from_json.py msgid "\"NO BAD ROBOT I DON'T WANT PIZZA.\"" -msgstr "" +msgstr "\"不 壞 機 器 人 我 不 想 吃 批 薩。\"" #: lang/json/snippet_from_json.py msgid "\"Fuckin haunted pizza joint, just burn it down\"" -msgstr "" +msgstr "\"他媽的鬧鬼披薩店, 把它燒了吧。\"" #: lang/json/snippet_from_json.py msgid "\"Pizza, arcade tokens, horrible death, got my bases covered.\"" -msgstr "" +msgstr "\"披薩、街機代幣、可怕的死亡, 讓我的基地得到了保障。\"" #: lang/json/snippet_from_json.py msgid "\"leg eaten by zombie robot furry help\"" @@ -93283,11 +94540,11 @@ msgstr "此處安葬著。一個混蛋。" #: lang/json/snippet_from_json.py msgid " . Eaten by wolves." -msgstr "" +msgstr " 。被狼群吃掉了。" #: lang/json/snippet_from_json.py msgid " . Infected." -msgstr "" +msgstr " 。被感染了。" #: lang/json/snippet_from_json.py msgid "We send on to Valhalla" @@ -93295,7 +94552,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "RIP " -msgstr "" +msgstr "RIP " #: lang/json/snippet_from_json.py msgid " . Roasting in Hell." @@ -93389,7 +94646,7 @@ msgstr "沒有電力, 也沒有食物, 請盡快空投補給!" #: lang/json/snippet_from_json.py msgid "No more FEMA camp refugees. You're already dying." -msgstr "" +msgstr "不能再收更多從聯邦緊急事務管理署營地來的難民了。你死定了。" #: lang/json/snippet_from_json.py msgid "Health check required for entrance." @@ -93470,7 +94727,7 @@ msgstr "" #: lang/json/snippet_from_json.py msgid "\"ITS A TRAP NO WAIT ITS A TARP\"" -msgstr "" +msgstr "\"這 是 馮 不 等 等 這 是 二 馬\"" #: lang/json/snippet_from_json.py msgid "" @@ -93519,7 +94776,7 @@ msgid "" "\"I have this laser cannon turret on my shopping cart. I push it around and" " everything dies. I think I'm gonna toss it in the lake-- this just isn't " "fair anymore.\"" -msgstr "" +msgstr "\"我在購物車上安裝了一台雷射砲。我推著它到到處晃並且殺死了所有東西。我想我要把它扔進湖裡去… 因為這實在太不公平了。\"" #: lang/json/snippet_from_json.py msgid "" @@ -93585,7 +94842,7 @@ msgstr "來玩囉!" #: lang/json/speech_from_json.py msgid "Om nom nom! Delicious!" -msgstr "(嚼嚼嚼)! 好吃!" +msgstr "(嚼嚼嚼… ) 好吃!" #: lang/json/speech_from_json.py msgid "Are you my mommy?" @@ -93621,7 +94878,7 @@ msgstr "你不該那麼做。" #: lang/json/speech_from_json.py msgid "Let's play... Russian roulette." -msgstr "我們來玩...俄羅斯輪盤吧。" +msgstr "我們來玩… 俄羅斯輪盤吧。" #: lang/json/speech_from_json.py msgid "I hate you." @@ -93645,11 +94902,11 @@ msgstr "為什麼你不去死?" #: lang/json/speech_from_json.py msgid "Blood... Delicious." -msgstr "血...真美味。" +msgstr "血… 真美味。" #: lang/json/speech_from_json.py msgid "See you... IN HELL!" -msgstr "再見...去死!" +msgstr "再見… 去死!" #: lang/json/speech_from_json.py msgid "AAAIEEEEEEE!" @@ -93665,7 +94922,7 @@ msgstr "你對我媽做了什麼?" #: lang/json/speech_from_json.py msgid "Stay with me... forever!" -msgstr "留在我身邊......直到永遠!" +msgstr "留在我身邊… 直到永遠!" #: lang/json/speech_from_json.py msgid "Hey kids. Want some candy?" @@ -94036,7 +95293,7 @@ msgstr "\"再過幾天就到週末了。\"" #: lang/json/speech_from_json.py msgid "\"Do you smoke?\"" -msgstr "\"你抽煙嗎? \"" +msgstr "\"你抽菸嗎? \"" #: lang/json/speech_from_json.py msgid "\"You're new here, aren't you?\"" @@ -94148,7 +95405,7 @@ msgstr "\"很好。\"" #: lang/json/speech_from_json.py msgid "\"Great.\"" -msgstr "\"太好了\"" +msgstr "\"太好了。\"" #: lang/json/speech_from_json.py msgid "\"Fantastic.\"" @@ -94590,7 +95847,7 @@ msgstr "嗶!" #: lang/json/speech_from_json.py src/mattack_actors.cpp #: src/player_hardcoded_effects.cpp msgid "beep-beep-beep!" -msgstr "嗶-嗶-嗶!" +msgstr "嗶嗶嗶!" #: lang/json/speech_from_json.py msgid "BEEP!" @@ -94636,7 +95893,7 @@ msgstr "\"泰克利-利! \"" #: lang/json/speech_from_json.py msgid "\"TEKELI-LI! TEKELI-LI! TEKELI-LI!\"" -msgstr "" +msgstr "\"泰克利-利! 泰克利-利! 泰克利-利! \"" #: lang/json/speech_from_json.py msgid "\"Tekeli-li.\"" @@ -94648,15 +95905,15 @@ msgstr "啜食聲。" #: lang/json/speech_from_json.py msgid "\"WHY! WHY, WHYYY!\"" -msgstr "" +msgstr "\"為什麼! 為什, 為什麼啊啊! \"" #: lang/json/speech_from_json.py msgid "an electronic voice saying \"CONNECTION FAILED. Abort, Retry, Fail?\"" -msgstr "一個電子音說 \"連 接 失 敗。終止、重試、失敗? \"" +msgstr "一個電子音說 \"連接失敗。略過、重試、取消? \"" #: lang/json/speech_from_json.py msgid "\"I was once a man. A MAN!\"" -msgstr "\"我曾經是個人。一.個.人! \"" +msgstr "\"我曾經是個人類。一個 *人類*! \"" #: lang/json/speech_from_json.py msgid "\"What have I become?\"" @@ -95403,7 +96660,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Stop shooting!\"" -msgstr "" +msgstr "\"停止射擊! \"" #: lang/json/speech_from_json.py msgid "\"Self test error.\"" @@ -95463,7 +96720,7 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Please stop.\"" -msgstr "" +msgstr "\"請停手好嗎。\"" #: lang/json/speech_from_json.py msgid "\"You've made your point.\"" @@ -95737,35 +96994,35 @@ msgstr "" #: lang/json/speech_from_json.py msgid "\"Beep.\"" -msgstr "" +msgstr "\"嗶。\"" #: lang/json/speech_from_json.py msgid "\"Beep?\"" -msgstr "" +msgstr "\"嗶? \"" #: lang/json/speech_from_json.py msgid "\"Beep!\"" -msgstr "" +msgstr "\"嗶! \"" #: lang/json/speech_from_json.py msgid "\"Beeeeep beep.\"" -msgstr "" +msgstr "\"嗶… 嗶。\"" #: lang/json/speech_from_json.py msgid "\"Bebebeeeep.\"" -msgstr "" +msgstr "\"嗶嗶嗶。\"" #: lang/json/speech_from_json.py msgid "\"Beep boop beep?\"" -msgstr "" +msgstr "\"嗶… 波… 嗶? \"" #: lang/json/speech_from_json.py msgid "\"Beedoo-Beep.\"" -msgstr "" +msgstr "\"嗶嘟… 嗶。\"" #: lang/json/speech_from_json.py msgid "\"Beep Beep. Whirr.\"" -msgstr "" +msgstr "\"嗶… 嗶。吪。\"" #: lang/json/speech_from_json.py msgid "\"Vrrrr Hrrrmmm.\"" @@ -95885,7 +97142,7 @@ msgstr "避難所" #: lang/json/start_location_from_json.py msgid "Refuge Center" -msgstr "" +msgstr "避難中心" #: lang/json/start_location_from_json.py msgid "Boarded up house" @@ -95948,10 +97205,26 @@ msgstr "末日避難所" msgid "Middle of Nowhere" msgstr "中途" +#: lang/json/start_location_from_json.py +msgid "Experiment Cell" +msgstr "" + #: lang/json/start_location_from_json.py msgid "Science lab" msgstr "實驗室" +#: lang/json/start_location_from_json.py +msgid "Bottom of a science lab" +msgstr "實驗室底層" + +#: lang/json/start_location_from_json.py +msgid "Frozen science lab" +msgstr "冷凍實驗室" + +#: lang/json/start_location_from_json.py +msgid "Deep-frozen science lab" +msgstr "極凍實驗室" + #: lang/json/start_location_from_json.py msgid "mall loading area" msgstr "購物中心-卸貨區" @@ -95998,7 +97271,7 @@ msgstr "宗教墓地" #: lang/json/start_location_from_json.py msgid "Shady Basement" -msgstr "" +msgstr "陰涼的地下室" #: lang/json/start_location_from_json.py msgid "Zoo Giftshop" @@ -96030,11 +97303,11 @@ msgstr "" #: lang/json/start_location_from_json.py msgid "Fema Entrance" -msgstr "急難救助營入口" +msgstr "聯邦緊急事務管理署營地入口" #: lang/json/start_location_from_json.py msgid "Fema Camp" -msgstr "急難救助營" +msgstr "聯邦緊急事務管理署營地" #: lang/json/start_location_from_json.py msgid "Mansion Entrance" @@ -96046,6 +97319,14 @@ msgstr "豪宅" #: lang/json/start_location_from_json.py msgid "Gas Station" +msgstr "加油站" + +#: lang/json/start_location_from_json.py +msgid "Electronics Store" +msgstr "" + +#: lang/json/start_location_from_json.py +msgid "Clothing Store" msgstr "" #: lang/json/talk_topic_from_json.py @@ -96080,8 +97361,7 @@ msgstr "你的耳朵上是什麼?" msgid "Anything I can help with?" msgstr "有什麼我能幫忙的嗎?" -#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py -#: src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Well, bye." msgstr "好吧, 再見。" @@ -96094,7 +97374,7 @@ msgstr "看來我也是一樣。嗯, 某種程度上一樣。我不認為這邊 #: lang/json/talk_topic_from_json.py msgid "Sucks..." -msgstr "爛透了..." +msgstr "爛透了…" #: lang/json/talk_topic_from_json.py msgid "" @@ -96106,11 +97386,11 @@ msgid "" "constructed with the stuff." msgstr "" "嗯, 樓下有個人有個能正常使用的氣動砲。這東西射出金屬就像… " -"像個不會爆炸的大砲。簡直超有效率。而有這類拼裝武器的人還不乏少數。但是最重要的事情似乎還是建設防禦工事。只有極少數的怪物才打得破柵欄或是牆壁之類的建築。" +"像個不會爆炸的大砲。簡直超有效率。而有這類拼裝武器的人還不乏少數。但是最重要的事情似乎還是建造防禦工事。只有極少數的怪物才打得破柵欄或是牆壁之類的建築。" #: lang/json/talk_topic_from_json.py msgid "Well, then..." -msgstr "好吧, 那麼..." +msgstr "好吧, 那麼…" #: lang/json/talk_topic_from_json.py msgid "" @@ -96142,7 +97422,7 @@ msgid "" " doesn't want me here when I'm not selling, but... some people get away with" " it." msgstr "" -"我不知道。我的意思是, 假如你能夠讓自己變得有用。但是在現在這已經變得很抽象了。這要看你問的是誰。商人絕對不想要我這沒有要交易的人在這... " +"我不知道。我的意思是, 假如你能夠讓自己變得有用。但是在現在這已經變得很抽象了。這要看你問的是誰。商人絕對不想要我這沒有要交易的人在這… " "但是有些人又沒關係。" #: lang/json/talk_topic_from_json.py @@ -96153,7 +97433,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Ssh. Some people in here hate... mutations. This was an accident." -msgstr "噓。這裡某些人討厭... 變種人。這是個意外。" +msgstr "噓。這裡某些人討厭… 變種人。這是個意外。" #: lang/json/talk_topic_from_json.py msgid "Sorry to ask" @@ -96236,7 +97516,7 @@ msgstr "哈囉你好。" #: lang/json/talk_topic_from_json.py msgid "Okay, no sudden movements..." -msgstr "很好, 別突然亂動..." +msgstr "很好, 別突然亂動…" #: lang/json/talk_topic_from_json.py msgid "Keep your distance!" @@ -96256,15 +97536,15 @@ msgstr "&把手舉起來。" #: lang/json/talk_topic_from_json.py msgid "*drops his weapon." -msgstr "" +msgstr "*丟下他的武器。" #: lang/json/talk_topic_from_json.py msgid "*drops_her_weapon." -msgstr "" +msgstr "*丟下她的武器。" #: lang/json/talk_topic_from_json.py msgid "Now get out of here" -msgstr "" +msgstr "快滾" #: lang/json/talk_topic_from_json.py msgid "Now get out of here, before I kill you." @@ -96276,11 +97556,11 @@ msgstr "好吧, 我走了。" #: lang/json/talk_topic_from_json.py msgid "About that job..." -msgstr "關於那個工作..." +msgstr "關於那個工作…" #: lang/json/talk_topic_from_json.py msgid "About one of those jobs..." -msgstr "關於其中一項工作..." +msgstr "關於其中一項工作…" #: lang/json/talk_topic_from_json.py msgid "What's the matter?" @@ -96294,7 +97574,8 @@ msgstr "我不在乎。" msgid "I see." msgstr "我懂了。" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp msgid "Oh, okay." msgstr "喔, 好吧。" @@ -96371,6 +97652,253 @@ msgstr "謝謝你。" msgid "Thanks, bye." msgstr "謝謝, 再見。" +#: lang/json/talk_topic_from_json.py +msgid "Well, I guess it's just us." +msgstr "嗯, 我想只剩我們了。" + +#: lang/json/talk_topic_from_json.py +msgid "At least we've got shelter." +msgstr "至少我們還有避難所。" + +#: lang/json/talk_topic_from_json.py +msgid "What should we do now?" +msgstr "我們現在該怎麼辦?" + +#: lang/json/talk_topic_from_json.py +msgid "Any tips?" +msgstr "有建議嗎?" + +#: lang/json/talk_topic_from_json.py lang/json/talk_topic_from_json.py +#: src/npctalk.cpp +msgid "Can I do anything for you?" +msgstr "我能為你做什麼事嗎?" + +#: lang/json/talk_topic_from_json.py +msgid "Want to travel with me?" +msgstr "你願意跟我一起旅行嗎?" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's trade items." +msgstr "我們來交易吧。" + +#: lang/json/talk_topic_from_json.py +msgid "I can't leave the shelter without equipment." +msgstr "我不能沒有裝備就離開避難所。" + +#: lang/json/talk_topic_from_json.py +msgid "I don't know, look for supplies and other survivors I guess." +msgstr "我不知道, 我想應該就是蒐集物資以及找其他的生存者吧。" + +#: lang/json/talk_topic_from_json.py +msgid "Maybe we should start boarding up this place." +msgstr "也許我們要開始把這個地方用木板加固起來。" + +#: lang/json/talk_topic_from_json.py +msgid "" +"I suppose getting a car up and running should really be useful if we have to" +" disappear quickly from here." +msgstr "如果我們要迅速從這裡消失, 我想取得一輛車來行駛應該是很有幫助。" + +#: lang/json/talk_topic_from_json.py +msgid "" +"We could look for one of those farms out here. They can provide plenty of " +"food and aren't close to the cities." +msgstr "我們可以找個這樣的農場, 他們可以提供大量的食物, 而且遠離城市。" + +#: lang/json/talk_topic_from_json.py +msgid "" +"We should probably stay away from those cities, even if there's plenty of " +"useful stuff there." +msgstr "我們最好遠離那些城市, 即使有許多實用的東西在那裡。" + +#: lang/json/talk_topic_from_json.py +msgid "Hmm, okay." +msgstr "嗯, 好吧。" + +#: lang/json/talk_topic_from_json.py +msgid "Not until I get some antibiotics..." +msgstr "我還沒找到抗生素…" + +#: lang/json/talk_topic_from_json.py +msgid "You asked me recently; ask again later." +msgstr "你沒多久前才問過我, 晚點再說吧。" + +#: lang/json/talk_topic_from_json.py +msgid "Why should I travel with you?" +msgstr "為什麼我要跟著你旅行?" + +#: lang/json/talk_topic_from_json.py +msgid "Understood. I'll get those antibiotics." +msgstr "了解。我會找到抗生素的。" + +#: lang/json/talk_topic_from_json.py +msgid "Right, right, I'll ask later." +msgstr "好吧, 好吧, 我待會再問。" + +#: lang/json/talk_topic_from_json.py +msgid "I can keep you safe." +msgstr "我能保護你。" + +#: lang/json/talk_topic_from_json.py +msgid "You can keep me safe." +msgstr "你能保護我。" + +#: lang/json/talk_topic_from_json.py +msgid "We're friends, aren't we?" +msgstr "我們不是朋友嗎?" + +#: lang/json/talk_topic_from_json.py +msgid "I'll kill you if you don't." +msgstr "你不照做我就殺了你!" + +#: lang/json/talk_topic_from_json.py +msgid "You got it, I'm with you!" +msgstr "我懂了, 我跟著你!" + +#: lang/json/talk_topic_from_json.py +msgid "Awesome!" +msgstr "讚啦!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, let's go!" +msgstr "好, 我們走!" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah... I don't think so." +msgstr "痾… 我不這麼覺得。" + +#: lang/json/talk_topic_from_json.py +msgid "You're really leaving?" +msgstr "你真的要離開?" + +#: lang/json/talk_topic_from_json.py +msgid "Yeah, I'm sure. Bye." +msgstr "耶, 我很確定。掰。" + +#: lang/json/talk_topic_from_json.py +msgid "Nah, I'm just kidding." +msgstr "啊, 只是開玩笑而已。" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp +msgid "What is it?" +msgstr "什麼事?" + +#: lang/json/talk_topic_from_json.py +msgid "How much further?" +msgstr "還有多遠?" + +#: lang/json/talk_topic_from_json.py +msgid "I'd like to lead for a while." +msgstr "我要暫時帶領一會。" + +#: lang/json/talk_topic_from_json.py +msgid "Step aside. I'm leader now." +msgstr "讓開。我現在是領隊了。" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "Let's go." +msgstr "我們走。" + +#: lang/json/talk_topic_from_json.py +msgid "Alright. You can lead now." +msgstr "好吧。你可以帶路了。" + +#: lang/json/talk_topic_from_json.py +msgid "Good. Something else..." +msgstr "好。還有其他的…" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's go." +msgstr "好吧, 我們走。" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay." +msgstr "好啦, 好啦。" + +#: lang/json/talk_topic_from_json.py +msgid "Not a bloody chance, I'm going to get left behind!" +msgstr "我才不要, 我會被丟在後面沒人理!" + +#: lang/json/talk_topic_from_json.py +msgid "Fine." +msgstr "很好。" + +#: lang/json/talk_topic_from_json.py +msgid "I'm on watch." +msgstr "我來把風。" + +#: lang/json/talk_topic_from_json.py src/npctalk.cpp +msgid "I need you to come with me." +msgstr "我需要你跟我來。" + +#: lang/json/talk_topic_from_json.py +msgid "See you around." +msgstr "待會見。" + +#: lang/json/talk_topic_from_json.py +msgid "I really don't feel comfortable doing so..." +msgstr "這麼做讓我不是很舒服…" + +#: lang/json/talk_topic_from_json.py +msgid "I'll give you some space." +msgstr "我會給你一些空間。" + +#: lang/json/talk_topic_from_json.py +msgid "I'd prefer to keep that to myself." +msgstr "我想自己管好自己就好了。" + +#: lang/json/talk_topic_from_json.py +msgid "I understand..." +msgstr "我了解…" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, here you go." +msgstr "好啦, 給你。" + +#: lang/json/talk_topic_from_json.py +msgid "Thank you!" +msgstr "謝謝!" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks! But can I have some more?" +msgstr "謝了! 還可以再給多點嗎?" + +#: lang/json/talk_topic_from_json.py +msgid "Thanks, see you later!" +msgstr "謝了, 待會見!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, okay, sorry." +msgstr "好吧, 好吧, 真抱歉。" + +#: lang/json/talk_topic_from_json.py +msgid "Seriously, give me more stuff!" +msgstr "我說真的, 再給我東西!" + +#: lang/json/talk_topic_from_json.py +msgid "Okay, fine, bye." +msgstr "好吧, 好, 再見。" + +#: lang/json/talk_topic_from_json.py +msgid "Alright, let's begin." +msgstr "好吧, 我們開始。" + +#: lang/json/talk_topic_from_json.py +msgid "Sounds good." +msgstr "聽起來不錯。" + +#: lang/json/talk_topic_from_json.py +msgid "Okay. Lead the way." +msgstr "好。帶路吧。" + +#: lang/json/talk_topic_from_json.py +msgid "No, we'll be okay here." +msgstr "不, 我待在這就好了。" + +#: lang/json/talk_topic_from_json.py +msgid "On second thought, never mind." +msgstr "我再想想, 抱歉。" + #: lang/json/talk_topic_from_json.py msgid "Hello marshal." msgstr "你好法警。" @@ -96598,7 +98126,7 @@ msgstr "你有看過有人正在隱瞞一些事情嗎?" #: lang/json/talk_topic_from_json.py msgid "Bye..." -msgstr "掰..." +msgstr "掰…" #: lang/json/talk_topic_from_json.py msgid "" @@ -96612,7 +98140,7 @@ msgstr "低調點, 別擋路。" #: lang/json/talk_topic_from_json.py msgid "OK..." -msgstr "OK..." +msgstr "OK…" #: lang/json/talk_topic_from_json.py msgid "Like what?" @@ -96620,7 +98148,7 @@ msgstr "類似甚麼?" #: lang/json/talk_topic_from_json.py msgid "I'm not sure..." -msgstr "我不確定..." +msgstr "我不確定…" #: lang/json/talk_topic_from_json.py msgid "Like they could be working for someone else?" @@ -96640,7 +98168,7 @@ msgstr "在藏什麼嗎?" #: lang/json/talk_topic_from_json.py msgid "Sorry, I didn't mean to offend you..." -msgstr "抱歉, 我不是有意冒犯你的..." +msgstr "抱歉, 我不是有意冒犯你的…" #: lang/json/talk_topic_from_json.py msgid "" @@ -96650,7 +98178,7 @@ msgstr "假如你沒有其他事, 那麼我得要求你離開, 並不得回來 #: lang/json/talk_topic_from_json.py msgid "Sorry." -msgstr "" +msgstr "抱歉。" #: lang/json/talk_topic_from_json.py msgid "That's it, you're dead!" @@ -96672,7 +98200,7 @@ msgstr "我們不想容忍像垃圾一樣的你, 做完你的事, 然後滾。" #: lang/json/talk_topic_from_json.py msgid "I thought I smelled a pig. I jest... please don't arrest me." -msgstr "我想我聞到了豬味。我開玩笑的...請不要抓我。" +msgstr "我想我聞到了豬味。我開玩笑的… 請不要抓我。" #: lang/json/talk_topic_from_json.py msgid "Huh, thought I smelled someone new. Can I help you?" @@ -96680,7 +98208,7 @@ msgstr "嗯, 看來我聞到菜鳥味了。我能幫你什麼?" #: lang/json/talk_topic_from_json.py msgid "You... smelled me?" -msgstr "你...聞到了我?" +msgstr "你… 聞到了我?" #: lang/json/talk_topic_from_json.py msgid "Got anything for sale?" @@ -96731,7 +98259,7 @@ msgstr "對。無論我在什麼情形, 我包裝並販賣肉品或其他部位 #: lang/json/talk_topic_from_json.py msgid "Great, now my mouth is watering..." -msgstr "很好, 現在我正在流口水..." +msgstr "很好, 現在我正在流口水…" #: lang/json/talk_topic_from_json.py msgid "" @@ -96743,7 +98271,7 @@ msgstr "當然, 才剛裝好一批新鮮的肉。你也許會想要先把它烤 msgid "" "Feed a man a fish, he's full for a day. Feed a man a bullet, he's full for " "the rest of his life." -msgstr "" +msgstr "讓人吃條魚, 他會飽餐一日。讓人吃槍子, 他會安眠一世。" #: lang/json/talk_topic_from_json.py msgid "Spot your prey before something nastier spots you." @@ -96751,13 +98279,13 @@ msgstr "你應該在獵物發現你以前先發制人。" #: lang/json/talk_topic_from_json.py msgid "I've heard that cougars sometimes leap. Maybe it's just a myth." -msgstr "" +msgstr "我聽過美洲獅有時候會飛。也許這只是一個神話。" #: lang/json/talk_topic_from_json.py msgid "" "The Jabberwock is real, don't listen to what anybody else says. If you see " "it, RUN." -msgstr "" +msgstr "變種人魔獸是真的! 別聽他們說的, 你要是看到它, 拔腿就逃!" #: lang/json/talk_topic_from_json.py msgid "" @@ -96770,7 +98298,7 @@ msgid "" "A steady diet of cooked meat and clean water will keep you alive forever, " "but your taste buds and your colon may start to get angry at you. Eat a " "piece of fruit every once in a while." -msgstr "" +msgstr "穩定的進食熟肉與淨水讓你永遠都餓不死, 可是你的味蕾和胃可能會開始跟你抗議。三不五時還是要吃個水果換換口味。" #: lang/json/talk_topic_from_json.py msgid "Smoke crack to get more shit done." @@ -96782,15 +98310,15 @@ msgstr "你在外面小心點。" #: lang/json/talk_topic_from_json.py msgid "Welcome marshal..." -msgstr "歡迎法警..." +msgstr "歡迎法警…" #: lang/json/talk_topic_from_json.py msgid "Welcome..." -msgstr "歡迎..." +msgstr "歡迎…" #: lang/json/talk_topic_from_json.py msgid "I'm actually new..." -msgstr "我其實是新來的..." +msgstr "我其實是新來的…" #: lang/json/talk_topic_from_json.py msgid "Can I do anything for the center?" @@ -96802,7 +98330,7 @@ msgstr "我們來交易。" #: lang/json/talk_topic_from_json.py msgid "I figured you might be looking for some help..." -msgstr "我想你可能會要一些幫助..." +msgstr "我想你可能正在尋找一些幫助…" #: lang/json/talk_topic_from_json.py msgid "" @@ -96814,7 +98342,7 @@ msgstr "先別說別的, 我們滿員了。幾天前, 我們因為讓太多新 #: lang/json/talk_topic_from_json.py msgid "No rest for the weary..." -msgstr "沒有休息..." +msgstr "沒有休息…" #: lang/json/talk_topic_from_json.py msgid "" @@ -96824,7 +98352,7 @@ msgid "" "to run enough trade through here to keep us alive. Don't care who your " "goods come from or how you got them, just don't bring trouble." msgstr "" -"說老實話, 我們一開始有六輛公車, 滿載上班族和媽媽足球隊... 在災難爆發一兩天後, 團隊中最勇敢的都死了。我們現在想要的就是讓交易通道順暢, " +"說老實話, 我們一開始有 6 輛公車, 滿載上班族和家庭主婦… 在災難爆發一兩天後, 團隊中最勇敢的都死了。我們現在想要的就是讓交易通道順暢, " "我們才能存活。別在意貨物是從哪來的, 就不會有麻煩。" #: lang/json/talk_topic_from_json.py @@ -96839,18 +98367,18 @@ msgid "" "the scavengers out there so ruthless but some of us have had to kill our own" " bloody kids... don't even think about strong arming us." msgstr "" -"我很抱歉, 但是我們能做的就是讓大門關閉的快點。在地下室的守衛有格殺勿論的命令。我不知道為什麼拾荒者變得這麼狠, " -"害得我們有些人不得不手刃自己的小孩...別想要我們武裝起來。" +"我很抱歉, 但是我們能做的就是讓大門關閉的快點。在地下室的守衛有格殺勿論的命令, 假如你過於窺探樓下。我不知道是什麼讓拾荒者變得這麼狠, " +"害得我們有些人不得不手刃自己的小孩… 我們甚至沒有想過要武裝自己。" #: lang/json/talk_topic_from_json.py msgid "Guess shit's a mess everywhere..." -msgstr "我看到處都有鳥事..." +msgstr "我看到處都有鳥事…" #: lang/json/talk_topic_from_json.py msgid "" "[INT 12] Wait, six buses and refugees... how many people do you still have " "crammed in here?" -msgstr "[智力 12] 等等, 六輛公車跟難民... 你們有多少人還擠在這裡?" +msgstr "[智力 12] 等等, 6 輛公車跟難民… 你們有多少人還擠在這裡?" #: lang/json/talk_topic_from_json.py msgid "" @@ -96862,12 +98390,12 @@ msgid "" "women still here but our real strength comes from all of our business " "partners that are accustomed to doing whatever is needed to survive." msgstr "" -"難民之前待在一樓那邊, 直到他們其中有人試圖透過裝載區偷渡一個垂死之人, 最後我們被慘叫聲吵醒。大約有兩打人員死在當晚。剩下的難民在隔天被放逐, " -"一部分的人加入了拾荒者集團。我想說的是, 我們還有約二十位可用的男女, 但我們真正的力量來自於我們所有的事業夥伴以及做該做的事情來生存。" +"難民之前待在一樓那邊, 直到他們其中有人試圖透過裝載區偷渡一個垂死之人, 最後我們被慘叫聲吵醒。大約有兩打人死在當晚。剩下的難民在隔天被放逐, " +"並且陸續組成了幾個拾荒者集團。我想說的是, 我們還有約 20 位可用的男女, 但我們真正的力量來自於所有習慣為生存付出一切努力的我們的合作夥伴。" #: lang/json/talk_topic_from_json.py msgid "Guess it works for you..." -msgstr "看來這對你有用..." +msgstr "看來這對你有用…" #: lang/json/talk_topic_from_json.py msgid "" @@ -96893,7 +98421,7 @@ msgid "" " here, we've been doing alright. As to where it is, I don't have the " "foggiest of ideas." msgstr "" -"嗯, 大約有十幾人的'拾荒者'找到了某個政府設施。他們幾個星期定期就帶來一卡車的囚服、M4步槍以及罐頭食品。因為他們有家人在這, " +"嗯, 大約有十幾人的 \"拾荒者\" 找到了某個政府設施。他們幾個星期定期就帶來一卡車的囚服、M4 步槍以及罐頭食品。因為他們有家人在這, " "我們相處得還可以。至於這設施在哪, 我沒有半點頭緒。" #: lang/json/talk_topic_from_json.py @@ -96906,7 +98434,7 @@ msgstr "我很抱歉, 我現在不想要冒這個險。" #: lang/json/talk_topic_from_json.py msgid "Fine..." -msgstr "很好..." +msgstr "很好…" #: lang/json/talk_topic_from_json.py msgid "" @@ -96919,7 +98447,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Fine... *coughupyourscough*" -msgstr "沒事... *咳了個半死*" +msgstr "沒事… *咳了個半死*" #: lang/json/talk_topic_from_json.py msgid "" @@ -96948,7 +98476,7 @@ msgstr "[力量 11] 我揍人比誰都要厲害!" #: lang/json/talk_topic_from_json.py msgid "I guess I'll look somewhere else..." -msgstr "我想我該去別的地方找了..." +msgstr "我想我該去別的地方找了…" #: lang/json/talk_topic_from_json.py msgid "" @@ -96958,7 +98486,7 @@ msgid "" "to buy, with no intention of it ever being used. From the passing " "scavengers I've heard nothing but prime loot'n spots and rumors of hordes." msgstr "" -"我們聽到的沒有很多。大部分的避難所表面看來是設計讓人民感覺安全... 但實際上無助於生存。我們的無線電設備是徹底的垃圾, 是政府跟某公司採購的, " +"我們聽到的沒有很多。大部分的避難所表面看來是設計讓人民感覺安全… 但實際上無助於生存。我們的無線電設備是徹底的垃圾, 是政府跟某公司採購的, " "偷工減料的東西。從路過的拾荒者我只聽到主要搜刮點以及有關屍潮的傳言。" #: lang/json/talk_topic_from_json.py @@ -96971,7 +98499,7 @@ msgstr "有聽過比稀有槍枝上膛聲音更棒的嗎?" #: lang/json/talk_topic_from_json.py msgid "Was hoping for something more..." -msgstr "要是有更多東西就好了..." +msgstr "要是有更多東西就好了…" #: lang/json/talk_topic_from_json.py msgid "What about faction camps?" @@ -97092,10 +98620,6 @@ msgstr "" msgid "We're abandoning this camp." msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp -msgid "See you around." -msgstr "待會見。" - #: lang/json/talk_topic_from_json.py msgid "Hope you're here to trade." msgstr "希望你來這是要交易的。" @@ -97109,8 +98633,8 @@ msgid "" "prioritize non-perishable food, such as cornmeal, jerky, and fruit wine." msgstr "" "我為中心負責糧食的庫存。動亂時有趁亂搶劫的情形, " -"當我們初次到這時大多數的食物都被搶走了。我管理所剩下的並且盡可能的增加我們的補給。在潮濕的地下室容易出現腐壞與發霉的情形, " -"因此我們優先考慮不易腐壞的食物, 像玉米粉, 肉乾及水果酒。" +"當我們初次到這時大多數的食物都被搶走了。我管理所剩下的並且盡可能的增加我們的補給。在潮濕的地下室容易出現腐敗與發霉的情形, " +"因此我們優先考慮不容易腐敗的食物, 像玉米粉, 肉乾及水果酒。" #: lang/json/talk_topic_from_json.py msgid "Why cornmeal, jerky, and fruit wine?" @@ -97125,31 +98649,31 @@ msgid "" "bulk I can pay a premium for any you have on you. Canned food and other " "edibles are handled by the merchant in the front." msgstr "" -"這三種很容易生產許多數量而且不容易變質。我們當地的農夫及一些獵人能夠提供我們一些營養的補給。我們還是很需要更多的補給。因為這東西是相當便宜大量的, " +"這三種很容易生產許多數量而且不容易腐敗。我們當地的農夫及一些獵人能夠提供我們一些營養的補給。我們還是很需要更多的補給。因為這東西是相當便宜大量的, " "只要你有的話, 我可以付給你特別價格。罐頭食品及其他的食物是由前面的商人處理。" #: lang/json/talk_topic_from_json.py msgid "Are you looking to buy anything else?" msgstr "你有要買其他東西嗎?" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp +#: lang/json/talk_topic_from_json.py msgid "Very well..." -msgstr "很好..." +msgstr "很好…" #: lang/json/talk_topic_from_json.py msgid "" "I'm actually accepting a number of different foodstuffs: beer, sugar, flour," " smoked meat, smoked fish, cooking oil; and as mentioned before, jerky, " "cornmeal, and fruit wine." -msgstr "事實上, 我接受許多不同的食物: 啤酒、糖、麵粉、煙燻肉、煙燻魚、烹飪油; 還有之前說過的, 肉乾, 玉米粉以及水果酒。" +msgstr "事實上, 我接受許多不同的食物: 啤酒、糖、麵粉、煙燻肉、煙燻魚、烹飪油, 還有之前說過的、肉乾、玉米粉以及水果酒。" #: lang/json/talk_topic_from_json.py msgid "Interesting..." -msgstr "有意思..." +msgstr "有意思…" #: lang/json/talk_topic_from_json.py msgid "I'm not in charge here, you're looking for someone else..." -msgstr "我在這並不是管事的, 你應該要找別人..." +msgstr "我在這並不是管事的, 你應該要找別人…" #: lang/json/talk_topic_from_json.py msgid "Keep civil or I'll bring the pain." @@ -97177,15 +98701,15 @@ msgstr "夫人, 你真的不應該旅行到那裏。" #: lang/json/talk_topic_from_json.py msgid "Don't mind me..." -msgstr "別在意我..." +msgstr "別在意我…" #: lang/json/talk_topic_from_json.py msgid "About the mission..." -msgstr "關於任務..." +msgstr "關於任務…" #: lang/json/talk_topic_from_json.py msgid "About one of those missions..." -msgstr "關於那些其中之一的任務..." +msgstr "關於那些其中之一的任務…" #: lang/json/talk_topic_from_json.py msgid "Hello, marshal." @@ -97253,14 +98777,14 @@ msgstr "你需要什麼呢?" #: lang/json/talk_topic_from_json.py msgid "I've got to go..." -msgstr "我得走了..." +msgstr "我得走了…" #: lang/json/talk_topic_from_json.py msgid "" "I'm leading what remains of my company on a mission to re-secure this " "facility. We entered the complex with two dozen men and immediately went " "about securing this control room. From here I dispatched my men to secure " -"vital systems located on this floor and the floors below this one. If we " +"vital systems located on this floor and the floors below this one. If we " "are successful, this facility can be cleared and used as a permanent base of" " operations in the region. Most importantly it will allow us to redirect " "refugee traffic away from overcrowded outposts and free up more of our " @@ -97269,7 +98793,7 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Seems like a decent plan..." -msgstr "似乎是個不俗的計畫..." +msgstr "似乎是個不俗的計畫…" #: lang/json/talk_topic_from_json.py msgid "" @@ -97322,7 +98846,7 @@ msgstr "我們是這個設施的保全人員。不過事實上我寧願… 唉, #: lang/json/talk_topic_from_json.py msgid "I'll try and find your commander then..." -msgstr "我會嘗試找到你的指揮官, 然後..." +msgstr "我會嘗試找到你的指揮官, 然後…" #: lang/json/talk_topic_from_json.py msgid "" @@ -97337,11 +98861,11 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "Marshal..." -msgstr "法警..." +msgstr "法警…" #: lang/json/talk_topic_from_json.py msgid "Citizen..." -msgstr "公民..." +msgstr "公民…" #: lang/json/talk_topic_from_json.py src/npctalk.cpp msgid "Who are you?" @@ -97403,13 +98927,13 @@ msgid "" " them. Since most survivors here have nothing they want, they are welcomed " "as champions." msgstr "" -"嗯... 在他們徵召我之前, 我只是平民百姓, 我就對你有話直說了。他們是我們目前的最大希望。他們的勢力拉伸到極其薄弱, " -"但他們會為了維持秩序不擇手段。他們不在乎小偷, 因為他們了解到大部分的人都死了, 但是如果你有他們需要的東西... 你 \"將會\" " +"嗯… 在他們徵召我之前, 我只是平民百姓, 我就對你有話直說了。他們是我們目前的最大希望。他們的勢力拉伸到極其薄弱, " +"但他們會為了維持秩序不擇手段。他們不在乎掠奪者, 因為他們知道大多數的人都死了, 但是如果你有他們需要的東西… 你 \"將會\" " "給他們。由於這裡大部分生存者都沒有他們想要的, 他們受歡迎的程度數一數二。" #: lang/json/talk_topic_from_json.py msgid "Hmmm..." -msgstr "嗯..." +msgstr "嗯…" #: lang/json/talk_topic_from_json.py msgid "" @@ -97438,9 +98962,8 @@ msgid "" "Most civilians are offered a cabin on one of the liners to retire to if they" " serve as a federal employee for a few years." msgstr "" -"我不太了解他形成的過程, " -"但他是漂浮在外海的軍事與商業用船艦。他們從拖網漁船到超級油輪都有...甚至有一些北約組織的船艦。大部分的平民在退休後得到了一個客艙, " -"慰勞他們做為聯邦雇員的幾年。" +"我不太了解他形成的過程, 但他是漂浮在外海的軍事與商業用船艦。他們從拖網漁船到超級油輪都有… " +"甚至有一些北約組織的船艦。大部分的平民在退休後得到了一個客艙, 慰勞他們做為聯邦雇員的幾年。" #: lang/json/talk_topic_from_json.py msgid "" @@ -97513,11 +99036,11 @@ msgid "" msgstr "" "要做的事說起來會有幾百件。他們選擇這個牧場, 因為位置比較偏遠, 柵欄也挺完整, 還有大片的空地。這一大塊柵欄圍住的土地, " "如果我們有了足夠材料就能建立起一條村莊。原本我們想掃蕩一個現成的小鎮或是類似的地方, 但耕種用地的匱乏和大量的殭屍, " -"使得從零開始建設會比較實際。我原來呆的難民中心就一直在面臨著飢荒和喪屍攻擊的問題。" +"使得從零開始建造會比較實際。我原來呆的難民中心就一直在面臨著飢荒和喪屍攻擊的問題。" #: lang/json/talk_topic_from_json.py msgid "Hopefully moving out here was worth it..." -msgstr "希望離開這裡是值得的..." +msgstr "希望離開這裡是值得的…" #: lang/json/talk_topic_from_json.py msgid "" @@ -97542,7 +99065,7 @@ msgstr "我的同伴正在忙著建設這裡, 你可以問問他們有沒有需 #: lang/json/talk_topic_from_json.py msgid "I'll talk to him then..." -msgstr "我會和他交談, 然後..." +msgstr "我會和他交談, 然後…" #: lang/json/talk_topic_from_json.py msgid "Howdy." @@ -97573,7 +99096,7 @@ msgid "" "profession became lumberjack... didn't have any say in it. If I want to eat" " then I'll be cutting wood from now till kingdom come." msgstr "" -"我是其中一個在到達難民中心後被轉移至這個哨站的移居者。他們說我的年紀足夠可以揮動斧頭, 所以我決定做伐木工人...沒有甚麼好說的。如果我要吃飯的話, " +"我是其中一個在到達難民中心後被轉移至這個哨站的移居者。他們說我的年紀足夠可以揮動斧頭, 所以我決定做伐木工人… 沒有甚麼好說的。如果我要吃飯的話, " "我要由現在開始伐木直到王國建立為止。" #: lang/json/talk_topic_from_json.py @@ -97658,7 +99181,7 @@ msgstr "我只是一個曾被不死生物追趕著這個小農夫的條寶貴生 #: lang/json/talk_topic_from_json.py msgid "It could be worse..." -msgstr "這可能會更糟..." +msgstr "這可能會更糟…" #: lang/json/talk_topic_from_json.py msgid "" @@ -97668,7 +99191,7 @@ msgstr "我沒時間跟你聊天。如果你想交易或是找點事幹, 去和 #: lang/json/talk_topic_from_json.py msgid "I'll talk with them then..." -msgstr "我會和他們交談, 然後..." +msgstr "我會和他們交談, 然後…" #: lang/json/talk_topic_from_json.py msgid "I hope you are here to do business." @@ -97676,7 +99199,7 @@ msgstr "我希望你在這裡只是要做生意的。" #: lang/json/talk_topic_from_json.py msgid "I'm interested in investing in agriculture..." -msgstr "我感興趣的是投資農業..." +msgstr "我感興趣的是投資農業…" #: lang/json/talk_topic_from_json.py msgid "" @@ -97687,7 +99210,7 @@ msgstr "我的工作是管理我們這個哨站的農業生產。我不斷尋找 #: lang/json/talk_topic_from_json.py msgid "Please leave me alone..." -msgstr "請離我遠一點..." +msgstr "請離我遠一點…" #: lang/json/talk_topic_from_json.py msgid "What's wrong?" @@ -97785,11 +99308,11 @@ msgstr "" #: lang/json/talk_topic_from_json.py msgid "I was wondering if you could install a cybernetic implant..." -msgstr "你能否安裝生化插件..." +msgstr "你能否安裝生化插件…" #: lang/json/talk_topic_from_json.py msgid "I need help removing an implant..." -msgstr "幫助我移除植入的插件..." +msgstr "幫助我移除植入的插件…" #: lang/json/talk_topic_from_json.py msgid "Don't mind me." @@ -97869,7 +99392,7 @@ msgstr "你這裡有什麼現成的酒?" #: lang/json/talk_topic_from_json.py msgid "I'll be going..." -msgstr "我正要去..." +msgstr "我正要去…" #: lang/json/talk_topic_from_json.py msgid "" @@ -97933,16 +99456,12 @@ msgstr "或許下次吧…" msgid "" "What? I'm a barber... I cut hair. There's demand for cheap cuts and a " "shave out here." -msgstr "什麼? 我是個理髮師...我剪頭髮。這裡有便宜理髮跟刮鬍子的需求。" +msgstr "什麼? 我是個理髮師… 我剪頭髮。這裡有便宜理髮跟刮鬍子的需求。" #: lang/json/talk_topic_from_json.py msgid "I can't imagine what I'd need your assistance with." msgstr "我想不到會需要你的什麼幫助。" -#: lang/json/talk_topic_from_json.py -msgid "Fine." -msgstr "很好。" - #: lang/json/talk_topic_from_json.py msgid "Stand still while I get my clippers..." msgstr "站著別動, 讓我把剪刀拿過來…" @@ -97953,7 +99472,7 @@ msgstr "謝謝…" #: lang/json/talk_topic_from_json.py msgid "I haven't done anything wrong..." -msgstr "我從來沒犯錯過..." +msgstr "我從來沒犯錯過…" #: lang/json/talk_topic_from_json.py msgid "Any tips for surviving?" @@ -97986,7 +99505,7 @@ msgid "" "can't accept cash cards, so you'll have to find an ATM to deposit money into" " your bank account." msgstr "" -"我目前正在等一位顧客回來... 但我還是可以跟你做個交易, 要是戰利品我能分上一份, $8,000 就行了。我不接受現金卡, " +"我目前正在等一位顧客回來… 但我還是可以跟你做個交易, 要是戰利品我能分上一份, $8,000 就行了。我不接受現金卡, " "所以你要先找到一部自動櫃員機把錢存入你的銀行帳戶。" #: lang/json/talk_topic_from_json.py @@ -98009,10 +99528,6 @@ msgstr "很高興有你一同搭乘。" msgid "Can I trade for supplies?" msgstr "" -#: lang/json/talk_topic_from_json.py src/npctalk.cpp src/npctalk.cpp -msgid "Can I do anything for you?" -msgstr "我能為你做什麼事嗎?" - #: lang/json/talk_topic_from_json.py msgid "" "I'm a doctor, one of the several at the outpost. We were the lucky ones. " @@ -98289,7 +99804,7 @@ msgstr "準備好行囊, 。我們要出發了。" msgid "Not at technique at all" msgstr "毫無章法" -#: lang/json/technique_from_json.py +#: lang/json/technique_from_json.py src/bonuses.cpp src/martialarts.cpp msgid "Block" msgstr "格擋" @@ -98392,7 +99907,7 @@ msgstr "橫掃攻擊" #. ~ Description for Wide Strike #: lang/json/technique_from_json.py msgid "Attack in a wide arc, crit only, min 3 melee" -msgstr "廣範圍弧形攻擊, 爆擊限定, 最少需要3級近戰技能" +msgstr "廣範圍弧形攻擊, 爆擊限定, 最少需要 3 級近戰技能" #: lang/json/technique_from_json.py #, python-format @@ -98447,8 +99962,6 @@ msgid "Rapid Strike" msgstr "快速攻擊" #. ~ Description for Rapid Strike -#. ~ Description for quick punch -#. ~ Description for quick slash #: lang/json/technique_from_json.py msgid "50% moves, 66% damage" msgstr "行動值消耗 50%, 造成傷害 66%" @@ -98470,7 +99983,7 @@ msgstr "斬首攻擊" #. ~ Description for Vorpal Strike #: lang/json/technique_from_json.py msgid "Cut damage multiply by 99, crit only" -msgstr "砍劈傷害99倍, 爆擊限定" +msgstr "砍劈傷害 99 倍, 爆擊限定" #: lang/json/technique_from_json.py #, python-format @@ -98560,11 +100073,6 @@ msgstr "" msgid "Counterattack" msgstr "反擊" -#. ~ Description for Counterattack -#: lang/json/technique_from_json.py -msgid "Counterattack on block, counterattack on dodge" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You counter-attack %s" @@ -98579,22 +100087,10 @@ msgstr " 反擊 %s" msgid "Feint" msgstr "虛擊" -#. ~ Description for Feint -#. ~ Description for Viper Hiss -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss" -msgstr "" - #: lang/json/technique_from_json.py msgid "Grab Break" msgstr "反擒拿" -#. ~ Description for Grab Break -#. ~ Description for Viper Writhe -#: lang/json/technique_from_json.py -msgid "Break a grab" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You jab deftly at %s" @@ -98609,11 +100105,6 @@ msgstr " 靈巧的戳中 %s" msgid "Cross" msgstr "重直拳" -#. ~ Description for Cross -#: lang/json/technique_from_json.py -msgid "x1.2 bash damage, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw a heavy cross at %s" @@ -98628,12 +100119,6 @@ msgstr " 對著 %s 揮出重直拳" msgid "Jab" msgstr "刺拳" -#. ~ Description for Jab -#. ~ Description for Viper Fist -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You quickly jab %s" @@ -98648,11 +100133,6 @@ msgstr " 快速的戳中 %s" msgid "Uppercut" msgstr "上勾拳" -#. ~ Description for Uppercut -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.4 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You uppercut %s" @@ -98667,11 +100147,6 @@ msgstr " 使出上勾拳攻擊 %s" msgid "Cross Counter" msgstr "交叉反擊" -#. ~ Description for Cross Counter -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, knockback 1 tile, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cross-counter %s" @@ -98700,14 +100175,6 @@ msgstr " 迅速地揮拳打了 %s" msgid "karate chop" msgstr "手刀" -#. ~ Description for karate chop -#. ~ Description for precise strike -#. ~ Description for flying knee -#. ~ Description for Snake Strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You karate chop %s" @@ -98722,11 +100189,6 @@ msgstr " 用手刀砍了 %s" msgid "throw" msgstr "投擲" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You throw %s" @@ -98741,11 +100203,6 @@ msgstr " 投擲 %s" msgid "dodge throw" msgstr "閃避投擲" -#. ~ Description for dodge throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, counterattack on dodge, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You smoothly throw %s" @@ -98760,12 +100217,6 @@ msgstr " 流暢的投擲 %s" msgid "feint at" msgstr "佯攻" -#. ~ Description for feint at -#. ~ Description for Crane Wing -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You feint at %s" @@ -98776,11 +100227,6 @@ msgstr "你對著 %s 佯攻" msgid " feints at %s" msgstr " 對著 %s 佯攻" -#. ~ Description for disarm -#: lang/json/technique_from_json.py -msgid "Unwield target's weapon, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You disarm %s" @@ -98791,21 +100237,11 @@ msgstr "你繳械了 %s" msgid " disarms %s" msgstr " 繳械了 %s" -#. ~ Description for throw -#: lang/json/technique_from_json.py -msgid "Down 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py lang/json/technique_from_json.py #: src/monster.cpp msgid "grab" msgstr "擒拿" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "precise strike" msgstr "精準突擊" @@ -98820,20 +100256,10 @@ msgstr "你突擊 %s" msgid " strikes %s" msgstr " 突擊 %s" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 1 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "elbow" msgstr "肘擊" -#. ~ Description for elbow -#: lang/json/technique_from_json.py -msgid "50% moves, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You elbow %s" @@ -98848,11 +100274,6 @@ msgstr " 肘擊 %s" msgid "kick" msgstr "踢擊" -#. ~ Description for kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You power-kick %s" @@ -98877,19 +100298,6 @@ msgstr "你飛膝攻擊 %s" msgid " flying knees %s" msgstr " 飛膝攻擊 %s" -#. ~ Description for quick punch -#. ~ Description for Rapid Strike -#. ~ Description for Snake Snap -#. ~ Description for Leopard Swipe -#: lang/json/technique_from_json.py -msgid "50% moves, 66% damage, min 2 unarmed" -msgstr "" - -#. ~ Description for precise strike -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You jab %s" @@ -98900,32 +100308,14 @@ msgstr "你戳中 %s" msgid " jabs %s" msgstr " 戳中 %s" -#. ~ Description for grab -#: lang/json/technique_from_json.py -msgid "Down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "grab break" msgstr "反擒拿" -#. ~ Description for grab break -#. ~ Description for Snake Slither -#: lang/json/technique_from_json.py -msgid "Break a grab, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "surprise attack" msgstr "出其不意攻擊" -#. ~ Description for surprise attack -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.4 bash damage, x2 cut damage, crit only, min 3 unarmed, min" -" 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You surprise attack %s" @@ -98940,11 +100330,6 @@ msgstr " 出其不意攻擊 %s" msgid "axe-kick" msgstr "戰斧踢" -#. ~ Description for axe-kick -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 2 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You axe-kick %s" @@ -98959,11 +100344,6 @@ msgstr " 戰斧踢 %s" msgid "side kick" msgstr "側踢" -#. ~ Description for side kick -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You side-kick %s" @@ -98978,11 +100358,6 @@ msgstr " 側踢 %s" msgid "sweep kick" msgstr "掃踢" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You sweep-kick %s" @@ -98997,11 +100372,6 @@ msgstr " 掃踢 %s" msgid "biojutsu counter" msgstr "生化忍術反擊" -#. ~ Description for biojutsu counter -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You block and counter-attack %s" @@ -99014,7 +100384,7 @@ msgstr " 格擋並反擊 %s" #: lang/json/technique_from_json.py msgid "quick slash" -msgstr "速斬" +msgstr "快速斬擊" #: lang/json/technique_from_json.py #, python-format @@ -99030,11 +100400,6 @@ msgstr " 快速斬擊 %s" msgid "biojutsu impale" msgstr "生化忍術刺擊" -#. ~ Description for biojutsu impale -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, x1.5 cut damage, x1.5 bash damage, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You brutally impale %s" @@ -99045,20 +100410,10 @@ msgstr "你殘暴的刺穿 %s" msgid " brutally impales %s" msgstr " 殘暴的刺穿 %s" -#. ~ Description for sweep kick -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "wide strike" msgstr "橫掃攻擊" -#. ~ Description for wide strike -#: lang/json/technique_from_json.py -msgid "Attack in a wide arc, crit only, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You cleave through %s" @@ -99073,13 +100428,6 @@ msgstr " 劈開 %s" msgid "Drunk feint" msgstr "醉跌" -#. ~ Description for Drunk feint -#. ~ Description for Snake Slide -#. ~ Description for Feint -#: lang/json/technique_from_json.py -msgid "Free recovery from a miss, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stumble and leer at %s" @@ -99094,11 +100442,6 @@ msgstr " 對著 %s 跌跌撞撞" msgid "Drunk counter" msgstr "醉拳反擊" -#. ~ Description for Drunk counter -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lurch, and your wild swing hits %s" @@ -99113,12 +100456,6 @@ msgstr " 步履蹣跚並攻擊 %s" msgid "Fencing lunge" msgstr "擊劍箭步刺" -#. ~ Description for Fencing lunge -#. ~ Description for Fan strike -#: lang/json/technique_from_json.py -msgid "75% moves, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You lunge at %s" @@ -99133,11 +100470,6 @@ msgstr " 箭步突刺 %s" msgid "Fencing thrust" msgstr "擊劍刺擊" -#. ~ Description for Fencing thrust -#: lang/json/technique_from_json.py -msgid "90% moves, x1.25 stab damage, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You thrust at %s" @@ -99152,11 +100484,6 @@ msgstr " 刺擊 %s" msgid "Fencing stop thrust" msgstr "擊劍反攻刺" -#. ~ Description for Fencing stop thrust -#: lang/json/technique_from_json.py -msgid "x1.5 stab damage, stun 1 turn, counterattack on block, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a perfect stop thrust to %s" @@ -99171,11 +100498,6 @@ msgstr " 對 %s 使出了完美的反攻刺" msgid "Round strike" msgstr "環繞攻擊" -#. ~ Description for Round strike -#: lang/json/technique_from_json.py -msgid "60% moves, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You round strike %s" @@ -99204,11 +100526,6 @@ msgstr " 風車攻擊 %s" msgid "Snap strike" msgstr "閃擊" -#. ~ Description for Snap strike -#: lang/json/technique_from_json.py -msgid "80% moves" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You snap out at %s" @@ -99223,11 +100540,6 @@ msgstr " 快閃攻擊 %s" msgid "Combination strike" msgstr "組合攻擊" -#. ~ Description for Combination strike -#: lang/json/technique_from_json.py -msgid "80% moves, 150% damage, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You combination strike %s" @@ -99242,11 +100554,6 @@ msgstr " 組合攻擊 %s" msgid "free strike" msgstr "游離鞭擊" -#. ~ Description for free strike -#: lang/json/technique_from_json.py -msgid "Free strike, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You whip a free strike onto %s" @@ -99261,13 +100568,6 @@ msgstr " 對 %s 揮鞭攻擊" msgid "puño strike" msgstr "重拳打擊" -#. ~ Description for puño strike -#: lang/json/technique_from_json.py -msgid "" -"Converts all damage into x4 bashing damage, stun 1 turn, min 3 melee, min 2 " -"points of bashing damage delivered" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a puño to %s" @@ -99282,11 +100582,6 @@ msgstr " 柄擊 %s" msgid "knee strike" msgstr "膝擊" -#. ~ Description for knee strike -#: lang/json/technique_from_json.py -msgid "Down 2 turns, crit only, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You deliver a knee strike to %s" @@ -99301,11 +100596,6 @@ msgstr " 飛膝攻擊 %s" msgid "hamstring" msgstr "膝關節" -#. ~ Description for hamstring -#: lang/json/technique_from_json.py -msgid "Down 3 turns, crit only, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You ground %s with a low blow" @@ -99320,12 +100610,6 @@ msgstr "下段攻擊讓 %s 倒在地上!" msgid "Vicious Precision" msgstr "毒牙突刺" -#. ~ Description for Vicious Precision -#: lang/json/technique_from_json.py -#, python-format -msgid "150% damage, crit only, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You viciously wound %s" @@ -99340,11 +100624,6 @@ msgstr "惡毒的重創 %s " msgid "Silat Brutality" msgstr "野蠻印尼刀術" -#. ~ Description for Silat Brutality -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 3 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling backwards" @@ -99354,11 +100633,6 @@ msgstr "" msgid "Dirty Hit" msgstr "骯髒攻擊" -#. ~ Description for Dirty Hit -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 1 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hit %s with a dirty blow" @@ -99401,11 +100675,6 @@ msgstr "快速地給 %s 一記手刀!" msgid "Viper Bite" msgstr "毒蛇咬" -#. ~ Description for Viper Bite -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.5 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Snakebite %s" @@ -99420,11 +100689,6 @@ msgstr " 毒蛇咬 %s" msgid "Viper Strike" msgstr "毒蛇猛擊" -#. ~ Description for Viper Strike -#: lang/json/technique_from_json.py -msgid "x3 bash damage, 2 turns duration" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You Viper Strike %s" @@ -99443,11 +100707,6 @@ msgstr "毒蛇翻騰" msgid "Stinger Strike" msgstr "毒刺攻擊" -#. ~ Description for Stinger Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, knockback 3 tiles, x2 bash damage, crit only" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your Stinger Kick sends %s flying" @@ -99462,11 +100721,6 @@ msgstr "" msgid "Pincer Strike" msgstr "鉗形攻擊" -#. ~ Description for Pincer Strike -#: lang/json/technique_from_json.py -msgid "x1.25 bash damage, stun 2 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You punch %s with your Pincer Fist" @@ -99481,11 +100735,6 @@ msgstr "" msgid "Toad's Tongue" msgstr "蟾蜍舌" -#. ~ Description for Toad's Tongue -#: lang/json/technique_from_json.py -msgid "50% moves, down 1 turn, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You snatch and slug %s" @@ -99564,11 +100813,6 @@ msgstr " 攻擊了 %s" msgid "Tiger Takedown" msgstr "虎式擒拿" -#. ~ Description for Tiger Takedown -#: lang/json/technique_from_json.py -msgid "Down 1 turns, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and ground %s" @@ -99583,11 +100827,6 @@ msgstr "" msgid "Leopard Fist" msgstr "豹拳" -#. ~ Description for Leopard Fist -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, crit only, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike out at %s with your Leopard Fist" @@ -99616,11 +100855,6 @@ msgstr " 快速的給了 %s 一記側勾拳" msgid "Leopard Foresight" msgstr "豹之遠眺" -#. ~ Description for Leopard Foresight -#: lang/json/technique_from_json.py -msgid "x1.5 bash damage, counterattack on dodge, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You dodge the attack and swipe at %s's exposed flank" @@ -99635,11 +100869,6 @@ msgstr "" msgid "Dragon Snatch" msgstr "龍爪" -#. ~ Description for Dragon Snatch -#: lang/json/technique_from_json.py -msgid "Stun 2 turns, x1.2 bash damage, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You grab and knee %s" @@ -99654,12 +100883,6 @@ msgstr "" msgid "Dragon's Vortex" msgstr "龍漩" -#. ~ Description for Dragon's Vortex -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, counterattack on dodge, counterattack on block, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch the attack and send %s spinning" @@ -99674,12 +100897,6 @@ msgstr "" msgid "Dragon Sweeper" msgstr "神龍擺尾" -#. ~ Description for Dragon Sweeper -#. ~ Description for Trip -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You low-roundhouse %s 's legs" @@ -99694,11 +100911,6 @@ msgstr "" msgid "Dragon Strike" msgstr "昇龍拳" -#. ~ Description for Dragon Strike -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 6 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You send %s reeling with a Dragon Strike" @@ -99725,11 +100937,6 @@ msgstr "" msgid "Crane Flap" msgstr "鶴拳振翅" -#. ~ Description for Crane Flap -#: lang/json/technique_from_json.py -msgid "Break a grab, min 3 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "You swing your arms and break free" msgstr "" @@ -99742,11 +100949,6 @@ msgstr "" msgid "Crane Strike" msgstr "鶴拳啄擊" -#. ~ Description for Crane Strike -#: lang/json/technique_from_json.py -msgid "Stun 3 turns, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You hand-peck %s" @@ -99766,20 +100968,10 @@ msgstr "你對著 %s 虛攻" msgid "Power Hit" msgstr "強力攻擊" -#. ~ Description for Power Hit -#: lang/json/technique_from_json.py -msgid "Stun 1 turn, knockback 1 tile, crit only, min 4 unarmed" -msgstr "" - #: lang/json/technique_from_json.py msgid "Hit Them Back" msgstr "反擊" -#. ~ Description for Hit Them Back -#: lang/json/technique_from_json.py -msgid "Counterattack on block, min 5 unarmed" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You catch %s's attack, and hit back" @@ -99808,11 +101000,6 @@ msgstr " 絆倒 %s" msgid "Flowing Water Cut" msgstr "流水斬" -#. ~ Description for Flowing Water Cut -#: lang/json/technique_from_json.py -msgid "175% moves, x2 bash damage, x2 cut damage, min 4 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike %s with the slow power of flowing water" @@ -99827,11 +101014,6 @@ msgstr " 用滴水穿石的力量攻擊 %s" msgid "Red Leaf's Cut" msgstr "紅葉斬" -#. ~ Description for Red Leaf's Cut -#: lang/json/technique_from_json.py -msgid "Down 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "Your strike knocks %s off balance" @@ -99846,12 +101028,6 @@ msgstr " 的突襲讓 %s 失去平衡" msgid "Fire and Stone's Cut" msgstr "火岩斬" -#. ~ Description for Fire and Stone's Cut -#: lang/json/technique_from_json.py -msgid "" -"Stun 2 turns, x1.5 bash damage, x1.5 cut damage, crit only, min 6 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You stun %s with the force of the blow" @@ -99866,12 +101042,6 @@ msgstr "" msgid "In-One Timing" msgstr "拔刀術" -#. ~ Description for In-One Timing -#: lang/json/technique_from_json.py -msgid "" -"50% moves, x1.5 bash damage, x1.5 cut damage, stun 2 turns, min 5 melee" -msgstr "" - #: lang/json/technique_from_json.py #, python-format msgid "You strike at %s's weaknesses" @@ -99882,11 +101052,6 @@ msgstr "" msgid " strikes %s's weaknesses" msgstr "" -#. ~ Description for feint at -#: lang/json/technique_from_json.py -msgid "80% moves, free recovery from a miss, min 2 melee" -msgstr "" - #: lang/json/technique_from_json.py msgid "slow strike" msgstr "滴水穿石的力量" @@ -100772,7 +101937,7 @@ msgstr "" #: lang/json/terrain_from_json.py msgid "reinforced glass with closed shutters" -msgstr "卷簾關上的強化玻璃" +msgstr "百葉關上的強化玻璃" #. ~ Description for reinforced glass with closed shutters #: lang/json/terrain_from_json.py @@ -100782,10 +101947,11 @@ msgid "" "extreme weather. Looks like it can only be opened from the inside. Even " "with the installed shutters, it isn't feasible in supporting a roof." msgstr "" +"這些金屬百葉窗是強化玻璃上的第二層保護層, 通常用於抵禦罪犯或極端天氣的傷害。看起來它只能從內側打開。即使安裝了百葉窗, 它也不可能支撐屋頂。" #: lang/json/terrain_from_json.py msgid "reinforced glass with open shutters" -msgstr "卷簾打開的強化玻璃" +msgstr "百葉打開的強化玻璃" #. ~ Description for reinforced glass with open shutters #: lang/json/terrain_from_json.py @@ -100793,7 +101959,7 @@ msgid "" "Hanging metal shutters that haven't been deployed, exposing the reinforced " "glass. It appears as though the metal shutters can only be activated from " "the inside." -msgstr "" +msgstr "懸掛的金屬百葉窗並未展開, 露出了強化玻璃。看起來金屬百葉裝只能從內側使用。" #: lang/json/terrain_from_json.py msgid "closed reinforced glass door" @@ -101990,7 +103156,7 @@ msgstr "山核桃樹" #: lang/json/terrain_from_json.py msgid "pistachio tree" -msgstr "" +msgstr "阿月渾子樹" #: lang/json/terrain_from_json.py msgid "almond tree" @@ -101998,7 +103164,7 @@ msgstr "" #: lang/json/terrain_from_json.py msgid "pecan tree" -msgstr "" +msgstr "胡桃樹" #: lang/json/terrain_from_json.py msgid "dead hickory tree" @@ -102242,7 +103408,7 @@ msgstr "" #: lang/json/terrain_from_json.py msgid "barbed wire fence" -msgstr "鐵刺護欄" +msgstr "帶刺鐵絲護欄" #. ~ Description for barbed wire fence #: lang/json/terrain_from_json.py @@ -102952,7 +104118,7 @@ msgstr "" #: lang/json/terrain_from_json.py msgid "bridge control" -msgstr "" +msgstr "橋梁控制" #: lang/json/terrain_from_json.py msgid "pine lean-to" @@ -103000,7 +104166,7 @@ msgstr "精密切割" #: lang/json/tool_quality_from_json.py msgid "glare protection" -msgstr "防眩光" +msgstr "眩光防護" #: lang/json/tool_quality_from_json.py msgid "smoothing" @@ -103020,9 +104186,9 @@ msgstr "精密敲擊" #: lang/json/tool_quality_from_json.py msgid "wood sawing" -msgstr "鋸木" +msgstr "鋸切木頭" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "metal sawing" msgstr "鋸切金屬" @@ -103032,7 +104198,7 @@ msgstr "精密鋸切金屬" #: lang/json/tool_quality_from_json.py msgid "food cooking" -msgstr "食物烹調" +msgstr "烹調" #: lang/json/tool_quality_from_json.py msgid "boiling" @@ -103048,7 +104214,7 @@ msgstr "化工" #: lang/json/tool_quality_from_json.py msgid "smoking" -msgstr "抽煙" +msgstr "抽菸" #: lang/json/tool_quality_from_json.py msgid "distilling" @@ -103056,7 +104222,7 @@ msgstr "蒸餾" #: lang/json/tool_quality_from_json.py msgid "tree cutting" -msgstr "伐木" +msgstr "砍伐" #: lang/json/tool_quality_from_json.py msgid "digging" @@ -103066,17 +104232,17 @@ msgstr "挖掘" msgid "bolt turning" msgstr "螺栓扭轉" -#: lang/json/tool_quality_from_json.py +#: lang/json/tool_quality_from_json.py src/crafting_gui.cpp msgid "fine bolt turning" msgstr "精密螺栓扭轉" #: lang/json/tool_quality_from_json.py msgid "screw driving" -msgstr "螺絲轉動" +msgstr "螺絲旋轉" #: lang/json/tool_quality_from_json.py msgid "fine screw driving" -msgstr "精密螺絲轉動" +msgstr "精密螺絲旋轉" #: lang/json/tool_quality_from_json.py msgid "butchering" @@ -103100,7 +104266,7 @@ msgstr "頂重" #: lang/json/tool_quality_from_json.py msgid "self jacking" -msgstr "" +msgstr "自建頂重" #: lang/json/tool_quality_from_json.py msgid "chiseling" @@ -103116,7 +104282,7 @@ msgstr "編織" #: lang/json/tool_quality_from_json.py msgid "bullet pulling" -msgstr "" +msgstr "卸彈" #: lang/json/trap_from_json.py msgid "roll mat" @@ -103176,7 +104342,7 @@ msgstr "窗台" #: lang/json/trap_from_json.py msgid "firewood source" -msgstr "" +msgstr "薪柴源" #: lang/json/trap_from_json.py msgid "raincatcher" @@ -103195,43 +104361,40 @@ msgid "" "Welcome to the Cataclysm tutorial! As you play, pop-ups like this one will " "appear to guide you through the basic game actions. Pressing spacebar will " "close the pop-up." -msgstr "" -"歡迎來到災變的教學模式! 當你遊玩的時候, 類似這個彈出訊息將會指導你進行基本的遊戲操作。按下 空白鍵 將會關閉這個彈出\n" -"訊息。(xap)" +msgstr "歡迎來到災變的教學模式! 當你遊玩的時候, 類似這個彈出訊息將會指導你進行基本的遊戲操作。按空白鍵將會關閉這個彈出訊息。" #: lang/json/tutorial_messages_from_json.py msgid "" "The '@' character in the center of the screen represents you. To move, you " "can use the numpad, the vikeys (hjklyubn), or the arrow keys. To have your " "character wait in place, press '.'" -msgstr "" -"在畫面中央的 '@' 符號代表玩家你。要移動, 你能夠使用九宮數字鍵、hjklyubn、或是方向鍵。要讓你的角色在原地等待, 按下 '.' (xap)" +msgstr "在畫面中央的 @ 符號代表玩家。你能夠使用數字鍵盤、vi 鍵 (hjklyubn)、或方向鍵來移動。按 . 能讓你的角色在原地等待。" #: lang/json/tutorial_messages_from_json.py msgid "" "To see what the symbols around you mean, press ';'. You'll be able to " "scroll around and get information on the terrain, monsters, and items in the" " world around you." -msgstr "要了解各符號代表的意義, 按下';'。你將能夠四處捲動, 並了解地形地物的各種資訊, 包括各種在你周圍的怪物與物品。(xap)" +msgstr "按 ; 來檢視周圍符號代表的意義。你將能夠四處捲動游標, 並了解關於周圍地形、怪物、物品的各種資訊。" #: lang/json/tutorial_messages_from_json.py msgid "" "That brown '+' next to you is a closed door. To open it, either simply walk" " into it, or press 'o' and then a movement key." -msgstr "你身旁的棕色 '+' 符號代表一扇闔上的門, 直接走過去或是按下字母 'o' 配合方向鍵來開啟。" +msgstr "你身旁的棕色 + 符號代表一扇闔上的門, 直接走過去或是按 o 接著按移動鍵來開啟。" #: lang/json/tutorial_messages_from_json.py msgid "" "You can close an opened door by pressing 'c' and then a movement key. " "Closing doors behind you can often slow down throngs of monsters greatly." -msgstr "你能夠藉由按下 'c' 並選方向, 來關閉開啟的門。把你身後的門關起來能夠大幅地拖慢怪物的進擊速度。(xap)" +msgstr "你能夠按 c 接著按移動鍵來關閉開啟的門。關起你身後的門能夠大幅拖慢怪物的進擊速度。" #: lang/json/tutorial_messages_from_json.py msgid "" "Most monsters will have to smash their way through a closed door. If a door" " is locked or stuck, you can smash it by pressing 's' and then a movement " "key." -msgstr "大部分的怪物都必須要破壞關閉的門才能通過。若是門被鎖住或是卡住, 你能夠利用's'選擇方向來砸爛該門。(xap)" +msgstr "大部分的怪物必須要砸爛關閉的門才能通過。若是門被鎖住或是卡住, 你能夠按 s 接著按移動鍵來砸爛它。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103240,36 +104403,35 @@ msgid "" " yourself on the broken glass, but it's a good last-ditch escape route. You" " can smash through other things, too." msgstr "" -"你能夠按下 's' 加上方向鍵來砸壞窗戶來通過障礙。一個被砸壞的窗戶將會需要較長的時間才能爬過去, 並且還有可能讓你被碎片刺傷, " -"但在走投無路時這是一個良好的脫逃方法。你也能夠砸爛其他東西。" +"你能夠按 s 接著按移動鍵來砸爛並通過窗戶。一個被砸爛的窗戶需要較長的時間才能爬過去, 而且還可能讓你自己被碎玻璃割傷, " +"但是在走投無路時這是一個良好的脫逃方法。當然, 你也能夠砸爛其他東西。" #: lang/json/tutorial_messages_from_json.py msgid "" "You just stepped on a space with one or more items. If you wish to pick it " "up, press ',' or 'g'." -msgstr "你現在腳下有一個或多個道具, 你可以按下 ',' 或是 'g' 來撿取。" +msgstr "你的腳下現在有一個或多個道具, 你可以按 , 或 g 來撿取。" #: lang/json/tutorial_messages_from_json.py msgid "" "The nearby { is a display rack, and the blue background indicates that there" " are items there. If you examine the square by pressing 'e', you can pick " "up items without moving to the square." -msgstr "" -"附近的 { 符號為展示架, 而藍色背景指的是有物品在這。若是你按下'e'來檢視該格子, 你就能夠在不移動到該格子上的情況下撿取物品。(xap)" +msgstr "附近的 { 符號為展示架, 而藍色背景指的是有物品在這。若是你按下 e 來檢查該格子, 你就能夠在不移動到該格子上的情況下撿取物品。" #: lang/json/tutorial_messages_from_json.py msgid "" "The Examine command is useful for grabbing items off window frames, around " "corners, etc. It's also used for interacting with a few terrain types. " "Interactive terrain is usually designated with a '6' symbol." -msgstr "檢視指令在撿取於任何地形的物品時非常有用。同時也能夠與許多地形狀況進行互動。能夠互動的地形通常標示為 '6' 的符號。(xap)" +msgstr "檢查指令在撿取於任何地形的物品時非常有用。同時也能夠與許多地形狀況進行互動。能夠互動的地形通常標示為 6 的符號。" #: lang/json/tutorial_messages_from_json.py msgid "" "You don't have space in your inventory to store the item you just tried to " "pick up. You need to wear something with storage space, like a backpack or " "cargo pants, to gain more storage space." -msgstr "你的物品欄沒有足夠的儲物空間來儲存你要撿取的物品。你需要穿戴上有提供儲物空間的東西才能增加空間, 像是背包或是工作褲。" +msgstr "你的物品欄裡沒有足夠的儲物空間來容納你要撿取的物品。你需要穿戴上有提供儲物空間的東西才能增加空間, 像是背包或是工作褲。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103280,7 +104442,7 @@ msgid "" " cargo pants." msgstr "" "你剛撿取的物品被自動手持作為武器了。會發生這種狀況通常代表你的物品欄沒有足夠的儲物空間能夠收藏該物品, 所以你必須用雙手拿著。要拓展儲物空間, " -"試著穿上有許多儲物空間的衣物, 類似背包, 或是工作褲。" +"試著穿戴有許多儲物空間的衣物, 類似背包, 或是工作褲。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103297,17 +104459,14 @@ msgid "" "'i'. You can then press the letter of any item to get more information " "about it." msgstr "" -"你剛撿取的物品被放入你的物品欄了, 你身上所有的衣物會結算為一個總儲物空間。要查看你的物品欄, 按下 " -"'i'。你能夠按下物品所代表的字母來查看相關的資訊。(xap)" +"你剛撿取的物品被放入你的物品欄了, 也就是你身上所穿的衣物加總的儲物空間。按 i 來檢視你的物品欄, 然後你可以按下物品的代碼以取得更詳細的物品資訊。" #: lang/json/tutorial_messages_from_json.py msgid "" "The item you just picked up is a type of clothing! To wear clothing, press " "W and then select an item. To take off clothing, press T, or simply take it" " off and drop it in one action by pressing d." -msgstr "" -"你剛撿取的物品是一種衣物! 要穿戴衣物, 按下 'W' 並選擇物品。要脫下衣物, 按下 'T' , 或是簡單的按下 'd' " -"來把該物品脫下並丟棄在地上。(xap)" +msgstr "你剛撿取的物品是一種衣物! 要穿戴衣物, 按 W 接著選擇物品。要脫下衣物可以按 T, 或是簡單的按 d 來一口氣把它脫下並丟到地上。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103316,8 +104475,8 @@ msgid "" "or press 'w-' to put it away. A zombie has spawned nearby. To attack it, " "simply move into it." msgstr "" -"你剛撿取的物品是很好的武器! 要手持武器, 按下 'w', 並選取要手持的物品。要變為徒手狀態, 可以用 'd' 來丟棄武器, 或是 'w-' " -"來收起。有殭屍在附近要攻擊的話只要朝著其方向移動即可。(xap)" +"你剛撿取的物品是很好的武器! 要手持武器, 按 w 接著選取要手持的物品。要轉為徒手狀態, 可以按 w 接著選取手持中的物品, 或是按 d " +"來丟棄武器。有殭屍在附近時, 只要朝著其方向移動即可攻擊。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103326,15 +104485,15 @@ msgid "" "Most food expires eventually, so be careful. Some comestibles, especially " "drugs, can cause subtle, long-term effects." msgstr "" -"你剛撿取的物品是可食用的! 要把食物吃下, 按下 'E'。可食用的物品諸如食物, 飲料, 藥物, 等等。大部分的食物最後都會腐敗, " -"所以要注意。某些可食用物品, 特別是藥物, 會造成一些微妙或是長期的影響。(xap)" +"你剛撿取的物品是可食用的! 要把食物吃下, 按 E。可食用的物品諸如食物, 飲料, 藥物, 等等。大部分的食物最後都會腐敗, " +"所以要注意。某些可食用物品, 特別是藥物, 會造成一些微妙或是長期的影響。" #: lang/json/tutorial_messages_from_json.py msgid "" "The item you just picked up is a tool! To activate a tool, press 'a'. Some" " tools have a set charge, which can be reloaded once depleted. Other are " "single-use items, and still others are reusable." -msgstr "你剛撿起來的是一個工具! 按下 'a' 鍵來使用它。有些工具有使用次數, 重新裝載後可以再次使用。而其他工具不是一次性就是無限次數的。" +msgstr "你剛撿起來的是一個工具! 按 a 鍵來使用它。有些工具有使用次數, 重新裝載後可以再次使用。而其他工具不是一次性就是無限次數的。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103347,7 +104506,7 @@ msgid "" "when firing." msgstr "" "你剛撿取的物品是槍械! 槍是非常強力的武器但是需要彈藥。槍械有許多特別的屬性。大部分都是由裝填的彈藥來決定傷害能力。同時也有彈著分散的屬性, " -"來決定武器的命中率。某些槍有半自動射擊模式, 能夠進行連發射擊。某些槍械(主要是弓箭以及要出力的武器)有距離限制, " +"來決定武器的命中率。某些槍有半自動射擊模式, 能夠進行連發射擊。某些槍械 (主要是弓箭以及要出力的武器) 有距離限制, " "決定了彈藥射擊時的有效距離。(xap)" #: lang/json/tutorial_messages_from_json.py @@ -103369,7 +104528,7 @@ msgid "" "cutting. Most monsters deal bashing damage, but cutting is often the more " "deadly of the two. Bullets are considered cutting damage." msgstr "" -"你剛把一件能提供物理保護的衣物穿上了。衣物能夠抵禦兩種形態的攻擊: 鈍擊與砍劈。大部分的怪物都使用鈍擊傷害, 但砍劈造成的傷害較大。子彈也視為砍劈傷害。" +"你剛穿上了一件能提供物理防護的衣物。衣物能夠抵禦兩種形態的攻擊: 鈍擊與砍劈。大部分的怪物會造成鈍擊傷害, 但砍劈往往更致命。子彈也被視為砍劈傷害。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103379,8 +104538,8 @@ msgid "" "item you put on also encumbered your torso. This will make combat a little " "more difficult. To check encumbrance, press @." msgstr "" -"你剛把一件能提供儲物空間的衣物穿上了。這樣能讓你容納更多的東西, 但是要小心你攜帶物品時也受到負重限制, " -"這部份是由力量屬性所決定。你穿戴上的這件物品同時也會讓你的軀幹造成累贅。會讓戰鬥時稍微增加難度。要檢視累贅度, 按下@。" +"你剛穿上了一件能提供充足的儲物空間的衣物。這允許你攜帶更多物品, 但是要注意你所能攜帶的物品重量同時受到屬性限制。你穿戴上的這件物品也會造成軀幹累贅, " +"稍微增加戰鬥的難度。按 @ 來檢查累贅程度。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103390,8 +104549,8 @@ msgid "" "common hazards. However, they also make it a little harder to breath when " "running, so you'll move more slowly. To check encumbrance, press @." msgstr "" -"你剛剛把能夠對抗環境因素的衣物穿戴上了。最常見和最重要的就是呼吸設備了, 能夠讓你對抗煙塵、空氣中的毒素或微生物以及常見的災害。然而, " -"同時也會讓你在奔跑時稍微增加難度, 讓你速度變慢。要檢查累贅度, 按下@。" +"你剛剛把能夠對抗環境危害的衣物穿戴上了。最常見和最重要的就是呼吸設備了, 能夠讓你對抗煙塵、空氣中的毒素或微生物以及常見的災害。然而, " +"同時也會讓你在奔跑時稍微增加難度, 讓你速度變慢。按 @ 來檢查累贅程度。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103402,9 +104561,8 @@ msgid "" "to swing your melee weapon depends on both its size and weight; small, " "compact weapons are the fastest." msgstr "" -"假如你按下 'i' 並選擇你的武器, 你就能夠看到該武器的戰鬥數值。鈍擊傷害能忽略護甲保護, " -"但都受到力量屬性限制傷害的大部分能力。砍劈傷害則是固定的數值, " -"但是會被護甲影響。命中加成影響你擊中的機率。近戰武器的大小與重量則會影響揮動時耗費的時間, 小而實在的武器速度是最快的。" +"假如你按 i 並選擇你的武器, 就能夠看到該武器的戰鬥數據。鈍擊傷害能忽略大部分的護甲, 但是傷害浮動很大並且依賴力量。砍劈傷害是固定的數值, " +"但是會受護甲影響。命中加成影響你擊中的機率。近戰武器的大小與重量則會影響每次揮動武器所耗費的時間, 小巧的武器有更快的速度。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103419,8 +104577,8 @@ msgid "" "as it gets worse your stats will drop and you will move much slower. To " "reduce pain, take painkillers like codeine, or simply wait it out." msgstr "" -"受到傷害通常會造成疼痛。小數值的疼痛能夠被忍受, 但是隨著數值的增加你各種屬性受到的影響也就越大。要減少疼痛, 服用止痛藥, 類似可待因, " -"就能簡單的把疼痛降低。" +"受到傷害通常會造成疼痛。少量的疼痛能夠被忍受, 但是隨著疼痛加劇, 你的屬性將會降低並且移動的更慢。要減少疼痛, 服用止痛藥如可待因, " +"或是單純等待它消退。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103431,8 +104589,8 @@ msgid "" " pieces of meat, or none at all. Note that many monsters, such as zombies, " "leave tainted meat, unsuitable for consumption." msgstr "" -"當你殺害了怪物通常會留下屍體。屍體有時是重要的食物來源, 但是你必須先站在屍體上按下'B'來進行屠宰。你必須在物品欄中有刀刃的武器, " -"最好是小而尖銳的。一個沒技巧的屠宰可能只能得到少量的肉, 甚至完全沒有。注意, 許多的怪物, 像是殭屍, 會留下感染的肉, 這是不適合食用的。" +"當你殺害了怪物, 它通常會留下一具屍體。屍體可以是重要的食物來源, 但是你必須先站在屍體上按 B 來進行屠宰。你需要一把有刀刃的武器在物品欄中, " +"最好是小而尖銳的。一個沒技巧的屠宰可能只會得到少量的肉, 甚至完全沒有。注意, 許多的怪物, 像是殭屍, 會留下感染的肉, 這是不適合食用的。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103449,7 +104607,7 @@ msgid "" "That drug you just took placed an effect on you. To check your effects, " "press '@'. Most only last a short while, while others, like chronic " "disease, last until cured by some other means." -msgstr "你剛吃下去的藥起了作用。按下 '@' 來檢視。大部分症狀都會在短時間內治癒, 不過有少數慢性疾病會一直維持到你用其他方法治療為止。" +msgstr "你剛吃下去的藥起了作用。按 @ 來檢視。大部分症狀都會在短時間內治癒, 不過有少數慢性疾病會一直維持到你用其他方法治療為止。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103465,9 +104623,8 @@ msgid "" "depends on your strength and the object's weight and size. Throwing isn't " "very good in most combat situations, but if you've got some fire power..." msgstr "" -"你剛拉下了手榴彈的插梢! 你最好趕快投擲出去。按下 't' " -"來選取物品進行投擲。投擲的最遠距離取決於你的力量和物品的重量及大小。投擲物品的動作在大部分的戰鬥中起不了什麼太大的作用, " -"除非你丟的是手榴彈之類的東西..." +"你剛拉下了手榴彈的插梢! 你最好趕快投擲出去。按 t " +"來選取物品進行投擲。投擲的最遠距離取決於你的力量和物品的重量及大小。投擲物品的動作在大部分的戰鬥中起不了什麼太大的作用, 除非你丟的是手榴彈之類的東西…" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103495,8 +104652,7 @@ msgid "" "using the 'r' key, assuming you have the proper ammo. If you wish to unload" " your gun, possibly to change ammunition types, press 'U'." msgstr "" -"在使用槍之前, 你需要先按下 'w' 鍵來進行手持動作, 假設你有帶相對應的子彈的話使用 'r' 鍵來進行裝填子彈。你可以按下 'U' " -"鍵來卸下彈夾以換上不同的類型的子彈。" +"在使用槍之前, 你需要先按 w 來進行手持動作, 假設你有帶相對應的子彈的話按 r鍵來進行裝填子彈。你可以按 U 來卸下彈夾以換上不同的類型的子彈。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103507,9 +104663,8 @@ msgid "" " through monsters with '<' and '>'. To fire, press 'f' or '.'; to cancel, " "hit the escape key." msgstr "" -"槍上好子彈以後就可以發射了, 按下 'f' 鍵來單發射擊有許多種槍能夠按下 'F' " -"鍵來進行連發射擊。你會自動瞄準上一次射擊的目標或是離你最近的敵人。你可以按下移動鍵來切換目標或是 '<' 跟 '>' 切換不同敵人, 按下 'f' 或是" -" '.' 來射擊;按下 Esc 鍵可取消射擊。" +"當你手上有一把裝好子彈的槍, 你就可以用它開火。按 f 來進行射擊, 按 Esc 可以取消。而有些槍你能按 F " +"來切換連發射擊模式。你會自動瞄準上一次射擊的目標或是離你最近的敵人。你可以按移動鍵來改變你的目標, 或按 < 和 > 在敵人之間切換。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103526,7 +104681,7 @@ msgid "" "That yellow > next to you is a staircase leading down. To go downstairs, " "step onto the staircase and press the '>' key. Similarly, a yellow < is " "stairs leading up, and can be followed with the '<' key." -msgstr "在你身旁的黃色>符號代表向下的樓梯, 站在符號上按下 '>'即可下樓, 同理<符號代表往高一層的樓梯, 按下 '<'即可上樓。" +msgstr "在你身旁的黃色 > 符號代表向下的樓梯, 站在符號上按 > 即可下樓, 同理 < 符號代表往高一層的樓梯, 按 < 即可上樓。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103534,13 +104689,13 @@ msgid "" " only one space in any direction. You'll encounter darkness while " "underground or at night. Press '<' to go back upstairs, and look around for" " a flashlight." -msgstr "這裡一片漆黑! 少了光源你只能看到周圍一格的範圍, 只要是在地鐵或是晚上都是這樣, 按下 '<' 鍵回到樓上, 去找把手電筒吧。" +msgstr "這裡一片漆黑! 少了光源你只能看到周圍一格的範圍, 只要是在地鐵或是晚上都是這樣, 按 < 鍵回到樓上, 去找把手電筒吧。" #: lang/json/tutorial_messages_from_json.py msgid "" "It's dark down here! Fortunately, you have a flashlight. Press 'a' and " "then select your flashlight to turn it on." -msgstr "這裡一片漆黑! 不過幸好你有帶著手電筒 , 按下 'a' 鍵, 然後選擇你的手電筒來啟動它。" +msgstr "這裡一片漆黑! 不過幸好你有帶著手電筒 , 按 a 接著選擇你的手電筒來啟動它。" #: lang/json/tutorial_messages_from_json.py msgid "" @@ -103552,11 +104707,11 @@ msgstr "" #: lang/json/vehicle_from_json.py msgid "Bicycle" -msgstr "腳踏車" +msgstr "自行車" #: lang/json/vehicle_from_json.py msgid "Electric Bicycle" -msgstr "電力腳踏車" +msgstr "電力自行車" #: lang/json/vehicle_from_json.py msgid "Motorcycle" @@ -103648,7 +104803,7 @@ msgstr "電動運動型休旅車" #: lang/json/vehicle_from_json.py msgid "Electric SUV with Bike Rack" -msgstr "" +msgstr "電動運動型休旅車 (附自行車架)" #: lang/json/vehicle_from_json.py msgid "engine crane" @@ -103656,7 +104811,7 @@ msgstr "引擎起重機" #: lang/json/vehicle_from_json.py msgid "Food Vendor Cart" -msgstr "食品販售車" +msgstr "食品販售手推車" #: lang/json/vehicle_from_json.py msgid "Golf Cart" @@ -103668,11 +104823,11 @@ msgstr "手動托板車" #: lang/json/vehicle_from_json.py msgid "Ice Cream Cart" -msgstr "冰淇淋車" +msgstr "冰淇淋手推車" #: lang/json/vehicle_from_json.py msgid "Luggage Cart" -msgstr "行李車" +msgstr "行李手推車" #: lang/json/vehicle_from_json.py src/defense.cpp msgid "Shopping Cart" @@ -103684,15 +104839,15 @@ msgstr "滾輪椅" #: lang/json/vehicle_from_json.py msgid "Water Cart" -msgstr "灑水車" +msgstr "灑水手推車" #: lang/json/vehicle_from_json.py msgid "Welding Cart" -msgstr "電焊推車" +msgstr "電焊手推車" #: lang/json/vehicle_from_json.py msgid "Wheelbarrow" -msgstr "手推車" +msgstr "獨輪手推車" #: lang/json/vehicle_from_json.py msgid "Foldable wheelchair" @@ -103700,7 +104855,7 @@ msgstr "折疊式輪椅" #: lang/json/vehicle_from_json.py msgid "Laundry Cart" -msgstr "洗衣推車" +msgstr "洗衣手推車" #: lang/json/vehicle_from_json.py msgid "Hearse" @@ -103732,15 +104887,15 @@ msgstr "警察車" #: lang/json/vehicle_from_json.py msgid "Police K9 Unit" -msgstr "" +msgstr "警犬隊" #: lang/json/vehicle_from_json.py msgid "Police SUV" -msgstr "" +msgstr "警用運動休旅車" #: lang/json/vehicle_from_json.py msgid "Police K9 Transport" -msgstr "" +msgstr "警犬運輸車" #: lang/json/vehicle_from_json.py msgid "SWAT Truck" @@ -103748,7 +104903,7 @@ msgstr "SWAT 貨櫃車" #: lang/json/vehicle_from_json.py msgid "Primitive Tractor" -msgstr "" +msgstr "原始拖拉機" #: lang/json/vehicle_from_json.py msgid "Automatic Tractor" @@ -103768,15 +104923,15 @@ msgstr "播種拖拉機" #: lang/json/vehicle_from_json.py msgid "AH-64 Apache Wreckage" -msgstr "" +msgstr "AH-64 阿帕契直昇機殘骸" #: lang/json/vehicle_from_json.py msgid "V-22 Osprey Wreckage" -msgstr "" +msgstr "V-22 魚鷹傾轉旋翼機殘骸" #: lang/json/vehicle_from_json.py msgid "UH-60 Wreckage" -msgstr "" +msgstr "UH-60 黑鷹直升機殘骸" #: lang/json/vehicle_from_json.py msgid "Mechanized Infantry Carrier" @@ -103796,19 +104951,27 @@ msgstr "軍用貨車" #: lang/json/vehicle_from_json.py msgid "Engine Test" -msgstr "" +msgstr "引擎測試" #: lang/json/vehicle_from_json.py msgid "Rapid Destruction" -msgstr "" +msgstr "快速毀滅" #: lang/json/vehicle_from_json.py msgid "Cross Split" -msgstr "" +msgstr "交叉分裂" #: lang/json/vehicle_from_json.py msgid "Circle Split" -msgstr "" +msgstr "圓形分裂" + +#: lang/json/vehicle_from_json.py +msgid "Reactor test" +msgstr "反應爐測試" + +#: lang/json/vehicle_from_json.py +msgid "Solar test" +msgstr "太陽能測試" #: lang/json/vehicle_from_json.py msgid "Flatbed Truck" @@ -103832,7 +104995,7 @@ msgstr "重型載貨卡車" #: lang/json/vehicle_from_json.py msgid "Animal Control Truck" -msgstr "" +msgstr "動物控管卡車" #: lang/json/vehicle_from_json.py msgid "Automatic Street Sweeper" @@ -103856,7 +105019,7 @@ msgstr "鏟車" #: lang/json/vehicle_from_json.py msgid "Trencher" -msgstr "" +msgstr "挖溝機" #: lang/json/vehicle_from_json.py msgid "Armored Car" @@ -103912,11 +105075,11 @@ msgstr "custom_empty" #: lang/json/vehicle_from_json.py msgid "canoe" -msgstr "" +msgstr "獨木舟" #: lang/json/vehicle_from_json.py msgid "raft" -msgstr "" +msgstr "筏" #: lang/json/vehicle_from_json.py msgid "Atomic Compact" @@ -103932,11 +105095,11 @@ msgstr "原子能車" #: lang/json/vehicle_from_json.py msgid "Robotic Taxi" -msgstr "" +msgstr "機器人計程車" #: lang/json/vehicle_from_json.py msgid "Armored Robot Carrier" -msgstr "" +msgstr "裝甲機器人載體" #: lang/json/vehicle_from_json.py msgid "Atomic Mini-Tank" @@ -103985,7 +105148,7 @@ msgstr "空零件" #. ~ Description for seat #: lang/json/vehicle_part_from_json.py msgid "A place to sit, or sleep if you're desperate." -msgstr "" +msgstr "你在絕望時刻, 可以坐下或睡覺的地方。" #: lang/json/vehicle_part_from_json.py msgid "reclining seat" @@ -103995,7 +105158,7 @@ msgstr "坐臥椅" #: lang/json/vehicle_part_from_json.py msgid "" "A place to sit, and the backrest reclines to make it an uncomfortable bed." -msgstr "" +msgstr "一個可以坐下的地方, 後仰的靠背讓它變成一張睡起來不太舒服的床。" #: lang/json/vehicle_part_from_json.py msgid "tracking device" @@ -104004,12 +105167,12 @@ msgstr "追蹤裝置" #. ~ Description for tracking device #: lang/json/vehicle_part_from_json.py msgid "A small transmitter that lets you locate the vehicle on the map." -msgstr "" +msgstr "一個小型發報機, 可讓你在地圖上找到車輛位置。" #. ~ Description for saddle #: lang/json/vehicle_part_from_json.py msgid "A padded wedge that you straddle, like a bicycle or motorcycle." -msgstr "" +msgstr "你駕駛自行車或摩托車時跨騎的襯墊楔型物。" #: lang/json/vehicle_part_from_json.py msgid "foldable seat" @@ -104018,12 +105181,12 @@ msgstr "折疊式座椅" #. ~ Description for foldable seat #: lang/json/vehicle_part_from_json.py msgid "A crude seat, too uncomfortable to sleep in." -msgstr "" +msgstr "一個簡便的座位, 睡起來太難受了。" #. ~ Description for bed #: lang/json/vehicle_part_from_json.py msgid "A small but comfortable bed." -msgstr "" +msgstr "一張小但是睡起來很舒服的床鋪。" #: lang/json/vehicle_part_from_json.py msgid "handle" @@ -104102,7 +105265,7 @@ msgstr "門" #. ~ Description for wooden door #: lang/json/vehicle_part_from_json.py msgid "A door. Has a window so you can see out of it, even when closed." -msgstr "" +msgstr "一扇門。上面有窗戶, 因此即使它關閉時你也可以看到外面。" #: lang/json/vehicle_part_from_json.py msgid "opaque door" @@ -104113,21 +105276,21 @@ msgstr "不透明門" #: lang/json/vehicle_part_from_json.py msgid "" "A door. Solid construction means you can't see through it when closed." -msgstr "" +msgstr "一扇門。實心的結構意味著你在它關閉時無法看到外面。" #: lang/json/vehicle_part_from_json.py msgid "heavy duty door" -msgstr "" +msgstr "重型門" #. ~ Description for heavy duty door #: lang/json/vehicle_part_from_json.py msgid "" "A strong door. Has a window so you can see out of it, even when closed." -msgstr "" +msgstr "一扇堅固的門。上面有窗戶, 因此即使它關閉時你也可以看到外面。" #: lang/json/vehicle_part_from_json.py msgid "heavy duty opaque door" -msgstr "" +msgstr "重型不透明門" #. ~ Description for heavy duty opaque door #. ~ Description for opaque hatch @@ -104136,7 +105299,7 @@ msgstr "" msgid "" "A strong door. Solid construction means you can't see through it when " "closed." -msgstr "" +msgstr "一扇堅固的門。堅固的實心結構意味著你在它關閉時無法看到外面。" #: lang/json/vehicle_part_from_json.py msgid "internal door" @@ -104147,7 +105310,7 @@ msgstr "內部門" msgid "" "An interior door. Solid construction means you can't see through it when " "closed." -msgstr "" +msgstr "一扇內部的門。堅固的實心結構意味著你在它關閉時無法看到外面。" #: lang/json/vehicle_part_from_json.py msgid "hatch" @@ -104156,7 +105319,7 @@ msgstr "艙門" #. ~ Description for hatch #: lang/json/vehicle_part_from_json.py msgid "A strong door. A window lets you see through it when closed." -msgstr "" +msgstr "一扇堅固的門。在關閉時你能從窗戶看到外面。" #: lang/json/vehicle_part_from_json.py msgid "opaque hatch" @@ -104169,7 +105332,7 @@ msgstr "重載艙門" #. ~ Description for heavy duty hatch #: lang/json/vehicle_part_from_json.py msgid "A very strong door. A window lets you see through it when closed." -msgstr "" +msgstr "一扇非常堅固的門。在關閉時你能從窗戶看到外面。" #: lang/json/vehicle_part_from_json.py msgid "opaque heavy duty hatch" @@ -104180,7 +105343,7 @@ msgstr "不透明重載艙門" msgid "" "A very strong door. Solid construction means you can't see through it when " "closed." -msgstr "" +msgstr "一扇非常堅固的門。堅固的實心結構意味著你在它關閉時無法看到外面。" #: lang/json/vehicle_part_from_json.py msgid "windshield" @@ -104189,19 +105352,19 @@ msgstr "擋風玻璃" #. ~ Description for windshield #: lang/json/vehicle_part_from_json.py msgid "A sheet of glass that lets you see outside the vehicle." -msgstr "" +msgstr "一塊玻璃, 讓你能看到車外。" #. ~ Description for blade #: lang/json/vehicle_part_from_json.py msgid "A blade, welded to the vehicle, for cutting up zombies." -msgstr "" +msgstr "焊接在車輛上的刀片, 用來切殺殭屍。" #. ~ Description for spike #: lang/json/vehicle_part_from_json.py msgid "" "A metal spike, welded to the vehicle, to increase injury when crashing into " "things." -msgstr "" +msgstr "焊接在車輛上的金屬尖刺, 在撞到物體時會增加傷害。" #: lang/json/vehicle_part_from_json.py msgid "swappable storage battery case" @@ -104212,28 +105375,28 @@ msgstr "可更換式蓄電池殼" msgid "" "A battery case for storage batteries. Allows quick removal or addition of a" " storage battery, if you can lift the battery." -msgstr "" +msgstr "用於蓄電池的電池盒。如果您提的動電池, 就可以快速拆卸或安裝蓄電池。" #. ~ Description for military black box #: lang/json/vehicle_part_from_json.py msgid "" "An armored black box, a device meant to record and preserve data of a " "military vehicle in the field in case it'd get destroyed." -msgstr "" +msgstr "黑盒子, 用於記錄和保存野外軍用車輛數據的裝置, 配有裝甲以防被摧毀。" #. ~ Description for minireactor #: lang/json/vehicle_part_from_json.py msgid "" "A small nuclear reactor. When loaded with plutonium cells and turned on, " "will generate a lot of electrical power." -msgstr "" +msgstr "一個小型核反應堆。當裝載鈽電池並開啟時, 會產生大量的電能。" #. ~ Description for minifridge #: lang/json/vehicle_part_from_json.py msgid "" "A small fridge. When turned on, it will cool the food inside, extended the " "time until the food spoils." -msgstr "一個小型冰箱。當它啟動時, 裡面的食物將被冷藏, 延長食物腐壞所需要的時間。" +msgstr "一個小型冰箱。當它啟動時, 裡面的食物將被冷藏, 延長食物腐敗所需要的時間。" #. ~ Description for washing machine #: lang/json/vehicle_part_from_json.py @@ -104241,7 +105404,7 @@ msgid "" "A small washing machine. With detergent or soap, water, and some electrical" " power, you could clean a lot of clothes. 'e'xamine the tile with the " "washing machine to use it." -msgstr "" +msgstr "一台小型洗衣機。使用洗衣粉或肥皂, 水和一些電力, 你可以清洗很多衣服。按 e 檢查洗衣機來使用它。" #: lang/json/vehicle_part_from_json.py msgid "trunk" @@ -104269,7 +105432,7 @@ msgstr "儲物袋" #: lang/json/vehicle_part_from_json.py msgid "wire bike basket" -msgstr "自行車菜籃" +msgstr "自行車鐵絲籃" #: lang/json/vehicle_part_from_json.py msgid "shopping cart basket" @@ -104290,22 +105453,22 @@ msgstr "控制器" #. ~ Description for controls #: lang/json/vehicle_part_from_json.py msgid "A steering wheel and accelerator and brake pedals." -msgstr "" +msgstr "方向盤、加速與剎車踏板。" #. ~ Description for dashboard #: lang/json/vehicle_part_from_json.py msgid "A frame containing some lights and controls." -msgstr "" +msgstr "包含一些燈光和操控裝置的框架。" #. ~ Description for electronics control unit #: lang/json/vehicle_part_from_json.py msgid "Some switches and knobs to control the vehicle's electrical systems." -msgstr "" +msgstr "一些開關和旋鈕, 用來控制車輛的電力設備。" #. ~ Description for muffler #: lang/json/vehicle_part_from_json.py msgid "A metal pipe that reduces some of noise of the engine." -msgstr "" +msgstr "一種減少引擎噪音的金屬管。" #: lang/json/vehicle_part_from_json.py msgid "seatbelt" @@ -104314,7 +105477,7 @@ msgstr "安全帶" #. ~ Description for seatbelt #: lang/json/vehicle_part_from_json.py msgid "A belt, attached to a seat." -msgstr "" +msgstr "一條帶子, 附在座椅上。" #: lang/json/vehicle_part_from_json.py msgid "security system" @@ -104326,7 +105489,7 @@ msgid "" "A bunch of electronics that make it difficult to start the vehicle without " "the proper key, and that will sound an alarm if you try. The alarm can be " "disabled." -msgstr "" +msgstr "一堆電子設備, 讓你沒有正確的鑰匙時無法發動車輛, 如果你嘗試發動的話會發出警報。警報能被禁用。" #: lang/json/vehicle_part_from_json.py msgid "5-point harness" @@ -104337,7 +105500,7 @@ msgstr "五點式安全帶" msgid "" "A series of straps attached to the seat, intended to fasten together after " "going over your shoulders and hips and between your legs." -msgstr "" +msgstr "一組附在座椅上的帶子, 越過肩膀和臀部以及雙腿之間, 繫緊在一起。" #: lang/json/vehicle_part_from_json.py msgid "curtain" @@ -104346,7 +105509,7 @@ msgstr "布簾" #. ~ Description for curtain #: lang/json/vehicle_part_from_json.py msgid "A sheet over a window." -msgstr "" +msgstr "窗戶上的布簾。" #: lang/json/vehicle_part_from_json.py msgid "aisle curtain" @@ -104355,14 +105518,14 @@ msgstr "走道窗簾" #. ~ Description for aisle curtain #: lang/json/vehicle_part_from_json.py msgid "A sheet across an aisle." -msgstr "" +msgstr "過道上的布簾。" #. ~ Description for solar panel #: lang/json/vehicle_part_from_json.py msgid "" "A solar panel. Will slowly recharge the vehicle's electrical power when " "exposed to the sun. Clouds will slow the recharge speed even more." -msgstr "" +msgstr "太陽能板。當暴露在陽光下時, 會慢慢地為車輛充電。雲會使充電速度變慢。" #. ~ Description for reinforced solar panel #: lang/json/vehicle_part_from_json.py @@ -104370,7 +105533,7 @@ msgid "" "A solar panel. Will slowly recharge the vehicle's electrical power when " "exposed to the sun. Clouds will slow the recharge speed even more. " "Reinforced with armored glass to make it more resistant to damage." -msgstr "" +msgstr "太陽能板。當暴露在陽光下時, 會慢慢地為車輛充電。雲會使充電速度變慢。採用強化玻璃加固, 使其更能抵抗破壞。" #. ~ Description for upgraded solar panel #: lang/json/vehicle_part_from_json.py @@ -104378,7 +105541,7 @@ msgid "" "A high performance solar panel. Will slowly recharge the vehicle's " "electrical power when exposed to the sun. Clouds will slow the recharge " "speed even more." -msgstr "" +msgstr "高性能的太陽能板。當暴露在陽光下時, 會慢慢地為車輛充電。雲會使充電速度更慢。" #. ~ Description for upgraded reinforced solar panel #: lang/json/vehicle_part_from_json.py @@ -104387,7 +105550,7 @@ msgid "" "electrical power when exposed to the sun. Clouds will slow the recharge " "speed even more. Reinforced with armored glass to make it more resistant to" " damage." -msgstr "" +msgstr "高性能的太陽能板。當暴露在陽光下時, 會慢慢地為車輛充電。雲會使充電速度變慢。採用強化玻璃加固, 使其更能抵抗破壞。" #. ~ Description for quantum solar panel #: lang/json/vehicle_part_from_json.py @@ -104395,7 +105558,7 @@ msgid "" "An extremely high performance solar panel. Will recharge the vehicle's " "electrical power when exposed to the sun. Clouds will slow the recharge " "speed. Extremely fragile and cannot be armored." -msgstr "" +msgstr "極高性能的太陽能板。當暴露在陽光下時, 會慢慢地為車輛充電。雲會使充電速度更慢。極度脆弱, 且無法以裝甲來強化。" #. ~ Description for water faucet #: lang/json/vehicle_part_from_json.py @@ -104410,7 +105573,7 @@ msgstr "車載廚具" #: lang/json/vehicle_part_from_json.py msgid "" "A small but complete kitchen unit, powered from the vehicle's batteries." -msgstr "" +msgstr "一組小而完整的廚房用具, 由車輛電池供電。" #: lang/json/vehicle_part_from_json.py msgid "welding rig" @@ -104425,6 +105588,8 @@ msgid "" " item or perform a repair that requires a welder, you will be given the " "option of using the welding rig." msgstr "" +"安裝在車輛中的焊接設備, 由車輛的電池供電。你仍然需要防眩光護具才能使用。按 e " +"檢查電焊機來修理你物品欄內的物品。如果你嘗試製作物品或進行需要焊工的修理, 你將可以選擇使用它來當作焊接工具。" #. ~ Description for FOODCO kitchen buddy #: lang/json/vehicle_part_from_json.py @@ -104436,7 +105601,7 @@ msgid "" "your inventory. If you attempt craft an item that needs one of the kitchen " "buddy's functions, it will automically be selected as a tool." msgstr "" -"一個多功能的製作工作台, 配備有淨水器、食物脫水機、真空封口機和用於製作彈藥的手壓模具, 使用車輛電池的電力。按 'e' " +"一個多功能的製作工作台, 配備有淨水器、食物脫水機、真空封口機和用於製作彈藥的手壓模具, 使用車輛電池的電力。按 e " "檢視福口廚房好友的格子以便使用水龍頭, 或是淨化車輛水箱與物品欄中的容器裡的水。如果您嘗試製作的物品需要用到福口廚房好友的其中一個功能, " "它將被自動選中作為工具使用。" @@ -104449,6 +105614,8 @@ msgid "" "that needs one of the chemistry lab's functions, it will automically be " "selected as a tool." msgstr "" +"一個小型化學工作站, 包括由車輛電池供電的電熱板。按 e 檢查化學實驗室來使用水龍頭或用電熱板加熱食物。如果你嘗試製作需要化學實驗室功能的物品, " +"將會自動選擇它作為工具。" #: lang/json/vehicle_part_from_json.py msgid "mounted electric forge" @@ -104462,10 +105629,11 @@ msgid "" "attempt craft an item that needs a forge, you will be given the option of " "selecting it as a tool." msgstr "" +"用於金屬加工的電力鍛造裝置, 由車輛電池供電。使用錘子和其他工具, 你可以用它來做金屬加工。如果你嘗試製作需要鍛造的物品, 你可以選擇將其作為工具。" #: lang/json/vehicle_part_from_json.py msgid "mounted electric kiln" -msgstr "" +msgstr "車載電窯" #. ~ Description for mounted electric kiln #: lang/json/vehicle_part_from_json.py @@ -104474,7 +105642,7 @@ msgid "" "batteries. You could use this to harden bricks or clay. If you attempt " "craft an item that needs a kiln, you will be given the option of selecting " "it as a tool." -msgstr "" +msgstr "用於燒製磚塊或陶器的電窯, 由車輛電池供電。你可以用它來硬化磚塊或粘土。如果你嘗試製作需要窯的物品, 你將可以選擇將其作為工具。" #: lang/json/vehicle_part_from_json.py msgid "wooden armor" @@ -104485,7 +105653,7 @@ msgstr "木製裝甲板" msgid "" "A spiked plate that will increase the damage delivered to someone else in " "collisions." -msgstr "" +msgstr "尖刺裝甲板會增加碰撞中傳遞給其他人的傷害。" #: lang/json/vehicle_part_from_json.py msgid "military composite armor plating" @@ -104500,34 +105668,34 @@ msgstr "強化擋風玻璃" msgid "" "A sheet of glass that lets you see outside the vehicle. Reinforced with " "wire to make it harder to break than normal glass." -msgstr "" +msgstr "一塊玻璃, 讓你能看到車外。用鐵絲強化, 使其比普通玻璃更難破碎。" #. ~ Description for bicycle horn #: lang/json/vehicle_part_from_json.py msgid "" "A small horn. Use the vehicle controls and select the honk option to make " "noise." -msgstr "" +msgstr "一個小喇叭。使用車輛控制器並選擇鳴喇叭選項以產生噪音。" #. ~ Description for car horn #: lang/json/vehicle_part_from_json.py msgid "" "A horn. Use the vehicle controls and select the honk option to make noise." -msgstr "" +msgstr "一個喇叭。使用車輛控制器並選擇鳴喇叭選項以產生噪音。" #. ~ Description for truck horn #: lang/json/vehicle_part_from_json.py msgid "" "A powerful truck horn. Use the vehicle controls and select the honk option " "to make noise." -msgstr "" +msgstr "一個強力的卡車喇叭。使用車輛控制器並選擇鳴喇叭選項以產生噪音。" #. ~ Description for back-up beeper #: lang/json/vehicle_part_from_json.py msgid "" "An electronic noise maker. It will automatically make noise when you drive " "in reverse, alerting things behind you to move out of the way." -msgstr "" +msgstr "電子噪音產生器。當你倒車時會自動發出噪音, 提醒你身後的東西走開。" #: lang/json/vehicle_part_from_json.py msgid "trunk door" @@ -104536,20 +105704,20 @@ msgstr "行李箱門" #. ~ Description for trunk door #: lang/json/vehicle_part_from_json.py msgid "A short door. You can always see over it, open or closed." -msgstr "" +msgstr "一扇矮門。你可以看向外面, 無論是開著或關著。" #: lang/json/vehicle_part_from_json.py msgid "heavy duty trunk door" -msgstr "" +msgstr "重型行李箱門" #. ~ Description for heavy duty trunk door #: lang/json/vehicle_part_from_json.py msgid "A strong, short door. You can always see over it, open or closed." -msgstr "" +msgstr "一扇堅固的矮門。你可以看向外面, 無論是開著或關著。" #: lang/json/vehicle_part_from_json.py msgid "shutter door" -msgstr "卷簾門" +msgstr "百葉門" #: lang/json/vehicle_part_from_json.py msgid "sliding door" @@ -104558,7 +105726,7 @@ msgstr "滑門" #. ~ Description for sliding door #: lang/json/vehicle_part_from_json.py msgid "A door. A window lets you see through it when closed." -msgstr "" +msgstr "一扇門。在關閉時你能從窗戶看到外面。" #: lang/json/vehicle_part_from_json.py msgid "cargo space" @@ -104566,7 +105734,7 @@ msgstr "載貨空間" #: lang/json/vehicle_part_from_json.py msgid "livestock stall" -msgstr "" +msgstr "牲畜棚舍" #. ~ Description for livestock stall #: lang/json/vehicle_part_from_json.py @@ -104575,10 +105743,11 @@ msgid "" "next to you, or to release the animal currently contained. When selecting " "an animal to capture, choose its tile relative to you, not the part." msgstr "" +"用於運送牲畜的貨物空間。按 e 檢查它來捕捉你旁邊的動物, 或釋放正關在裡面的動物。選擇要捕捉的動物時, 選在你旁邊的動物而不是在棚舍旁邊的。" #: lang/json/vehicle_part_from_json.py msgid "animal compartment" -msgstr "" +msgstr "動物艙" #. ~ Description for animal compartment #: lang/json/vehicle_part_from_json.py @@ -104588,13 +105757,14 @@ msgid "" "selecting an animal to capture, choose its tile relative to you, not the " "part." msgstr "" +"用於運載小型動物的大車艙。按 e 檢查它來捕捉你旁邊的動物, 或釋放正關在裡面的動物。選擇要捕捉的動物時, 選在你旁邊的動物而不是在車艙旁邊的。" #. ~ Description for UPS-compatible recharging station #: lang/json/vehicle_part_from_json.py msgid "" "A recharger for UPS devices. When turned on, it charges any UPS devices in " "the cargo space." -msgstr "" +msgstr "UPS 設備的充電器。啟動後, 它會為所在車艙內的任何 UPS 設備充電。" #: lang/json/vehicle_part_from_json.py msgid "wing mirror" @@ -104605,7 +105775,7 @@ msgstr "後視鏡" msgid "" "A small mirror, mounted outside the vehicle. If you see the mirror, your " "vision is expanded as though you were standing where the mirror is." -msgstr "" +msgstr "一個安裝在車外的小鏡子。如果你看到鏡子, 你的視野就像你站在鏡子所在的地方一樣。" #: lang/json/vehicle_part_from_json.py msgid "inboard mirror" @@ -104616,12 +105786,12 @@ msgstr "車內後視鏡" msgid "" "A small mirror, mounted inside the vehicle. If you see the mirror, your " "vision is expanded as though you were standing where the mirror is." -msgstr "" +msgstr "一個安裝在車內的小鏡子。如果你看到鏡子, 你的視野就像你站在鏡子所在的地方一樣。" #. ~ Description for stereo system #: lang/json/vehicle_part_from_json.py msgid "A stereo system. When turned on, it plays music, improving your mood." -msgstr "" +msgstr "立體音響系統。打開時, 它會播放音樂, 可改善你的心情。" #: lang/json/vehicle_part_from_json.py src/vehicle_use.cpp msgid "chimes" @@ -104632,7 +105802,7 @@ msgstr "音樂鈴" msgid "" "A collection of electronic bells. Use the vehicle's controls to turn it on " "or off. When turned on, it makes noise, attracting neighborhood children." -msgstr "" +msgstr "一組電子鈴鐺。使用車輛的控制裝置來開啟或關閉它。當開啟時, 它會發出噪音, 吸引鄰近的孩子們。" #. ~ Description for jumper cable #: lang/json/vehicle_part_from_json.py @@ -104640,7 +105810,7 @@ msgid "" "Thick copper cable with leads on either end. Attach one end to one vehicle " "and the other to another, and you can transfer electrical power between the " "two." -msgstr "" +msgstr "粗銅電纜, 兩端帶引線。將一端連接到車輛而另一端連接到另一台車輛, 就可以在兩車之間傳輸電力。" #. ~ Description for heavy-duty cable #: lang/json/vehicle_part_from_json.py @@ -104648,7 +105818,7 @@ msgid "" "Very thick copper cable with leads on either end. Attach one end to one " "vehicle and the other to another, and you can transfer electrical power " "between the two." -msgstr "" +msgstr "非常粗的銅電纜, 兩端帶引線。將一端連接到車輛而另一端連接到另一台車輛, 就可以在兩車之間傳輸電力。" #: lang/json/vehicle_part_from_json.py msgid "wooden seat" @@ -104657,7 +105827,7 @@ msgstr "木座椅" #. ~ Description for wooden seat #: lang/json/vehicle_part_from_json.py msgid "A place to sit." -msgstr "" +msgstr "可以坐下的地方。" #: lang/json/vehicle_part_from_json.py msgid "wooden spike" @@ -104668,7 +105838,7 @@ msgstr "木尖刺" msgid "" "A wooden spike, attached to the vehicle, to increase injury when crashing " "into things." -msgstr "" +msgstr "連接在車輛上的木尖刺, 在撞到物體時會增加傷害。" #: lang/json/vehicle_part_from_json.py msgid "wooden door" @@ -104685,7 +105855,7 @@ msgstr "木頂蓋" #. ~ Description for wooden roof #: lang/json/vehicle_part_from_json.py msgid "A wooden roof." -msgstr "" +msgstr "木質的頂蓋。" #: lang/json/vehicle_part_from_json.py msgid "chitin plating" @@ -104709,7 +105879,7 @@ msgid "" "A small electric motor. Installed on the same frame as a door or curtain, " "it will allow you to remotely open the door or curtain from the vehicle " "controls." -msgstr "" +msgstr "小型電動馬達。安裝在與門或窗簾相同的框架上, 可以讓你從車輛控制裝置遙控開關門或窗簾。" #. ~ Description for drive by wire controls #: lang/json/vehicle_part_from_json.py @@ -104926,7 +106096,7 @@ msgstr "" #: lang/json/vehicle_part_from_json.py msgid "stow board" -msgstr "摺疊滑板" +msgstr "折疊滑板" #. ~ Description for stow board #: lang/json/vehicle_part_from_json.py @@ -104996,7 +106166,7 @@ msgstr "" #: lang/json/vehicle_part_from_json.py msgid "external shopping cart basket" -msgstr "" +msgstr "外置購物車籃" #. ~ Description for external shopping cart basket #. ~ Description for external wire bike basket @@ -105009,11 +106179,11 @@ msgstr "" #: lang/json/vehicle_part_from_json.py msgid "external wire bike basket" -msgstr "" +msgstr "外置自行車鐵絲籃" #: lang/json/vehicle_part_from_json.py msgid "external cargo rack" -msgstr "" +msgstr "外置載貨架" #. ~ Description for bike rack #: lang/json/vehicle_part_from_json.py @@ -105024,6 +106194,8 @@ msgid "" " any bike rack to mount that vehicle onto the bike rack. 'e'xamine the bike" " rack to unmount the carried vehicle." msgstr "" +"一套鋼管與框架, 用來掛上自行車或其他小型車輛並將其攜帶在您的車輛上。移動車輛 (僅限單一格子大小的車輛) 到自行車架旁邊, 然後按 e " +"查看自行車架來掛上車輛。按 e 檢查自行車架來卸下攜帶的車輛。" #: lang/json/vehicle_part_from_json.py msgid "A combustion engine. Burns fuel from a tank in the vehicle." @@ -105061,7 +106233,7 @@ msgstr "" #: lang/json/vehicle_part_from_json.py msgid "internal boom crane" -msgstr "" +msgstr "內部吊臂起重機" #: lang/json/vehicle_part_from_json.py msgid "telescopic crane" @@ -105118,7 +106290,7 @@ msgstr "" #: lang/json/vehicle_part_from_json.py msgid "foldable light frame" -msgstr "折疊輕型框架" +msgstr "折疊式輕型框架" #. ~ Description for foldable light frame #: lang/json/vehicle_part_from_json.py @@ -105304,11 +106476,11 @@ msgstr "木保險桿" #: lang/json/vehicle_part_from_json.py msgid "chitin ram" -msgstr "" +msgstr "甲殼保險桿" #: lang/json/vehicle_part_from_json.py msgid "biosilicfied chitin ram" -msgstr "" +msgstr "生物矽化甲殼保險桿" #. ~ Description for shredder #: lang/json/vehicle_part_from_json.py @@ -105477,18 +106649,18 @@ msgstr "" #: lang/json/vehicle_part_from_json.py msgid "bicycle wheel (steerable)" -msgstr "單車輪胎 (轉向輪)" +msgstr "自行車輪胎 (轉向輪)" #: lang/json/vehicle_part_from_json.py msgid "casters" -msgstr "滑輪" +msgstr "腳輪" #. ~ Description for casters #: lang/json/vehicle_part_from_json.py msgid "" "A set of small wheels, mounted on pivots, like the ones on a rolling office " "chair or grocery cart." -msgstr "" +msgstr "一組小型輪子, 安裝在樞軸上, 就像輪式辦公椅或購物車上的那些輪子一樣。" #. ~ Description for motorbike wheel #: lang/json/vehicle_part_from_json.py @@ -105505,7 +106677,7 @@ msgstr "小輪胎 (轉向輪)" #: lang/json/vehicle_part_from_json.py msgid "unicycle wheel" -msgstr "單車輪" +msgstr "單輪車輪胎" #: lang/json/vehicle_part_from_json.py msgid "wheelchair wheel" @@ -105541,7 +106713,7 @@ msgstr "折疊式超輕側擋板" #: lang/json/vehicle_part_from_json.py msgid "foldable door" -msgstr "摺疊門" +msgstr "折疊式門" #: lang/json/vehicle_part_from_json.py msgid "superalloy coating" @@ -106439,7 +107611,7 @@ msgstr "" #: lang/json/vehicle_part_from_json.py msgid "gel tank (60L)" -msgstr "" +msgstr "凝膠罐 (60 公升)" #: lang/json/vehicle_part_from_json.py msgid "gel framework" @@ -106591,11 +107763,11 @@ msgstr "灰質安全帶" #: lang/json/vehicle_part_from_json.py msgid "cocoon (30L)" -msgstr "" +msgstr "灰質繭 (30 公升)" #: lang/json/vehicle_part_from_json.py msgid "gray tank (100L)" -msgstr "" +msgstr "灰質大桶 (100公升)" #: lang/json/vehicle_part_from_json.py msgid "gray frame" @@ -106680,7 +107852,7 @@ msgstr "莢 (20 公升)" #: lang/json/vehicle_part_from_json.py msgid "ooze tank (80L)" -msgstr "" +msgstr "黏液罐 (80 公升)" #: lang/json/vehicle_part_from_json.py msgid "ooze chassis" @@ -106733,7 +107905,7 @@ msgstr "" #: lang/json/vehicle_part_from_json.py msgid "inert core" -msgstr "" +msgstr "惰性核心" #. ~ Description for inert core #: lang/json/vehicle_part_from_json.py @@ -107097,7 +108269,7 @@ msgstr "按 " #: src/action.cpp src/input.cpp msgid "Try" -msgstr "嘗試" +msgstr "未設定" #: src/action.cpp msgid "Look" @@ -107182,90 +108354,98 @@ msgstr "你完成挖洞了。" msgid "You discover a %s!" msgstr "你發現了一個 %s!" +#: src/activity_handlers.cpp +msgid "None of your cutting tools are suitable for butchering." +msgstr "你的切割工具都不適合用來屠宰。" + #: src/activity_handlers.cpp msgid "You don't trust the quality of your tools, but carry on anyway." msgstr "你不相信你的工具的品質, 但無論如何只能繼續。" #: src/activity_handlers.cpp msgid "None of your tools are sharp and precise enough to do that." -msgstr "" +msgstr "你並沒有足夠銳利和精細到能勝任此事的工具。" #: src/activity_handlers.cpp msgid "You could use a better tool, but this will do." -msgstr "" +msgstr "你可以使用更好的工具, 不過用這個也行。" #: src/activity_handlers.cpp msgid "This tool is great, but you still would like a scalpel." -msgstr "" +msgstr "這個工具很棒, 但你仍然想要一把手術刀。" #: src/activity_handlers.cpp msgid "You dissect the corpse with a trusty scalpel." -msgstr "" +msgstr "你用一把可靠的手術刀解剖屍體。" #: src/activity_handlers.cpp msgid "" "You need to suspend this corpse to butcher it, you have a rope to lift the " "corpse but there is no tree nearby." -msgstr "" +msgstr "你需要懸掛這個屍體來屠宰它, 你有繩索可以抬起屍體, 但附近沒有樹。" #: src/activity_handlers.cpp msgid "" "For a corpse this big you need a rope and a nearby tree or a butchering rack" " to perform a full butchery." -msgstr "" +msgstr "對於一個這麼大的屍體, 你需要繩索和一棵鄰近的樹或一個屠宰架來進行完整的屠宰。" #: src/activity_handlers.cpp msgid "" "For a corpse this big you need a table nearby or something else with a flat " "surface to perform a full butchery." -msgstr "" +msgstr "對於一個這麼大的屍體, 你需要鄰近桌子或其他平坦表面的東西來進行完整的屠宰。" #: src/activity_handlers.cpp msgid "You need a cutting tool to perform a full butchery." -msgstr "" +msgstr "您需要切割工具來執行完整的屠宰。" #: src/activity_handlers.cpp msgid "For a corpse this big you need a saw to perform a full butchery." -msgstr "" +msgstr "對於一個這麼大的屍體, 你需要一把鋸子來進行完整的屠宰。" #: src/activity_handlers.cpp msgid "" "It would be futile to search for implants inside this badly damaged corpse." -msgstr "" +msgstr "在這個嚴重受損的屍體中尋找生化插件是徒勞的。" #: src/activity_handlers.cpp msgid "This corpse is already field dressed." -msgstr "" +msgstr "這具屍體已經去除臟器了。" #: src/activity_handlers.cpp msgid "This corpse is too small to quarter without damaging." -msgstr "" +msgstr "這個屍體太小了, 無法切成四塊。" #: src/activity_handlers.cpp msgid "This is already quartered." -msgstr "" +msgstr "這已是四等份了。" #: src/activity_handlers.cpp msgid "You need to perform field dressing before quartering." -msgstr "" +msgstr "你須在四等分前先進行去除臟器。" + +#: src/activity_handlers.cpp +msgid "Would you dare desecrate the mortal remains of a fellow human being?" +msgstr "你膽敢褻瀆一個人類的遺體嗎?" #: src/activity_handlers.cpp msgid "You clench your teeth at the prospect of this gruesome job." -msgstr "" +msgstr "你對這項令人毛骨悚然的工作感到十分緊張。" #: src/activity_handlers.cpp msgid "This will haunt you in your dreams." -msgstr "" +msgstr "這將在你夢境中不斷地糾纏著你。" #: src/activity_handlers.cpp msgid "" "You try to look away, but this gruesome image will stay on your mind for " "some time." -msgstr "" +msgstr "你試著把目光移開, 但這個令人毛骨悚然的形象會留在你的腦海中一段時間。" #: src/activity_handlers.cpp msgid "It needs a coffin, not a knife." -msgstr "" +msgstr "它需要一副棺材, 而不是一把刀。" #: src/activity_handlers.cpp msgid "You harvest some fluid bladders!" @@ -107320,24 +108500,24 @@ msgstr "你割取了一些脂肪!" msgid "" "You suspect there might be bionics implanted in this corpse, that careful " "dissection might reveal." -msgstr "" +msgstr "你懷疑這具屍體中可能會植入生化插件, 仔細的解剖可能會發現。" #: src/activity_handlers.cpp msgid "" "Your butchering tool encounters something implanted in this corpse, but your" " rough cuts destroy it." -msgstr "" +msgstr "你的屠宰工具碰到了植入這具屍體內的東西, 但是你粗魯地切割已破壞了它。" #: src/activity_handlers.cpp msgid "" "You find traces of implants in the body, but you care only for the flesh." -msgstr "" +msgstr "你在屍體內發現植入物的痕跡, 但你只關心著鮮肉。" #: src/activity_handlers.cpp msgid "" "You found some bionics in the body, but harvesting them would require more " "surgical approach." -msgstr "" +msgstr "你在屍體內發現了一些生化插件, 但要取得它們需要進行更多的外科手術。" #: src/activity_handlers.cpp msgid "Your clumsy butchering destroys the flesh!" @@ -107360,7 +108540,7 @@ msgstr "你採集了: %s" #: src/activity_handlers.cpp #, c-format msgid "You roughly slice the corpse of %s into four parts and set them aside." -msgstr "" +msgstr "你粗略地將 %s 的屍體切成四等份並將它們放在一邊。" #: src/activity_handlers.cpp msgid "There's no corpse to butcher!" @@ -107370,19 +108550,19 @@ msgstr "沒有可供屠宰的屍體!" msgid "" "You hack up the corpse so unskillfully, that there is nothing left to " "salvage from this bloody mess." -msgstr "" +msgstr "你如此不熟練地砍了屍體, 沒有任何東西可以從這血腥的混亂中拯救出來。" #: src/activity_handlers.cpp msgid "" "You wanted to cut the corpse, but instead you hacked the meat, spilled the " "guts all over it, and made a bloody mess." -msgstr "" +msgstr "你想要切割屍體, 但是你粗暴地砍肉, 把它的內臟全灑了出來, 並造成了一場血腥的混亂。" #: src/activity_handlers.cpp msgid "" "You made so many mistakes during the process that you doubt even vultures " "will be interested in what's left of it." -msgstr "" +msgstr "你在處理過程中犯了這麼多錯誤, 你甚至覺得禿鷹不會對剩下的東西感興趣。" #. ~ %1$s - item name, %2$s - monster name #: src/activity_handlers.cpp @@ -107395,7 +108575,7 @@ msgstr "你發現了 %1$s 在 %2$s 裡!" msgid "" "You apply few quick cuts to the %s and leave what's left of it for " "scavengers." -msgstr "" +msgstr "你快速切割了 %s, 並留下殘存物給的食腐動物們。" #: src/activity_handlers.cpp #, c-format @@ -107404,41 +108584,41 @@ msgstr "你屠宰了 %s。" #: src/activity_handlers.cpp msgid "" -"You unskillfully hack up the corpse and chop off some excess body parts. " +"You unskillfully hack up the corpse and chop off some excess body parts. " "You're left wondering how you did so poorly." -msgstr "" +msgstr "你不熟練地砍劈屍體並多切掉一些身體的部位。你搞不懂你怎麼會做得這麼糟糕。" #: src/activity_handlers.cpp msgid "" -"Your unskilled hands slip and damage the corpse. You still hope it's not a " +"Your unskilled hands slip and damage the corpse. You still hope it's not a " "total waste though." -msgstr "" +msgstr "你不熟練的雙手失手並損壞了屍體。即便如此你仍希望它沒完全浪費掉。" #: src/activity_handlers.cpp msgid "" -"You did something wrong and hacked the corpse badly. Maybe it's still " +"You did something wrong and hacked the corpse badly. Maybe it's still " "recoverable." -msgstr "" +msgstr "你做錯了什麼, 且嚴重破壞了屍體, 也許它仍然可以恢復。" #: src/activity_handlers.cpp #, c-format msgid "You field dress the %s." -msgstr "" +msgstr "你去除了 %s 的臟器。" #: src/activity_handlers.cpp msgid "" "You slice the corpse's belly and remove intestines and organs, until you're " "confident that it will not rot from inside." -msgstr "" +msgstr "你切開屍體的腹部, 去除腸子和臟器, 直到你確信它不會從內部腐爛。" #: src/activity_handlers.cpp msgid "You remove guts and excess parts, preparing the corpse for later use." -msgstr "" +msgstr "你移除了內臟和多餘的部分, 準備好屍體供以後使用。" #: src/activity_handlers.cpp #, c-format msgid "You finish dissecting the %s." -msgstr "" +msgstr "你完成了解剖 %s。" #: src/activity_handlers.cpp #, c-format @@ -107453,7 +108633,7 @@ msgstr "%s 隨著機械的空響聲就停止運作了。" #: src/activity_handlers.cpp src/iexamine.cpp #, c-format msgid "You squeeze the last drops of %s from the vat." -msgstr "你從桶子擠出了最後一滴的 %s 。" +msgstr "你從桶子擠出了最後一滴的 %s。" #: src/activity_handlers.cpp src/game.cpp #, c-format @@ -107550,7 +108730,7 @@ msgstr[0] " 把屍體打爛了。" #: src/activity_handlers.cpp #, c-format msgid "Can't reload the %s." -msgstr "無法裝填 %s." +msgstr "無法裝填 %s。" #: src/activity_handlers.cpp src/iexamine.cpp #, c-format @@ -107565,20 +108745,20 @@ msgstr "你把弩箭裝入了 %s。" #: src/activity_handlers.cpp #, c-format msgid "You insert a cartridge into the %s." -msgstr "你把彈藥裝入了 %s." +msgstr "你把彈藥裝入了 %s。" #: src/activity_handlers.cpp #, c-format msgid "You refill the %s." -msgstr "你裝填了 %s 。" +msgstr "你裝填了 %s。" #: src/activity_handlers.cpp msgid "You have lost the item you were using to start the fire." msgstr "你失去了你用來生火的這項道具。" #: src/activity_handlers.cpp -msgid "There is not enough sunlight to start a fire now. You stop trying." -msgstr "這裡沒有足夠的陽光來聚焦點火。你停止嘗試。" +msgid "There is not enough sunlight to start a fire now. You stop trying." +msgstr "現在沒有足夠的陽光來聚焦生火了。你停止嘗試。" #: src/activity_handlers.cpp #, c-format @@ -107609,13 +108789,13 @@ msgstr "你學習 %s。" #, c-format msgctxt "memorial_male" msgid "Learned %s." -msgstr "習得 %s。" +msgstr "學會了 %s。" #: src/activity_handlers.cpp #, c-format msgctxt "memorial_female" msgid "Learned %s." -msgstr "習得 %s。" +msgstr "學會了 %s。" #: src/activity_handlers.cpp msgid "You have trouble breathing, and stop." @@ -107723,7 +108903,7 @@ msgstr "你安裝 %s 失敗了。" #: src/activity_handlers.cpp #, c-format msgid "You clear up the %s." -msgstr "" +msgstr "你清理了 %s。" #: src/activity_handlers.cpp msgid "You pause to engage in spiritual contemplation." @@ -107740,15 +108920,15 @@ msgstr "你結束等待了。" #: src/activity_handlers.cpp #, c-format msgid "%s finishes with you..." -msgstr "%s 與你一同完成..." +msgstr "%s 與你一同完成…" #: src/activity_handlers.cpp msgid "You toss and turn..." -msgstr "" +msgstr "你輾轉反側…" #: src/activity_handlers.cpp src/player_hardcoded_effects.cpp msgid "You try to sleep, but can't..." -msgstr "你試著睡覺, 但睡不著..." +msgstr "你試著睡覺, 但睡不著…" #: src/activity_handlers.cpp msgid "You can no longer see well enough to keep crafting." @@ -107756,11 +108936,11 @@ msgstr "你看得不夠清楚而無法繼續製作物品。" #: src/activity_handlers.cpp msgid "You are too frustrated to continue and just give up." -msgstr "" +msgstr "你太沮喪了, 以致於不能繼續, 只好放棄了。" #: src/activity_handlers.cpp msgid "You can't focus and are working slowly." -msgstr "" +msgstr "你不能集中注意力並且緩慢地進行作業。" #: src/activity_handlers.cpp msgid "You feel much better." @@ -107778,7 +108958,7 @@ msgstr "你完成裁切金屬。" #. ~ Sound of a wood chopping tool at work! #: src/activity_handlers.cpp msgid "CHK!" -msgstr "" +msgstr "叮叮!" #: src/activity_handlers.cpp msgid "Select a direction for the tree to fall in." @@ -107790,7 +108970,7 @@ msgstr "你把樹砍倒了。" #: src/activity_handlers.cpp msgid "You finish chopping wood." -msgstr "" +msgstr "你完成劈砍木材。" #. ~ Sound of a jackhammer at work! #: src/activity_handlers.cpp @@ -107805,17 +108985,17 @@ msgstr "你完成鑽孔。" #. ~ Sound of a shovel filling a pit or mound at work! #: src/activity_handlers.cpp msgid "hsh!" -msgstr "" +msgstr "hsh!" #: src/activity_handlers.cpp #, c-format msgid "You finish digging up %s." -msgstr "" +msgstr "你完成了挖掘 %s。" #: src/activity_handlers.cpp #, c-format msgid "You finish filling up %s." -msgstr "" +msgstr "你完成了填蓋 %s。" #: src/activity_handlers.cpp msgid "You open up your kit and shave." @@ -107823,7 +109003,7 @@ msgstr "你打開了工具包開始刮鬍子。" #: src/activity_handlers.cpp msgid "You give your hair a trim." -msgstr "你修剪你的頭髮." +msgstr "你修剪你的頭髮。" #: src/activity_handlers.cpp src/iuse.cpp src/mutation.cpp msgid "You churn up the earth here." @@ -107831,11 +109011,11 @@ msgstr "你翻動這裡的土壤。" #: src/activity_handlers.cpp msgid "You tilled every tile you could." -msgstr "" +msgstr "你盡可能整地了每一塊格子。" #: src/activity_handlers.cpp msgid "You planted all seeds you could." -msgstr "" +msgstr "你盡可能種植了所有種子。" #: src/activity_item_handling.cpp #, c-format @@ -107847,7 +109027,7 @@ msgstr[0] "你把你的 %1$s 放到 %2$s 的 %3$s。" #, c-format msgid " puts their %1$s in the %2$s's %3$s." msgid_plural " puts their %1$s in the %2$s's %3$s." -msgstr[0] "" +msgstr[0] " 把他們的 %1$s 放到 %2$s 的 %3$s。" #: src/activity_item_handling.cpp #, c-format @@ -107857,7 +109037,7 @@ msgid "" msgid_plural "" "There's no room in your inventory for the %s, so you drop them into the %s's" " %s." -msgstr[0] "你的物品欄沒有空間容納 %s, 所以你把它丟到了 %s 的 %s。" +msgstr[0] "你的物品欄沒有空間來容納 %s, 所以你把它丟到了 %s 的 %s。" #: src/activity_item_handling.cpp #, c-format @@ -107870,7 +109050,7 @@ msgstr[0] "%s 太重了, 所以你把它丟到了 %s 的 %s。" #, c-format msgid "Your %s tumbles into the %s's %s." msgid_plural "Your %s tumble into the %s's %s." -msgstr[0] "" +msgstr[0] "你的 %s 滾落進了 %s 的 %s。" #: src/activity_item_handling.cpp #, c-format @@ -107880,24 +109060,24 @@ msgstr "你把一些物品放到 %1$s 的 %2$s 。" #: src/activity_item_handling.cpp #, c-format msgid " puts several items in the %1$s's %2$s." -msgstr "" +msgstr " 把一些物品放到 %1$s 的 %2$s 。" #: src/activity_item_handling.cpp #, c-format msgid "Some items tumble into the %1$s's %2$s." -msgstr "" +msgstr "一些物品滾落進了 %1$s 的 %2$s。" #: src/activity_item_handling.cpp #, c-format msgid "The %s is full, so something fell to the %s." msgid_plural "The %s is full, so some items fell to the %s." -msgstr[0] "" +msgstr[0] "%s 滿了, 因此一些物品掉到 %s 。" #: src/activity_item_handling.cpp #, c-format msgid "The %s is full, so it fell to the %s." msgid_plural "The %s is full, so they fell to the %s." -msgstr[0] "" +msgstr[0] "%s 滿了, 因此他們掉到 %s 。" #: src/activity_item_handling.cpp #, c-format @@ -107919,7 +109099,7 @@ msgstr[0] "你把你的 %1$s 放到 %2$s 上。" #, c-format msgid " drops their %1$s on the %2$s." msgid_plural " drops their %1$s on the %2$s." -msgstr[0] "" +msgstr[0] " 丟下他們的 %1$s 在 %2$s 上。" #: src/activity_item_handling.cpp #, c-format @@ -107931,13 +109111,13 @@ msgstr[0] "你把你的 %1$s 放到 %2$s 裡。" #, c-format msgid " puts their %1$s in the %2$s." msgid_plural " puts their %1$s in the %2$s." -msgstr[0] "" +msgstr[0] " 把他們的 %1$s 放入 %2$s 。" #: src/activity_item_handling.cpp #, c-format msgid "There's no room in your inventory for the %s, so you drop it." msgid_plural "There's no room in your inventory for the %s, so you drop them." -msgstr[0] "你的物品欄沒有空間容納 %s, 所以你把它丟到了地上。" +msgstr[0] "你的物品欄沒有空間來容納 %s, 所以你把它丟到了地上。" #: src/activity_item_handling.cpp #, c-format @@ -107949,7 +109129,7 @@ msgstr[0] "%s 太重了, 所以你把它丟到了地上。" #, c-format msgid "Your %1$s tumbles to the %2$s." msgid_plural "Your %1$s tumble to the %2$s." -msgstr[0] "" +msgstr[0] "你的 %1$s 滾落到 %2$s。" #: src/activity_item_handling.cpp #, c-format @@ -107964,31 +109144,31 @@ msgstr " 把數個物品放到 %s 上。" #: src/activity_item_handling.cpp #, c-format msgid "You put several items in the %s." -msgstr "你把數個物品放入 %s 。" +msgstr "你把數個物品放入 %s。" #: src/activity_item_handling.cpp #, c-format msgid " puts several items in the %s." -msgstr "" +msgstr " 把一些物品放入 %s。" #: src/activity_item_handling.cpp #, c-format msgid "Some items tumble to the %s." -msgstr "" +msgstr "一些物品滾落到 %s。" #: src/activity_item_handling.cpp src/iuse.cpp #, c-format msgid "You need %1$i charges of water or clean water to wash these items." -msgstr "" +msgstr "你需要 %1$i 單位的水或淨水才能清洗這些物品。" #: src/activity_item_handling.cpp src/iuse.cpp #, c-format msgid "You need %1$i charges of cleansing agent to wash these items." -msgstr "" +msgstr "你需要 %1$i 單位的清潔劑才能清洗這些物品。" #: src/activity_item_handling.cpp msgid "You washed your clothing." -msgstr "你清洗了你的衣服。" +msgstr "你清洗了你的衣物。" #: src/activity_item_handling.cpp msgid "The pet has moved somewhere else." @@ -107996,11 +109176,11 @@ msgstr "寵物移動到別處了。" #: src/activity_item_handling.cpp msgid "You can't reach the source tile. Try to sort out loot without a cart." -msgstr "" +msgstr "你無法拿到物品。請試著不使用購物車來整理物品。" #: src/activity_item_handling.cpp msgid "You sorted out every item you could." -msgstr "" +msgstr "你盡可能整理了每一件物品。" #: src/addiction.cpp msgid "You need some nicotine." @@ -108016,7 +109196,7 @@ msgstr "你想要攝取咖啡因。" #: src/addiction.cpp msgid "Your hands start shaking... you need it bad!" -msgstr "你的手掌開始顫抖... 你非常的想要咖啡因!" +msgstr "你的手掌開始顫抖… 你非常的想要咖啡因!" #: src/addiction.cpp msgid "You could use a drink. " @@ -108024,7 +109204,7 @@ msgstr "你想喝點酒。" #: src/addiction.cpp msgid "Your hands start shaking... you need a drink bad!" -msgstr "你的手掌開始顫抖... 你很想喝酒!" +msgstr "你的手掌開始顫抖… 你非常需要喝一杯!" #: src/addiction.cpp msgid "You could use some diazepam." @@ -108032,15 +109212,15 @@ msgstr "你想要來點安定劑。" #: src/addiction.cpp msgid "You're shaking... you need some diazepam!" -msgstr "你開始顫抖... 你需要一些安定劑!" +msgstr "你開始顫抖… 你需要一些安定劑!" #: src/addiction.cpp msgid "Your hands start shaking... you need some painkillers." -msgstr "你的手掌開始顫抖... 你需要一些止痛藥。" +msgstr "你的手掌開始顫抖… 你需要一些止痛藥。" #: src/addiction.cpp msgid "You feel anxious. You need your painkillers!" -msgstr "你覺得很焦慮。 你需要你的止痛藥!" +msgstr "你覺得很焦慮。你需要你的止痛藥!" #: src/addiction.cpp msgid "You feel depressed. Speed would help." @@ -108048,7 +109228,7 @@ msgstr "你出現憂鬱症狀。興奮劑可改善這情形。" #: src/addiction.cpp msgid "Your hands start shaking... you need a pick-me-up." -msgstr "你的手掌開始顫抖... 需要提神的東西。" +msgstr "你的手掌開始顫抖… 你需要提神的東西。" #: src/addiction.cpp msgid "You stop suddenly, feeling bewildered." @@ -108081,7 +109261,7 @@ msgstr "你最近都沒用到突變劑。" #: src/addiction.cpp msgid "You could use some new parts..." -msgstr "你想要長出新部位..." +msgstr "你想要長出新部位…" #: src/addiction.cpp msgid "You daydream about luscious pink berries as big as your fist." @@ -108193,19 +109373,25 @@ msgstr "馬洛斯上癮" #: src/addiction.cpp msgid "Intelligence - 1; Occasional cravings" -msgstr "智力 - 1; 偶發犯癮" +msgstr "" +"智力 -1\n" +"偶爾犯癮。" #: src/addiction.cpp msgid "Strength - 1; Slight sluggishness; Occasional cravings" -msgstr "力量 - 1; 輕微遲緩; 偶發犯癮" +msgstr "" +"力量 -1\n" +"偶爾犯癮。\n" +"輕微遲緩。" #: src/addiction.cpp msgid "" "Perception - 1; Intelligence - 1; Occasional Cravings;\n" "Risk of delirium tremens" msgstr "" -"感知 - 1; 智力 - 1; 偶發犯癮;\n" -"有可能導致震顫性譫妄" +"感知 -1 智力 -1\n" +"偶爾犯癮。\n" +"有可能導致震顫性譫妄。" #: src/addiction.cpp msgid "You may find it difficult to sleep without medication." @@ -108216,38 +109402,44 @@ msgid "" "Strength - 1; Perception - 1; Dexterity - 1;\n" "Depression and physical pain to some degree. Frequent cravings. Vomiting." msgstr "" -"力量 - 1; 感知 - 1; 敏捷 - 1;\n" -"憂鬱。一定程度的疼痛。頻繁的犯癮。嘔吐。" +"力量 -1 感知 -1 敏捷 -1\n" +"頻繁犯癮。\n" +"憂鬱。一定程度的疼痛。嘔吐。" #: src/addiction.cpp msgid "" "Strength - 1; Intelligence - 1;\n" "Movement rate reduction. Depression. Weak immune system. Frequent cravings." msgstr "" -"力量 - 1; 智力 - 1;\n" -"移動速度下降。憂鬱。免疫力低下。頻繁的犯癮。" +"力量 -1 智力 -1\n" +"頻繁犯癮。\n" +"移動速度下降。憂鬱。免疫力低下。" #: src/addiction.cpp msgid "Perception - 1; Intelligence - 1; Frequent cravings." -msgstr "感知 - 1; 智力 - 1; 頻繁犯癮。" +msgstr "" +"感知 -1 智力 -1\n" +"頻繁犯癮。" #: src/addiction.cpp msgid "Perception - 2; Intelligence - 2; Frequent cravings." -msgstr "感知 - 2; 智力 - 2; 頻繁犯癮。" +msgstr "" +"感知 -2 智力 -2\n" +"頻繁犯癮。" #: src/addiction.cpp msgid "" "You've gotten a taste for mutating and the chemicals that cause it. But you" " can stop, yeah, any time you want." -msgstr "你開始喜歡變異的感覺、喜歡突變劑的味道。不過你隨時都可以… 停止… 嗯… 隨時都可以。" +msgstr "你開始喜歡變異的感覺和突變劑的味道。不過你隨時都可以… 停止… 嗯… 隨時都可以。" #: src/addiction.cpp msgid "" "Perception - 1; Intelligence - 1;\n" "Anxiety, nausea, hallucinations, and general malaise." msgstr "" -"感知 - 1; 智力 - 1;\n" -"焦慮, 噁心, 幻覺和全身不適。" +"感知 -1 智力 -1\n" +"焦慮、噁心、幻覺和全身不適。" #: src/addiction.cpp msgid "You should try some of those pink berries." @@ -108299,11 +109491,11 @@ msgstr "西" #: src/advanced_inv.cpp msgid "DN" -msgstr "下" +msgstr "DN" #: src/advanced_inv.cpp msgid "Directly below you" -msgstr "你的正下方" +msgstr "中央" #: src/advanced_inv.cpp msgid "E" @@ -108343,7 +109535,7 @@ msgstr "GR" #: src/advanced_inv.cpp msgid "Grabbed Vehicle" -msgstr "拖行的車輛" +msgstr "拖行中的車輛" #: src/advanced_inv.cpp msgid "AL" @@ -108367,7 +109559,7 @@ msgstr "WR" #: src/advanced_inv.cpp msgid "Worn Items" -msgstr "穿戴的物品" +msgstr "穿戴中的物品" #. ~ Adjective in "You block of the damage with your . #: src/advanced_inv.cpp src/melee.cpp @@ -108394,25 +109586,25 @@ msgstr "含量" msgid "category" msgstr "分類" -#: src/advanced_inv.cpp src/effect.cpp +#: src/advanced_inv.cpp src/bonuses.cpp src/effect.cpp src/effect.cpp msgid "damage" msgstr "傷害" #: src/advanced_inv.cpp msgid "spoilage" -msgstr "腐壞" +msgstr "腐敗" #. ~ Items list header. Table fields length without spaces: amt - 4, weight - #. 5, vol - 4. #: src/advanced_inv.cpp msgid "amt weight vol" -msgstr "數量 重量 體積" +msgstr "數量 重量 體積" #. ~ Items list header. Table fields length without spaces: src - 2, amt - 4, #. weight - 5, vol - 4. #: src/advanced_inv.cpp msgid "src amt weight vol" -msgstr "來源 數量 重量 體積" +msgstr "來源 數量 重量 體積" #: src/advanced_inv.cpp msgid "Name (charges)" @@ -108420,11 +109612,11 @@ msgstr "名稱 (含量)" #: src/advanced_inv.cpp msgid "Not dragging any vehicle!" -msgstr "" +msgstr "沒有拖行中的車輛!" #: src/advanced_inv.cpp msgid "No dragged vehicle!" -msgstr "" +msgstr "沒有拖行中的車輛!" #: src/advanced_inv.cpp msgid "Invalid container!" @@ -108436,7 +109628,7 @@ msgstr "全九宮格" #: src/advanced_inv.cpp msgid " FIRE" -msgstr " 火" +msgstr " 火焰" #: src/advanced_inv.cpp msgid " DANGER" @@ -108448,29 +109640,29 @@ msgstr " 陷阱" #: src/advanced_inv.cpp msgid " WATER" -msgstr " 水" +msgstr " 水域" #: src/advanced_inv.cpp #, c-format msgid "[<] page %d of %d [>]" -msgstr "[<] 頁面 %d 之 %d [>]" +msgstr "[<] 頁面 %d/%d [>]" #: src/advanced_inv.cpp #, c-format msgid "< [s]ort: %s >" -msgstr "< [s]排序: %s >" +msgstr "< [s] 排序: %s >" #: src/advanced_inv.cpp msgid "[F]ilter" -msgstr "[F]篩選" +msgstr "[F] 篩選" #: src/advanced_inv.cpp msgid "[R]eset" -msgstr "[R]重置" +msgstr "[R] 重置" #: src/advanced_inv.cpp msgid "You look at the items, then your clothes, and scratch your head..." -msgstr "" +msgstr "你看了看那堆物品, 再看了看你的服裝, 接著搔了搔你的頭…" #: src/advanced_inv.cpp msgid "There are no items to be moved!" @@ -108478,23 +109670,23 @@ msgstr "這裡沒有物品可以移動!" #: src/advanced_inv.cpp msgid "There isn't enough room, do you really want to move all?" -msgstr "" +msgstr "這裡沒有足夠的空間, 你確定要移動所有物品?" #: src/advanced_inv.cpp msgid "Really move everything from your inventory?" -msgstr "確定要移動你物品欄中的所有東西?" +msgstr "確定要從你的物品欄移動所有物品?" #: src/advanced_inv.cpp msgid "Really remove all your clothes? (woo hoo)" -msgstr "真的要把所有衣服脫掉?" +msgstr "確定要把所有衣物脫掉? (哇吼)" #: src/advanced_inv.cpp msgid "Skipping filled buckets to avoid spilling their contents." -msgstr "略過填滿的水桶, 以避免倒掉裡面的東西。" +msgstr "略過裝滿的水桶以避免倒掉裡面的東西。" #: src/advanced_inv.cpp msgid "Sort by... " -msgstr "排序規則... " +msgstr "排序模式…" #: src/advanced_inv.cpp msgid "Unsorted (recently added first)" @@ -108506,16 +109698,16 @@ msgstr "< [?] 顯示說明 >" #: src/advanced_inv.cpp msgid "Default layout was saved." -msgstr "" +msgstr "預設佈局已經儲存。" #: src/advanced_inv.cpp msgid "You can't put items there!" -msgstr "你不能把物品放到那!" +msgstr "你無法把物品放到那裡!" #: src/advanced_inv.cpp #, c-format msgid "Source area is the same as destination (%s)." -msgstr "起始地區與目的地區相同 (%s)。" +msgstr "來源地區與目標地區相同 (%s)。" #: src/advanced_inv.cpp #, c-format @@ -108541,7 +109733,7 @@ msgstr "那裡沒有車輛!" #: src/advanced_inv.cpp msgid "Select destination" -msgstr "選取目的地" +msgstr "選取目標地區" #: src/advanced_inv.cpp msgid " (FULL)" @@ -108550,19 +109742,19 @@ msgstr " (滿)" #: src/advanced_inv.cpp #, c-format msgid "Spill contents of %s?" -msgstr "把 %s 裡面的東西倒掉?" +msgstr "倒掉 %s 裡面的東西?" #: src/advanced_inv.cpp msgid "You don't have enough room for that!" -msgstr "你沒有足夠的空間!" +msgstr "你沒有足夠的空間來容納它!" #: src/advanced_inv.cpp msgid "You can't wear any more of that!" -msgstr "你無法再穿上一件它!" +msgstr "你無法再多穿一件這個!" #: src/advanced_inv.cpp msgid "Destination area is full. Remove some items first." -msgstr "目標地區滿了。先移除一些東西吧。" +msgstr "目標地區滿了。請先移除一些東西。" #: src/advanced_inv.cpp msgid "Source must be container." @@ -108574,11 +109766,11 @@ msgstr "來源容器是空的。" #: src/advanced_inv.cpp msgid "You can unload only liquids into target container." -msgstr "你只能把液體類的物品倒入目標容器。" +msgstr "你只能把液體裝入目標容器。" #: src/advanced_inv.cpp msgid "You can't partially unload liquids from unsealable container." -msgstr "你無法從不能密封的容器中取出部分液體。" +msgstr "你無法從不能密封的容器中倒出部分液體。" #: src/advanced_inv.cpp msgid "You can't pick up a liquid." @@ -108586,11 +109778,11 @@ msgstr "你無法撿起液體。" #: src/advanced_inv.cpp msgid "Destination area has too many items. Remove some first." -msgstr "目標地區太多物品了。先移除一些東西吧。" +msgstr "目標地區的物品太多了。請先移除一些東西。" #: src/advanced_inv.cpp msgid "This is too heavy!" -msgstr "這太重了!" +msgstr "這個東西太重了!" #: src/advanced_inv.cpp #, c-format @@ -108600,11 +109792,11 @@ msgstr "你要移動多少個? [有 %d] (0 為取消)" #: src/advanced_inv.cpp #, c-format msgid "Destination can only hold %d! Move how many? [Have %d] (0 to cancel)" -msgstr "目標只能容納 %d 個! 要移動多少個? [有 %d] (0 為取消)" +msgstr "目標地區只能容納 %d 個! 要移動多少個? [有 %d] (0 為取消)" #: src/advanced_inv.cpp msgid "The destination is already full!" -msgstr "目標已經滿了!" +msgstr "目標地區已經滿了!" #: src/advanced_inv.cpp msgid "Invalid container" @@ -108617,23 +109809,75 @@ msgstr "全部" #: src/animation.cpp msgid "Hang on a bit..." -msgstr "請稍候..." +msgstr "請稍候…" + +#: src/armor_layers.cpp +msgid "close to your skin" +msgstr "貼身" + +#: src/armor_layers.cpp +msgid "of normal clothing" +msgstr "一般" + +#: src/armor_layers.cpp +msgid "on your waist" +msgstr "腰部" + +#: src/armor_layers.cpp +msgid "of outer clothing" +msgstr "外層" + +#: src/armor_layers.cpp +msgid "strapped to you" +msgstr "繫結" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgid_plural "" +"Wearing multiple items %s on your %s is adding " +"encumbrance there." +msgstr[0] "同時將多件 %s 物品穿戴於同一個部位, 使你的 %s 增加了額外的累贅。" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgid_plural "" +"Wearing this outside items it would normally be beneath is adding " +"encumbrance to your %s." +msgstr[0] "把這件通常穿在裡面的物品穿在外面, 使你的 %s 增加了額外的累贅。" + +#: src/armor_layers.cpp +#, c-format +msgid "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgid_plural "" +"Wearing this outside your %s is adding encumbrance" +" to your %s." +msgstr[0] "" +"把這件物品穿在 %s 外面, 使你的 %s " +"增加了額外的累贅。" #: src/armor_layers.cpp msgid "This is worn next to the skin." -msgstr "這是一件貼身衣物。" +msgstr "這件衣物可以貼身穿戴。" #: src/armor_layers.cpp msgid "This is worn on or around your waist." -msgstr "這個裝備是穿戴在你的腰部。" +msgstr "這件裝備可以穿戴或環繞在腰部。" #: src/armor_layers.cpp msgid "This is worn over your other clothes." -msgstr "這是一件穿在其他衣物上的衣服。" +msgstr "這件裝備可以穿戴在其他衣物的外層。" #: src/armor_layers.cpp msgid "This is strapped onto you." -msgstr "這個裝備掛在你身上了。" +msgstr "這件裝備可以繫結在身上。" #: src/armor_layers.cpp msgid "Properties" @@ -108670,70 +109914,70 @@ msgstr "砍劈: " #: src/armor_layers.cpp msgid "Environmental:" -msgstr "環境防護: " +msgstr "環境危害: " #: src/armor_layers.cpp msgid "It fits you well." -msgstr "你穿起來很合身。" +msgstr "這件衣物很合身。" #: src/armor_layers.cpp msgid "It could be refitted." -msgstr "它可以被修改得更貼身。" +msgstr "這件衣物可以被修改得更合身。" #: src/armor_layers.cpp msgid "It has a hood." -msgstr "它有個兜帽。" +msgstr "這件衣物有兜帽。" #: src/armor_layers.cpp msgid "It has pockets." -msgstr "它有口袋。" +msgstr "這件衣物有口袋。" #: src/armor_layers.cpp msgid "It is waterproof." -msgstr "它是防水的。" +msgstr "這件衣物是防水的。" #: src/armor_layers.cpp msgid "It is water friendly." -msgstr "它是親水性的。" +msgstr "這件衣物是親水性的。" #: src/armor_layers.cpp msgid "It looks fancy." -msgstr "它看起來很好看。" +msgstr "這件衣物很花俏。" #: src/armor_layers.cpp msgid "It looks really fancy." -msgstr "它看起來真好看。" +msgstr "這件衣物非常花俏。" #: src/armor_layers.cpp msgid "You will not drown today." -msgstr "你今天不會溺水。" +msgstr "這件衣物讓你不會溺水。" #: src/armor_layers.cpp msgid "It is very bulky." -msgstr "它非常笨重。" +msgstr "這件衣物的尺寸大了一號。" #: src/armor_layers.cpp msgid "It helps you to see clearly underwater." -msgstr "它能幫助你在水下視物。" +msgstr "這件衣物讓你在水下看得更遠。" #: src/armor_layers.cpp #, c-format msgid "%s is too far to sort armor." -msgstr "%s 距離太遠了無法排序護甲。" +msgstr "%s 距離太遠了無法排序裝備。" #: src/armor_layers.cpp #, c-format msgid "%s is not friendly!" -msgstr "%s 對你並非友善!" +msgstr "%s 對你並不友善!" #: src/armor_layers.cpp msgid "Sort Armor" -msgstr "排序護甲" +msgstr "排序裝備" #: src/armor_layers.cpp #, c-format msgid "Press %s for help. Press %s to change keybindings." -msgstr "按 %s 獲取輔助訊息。按 %s 更改按鍵綁定。" +msgstr "按 %s 顯示使用說明。按 %s 檢視熱鍵設定。" #: src/armor_layers.cpp msgid "(Innermost)" @@ -108758,7 +110002,7 @@ msgstr "<空>" #: src/armor_layers.cpp msgid "Nothing to see here!" -msgstr "這裡沒有什麼東西好看的!" +msgstr "這裡沒有什麼東西好看!" #: src/armor_layers.cpp msgid "Encumbrance and Warmth" @@ -108771,36 +110015,53 @@ msgstr "累贅" #: src/armor_layers.cpp #, c-format msgid "Swap side for %s?" -msgstr "把 %s 穿在另一邊?" +msgstr "把 %s 穿到另一側?" #: src/armor_layers.cpp msgid "Can't put this on!" -msgstr "" +msgstr "無法穿上這件物品!" #: src/armor_layers.cpp msgid "Remove selected armor?" -msgstr "移除所選的裝甲?" +msgstr "脫掉選中的裝備?" #: src/armor_layers.cpp msgid "Reassign invlets for armor?" -msgstr "重新指定裝甲的穿著層次?" +msgstr "自動重定裝備代碼?" #: src/armor_layers.cpp #, c-format msgid "" "Use the arrow- or keypad keys to navigate the left list.\n" -"Press [%s] to select highlighted armor for reordering.\n" -"Use [%s] / [%s] to scroll the right list.\n" -"Press [%s] to assign special inventory letters to clothing.\n" -"Press [%s] to change the side on which item is worn.\n" -"Use [%s] to equip an armor item from the inventory.\n" -"Press [%s] to remove selected armor from oneself.\n" +"[%s] to select highlighted armor for reordering.\n" +"[%s] / [%s] to scroll the right list.\n" +"[%s] to assign special inventory letters to clothing.\n" +"[%s] to change the side on which item is worn.\n" +"[%s] to sort armor into natural layer order.\n" +"[%s] to equip a new item.\n" +"[%s] to equip a new item at the currently selected position.\n" +"[%s] to remove selected armor from oneself.\n" " \n" "[Encumbrance and Warmth] explanation:\n" "The first number is the summed encumbrance from all clothing on that bodypart.\n" -"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers.\n" +"The second number is an additional encumbrance penalty caused by wearing multiple items on one of the bodypart's layers or wearing items outside of other items they would normally be work beneath (e.g. a shirt over a backpack).\n" "The sum of these values is the effective encumbrance value your character has for that bodypart." msgstr "" +"使用方向鍵或數字鍵盤來瀏覽左方列表。\n" +"[%s] 選擇裝備以重新排序。\n" +"[%s] / [%s] 捲動右方列表。\n" +"[%s] 自動重定裝備代碼。\n" +"[%s] 把裝備穿到另一側。\n" +"[%s] 自動排序所有裝備。\n" +"[%s] 從物品欄穿戴裝備。\n" +"[%s] 從物品欄穿戴裝備到選中的位置。\n" +"[%s] 脫掉選中的裝備。\n" +" \n" +"關於 \"累贅與保暖\":\n" +" \n" +"第一個數字是該身體部位的所有裝備的累贅總和。\n" +"第二個數字是該身體部位的額外累贅懲罰。來自於在相同部位的相同層級穿戴多件物品, 或是把通常穿在裡面的物品穿在其他裝備外面 (例如: 把上衣穿在背包外面)。\n" +"這兩個數值的總和就是該身體部位的有效累贅值。" #: src/artifact.cpp msgid "smooth sphere" @@ -109146,7 +110407,7 @@ msgstr "非常輕薄。" #: src/artifact.cpp msgid "extremely bulky." -msgstr "十分笨重。" +msgstr "極度笨重。" #: src/artifact.cpp msgid "covered in pockets." @@ -109182,7 +110443,7 @@ msgstr "猙獰" #: src/artifact.cpp msgid "Unknowable" -msgstr "" +msgstr "不可知的" #: src/artifact.cpp msgid "Ancient" @@ -109226,7 +110487,7 @@ msgstr "無語" #: src/artifact.cpp msgid "Antediluvian" -msgstr "" +msgstr "洪荒時代" #: src/artifact.cpp msgid "Frigid" @@ -109349,14 +110610,14 @@ msgstr "%s 痛苦" msgid "" "The %s is somehow vaguely dissatisfied even though it doesn't want anything." " Seeing this is a bug!" -msgstr "" +msgstr "即使它不需要任何東西, %s 在某種程度上仍然無法滿足。看到這訊息是程式出錯了!" #: src/artifact.cpp #, c-format msgid "" "The %s is satisfied, as it should be because it has no standards. Seeing " "this is a bug!" -msgstr "" +msgstr "%s 應該滿足了, 因為它沒有標準。看到這訊息是程式出錯了!" #: src/artifact.cpp #, c-format @@ -109366,7 +110627,7 @@ msgstr "" #: src/artifact.cpp #, c-format msgid "You snuggle your %s closer." -msgstr "" +msgstr "你依偎著你的 %s 更近了一些。" #: src/artifact.cpp #, c-format @@ -109402,7 +110663,7 @@ msgstr "" #: src/artifact.cpp #, c-format msgid "You dream of angels' tears falling on your %s." -msgstr "" +msgstr "你夢到天使的眼淚滴落到你的 %s 上。" #: src/artifact.cpp #, c-format @@ -109433,8 +110694,8 @@ msgid "" "It may have unknown powers; try activating them." msgstr "" "這是 %s。\n" -"這東西只在世上只有一個。\n" -"也許它有未知的力量; 試著啟動它。" +"這東西在世上只有一個。\n" +"也許它有未知的力量, 試著啟動它。" #: src/artifact.cpp #, c-format @@ -109443,7 +110704,7 @@ msgid "" "They are the only ones of their kind." msgstr "" "這是 %s。\n" -"這東西只在世上只有一個。" +"這東西在世上只有一個。" #: src/artifact.cpp #, c-format @@ -109452,7 +110713,7 @@ msgid "" "It is the only one of its kind." msgstr "" "這是 %s。\n" -"這東西只在世上只有一個。" +"這東西在世上只有一個。" #: src/artifact.cpp #, c-format @@ -109498,43 +110759,43 @@ msgstr " 自動撿取管理器 " #: src/auto_pickup.cpp src/game.cpp src/safemode_ui.cpp msgid "dd" -msgstr "增加" +msgstr " 新增" #: src/auto_pickup.cpp src/game.cpp src/safemode_ui.cpp msgid "emove" -msgstr "移除" +msgstr " 移除" #: src/auto_pickup.cpp src/safemode_ui.cpp msgid "opy" -msgstr "複製" +msgstr " 複製" #: src/auto_pickup.cpp src/safemode_ui.cpp msgid "ove" -msgstr "移動" +msgstr " 移動" #: src/auto_pickup.cpp src/game.cpp src/safemode_ui.cpp msgid "nable" -msgstr "啟用" +msgstr " 啟用" #: src/auto_pickup.cpp src/game.cpp src/safemode_ui.cpp msgid "isable" -msgstr "停用" +msgstr " 停用" #: src/auto_pickup.cpp src/safemode_ui.cpp msgid "est" -msgstr "測試" +msgstr " 測試" #: src/auto_pickup.cpp src/game.cpp src/safemode_ui.cpp msgid "<+-> Move up/down" -msgstr "<+-> 往 上/下 移動" +msgstr "<+/-> 向上/下移動項目" #: src/auto_pickup.cpp src/color.cpp src/game.cpp src/safemode_ui.cpp msgid "-Edit" -msgstr "-編輯" +msgstr " 編輯" #: src/auto_pickup.cpp src/safemode_ui.cpp msgid "-Switch Page" -msgstr "-換頁" +msgstr " 切換分頁" #: src/auto_pickup.cpp src/safemode_ui.cpp msgid "Rules" @@ -109542,11 +110803,11 @@ msgstr "規則" #: src/auto_pickup.cpp msgid "I/E" -msgstr "I/E" +msgstr "模式" #: src/auto_pickup.cpp src/safemode_ui.cpp msgid "[]" -msgstr "[<綜覽>]" +msgstr "[<全域>]" #: src/auto_pickup.cpp src/safemode_ui.cpp msgid "[]" @@ -109566,15 +110827,15 @@ msgstr "是" #: src/auto_pickup.cpp src/safemode_ui.cpp msgid "witch" -msgstr "開關" +msgstr " 切換" #: src/auto_pickup.cpp src/safemode_ui.cpp msgid "Please load a character first to use this page!" -msgstr "請讀取一個角色才能使用這個頁面!" +msgstr "請先讀取一個角色以使用這個頁面!" #: src/auto_pickup.cpp src/safemode_ui.cpp msgid "" -msgstr "<規則空白>" +msgstr "<空白規則>" #: src/auto_pickup.cpp msgid "Exclude" @@ -109599,25 +110860,38 @@ msgid "" "M:copper matches items made purely of copper\n" "M:steel,iron multiple materials allowed (OR search)" msgstr "" +"* 是一個萬用字元。舉例如下:\n" +" \n" +"wooden arrow 符合名稱完全一樣的物品\n" +"wooden ar* 符合名稱以 wood ar 開頭的物品\n" +"*rrow 符合名稱以 rrow 結尾的物品\n" +"*avy fle*fi*arrow 允許使用多個 * 符號\n" +"heAVY*woOD*arrOW 搜尋不區分大小寫\n" +" \n" +"使用特殊前綴符號以基於物品材質來撿取:\n" +" \n" +"m:凱夫勒 符合由凱夫勒製成的物品\n" +"M:銅 符合完全由銅製成的物品\n" +"M:鋼,鐵 符合完全由鋼或完全由鐵製成的物品" #: src/auto_pickup.cpp msgid "Pickup Rule:" -msgstr "撿取規則:" +msgstr "自動撿取規則:" #: src/auto_pickup.cpp src/color.cpp src/game.cpp src/input.cpp #: src/options.cpp src/safemode_ui.cpp msgid "Save changes?" -msgstr "是否儲存變更?" +msgstr "儲存變更?" #: src/auto_pickup.cpp #, c-format msgid "%1$d item matches: %2$s" msgid_plural "%1$d items match: %2$s" -msgstr[0] "%1$d 物品符合: %2$s" +msgstr[0] "%1$d 個物品符合: %2$s" #: src/auto_pickup.cpp msgid "Won't display bottled and suffixes=(fits)" -msgstr "不顯示內容物與字尾, 如: (合身)" +msgstr "不會顯示內容物與字尾, 例如: (合身)" #: src/auto_pickup.cpp msgid "Autopickup is not enabled in the options. Enable it now?" @@ -109659,17 +110933,17 @@ msgstr "%s 板" #: src/bionics.cpp #, c-format msgid "You don't have the power to activate your %s." -msgstr "你沒有能量啟動你的 %s。" +msgstr "你沒有能量來啟動你的 %s。" #: src/bionics.cpp #, c-format msgid "Deactivate your %s first!" -msgstr "請先關閉你的 %s !" +msgstr "請先關閉你的 %s!" #: src/bionics.cpp #, c-format msgid "You're forced to drop your %s." -msgstr "你被逼丟棄你的 %s 。" +msgstr "你被逼丟棄你的 %s。" #: src/bionics.cpp #, c-format @@ -109877,16 +111151,22 @@ msgstr "遙控無線電" #: src/bionics.cpp msgid "" "WARNING: Purging all fuel is likely to result in radiation! Purge anyway?" -msgstr "警告: 排出所有燃燒很有可能會導致輻射污染! 確認排出?" +msgstr "警告: 排出所有燃料很有可能會導致輻射污染! 仍要排出?" #: src/bionics.cpp msgid "You need a jumper cable connected to a vehicle to drain power from it." -msgstr "你需要先把跨接電纜連接到車輛上來抽取電力。" +msgstr "你需要一個連結到車上的跨接電纜來抽取電力。" #: src/bionics.cpp msgid "Your plugged-in solar pack is now able to charge your system." msgstr "" +#: src/bionics.cpp +msgid "" +"You need to connect the cable to yourself and the solar pack before your " +"solar pack can charge your system." +msgstr "" + #: src/bionics.cpp msgid "" "You might plug in your solar pack to the cable charging system, if you " @@ -109901,7 +111181,7 @@ msgstr "你無法手動關閉你的 %s!" #: src/bionics.cpp #, c-format msgid "You don't have the power to deactivate your %s." -msgstr "你沒有能量去關閉你的 %s。" +msgstr "你沒有能量來關閉你的 %s。" #: src/bionics.cpp src/iuse_actor.cpp #, c-format @@ -109966,7 +111246,7 @@ msgstr "" #: src/bionics.cpp #, c-format msgid "%s body is severely damaged!" -msgstr "%s 的身體嚴重受傷了!" +msgstr "%s 的身體受到了嚴重的傷害!" #: src/bionics.cpp msgid "You prep to begin surgery." @@ -109994,7 +111274,7 @@ msgstr "" #: src/bionics.cpp msgid "" "WARNING: Removing a reactor may leave radioactive material! Remove anyway?" -msgstr "警告: 移除反應爐有可能會殘留放射性物質! 確認要移除嗎?" +msgstr "警告: 移除反應爐有可能會殘留放射性物質! 仍要移除?" #: src/bionics.cpp #, c-format @@ -110010,14 +111290,14 @@ msgstr "" #: src/bionics.cpp msgid "Are you sure you wish to uninstall the selected bionic?" -msgstr "" +msgstr "你確定你想要移除選中的生化插件嗎?" #: src/bionics.cpp #, c-format msgid "" "WARNING: %i percent chance of SEVERE damage to all body parts! Continue " "anyway?" -msgstr "" +msgstr "警告: 有 %i% 的機率會 *嚴重* 傷害所有身體部位! 仍要繼續?" #: src/bionics.cpp #, c-format @@ -110048,13 +111328,13 @@ msgstr "成功移除 %s。" #, c-format msgctxt "memorial_male" msgid "Failed to remove bionic: %s." -msgstr "" +msgstr "無法移除生化插件: %s。" #: src/bionics.cpp #, c-format msgctxt "memorial_female" msgid "Failed to remove bionic: %s." -msgstr "" +msgstr "無法移除生化插件: %s。" #. ~ : more slot(s) needed. #: src/bionics.cpp @@ -110064,7 +111344,7 @@ msgid "" "%s: %i more slot(s) needed." msgstr "" "\n" -"%s: %i 需要更多的插槽." +"%s: %i 需要更多的插槽。" #: src/bionics.cpp #, c-format @@ -110080,7 +111360,7 @@ msgstr "你確定你想要安裝選中的生化插件嗎?" msgid "" "WARNING: %i percent chance of failure that may result in damage, pain, or a " "faulty installation! Continue anyway?" -msgstr "警告: 有 %i 的機率會導致損壞、疼痛或錯誤的安裝! 仍要繼續嗎?" +msgstr "警告: 有 %i% 的機率會導致損壞、疼痛或錯誤的安裝! 仍要繼續?" #: src/bionics.cpp #, c-format @@ -110208,7 +111488,7 @@ msgstr "已安裝的損壞生化插件: %s。" #: src/bionics.cpp #, c-format msgid "%s (%i slots);" -msgstr "%s (%i 插槽);" +msgstr "%s (%i 插槽)。" #: src/bionics.cpp #, c-format @@ -110251,8 +111531,8 @@ msgstr "" #: src/bionics.cpp msgid "" "You stay very, very still, focusing intently on an interesting rock on the " -"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass out" -" when the blades reach your line of sight." +"ceiling, as the Autodoc slices painlessly into you. Mercifully, you pass " +"out when the blades reach your line of sight." msgstr "" #: src/bionics_ui.cpp @@ -110265,8 +111545,8 @@ msgid "" "Reassigning.\n" "Select a bionic to reassign or press SPACE to cancel." msgstr "" -"指派中。\n" -"選擇要重新指派按鍵的生化插件或是按下 空白鍵 取消。" +"重定代碼中。\n" +"選擇一個生化插件, 或是按空白鍵取消。" #: src/bionics_ui.cpp msgid "" @@ -110274,6 +111554,8 @@ msgid "" "= to reassign, TAB to switch " "tabs." msgstr "" +"啟動中 [!] 檢視描述 " +"[=] 重定代碼 [Tab] 切換分頁" #: src/bionics_ui.cpp msgid "" @@ -110281,34 +111563,36 @@ msgid "" "= to reassign, TAB to switch " "tabs." msgstr "" +"檢視中 [!] 啟動插件 " +"[=] 重定代碼 [Tab] 切換分頁" #: src/bionics_ui.cpp #, c-format msgid "%d PU act" -msgstr "啟動需 %d 能量" +msgstr "啟動: %d 能量" #: src/bionics_ui.cpp #, c-format msgid "%d PU deact" -msgstr "關閉需 %d 能量 " +msgstr "關閉: %d 能量 " #: src/bionics_ui.cpp #, c-format msgid "%d PU/turn" -msgstr "%d 能量 / 回合" +msgstr "維持: %d 能量 / 回合" #: src/bionics_ui.cpp #, c-format msgid "%d PU/%d turns" -msgstr "%d 能量 / %d 回合" +msgstr "維持: %d 能量 / %d 回合" #: src/bionics_ui.cpp src/handle_action.cpp msgid "OFF" -msgstr "關閉" +msgstr "(關閉)" #: src/bionics_ui.cpp src/handle_action.cpp msgid "ON" -msgstr "開啟" +msgstr "(啟動)" #: src/bionics_ui.cpp #, c-format @@ -110327,24 +111611,24 @@ msgstr "能量消耗: %s" #: src/bionics_ui.cpp msgid "This bionic occupies the following body parts:" -msgstr "此生化插件佔據了以下的身體部位:" +msgstr "此生化插件佔用了以下身體部位:" #: src/bionics_ui.cpp msgid " BIONICS " -msgstr "生化插件" +msgstr " 生化插件 " #: src/bionics_ui.cpp msgid "No activatable bionics installed." -msgstr "沒有安裝任何主動的生化插件。" +msgstr "沒有安裝任何主動生化插件。" #: src/bionics_ui.cpp msgid "No passive bionics installed." -msgstr "沒有安裝任何被動的生化插件。" +msgstr "沒有安裝任何被動生化插件。" #: src/bionics_ui.cpp #, c-format msgid "%s; enter new letter. Space to clear. Esc to cancel." -msgstr "%s: 輸入新代碼。按 <空白鍵> 清除, 按 取消。" +msgstr "輸入新代碼: %s (按空白鍵清除, 按 Esc 取消)。" #: src/bionics_ui.cpp #, c-format @@ -110364,7 +111648,56 @@ msgid "" "To read a description of %s, press '!', then '%c'." msgstr "" "你無法啟動 %s!\n" -"若要讀取 %s 的描述, 按下 '!', 接著 '%c'。" +"若要檢視 %s 的描述, 按 ! 接著按 %c。" + +#: src/bonuses.cpp +msgid "Accuracy" +msgstr "命中率" + +#: src/bonuses.cpp src/martialarts.cpp +msgid "Dodge" +msgstr "閃避" + +#: src/bonuses.cpp src/player_display.cpp +msgid "Speed" +msgstr "速度" + +#: src/bonuses.cpp +msgid "Move cost" +msgstr "行動點數消耗" + +#: src/bonuses.cpp +msgid "Armor" +msgstr "護甲" + +#: src/bonuses.cpp +msgid "Armor pen" +msgstr "護甲穿透" + +#: src/bonuses.cpp +msgid "Target armor multiplier" +msgstr "目標護甲加成" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "strength" +msgstr "力量" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "dexterity" +msgstr "敏捷" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "intelligence" +msgstr "智力" + +#: src/bonuses.cpp src/character.cpp src/item.cpp +msgid "perception" +msgstr "感知" + +#. ~ bash damage +80% of strength +#: src/bonuses.cpp +msgid " of " +msgstr " " #: src/calendar.cpp msgid "forever" @@ -110394,6 +111727,12 @@ msgid "%d day" msgid_plural "%d days" msgstr[0] "%d 天" +#: src/calendar.cpp +#, c-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d 週" + #: src/calendar.cpp #, c-format msgid "%d season" @@ -110418,7 +111757,7 @@ msgstr " 永遠" #, c-format msgid "%3d second" msgid_plural "%3d seconds" -msgstr[0] "3d 秒" +msgstr[0] "%3d 秒" #. ~ Right-aligned time string. should right-align with other strings with #. this same comment @@ -110444,6 +111783,14 @@ msgid "%3d day" msgid_plural "%3d days" msgstr[0] "%3d 天" +#. ~ Right-aligned time string. should right-align with other strings with +#. this same comment +#: src/calendar.cpp +#, c-format +msgid "%3d week" +msgid_plural "%3d weeks" +msgstr[0] "%3d 週" + #. ~ Right-aligned time string. should right-align with other strings with #. this same comment #: src/calendar.cpp @@ -110465,7 +111812,7 @@ msgstr[0] "%3d 年" #: src/calendar.cpp #, c-format msgid "%1$s and %2$s" -msgstr "%1$s 和 %2$s" +msgstr "%1$s %2$s" #. ~ %s - time (e.g. 2 hours). #: src/calendar.cpp @@ -110523,21 +111870,21 @@ msgstr "冬天" #: src/calendar.cpp msgid "End times" -msgstr "" +msgstr "結束時間" #. ~ 1 is the year, 2 is the day (of the *year*), 3 is the time of the day in #. its usual format #: src/calendar.cpp #, c-format msgid "Year %1$d, day %2$d %3$s" -msgstr "" +msgstr "%1$d 年, 第 %2$d 天 %3$s" #. ~ 1 is the year, 2 is the season name, 3 is the day (of the season), 4 is #. the time of the day in its usual format #: src/calendar.cpp #, c-format msgid "Year %1$d, %2$s, day %3$d %4$s" -msgstr "" +msgstr "%1$d 年, %2$s, 第 %3$d 天 %4$s" #: src/cata_utility.cpp src/options.cpp msgid "mph" @@ -110594,7 +111941,7 @@ msgstr "夸脫" #: src/cata_utility.cpp #, c-format msgid "Failed to write %1$s to \"%2$s\": %3$s" -msgstr "將 %1$s 寫入至 \"%2$s\" 失敗: %3$s" +msgstr "無法寫入 %1$s 到 \"%2$s\": %3$s" #: src/cata_utility.cpp msgid "opening file failed" @@ -110607,28 +111954,28 @@ msgstr "寫入檔案失敗" #: src/cata_utility.cpp #, c-format msgid "Failed to read from \"%1$s\": %2$s" -msgstr "從 \"%1$s\" 讀取失敗: %2$s" +msgstr "無法讀取 \"%1$s\": %2$s" #. ~ translators: place some random 1-width characters here in your language #. if possible, or leave it as is #: src/cata_utility.cpp msgid "abcdefghijklmnopqrstuvwxyz" -msgstr "" +msgstr "abcdefghijklmnopqrstuvwxyz" #. ~ translators: place some random 2-width characters here in your language #. if possible, or leave it as is #: src/cata_utility.cpp msgid "に坂索トし荷測のンおク妙免イロコヤ梅棋厚れ表幌" -msgstr "" +msgstr "金木水火土子丑寅卯辰巳午未申酉戌亥乾坤震兌坎離巽艮休生傷杜景死驚開" #: src/catalua.cpp src/player.cpp #, c-format msgid "You can't do anything interesting with your %s." -msgstr "你不能直接使用 %s。" +msgstr "你不能對你的 %s 做任何事。" #: src/catalua.cpp msgid "This binary was not compiled with Lua support." -msgstr "此二進位檔並沒有編譯成支援Lua" +msgstr "這個執行檔並沒有編譯成支援 Lua。" #: src/character.cpp msgid "You struggle to stand." @@ -110770,22 +112117,6 @@ msgstr "" msgid "Liquid from your inventory has leaked onto the ground." msgstr "你的物品欄中的液體流到了地面上。" -#: src/character.cpp src/item.cpp -msgid "strength" -msgstr "力量" - -#: src/character.cpp src/item.cpp -msgid "dexterity" -msgstr "敏捷" - -#: src/character.cpp src/item.cpp -msgid "intelligence" -msgstr "智力" - -#: src/character.cpp src/item.cpp -msgid "perception" -msgstr "感知" - #: src/character.cpp msgid "Left Arm" msgstr "左臂" @@ -110883,9 +112214,7 @@ msgstr "你不認為使用它有任何效果。" msgid "No limb would benefit from it." msgstr "沒有任何肢體能從中受益。" -#: src/character.cpp src/game.cpp src/game.cpp src/iexamine.cpp -#: src/inventory_ui.cpp src/npctalk_funcs.cpp src/pickup.cpp src/turret.cpp -#: src/vehicle_use.cpp +#: src/character.cpp src/iexamine.cpp src/inventory_ui.cpp src/pickup.cpp msgid "Cancel" msgstr "取消" @@ -110945,269 +112274,269 @@ msgstr "關閉 NPC 自動撿取" #: src/clzones.cpp msgid "Friendly NPCs don't pickup items inside the zone." -msgstr "" +msgstr "友善的 NPC 不會撿取這個區域裡的物品。" #: src/clzones.cpp msgid "Loot: Unsorted" -msgstr "" +msgstr "物資: 未整理" #: src/clzones.cpp msgid "" "Place to drop unsorted loot. You can use \"sort out loot\" zone-action to " "sort items inside. It can overlap with Loot zones of different types." -msgstr "" +msgstr "放置未整理物資的地方。你可以使用 \"整理物資\" 區域動作來整理裡面的物品。它可以和不同類型的物資區域重疊。" #: src/clzones.cpp msgid "Loot: Food" -msgstr "" +msgstr "物資: 食物" #: src/clzones.cpp msgid "" "Destination for comestibles. If more specific food zone is not defined, all " "food is moved here." -msgstr "" +msgstr "食物的目的地。如果沒有定義更明確的區域, 所有食物都會移動到這裡。" #: src/clzones.cpp -msgctxt "perishable food" +msgctxt "perishable_food" msgid "Loot: P.Food" -msgstr "" +msgstr "物資: 易腐食物" #: src/clzones.cpp msgid "" "Destination for perishable comestibles. Does include perishable drinks if " "such zone is not specified." -msgstr "" +msgstr "容易腐敗的食物的目的地。如果沒有定義更明確的區域, 容易腐敗的飲料也包含在內。" #: src/clzones.cpp msgid "Loot: Drink" -msgstr "" +msgstr "物資: 飲料" #: src/clzones.cpp msgid "" "Destination for drinks. Does include perishable drinks if such zone is not " "specified." -msgstr "" +msgstr "飲料的目的地。如果沒有定義更明確的區域, 容易腐敗的飲料也包含在內。" #: src/clzones.cpp -msgctxt "perishable drink" +msgctxt "perishable_drink" msgid "Loot: P.Drink" -msgstr "" +msgstr "物資: 易腐飲料" #: src/clzones.cpp msgid "Destination for perishable drinks." -msgstr "" +msgstr "容易腐敗的飲料的目的地。" #: src/clzones.cpp msgid "Loot: Guns" -msgstr "" +msgstr "物資: 遠程武器" #: src/clzones.cpp msgid "Destination for guns, bows and similar weapons." -msgstr "" +msgstr "槍械、弓與其他類似武器的目的地。" #: src/clzones.cpp -msgctxt "gun magazines" +msgctxt "gun_magazines" msgid "Loot: Magazines" -msgstr "" +msgstr "物資: 彈匣" #: src/clzones.cpp msgid "Destination for gun magazines." -msgstr "" +msgstr "槍械彈匣的目的地。" #: src/clzones.cpp msgid "Loot: Ammo" -msgstr "" +msgstr "物資: 彈藥" #: src/clzones.cpp msgid "Destination for ammo." -msgstr "" +msgstr "彈藥的目的地。" #: src/clzones.cpp msgid "Loot: Weapons" -msgstr "" +msgstr "物資: 近戰武器" #: src/clzones.cpp msgid "Destination for melee weapons." -msgstr "" +msgstr "近戰武器的目的地" #: src/clzones.cpp msgid "Loot: Tools" -msgstr "" +msgstr "物資: 工具" #: src/clzones.cpp msgid "Destination for tools." -msgstr "" +msgstr "工具的目的地。" #: src/clzones.cpp msgid "Loot: Clothing" -msgstr "" +msgstr "物資: 衣物" #: src/clzones.cpp msgid "" "Destination for clothing. Does include filthy clothing if such zone is not " "specified." -msgstr "" +msgstr "衣物的目的地。如果沒有定義更明確的區域, 骯髒衣物也包含在內。" #: src/clzones.cpp -msgctxt "filthy clothing" +msgctxt "filthy_clothing" msgid "Loot: F.Clothing" -msgstr "" +msgstr "物資: 骯髒衣物" #: src/clzones.cpp msgid "Destination for filthy clothing." -msgstr "" +msgstr "骯髒衣物的目的地。" #: src/clzones.cpp msgid "Loot: Drugs" -msgstr "" +msgstr "物資: 藥物" #: src/clzones.cpp msgid "Destination for drugs and other medical items." -msgstr "" +msgstr "藥物與其他醫療用品的目的地。" #: src/clzones.cpp msgid "Loot: Books" -msgstr "" +msgstr "物資: 書籍" #: src/clzones.cpp msgid "Destination for books and magazines." -msgstr "" +msgstr "書籍與雜誌的目的地。" #: src/clzones.cpp msgid "Loot: Mods" -msgstr "" +msgstr "物資: 模組" #: src/clzones.cpp msgid "Destination for firearm modifications and similar items." -msgstr "" +msgstr "槍械模組與其他類似物品的目的地。" #: src/clzones.cpp msgid "Loot: Mutagens" -msgstr "" +msgstr "物資: 突變劑" #: src/clzones.cpp msgid "Destination for mutagens, serums, and purifiers." -msgstr "" +msgstr "突變劑、血清與淨化劑的目的地。" #: src/clzones.cpp msgid "Loot: Bionics" -msgstr "" +msgstr "物資: 生化插件" #: src/clzones.cpp msgid "Destination for Compact Bionics Modules aka CBMs." -msgstr "" +msgstr "生化插件 (CBM) 的目的地。" #: src/clzones.cpp -msgctxt "vehicle parts" +msgctxt "vehicle_parts" msgid "Loot: V.Parts" -msgstr "" +msgstr "物資: 車輛零件" #: src/clzones.cpp msgid "Destination for vehicle parts." -msgstr "" +msgstr "車輛零件的目的地。" #: src/clzones.cpp msgid "Loot: Other" -msgstr "" +msgstr "物資: 其他" #: src/clzones.cpp msgid "Destination for other miscellaneous items." -msgstr "" +msgstr "雜項物品的目的地。" #: src/clzones.cpp msgid "Loot: Fuel" -msgstr "" +msgstr "物資: 燃料" #: src/clzones.cpp msgid "" "Destination for gasoline, diesel, lamp oil and other substances used as a " "fuel." -msgstr "" +msgstr "汽油、柴油、燈油與其他燃料物質的目的地。" #: src/clzones.cpp msgid "Loot: Seeds" -msgstr "" +msgstr "物資: 種子" #: src/clzones.cpp msgid "Destination for seeds, stems and similar items." -msgstr "" +msgstr "種子、莖與其他類似物品的目的地。" #: src/clzones.cpp msgid "Loot: Chemical" -msgstr "" +msgstr "物資: 化學" #: src/clzones.cpp msgid "Destination for chemicals." -msgstr "" +msgstr "化學製品的目的地。" #: src/clzones.cpp -msgctxt "spare parts" +msgctxt "spare_parts" msgid "Loot: S.Parts" -msgstr "" +msgstr "物資: 備用零件" #: src/clzones.cpp msgid "Destination for spare parts." -msgstr "" +msgstr "備用零件的目的地。" #: src/clzones.cpp msgid "Loot: Artifacts" -msgstr "" +msgstr "物資: 神器" #: src/clzones.cpp msgid "Destination for artifacts" -msgstr "" +msgstr "神器的目的地。" #: src/clzones.cpp msgid "Loot: Armor" -msgstr "" +msgstr "物資: 護甲" #: src/clzones.cpp msgid "" "Destination for armor. Does include filthy armor if such zone is not " "specified." -msgstr "" +msgstr "護甲的目的地。如果沒有定義更明確的區域, 骯髒護甲也包含在內。" #: src/clzones.cpp -msgctxt "filthy armor" +msgctxt "filthy_armor" msgid "Loot: F.Armor" -msgstr "" +msgstr "物資: 骯髒護甲" #: src/clzones.cpp msgid "Destination for filthy armor." -msgstr "" +msgstr "骯髒護甲的目的地。" #: src/clzones.cpp msgid "Loot: Wood" -msgstr "" +msgstr "物資: 木頭" #: src/clzones.cpp msgid "Destination for firewood and items that can be used as such." -msgstr "" +msgstr "薪柴和其他可作為薪柴使用的物品的目的地。" #: src/clzones.cpp msgid "Loot: Ignore" -msgstr "" +msgstr "物資: 忽略" #: src/clzones.cpp msgid "Items inside of this zone are ignored by \"sort out loot\" zone-action." -msgstr "" +msgstr "在這個區域裡的物品會忽略 \"整理物資\" 區域動作。" #: src/clzones.cpp -msgctxt "plot of land" +msgctxt "plot_of_land" msgid "Farm: Plot" -msgstr "" +msgstr "農田: 田地" #: src/clzones.cpp msgid "Designate a farm plot for tilling and planting." -msgstr "" +msgstr "劃定用於整地和種植的農田。" #: src/clzones.cpp msgid "No seed" -msgstr "" +msgstr "沒有種子" #: src/clzones.cpp msgid "Plant seed: " -msgstr "" +msgstr "播種: " #: src/clzones.cpp msgid "Zone name:" @@ -111219,11 +112548,11 @@ msgstr "選擇區域類型:" #: src/clzones.cpp msgid "" -msgstr "<無名稱>" +msgstr "<沒有名稱>" #: src/clzones.cpp msgid "zones date" -msgstr "地區日期" +msgstr "區域資料" #: src/color.cpp msgid "brown" @@ -111231,31 +112560,31 @@ msgstr "棕色" #: src/color.cpp msgid "light gray" -msgstr "" +msgstr "淺灰色" #: src/color.cpp msgid "dark gray" -msgstr "" +msgstr "深灰色" #: src/color.cpp msgid "light red" -msgstr "" +msgstr "淺紅色" #: src/color.cpp msgid "light green" -msgstr "" +msgstr "淺綠色" #: src/color.cpp src/item.cpp msgid "red" -msgstr "紅" +msgstr "紅色" #: src/color.cpp src/item.cpp msgid "green" -msgstr "綠" +msgstr "綠色" #: src/color.cpp msgid "light blue" -msgstr "" +msgstr "淺藍色" #: src/color.cpp src/item.cpp msgid "blue" @@ -111271,7 +112600,7 @@ msgstr "青色" #: src/color.cpp msgid "light cyan" -msgstr "" +msgstr "淺青色" #: src/color.cpp msgid "magenta" @@ -111287,15 +112616,15 @@ msgstr " 移除自訂顏色" #: src/color.cpp msgid " To navigate" -msgstr "<方向鍵> 來瀏覽" +msgstr "<方向鍵> 瀏覽" #: src/color.cpp msgid "Load emplate" -msgstr " 讀取模版" +msgstr " 讀取模板" #: src/color.cpp msgid "Some color changes may require a restart." -msgstr "改變顏色後, 需要重啟遊戲才會有效果。" +msgstr "改變顏色需要重新啟動遊戲。" #: src/color.cpp msgid "Colorname" @@ -111311,7 +112640,7 @@ msgstr "反轉" #: src/color.cpp msgid " COLOR MANAGER " -msgstr "顏色管理器" +msgstr " 顏色管理器 " #: src/color.cpp msgid "Color templates:" @@ -111320,7 +112649,7 @@ msgstr "顏色模板:" #: src/color.cpp #, c-format msgid "Custom %s color:" -msgstr "自訂 %s 顏色:" +msgstr "自訂%s顏色:" #: src/color.cpp msgid "custom colors" @@ -111329,7 +112658,7 @@ msgstr "自訂顏色" #: src/computer.cpp #, c-format msgid "Logging into %s..." -msgstr "登入到 %s..." +msgstr "登入到 %s…" #: src/computer.cpp msgid "Access is temporary blocked for security purposes." @@ -111349,15 +112678,15 @@ msgstr "繞過保護機制?" #: src/computer.cpp msgid "Shutting down... press any key." -msgstr "關機中... 按下任意鍵。" +msgstr "關機中… 請按任意鍵。" #: src/computer.cpp msgid "Maximum login attempts exceeded. Press any key..." -msgstr "超過最大可嘗試登入次數。按下任意鍵..." +msgstr "超過最大可嘗試登入次數。請按任意鍵…" #: src/computer.cpp msgid "Login successful. Press any key..." -msgstr "登入成功。按下任意鍵..." +msgstr "登入成功。請按任意鍵…" #: src/computer.cpp msgid "Root Menu" @@ -111381,20 +112710,20 @@ msgstr "選擇磁碟:" #: src/computer.cpp msgid "Doors opened. Press any key..." -msgstr "門打開了。請按任意鍵..." +msgstr "門打開了。請按任意鍵…" #: src/computer.cpp msgid "Lock enabled. Press any key..." -msgstr "已上鎖。請按任意鍵..." +msgstr "已上鎖。請按任意鍵…" #: src/computer.cpp msgid "Lock disabled. Press any key..." -msgstr "已解鎖。請按任意鍵..." +msgstr "已解鎖。請按任意鍵…" #. ~ the sound of a church bell ringing #: src/computer.cpp msgid "Bohm... Bohm... Bohm..." -msgstr "啵... 啵... 啵..." +msgstr "啵… 啵… 啵…" #: src/computer.cpp msgctxt "memorial_male" @@ -111413,7 +112742,7 @@ msgstr "警報聲大作!" #: src/computer.cpp msgid "Containment shields opened. Press any key..." -msgstr "容器護罩已開啟。請按任意鍵..." +msgstr "容器護罩已開啟。請按任意鍵…" #: src/computer.cpp msgctxt "memorial_male" @@ -111427,7 +112756,7 @@ msgstr "消滅異空間樣本。" #: src/computer.cpp msgid "Subjects terminated. Press any key..." -msgstr "樣本已終結。請按任意鍵..." +msgstr "樣本已終結。請按任意鍵…" #: src/computer.cpp msgctxt "memorial_male" @@ -111459,27 +112788,27 @@ msgstr "沒有找到資料。" #: src/computer.cpp msgid "Local data-access error logged, alerting helpdesk. Press any key..." -msgstr "將本機資料存取錯誤寫入日誌, 並對服務台發出警報。按任意鍵..." +msgstr "將本機資料存取錯誤寫入日誌, 並對服務台發出警報。請按任意鍵…" #: src/computer.cpp msgid "" "Warning: anomalous archive-access activity detected at this node. Press any " "key..." -msgstr "警告: 偵測到匿名使用者在此結點對資料庫的存取行為。按任意鍵..." +msgstr "警告: 偵測到匿名使用者在此結點對資料庫的存取行為。請按任意鍵…" #: src/computer.cpp msgid "" "Surface map data downloaded. Local anomalous-access error logged. Press " "any key..." -msgstr "地表地圖數據已下載。本機登入異常。請按任意鍵..." +msgstr "地表地圖數據已下載。本機登入異常。請按任意鍵…" #: src/computer.cpp msgid "Sewage map data downloaded. Press any key..." -msgstr "下水道地圖數據已下載。請按任意鍵..." +msgstr "下水道地圖數據已下載。請按任意鍵…" #: src/computer.cpp msgid "Subway map data downloaded. Press any key..." -msgstr "" +msgstr "地下鐵地圖數據已下載。請按任意鍵…" #: src/computer.cpp msgid "Target acquisition canceled." @@ -111540,15 +112869,15 @@ msgstr "生化插件存取 - 列表:" #, c-format msgid "%d OTHER FOUND..." msgid_plural "%d OTHERS FOUND..." -msgstr[0] "還有 %d 個其他的..." +msgstr[0] "還有 %d 個其他的…" #: src/computer.cpp msgid "Press any key..." -msgstr "請按任意鍵..." +msgstr "請按任意鍵…" #: src/computer.cpp msgid "Elevator activated. Press any key..." -msgstr "升降梯啟動。請按任意鍵..." +msgstr "升降梯啟動。請按任意鍵…" #: src/computer.cpp #, c-format @@ -111572,12 +112901,12 @@ msgstr "" "記錄 47:\n" "我們在日常的採礦工作挖掘出一個中空的空間。另外更不正常的是,\n" "還找到了一個有完美垂直的斷層。\n" -"這個斷層上有數個詭異的凹洞, 一些迷信的工人們非常緊張;\n" +"這個斷層上有數個詭異的凹洞, 一些迷信的工人們非常緊張,\n" "並且這些凹洞像是人造的。\n" "\n" "記錄 48:\n" "這些凹洞大約 10 到 20 呎高, 大大小小分布在整個斷層上。\n" -"每個看起來都像人的形狀, 但四肢及脖子的部份卻是拉長的,\n" +"每個看起來都像人的形狀, 但四肢、頸部與頭部的卻是拉長的,\n" "整個凹洞是扭曲的。\n" #: src/computer.cpp @@ -111600,14 +112929,14 @@ msgid "" "for such narrow tunnels, so it's hard to say exactly how far back they go.\n" msgstr "" "記錄 49:\n" -"我們在這個區域停止了一切的採礦作業, 看來是要到考古學家研究完這個地區。\n" -"而時間表得先推延至少一個星期。這個愚蠢的文化資產保護法已經存在50年了,\n" +"我們在這個區域停止了一切的採礦作業, 顯然是要等到考古學家研究完這個地區。\n" +"而時間表得先推延至少一個星期。這個愚蠢的文化資產保護法已經存在 50 年了,\n" "居然還沒有被廢除, 完全沒有考量到礦業是這個國家的經濟命脈。\n" "\n" "記錄 52:\n" -"目前還在等這些考古學家完事, 我們已經對這斷層做了一些小分析;\n" +"目前還在等這些考古學家完事, 我們已經對這斷層做了一些小分析。\n" "我們的聲納設備還不足以探查這些凹洞的深度。\n" -"這個設備只能測到15英里深, 並且不適合測這種狹隘的孔洞,\n" +"這個設備只能測到 15 英里深, 並且不適合測這種狹隘的孔洞,\n" "所以也很難以確定到底正確深度是多少。\n" #: src/computer.cpp @@ -111628,12 +112957,12 @@ msgid "" "know that's sort of a big deal, but come on, these guys can't handle it?\n" msgstr "" "記錄 54:\n" -"我發現有一些在那個空間的人在用鑿子敲岩壁, 並採集斷崖的碎片。\n" +"我發現有一些人下到那個空間裡用鑿子敲岩壁, 並採集斷崖的碎片。\n" "我正在想辦法, 讓這些傻子不會發現碎片不見了, 爽啦。\n" "\n" "記錄 55:\n" -"嗯, 現在這些考古學家跟一些看起來不像印第安瓊斯的男性嚮導在下面;\n" -"我看他們應該連20英呎都下不去, 我討厭當這些科學家的保母,\n" +"嗯, 現在這些考古學家跟一些看起來不像印第安瓊斯的男性嚮導在下面。\n" +"我看他們應該連 20 英呎都下不去, 我討厭當這些科學家的保母,\n" "但如果他們受傷了, 天知道這礦坑會被封閉多久。\n" "\n" "記錄 58:\n" @@ -111666,26 +112995,24 @@ msgid "" "INITIATING STANDARD TREMOR TEST..." msgstr "" "\n" -"採礦作業已經暫停; 控制權移交阿彌殼計畫\n" -" 命令 2:07B\n" +"採礦作業已經暫停, 依照命令 2:07B 將控制權移交阿彌殼計畫\n" "斷層深度目前測定為 30.09 公里\n" -"發現斷層的損傷; 礦工因違反\n" -" 87.08條例移交至 LAB 89-C \n" -" 並成為測試樣本\n" +"發現斷層的損傷, 已逮捕違反條例 87.08 的東北能源礦工, 並移交至 89-C 實驗室\n" +" 作為測試樣本\n" "斷層沒有受到破壞\n" -"初始化震動測試..." +"初始化震顫測試…" #: src/computer.cpp msgid "FILE CORRUPTED, PRESS ANY KEY..." -msgstr "檔案已損毀, 請按任意鍵..." +msgstr "檔案已損毀, 請按任意鍵…" #: src/computer.cpp msgid "" "The machine injects your eyeball with the solution \n" "of pureed bone & LSD." msgstr "" -"這個機器注射了一些東西到你的眼球- \n" -"骨粉 & LSD." +"這個機器注射了一些東西到你的眼球:\n" +"骨粉 & LSD。" #: src/computer.cpp msgid "--ACCESS GRANTED--" @@ -111705,7 +113032,7 @@ msgstr "中繼器模組安裝完成…" #: src/computer.cpp msgid "You do not have a repeater mod to install..." -msgstr "你沒有中繼器模組, 無法安裝。" +msgstr "你沒有中繼器模組可以安裝…" #: src/computer.cpp msgid "Computer couldn't find its mission!" @@ -111811,7 +113138,7 @@ msgstr "" #: src/computer.cpp msgid "Press any key to continue..." -msgstr "按下任意鍵繼續..." +msgstr "請按任意鍵繼續…" #: src/computer.cpp msgid "" @@ -111880,7 +113207,7 @@ msgstr "" " 所有成員注意: 禁止開啟或檢視超越你的\n" " 授權層級以上的容器。 如果你有一些有關\n" " 安全協議或運輸過程的問題, 請聯絡你的\n" -" SRCF主管或是現場的軍官。\n" +" SRCF 主管或是現場的軍官。\n" " 如有疑慮, 把所有容器都視為A級生化危害\n" " 及劇毒性。並採取所有預防措施!\n" " \n" @@ -111910,7 +113237,7 @@ msgstr "" " 所有容器將依照新的規定重新安排。\n" " 若近期你的設施內儲存著這些容器,\n" " 你將會被安排與武裝警衛全天候與你一起工作,\n" -" 若有不尋常的狀況請立刻回報你的SRCF主管。\n" +" 若有不尋常的狀況請立刻回報你的 SRCF 主管。\n" " " #: src/computer.cpp @@ -111932,8 +113259,8 @@ msgstr "" " 從: Constantine Dvorak, 核安副國務卿\n" " \n" " 工人的健康與安全是我們的最優先考量!\n" -" 因此, 我們正在制定對所有SRCF成員每週一次的健康檢查。\n" -" 只要身體出現異常的症狀請立即通報你的SRCF主管。\n" +" 因此, 我們正在制定對所有 SRCF 成員每週一次的健康檢查。\n" +" 只要身體出現異常的症狀請立即通報你的 SRCF 主管。\n" " " #: src/computer.cpp @@ -112061,12 +113388,12 @@ msgstr "" " 雖然我們的人員沒有辦法進入, 但我們的空氣檢測員\n" " 在附近的社區中偵測到高濃度的毒氣及輻射, 而我們\n" " 也在地下水中發現了數十種有潛在危險的未知化合物。\n" -" 現在, 我們有足夠的證據顯示SRCF對公眾安全是一個威脅。\n" +" 現在, 我們有足夠的證據顯示 SRCF 對公眾安全是一個威脅。\n" " 我們會將這些資料送交給國會, 聲請完整的深入調查。\n" " 他們應該能夠強行撬開你試圖隱瞞的祕密。\n" " 全世界也會知道你過去一直在隱瞞什麼。\n" " \n" -" 假如你涉及這次災難的話, 我詛咒你下18層地獄。\n" +" 假如你涉及這次災難的話, 我詛咒你下 18 層地獄。\n" " \n" " 環保局主任,\n" " Robert Shane\n" @@ -112138,7 +113465,7 @@ msgstr "" " 給: 所有 SRCF 人員\n" " 從: Cornelius少將, 美國陸軍\n" " \n" -" 通知所有平民工作人員: 第10山地師已經分發為監\n" +" 通知所有平民工作人員: 第 10 山地師已經指派為監\n" " 督封鎖 SRCF 所有設施的任務。來自上級的直接命令\n" " : 所有非必要的工作人員必須盡早撤離以避免潛在的\n" " 汙染。小型的核子戰術炸藥將會佈署在底層通道以封\n" @@ -112279,19 +113606,19 @@ msgstr "" #: src/construction.cpp msgid " Construction " -msgstr " 建設 " +msgstr " 建造 " #: src/construction.cpp msgid "You can not construct anything here." -msgstr "你不能在這裡進行建設。" +msgstr "你無法在這裡建造任何東西。" #: src/construction.cpp src/init.cpp msgid "Constructions" -msgstr "建設" +msgstr "建造" #: src/construction.cpp msgid "Digging and Mining" -msgstr "挖掘採礦" +msgstr "挖掘與採礦" #: src/construction.cpp src/init.cpp msgid "Furniture" @@ -112303,7 +113630,7 @@ msgstr "裝飾" #: src/construction.cpp msgid "Farming and Woodcutting" -msgstr "務農與伐木" +msgstr "種植與伐木" #: src/construction.cpp src/iuse_actor.cpp msgid "Reinforcing" @@ -112311,7 +113638,7 @@ msgstr "強化" #: src/construction.cpp src/iuse_actor.cpp msgid "Repairing" -msgstr "修復" +msgstr "修理" #: src/construction.cpp msgid "Others" @@ -112319,73 +113646,73 @@ msgstr "其他" #: src/construction.cpp msgid "Move tab right" -msgstr "移動到右分頁" +msgstr "移到下個分頁" #: src/construction.cpp msgid "Move tab left" -msgstr "移動到左分頁" +msgstr "移到上個分頁" #: src/construction.cpp #, c-format msgid "Press %s or %s to tab." -msgstr "按 %s 或 %s 切換。" +msgstr "按 %s / %s 切換分頁。" #: src/construction.cpp #, c-format msgid "Press %s to search." -msgstr "按 %s 搜索。" +msgstr "按 %s 篩選。" #: src/construction.cpp #, c-format msgid "Press %s to toggle unavailable constructions." -msgstr "按 %s 來切換能建設的項目。" +msgstr "按 %s 切換能建造的項目。" #: src/construction.cpp #, c-format msgid "Press %s to view and edit key-bindings." -msgstr "按下 %s 來檢視與編輯按鍵。" +msgstr "按 %s 檢視熱鍵設定。" #: src/construction.cpp msgid "Stage/Variant #" -msgstr "" +msgstr "階段/變化 #" #: src/construction.cpp msgid "Result: " -msgstr "" +msgstr "建造結果: " -#: src/construction.cpp src/crafting_gui.cpp src/recipe.cpp +#: src/construction.cpp src/crafting_gui.cpp msgid "N/A" -msgstr "不適用" +msgstr "N/A" #: src/construction.cpp msgid "Required skills: " -msgstr "" +msgstr "技能需求: " #: src/construction.cpp msgid "Requires: " -msgstr "" +msgstr "地形需求: " #: src/construction.cpp msgid "Annotation: " -msgstr "" +msgstr "備註: " #: src/construction.cpp #, c-format msgid "Press %s to show previous stage(s)." -msgstr "按 %s 顯示上一個階段。" +msgstr "按 %s 顯示上一個階段。" #: src/construction.cpp #, c-format msgid "Press %s to show next stage(s)." -msgstr "按 %s 顯示下一個階段。" +msgstr "按 %s 顯示下一個階段。" #: src/construction.cpp msgid "You can't build that!" -msgstr "你無法建設該物!" +msgstr "你無法建造那個!" #: src/construction.cpp msgid "Construct where?" -msgstr "在哪建設?" +msgstr "建造哪邊?" #: src/construction.cpp #, c-format @@ -112400,7 +113727,7 @@ msgstr "%s 看著你工作…" #: src/construction.cpp #, c-format msgid "You finish your construction: %s." -msgstr "你完成了建設: %s。" +msgstr "你完成了 %s。" #: src/construction.cpp src/veh_interact.cpp msgid "Enter new vehicle name:" @@ -112409,7 +113736,7 @@ msgstr "輸入新的車輛名稱:" #: src/construction.cpp #, c-format msgid "That %s can not be disassembled!" -msgstr "這個 %s 無法拆解!" +msgstr "這個 %s 無法被拆解!" #: src/construction.cpp #, c-format @@ -112418,7 +113745,7 @@ msgstr "你拆解了 %s。" #: src/construction.cpp msgid "The rock feels much warmer than normal. Proceed?" -msgstr "這裡的岩石感覺比正常情況還要來得溫暖。繼續挖掘?" +msgstr "這裡的岩石感覺比正常情況還要來得溫暖許多。繼續挖掘?" #: src/construction.cpp msgid "You just tunneled into lava!" @@ -112427,119 +113754,123 @@ msgstr "你挖到了岩漿!" #: src/construction.cpp msgctxt "memorial_male" msgid "Dug a shaft into lava." -msgstr "挖一個豎井直通岩漿。" +msgstr "挖了一個直通岩漿的豎井。" #: src/construction.cpp msgctxt "memorial_female" msgid "Dug a shaft into lava." -msgstr "挖一個豎井直通岩漿。" +msgstr "挖了一個直通岩漿的豎井。" #: src/construction.cpp msgid "You dig into a preexisting space, and improvise a ladder." -msgstr "你挖到了一個有著天然樓梯的洞窟。" +msgstr "你挖到了一個早已存在的空間, 並且搭建了一座臨時梯子。" #: src/construction.cpp msgid "You dig a stairway, adding sturdy timbers and a rope for safety." -msgstr "你挖出一座樓梯, 並加上堅固的木材和繩子以確保安全。" +msgstr "你挖出了一座樓梯, 並加上了堅固的木材和繩索以確保安全。" #: src/construction.cpp msgid "You drill out a passage, heading deeper underground." -msgstr "你鑽了一個通道, 前往更深的地下。" +msgstr "你鑽出了一條通道, 通往更深的地下。" #: src/construction.cpp msgid "The rock overhead feels hot. You decide *not* to mine magma." -msgstr "前方的岩石感覺滾燙。你決定不要再挖以免挖到岩漿。" +msgstr "上方的岩石感覺很燙。你決定 *停止* 採礦以免挖到岩漿。" #: src/construction.cpp msgid "The rock above is rather damp. You decide *not* to mine water." -msgstr "上方的岩石相當潮溼。你決定不要再挖以免挖到地下水。" +msgstr "上方的岩石相當潮溼。你決定 *停止* 採礦以免挖到水源。" #: src/construction.cpp msgid "You drill out a passage, heading for the surface." -msgstr "你挖了條直通地面的通道。" +msgstr "你鑽出了一條通道, 通往地表。" #: src/construction.cpp msgid "After boarding up the window the curtains and curtain rod are left." -msgstr "把窗戶加固後, 剩下了窗簾和窗簾桿。" +msgstr "你加固了窗戶, 並拆解出一些窗簾和窗簾桿。" + +#: src/construction.cpp +msgid "You gather some clay." +msgstr "你收集了一些黏土。" #: src/construction.cpp msgid "You gather some sand." -msgstr "你收集了一些沙。" +msgstr "你收集了一些沙子。" #: src/construction.cpp -msgid "You gather some clay." -msgstr "你收集了一些黏土。" +msgid "You gather some materials." +msgstr "你收集了一些材料。" #: src/construction.cpp msgid "You cannot build there!" -msgstr "你不能在那建設!" +msgstr "你無法在那裡建造!" #: src/construction.cpp msgid "You cannot deconstruct this!" -msgstr "" +msgstr "你無法拆解這個!" #: src/construction.cpp msgid "Time to complete: " -msgstr "" +msgstr "建造耗時: " #: src/consumption.cpp msgid "That doesn't look edible." -msgstr "這東西看起來不可食用。" +msgstr "它看起來不能食用。" #: src/consumption.cpp msgid "This is full of dirt after being on the ground." -msgstr "" +msgstr "它被放到地上後沾滿了泥土。" #: src/consumption.cpp src/iuse.cpp src/iuse.cpp src/iuse.cpp #: src/iuse_actor.cpp src/iuse_actor.cpp src/iuse_actor.cpp src/mutation.cpp #: src/player.cpp msgid "You can't do that while underwater." -msgstr "你無法在水下這樣做。" +msgstr "你無法在水下那麼做。" #: src/consumption.cpp msgid "That doesn't look edible in its current form." -msgstr "以它目前的狀態, 看似不能食用。" +msgstr "它目前的狀態看起來不能食用。" #: src/consumption.cpp msgid "It's frozen solid. You must defrost it before you can eat it." -msgstr "" +msgstr "它冰凍成固體了。你必須先解凍它才能食用它。" #: src/consumption.cpp msgid "You can't drink it while it's frozen." -msgstr "" +msgstr "你無法在它冰凍時飲用它。" #: src/consumption.cpp src/player.cpp #, c-format msgid "You need a %s to consume that!" -msgstr "你需要 %s 才能消化!" +msgstr "你需要一個 %s 才能食用它! " #: src/consumption.cpp msgid "We can't eat that. It's not right for us." -msgstr "我們不能吃那個。這不是給我們的。" +msgstr "我們不能吃那個, 它對我們來說不合適。" #: src/consumption.cpp msgid "Ugh, you can't drink that!" -msgstr "噁, 你喝不了那東西!" +msgstr "痾, 你喝不了那東西! " #: src/consumption.cpp msgid "Eww. Inedible plant stuff!" -msgstr "噁。不能吃的植物!" +msgstr "噁。這堆植物玩意兒不能吃! " #: src/consumption.cpp msgid "The thought of eating that makes you feel sick." -msgstr "" +msgstr "光是想到要吃它就讓你覺得不舒服。" #: src/consumption.cpp msgid "This is rotten and smells awful!" -msgstr "它已經腐爛了, 散發出可怕的味道!" +msgstr "它已經腐敗了, 散發出可怕的味道!" #: src/consumption.cpp msgid "The thought of eating human flesh makes you feel sick." -msgstr "" +msgstr "光是想到要吃人肉就讓你覺得不舒服。" #: src/consumption.cpp msgid "You still feel nauseous and will probably puke it all up again." -msgstr "" +msgstr "你仍然感到噁心, 並且可能再次嘔吐。" #: src/consumption.cpp msgid "Your stomach won't be happy (allergy)." @@ -112551,25 +113882,25 @@ msgstr "你的胃不太開心 (過敏)。" #. character. #: src/consumption.cpp msgid "Your stomach won't be happy (not rotten enough)." -msgstr "你的胃不太開心 (不夠腐爛)。" +msgstr "你的胃不太開心 (不夠腐敗)。" #: src/consumption.cpp msgid "You're full already and will be forcing yourself to eat." -msgstr "你已經吃飽了, 但你正要強迫自己繼續吃。" +msgstr "你已經吃飽了, 正要強迫自己繼續吃。" #: src/consumption.cpp msgid "You will not be able to finish it all." -msgstr "你將無法全部吃完。" +msgstr "你的胃裝不下那麼多。" #: src/consumption.cpp #, c-format msgid "Eat your %s anyway?" -msgstr "仍然要吃 %s ?" +msgstr "仍然要吃 %s?" #: src/consumption.cpp #, c-format msgid "Drink your %s anyway?" -msgstr "仍然要喝 %s ?" +msgstr "仍然要喝 %s?" #: src/consumption.cpp #, c-format @@ -112591,95 +113922,95 @@ msgid "" "You've begun stockpiling calories and liquid for hibernation. You get the " "feeling that you should prepare for bed, just in case, but...you're hungry " "again, and you could eat a whole week's worth of food RIGHT NOW." -msgstr "你已經開始為冬眠囤積了食物和飲料。保險起見, 你覺得你應該準備睡了, 但是...你又餓了, 你現在可以立即吃下整整一星期的食物。" +msgstr "你已經開始為冬眠囤積熱量和水分。保險起見, 你覺得你應該準備睡了, 但是… 你又餓了, 你現在可以立即可以吃下整整一個星期的食物!" #: src/consumption.cpp #, c-format msgid "Ick, this %s doesn't taste so good..." -msgstr "噁, %s 嚐起來味道不是很好..." +msgstr "噁, 這個 %s 嚐起來味道不是很好…" #: src/consumption.cpp #, c-format msgid "Mmm, this %s tastes delicious..." -msgstr "嗯嗯, 這個 %s 真美味..." +msgstr "嗯嗯, 這個 %s 真美味…" #: src/consumption.cpp #, c-format msgid " assimilates a %s." -msgstr " 同化了 %s." +msgstr " 吸收了 %s。" #: src/consumption.cpp #, c-format msgid "You assimilate your %s." -msgstr "你同化了你的 %s ." +msgstr "你吸收了 %s。" #: src/consumption.cpp #, c-format msgid "Ick, this %s (rotten) doesn't taste so good..." -msgstr "噁, %s (腐爛) 嘗起來味道不是很好..." +msgstr "噁, %s (腐敗) 嚐起來味道不是很好…" #: src/consumption.cpp #, c-format msgid "You drink your %s (rotten)." -msgstr "你喝下你的 %s (腐爛的)。" +msgstr "你喝下了 %s (腐敗)。" #: src/consumption.cpp #, c-format msgid " drinks a %s." -msgstr " 喝下 %s." +msgstr " 喝下了 %s。" #: src/consumption.cpp #, c-format msgid "You drink your %s." -msgstr "你喝下你的 %s。" +msgstr "你喝下了 %s。" #: src/consumption.cpp #, c-format msgid "You eat your %s (rotten)." -msgstr "你吃下你的 %s (腐爛的)。" +msgstr "你吃下了 %s (腐敗)。" #: src/consumption.cpp #, c-format msgid " eats a %s." -msgstr " 吃下 %s." +msgstr " 吃下了 %s。" #: src/consumption.cpp #, c-format msgid "You eat your %s." -msgstr "你吃了你的 %s。" +msgstr "你吃下了 %s。" #: src/consumption.cpp msgid "You feast upon the human flesh, and in doing so, devour their spirit." -msgstr "你大快朵頤眼前的人肉, 這麼做, 也讓你吞噬他們的靈魂。" +msgstr "你享受了一頓人肉盛宴, 同時吞噬了他們的靈魂。" #: src/consumption.cpp msgid "You feast upon the human flesh." -msgstr "你享受一頓人肉盛宴。" +msgstr "你享受了一頓人肉盛宴。" #: src/consumption.cpp msgid "You consume the sacred human flesh." -msgstr "你享受一頓神聖的人肉盛宴。" +msgstr "你享受了一頓神聖的人肉盛宴。" #: src/consumption.cpp msgid "You indulge your shameful hunger." -msgstr "你放縱你可恥的飢餓感。" +msgstr "你放縱了你可恥的飢餓感。" #: src/consumption.cpp msgid "You greedily devour the taboo meat." -msgstr "你貪婪地吞食禁忌之肉。" +msgstr "你貪婪地吞噬了禁忌之肉。" #: src/consumption.cpp msgid "Meh. You've eaten worse." -msgstr "嘛。你吃過更難吃的。" +msgstr "呣。你吃過更難吃的。" #: src/consumption.cpp msgid "" "This is probably going to count against you if there's still an afterlife." -msgstr "如果有來世, 這應該會算在你頭上。" +msgstr "如果有來世, 這筆帳應該會算在你頭上。" #: src/consumption.cpp msgid "You feel horrible for eating a person." -msgstr "你覺得吃人肉很可怕。" +msgstr "吃下了一個人類讓你感到恐怖。" #: src/consumption.cpp msgid "" @@ -112689,95 +114020,95 @@ msgstr "你試圖忽略它糊狀的口感, 但是它殘留的餘味實在糟透 #: src/consumption.cpp msgid "Yuck! How can anybody eat this stuff?" -msgstr "噁! 怎麼有人敢吃這玩意?" +msgstr "噁! 怎麼有人敢吃這玩意兒?" #: src/consumption.cpp msgid "Mmm, junk food." -msgstr "" +msgstr "呣, 垃圾食物。" #: src/consumption.cpp msgid "When life's got you down, there's always sugar." -msgstr "" +msgstr "當生活讓你感到失望時, 至少還有糖。" #: src/consumption.cpp msgid "They may do what they must... you've already won." -msgstr "" +msgstr "他們或許還會做出什麼… 但你已經勝利了。" #: src/consumption.cpp msgid "Your stomach begins gurgling and you feel bloated and ill." -msgstr "你的胃開始翻攪, 並覺得浮腫與生病。" +msgstr "你的胃開始翻攪, 並且感到腹脹與想吐。" #: src/consumption.cpp msgid "You find the sweet taste of honey surprisingly palatable." -msgstr "你驚訝的發現蜂蜜甜味中的美味." +msgstr "你發現蜂蜜的甜味帶有驚人的美味。" #: src/consumption.cpp msgid "You feast upon the sweet honey." -msgstr "你享受一頓蜂蜜盛宴。" +msgstr "你享受了一頓蜂蜜盛宴。" #: src/consumption.cpp msgid "You can't finish it all!" -msgstr "你吃不下了!" +msgstr "你的胃裝不下了!" #: src/consumption.cpp msgid "You gorge yourself, preparing to hibernate." -msgstr "你攝入食物, 準備冬眠。" +msgstr "你飽餐了一頓, 準備冬眠。" #: src/consumption.cpp msgid "You feel stocked for a day or two. Got your bed all ready and secured?" -msgstr "你覺得囤積了一兩天。找到安全睡覺的地方了嗎?" +msgstr "你已經囤積了一兩天的食物。找到安全睡覺的地方了嗎?" #: src/consumption.cpp msgid "" "Mmm. You can still fit some more in...but maybe you should get comfortable " "and sleep." -msgstr "嗯嗯嗯。你覺得還能再吃點什麼...不過比較起來你更想舒舒服服地睡上一覺。" +msgstr "嗯嗯嗯。你覺得還能再吃點什麼… 不過你更想舒舒服服地睡上一覺。" #: src/consumption.cpp msgid "That filled a hole! Time for bed..." -msgstr "吃飽啦! 該睡覺了…" +msgstr "吃飽啦! 該是時候睡覺了…" #: src/consumption.cpp msgid "You feel as though you're going to split open! In a good way?" -msgstr "你感覺身體似乎要爆開! 卻不是件壞事?" +msgstr "你感覺自己似乎要分裂了! 似乎不壞?" #. ~slimespawns have *small voices* which may be the Nice equivalent #. ~of the Rat King's ALL CAPS invective. Probably shared-brain telepathy. #: src/consumption.cpp msgid "hey, you look like me! let's work together!" -msgstr "嘿, 你真像我! 我們一起行動吧!" +msgstr "嘿, 你看起來真像我! 我們一起行動吧!" #: src/consumption.cpp #, c-format msgid "You feel the %s filling you out." -msgstr "你感到 %s 充滿你的身體." +msgstr "你感到 %s 填補了你的身體。" #: src/consumption.cpp #, c-format msgid " looks better after eating the %s." -msgstr "吃下 %s 之後看起來好多了。" +msgstr " 吃下 %s 之後看起來好多了。" #: src/consumption.cpp msgid "Your internal power storage is fully powered." -msgstr "您的內部能量儲存室已完全充滿。" +msgstr "您的內部能量儲存室已經完全充滿了。" #: src/consumption.cpp msgid "'s internal power storage is fully powered." -msgstr "的內部能量儲存室已完全充滿。" +msgstr " 的內部能量儲存室已完全充滿了。" #: src/consumption.cpp #, c-format msgid "You recharge your battery system with the %s." -msgstr "你使用 %s 為電池系統充電。" +msgstr "你使用了 %s 為電池系統充電。" #: src/consumption.cpp #, c-format msgid " recharges their battery system with the %s." -msgstr "使用 %s 為電池系統充電。" +msgstr " 使用了 %s 為電池系統充電。" #: src/consumption.cpp msgid "That is a LOT of plutonium. Are you sure you want that much?" -msgstr "那可是很多的鈽, 你確定你要那麼多?" +msgstr "那可是 *很多* 的鈽, 你確定要那麼多嗎?" #: src/consumption.cpp #, c-format @@ -112787,7 +114118,7 @@ msgstr "你把 %s 裝填到你的反應爐中。" #: src/consumption.cpp #, c-format msgid " pours %s into their reactor's tank." -msgstr "把 %s 裝填到他的反應爐中。" +msgstr " 把 %s 裝填到他的反應爐中。" #: src/consumption.cpp #, c-format @@ -112798,7 +114129,7 @@ msgstr "你消化了 %s, 但無法由它獲得能量。" #, c-format msgid "" " digests their %s for energy, but fails to acquire energy from it." -msgstr "消化 %s 以產生能量, 但無法從它獲得能量。" +msgstr " 消化了 %s, 但無法由它獲得能量。" #: src/consumption.cpp #, c-format @@ -112812,7 +114143,7 @@ msgstr "你消化了 %s, 但因為你的能量已滿而浪費了能量。" msgid "" " digests a %s for energy, they're fully powered already, so the " "energy is wasted." -msgstr "消化 %s 以產生能量, 但因為能量已滿而浪費了能量。" +msgstr " 消化了 %s, 但因為他的能量已滿而浪費了能量。" #: src/consumption.cpp #, c-format @@ -112824,7 +114155,7 @@ msgstr[0] "你消化了 %s 並轉換成 %d 點能量。" #, c-format msgid " digests a %s and recharges %d point of energy." msgid_plural " digests a %s and recharges %d points of energy." -msgstr[0] "消化了 %s 並轉換成 %d 點能量。" +msgstr[0] " 消化了 %s 並轉換成 %d 點能量。" #: src/craft_command.cpp src/crafting.cpp src/veh_interact.cpp msgid " (nearby)" @@ -112848,19 +114179,19 @@ msgstr "工具: " #: src/crafting.cpp src/iuse.cpp msgid "Your morale is too low to craft..." -msgstr "你士氣低落無法製作物品..." +msgstr "你的士氣太低落, 無法製作物品…" #: src/crafting.cpp msgid "You can't see to craft!" -msgstr "看不清無法製作!" +msgstr "你看不到, 無法製作!" #: src/crafting.cpp msgid "Overmap terrain building recipes are not implemented yet!" -msgstr "" +msgstr "大地圖地形建造配方尚未實裝!" #: src/crafting.cpp msgid "Craft something first" -msgstr "先製作一些東西" +msgstr "請先製作一些東西。" #: src/crafting.cpp msgid "You can no longer make that craft!" @@ -112869,7 +114200,7 @@ msgstr "你無法繼續製作物品!" #: src/crafting.cpp #, c-format msgid "You don't have anything to store %s in!" -msgstr "你沒有能夠存放 %s 的容器!" +msgstr "你沒有可以容納 %s 的容器!" #: src/crafting.cpp #, c-format @@ -112884,7 +114215,7 @@ msgstr "%s 協助了你的製作…" #: src/crafting.cpp #, c-format msgid "%s could assist you with a batch..." -msgstr "批量製作時 %s 能夠幫上忙…" +msgstr "%s 可以在批量製作時協助你…" #: src/crafting.cpp #, c-format @@ -112894,22 +114225,22 @@ msgstr "%s 看著你製作…" #: src/crafting.cpp #, c-format msgid "You fail to make the %s, and waste some materials." -msgstr "你製作 %s 失敗了, 並損失了一些材料。" +msgstr "你製作 %s 失敗了, 並且損失了一些材料。" #: src/crafting.cpp #, c-format msgid "You fail to make the %s, but don't waste any materials." -msgstr "你製作 %s 失敗了, 但是沒有損失材料。" +msgstr "你製作 %s 失敗了, 但是沒有損失任何材料。" #: src/crafting.cpp #, c-format msgid "You craft %s from memory." -msgstr "你憑記憶製作了 %s。" +msgstr "你憑著記憶製作了 %s。" #: src/crafting.cpp #, c-format msgid "You craft %s using a book as a reference." -msgstr "你參考書籍製作了 %s 。" +msgstr "你參考書籍製作了 %s。" #: src/crafting.cpp #, c-format @@ -112929,23 +114260,33 @@ msgstr "%s (%d/%d 在身上)" #: src/crafting.cpp #, c-format msgid "%s (%d/%d nearby & on person)" -msgstr "%s (%d/%d 在附近 & 在身上)" +msgstr "%s (%d/%d 在附近與身上)" #: src/crafting.cpp msgid "Use which component?" -msgstr "使用哪個元件?" +msgstr "要使用哪個元件?" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges nearby)" +msgstr "%s (%d/%d 單位在附近)" + +#: src/crafting.cpp +#, c-format +msgid "%s (%d/%d charges on person)" +msgstr "%s (%d/%d 單位在身上)" #: src/crafting.cpp msgid "Use which tool?" -msgstr "使用哪個工具?" +msgstr "要使用哪個工具?" #: src/crafting.cpp msgid "You cannot disassemble this." -msgstr "你不能拆解它。" +msgstr "你無法拆解這個。" #: src/crafting.cpp msgid "It's rotten, I'm not taking that apart." -msgstr "這個東西腐爛了, 我才不要吃。" +msgstr "它腐敗了, 我才不要拆解它。" #: src/crafting.cpp #, c-format @@ -112967,7 +114308,7 @@ msgstr "你需要 %s。" #, c-format msgid "You need a %s with %d charge." msgid_plural "You need a %s with %d charges." -msgstr[0] "你需要有 %s 並至少有 %d 電量。" +msgstr[0] "你需要一個 %s, 並且至少要有 %d 電量。" #: src/crafting.cpp #, c-format @@ -112977,6 +114318,10 @@ msgid "" "Really disassemble?\n" "You feel you may be able to understand this object's construction.\n" msgstr "" +"拆解 %s 應該可以獲得:\n" +"%s\n" +"確定要拆解?\n" +"你覺得你或許能夠理解這個物件的構造。\n" #: src/crafting.cpp #, c-format @@ -112987,7 +114332,7 @@ msgid "" msgstr "" "拆解 %s 應該可以獲得:\n" "%s\n" -"確定拆解?" +"確定要拆解?" #: src/crafting.cpp msgid "The item has vanished." @@ -112996,37 +114341,37 @@ msgstr "物品消失了。" #: src/crafting.cpp msgid "" "The item might be gone, at least it is not at the expected position anymore." -msgstr "這個東西消失了, 樂觀點的說, 它只是不在你所預期的位子上。" +msgstr "物品消失了, 至少它已經不在預期的位子上。" #: src/crafting.cpp #, c-format msgid "You disassemble the %s into its components." -msgstr "你把 %s 拆解成數個零件。" +msgstr "你把 %s 拆解成了數個零件。" #: src/crafting.cpp #, c-format msgid "You fail to recover %s." -msgstr "你未能回收 %s。" +msgstr "你回收 %s 失敗了。" #. ~ %1s - material, %2$s - disassembled item #: src/crafting.cpp #, c-format msgid "You fail to recover %1$s from the %2$s." -msgstr "你未能將 %1$s 從 %2$s 回收。" +msgstr "你從 %2$s 回收 %1$s 失敗了。" #: src/crafting.cpp #, c-format msgid "You learned a recipe for %s from disassembling it!" -msgstr "你從這次拆解中學到了製作 %s 配方!" +msgstr "你藉由拆解 %s 學會了它的製作配方!" #: src/crafting.cpp #, c-format msgid "You might be able to learn a recipe for %s if you disassemble another." -msgstr "如果你再拆解另一個, 你也許能學到 %s 的製作配方。" +msgstr "如果你再拆解另一個 %s, 或許能學會它的製作配方。" #: src/crafting.cpp msgid "If you had better skills, you might learn a recipe next time." -msgstr "如果你有較高的技能, 也許能在下次學到新配方。" +msgstr "如果你有較高的技能, 或許能在下次學會新的製作配方。" #: src/crafting_gui.cpp msgid "NONCRAFT" @@ -113038,40 +114383,40 @@ msgstr "副產物:" #: src/crafting_gui.cpp msgid "Press to attempt to craft object." -msgstr "按下 開始製作物品。" +msgstr "按 [Enter] 嘗試製作物品。" #: src/crafting_gui.cpp #, c-format msgid "" "[E]: Describe, [F]ind, [R]eset, [m]ode, [s]how/hide, Re[L]ated, %s [?] " "keybindings" -msgstr "" +msgstr "[E] 描述 [F] 篩選 [R] 重置 [m] 模式 [s] 顯示/隱藏 [L] 相關 %s [?] 熱鍵設定" #: src/crafting_gui.cpp msgid "[b]atch" -msgstr "[b]批量" +msgstr "[b] 批量" #: src/crafting_gui.cpp msgid "cancel [b]atch" -msgstr "取消[b]批量" +msgstr "[b] 取消批量" #: src/crafting_gui.cpp #, c-format msgid "" "[E]: Describe, [F]ind, [m]ode, [s]how/hide, Re[L]ated, %s [?] keybindings" -msgstr "" +msgstr "[E] 描述 [F] 篩選 [m] 模式 [s] 顯示/隱藏 [L] 相關 %s [?] 熱鍵設定" #: src/crafting_gui.cpp msgid "" "[E]: Describe, [F]ind, [R]eset, [m]ode, [s]how/hide, Re[L]ated, [b]atch [?] " "keybindings" -msgstr "" +msgstr "[E] 描述 [F] 篩選 [R] 重置 [m] 模式 [s] 顯示/隱藏 [L] 相關 [b] 批量 [?] 熱鍵設定" #: src/crafting_gui.cpp msgid "" "[E]: Describe, [F]ind, [m]ode, [s]how/hide, Re[L]ated, [b]atch [?] " "keybindings" -msgstr "" +msgstr "[E] 描述 [F] 篩選 [m] 模式 [s] 顯示/隱藏 [L] 相關 [b] 批量 [?] 熱鍵設定" #: src/crafting_gui.cpp #, c-format @@ -113085,41 +114430,41 @@ msgstr "配方尚未記住" #: src/crafting_gui.cpp #, c-format msgid "Written in: %s" -msgstr "記載於: %s" +msgstr "記載於: %s" #: src/crafting_gui.cpp #, c-format -msgid "Skills used: %s" -msgstr "使用到技能: %s" +msgid "Primary skill used: %s" +msgstr "主要技能類型: %s" #: src/crafting_gui.cpp #, c-format -msgid "Required skills: %s" -msgstr "技能需求: %s" +msgid "Difficulty: %d" +msgstr "主要技能難度: %d" #: src/crafting_gui.cpp #, c-format -msgid "Difficulty: %d" -msgstr "難度: %d" +msgid "Your skill level: %d" +msgstr "你的技能等級: %d" #: src/crafting_gui.cpp -msgid "Your skill level: N/A" -msgstr "技能等級: N/A" +msgid "Your skill level: N/A" +msgstr "你的技能等級: N/A" #: src/crafting_gui.cpp #, c-format -msgid "Your skill level: %d" -msgstr "技能等級: %d" +msgid "Other skills used: %s" +msgstr "其他技能需求: %s" #: src/crafting_gui.cpp #, c-format -msgid "Time to complete: %s" -msgstr "完成所需時間: %s" +msgid "Time to complete: %s" +msgstr "製作耗時: %s" #: src/crafting_gui.cpp #, c-format -msgid "Dark craftable? %s" -msgstr "黑暗中製作: %s" +msgid "Dark craftable? %s" +msgstr "在黑暗中製作? %s" #: src/crafting_gui.cpp src/defense.cpp msgid "Easy" @@ -113131,7 +114476,7 @@ msgstr "困難" #: src/crafting_gui.cpp msgid "Impossible" -msgstr "不可能" +msgstr "無法" #: src/crafting_gui.cpp msgid "v (more)" @@ -113139,50 +114484,102 @@ msgstr "v (更多)" #: src/crafting_gui.cpp msgid "You can't do that!" -msgstr "你不能這樣做!" +msgstr "你無法那麼做!" #: src/crafting_gui.cpp msgid "Nothing selected!" msgstr "沒有選擇東西!" -#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp -msgid "Search:" -msgstr "搜尋: " +#: src/crafting_gui.cpp +msgid "quality of resulting item" +msgstr "配方製品的特性" + +#: src/crafting_gui.cpp +msgid "full description of resulting item (slow)" +msgstr "配方製品的完整描述 (速度緩慢)" + +#. ~ Example result description search term +#: src/crafting_gui.cpp +msgid "reach attack" +msgstr "伸延攻擊" + +#: src/crafting_gui.cpp +msgid "component required to craft" +msgstr "配方製品的元件需求" + +#: src/crafting_gui.cpp +msgid "primary skill used to craft" +msgstr "用於製作的主要技能" + +#: src/crafting_gui.cpp +msgid "any skill used to craft" +msgstr "用於製作的任何技能" + +#: src/crafting_gui.cpp +msgid "quality required to craft" +msgstr "用於製作的特性需求" + +#: src/crafting_gui.cpp +msgid "tool required to craft" +msgstr "用於製作的工具需求" + +#: src/crafting_gui.cpp +msgid "recipes which are hidden or not" +msgstr "配方是否被隱藏" + +#: src/crafting_gui.cpp +msgid "yes" +msgstr "是" + +#: src/crafting_gui.cpp +msgid "recipes which are memorized or not" +msgstr "配方是否被記住" #: src/crafting_gui.cpp msgid "" -"Special prefixes for requirements:\n" -" [t] search tools\n" -" [c] search components\n" -" [q] search qualities\n" -" [s] search skills\n" -"Special prefixes for results:\n" -" [Q] search qualities\n" -"Other:\n" -" [h] search for hidden\n" -" [m] search for memorized or not\n" -"Examples:\n" -" t:soldering iron\n" -" c:two by four\n" -" q:metal sawing\n" -" s:cooking\n" -" Q:fine bolt turning\n" -" h:yes\n" -" m:no" +"The default is to search result names. Some single-character prefixes can be used with a colon (:) to search in other ways.\n" +"\n" +"Examples:\n" msgstr "" +"預設為搜尋配方製品的名稱。\n" +"可以使用字母前綴搭配帽號 (:) 以啟用特殊的搜尋方式。\n" +"\n" +"範例:\n" + +#: src/crafting_gui.cpp +msgid "shirt" +msgstr "上衣" + +#: src/crafting_gui.cpp +#, c-format +msgid " %s%.*s %s\n" +msgstr " %s%.*s %s\n" + +#: src/crafting_gui.cpp +msgid "name of resulting item" +msgstr "配方製品的名稱" + +#: src/crafting_gui.cpp +#, c-format +msgid " %c:%s%.*s %s\n" +msgstr " %c:%s%.*s %s\n" + +#: src/crafting_gui.cpp src/newcharacter.cpp src/overmap_ui.cpp +msgid "Search:" +msgstr "搜尋: " #: src/crafting_gui.cpp msgid "RESULTS" -msgstr "" +msgstr "製品" #: src/crafting_gui.cpp msgid "Related recipes:" -msgstr "" +msgstr "相關配方:" #: src/crafting_gui.cpp #, c-format msgid "%s hidden" -msgstr "" +msgstr "%s 隱藏" #: src/crafting_gui.cpp msgid "can craft:" @@ -113201,13 +114598,9 @@ msgstr "太難過" msgid "slow %d%%" msgstr "緩慢 %d%%" -#: src/crafting_gui.cpp -msgid "yes" -msgstr "對" - #: src/crafting_gui.cpp msgid "Searched" -msgstr "已搜尋" +msgstr "搜尋結果" #: src/crafting_gui.cpp msgid "Batch" @@ -113295,43 +114688,43 @@ msgstr "你擊中 %s 造成 %d 傷害。" #: src/creature.cpp #, c-format msgid "%1$s shoots %2$s." -msgstr "%1$s 射擊 %2$s。" +msgstr "%1$s 射擊了 %2$s。" #: src/creature.cpp msgid "Severe pain" -msgstr "" +msgstr "劇烈的疼痛" #: src/creature.cpp msgid "Intense pain" -msgstr "" +msgstr "強烈的疼痛" #: src/creature.cpp msgid "Unmanageable pain" -msgstr "" +msgstr "難耐的疼痛" #: src/creature.cpp msgid "Distressing pain" -msgstr "" +msgstr "難過的疼痛" #: src/creature.cpp msgid "Distracting pain" -msgstr "" +msgstr "不安的疼痛" #: src/creature.cpp msgid "Moderate pain" -msgstr "" +msgstr "中度疼痛" #: src/creature.cpp msgid "Mild pain" -msgstr "" +msgstr "輕度疼痛" #: src/creature.cpp msgid "Minimal pain" -msgstr "" +msgstr "輕微疼痛" #: src/creature.cpp msgid "No pain" -msgstr "" +msgstr "無疼痛" #: src/creature.cpp msgid "Hostile" @@ -113349,25 +114742,30 @@ msgstr "友善" msgid "BUG: Behavior unnamed. (Creature::get_attitude_ui_data)" msgstr "BUG: 未命名行為。 (Creature::get_attitude_ui_data)" +#: src/debug.cpp +#, c-format +msgid "See %s for a full stack backtrace" +msgstr "查看 %s 完整的堆疊追蹤" + #: src/debug.cpp msgid "An error has occurred! Written below is the error report:" -msgstr "" +msgstr "發生錯誤! 以下是錯誤報告:" #: src/debug.cpp msgid "Press space bar to continue the game." -msgstr "" +msgstr "按 空白鍵 繼續遊戲。" #: src/debug.cpp msgid "" "Press I (or i) to also ignore this" " particular message in the future." -msgstr "" +msgstr "按 I (或 i) 將從此忽略此特定訊息。" #: src/debug.cpp msgid "" "Press C (or c) to copy this " "message to the clipboard." -msgstr "" +msgstr "按 C (或 c) 將此訊息複製到剪貼板。" #: src/debug_menu.cpp #, c-format @@ -113381,7 +114779,7 @@ msgstr "你傳送到子地圖 (%d,%d,%d)。" #: src/debug_menu.cpp msgid "Where is the desired overmap?" -msgstr "" +msgstr "想要的大地圖在哪呢?" #: src/debug_menu.cpp #, c-format @@ -113589,11 +114987,11 @@ msgstr "將 HP 設置為? 目前: %d" #: src/debug_menu.cpp #, c-format msgid "Set the morale to? Currently: %d" -msgstr "" +msgstr "把士氣設定為多少? 目前士氣: %d" #: src/debug_menu.cpp msgid "Rename:" -msgstr "" +msgstr "重新命名:" #: src/debug_menu.cpp #, c-format @@ -113601,6 +114999,8 @@ msgid "" "NPC: \n" "%s\n" msgstr "" +"NPC: \n" +"%s\n" #: src/debug_menu.cpp #, c-format @@ -113613,7 +115013,7 @@ msgstr "飢餓" #: src/debug_menu.cpp msgid "Starvation" -msgstr "" +msgstr "營養不良" #: src/debug_menu.cpp msgid "Thirst" @@ -113631,7 +115031,7 @@ msgstr "將飢餓度設置為? 目前: %d" #: src/debug_menu.cpp #, c-format msgid "Set starvation to? Currently: %d" -msgstr "" +msgstr "將營養不良設置為? 目前: %d" #: src/debug_menu.cpp #, c-format @@ -113646,7 +115046,7 @@ msgstr "將疲勞度設置為? 目前: %d" #: src/debug_menu.cpp #, c-format msgid "Set sleep deprivation to? Currently: %d" -msgstr "" +msgstr "將睡眠剝奪設定為多少? 目前: %d" #: src/debug_menu.cpp #, c-format @@ -113787,11 +115187,11 @@ msgstr "刪除任務 (缺乏適當的清理)" #: src/defense.cpp #, c-format msgid "Please wait as the map generates [ 0%% ]" -msgstr "請等待地圖生成 [ 0%% ]" +msgstr "正在生成地圖, 請稍候 [ 0%% ]" #: src/defense.cpp msgid "A caravan approaches! Press spacebar..." -msgstr "有商隊接近了! 按下空白鍵…" +msgstr "有商隊接近了! 請按空白鍵…" #: src/defense.cpp msgid "You don't need to sleep!" @@ -113804,7 +115204,7 @@ msgstr "你不能在 防禦模式 存檔!" #: src/defense.cpp #, c-format msgid "You cannot leave the %s behind!" -msgstr "你不能離開 %s !" +msgstr "你不能離開 %s!" #: src/defense.cpp #, c-format @@ -113878,11 +115278,11 @@ msgstr "防禦模式" #: src/defense.cpp msgid "Press direction keys to cycle, ENTER to toggle" -msgstr "按下方向鍵來循環, 按 ENTER 來切換" +msgstr "按方向鍵來循環, 按 Enter 來切換" #: src/defense.cpp msgid "Press S to start, ! to save as a template" -msgstr "按下 S 開始, 按下 ! 將其存檔成模板" +msgstr "按 S 開始, 按 ! 將其儲存為模板" #: src/defense.cpp msgid "Scenario:" @@ -114066,10 +115466,10 @@ msgid "" "Press %s to buy everything in your cart, %s to buy nothing." msgstr "" "商隊:\n" -"一開始先用上下鍵來選擇你想要的目錄。\n" -"按 %s 鍵切換目錄之間的選擇和物品的選擇。\n" -"用上下鍵選擇一個物品, 按 左/右 增加/減少數量。\n" -"按下 %s 結帳, 都不買按下 %s。" +"一開始先用上/下鍵來選擇你想要的分類。\n" +"按 %s 在分類選擇模式和物品選擇模式之間切換。\n" +"用上/下鍵選擇一個物品, 按左/右鍵來增加/減少數量。\n" +"按 %s 結帳, 都不買按 %s。" #: src/defense.cpp msgid "Really buy nothing?" @@ -114095,15 +115495,15 @@ msgstr "近戰武器" #: src/defense.cpp msgid "Ranged Weapons" -msgstr "" +msgstr "遠程武器" #: src/defense.cpp msgid "Ammuniton" -msgstr "" +msgstr "彈藥" #: src/defense.cpp msgid "Crafting & Construction Components" -msgstr "製作物品 & 建設 零件" +msgstr "製作 & 建設零件" #: src/defense.cpp msgid "Food & Drugs" @@ -114111,20 +115511,20 @@ msgstr "食物 & 藥物" #: src/defense.cpp msgid "Clothing & Armor" -msgstr "衣物 & 護具" +msgstr "衣物 & 護甲" #: src/defense.cpp msgid "Tools, Traps & Grenades" -msgstr "工具, 陷阱 & 手榴彈" +msgstr "工具、陷阱 & 手榴彈" #: src/defense.cpp msgid "Press ? for help." -msgstr "按 ? 看說明。" +msgstr "按 ? 檢視說明。" #: src/defense.cpp #, c-format msgid "Your Cash: %s" -msgstr "" +msgstr "你的金錢: %s" #: src/defense.cpp #, c-format @@ -114180,7 +115580,7 @@ msgstr "%s 出現了!" msgid "" "c to describe creatures, f to describe furniture, t to describe terrain, " "Esc/Enter to close." -msgstr "" +msgstr "[c] 顯示生物描述 [f] 顯示家具描述 [t] 顯示地形描述 [Esc 或 Enter] 離開" #: src/descriptions.cpp msgid "You do not see any creature here." @@ -114188,7 +115588,7 @@ msgstr "你沒看到任何生物。" #: src/descriptions.cpp msgid "You do not see any furniture here." -msgstr "你沒看到任何傢俱。" +msgstr "你沒看到任何家具。" #: src/descriptions.cpp msgid "You can't see the terrain here." @@ -114223,7 +115623,7 @@ msgstr "你能收獲下列物品:" #: src/dialogue_win.cpp #, c-format msgid "Dialogue: %s" -msgstr "" +msgstr "對話: %s" #: src/dialogue_win.cpp msgid "Your response:" @@ -114247,7 +115647,7 @@ msgstr "Shift+O: 打量態度" #: src/dump.cpp msgid "Loading content packs" -msgstr "正在載入內容包" +msgstr "正在讀取內容包" #: src/editmap.cpp msgctxt "item manipulation debug menu entry" @@ -114267,12 +115667,12 @@ msgstr "轉存到 save/jtest-*.txt" #: src/editmap.cpp msgctxt "map editor" msgid "[t]rap, [f]ield, [HJKL] move++, [v] showall" -msgstr "[t] 陷阱, [f] 地面, [HJKL] 移動++, [v] 顯示全部" +msgstr "[t]陷阱, [f]地面, [HJKL]移動++, [v]顯示全部" #: src/editmap.cpp msgctxt "map editor" msgid "[g] terrain/furn, [o] mapgen, [i]tems, [q]uit" -msgstr "[g] 地形/家具, [o] 地圖產生, [i]物品, [q]離開" +msgstr "[g]地形/家具, [o]地圖產生, [i]物品, [q]離開" #: src/editmap.cpp msgctxt "map editor state" @@ -114282,22 +115682,22 @@ msgstr "看四周" #: src/editmap.cpp #, c-format msgid "%d: %s; movecost %d" -msgstr "%d: %s; 移動消耗 %d" +msgstr "%d: %s, 移動消耗: %d" #: src/editmap.cpp #, c-format msgid "%d: %s; movecost %d movestr %d" -msgstr "%d: %s; 移動消耗 %d 移動字符 %d" +msgstr "%d: %s, 移動消耗: %d, 移動字符: %d" #: src/editmap.cpp #, c-format msgid "dist: %d u_see: %d v_in: %d scent: %d" -msgstr "距離: %d 你看見: %d v_in: %d 氣味: %d" +msgstr "距離: %d, 可視: %d, v_in: %d, 氣味: %d" #: src/editmap.cpp #, c-format msgid "sight_range: %d, daylight_sight_range: %d," -msgstr "可視範圍: %d, 日光可視範圍: %d," +msgstr "可視範圍: %d, 白天可視範圍: %d," #: src/editmap.cpp #, c-format @@ -114312,24 +115712,24 @@ msgstr "" #: src/editmap.cpp #, c-format msgid "outside: %d" -msgstr "外面: %d" +msgstr "戶外: %d" #: src/editmap.cpp msgid " [vehicle]" -msgstr " [車輛]" +msgstr "[車輛]" #: src/editmap.cpp msgid " [indoors]" -msgstr " [室內]" +msgstr "[室內]" #: src/editmap.cpp msgid " [roof]" -msgstr " [屋頂]" +msgstr "[屋頂]" #: src/editmap.cpp #, c-format msgid "field: %s (%d) density %d age %d" -msgstr "平地: %s (%d) 密度 %d 年齡 %d" +msgstr "平地: %s (%d), 密度: %d, 年齡: %d" #: src/editmap.cpp #, c-format @@ -114344,13 +115744,13 @@ msgstr "這裡有 %s。零件:" #: src/editmap.cpp #, c-format msgid "There is a %s there." -msgstr "這裡有 %s 。" +msgstr "這裡有 %s。" #: src/editmap.cpp #, c-format msgid "There is %d other item there as well." msgid_plural "There are %d other items there as well." -msgstr[0] "那裡還有其他 %d 件物品。" +msgstr[0] "這裡還有其他 %d 件物品。" #: src/editmap.cpp src/game.cpp #, c-format @@ -114360,7 +115760,7 @@ msgstr "塗鴉: %s" #: src/editmap.cpp #, c-format msgid "movecost %d" -msgstr "移動消耗 %d" +msgstr "移動消耗: %d" #: src/editmap.cpp msgid "[indoors] " @@ -114373,12 +115773,12 @@ msgstr "[屋頂] " #: src/editmap.cpp msgctxt "Map editor: terrain/furniture shortkeys" msgid "[s/tab] shape select, [m]ove, [<>^v] select" -msgstr "[s/tab] 形狀選擇, [m]移動, [<>^v] 選擇" +msgstr "[s/Tab]形狀選擇, [m]移動, [<>^v]選擇" #: src/editmap.cpp msgctxt "Map editor: terrain/furniture shortkeys" msgid "[enter] change, [g] change/quit, [q]uit, [v] showall" -msgstr "[enter] 更改, [g] 更改/離開, [q] 離開, [v] 顯示全部" +msgstr "[Enter]更改, [g]更改/離開, [q]離開, [v]顯示全部" #: src/editmap.cpp msgctxt "Map editor: terrain/furniture editing menu" @@ -114388,12 +115788,12 @@ msgstr "地形/家具" #: src/editmap.cpp msgctxt "Map editor: Field effects shortkeys" msgid "[s/tab] shape select, [m]ove, [<,>] density" -msgstr "[s/tab] 形狀選擇, [m]移動, [] 密度" +msgstr "[s/Tab]形狀選擇, [m]移動, []密度" #: src/editmap.cpp msgctxt "Map editor: Field effects shortkeys" msgid "[enter] edit, [q]uit, [v] showall" -msgstr "[enter] 編輯, [q] 離開, [v] 顯示全部" +msgstr "[Enter]編輯, [q]離開, [v]顯示全部" #: src/editmap.cpp msgctxt "Map editor: Editing field effects" @@ -114408,12 +115808,12 @@ msgstr "-清除-" #: src/editmap.cpp msgctxt "map editor: traps shortkeys" msgid "[s/tab] shape select, [m]ove, [v] showall" -msgstr "[s/tab] 形狀選擇, [m] 移動, [v] 顯示全部" +msgstr "[s/Tab]形狀選擇, [m]移動, [v]顯示全部" #: src/editmap.cpp msgctxt "map editor: traps shortkeys" msgid "[enter] change, [t] change/quit, [q]uit" -msgstr "[enter] 更換, [t] 更換並離開, [q] 離開" +msgstr "[Enter]更換, [t]更換並離開, [q]離開" #: src/editmap.cpp msgctxt "map editor: traps editing" @@ -114439,7 +115839,7 @@ msgstr "增加物品" #, c-format msgctxt "item manipulation debug menu entry" msgid "bday: %d" -msgstr "開始腐爛日: %d" +msgstr "開始腐敗日: %d" #: src/editmap.cpp #, c-format @@ -114470,15 +115870,15 @@ msgstr "增加物品" #: src/editmap.cpp msgid "[s] resize, [y] swap" -msgstr "[s] 調整, [y] 互換" +msgstr "[s]調整, [y]互換" #: src/editmap.cpp msgid "[m]move, [s]hape, [y] swap, [z] to start" -msgstr "[m]移動, [s]形狀, [y] 互換, [z] 開始" +msgstr "[m]移動, [s]形狀, [y]互換, [z]開始" #: src/editmap.cpp msgid "[enter] accept, [q] abort, [v] showall" -msgstr "[enter] 接受, [q] 中止, [v] 顯示全部" +msgstr "[Enter]接受, [q]中止, [v]顯示全部" #: src/editmap.cpp msgid "Moving selection" @@ -114539,11 +115939,11 @@ msgstr "更改大地圖 (不套用)" #: src/editmap.cpp msgid "[pgup/pgdn]: prev/next oter type" -msgstr "[pgup/pgdn]: 前一個/下一個 oter 種類" +msgstr "[pgup/pgdn]前一個/下一個 oter 種類" #: src/editmap.cpp msgid "[up/dn] select, [enter] accept, [q] abort" -msgstr "[up/dn] 選擇, [enter] 接受, [q] 中止" +msgstr "[up/dn]選擇, [Enter]接受, [q]中止" #. ~ message when applying the map generator #: src/editmap.cpp @@ -114574,7 +115974,7 @@ msgstr "" msgid "You must construct expansions in fields." msgstr "" -#: src/editmap.cpp src/mission_companion.cpp +#: src/editmap.cpp src/faction_camp.cpp msgid "" "Engine cannot support merging vehicles from two overmaps, please remove them" " from the OM tile." @@ -114591,7 +115991,7 @@ msgstr "" #: src/editmap.cpp msgctxt "map generator" msgid "[enter] accept, [q] abort" -msgstr "[enter] 接受, [q] 中止" +msgstr "[Enter]接受, [q]中止" #: src/editmap.cpp msgctxt "map generator" @@ -114606,7 +116006,7 @@ msgstr "移動" #: src/editmap.cpp msgctxt "map generator" msgid "[enter] change, [q]uit" -msgstr "[enter] 交換, [q] 離開" +msgstr "[Enter]交換, [q]離開" #: src/editmap.cpp msgctxt "map generator" @@ -114617,16 +116017,16 @@ msgstr "地圖產生戳記" msgid "" "The scariest thing in the world would be... if all the air in the world " "turned to WOOD!" -msgstr "世界上最可怕的事情就是...如果所有世上的空氣都變成活的!" +msgstr "世界上最恐怖的事情就是… 所有的空氣都變成了木頭!" #: src/effect.cpp msgid "" "Could Jesus microwave a burrito so hot, that he himself couldn't eat it?" -msgstr "耶穌會加熱個捲餅燙到自己都吃不了嗎?" +msgstr "耶穌會把捲餅加熱到連自己都吃不了嗎?" #: src/effect.cpp msgid "Science is all metaphor." -msgstr "科學是一切的假設。" +msgstr "科學就是隱喻。" #: src/effect.cpp msgid "Science is a liar sometimes." @@ -114634,19 +116034,19 @@ msgstr "科學有時候是謊言。" #: src/effect.cpp msgid "Science is... wait, what was I talking about again?" -msgstr "科學是... 等等, 我剛剛是說啥?" +msgstr "科學是… 等等, 我剛剛又在說啥?" #: src/effect.cpp msgid "" "Behind every good man there is a woman, and that woman was Martha " "Washington, man." -msgstr "在每一個成功的男人背後都有一個女人, 而那個女人就是馬莎·華盛頓 (美國首任總統華盛頓的妻子)。" +msgstr "每個成功的男人背後都有一個女人, 而那個女人就是馬莎·華盛頓。" #: src/effect.cpp msgid "" "Every day, George would come home, and she would have a big fat bowl waiting" " for him when he came in the door, man." -msgstr "每天喬治華盛頓回到家要進門的時候, 她都拿著一個大碗等著他。" +msgstr "每天喬治·華盛頓要回家的時候, 她都拿著一個大碗等著他進門。" #: src/effect.cpp msgid "She was a hip, hip, hip lady, man." @@ -114654,7 +116054,7 @@ msgstr "她是一個超級、超級、超級時髦的女人。" #: src/effect.cpp msgid "You ever see the back of a twenty dollar bill... on weed?" -msgstr "你看過 20 元美鈔的背面... 上面有畫大麻?" +msgstr "你是否看過大麻上畫著… 20 元美鈔的背面?" #: src/effect.cpp msgid "" @@ -114669,40 +116069,40 @@ msgstr "紅隊衝, 紅隊衝!" #: src/effect.cpp msgid "You have a sudden urge to flip your bible open to Genesis 1:29..." msgstr "" -"你突然有一股衝動, 想要把聖經打開翻到創世紀1:29...(神說、看哪、我將遍地上一切結種子的菜蔬、和一切樹上所結有核的果子、全賜給你們作食物。)" +"你突然有一股衝動, 想翻開聖經到創世紀 1:29… (神說、看哪、我將遍地上一切結種子的菜蔬、和一切樹上所結有核的果子、全賜給你們作食物。)" #: src/effect.cpp msgid "That rug really tied the room together..." -msgstr "這地毯真適合這個房間..." +msgstr "這地毯真適合這個房間…" #: src/effect.cpp msgid "I used to do drugs... I still do, but I used to, too." -msgstr "我以前做藥... 我現在還是, 但以前也是。" +msgstr "我以前常吸毒… 以前是, 現在也還是。" #: src/effect.cpp msgid "The herb reveals you to yourself." -msgstr "藥草讓你神清氣爽。" +msgstr "藥草向你揭示了你的自我。" #: src/effect.cpp msgid "" "Okay, like, the scariest thing in the world would be... if like you went to " "grab something and it wasn't there!" -msgstr "好吧, 那麼, 世上最可怕的事就是... 你伸出手想抓東西卻發現東西不在那!" +msgstr "好吧, 那麼, 世上最可怕的事情就是… 你伸手想抓住某樣東西卻發現東西不在那!" #: src/effect.cpp msgid "They call them fingers, but I never see them fing." -msgstr "他們把這些東西叫做手指, 但是我從來沒看過他們像手指動過。" +msgstr "他們把這些東西叫做手指, 但是我從來沒看過他們動得像手指。" #: src/effect.cpp msgid "... oh, there they go." -msgstr "...喔, 他們來了。" +msgstr "… 喔, 他們來了。" #: src/effect.cpp msgid "" "You suddenly realize that all matter is merely energy condensed to a slow " "vibration, and we are all one consciousness experiencing itself " "subjectively." -msgstr "你突然發現所有的事物都只是緩慢震動的匯集能量, 而我們經歷的都只是自身的主觀意識經歷。" +msgstr "你突然意識到所有的事物都只是緩慢震動的能量匯集, 而我們都只是意識的主觀經驗。" #: src/effect.cpp msgid "I usually only smoke in the late evening." @@ -114722,7 +116122,7 @@ msgstr "只是傍晚、晚上、跟深夜。" msgid "" "Occasionally, early afternoon, early mid-afternoon, or perhaps the late mid-" "afternoon." -msgstr "偶爾, 上午、中午、或是可能下午。" +msgstr "偶爾上午、中午、或可能是下午。" #: src/effect.cpp msgid "Oh, sometimes the early-mid-late-early-morning." @@ -114730,11 +116130,11 @@ msgstr "喔, 有時候是接近中午的早上。" #: src/effect.cpp msgid "...But never at dusk." -msgstr "...但絕對不是黃昏。" +msgstr "… 但絕對不是黃昏。" #: src/effect.cpp msgid "Dave's not here, man." -msgstr "戴夫不在這, 老兄。" +msgstr "戴夫不在這, 伙計。" #: src/effect.cpp msgid "Man, a cheeseburger sounds SO awesome right now." @@ -114742,11 +116142,11 @@ msgstr "天哪, 起司漢堡現在聽起來好讚哪。" #: src/effect.cpp msgid "Eh... maybe not." -msgstr "痾... 算了。" +msgstr "痾… 算了。" #: src/effect.cpp msgid "I guess, maybe, without the cheese... yeah." -msgstr "我想, 也許, 沒有起司... 好吧。" +msgstr "我想, 也許, 沒有起司… 好吧。" #: src/effect.cpp msgid "Walkin' down the hall, by myself, smokin' a j with fifty elves." @@ -114759,52 +116159,52 @@ msgstr "這大麻簡直是- 棒到不知該怎麼形容了。" #: src/effect.cpp #, c-format msgid "Strength +%d; " -msgstr "力量 +%d; " +msgstr "力量 +%d " #: src/effect.cpp #, c-format msgid "Strength %d; " -msgstr "力量 %d; " +msgstr "力量 %d " #: src/effect.cpp #, c-format msgid "Dexterity +%d; " -msgstr "敏捷 +%d " +msgstr "敏捷 +%d " #: src/effect.cpp #, c-format msgid "Dexterity %d; " -msgstr "敏捷 %d; " +msgstr "敏捷 %d " #: src/effect.cpp #, c-format msgid "Perception +%d; " -msgstr "感知 +%d; " +msgstr "感知 +%d " #: src/effect.cpp #, c-format msgid "Perception %d; " -msgstr "感知 %d; " +msgstr "感知 %d " #: src/effect.cpp #, c-format msgid "Intelligence +%d; " -msgstr "智力 +%d; " +msgstr "智力 +%d " #: src/effect.cpp #, c-format msgid "Intelligence %d; " -msgstr "智力 %d; " +msgstr "智力 %d " #: src/effect.cpp #, c-format msgid "Speed +%d; " -msgstr "速度 +%d; " +msgstr "速度 +%d " #: src/effect.cpp #, c-format msgid "Speed %d; " -msgstr "速度 %d; " +msgstr "速度 %d% " #: src/effect.cpp msgid "pain" @@ -114816,7 +116216,7 @@ msgstr "疲勞" #: src/effect.cpp msgid "stamina recovery" -msgstr "體力回復" +msgstr "恢復體力" #: src/effect.cpp msgid "thirst" @@ -114832,15 +116232,15 @@ msgstr "飢餓" #: src/effect.cpp msgid "sate" -msgstr "滿足" +msgstr "飽足" #: src/effect.cpp msgid "sleepiness" -msgstr "昏昏欲睡" +msgstr "想睡" #: src/effect.cpp msgid "rest" -msgstr "休息" +msgstr "恢復精神" #: src/effect.cpp msgid "coughing" @@ -114856,7 +116256,7 @@ msgstr "暈眩" #: src/effect.cpp msgid "Const: " -msgstr "時常: " +msgstr "持續: " #: src/effect.cpp msgid "Freq: " @@ -114864,23 +116264,23 @@ msgstr "頻繁: " #: src/effect.cpp msgid "Unfreq: " -msgstr "不頻繁: " +msgstr "時常: " #: src/effect.cpp msgid "Rare: " -msgstr "偶發: " +msgstr "偶爾: " #: src/effect.cpp msgid "very poor" -msgstr "" +msgstr "非常粗劣" #: src/effect.cpp msgid "poor" -msgstr "" +msgstr "粗劣" #: src/effect.cpp msgid "decent" -msgstr "" +msgstr "不差" #: src/effect.cpp src/iuse.cpp msgid "good" @@ -114888,23 +116288,23 @@ msgstr "良好" #: src/effect.cpp msgid "great" -msgstr "" +msgstr "優秀" #: src/effect.cpp msgid "average" -msgstr "" +msgstr "普通" #: src/effect.cpp msgid "very good" -msgstr "很好" +msgstr "非常良好" #: src/effect.cpp msgid "outstanding" -msgstr "" +msgstr "傑出" #: src/effect.cpp msgid "perfect" -msgstr "" +msgstr "完美" #: src/event.cpp msgctxt "memorial_male" @@ -115035,54 +116435,54 @@ msgstr "大聲的碰!" #: src/explosion.cpp msgid "a" -msgstr "" +msgstr "一個" #: src/explosion.cpp msgid "many" -msgstr "" +msgstr "許多" #: src/explosion.cpp msgid "several" -msgstr "" +msgstr "些許" #: src/explosion.cpp msgid "a huge number of" -msgstr "" +msgstr "巨量的" #: src/explosion.cpp msgid "a large number of" -msgstr "" +msgstr "大量的" #: src/explosion.cpp msgid "an immense number of" -msgstr "" +msgstr "海量的" #: src/explosion.cpp #, c-format msgid "dealing %d damage" -msgstr "" +msgstr "造成 %d 傷害" #: src/explosion.cpp msgid "but they deal no damage" -msgstr "" +msgstr "但是它們無法造成傷害" #: src/explosion.cpp #, c-format msgid "You are hit by %s bomb fragment, %s." msgid_plural "You are hit by %s bomb fragments, %s." -msgstr[0] "你被 %s 炸彈碎片擊中, %s。" +msgstr[0] "你被 %s 炸彈破片擊中, %s。" #: src/explosion.cpp #, c-format msgid " is hit by %s bomb fragment, %s." msgid_plural " is hit by %s bomb fragments, %s." -msgstr[0] " 被 %s 炸彈碎片擊中, %s。" +msgstr[0] " 被 %s 炸彈破片擊中, %s。" #: src/explosion.cpp #, c-format msgid "The %s is hit by %s bomb fragment, %s." msgid_plural "The %s is hit by %s bomb fragments, %s." -msgstr[0] "%s 被 %s 炸彈碎片擊中, %s。" +msgstr[0] "%s 被 %s 炸彈破片擊中, %s。" #: src/faction.cpp msgctxt "faction_adj" @@ -115092,72 +116492,72 @@ msgstr "忠誠" #: src/faction.cpp msgctxt "faction_adj" msgid "Golden" -msgstr "金光黨" +msgstr "金黃" #: src/faction.cpp msgctxt "faction_adj" msgid "Holy" -msgstr "聖子幫" +msgstr "神聖" #: src/faction.cpp msgctxt "faction_adj" msgid "Righteous" -msgstr "正義聯盟" +msgstr "正義" #: src/faction.cpp msgctxt "faction_adj" msgid "Sacred" -msgstr "神族" +msgstr "莊嚴" #: src/faction.cpp msgctxt "faction_adj" msgid "Shining" -msgstr "光之聯盟" +msgstr "閃亮" #: src/faction.cpp msgctxt "faction_adj" msgid "Divine" -msgstr "非凡的" +msgstr "非凡" #: src/faction.cpp msgctxt "faction_adj" msgid "Noble" -msgstr "貴族" +msgstr "高尚" #: src/faction.cpp msgctxt "faction_adj" msgid "Radiant" -msgstr "異塵崇拜者" +msgstr "閃耀" #: src/faction.cpp msgctxt "faction_adj" msgid "Splendid" -msgstr "拜火教" +msgstr "燦爛" #: src/faction.cpp msgctxt "faction_adj" msgid "Venerable" -msgstr "長老會" +msgstr "尊貴" #: src/faction.cpp msgctxt "faction_adj" msgid "Virtuous" -msgstr "賢者會" +msgstr "清高" #: src/faction.cpp msgctxt "faction_adj" msgid "Bright" -msgstr "明亮的" +msgstr "明亮" #: src/faction.cpp msgctxt "faction_adj" msgid "Heroic" -msgstr "英雄聯盟" +msgstr "英勇" #: src/faction.cpp msgctxt "faction_adj" msgid "Immaculate" -msgstr "聖母教會" +msgstr "純潔" #: src/faction.cpp msgctxt "faction_adj" @@ -115167,12 +116567,12 @@ msgstr "水晶" #: src/faction.cpp msgctxt "faction_adj" msgid "Metal" -msgstr "金屬的" +msgstr "金屬" #: src/faction.cpp msgctxt "faction_adj" msgid "Mighty" -msgstr "威武的" +msgstr "偉大" #: src/faction.cpp msgctxt "faction_adj" @@ -115182,32 +116582,32 @@ msgstr "原始" #: src/faction.cpp msgctxt "faction_adj" msgid "Powerful" -msgstr "強大的" +msgstr "強大" #: src/faction.cpp msgctxt "faction_adj" msgid "Solid" -msgstr "堅實的" +msgstr "堅實" #: src/faction.cpp msgctxt "faction_adj" msgid "Colossal" -msgstr "龐大的" +msgstr "龐大" #: src/faction.cpp msgctxt "faction_adj" msgid "Famous" -msgstr "有名的" +msgstr "有名" #: src/faction.cpp msgctxt "faction_adj" msgid "Firey" -msgstr "火熱的" +msgstr "火熱" #: src/faction.cpp msgctxt "faction_adj" msgid "Invincible" -msgstr "無敵的" +msgstr "無敵" #: src/faction.cpp msgctxt "faction_adj" @@ -115217,7 +116617,7 @@ msgstr "石頭" #: src/faction.cpp msgctxt "faction_adj" msgid "Supreme" -msgstr "超強的" +msgstr "至上" #: src/faction.cpp msgctxt "faction_adj" @@ -115227,87 +116627,87 @@ msgstr "電子" #: src/faction.cpp msgctxt "faction_adj" msgid "Great" -msgstr "偉大的" +msgstr "偉大" #: src/faction.cpp msgctxt "faction_adj" msgid "Unlimited" -msgstr "無極限的" +msgstr "無限" #: src/faction.cpp msgctxt "faction_adj" msgid "Deadly" -msgstr "致命的" +msgstr "致命" #: src/faction.cpp msgctxt "faction_adj" msgid "Foul" -msgstr "卑劣的" +msgstr "下流" #: src/faction.cpp msgctxt "faction_adj" msgid "Nefarious" -msgstr "邪惡的" +msgstr "惡毒" #: src/faction.cpp msgctxt "faction_adj" msgid "Poisonous" -msgstr "毒液" +msgstr "劇毒" #: src/faction.cpp msgctxt "faction_adj" msgid "Vile" -msgstr "惡劣的" +msgstr "卑鄙" #: src/faction.cpp msgctxt "faction_adj" msgid "Wicked" -msgstr "放蕩的" +msgstr "邪惡" #: src/faction.cpp msgctxt "faction_adj" msgid "Baleful" -msgstr "惡意的" +msgstr "兇惡" #: src/faction.cpp msgctxt "faction_adj" msgid "Devastating" -msgstr "壓倒性的" +msgstr "毀滅" #: src/faction.cpp msgctxt "faction_adj" msgid "Horror" -msgstr "可怕的" +msgstr "恐怖" #: src/faction.cpp msgctxt "faction_adj" msgid "Ruinous" -msgstr "毀滅的" +msgstr "崩壞" #: src/faction.cpp msgctxt "faction_adj" msgid "Sinister" -msgstr "陰險的" +msgstr "陰險" #: src/faction.cpp msgctxt "faction_adj" msgid "Vicious" -msgstr "狠毒的" +msgstr "狠毒" #: src/faction.cpp msgctxt "faction_adj" msgid "Dread" -msgstr "恐懼的" +msgstr "戰慄" #: src/faction.cpp msgctxt "faction_adj" msgid "Pernicious" -msgstr "有害的" +msgstr "惡性" #: src/faction.cpp msgctxt "faction_adj" msgid "Pestilent" -msgstr "瘟疫一般的" +msgstr "瘟疫" #: src/faction.cpp msgctxt "faction_adj" @@ -115317,7 +116717,7 @@ msgstr "苦行僧" #: src/faction.cpp msgctxt "faction_adj" msgid "Destroyers" -msgstr "摧毀者" +msgstr "毀滅者" #: src/faction.cpp msgctxt "faction_adj" @@ -115332,17 +116732,17 @@ msgstr "復仇者" #: src/faction.cpp msgctxt "faction_adj" msgid "Slayers" -msgstr "虐殺者" +msgstr "斬殺者" #: src/faction.cpp msgctxt "faction_adj" msgid "Tigers" -msgstr "虎威幹訓班♂" +msgstr "猛虎" #: src/faction.cpp msgctxt "faction_adj" msgid "Army" -msgstr "陸軍" +msgstr "軍團" #: src/faction.cpp msgctxt "faction_adj" @@ -115392,7 +116792,7 @@ msgstr "特務" #: src/faction.cpp msgctxt "faction_adj" msgid "Assassins" -msgstr "刺客聯盟" +msgstr "刺客" #: src/faction.cpp msgctxt "faction_adj" @@ -115402,22 +116802,22 @@ msgstr "忍者" #: src/faction.cpp msgctxt "faction_adj" msgid "Rats" -msgstr "鼠輩" +msgstr "巨鼠" #: src/faction.cpp msgctxt "faction_adj" msgid "Shadows" -msgstr "影武者" +msgstr "暗影" #: src/faction.cpp msgctxt "faction_adj" msgid "Snakes" -msgstr "毒蛇幫" +msgstr "毒蛇" #: src/faction.cpp msgctxt "faction_adj" msgid "Arachnids" -msgstr "蛛形幫" +msgstr "蜘蛛" #: src/faction.cpp msgctxt "faction_adj" @@ -115437,7 +116837,7 @@ msgstr "游擊隊" #: src/faction.cpp msgctxt "faction_adj" msgid "Smoke" -msgstr "抽煙" +msgstr "煙霧" #: src/faction.cpp msgctxt "faction_adj" @@ -115447,12 +116847,12 @@ msgstr "狙擊手" #: src/faction.cpp msgctxt "faction_adj" msgid "Eels" -msgstr "鱸鰻" +msgstr "鰻魚" #: src/faction.cpp msgctxt "faction_adj" msgid "Shade" -msgstr "暗影" +msgstr "陰影" #: src/faction.cpp msgctxt "faction_adj" @@ -115472,7 +116872,7 @@ msgstr "家族" #: src/faction.cpp msgctxt "faction_adj" msgid "Gang" -msgstr "幫派" +msgstr "幫" #: src/faction.cpp msgctxt "faction_adj" @@ -115482,7 +116882,7 @@ msgstr "黑手黨" #: src/faction.cpp msgctxt "faction_adj" msgid "Mob" -msgstr "黑幫" +msgstr "流氓" #: src/faction.cpp msgctxt "faction_adj" @@ -115502,7 +116902,7 @@ msgstr "割喉者" #: src/faction.cpp msgctxt "faction_adj" msgid "Faction" -msgstr "派系" +msgstr "派" #: src/faction.cpp msgctxt "faction_adj" @@ -115517,7 +116917,7 @@ msgstr "走私者" #: src/faction.cpp msgctxt "faction_adj" msgid "Sharks" -msgstr "鯊魚幫" +msgstr "鯊魚" #: src/faction.cpp msgctxt "faction_adj" @@ -115532,7 +116932,7 @@ msgstr "惡棍" #: src/faction.cpp msgctxt "faction_adj" msgid "Racket" -msgstr "喧鬧" +msgstr "集團" #: src/faction.cpp msgctxt "faction_adj" @@ -115552,12 +116952,12 @@ msgstr "信條" #: src/faction.cpp msgctxt "faction_adj" msgid "Crucible" -msgstr "刑求者" +msgstr "熔爐" #: src/faction.cpp msgctxt "faction_adj" msgid "Ones" -msgstr "人" +msgstr "子民" #: src/faction.cpp msgctxt "faction_adj" @@ -115567,12 +116967,12 @@ msgstr "教派" #: src/faction.cpp msgctxt "faction_adj" msgid "Clerics" -msgstr "牧師" +msgstr "聖職者" #: src/faction.cpp msgctxt "faction_adj" msgid "Doctrine" -msgstr "學說" +msgstr "教條" #: src/faction.cpp msgctxt "faction_adj" @@ -115592,7 +116992,7 @@ msgstr "教士" #: src/faction.cpp msgctxt "faction_adj" msgid "Tenet" -msgstr "信條" +msgstr "主義" #: src/faction.cpp msgctxt "faction_adj" @@ -115612,27 +117012,27 @@ msgstr "審判者" #: src/faction.cpp msgctxt "faction_adj" msgid "Clan" -msgstr "幫" +msgstr "氏族" #: src/faction.cpp msgctxt "faction_adj" msgid "Men" -msgstr "人" +msgstr "者" #: src/faction.cpp msgctxt "faction_adj" msgid "People" -msgstr "群眾" +msgstr "社群" #: src/faction.cpp msgctxt "faction_adj" msgid "Settlers" -msgstr "開墾者" +msgstr "開拓者" #: src/faction.cpp msgctxt "faction_adj" msgid "Society" -msgstr "社會團體" +msgstr "社團" #: src/faction.cpp msgctxt "faction_adj" @@ -115682,7 +117082,7 @@ msgstr "公司" #: src/faction.cpp msgctxt "faction_goal" msgid "basic survival" -msgstr "生存" +msgstr "基本生存" #: src/faction.cpp msgctxt "faction_goal" @@ -115692,17 +117092,17 @@ msgstr "金融財富" #: src/faction.cpp msgctxt "faction_goal" msgid "dominance of the region" -msgstr "國家的主導地位" +msgstr "支配地區" #: src/faction.cpp msgctxt "faction_goal" msgid "the extermination of monsters" -msgstr "消滅所有怪物" +msgstr "殲滅怪物" #: src/faction.cpp msgctxt "faction_goal" msgid "contact with unseen powers" -msgstr "與看不見的力量交流" +msgstr "接觸神秘力量" #: src/faction.cpp msgctxt "faction_goal" @@ -115712,17 +117112,17 @@ msgstr "帶來天啟" #: src/faction.cpp msgctxt "faction_goal" msgid "general chaos and anarchy" -msgstr "混亂和無政府狀態" +msgstr "普遍的混亂與無政府狀態" #: src/faction.cpp msgctxt "faction_goal" msgid "the cultivation of knowledge" -msgstr "知識的培養" +msgstr "栽培知識" #: src/faction.cpp msgctxt "faction_goal" msgid "harmony with nature" -msgstr "與自然和諧相處" +msgstr "與自然和諧共處" #: src/faction.cpp msgctxt "faction_goal" @@ -115737,17 +117137,17 @@ msgstr "散播真菌" #: src/faction.cpp msgctxt "faction_job" msgid "protection rackets" -msgstr "勒索取財" +msgstr "恐嚇取財" #: src/faction.cpp msgctxt "faction_job" msgid "the sale of information" -msgstr "販賣資訊" +msgstr "情報買賣" #: src/faction.cpp msgctxt "faction_job" msgid "their bustling trade centers" -msgstr "他們繁榮的交易市集" +msgstr "貿易中心" #: src/faction.cpp msgctxt "faction_job" @@ -115772,12 +117172,12 @@ msgstr "暗殺合約" #: src/faction.cpp msgctxt "faction_job" msgid "raiding settlements" -msgstr "襲擊開墾區" +msgstr "襲擊定居點" #: src/faction.cpp msgctxt "faction_job" msgid "the theft of property" -msgstr "盜竊財物" +msgstr "偷盜財物" #: src/faction.cpp msgctxt "faction_job" @@ -115792,7 +117192,7 @@ msgstr "醫療援助" #: src/faction.cpp msgctxt "faction_job" msgid "farming & selling food" -msgstr "發展農業及販賣糧食" +msgstr "種植與販賣糧食" #: src/faction.cpp msgctxt "faction_job" @@ -115802,7 +117202,7 @@ msgstr "毒品交易" #: src/faction.cpp msgctxt "faction_job" msgid "selling manufactured goods" -msgstr "物品交易" +msgstr "販售製品" #: src/faction.cpp msgctxt "faction_value" @@ -115817,17 +117217,17 @@ msgstr "他們的孤立主義" #: src/faction.cpp msgctxt "faction_value" msgid "exploring extensively" -msgstr "偵查知識的廣泛" +msgstr "他們的廣泛探索" #: src/faction.cpp msgctxt "faction_value" msgid "collecting rare artifacts" -msgstr "收集珍稀文物" +msgstr "他們的稀有神器收藏" #: src/faction.cpp msgctxt "faction_value" msgid "their knowledge of bionics" -msgstr "其生化插件的知識" +msgstr "他們的生化插件知識" #: src/faction.cpp msgctxt "faction_value" @@ -115842,27 +117242,27 @@ msgstr "他們的精英培訓" #: src/faction.cpp msgctxt "faction_value" msgid "their robotics factories" -msgstr "其機器人的工廠" +msgstr "他們的機器人工廠" #: src/faction.cpp msgctxt "faction_value" msgid "treachery" -msgstr "背信忘義" +msgstr "他們的背信忘義" #: src/faction.cpp msgctxt "faction_value" msgid "the avoidance of drugs" -msgstr "毒品的禁忌" +msgstr "他們的拒用毒品" #: src/faction.cpp msgctxt "faction_value" msgid "their adherence to the law" -msgstr "其對秩序的遵守" +msgstr "他們的堅守秩序" #: src/faction.cpp msgctxt "faction_value" msgid "their cruelty" -msgstr "其殘暴" +msgstr "他們的殘暴" #: src/faction.cpp #, c-format @@ -115882,17 +117282,17 @@ msgstr "%2$s 之 %1$s" #: src/faction.cpp #, c-format msgid "%1$s have the ultimate goal of %2$s." -msgstr "%1$s 的最終目標是 %2$s。" +msgstr "%1$s 的終極目標是 %2$s。" #: src/faction.cpp #, c-format msgid " Their primary concern is %s." -msgstr "他們最重視的是 %s。" +msgstr "他們重視 %s。" #: src/faction.cpp #, c-format msgid " Their primary concern is %1$s, but they are also involved in %2$s." -msgstr "他們最重視的是 %1$s, 而他們也介入了 %2$s。" +msgstr "他們重視 %1$s, 同時也關心 %2$s。" #: src/faction.cpp msgid " They are known for " @@ -116355,7 +117755,7 @@ msgstr "y" #: src/faction.cpp msgid "Archenemy" -msgstr "大敵" +msgstr "魔王" #: src/faction.cpp msgid "Wanted Dead" @@ -116363,23 +117763,23 @@ msgstr "格殺勿論" #: src/faction.cpp msgid "Enemy of the People" -msgstr "人民公敵" +msgstr "全民公敵" #: src/faction.cpp msgid "Wanted Criminal" -msgstr "通緝犯" +msgstr "被人通緝" #: src/faction.cpp msgid "Not Welcome" -msgstr "不受歡迎" +msgstr "不被接納" #: src/faction.cpp msgid "Pariah" -msgstr "被放逐者" +msgstr "被人輕蔑" #: src/faction.cpp msgid "Disliked" -msgstr "反感" +msgstr "不被喜歡" #: src/faction.cpp msgid "Hero" @@ -116387,63 +117787,63 @@ msgstr "英雄" #: src/faction.cpp msgid "Idol" -msgstr "偶像" +msgstr "深受敬愛" #: src/faction.cpp msgid "Beloved" -msgstr "鍾愛的" +msgstr "受人敬愛" #: src/faction.cpp msgid "Highly Valued" -msgstr "備受重視的" +msgstr "深受重視" #: src/faction.cpp msgid "Valued" -msgstr "重視的" +msgstr "受人重視" #: src/faction.cpp msgid "Well-Liked" -msgstr "深受歡迎的" +msgstr "深受喜歡" #: src/faction.cpp msgid "Liked" -msgstr "受歡迎的" +msgstr "受人喜歡" #: src/faction.cpp msgid "Legendary" -msgstr "傳奇" +msgstr "有如傳奇" #: src/faction.cpp msgid "Unchallenged" -msgstr "有權威的" +msgstr "舉世聞名" #: src/faction.cpp msgid "Mighty" -msgstr "威武的" +msgstr "聲名遠播" #: src/faction.cpp msgid "Famous" -msgstr "有名的" +msgstr "眾所周知" #: src/faction.cpp msgid "Well-Known" -msgstr "知名的" +msgstr "小有名氣" #: src/faction.cpp msgid "Spoken Of" -msgstr "薄有名聲的" +msgstr "略有所聞" #: src/faction.cpp msgid "Worthless Scum" -msgstr "廢材" +msgstr "不值一提" #: src/faction.cpp msgid "Vermin" -msgstr "害蟲" +msgstr "小人" #: src/faction.cpp msgid "Despicable" -msgstr "卑鄙的" +msgstr "害蟲" #: src/faction.cpp msgid "Parasite" @@ -116459,15 +117859,15 @@ msgstr "笑柄" #: src/faction.cpp msgid "Filthy rich" -msgstr "財大氣粗" +msgstr "富豪" #: src/faction.cpp msgid "Affluent" -msgstr "豐裕" +msgstr "富裕" #: src/faction.cpp msgid "Prosperous" -msgstr "繁榮" +msgstr "富足" #: src/faction.cpp msgid "Well-Off" @@ -116479,15 +117879,15 @@ msgstr "舒適" #: src/faction.cpp msgid "Wanting" -msgstr "貧窮" +msgstr "拮据" #: src/faction.cpp msgid "Failing" -msgstr "貧乏" +msgstr "貧窮" #: src/faction.cpp msgid "Impoverished" -msgstr "貧苦" +msgstr "貧困" #: src/faction.cpp msgid "Destitute" @@ -116511,7 +117911,7 @@ msgstr "營養不良" #: src/faction.cpp msgid "Starving" -msgstr "挨餓" +msgstr "瀕臨飢荒" #: src/faction.cpp src/iuse_software_minesweeper.cpp msgid "Expert" @@ -116523,31 +117923,31 @@ msgstr "老兵" #: src/faction.cpp msgid "Skilled" -msgstr "熟手" +msgstr "熟練" #: src/faction.cpp msgid "Competent" -msgstr "能幹" +msgstr "合格" #: src/faction.cpp msgid "Untrained" -msgstr "生手" +msgstr "生澀" #: src/faction.cpp msgid "Crippled" -msgstr "殘廢" +msgstr "殘缺" #: src/faction.cpp msgid "Feeble" -msgstr "衰弱" +msgstr "薄弱" #: src/faction.cpp msgid "Worthless" -msgstr "廢材" +msgstr "無用" #: src/faction.cpp msgid "You don't know of any factions. Press Spacebar..." -msgstr "你還不知道有什麼派系。按下空白鍵..." +msgstr "你沒聽說過任何派系。請按空白鍵…" #: src/faction.cpp msgid "FACTIONS:" @@ -116556,12 +117956,12 @@ msgstr "派系:" #: src/faction.cpp #, c-format msgid "Ranking: %s" -msgstr "排行: %s" +msgstr "評價: %s" #: src/faction.cpp #, c-format msgid "Respect: %s" -msgstr "地位: %s" +msgstr "名聲: %s" #: src/faction.cpp #, c-format @@ -116571,554 +117971,2015 @@ msgstr "財富: %s" #: src/faction.cpp #, c-format msgid "Food Supply: %s" -msgstr "食物供應: %s" +msgstr "食物: %s" #: src/faction.cpp #, c-format msgid "Combat Ability: %s" -msgstr "戰鬥力: %s" +msgstr "戰力: %s" -#: src/field.cpp -msgid "blood splatter" -msgstr "鮮血灘" +#: src/faction_camp.cpp +msgid " [DONE]\n" +msgstr " [完成]\n" -#: src/field.cpp -msgid "blood stain" -msgstr "血跡" +#: src/faction_camp.cpp +msgid " left]\n" +msgstr " 左]\n" -#: src/field.cpp -msgid "puddle of blood" -msgstr "血泊" +#: src/faction_camp.cpp +msgid "Upgrade Camp" +msgstr "升級營地" -#: src/field.cpp -msgid "bile splatter" -msgstr "膽液灘" +#: src/faction_camp.cpp +msgid "Working to expand your camp!\n" +msgstr "努力拓展你的營地!\n" -#: src/field.cpp -msgid "bile stain" -msgstr "膽液汙漬" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?" +msgstr "" +"\n" +"\n" +"要把同伴帶回你的隊伍嗎?" -#: src/field.cpp -msgid "puddle of bile" -msgstr "一灘膽液" +#: src/faction_camp.cpp +msgid "Recover Ally from Upgrading" +msgstr "從升級中恢復盟友" -#: src/field.cpp -msgid "bloody meat chunks" -msgstr "血腥的屍塊" +#: src/faction_camp.cpp +msgid "Busy crafting!\n" +msgstr "繁忙的製作!\n" -#: src/field.cpp -msgid "heap of gore" -msgstr "屍塊堆" +#: src/faction_camp.cpp +msgid " (Finish) Crafting" +msgstr " (結束) 製作" -#: src/field.cpp -msgid "scraps of flesh" -msgstr "肉渣" +#: src/faction_camp.cpp +msgid "Gather Materials" +msgstr "收集材料" -#: src/field.cpp -msgid "broken vegetation tangle" -msgstr "殘敗的植物" +#: src/faction_camp.cpp +msgid "Searching for materials to upgrade the camp.\n" +msgstr "搜索材料以升級營地。\n" -#: src/field.cpp -msgid "shattered branches and leaves" -msgstr "破碎的枝葉" +#: src/faction_camp.cpp +msgid "Recover Ally from Gathering" +msgstr "從蒐集中恢復盟友" -#: src/field.cpp -msgid "shredded leaves and twigs" -msgstr "被切碎的枝葉" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" +" \n" +"Effects:\n" +"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" +" \n" +"Must have enjoyability >= -6\n" +"Perishable food liquidated at penalty depending on upgrades and rot time:\n" +"> Rotten: 0%%\n" +"> Rots in < 2 days: 60%%\n" +"> Rots in < 5 days: 80%%\n" +" \n" +"Total faction food stock: %d kcal or %d day's rations" +msgstr "" -#: src/field.cpp -msgid "cobwebs" -msgstr "蜘蛛網" +#: src/faction_camp.cpp +msgid "Distribute Food" +msgstr "" -#: src/field.cpp -msgid "thick webs" -msgstr "厚蜘蛛網" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" +" \n" +"Effects:\n" +"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" +"> Items sitting on any type of furniture will not be moved.\n" +"> Items that are not listed in one of the categories are defaulted to the tools group." +msgstr "" -#: src/field.cpp -msgid "webs" -msgstr "網" +#: src/faction_camp.cpp +msgid "Reset Sort Points" +msgstr "" -#: src/field.cpp -msgid "puddle of slime" -msgstr "一灘黏液" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to gather light brush and heavy sticks.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +"> heavy sticks\n" +"> withered plants\n" +"> splintered wood\n" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "slime stain" -msgstr "黏液汙漬" +#: src/faction_camp.cpp +msgid "Collect Firewood" +msgstr "" -#: src/field.cpp -msgid "slime trail" -msgstr "黏液痕" +#: src/faction_camp.cpp +msgid "Searching for firewood.\n" +msgstr "" -#: src/field.cpp -msgid "acid splatter" -msgstr "酸液灘" +#: src/faction_camp.cpp +msgid "Recover Firewood Gatherers" +msgstr "" -#: src/field.cpp -msgid "acid streak" -msgstr "酸液痕" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to do low level chores and sort supplies.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" +"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "pool of acid" -msgstr "酸液灘" +#: src/faction_camp.cpp +msgid "Menial Labor" +msgstr "" -#: src/field.cpp -msgid "glob of sap" -msgstr "樹枝滴" +#: src/faction_camp.cpp +msgid "Performing menial labor...\n" +msgstr "" -#: src/field.cpp -msgid "pool of sap" -msgstr "樹汁灘" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Do you wish to bring your allies back into your party?\n" +msgstr "" -#: src/field.cpp -msgid "sap splatter" -msgstr "樹汁灘" +#: src/faction_camp.cpp +msgid "Recover Menial Laborer" +msgstr "" -#: src/field.cpp -msgid "sludge trail" -msgstr "污泥痕" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" +" \n" +"Risk: None\n" +"Time: 3 Hours \n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thick sludge trail" -msgstr "厚污泥痕" +#: src/faction_camp.cpp +msgid "Expand Base" +msgstr "" -#: src/field.cpp -msgid "thin sludge trail" -msgstr "薄污泥痕" +#: src/faction_camp.cpp +msgid "Surveying for expansion...\n" +msgstr "" -#: src/field.cpp -msgid "fire" -msgstr "火" +#: src/faction_camp.cpp +msgid "Recover Surveyor" +msgstr "" -#: src/field.cpp -msgid "raging fire" -msgstr "大火" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to a nearby forest to cut logs.\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: 1 \n" +"Effects:\n" +"> 50%% of trees/trunks at the forest position will be cut down.\n" +"> 100%% of total material will be brought back.\n" +"> Repeatable with diminishing returns.\n" +" \n" +"Risk: None\n" +"Time: 6 Hour Base + Travel Time + Cutting Time\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "small fire" -msgstr "火苗" +#: src/faction_camp.cpp +msgid "Cut Logs" +msgstr "" -#: src/field.cpp -msgid "legacy rubble" -msgstr "廢墟瓦礫" +#: src/faction_camp.cpp +msgid "Cutting logs in the woods...\n" +msgstr "" -#: src/field.cpp -msgid "smoke" -msgstr "煙霧" +#: src/faction_camp.cpp +msgid "Recover Log Cutter" +msgstr "" -#: src/field.cpp -msgid "thick smoke" -msgstr "濃煙" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Good for setting up resupply or contingency points.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward.\n" +" \n" +"Risk: Medium\n" +"Time: 6 Hour Construction + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "thin smoke" -msgstr "輕煙" +#: src/faction_camp.cpp +msgid "Setup Hide Site" +msgstr "" -#: src/field.cpp -msgid "hazy cloud" -msgstr "朦朧的雲霧" +#: src/faction_camp.cpp +msgid "Setting up a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "thick toxic gas" -msgstr "濃毒氣" +#: src/faction_camp.cpp +msgid "Recover Hide Setup" +msgstr "" -#: src/field.cpp -msgid "toxic gas" -msgstr "毒氣" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Push gear out to a hide site or bring gear back from one.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 1\n" +"Effects:\n" +"> Good for returning equipment you left in the hide site shelter.\n" +"> Gear is left unattended and could be stolen.\n" +"> Time dependent on weight of equipment being sent forward or back.\n" +" \n" +"Risk: Medium\n" +"Time: 1 Hour Base + Travel\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "tear gas" -msgstr "催涙瓦斯" +#: src/faction_camp.cpp +msgid "Relay Hide Site" +msgstr "" -#: src/field.cpp -msgid "thick tear gas" -msgstr "濃催涙瓦斯" +#: src/faction_camp.cpp +msgid "Transfering gear to a hide site...\n" +msgstr "" -#: src/field.cpp -msgid "radioactive gas" -msgstr "輻射瓦斯" +#: src/faction_camp.cpp +msgid "Recover Hide Relay" +msgstr "" -#: src/field.cpp -msgid "thick radioactive gas" -msgstr "濃輻射瓦斯" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to edible plans.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Foraging Possibilities:\n" +"> wild vegetables\n" +"> fruits and nuts dependening on season\n" +"May produce less food than consumed!\n" +"Risk: Very Low\n" +"Time: 4 Hours, Repeated\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "gas vent" -msgstr "氣閥" +#: src/faction_camp.cpp +msgid "Forage for plants" +msgstr "" -#: src/field.cpp -msgid "electric cloud" -msgstr "雷電雲" +#: src/faction_camp.cpp +msgid "Foraging for edible plants.\n" +msgstr "" -#: src/field.cpp -msgid "electric crackle" -msgstr "閃電" +#: src/faction_camp.cpp +msgid "Recover Foragers" +msgstr "" -#: src/field.cpp -msgid "sparks" -msgstr "火花" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to set traps for small game.\n" +" \n" +"Skill used: trapping\n" +"Difficulty: N/A \n" +"Trappinng Possibilities:\n" +"> small and tiny animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Low\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/2\n" +msgstr "" -#: src/field.cpp -msgid "odd ripple" -msgstr "奇異波紋" +#: src/faction_camp.cpp +msgid "Trap Small Game" +msgstr "" -#: src/field.cpp -msgid "swirling air" -msgstr "氣漩" +#: src/faction_camp.cpp +msgid "Trapping Small Game.\n" +msgstr "" -#: src/field.cpp -msgid "tear in reality" -msgstr "現實中的磨損" +#: src/faction_camp.cpp +msgid "Recover Trappers" +msgstr "" -#: src/field.cpp -msgid "faint plasma" -msgstr "微光的電漿" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to hunt large animals.\n" +" \n" +"Skill used: marksmanship\n" +"Difficulty: N/A \n" +"Hunting Possibilities:\n" +"> small, medium, or large animal corpses\n" +"May produce less food than consumed!\n" +"Risk: Medium\n" +"Time: 6 Hours, Repeated\n" +"Positions: %d/1\n" +msgstr "" -#: src/field.cpp -msgid "glaring plasma" -msgstr "發光的電漿" +#: src/faction_camp.cpp +msgid "Hunt Large Animals" +msgstr "" -#: src/field.cpp -msgid "glowing plasma" -msgstr "刺眼的電漿" +#: src/faction_camp.cpp +msgid "Hunting large animals.\n" +msgstr "" -#: src/field.cpp -msgid "beam of light" -msgstr "光束" +#: src/faction_camp.cpp +msgid "Recover Hunter" +msgstr "" -#: src/field.cpp -msgid "faint glimmer" -msgstr "昏暗的微光" +#: src/faction_camp.cpp +msgid "Construct Map Fortifications" +msgstr "" -#: src/field.cpp -msgid "intense beam of light" -msgstr "強烈的光束" +#: src/faction_camp.cpp +msgid "Construct Spiked Trench" +msgstr "" -#: src/field.cpp -msgid "spotlight" -msgstr "探照燈" +#: src/faction_camp.cpp +msgid "Constructing fortifications...\n" +msgstr "" -#: src/field.cpp -msgid "dazzling" -msgstr "炫目" +#: src/faction_camp.cpp +msgid "Finish Map Fortifications" +msgstr "" -#: src/field.cpp -msgid "plant sap splatter" -msgstr "樹汁飛濺" +#: src/faction_camp.cpp +msgid "Recruit Companions" +msgstr "" -#: src/field.cpp -msgid "plant sap stain" -msgstr "樹汁污漬" +#: src/faction_camp.cpp +msgid "Searching for recruits.\n" +msgstr "" -#: src/field.cpp -msgid "puddle of resin" -msgstr "一灘樹脂" +#: src/faction_camp.cpp +msgid "Recover Recruiter" +msgstr "" -#: src/field.cpp -msgid "bug blood splatter" -msgstr "蟲血飛濺" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 3\n" +"Effects:\n" +"> Select checkpoints to customize path.\n" +"> Reveals terrain around the path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "bug blood stain" -msgstr "蟲血污漬" +#: src/faction_camp.cpp +msgid "Scout Mission" +msgstr "" -#: src/field.cpp -msgid "puddle of bug blood" -msgstr "一灘蟲血" +#: src/faction_camp.cpp +msgid "Scouting the region.\n" +msgstr "" -#: src/field.cpp -msgid "hemolymph splatter" -msgstr "體液飛濺" +#: src/faction_camp.cpp +msgid "Recover Scout" +msgstr "" -#: src/field.cpp -msgid "hemolymph stain" -msgstr "體液污漬" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" +" \n" +"Skill used: survival\n" +"Difficulty: 4\n" +"Effects:\n" +"> Pulls creatures encountered into combat instead of fleeing.\n" +"> Select checkpoints to customize path.\n" +"> Can bounce off hide sites to extend range.\n" +" \n" +"Risk: Very High\n" +"Time: Travel\n" +"Positions: %d/3\n" +msgstr "" -#: src/field.cpp -msgid "puddle of hemolymph" -msgstr "一灘體液" +#: src/faction_camp.cpp +msgid "Combat Patrol" +msgstr "" -#: src/field.cpp -msgid "shards of chitin" -msgstr "甲殼碎片" +#: src/faction_camp.cpp +msgid "Patrolling the region.\n" +msgstr "" -#: src/field.cpp -msgid "shattered bug leg" -msgstr "破碎的蟲腿" +#: src/faction_camp.cpp +msgid "Recover Combat Patrol" +msgstr "" -#: src/field.cpp -msgid "torn insect organs" -msgstr "撕裂的昆蟲內臟" +#: src/faction_camp.cpp +msgid " Expansion Upgrade" +msgstr "" -#: src/field.cpp -msgid "gooey scraps" -msgstr "黏稠的碎屑" +#: src/faction_camp.cpp +msgid "Working to upgrade your expansions!\n" +msgstr "" -#: src/field.cpp -msgid "heap of squishy gore" -msgstr "糊狀的血塊堆" +#: src/faction_camp.cpp +msgid " Expansion" +msgstr "" -#: src/field.cpp -msgid "icky mess" -msgstr "噁心的一塌糊塗" +#: src/faction_camp.cpp +msgid "Recover Ally, " +msgstr "" -#: src/field.cpp -msgid "swirl of tobacco smoke" -msgstr "菸草煙霧旋流" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Have a companion attempt to completely dissemble a vehicle into components.\n" +" \n" +"Skill used: mechanics\n" +"Difficulty: 2 \n" +"Effects:\n" +"> Removed parts placed on the furniture in the garage.\n" +"> Skill plays a huge role to determine what is salvaged.\n" +" \n" +"Risk: None\n" +"Time: Skill Based \n" +msgstr "" -#: src/field.cpp -msgid "thick tobacco smoke" -msgstr "菸草濃煙" +#: src/faction_camp.cpp +msgid " Chop Shop" +msgstr "" -#: src/field.cpp -msgid "tobacco smoke" -msgstr "菸草煙霧" +#: src/faction_camp.cpp +msgid "Working at the chop shop...\n" +msgstr "" -#: src/field.cpp -msgid "pot smoke" -msgstr "大麻煙霧" +#: src/faction_camp.cpp +msgid " (Finish) Chop Shop" +msgstr "" -#: src/field.cpp -msgid "swirl of pot smoke" -msgstr "大麻菸霧旋流" +#: src/faction_camp.cpp +msgid "Working in your kitchen!\n" +msgstr "" -#: src/field.cpp -msgid "thick pot smoke" -msgstr "大麻濃煙" +#: src/faction_camp.cpp +msgid " (Finish) Cooking" +msgstr "" -#: src/field.cpp -msgid "crack smoke" -msgstr "快克煙霧" +#: src/faction_camp.cpp +msgid "Working in your blacksmith shop!\n" +msgstr "" -#: src/field.cpp -msgid "swirl of crack smoke" -msgstr "快克煙霧旋流" +#: src/faction_camp.cpp +msgid " (Finish) Smithing" +msgstr "" -#: src/field.cpp -msgid "thick crack smoke" -msgstr "快克濃煙" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plow any spaces that have reverted to dirt or grass.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "meth smoke" -msgstr "冰毒煙霧" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: fabrication\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Restores only the plots created in the last expansion upgrade.\n" +"> Does not damage existing crops.\n" +" \n" +"Risk: None\n" +"Time: 5 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "swirl of meth smoke" -msgstr "冰毒煙霧旋流" +#: src/faction_camp.cpp +msgid " Plow Fields" +msgstr "" -#: src/field.cpp -msgid "thick meth smoke" -msgstr "冰毒濃煙" +#: src/faction_camp.cpp +msgid "Working to plow your fields!\n" +msgstr "" -#: src/field.cpp -msgid "angry swarm of bees" -msgstr "憤怒的蜂群" +#: src/faction_camp.cpp +msgid " (Finish) Plow Fields" +msgstr "" -#: src/field.cpp -msgid "some bees" -msgstr "一些蜜蜂" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Plant designated seeds in the spaces that have already been tilled.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "swarm of bees" -msgstr "一群蜜蜂" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Choose which seed type or all of your seeds.\n" +"> Stops when out of seeds or planting locations.\n" +"> Will plant in ALL dirt mounds in the expansion.\n" +" \n" +"Risk: None\n" +"Time: 1 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "airborne incendiary" -msgstr "空中燃燒彈" +#: src/faction_camp.cpp +msgid " Plant Fields" +msgstr "" -#: src/field.cpp -msgid "relaxation gas" -msgstr "鬆弛瓦斯" +#: src/faction_camp.cpp +msgid "Working to plant your fields!\n" +msgstr "" -#: src/field.cpp -msgid "sedative gas" -msgstr "鎮靜瓦斯" +#: src/faction_camp.cpp +msgid " (Finish) Plant Fields" +msgstr "" -#: src/field.cpp -msgid "fungal haze" -msgstr "真菌霧" +#: src/faction_camp.cpp +msgid "" +"Notes:\n" +"Harvest any plants that are ripe and bring the produce back.\n" +" \n" +msgstr "" -#: src/field.cpp -msgid "thick fungal haze" -msgstr "濃厚真菌霧" +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Effects:\n" +"> Will dump all harvesting products onto your location.\n" +" \n" +"Risk: None\n" +"Time: 3 Min / Plot \n" +"Positions: 0/1 \n" +msgstr "" -#: src/field.cpp -msgid "fungicidal gas" -msgstr "殺菌煙霧" +#: src/faction_camp.cpp +msgid " Harvest Fields" +msgstr "" -#: src/field.cpp -msgid "thick fungicidal gas" -msgstr "殺菌濃霧" +#: src/faction_camp.cpp +msgid "Working to harvest your fields!\n" +msgstr "" -#: src/field.cpp -msgid "smoke vent" +#: src/faction_camp.cpp +msgid " (Finish) Harvest Fields" msgstr "" -#: src/field.cpp -msgid "Whew... smells like skunk!" -msgstr "嗚... 聞起來像是臭鼬!" +#: src/faction_camp.cpp +msgid "Working on your farm!\n" +msgstr "" -#: src/field.cpp -msgid "Man, that smells like some good shit!" -msgstr "老兄, 那聞起來很棒!" +#: src/faction_camp.cpp +msgid "departs to search for materials..." +msgstr "" -#: src/field.cpp -msgid "I don't know... should you really be smoking that stuff?" -msgstr "我不知道... 你真的要抽那東西?" +#: src/faction_camp.cpp +msgid "There are too many companions working on this mission!" +msgstr "" -#: src/field.cpp -msgid "Ew, smells like burning rubber!" -msgstr "噁, 聞起來像是燃燒的橡膠!" +#: src/faction_camp.cpp +msgid "departs to search for firewood..." +msgstr "" -#: src/field.cpp -msgid "Ugh, that smells rancid!" -msgstr "呃, 腐敗的臭味!" +#: src/faction_camp.cpp +msgid "You don't have enough food stored to feed your companion." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp +msgid "departs to dig ditches and scrub toilets..." +msgstr "" + +#: src/faction_camp.cpp #, c-format -msgid "A %s hits you!" -msgstr "%s 擊中了你!" +msgid "%s returns from working in the woods..." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits %2$s!" -msgstr "%1$s 擊中了 %2$s!" +msgid "%s returns from working on the hide site..." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp #, c-format -msgid "A %1$s hits the %2$s!" -msgstr "%1$s 擊中了 %2$s!" +msgid "%s returns from shuttling gear between the hide site..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your body!" -msgstr "酸液灼燒著你的身體!" +#: src/faction_camp.cpp +msgid "departs to search for edible plants..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s body!" -msgstr "酸液灼燒著 的身體!" +#: src/faction_camp.cpp +msgid "departs to set traps for small animals..." +msgstr "" -#: src/field.cpp -msgid "The acid burns your legs and feet!" -msgstr "酸液灼燒著你的腿部和腳掌!" +#: src/faction_camp.cpp +msgid "departs to hunt for meat..." +msgstr "" -#: src/field.cpp -msgid "The acid burns s legs and feet!" -msgstr "酸液灼燒著 的腿部和腳掌!" +#: src/faction_camp.cpp +msgid "departs to search for recruits..." +msgstr "" -#: src/field.cpp -msgid "You're lying in a pool of acid" -msgstr "你正躺在酸液灘裡頭" +#: src/faction_camp.cpp +msgid "departs to survey land..." +msgstr "" -#: src/field.cpp -msgid "You're standing in a pool of acid" -msgstr "你正站在酸液灘上面" +#: src/faction_camp.cpp +msgid "You have already selected a surveyor!" +msgstr "" -#: src/field.cpp -msgid "The sap sticks to you!" -msgstr "樹汁粘到你了!" +#: src/faction_camp.cpp +msgid "begins to upgrade the expansion..." +msgstr "" -#: src/field.cpp -msgid "The sap sticks to !" -msgstr "樹汁粘到 了!" +#: src/faction_camp.cpp +msgid "You already have a worker upgrading that expansion!" +msgstr "" -#: src/field.cpp -msgid "The sludge is thick and sticky. You struggle to pull free." -msgstr "污泥黏稠。你掙扎著要逃脫。" +#: src/faction_camp.cpp +msgid "You don't have the materials for the upgrade." +msgstr "" -#: src/field.cpp -msgid "You burn your legs and feet!" -msgstr "你的腿部和腳掌燒到了!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your farm with something..." +msgstr "" -#: src/field.cpp -msgid "You're burning up!" -msgstr "你燒起來了!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns to you with something..." +msgstr "" -#: src/field.cpp -msgid "You're set ablaze!" -msgstr "你燒起來了!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your kitchen with something..." +msgstr "" -#: src/field.cpp -msgid "Your whole body is burning!" -msgstr "你全身都在燃燒!" +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from your blacksmith shop with something..." +msgstr "" -#: src/field.cpp -msgid " burns their legs and feet!" -msgstr " 燒到了腿部和腳掌!" +#: src/faction_camp.cpp +msgid "begins plowing the field..." +msgstr "" -#: src/field.cpp -msgid " is burning up!" -msgstr " 燒起來了!" +#: src/faction_camp.cpp +msgid "You already have someone plowing that field." +msgstr "" -#: src/field.cpp -msgid " is set ablaze!" -msgstr " 燒起來了!" +#: src/faction_camp.cpp +msgid "You have no additional seeds to give your companions..." +msgstr "" -#: src/field.cpp -msgid "s whole body is burning!" -msgstr " 全身都燒起來了!" +#: src/faction_camp.cpp +msgid "begins planting the field..." +msgstr "" -#: src/field.cpp -msgid "You're standing in a fire!" -msgstr "你正站在火上面!" +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Which seeds do you wish to have planted?" +msgstr "你想種下那一類種子?" -#: src/field.cpp -msgid "You're waist-deep in a fire!" -msgstr "你正站在火堆中!" +#: src/faction_camp.cpp +msgid "You already have someone planting that field." +msgstr "" -#: src/field.cpp -msgid "You're surrounded by raging fire!" -msgstr "你被烈火包圍了!" +#: src/faction_camp.cpp +msgid "begins to harvest the field..." +msgstr "" -#: src/field.cpp -msgid "You're lying in fire!" -msgstr "你正躺在火裡頭!" +#: src/faction_camp.cpp +msgid "You already have someone harvesting that field." +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp +msgid "You already have someone working in that garage." +msgstr "" + +#: src/faction_camp.cpp #, c-format -msgid "You feel sick from inhaling the %s" -msgstr "吸入 %s 讓你感到不適。" +msgid "%s returns from your garage..." +msgstr "" -#: src/field.cpp -msgid "This radioactive gas burns!" -msgstr "輻射瓦斯燒灼著你!" +#: src/faction_camp.cpp +msgid "You already have a companion upgrading the camp." +msgstr "" -#: src/field.cpp -msgid "You're torched by flames!" -msgstr "你被火燒到了!" +#: src/faction_camp.cpp +msgid "begins to upgrade the camp..." +msgstr "" -#: src/field.cpp -msgid " is torched by flames!" -msgstr " 被火燒到了!" +#: src/faction_camp.cpp +msgid "Forests and swamps are the only valid cutting locations." +msgstr "" -#: src/field.cpp -msgid "These flames do not burn you." -msgstr "火焰沒有燒到你。" +#: src/faction_camp.cpp +#, c-format +msgid "" +"Trip Estimate:\n" +"%s" +msgstr "" -#: src/field.cpp -msgid "Those flames do not burn ." -msgstr "火焰沒有燒到 。" +#: src/faction_camp.cpp +msgid "departs to cut logs..." +msgstr "" -#: src/field.cpp -msgid "You're painfully electrocuted!" +#: src/faction_camp.cpp +msgid "Forests, swamps, and fields are valid hide site locations." msgstr "" -#: src/field.cpp -msgid " is shocked!" -msgstr " 被電擊了!" +#: src/faction_camp.cpp +msgid "departs to build a hide site..." +msgstr "" -#: src/field.cpp -msgid "You're shocked!" -msgstr "你被電擊了!" +#: src/faction_camp.cpp +msgid "You need equipment to setup a hide site..." +msgstr "" -#: src/field.cpp -msgid "The electric cloud doesn't affect you." -msgstr "雷電雲並沒有對你造成影響。" +#: src/faction_camp.cpp +msgid "You must select an existing hide site." +msgstr "" -#: src/field.cpp -msgid "The electric cloud doesn't seem to affect ." -msgstr "雷電雲並沒有對 造成影響。" +#: src/faction_camp.cpp +msgid "Bring gear back?" +msgstr "" -#: src/field.cpp +#: src/faction_camp.cpp +msgid "departs for the hide site..." +msgstr "" + +#: src/faction_camp.cpp +msgid "You need equipment to transport between the hide site..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Select a start and end point. Line must be straight. Fields, forests, and " +"swamps are valid fortification locations. In addition to existing " +"fortification constructions." +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an end point." +msgstr "" + +#: src/faction_camp.cpp +msgid "Invalid terrain in construction path." +msgstr "" + +#: src/faction_camp.cpp +msgid "You don't have the material to build the fortification." +msgstr "" + +#: src/faction_camp.cpp +msgid "begins constructing fortifications..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Select checkpoints until you reach maximum range or select the last point " +"again to end." +msgstr "" + +#: src/faction_camp.cpp +msgid "departs on patrol..." +msgstr "" + +#: src/faction_camp.cpp +msgid "You don't have the materials to craft that" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Batch crafting %s [MAX: %d]: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Your batch is too large!" +msgstr "" + +#: src/faction_camp.cpp +msgid "You already have someone working in that expansion." +msgstr "" + +#: src/faction_camp.cpp +msgid "begins to work..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +" Chopping this vehicle:\n" +"%s" +msgstr "" + +#: src/faction_camp.cpp +msgid "begins working in the garage..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Your companion seems disappointed that your pantry is empty..." +msgstr "你的同伴似乎對於你的食品儲藏室是空的感到失望。" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s returns from upgrading the camp having earned a bit of experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from doing the dirty work to keep the camp running..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Sorting points have changed, forcing reset." +msgstr "" + +#: src/faction_camp.cpp +msgid "gathering materials" +msgstr "" + +#: src/faction_camp.cpp +msgid "foraging for edible plants" +msgstr "" + +#: src/faction_camp.cpp +msgid "trapping small animals" +msgstr "" + +#: src/faction_camp.cpp +msgid "hunting for meat" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from %s carrying supplies and has a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from constructing fortifications..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from searching for recruits with a bit more experience..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s encountered %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't find anyone to recruit..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s convinced %s to hear a recruitment offer from you..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested in anything %s had to offer..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"NPC Overview:\n" +" \n" +msgstr "" +"NPC 概觀:\n" +"\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Name: %20s\n" +" \n" +msgstr "" +"姓名: %20s\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "Strength: %10d\n" +msgstr "力量: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Dexterity: %10d\n" +msgstr "敏捷: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "Intelligence: %10d\n" +msgstr "智力: %10d\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Perception: %10d\n" +" \n" +msgstr "" +"感知: %10d\n" +" \n" + +#: src/faction_camp.cpp +msgid "Top 3 Skills:\n" +msgstr "前三高技能:\n" + +#: src/faction_camp.cpp +msgid "Asking for:\n" +msgstr "要求:\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"> Food: %10d days\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Faction Food:%9d days\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Recruit Chance: %10d%%\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an option:" +msgstr "" + +#: src/faction_camp.cpp +msgid "Increase Food" +msgstr "" + +#: src/faction_camp.cpp +msgid "Decrease Food" +msgstr "" + +#: src/faction_camp.cpp +msgid "Make Offer" +msgstr "" + +#: src/faction_camp.cpp +msgid "Not Interested" +msgstr "" + +#: src/faction_camp.cpp +msgid "You decide you aren't interested..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s has been convinced to join!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s wasn't interested..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Your companion hit a river and didn't know how to swim..." +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Your companion hit a river and didn't know how to swim well enough to " +"cross..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't return from patrol..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from patrol..." +msgstr "" + +#: src/faction_camp.cpp +msgid "Select an expansion:" +msgstr "" + +#: src/faction_camp.cpp +msgid "You choose to wait..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from surveying for the expansion." +msgstr "" + +#: src/faction_camp.cpp +msgid "No seeds to plant!" +msgstr "沒有可以種植的種子!" + +#: src/faction_camp.cpp +#, c-format +msgid "%s returns from working your fields..." +msgstr "" + +#: src/faction_camp.cpp +msgid "MAIN" +msgstr "" + +#: src/faction_camp.cpp +msgid " [N] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [NE] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [E] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [SE] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [S] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [SW] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [W] " +msgstr "" + +#: src/faction_camp.cpp +msgid " [NW] " +msgstr "" + +#: src/faction_camp.cpp src/mission_companion.cpp +msgid "Base Missions" +msgstr "" + +#: src/faction_camp.cpp +msgid "Farm Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Garage Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Kitchen Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Blacksmith Expansion" +msgstr "" + +#: src/faction_camp.cpp +msgid "Empty Expansion" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Select a location between %d and %d tiles away." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"You must select a target between %d and %d range from the base. Range: %d" +msgstr "" + +#: src/faction_camp.cpp +msgid "You must be able to see the target that you select." +msgstr "" + +#: src/faction_camp.cpp +msgid "Do you want to bounce off this location to extend range?" +msgstr "" + +#: src/faction_camp.cpp +msgid "food for you" +msgstr "" + +#: src/faction_camp.cpp +msgid "food for companions" +msgstr "" + +#: src/faction_camp.cpp +msgid "weapons" +msgstr "武器" + +#: src/faction_camp.cpp +msgid "clothing" +msgstr "衣物" + +#: src/faction_camp.cpp +msgid "bionics" +msgstr "生化插件" + +#: src/faction_camp.cpp +msgid "all kinds of tools" +msgstr "" + +#: src/faction_camp.cpp +msgid "wood of various sorts" +msgstr "" + +#: src/faction_camp.cpp +msgid "trash and rotting food" +msgstr "" + +#: src/faction_camp.cpp +msgid "books" +msgstr "書籍" + +#: src/faction_camp.cpp +msgid "medication" +msgstr "" + +#: src/faction_camp.cpp +msgid "ammo" +msgstr "彈藥" + +#: src/faction_camp.cpp +#, c-format +msgid "Reset point: %s?" +msgstr "重置點數: %s?" + +#: src/faction_camp.cpp +msgid "" +" Items New Point Old Point\n" +" \n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"\n" +" \n" +" Save Points?" +msgstr "" + +#: src/faction_camp.cpp +msgid "Revert to default points?" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15.2f (km)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">One Way: %15d (trips)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15.2f (km)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Distance:%15d (m)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Covered: %15d (m)\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Travel: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Working: %23s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Total: %23s\n" +msgstr "總共: %23s\n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Food: %15d (kcal)\n" +" \n" +msgstr "" +"食物: %15d (大卡)\n" +" \n" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"%s\n" +" \n" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s \n" +"Risk: None\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Skill used: %s\n" +"Difficulty: %d\n" +"%s\n" +"Time: %s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Notes:\n" +"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" +" \n" +"Skill used: speech\n" +"Difficulty: 2 \n" +"Base Score: +%3d%%\n" +"> Expansion Bonus: +%3d%%\n" +"> Faction Bonus: +%3d%%\n" +"> Special Bonus: +%3d%%\n" +" \n" +"Total: Skill +%3d%%\n" +" \n" +"Risk: High\n" +"Time: 4 Days\n" +"Positions: %d/1\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +"Notes: \n" +"Send a companion to gather materials for the next camp upgrade.\n" +" \n" +"Skill used: survival\n" +"Difficulty: N/A \n" +"Gathering Possibilities:\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "" +" \n" +"Risk: Very Low\n" +"Time: 3 Hours, Repeated\n" +"Positions: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Harvestable: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Ready for Planting: " +msgstr "" + +#: src/faction_camp.cpp +msgid "Needs Plowing: " +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Name: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "---- Engines ----\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Engine: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Status: %24d%%\n" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid ">Fuel: %25s\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "---- Fuel Storage & Battery ----\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "Estimated Chop Time: 5 Days\n" +msgstr "" + +#: src/faction_camp.cpp +msgid "No items are located at the drop point..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "You distribute %d kcal worth of food to your companions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "While %s, a silent specter approaches %s..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s notices the antlered horror and slips away before it gets too close." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Another survivor approaches %s asking for directions." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Fearful that he may be an agent of some hostile faction, %s doesn't mention " +"the camp." +msgstr "" + +#: src/faction_camp.cpp +msgid "The two part on friendly terms and the survivor isn't seen again." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "%s didn't detect the ambush until it was too late!" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The bull moose charged %s from the tree line..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Despite being caught off guard %s was able to run away until the moose gave " +"up pursuit." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "The jabberwock grabbed %s by the arm from behind and began to scream." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"Terrified, %s spun around and delivered a massive kick to the creature's " +"torso..." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Collapsing into a pile of gore, %s walked away unscathed..." +msgstr "" + +#: src/faction_camp.cpp +msgid "(Sounds like bullshit, you wonder what really happened.)" +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "" +"%s turned to find the hideous black eyes of a giant wasp staring back from " +"only a few feet away..." +msgstr "" + +#: src/faction_camp.cpp +msgid "The screams were terrifying, there was nothing anyone could do." +msgstr "" + +#: src/faction_camp.cpp +#, c-format +msgid "Pieces of %s were found strewn across a few bushes." +msgstr "" + +#: src/faction_camp.cpp +msgid "(You wonder if your companions are fit to work on their own...)" +msgstr "" + +#: src/field.cpp +msgid "blood splatter" +msgstr "鮮血灘" + +#: src/field.cpp +msgid "blood stain" +msgstr "血跡" + +#: src/field.cpp +msgid "puddle of blood" +msgstr "血泊" + +#: src/field.cpp +msgid "bile splatter" +msgstr "膽液灘" + +#: src/field.cpp +msgid "bile stain" +msgstr "膽液汙漬" + +#: src/field.cpp +msgid "puddle of bile" +msgstr "一灘膽液" + +#: src/field.cpp +msgid "bloody meat chunks" +msgstr "血腥的屍塊" + +#: src/field.cpp +msgid "heap of gore" +msgstr "屍塊堆" + +#: src/field.cpp +msgid "scraps of flesh" +msgstr "肉渣" + +#: src/field.cpp +msgid "broken vegetation tangle" +msgstr "殘敗的植物" + +#: src/field.cpp +msgid "shattered branches and leaves" +msgstr "破碎的枝葉" + +#: src/field.cpp +msgid "shredded leaves and twigs" +msgstr "被切碎的枝葉" + +#: src/field.cpp +msgid "cobwebs" +msgstr "蜘蛛網" + +#: src/field.cpp +msgid "thick webs" +msgstr "厚蜘蛛網" + +#: src/field.cpp +msgid "webs" +msgstr "網" + +#: src/field.cpp +msgid "puddle of slime" +msgstr "一灘黏液" + +#: src/field.cpp +msgid "slime stain" +msgstr "黏液汙漬" + +#: src/field.cpp +msgid "slime trail" +msgstr "黏液痕" + +#: src/field.cpp +msgid "acid splatter" +msgstr "酸液灘" + +#: src/field.cpp +msgid "acid streak" +msgstr "酸液痕" + +#: src/field.cpp +msgid "pool of acid" +msgstr "酸液灘" + +#: src/field.cpp +msgid "glob of sap" +msgstr "樹汁滴" + +#: src/field.cpp +msgid "pool of sap" +msgstr "樹汁灘" + +#: src/field.cpp +msgid "sap splatter" +msgstr "樹汁灘" + +#: src/field.cpp +msgid "sludge trail" +msgstr "污泥痕" + +#: src/field.cpp +msgid "thick sludge trail" +msgstr "厚污泥痕" + +#: src/field.cpp +msgid "thin sludge trail" +msgstr "薄污泥痕" + +#: src/field.cpp +msgid "raging fire" +msgstr "大火" + +#: src/field.cpp +msgid "small fire" +msgstr "火苗" + +#: src/field.cpp +msgid "legacy rubble" +msgstr "廢墟瓦礫" + +#: src/field.cpp +msgid "smoke" +msgstr "煙霧" + +#: src/field.cpp +msgid "thick smoke" +msgstr "濃煙" + +#: src/field.cpp +msgid "thin smoke" +msgstr "輕煙" + +#: src/field.cpp +msgid "hazy cloud" +msgstr "朦朧的雲霧" + +#: src/field.cpp +msgid "thick toxic gas" +msgstr "濃毒氣" + +#: src/field.cpp +msgid "toxic gas" +msgstr "毒氣" + +#: src/field.cpp +msgid "tear gas" +msgstr "催涙瓦斯" + +#: src/field.cpp +msgid "thick tear gas" +msgstr "濃催涙瓦斯" + +#: src/field.cpp +msgid "radioactive gas" +msgstr "輻射瓦斯" + +#: src/field.cpp +msgid "thick radioactive gas" +msgstr "濃輻射瓦斯" + +#: src/field.cpp +msgid "gas vent" +msgstr "氣閥" + +#: src/field.cpp +msgid "electric cloud" +msgstr "雷電雲" + +#: src/field.cpp +msgid "electric crackle" +msgstr "閃電" + +#: src/field.cpp +msgid "sparks" +msgstr "火花" + +#: src/field.cpp +msgid "odd ripple" +msgstr "奇異波紋" + +#: src/field.cpp +msgid "swirling air" +msgstr "氣漩" + +#: src/field.cpp +msgid "tear in reality" +msgstr "現實中的磨損" + +#: src/field.cpp +msgid "faint plasma" +msgstr "微光的電漿" + +#: src/field.cpp +msgid "glaring plasma" +msgstr "發光的電漿" + +#: src/field.cpp +msgid "glowing plasma" +msgstr "刺眼的電漿" + +#: src/field.cpp +msgid "beam of light" +msgstr "光束" + +#: src/field.cpp +msgid "faint glimmer" +msgstr "昏暗的微光" + +#: src/field.cpp +msgid "intense beam of light" +msgstr "強烈的光束" + +#: src/field.cpp +msgid "spotlight" +msgstr "探照燈" + +#: src/field.cpp +msgid "dazzling" +msgstr "炫目" + +#: src/field.cpp +msgid "plant sap splatter" +msgstr "樹汁飛濺" + +#: src/field.cpp +msgid "plant sap stain" +msgstr "樹汁污漬" + +#: src/field.cpp +msgid "puddle of resin" +msgstr "一灘樹脂" + +#: src/field.cpp +msgid "bug blood splatter" +msgstr "蟲血飛濺" + +#: src/field.cpp +msgid "bug blood stain" +msgstr "蟲血污漬" + +#: src/field.cpp +msgid "puddle of bug blood" +msgstr "一灘蟲血" + +#: src/field.cpp +msgid "hemolymph splatter" +msgstr "體液飛濺" + +#: src/field.cpp +msgid "hemolymph stain" +msgstr "體液污漬" + +#: src/field.cpp +msgid "puddle of hemolymph" +msgstr "一灘體液" + +#: src/field.cpp +msgid "shards of chitin" +msgstr "甲殼碎片" + +#: src/field.cpp +msgid "shattered bug leg" +msgstr "破碎的蟲腿" + +#: src/field.cpp +msgid "torn insect organs" +msgstr "撕裂的昆蟲內臟" + +#: src/field.cpp +msgid "gooey scraps" +msgstr "黏稠的碎屑" + +#: src/field.cpp +msgid "heap of squishy gore" +msgstr "糊狀的血塊堆" + +#: src/field.cpp +msgid "icky mess" +msgstr "噁心的一塌糊塗" + +#: src/field.cpp +msgid "swirl of tobacco smoke" +msgstr "菸草煙霧旋流" + +#: src/field.cpp +msgid "thick tobacco smoke" +msgstr "菸草濃煙" + +#: src/field.cpp +msgid "tobacco smoke" +msgstr "菸草煙霧" + +#: src/field.cpp +msgid "pot smoke" +msgstr "大麻煙霧" + +#: src/field.cpp +msgid "swirl of pot smoke" +msgstr "大麻菸霧旋流" + +#: src/field.cpp +msgid "thick pot smoke" +msgstr "大麻濃煙" + +#: src/field.cpp +msgid "crack smoke" +msgstr "快克煙霧" + +#: src/field.cpp +msgid "swirl of crack smoke" +msgstr "快克煙霧旋流" + +#: src/field.cpp +msgid "thick crack smoke" +msgstr "快克濃煙" + +#: src/field.cpp +msgid "meth smoke" +msgstr "冰毒煙霧" + +#: src/field.cpp +msgid "swirl of meth smoke" +msgstr "冰毒煙霧旋流" + +#: src/field.cpp +msgid "thick meth smoke" +msgstr "冰毒濃煙" + +#: src/field.cpp +msgid "angry swarm of bees" +msgstr "憤怒的蜂群" + +#: src/field.cpp +msgid "some bees" +msgstr "一些蜜蜂" + +#: src/field.cpp +msgid "swarm of bees" +msgstr "一群蜜蜂" + +#: src/field.cpp +msgid "airborne incendiary" +msgstr "空中燃燒彈" + +#: src/field.cpp +msgid "relaxation gas" +msgstr "鬆弛瓦斯" + +#: src/field.cpp +msgid "sedative gas" +msgstr "鎮靜瓦斯" + +#: src/field.cpp +msgid "fungal haze" +msgstr "真菌霧" + +#: src/field.cpp +msgid "thick fungal haze" +msgstr "濃厚真菌霧" + +#: src/field.cpp +msgid "fungicidal gas" +msgstr "殺菌煙霧" + +#: src/field.cpp +msgid "thick fungicidal gas" +msgstr "殺菌濃霧" + +#: src/field.cpp +msgid "smoke vent" +msgstr "" + +#: src/field.cpp +msgid "Whew... smells like skunk!" +msgstr "嗚… 聞起來像是臭鼬!" + +#: src/field.cpp +msgid "Man, that smells like some good shit!" +msgstr "老兄, 那聞起來很棒!" + +#: src/field.cpp +msgid "I don't know... should you really be smoking that stuff?" +msgstr "我不知道… 你真的要抽那東西?" + +#: src/field.cpp +msgid "Ew, smells like burning rubber!" +msgstr "噁, 聞起來像是燃燒的橡膠!" + +#: src/field.cpp +msgid "Ugh, that smells rancid!" +msgstr "呃, 腐敗的臭味!" + +#: src/field.cpp +#, c-format +msgid "A %s hits you!" +msgstr "%s 擊中了你!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits %2$s!" +msgstr "%1$s 擊中了 %2$s!" + +#: src/field.cpp +#, c-format +msgid "A %1$s hits the %2$s!" +msgstr "%1$s 擊中了 %2$s!" + +#: src/field.cpp +msgid "The acid burns your body!" +msgstr "酸液灼燒著你的身體!" + +#: src/field.cpp +msgid "The acid burns s body!" +msgstr "酸液灼燒著 的身體!" + +#: src/field.cpp +msgid "The acid burns your legs and feet!" +msgstr "酸液灼燒著你的腿部和腳掌!" + +#: src/field.cpp +msgid "The acid burns s legs and feet!" +msgstr "酸液灼燒著 的腿部和腳掌!" + +#: src/field.cpp +msgid "You're lying in a pool of acid" +msgstr "你正躺在酸液灘裡頭" + +#: src/field.cpp +msgid "You're standing in a pool of acid" +msgstr "你正站在酸液灘上面" + +#: src/field.cpp +msgid "The sap sticks to you!" +msgstr "樹汁粘到你了!" + +#: src/field.cpp +msgid "The sap sticks to !" +msgstr "樹汁粘到 了!" + +#: src/field.cpp +msgid "The sludge is thick and sticky. You struggle to pull free." +msgstr "污泥黏稠。你掙扎著要逃脫。" + +#: src/field.cpp +msgid "You burn your legs and feet!" +msgstr "你的腿部和腳掌燒到了!" + +#: src/field.cpp +msgid "You're burning up!" +msgstr "你燒起來了!" + +#: src/field.cpp +msgid "You're set ablaze!" +msgstr "你燒起來了!" + +#: src/field.cpp +msgid "Your whole body is burning!" +msgstr "你全身都在燃燒!" + +#: src/field.cpp +msgid " burns their legs and feet!" +msgstr " 燒到了腿部和腳掌!" + +#: src/field.cpp +msgid " is burning up!" +msgstr " 燒起來了!" + +#: src/field.cpp +msgid " is set ablaze!" +msgstr " 燒起來了!" + +#: src/field.cpp +msgid "s whole body is burning!" +msgstr " 全身都燒起來了!" + +#: src/field.cpp +msgid "You're standing in a fire!" +msgstr "你正站在火上面!" + +#: src/field.cpp +msgid "You're waist-deep in a fire!" +msgstr "你正站在火堆中!" + +#: src/field.cpp +msgid "You're surrounded by raging fire!" +msgstr "你被烈火包圍了!" + +#: src/field.cpp +msgid "You're lying in fire!" +msgstr "你正躺在火裡頭!" + +#: src/field.cpp +#, c-format +msgid "You feel sick from inhaling the %s" +msgstr "吸入 %s 讓你感到不適。" + +#: src/field.cpp +msgid "This radioactive gas burns!" +msgstr "輻射瓦斯燒灼著你!" + +#: src/field.cpp +msgid "You're torched by flames!" +msgstr "你被火燒到了!" + +#: src/field.cpp +msgid " is torched by flames!" +msgstr " 被火燒到了!" + +#: src/field.cpp +msgid "These flames do not burn you." +msgstr "火焰沒有燒到你。" + +#: src/field.cpp +msgid "Those flames do not burn ." +msgstr "火焰沒有燒到 。" + +#: src/field.cpp +msgid "You're painfully electrocuted!" +msgstr "" + +#: src/field.cpp +msgid " is shocked!" +msgstr " 被電擊了!" + +#: src/field.cpp +msgid "You're shocked!" +msgstr "你被電擊了!" + +#: src/field.cpp +msgid "The electric cloud doesn't affect you." +msgstr "雷電雲並沒有對你造成影響。" + +#: src/field.cpp +msgid "The electric cloud doesn't seem to affect ." +msgstr "雷電雲並沒有對 造成影響。" + +#: src/field.cpp msgid "You're violently teleported!" msgstr "你被強制傳送了!" @@ -117197,15 +120058,15 @@ msgstr "無法讀取圖像包: %s" #: src/game.cpp msgid "Loading core data" -msgstr "載入核心數據中" +msgstr "正在讀取核心數據" #: src/game.cpp msgid "Please wait while the world data loads..." -msgstr "世界資料載入中..." +msgstr "正在讀取世界資料, 請稍候…" #: src/game.cpp src/start_location.cpp msgid "Please wait as we build your world" -msgstr "世界生成中請等待..." +msgstr "正在生成世界, 請稍候" #. ~ %s is player name #: src/game.cpp @@ -117291,7 +120152,7 @@ msgstr "世界保留。殘存角色: %s" #: src/game.cpp msgid "Wait till you wake up..." -msgstr "請稍候至醒來..." +msgstr "等你睡醒…" #: src/game.cpp #, c-format @@ -117302,7 +120163,7 @@ msgstr "%s。取消自動移動" #, c-format msgctxt "cancel_activity_or_ignore_query" msgid "%s %s (Case Sensitive)" -msgstr "" +msgstr "%s %s (大小寫敏感)" #: src/game.cpp #, c-format @@ -117337,7 +120198,7 @@ msgstr "閱讀" #: src/game.cpp msgctxt "action" msgid "eat" -msgstr "進食" +msgstr "食用" #: src/game.cpp msgctxt "action" @@ -117357,7 +120218,7 @@ msgstr "投擲" #: src/game.cpp msgctxt "action" msgid "change side" -msgstr "穿在另一側" +msgstr "換邊" #: src/game.cpp msgctxt "action" @@ -117397,7 +120258,7 @@ msgstr "拆解" #: src/game.cpp msgctxt "action" msgid "reassign" -msgstr "重定按鍵" +msgstr "重定代碼" #: src/game.cpp msgid "Autopickup" @@ -117463,11 +120324,11 @@ msgstr "你的手上沒有遠程武器。" #: src/game.cpp msgid "Watch the last moments of your life...?" -msgstr "看你死後的情形...?" +msgstr "看你死後的情形…?" #: src/game.cpp msgid "Loading files" -msgstr "載入檔案中" +msgstr "正在讀取檔案" #: src/game.cpp #, c-format @@ -117505,7 +120366,7 @@ msgstr "使用者介面資料" #: src/game.cpp msgid "Failed to save game data" -msgstr "無法儲存遊戲資料" +msgstr "無法儲存遊戲數據" #: src/game.cpp msgid "Debug Functions - Using these is CHEATING!" @@ -117625,7 +120486,7 @@ msgstr "設置自動移動路徑" #: src/game.cpp msgid "Show mutation category levels" -msgstr "顯示各種突變的層級" +msgstr "顯示突變分類等級" #: src/game.cpp msgid "Overmap editor" @@ -117641,7 +120502,15 @@ msgstr "傳送 - 鄰近的大地圖" #: src/game.cpp msgid "Test trait group" -msgstr "測試特徵群組" +msgstr "測試特質群組" + +#: src/game.cpp +msgid "Show debug message" +msgstr "" + +#: src/game.cpp +msgid "Crash game (test crash handling)" +msgstr "" #: src/game.cpp msgid "Quit to Main Menu" @@ -117654,7 +120523,7 @@ msgstr "顯示目前地圖" #: src/game.cpp #, c-format msgid "Location %d:%d in %d:%d, %s\n" -msgstr "地點 %d:%d 在 %d:%d, %s\n" +msgstr "位置 %d:%d 在 %d:%d, %s\n" #: src/game.cpp #, c-format @@ -117662,7 +120531,7 @@ msgid "" "Current turn: %d.\n" "%s\n" msgstr "" -"當前回合: %d.\n" +"當前回合: %d。\n" "%s\n" #: src/game.cpp @@ -117744,7 +120613,7 @@ msgstr "對自己造成多少傷害? hp: %d" #: src/game.cpp msgid "This binary was not compiled with tiles support." -msgstr "此二進位檔並沒有編譯成支援圖像。" +msgstr "這個執行檔並沒有編譯成支援圖像。" #: src/game.cpp msgid "year" @@ -117766,9 +120635,10 @@ msgstr "小時" msgid "minute" msgstr "分鐘" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp src/martialarts.cpp msgid "turn" -msgstr "回合" +msgid_plural "turns" +msgstr[0] "回合" #: src/game.cpp msgid "Set year to?" @@ -117942,7 +120812,7 @@ msgstr "月亮 %s" #: src/game.cpp msgid "Lighting:" -msgstr "光源:" +msgstr "光線:" #: src/game.cpp #, c-format @@ -118113,7 +120983,7 @@ msgstr "你無法看到電腦螢幕!" #: src/game.cpp src/iuse.cpp msgid "You'll need to put on reading glasses before you can see the screen." -msgstr "你需要戴上你的老花眼鏡才能看清螢幕。" +msgstr "你必須先戴上老花眼鏡才能看清螢幕。" #: src/game.cpp msgid "The console doesn't display anything coherent." @@ -118276,7 +121146,7 @@ msgstr "你和 %s 互換位置。" #: src/game.cpp #, c-format msgid "You fail to budge your %s!" -msgstr "你無法移動你的 %s !" +msgstr "你無法移動你的 %s!" #: src/game.cpp #, c-format @@ -118290,7 +121160,7 @@ msgstr "你推了 %s, 但你推不動。" #: src/game.cpp msgid "Enter new pet name:" -msgstr "輸入新的寵物名字" +msgstr "輸入新的寵物名字:" #: src/game.cpp msgid "Bag item" @@ -118304,7 +121174,7 @@ msgstr "你把 %1$s 掛上 %2$s, 準備存放裝備。" #: src/game.cpp #, c-format msgid "You dump the contents of the %s's bag on the ground." -msgstr "你把 %s 背包裡的物品倒在地上。" +msgstr "你把 %s 的背包裡面的東西倒在地上。" #: src/game.cpp #, c-format @@ -118319,7 +121189,7 @@ msgstr "%1$s 超重了。你不能轉移你的 %2$s。" #: src/game.cpp #, c-format msgid "There's no room in your %1$s's %2$s for that, it's too bulky!" -msgstr "你 %1$s 的 %2$s 沒有空間能容納! 它太龐大了!" +msgstr "你的 %1$s 的 %2$s 沒有空間來容納它, 它太龐大了!" #: src/game.cpp msgid "Really kill the zombie slave?" @@ -118344,7 +121214,7 @@ msgstr "推開" #: src/game.cpp msgid "Examine wounds" -msgstr "檢視傷口" +msgstr "檢查傷口" #: src/game.cpp msgid "Use item on" @@ -118352,9 +121222,9 @@ msgstr "對他使用物品" #: src/game.cpp msgid "Sort armor" -msgstr "排序護甲" +msgstr "排序裝備" -#: src/game.cpp +#: src/game.cpp src/martialarts.cpp msgid "Attack" msgstr "攻擊" @@ -118385,7 +121255,7 @@ msgstr "" msgid "Use which item?" msgstr "使用哪個物品?" -#: src/game.cpp src/iuse.cpp src/veh_interact.cpp +#: src/game.cpp src/iuse.cpp msgid "Never mind" msgstr "沒事" @@ -118395,7 +121265,7 @@ msgstr "你可能會被攻擊! 確定?" #: src/game.cpp msgid "Examine where?" -msgstr "檢視 哪邊?" +msgstr "檢查哪邊?" #: src/game.cpp msgid "There is a fire here." @@ -118421,8 +121291,8 @@ msgid "" msgstr "" #: src/game.cpp -msgid "It's looks solid, and will burn for a few hours without extra fuel." -msgstr "火勢看上去很旺, 就算沒有額外的燃料也能再燒上幾個小時。" +msgid "It looks solid, and will burn for a few hours without extra fuel." +msgstr "" #: src/game.cpp msgid "" @@ -118437,11 +121307,11 @@ msgstr "" #: src/game.cpp msgid "You can't do that while driving." -msgstr "你無法邊駕駛邊作那件事。" +msgstr "你無法在駕駛時那麼做。" #: src/game.cpp msgid "You can't do that on a moving vehicle." -msgstr "你無法在移動的車輛中作那件事。" +msgstr "你無法在移動中的車輛上那麼做。" #: src/game.cpp #, c-format @@ -118455,7 +121325,7 @@ msgstr "%s 牢牢封住了。" #: src/game.cpp src/iexamine.cpp msgid "It is empty." -msgstr "裡面沒有東西。" +msgstr "它是空的。" #: src/game.cpp msgid "Peek where?" @@ -118494,7 +121364,7 @@ msgstr "黑暗" #: src/game.cpp msgid "Bright light." -msgstr "亮光." +msgstr "亮光。" #: src/game.cpp msgid "Unseen." @@ -118503,16 +121373,16 @@ msgstr "看不見。" #: src/game.cpp #, c-format msgid "%s; Impassable" -msgstr "%s; 無法通過" +msgstr "%s, 無法通過" #: src/game.cpp #, c-format msgid "%s; Movement cost %d" -msgstr "%s; 移動消耗 %d" +msgstr "%s, 移動消耗: %d" #: src/game.cpp msgid "Lighting: " -msgstr "光源: " +msgstr "光線: " #: src/game.cpp #, c-format @@ -118526,12 +121396,12 @@ msgstr "告示牌: ???" #: src/game.cpp #, c-format msgid "Below: %s; No support" -msgstr "正下方: %s; 沒有支撐" +msgstr "正下方: %s, 沒有支撐" #: src/game.cpp #, c-format msgid "Below: %s; Walkable" -msgstr "正下方: %s; 可以行走" +msgstr "正下方: %s, 可以行走" #: src/game.cpp msgid "You cannot see what is inside of it." @@ -118543,7 +121413,7 @@ msgstr "有什麼東西在這裡, 但你看不到它。" #: src/game.cpp msgid "More items here..." -msgstr "這裡有更多的物品..." +msgstr "這裡有更多的物品…" #: src/game.cpp #, c-format @@ -118553,11 +121423,11 @@ msgstr "%s [%d]" #: src/game.cpp msgid "how all / hide distant" -msgstr "" +msgstr " 顯示全部/隱藏過遠" #: src/game.cpp msgid "ap" -msgstr "地圖" +msgstr " 地圖" #: src/game.cpp msgid "Zones manager" @@ -118598,7 +121468,7 @@ msgstr "沒有定義的區域" #: src/game.cpp #, c-format msgid "Press %s to view extended description" -msgstr "按下 %s 來檢視詳細描述" +msgstr "按 %s 來檢視詳細描述" #: src/game.cpp #, c-format @@ -118634,19 +121504,19 @@ msgstr "排序: 分類" #: src/game.cpp msgid "eset" -msgstr "重置" +msgstr " 重置" #: src/game.cpp msgid "xamine" -msgstr "檢視" +msgstr "檢查" #: src/game.cpp msgid "ompare" -msgstr "比較" +msgstr " 比較" #: src/game.cpp msgid "ilter" -msgstr "篩選" +msgstr " 篩選" #: src/game.cpp msgid "<+/->Priority" @@ -118658,11 +121528,11 @@ msgstr "在你附近沒有發現任何的物品或怪物!" #: src/game.cpp msgid "Filter:" -msgstr "篩選器:" +msgstr "篩選:" #: src/game.cpp msgid "UP: history, CTRL-U: clear line, ESC: abort, ENTER: save" -msgstr "[上] 歷史 [CTRL-U] 清除行 [ESC] 終止 [ENTER] 儲存" +msgstr "[上] 歷史 [Ctrl+U] 清除行 [Esc] 終止 [Enter] 儲存" #: src/game.cpp msgid "High Priority:" @@ -118670,7 +121540,7 @@ msgstr "高優先權:" #: src/game.cpp msgid "UP: history, CTRL-U clear line, ESC: abort, ENTER: save" -msgstr "[上] 歷史 [CTRL-U] 清除行 [ESC] 終止 [ENTER] 儲存" +msgstr "[上] 歷史 [Ctrl+U] 清除行 [Esc] 終止 [Enter] 儲存" #: src/game.cpp msgid "Low Priority:" @@ -118774,7 +121644,7 @@ msgstr "你不能倒在那裏!" #: src/game.cpp src/item.cpp #, c-format msgid "The %s froze solid before you could finish." -msgstr "" +msgstr "在你完成之前 %s 已經凍成固態了。" #: src/game.cpp msgid "Drop where?" @@ -118790,7 +121660,7 @@ msgstr "投擲物品" #: src/game.cpp msgid "You don't have any items to throw." -msgstr "你沒有可投擲的物品。" +msgstr "你沒有可以投擲的物品。" #: src/game.cpp src/player.cpp msgid "You don't have that item." @@ -118810,7 +121680,7 @@ msgstr "你聚精會神, 你的身體開始服從大腦了!" #: src/game.cpp msgid "You can't muster up the effort to throw anything..." -msgstr "你無法提起力氣投擲東西..." +msgstr "你無法提起力氣投擲東西…" #: src/game.cpp msgid "Your eyes steel, and you raise your weapon!" @@ -118818,7 +121688,7 @@ msgstr "你目光如鐵, 你舉起了你的武器!" #: src/game.cpp msgid "You can't fire your weapon, it's too heavy..." -msgstr "你無法用你的武器射擊, 它太重了..." +msgstr "你無法用你的武器射擊, 它太重了…" #: src/game.cpp #, c-format @@ -118831,7 +121701,7 @@ msgstr "你無法再射擊。" #: src/game.cpp msgid "You need a free arm to drive!" -msgstr "你要空出手才能使用!" +msgstr "你需要空出一隻手來駕駛!" #: src/game.cpp #, c-format @@ -118852,7 +121722,7 @@ msgstr "你的 %s 需要 %i 電量才能發射!" msgid "" "You need a UPS with at least %d charges or an advanced UPS with at least %d " "charges to fire that!" -msgstr "你需要至少 %d 電量的 UPS 或是 %d 電量的高級 UPS 才能啟動!" +msgstr "你需要一個至少 %d 電量的 UPS 或是 %d 電量的高級 UPS 才能射擊!" #: src/game.cpp msgid "" @@ -118863,16 +121733,16 @@ msgstr "你必須站在適合的地形或是家具附近才能使用這個武器 #: src/game.cpp #, c-format msgid "The %s can't be fired in its current state." -msgstr "" +msgstr "%s 在目前的狀態下無法發射。" #. ~ Name and number of items listed for cutting up #: src/game.cpp #, c-format msgctxt "butchery menu" msgid "Cut up %s (%d)" -msgstr "" +msgstr "分割 %s (共 %d 件)" -#. ~ Name and number of items listed for disassembling +#. ~ Name, number of items and time to complete disassembling #: src/game.cpp #, c-format msgctxt "butchery menu" @@ -118885,7 +121755,7 @@ msgstr "你無法在行駛中屠宰!" #: src/game.cpp msgid "You don't have a butchering tool." -msgstr "你沒有能進行屠宰的工具。" +msgstr "你沒有屠宰工具。" #: src/game.cpp msgid "There are no corpses here to butcher." @@ -118897,20 +121767,20 @@ msgstr "你在這裡無法接觸到物品。" #: src/game.cpp msgid "You don't have the necessary tools to disassemble any items here." -msgstr "你沒有所需的工具, 無法拆解任何物品。" +msgstr "你沒有必要的工具來拆解物品。" #: src/game.cpp #, c-format msgid "You see %s nearby! Start butchering anyway?" -msgstr "你看見 %s 在附近! 繼續屠宰嗎?" +msgstr "你看見 %s 在附近! 仍要屠宰?" #: src/game.cpp msgid "Choose corpse to butcher / item to disassemble" msgstr "選擇要屠宰的屍體 / 拆解的物品" #: src/game.cpp -msgid "Butcher everything" -msgstr "全數屠宰" +msgid "Quick butcher everything" +msgstr "全數快速屠宰" #: src/game.cpp msgid "Disassemble everything once" @@ -118921,39 +121791,41 @@ msgid "Disassemble everything" msgstr "拆解所有物品" #: src/game.cpp -msgid "Cut up all you can" -msgstr "分割全部" +msgid "Cut up everything" +msgstr "全數分割" #: src/game.cpp msgid "" "You are not in the mood and the prospect of guts and blood on your hands " "convinces you to turn away." -msgstr "" +msgstr "你沒有心情, 而且滿手沾滿內臟和鮮血的想像圖, 夠讓你想逃避的。" #: src/game.cpp msgid "" "You are not in the mood and the prospect of work stops you before you begin." -msgstr "" +msgstr "你沒有心情, 而且光想像如何作業, 就讓你還沒開始就放棄了。" #: src/game.cpp msgid "Choose type of butchery:" -msgstr "" +msgstr "選擇屠宰的方式:" #: src/game.cpp msgid "Quick butchery" -msgstr "" +msgstr "快速屠宰" #: src/game.cpp msgid "" -"This techinque is used when you are in a hurry, but still want to harvest " +"This technique is used when you are in a hurry, but still want to harvest " "something from the corpse. Yields are lower as you don't try to be precise," " but it's useful if you don't want to set up a workshop. Prevents zombies " "from raising." msgstr "" +"當你在匆忙中仍想從屍體中收穫點東西的時候, 使用這種手法。因為你沒有嘗試要精確, 所以產量較低, 反正你又不是要開作坊, " +"它依然很有用的。能防止殭屍再生。" #: src/game.cpp msgid "Full butchery" -msgstr "" +msgstr "完整屠宰" #: src/game.cpp msgid "" @@ -118961,35 +121833,38 @@ msgid "" " tree or a butchering rack, a flat surface (for ex. a table, a leather tarp," " etc.) and good tools. Yields are plentiful and varied, but it is time " "consuming." -msgstr "" +msgstr "這種手法用於正確地屠宰屍體, 並且需要繩索和樹木或屠宰架、平坦表面 (例如桌子、皮革篷布等) 和良好的工具。產量豐富且多樣, 但是耗時。" #: src/game.cpp msgid "Field dress corpse" -msgstr "" +msgstr "去除內臟" #: src/game.cpp msgid "" "Technique that involves removing internal organs and viscera to protect the " -"corpse from rotting from inside. Yields internal organs. Carcass will be " +"corpse from rotting from inside. Yields internal organs. Carcass will be " "lighter and will stay fresh longer. Can be combined with other methods for " "better effects." msgstr "" +"這手法涉及去除體內組織和臟器以保護屍體免於從內部腐爛。產出內臟。屍體會變輕, 並將保持更長的新鮮期。可以與其他方法合併使用以獲得更好的效果。" #: src/game.cpp msgid "Quarter corpse" -msgstr "" +msgstr "四等分屍體" #: src/game.cpp msgid "" -"By quartering a previously field dressed corpse you will aquire four parts " +"By quartering a previously field dressed corpse you will acquire four parts " "with reduced weight and volume. It may help in transporting large game. " "This action destroys skin, hide, pelt, etc., so don't use it if you want to " "harvest them later." msgstr "" +"對經過去除內臟作業的屍體進行四等分, 你將獲得四個重量和體積較小的部件。它將有助於運輸大型獵物。這個動作會破壞皮膚、皮革、毛皮等, " +"因此你如果想在稍後割取它們, 就請不要使用這手法。" #: src/game.cpp msgid "Dissect corpse" -msgstr "" +msgstr "解剖屍體" #: src/game.cpp msgid "" @@ -118998,10 +121873,12 @@ msgid "" "tools, ruins corpse, and consumes lot of time. Your medical knowledge is " "most useful here." msgstr "" +"通過仔細解剖屍體, 您將檢查可能的生化插件, 並在狀態允許下取出它們。需要手術刀等級的切割工具, 破壞拆解屍體, 並消耗大量的時間。進行作業時, " +"你的醫學知識將會是最有用的。" #: src/game.cpp msgid "You're too full to eat the underbrush." -msgstr "" +msgstr "你太飽了, 無法吃下草叢。" #: src/game.cpp msgid "You eat the underbrush." @@ -119022,11 +121899,11 @@ msgstr "你留下空的 %s。" #: src/game.cpp msgid "Change side for item" -msgstr "把裝備穿在另一側" +msgstr "把裝備穿到另一側" #: src/game.cpp msgid "You don't have sided items worn." -msgstr "你並沒有穿上單邊的裝備。" +msgstr "你沒有穿戴單側的裝備。" #: src/game.cpp #, c-format @@ -119053,7 +121930,7 @@ msgstr "%s 已經滿了!" #: src/game.cpp #, c-format msgid "You can't reload a %s!" -msgstr "你不能裝填 %s !" +msgstr "你不能裝填 %s!" #: src/game.cpp msgid "Reload item" @@ -119087,7 +121964,7 @@ msgstr "%s 已經空了!" #: src/game.cpp msgid "The liquid can't be unloaded in its current state!" -msgstr "" +msgstr "這液體因為它目前的狀態而無法卸載。" #: src/game.cpp msgid "Unload what?" @@ -119096,7 +121973,7 @@ msgstr "清空什麼?" #: src/game.cpp #, c-format msgid "You can't unload a %s!" -msgstr "你不能清空 %s !" +msgstr "你不能清空 %s!" #: src/game.cpp #, c-format @@ -119116,7 +121993,7 @@ msgstr "你的 %s 沒有裝填。" #: src/game.cpp #, c-format msgid "You disassemble your %s." -msgstr "你拆解了你的 %s." +msgstr "你拆解了你的 %s。" #: src/game.cpp #, c-format @@ -119134,7 +122011,7 @@ msgstr "你不能移除耗用到一半的鈽!" #: src/game.cpp msgid "Who do you want to talk to or yell at?" -msgstr "你想要向誰交談或大喊?" +msgstr "你要向誰交談或大喊?" #: src/game.cpp msgid "Yell" @@ -119146,7 +122023,7 @@ msgstr "大聲喊出一句話" #: src/game.cpp msgid "Enter a sentence to yell" -msgstr "輸入你想喊出的說話" +msgstr "輸入你想喊出的話" #: src/game.cpp #, c-format @@ -119204,7 +122081,7 @@ msgstr "%s 發出了呼嚕的聲音並開始跟著你。" #: src/game.cpp #, c-format msgid "Really step into %s?" -msgstr "確定踏入 %s ?" +msgstr "確定踏入 %s?" #: src/game.cpp msgid "You can't move while in your shell. Deactivate it to go mobile." @@ -119213,17 +122090,17 @@ msgstr "你在殼中的時候無法移動。取消之後才能移動。" #: src/game.cpp #, c-format msgid "You start breaking the %1$s with your %2$s." -msgstr "" +msgstr "你開始用你的 %2$s 對 %1$s 進行破壞。" #: src/game.cpp #, c-format msgid "Your %s doesn't turn on." -msgstr "" +msgstr "你的 %s 沒有啟動。" #: src/game.cpp #, c-format msgid "You start tearing into the %s with your teeth and claws." -msgstr "" +msgstr "你開始用牙齒和爪子撕開 %s。" #: src/game.cpp msgid "You cannot pull yourself away from the faultline..." @@ -119243,7 +122120,7 @@ msgstr "你的意志力決定了你的力量!" #: src/game.cpp msgid "You're too pacified to strike anything..." -msgstr "你太平靜無法攻擊任何東西..." +msgstr "你太平靜無法攻擊任何東西…" #: src/game.cpp #, c-format @@ -119291,7 +122168,7 @@ msgstr "你打開了 %1$s 的 %2$s。" #: src/game.cpp #, c-format msgid "You bump into the %s!" -msgstr "你撞到 %s !" +msgstr "你撞到了 %s!" #: src/game.cpp msgid "That door is locked!" @@ -119343,7 +122220,7 @@ msgstr "告示牌寫著: %s" #: src/game.cpp msgid "There is a sign here, but you are unable to read it." -msgstr "" +msgstr "這裡有一個告示牌, 但是你看不懂。" #: src/game.cpp #, c-format @@ -119352,7 +122229,7 @@ msgstr "這裡寫著: %s" #: src/game.cpp msgid "Something is written here, but you are unable to read it." -msgstr "" +msgstr "這裡寫著什麼, 但是你看不懂。" #: src/game.cpp #, c-format @@ -119516,7 +122393,7 @@ msgstr "你需要空氣但是你無法游泳! 快到陸地上!" #: src/game.cpp msgid "No hostile creature in reach. Waiting a turn." -msgstr "" +msgstr "範圍內沒有敵對生物。等待一回合。" #: src/game.cpp msgid "You dive into water." @@ -119608,13 +122485,13 @@ msgstr "你不能把東西拖上或拖下樓梯。" msgid "" "There is a LOT of heat coming out of there, even the stairs have melted " "away. Jump down? You won't be able to get back up." -msgstr "" +msgstr "那裡散出極大量的熱能, 甚至樓梯都融化了。還要跳下去嗎? 你將無法回到上面來。" #: src/game.cpp msgid "" "There is a LOT of heat coming out of there. Push through the half-molten " "rocks and ascend? You will not be able to get back down." -msgstr "" +msgstr "那裡散出極大量的熱能。要推穿半熔岩往上爬升嗎? 你將無法回到下面來。" #: src/game.cpp msgid "Halfway down, the way down becomes blocked off." @@ -119640,7 +122517,7 @@ msgstr "這是一個陡坡, 要使用你的藤蔓降下去嗎?" #: src/game.cpp msgid "Detach a vine? It'll hurt, but you'll be able to climb back up..." -msgstr "要截斷一條藤蔓嗎? 這會讓你受傷, 但這樣你就能用它爬回去了..." +msgstr "要截斷一條藤蔓嗎? 這會讓你受傷, 但這樣你就能用它爬回去了…" #: src/game.cpp msgid "You descend on your vines, though leaving a part of you behind stings." @@ -119665,7 +122542,7 @@ msgstr "這是一個陡坡, 要使用繩索垂降嗎?" #: src/game.cpp msgid "There is a sheer drop halfway down. Jump?" -msgstr "這是一個陡坡, 往下跳嘛?" +msgstr "這是一個陡坡, 要往下跳嗎?" #: src/game.cpp msgid "AUTO: goes down" @@ -119761,13 +122638,13 @@ msgstr "%1$s 傳送到了 %2$s 的中間!" #, c-format msgctxt "memorial_male" msgid "Telefragged a %s." -msgstr "傳送殺了 %s 。" +msgstr "傳送殺了 %s。" #: src/game.cpp #, c-format msgctxt "memorial_female" msgid "Telefragged a %s." -msgstr "傳送殺了 %s 。" +msgstr "傳送殺了 %s。" #: src/game.cpp msgid "Set the Scent Map sensitivity to (0 to cancel)?" @@ -119775,7 +122652,7 @@ msgstr "將氣味圖敏感度設置為? (0 為取消)" #: src/game.cpp msgid "Saving game, this may take a while" -msgstr "儲存遊戲, 可能會花一些時間" +msgstr "正在儲存遊戲, 可能會花一些時間" #: src/game.cpp #, c-format @@ -119822,12 +122699,16 @@ msgstr "你覺得你的身體正在腐壞。" #: src/game.cpp msgid "You feel fatigue seeping into your body." -msgstr "" +msgstr "你感到疲倦滲入你的身體。" + +#: src/game.cpp +msgid "The portal collapses!" +msgstr "傳送門崩塌了!" #: src/game.cpp #, c-format msgid "You have an urge to wear the %s." -msgstr "你有穿上 %s 的衝動。" +msgstr "你有穿戴 %s 的衝動。" #: src/game.cpp #, c-format @@ -119872,7 +122753,7 @@ msgstr "你的背部感覺更強壯了。" #: src/game.cpp msgid "You feel a pleasant tingle." -msgstr "" +msgstr "你感到愉快的刺痛。" #: src/game.cpp msgid "You feel hungry." @@ -119884,7 +122765,7 @@ msgstr "你覺得口渴。" #: src/game.cpp msgid "You feel an evil presence..." -msgstr "你感覺有邪惡的存在..." +msgstr "你感覺有邪惡的存在…" #: src/game.cpp msgid "You feel a tickle of insanity." @@ -119900,7 +122781,7 @@ msgstr "你覺得你的基因正在退化。" #: src/game.cpp msgid "You feel an otherworldly attention upon you..." -msgstr "你感覺有異世界在注意你..." +msgstr "你感覺有異世界在注意你…" #: src/game.cpp msgid "You feel a force pulling you inwards." @@ -119908,7 +122789,7 @@ msgstr "你覺得有一股力量將你向內拉。" #: src/game.cpp msgid "You hear a rattling noise coming from inside yourself." -msgstr "你聽見了從你身體發出的聲響。" +msgstr "你聽見了從你的身體裡發出的聲響。" #: src/game.cpp msgid "You feel storms coming." @@ -119949,18 +122830,18 @@ msgstr "速度 %s%d! " #: src/game_inventory.cpp msgid "You don't have the necessary item at hand." -msgstr "你手上沒有所需的東西。" +msgstr "你的手邊沒有必要的物品。" #: src/game_inventory.cpp #, c-format msgid "" "Item hotkeys assigned: " "%d/%d" -msgstr "已分配的物品熱鍵: %d/%d" +msgstr "已指派的物品代碼: %d/%d" #: src/game_inventory.cpp src/inventory_ui.cpp msgid "Your inventory is empty." -msgstr "你的物品欄裡沒東西。" +msgstr "你的物品欄是空的。" #: src/game_inventory.cpp #, c-format @@ -119997,15 +122878,15 @@ msgstr "防火" #: src/game_inventory.cpp msgid "ENV" -msgstr "環境傷害防護" +msgstr "環境" #: src/game_inventory.cpp src/player.cpp msgid "Wear item" -msgstr "穿上物品" +msgstr "穿戴物品" #: src/game_inventory.cpp msgid "You have nothing to wear." -msgstr "你沒東西可穿。" +msgstr "你沒有可以穿戴的東西。" #: src/game_inventory.cpp msgid "Take off item" @@ -120013,29 +122894,29 @@ msgstr "脫掉物品" #: src/game_inventory.cpp msgid "You don't wear anything." -msgstr "你身上沒穿任何東西。" +msgstr "你沒有穿戴任何東西。" #: src/game_inventory.cpp #, c-format msgid "Container for %s" -msgstr "容器用於 %s" +msgstr "選擇裝 %s 的容器" #: src/game_inventory.cpp #, c-format msgid "You don't have a suitable container for carrying %s." -msgstr "你沒有適合的容器來裝 %s。" +msgstr "你沒有可以容納 %s 的容器。" #: src/game_inventory.cpp msgid "Can't pick up spilt liquids" -msgstr "無法撿起溢出的液體。" +msgstr "無法撿起溢出的液體" #: src/game_inventory.cpp msgid "Too big to pick up" -msgstr "太大無法撿取" +msgstr "無法撿取太大的物品" #: src/game_inventory.cpp msgid "Too heavy to pick up" -msgstr "太重無法撿取" +msgstr "無法撿取太重的物品" #: src/game_inventory.cpp msgid "YIELD" @@ -120051,11 +122932,11 @@ msgstr "拆解物品" #: src/game_inventory.cpp msgid "You don't have any items you could disassemble." -msgstr "你沒有可拆解的物品。" +msgstr "你沒有可以拆解的東西。" #: src/game_inventory.cpp msgid "CALORIES" -msgstr "" +msgstr "熱量" #: src/game_inventory.cpp msgid "QUENCH" @@ -120065,10 +122946,23 @@ msgstr "解渴" msgid "JOY" msgstr "享受" +#. ~ Used for permafood shelf life in the Eat menu #: src/game_inventory.cpp -msgid "SPOILS IN" +msgid "indefinite" +msgstr "沒有期限" + +#: src/game_inventory.cpp +msgid "SHELF LIFE" msgstr "保存期限" +#: src/game_inventory.cpp +msgid "FRESHNESS" +msgstr "新鮮程度" + +#: src/game_inventory.cpp +msgid "SPOILS IN" +msgstr "腐敗時間" + #: src/game_inventory.cpp src/veh_interact.cpp msgid "Battery" msgstr "電池" @@ -120091,23 +122985,55 @@ msgstr "能量" #: src/game_inventory.cpp msgid "Can't drink spilt liquids" -msgstr "無法飲用溢出的液體。" +msgstr "無法飲用溢出的液體" #: src/game_inventory.cpp msgid "You're fully charged" msgstr "你的能量已滿" +#: src/game_inventory.cpp +msgid "soon!" +msgstr "即將腐敗!" + +#: src/game_inventory.cpp +msgid "fresh" +msgstr "非常新鮮" + +#: src/game_inventory.cpp +msgid "quite fresh" +msgstr "相當新鮮" + +#: src/game_inventory.cpp +msgid "near midlife" +msgstr "還算新鮮" + +#: src/game_inventory.cpp +msgid "past midlife" +msgstr "不太新鮮" + +#: src/game_inventory.cpp +msgid "getting older" +msgstr "很不新鮮" + +#: src/game_inventory.cpp +msgid "old" +msgstr "瀕臨腐敗" + +#: src/game_inventory.cpp +msgid "rotten" +msgstr "腐敗" + #: src/game_inventory.cpp msgid "Consume item" -msgstr "消耗物品" +msgstr "食用物品" #: src/game_inventory.cpp msgid "You have nothing to consume." -msgstr "你沒東西可吃。" +msgstr "你沒有可以食用的東西。" #: src/game_inventory.cpp msgid "ACTION" -msgstr "行動" +msgstr "動作" #: src/game_inventory.cpp #, c-format @@ -120121,7 +123047,7 @@ msgstr "使用物品" #: src/game_inventory.cpp msgid "You don't have any items you can use." -msgstr "你沒有可用的東西。" +msgstr "你沒有可以使用的物品。" #: src/game_inventory.cpp msgid "always" @@ -120146,11 +123072,11 @@ msgstr "對你來說太難修改了" #: src/game_inventory.cpp msgid "Select gun to modify" -msgstr "選擇要改裝的槍" +msgstr "改造武器" #: src/game_inventory.cpp msgid "You don't have any guns to modify." -msgstr "你並沒有槍可以修改。" +msgstr "你沒有可以改造的武器。" #: src/game_inventory.cpp msgid "?" @@ -120175,15 +123101,15 @@ msgstr "配方" #: src/game_inventory.cpp msgid "FUN" -msgstr "趣味性" +msgstr "娛樂" #: src/game_inventory.cpp msgid "CHAPTER IN" -msgstr "每章節" +msgstr "時間" #: src/game_inventory.cpp msgid "You have nothing to read." -msgstr "你沒東西可讀。" +msgstr "你沒有可以閱讀的東西。" #: src/game_inventory.cpp #, c-format @@ -120193,12 +123119,12 @@ msgstr "偷竊 %s" #: src/game_inventory.cpp #, c-format msgid "%s's inventory is empty." -msgstr "%s 的物品欄裡沒東西。" +msgstr "%s 的物品欄是空的。" #: src/game_inventory.cpp msgctxt "Shot as damage" msgid "SHOT" -msgstr "霰彈" +msgstr "射程" #: src/game_inventory.cpp msgid "STAB" @@ -120210,7 +123136,7 @@ msgstr "命中" #: src/game_inventory.cpp msgid "MOVES" -msgstr "行動值消耗" +msgstr "行動點數" #: src/game_inventory.cpp msgid "Wield item" @@ -120218,12 +123144,12 @@ msgstr "手持物品" #: src/game_inventory.cpp msgid "You have nothing to wield." -msgstr "你沒東西可拿。" +msgstr "你沒有可以手持的東西。" #: src/game_inventory.cpp #, c-format msgid "You can't put anything into your %s." -msgstr "你不能把東西放到 %s 裡。" +msgstr "你無法把任何物品放進 %s。" #: src/game_inventory.cpp src/iuse_actor.cpp msgid "Holster item" @@ -120232,12 +123158,20 @@ msgstr "收納物品" #: src/game_inventory.cpp #, c-format msgid "Choose a weapon to put into your %s" -msgstr "選擇你要放進 %s 的武器" +msgstr "選擇要放進 %s 的武器。" #: src/game_inventory.cpp #, c-format msgid "You have no weapons you could put into your %s." -msgstr "你沒有能夠放進 %s 的武器。" +msgstr "你沒有可以放進 %s 的武器。" + +#: src/game_inventory.cpp src/iuse.cpp +msgid "Cut up what?" +msgstr "切割物品" + +#: src/game_inventory.cpp +msgid "You have nothing to cut up." +msgstr "你沒有可以切割的東西。" #: src/game_inventory.cpp msgid "Saw barrel" @@ -120245,12 +123179,12 @@ msgstr "鋸短槍管" #: src/game_inventory.cpp msgid "You don't have any guns." -msgstr "你並沒有槍。" +msgstr "你沒有可以鋸短的槍械。" #: src/game_inventory.cpp #, c-format msgid "Choose a weapon to use your %s on" -msgstr "選擇你要將 %s 用在哪個武器上" +msgstr "選擇要用 %s 鋸短的槍械。" #: src/game_inventory.cpp msgid "Multidrop" @@ -120262,7 +123196,7 @@ msgstr "要丟棄 x 個物品, 輸入數量接著選擇物品。" #: src/game_inventory.cpp msgid "You have nothing to drop." -msgstr "你沒東西可丟。" +msgstr "你沒有可以丟棄的東西。" #: src/game_inventory.cpp msgid "Select two items to compare them." @@ -120270,11 +123204,11 @@ msgstr "選擇兩個要比較的物品。" #: src/game_inventory.cpp msgid "There are no items to compare." -msgstr "沒東西可比較。" +msgstr "你沒有可以比較的物品。" #: src/game_inventory.cpp msgid "Enter new letter (press SPACE for none, ESCAPE to cancel)." -msgstr "輸入新代碼 (按 <空白鍵> 清除, 按 取消)。" +msgstr "輸入新代碼 (按空白鍵清除, 按 Esc 取消)。" #: src/gamemode.cpp msgid "Tutorial" @@ -120315,13 +123249,13 @@ msgstr "你無法關閉 %s。" #: src/gates.cpp msgid "You'll need to construct a seal to close the crate!" -msgstr "" +msgstr "你需要建造一個封條來封閉箱子!" #: src/gates.cpp #, c-format msgid "" "You cannot close the %s from outside. You must be inside the building." -msgstr "你不能從外面關閉 %s 。你必須要在建築物裡面。" +msgstr "你不能從外面關閉 %s。你必須要在建築物裡面。" #: src/gates.cpp #, c-format @@ -120363,7 +123297,7 @@ msgstr "移動 %s 花費了不少時間。" #: src/grab.cpp #, c-format msgid "You lack the strength to move the %s" -msgstr "你沒有足夠力量去移動 %s " +msgstr "你沒有足夠的力量去移動 %s" #: src/grab.cpp msgid "errors in movement code" @@ -120377,7 +123311,7 @@ msgstr "%s 撞上了 %s。" #: src/handle_action.cpp #, c-format msgid "Press %s to accept your fate..." -msgstr "按 %s 來接受你的命運..." +msgstr "按 %s 來接受你的命運…" #: src/handle_action.cpp msgid "No radio car connected." @@ -120390,7 +123324,7 @@ msgstr "與障礙物碰撞的聲音。" #. ~ Sound of moving a remote controlled car #: src/handle_action.cpp msgid "zzz..." -msgstr "zzz..." +msgstr "zzz…" #: src/handle_action.cpp msgid "You can't drive the vehicle from here. You need controls!" @@ -120548,9 +123482,9 @@ msgstr "要等待多久?" #: src/handle_action.cpp msgid "Are you sure you want to sleep?" -msgstr "確定要睡覺?" +msgstr "你確定要睡覺嗎?" -#: src/handle_action.cpp +#: src/handle_action.cpp src/iuse.cpp msgid "Yes." msgstr "是。" @@ -120570,15 +123504,15 @@ msgstr "你也許應該在你睡覺前把這個關閉。" msgid "" "You're engorged to hibernate. The alarm would only attract attention. Set an" " alarm anyway?" -msgstr "" +msgstr "你已經準備好要冬眠了。鬧鐘只會引起周邊注意而叫不醒你。仍要設定鬧鐘?" #: src/handle_action.cpp msgid "You have an alarm clock. Set an alarm?" -msgstr "" +msgstr "你有個鬧鐘, 要設定鬧鈴嗎?" #: src/handle_action.cpp msgid "No, don't set an alarm." -msgstr "" +msgstr "不, 別設定鬧鈴。" #: src/handle_action.cpp #, c-format @@ -120600,14 +123534,14 @@ msgstr "" #: src/handle_action.cpp msgid "Sort out my loot" -msgstr "" +msgstr "整理我的物資" #: src/handle_action.cpp msgid "" "Sorts out the loot from Loot: Unsorted zone to nerby appropriate Loot zones." " Uses empty space in your inventory or utilizes a cart, if you are holding " "one." -msgstr "" +msgstr "把 \"物資: 尚未分類\" 區域內的物資整理到附近的合適區域。使用物品欄的空餘空間或拖行中的購物車來進行搬運。" #: src/handle_action.cpp msgid "Till farm plots" @@ -120623,15 +123557,15 @@ msgstr "" #: src/handle_action.cpp msgid "Plant seeds... it is too cold for planting" -msgstr "" +msgstr "播種… 天氣太冷了" #: src/handle_action.cpp msgid "Plant seeds" -msgstr "" +msgstr "播種" #: src/handle_action.cpp msgid "Plant seeds... you don't have any" -msgstr "" +msgstr "播種… 你沒有種子" #: src/handle_action.cpp msgid "" @@ -120641,7 +123575,7 @@ msgstr "" #: src/handle_action.cpp msgid "You need a tool to dig with." -msgstr "" +msgstr "你需要一個工具來挖掘。" #: src/handle_action.cpp src/iexamine.cpp src/mission_companion.cpp #: src/vehicle_part.cpp @@ -120678,7 +123612,7 @@ msgstr "自動移動取消" #: src/handle_action.cpp #, c-format msgid "Unknown command: \"%s\" (%ld)" -msgstr "未知的指令: \"%s\" (%ld)" +msgstr "未知的指令: '%s' (%ld)" #: src/handle_action.cpp msgid "You can't open things while you're in your shell." @@ -120730,11 +123664,11 @@ msgstr "你無法邊駕駛邊拆解物品。" #: src/handle_action.cpp msgid "You can't construct while in a vehicle." -msgstr "你不能在車輛上進行建設。" +msgstr "你不能在車輛上進行建造。" #: src/handle_action.cpp msgid "You can't construct while you're in your shell." -msgstr "你在殼中的時候不能進行建設。" +msgstr "你在殼中的時候不能進行建造。" #: src/handle_action.cpp #, c-format @@ -120743,11 +123677,11 @@ msgstr "車輛控制器已被移開, %s" #: src/handle_action.cpp msgid "new binding is " -msgstr "新的按鍵是 " +msgstr "新的熱鍵是 " #: src/handle_action.cpp msgid "new default binding is '^'." -msgstr "新的預設按鍵是 '^'。" +msgstr "新的預設熱鍵是 ^。" #: src/handle_action.cpp msgid "You can't operate a vehicle while you're in your shell." @@ -120845,7 +123779,12 @@ msgstr "添加鑽石塗層" #: src/iexamine.cpp msgid "You don't have a suitable item to coat with diamond" -msgstr "你沒有物品適合添加鑽石塗層" +msgstr "你沒有可以添加鑽石塗層的物品" + +#: src/iexamine.cpp +#, c-format +msgid "You apply a diamond coating to your %s" +msgstr "" #: src/iexamine.cpp #, c-format @@ -120874,7 +123813,7 @@ msgstr "購買現金卡?" #: src/iexamine.cpp msgid "You need $1.00 in your account to purchase a card." -msgstr "您的賬戶需要至少100分才可購買現金卡。" +msgstr "你需要至少 100 分在帳戶中才能購買現金卡。" #: src/iexamine.cpp msgid "Withdraw Money" @@ -120882,11 +123821,11 @@ msgstr "提款" #: src/iexamine.cpp msgid "You need a cash card before you can withdraw money!" -msgstr "在你提款前, 你需要一張現金卡!" +msgstr "你需要一張現金卡才能提款!" #: src/iexamine.cpp msgid "You need money in your account before you can withdraw money!" -msgstr "提款前請確認您的賬戶內有足夠餘額!" +msgstr "你需要在帳戶內有足夠餘的額才能提款!" #: src/iexamine.cpp msgid "Deposit Money" @@ -120894,7 +123833,7 @@ msgstr "存款" #: src/iexamine.cpp msgid "You need a charged cash card before you can deposit money!" -msgstr "在你存款前, 你需要一張仍可儲值的現金卡!" +msgstr "你需要一張尚有餘額的現金卡才能存款!" #: src/iexamine.cpp msgid "Transfer All Money" @@ -120907,7 +123846,7 @@ msgstr "" #: src/iexamine.cpp msgid "This will automatically deduct $1.00 from your bank account. Continue?" -msgstr "這將自動從您的銀行帳戶中扣除$1.00。要繼續嗎?" +msgstr "這將自動從您的銀行帳戶中扣除 $1.00。要繼續嗎?" #: src/iexamine.cpp msgid "You can only deposit money from charged cash cards!" @@ -120927,7 +123866,7 @@ msgstr[0] "提領多少? 最高: %d 分。(0 為取消)" #: src/iexamine.cpp msgid "The vending machine is empty!" -msgstr "自動販賣機裡面什麼都沒有!" +msgstr "這台自動販賣機是空的!" #: src/iexamine.cpp msgid "You need a charged cash card to purchase things!" @@ -120948,15 +123887,15 @@ msgstr "嗶的一聲, 那空的自動販賣機關機了。" #: src/iexamine.cpp msgid "This toilet is empty." -msgstr "這馬桶空了。" +msgstr "這個馬桶是空的。" #: src/iexamine.cpp msgid "The toilet water is frozen solid!" -msgstr "" +msgstr "這個廁所的水冰凍成固體了!" #: src/iexamine.cpp msgid "Swipe your ID card?" -msgstr "刷入你的ID卡?" +msgstr "刷入你的 ID 卡?" #: src/iexamine.cpp msgid "You insert your ID card." @@ -120977,16 +123916,16 @@ msgstr "你啟動了面板!" #: src/iexamine.cpp #, c-format msgid "Looks like you need a %s, or a tool to hack it with." -msgstr "看來你需要 %s, 或是工具以破解它" +msgstr "看來你需要一張 %s, 或是一個破解工具。" #: src/iexamine.cpp #, c-format msgid "Looks like you need a %s." -msgstr "看來你需要 %s。" +msgstr "看來你需要一張 %s。" #: src/iexamine.cpp msgid "If only you had a shovel..." -msgstr "你得要有把鏟子才行..." +msgstr "你得要有把鏟子才行…" #: src/iexamine.cpp #, c-format @@ -121087,19 +124026,19 @@ msgstr "投入 $10?" #: src/iexamine.cpp msgid "Three cherries... you get your money back!" -msgstr "三顆櫻桃連線...你把你的錢贏回來了!" +msgstr "3 顆櫻桃連線… 你贏回了你的錢!" #: src/iexamine.cpp msgid "Three bells... you win $50!" -msgstr "三個鈴鐺連線...你贏得 $50!" +msgstr "3 個鈴鐺連線… 你贏得 $50!" #: src/iexamine.cpp msgid "Three stars... you win $200!" -msgstr "三個星星連線...你贏得 $200!" +msgstr "3 個星星連線… 你贏得 $200!" #: src/iexamine.cpp msgid "JACKPOT! You win $3000!" -msgstr "777中大獎了! 你贏了3000美元!" +msgstr "頭獎! 你贏得 $3000!" #: src/iexamine.cpp msgid "No win." @@ -121190,11 +124129,11 @@ msgstr "吵醒了一群暗古龍!" #: src/iexamine.cpp msgid "The pedestal sinks into the ground, with an ominous grinding noise..." -msgstr "隨著刺耳的摩擦聲, 台座沈入地底了..." +msgstr "隨著刺耳的摩擦聲, 台座沈入地底了…" #: src/iexamine.cpp msgid "The pedestal sinks into the ground..." -msgstr "台座沈入地底了..." +msgstr "台座沈入地底了…" #: src/iexamine.cpp msgid "Place your petrified eye on the pedestal?" @@ -121271,7 +124210,7 @@ msgstr "這花有著令人陶醉的香氣。" #: src/iexamine.cpp msgid "You fall asleep..." -msgstr "你睡著了..." +msgstr "你睡著了…" #: src/iexamine.cpp msgid "Your legs are covered in the poppy's roots!" @@ -121279,7 +124218,7 @@ msgstr "你兩腿都被罌粟花的根鬚纏住!" #: src/iexamine.cpp msgid "If only you had a shovel to dig up those roots..." -msgstr "你得要有把鏟子才能挖起這些根..." +msgstr "你得要有把鏟子才能挖起這些根…" #: src/iexamine.cpp msgid "Nothing can be harvested from this plant in current season" @@ -121291,7 +124230,7 @@ msgstr "你無法收割到什麼。" #: src/iexamine.cpp msgid "This flower is still alive, despite the harsh conditions..." -msgstr "這花還活著, 儘管情況危急..." +msgstr "這花還活著, 儘管情況危急…" #: src/iexamine.cpp #, c-format @@ -121300,7 +124239,7 @@ msgstr "當你探索 %s 感到錯亂。喝嗎?" #: src/iexamine.cpp msgid "This flower tastes very wrong..." -msgstr "這個花嘗起來非常的不對勁..." +msgstr "這個花嚐起來非常的不對勁…" #: src/iexamine.cpp #, c-format @@ -121333,11 +124272,11 @@ msgstr "" #: src/iexamine.cpp msgid "You have no seeds to plant." -msgstr "你沒有能供種植的種子。" +msgstr "你沒有可以種植的種子。" #: src/iexamine.cpp msgid "Something's lying there..." -msgstr "有東西潛伏在那..." +msgstr "有東西潛伏在那…" #: src/iexamine.cpp src/mission_companion.cpp msgid "You saved your seeds for later." @@ -121355,7 +124294,7 @@ msgstr "種子綻放了! 我們帶來真正美麗的東西到世上了。" #: src/iexamine.cpp msgid "The seed blossoms rather rapidly..." -msgstr "種子開花的速度相當快..." +msgstr "種子開花的速度相當快…" #: src/iexamine.cpp msgid "The seed blossoms into a flower-looking fungus." @@ -121382,59 +124321,59 @@ msgstr "使用哪種肥料?" #: src/iexamine.cpp msgid "This kiln already contains charcoal." -msgstr "這個爐子己經裝有木炭了。" +msgstr "這個爐子裡己經裝有木炭了。" #: src/iexamine.cpp msgid "Remove it before firing the kiln again." -msgstr "再次點燃爐子前要先移除。" +msgstr "再次點燃爐子前請先把它取出。" #: src/iexamine.cpp #, c-format msgid "This kiln contains %s, which can't be made into charcoal!" -msgstr "這個爐子裝的 %s 無法製成木炭!" +msgstr "這個爐子裡裝有 %s, 它無法被製成木炭!" #: src/iexamine.cpp msgid "This kiln is empty. Fill it with wood or bone and try again." -msgstr "這個爐子是空的, 放點木頭或骨頭後再試一次。" +msgstr "這個爐子是空的, 放入木頭或骨頭, 然後再試一次。" #: src/iexamine.cpp msgid "The batch in this kiln is too small to yield any charcoal." -msgstr "裝在爐子的批量太少無法製成木炭。" +msgstr "這個爐子裡的材料太少, 無法製成任何木炭。" #: src/iexamine.cpp msgid "This kiln is ready to be fired, but you have no fire source." -msgstr "這個爐子已經準備好點火, 但你沒有火源" +msgstr "這個爐子已經準備好被點燃, 但是你沒有火源。" #: src/iexamine.cpp #, c-format msgid "This kiln contains %s %s of material, and is ready to be fired." -msgstr "" +msgstr "這個爐子裡裝有 %s %s 的材料, 已經準備好被點燃。" #: src/iexamine.cpp msgid "Fire the kiln?" -msgstr "爐子點火?" +msgstr "要點燃爐子嗎?" #: src/iexamine.cpp msgid "You fire the charcoal kiln." -msgstr "你把木炭窯點火了。" +msgstr "你點燃了碳化爐。" #: src/iexamine.cpp msgid "This kiln is empty..." -msgstr "爐子是空的..." +msgstr "這個爐子是空的…" #: src/iexamine.cpp msgid "There's a charcoal kiln there." -msgstr "這裡有碳化爐。" +msgstr "這裡有一個碳化爐。" #: src/iexamine.cpp #, c-format msgid "It will finish burning in about %d hour." msgid_plural "It will finish burning in about %d hours." -msgstr[0] "它將在 %d 小時左右燃燒完畢。" +msgstr[0] "它將在大約 %d 小時內燃燒完畢。" #: src/iexamine.cpp msgid "It will finish burning in less than an hour." -msgstr "它將在不到 1 小時內燃燒完畢。" +msgstr "它將在少於 1 小時內燃燒完畢。" #: src/iexamine.cpp #, c-format @@ -121444,15 +124383,15 @@ msgstr "它需要大約 %d 分鐘才能燃燒完畢。" #: src/iexamine.cpp #, c-format msgid "It has finished burning, yielding %d charcoal." -msgstr "" +msgstr "它已經燃燒完畢, 製成了 %d 木炭。" #: src/iexamine.cpp msgid "This keg is empty." -msgstr "" +msgstr "這個桶子是空的。" #: src/iexamine.cpp msgid "You have no brew to ferment." -msgstr "你沒有發酵釀造用的原料。" +msgstr "你沒有可以發酵的原料。" #: src/iexamine.cpp msgid "Use which brew?" @@ -121461,12 +124400,12 @@ msgstr "使用什麼來釀造?" #: src/iexamine.cpp #, c-format msgid "Set %s in the vat?" -msgstr "設置 %s 到池中?" +msgstr "往桶子裡裝入 %s?" #: src/iexamine.cpp #, c-format msgid "This keg contains %s (%d), %0.f%% full." -msgstr "" +msgstr "這個桶子裡裝有 %s (%d), %0.f%% 滿。" #: src/iexamine.cpp src/pickup.cpp msgid "Select an action" @@ -121475,58 +124414,58 @@ msgstr "選擇動作" #: src/iexamine.cpp #, c-format msgid "Add more %s to the vat" -msgstr "" +msgstr "往桶子裡裝入更多 %s" #: src/iexamine.cpp #, c-format msgid "Remove %s from the vat" -msgstr "" +msgstr "從桶子裡倒出 %s" #: src/iexamine.cpp msgid "Start fermenting cycle" -msgstr "" +msgstr "開始發酵程序" #: src/iexamine.cpp #, c-format msgid "Set %s in the vat." -msgstr "設置 %s 到池中。" +msgstr "往桶子裡裝入了 %s。" #: src/iexamine.cpp #, c-format msgid "The keg now contains %s (%d), %0.f%% full." -msgstr "" +msgstr "桶子裡現在裝有 %s (%d), %0.f%% 滿。" #: src/iexamine.cpp msgid "Start fermenting cycle?" -msgstr "開始進行發酵?" +msgstr "要開始發酵程序嗎?" #: src/iexamine.cpp msgid "The vat is full, so you close the lid and start the fermenting cycle." -msgstr "池子滿了, 因此你蓋上蓋子開始進行發酵。" +msgstr "桶子滿了, 因此你蓋上蓋子開始發酵程序。" #: src/iexamine.cpp msgid "You close the lid and start the fermenting cycle." -msgstr "你蓋上蓋子開始進行發酵。" +msgstr "你蓋上蓋子開始發酵程序。" #: src/iexamine.cpp #, c-format msgid "You remove %s from the vat." -msgstr "你從桶子移除了 %s" +msgstr "你從桶子裡倒出了 %s。" #: src/iexamine.cpp #, c-format msgid "There's a vat of %s set to ferment there." -msgstr "" +msgstr "那裡有一桶發酵中的 %s。" #: src/iexamine.cpp msgid "It will finish brewing in less than an hour." -msgstr "它將在不到 1 小時內釀造完畢。" +msgstr "它將在少於 1 小時內釀造完畢。" #: src/iexamine.cpp #, c-format msgid "It will finish brewing in about %d hour." msgid_plural "It will finish brewing in about %d hours." -msgstr[0] "它將在大約 %d 小時左右釀造完畢。" +msgstr[0] "它將在大約 %d 小時內釀造完畢。" #: src/iexamine.cpp msgid "Finish brewing?" @@ -121535,26 +124474,26 @@ msgstr "完成釀造?" #: src/iexamine.cpp #, c-format msgid "The %s is now ready for bottling." -msgstr "%s 準備好進行裝瓶。" +msgstr "%s 已經準備好進行裝瓶。" #: src/iexamine.cpp #, c-format msgid "There's a vat of fermented %s there." -msgstr "" +msgstr "那裡有一桶發酵完畢的 %s。" #: src/iexamine.cpp #, c-format msgid "You don't have any drinks to fill the %s with." -msgstr "你沒有任何能用來裝 %s 的飲料。" +msgstr "你沒有可以裝入 %s 的飲料。" #: src/iexamine.cpp msgid "Store which drink?" -msgstr "儲存哪個飲料?" +msgstr "裝入哪個飲料?" #: src/iexamine.cpp #, c-format msgid "Fill the %1$s with %2$s?" -msgstr "把 %1$s 裝入 %2$s ?" +msgstr "往 %1$s 裡裝入 %2$s?" #: src/iexamine.cpp #, c-format @@ -121564,12 +124503,12 @@ msgstr "你把 %1$s 用 %2$s 裝滿了。" #: src/iexamine.cpp #, c-format msgid "You fill the %1$s with %2$s." -msgstr "你把 %1$s 裝入 %2$s 。" +msgstr "你往 %1$s 裝入了 %2$s。" #: src/iexamine.cpp #, c-format msgid "Dispense or dump %s" -msgstr "" +msgstr "倒出 %s。" #: src/iexamine.cpp src/pickup.cpp msgid "Have a drink" @@ -121582,7 +124521,7 @@ msgstr "裝滿" #: src/iexamine.cpp #, c-format msgid "You squeeze the last drops of %1$s from the %2$s." -msgstr "你從 %1$s 擠出了最後一滴的 %2$s 。" +msgstr "你從 %2$s 榨出了最後一滴 %1$s。" #: src/iexamine.cpp #, c-format @@ -121592,18 +124531,18 @@ msgstr "%s 完全滿了。" #: src/iexamine.cpp #, c-format msgid "You don't have any %1$s to fill the %2$s with." -msgstr "你沒有任何的 %1$s 能裝入 %2$s 。" +msgstr "你沒有可以裝入 %2$s 的 %1$s。" #: src/iexamine.cpp #, c-format msgid "It contains %s (%d), %0.f%% full." -msgstr "它裝著 %s (%d), %0.f%% 滿。" +msgstr "它裝有 %s (%d), %0.f%% 滿。" #: src/iexamine.cpp #, c-format msgid "" "The %s already contains some %s, you can't add a different liquid to it." -msgstr "%s 已經裝有一些 %s, 你無法加入不同的液體。" +msgstr "%s 已經裝有一些 %s, 你無法裝入不同的液體。" #: src/iexamine.cpp #, c-format @@ -121612,7 +124551,7 @@ msgstr "%s 滿了。" #: src/iexamine.cpp msgid "You have no tool to dig with..." -msgstr "你沒有適當的挖掘工具…" +msgstr "你沒有可以用來挖掘的工具…" #: src/iexamine.cpp #, c-format @@ -121625,17 +124564,17 @@ msgstr "哪個容器?" #: src/iexamine.cpp msgid "You need a tool to drill the crust to tap this maple tree." -msgstr "你需要工具鑽穿樹皮才能對此楓樹進行抽液。" +msgstr "你需要一個工具鑽穿樹皮才能對此楓樹進行抽液。" #: src/iexamine.cpp msgid "" "You need a tool to hammer the spile into the crust to tap this maple tree." -msgstr "你需要工具把小插管敲入樹皮才能對此楓樹進行抽液。" +msgstr "你需要一個工具把小插管敲入樹皮才能對此楓樹進行抽液。" #: src/iexamine.cpp #, c-format msgid "You need a %s to tap this maple tree." -msgstr "你需要 %s 才能對此楓樹進行抽液。" +msgstr "你需要一個 %s 才能對此楓樹進行抽液。" #: src/iexamine.cpp msgid "No container added. The sap will just spill on the ground." @@ -121661,7 +124600,7 @@ msgstr "移除容器" #: src/iexamine.cpp msgid "You need a hammering tool to remove the spile from the crust." -msgstr "你需要工具將小插管從樹皮裡移除。" +msgstr "你需要一個工具將小插管從樹皮裡移除。" #: src/iexamine.cpp #, c-format @@ -121769,7 +124708,7 @@ msgstr "%s 看起來實在太危險了。最好不要碰它。" #: src/iexamine.cpp #, c-format msgid "There is a %s there. Take down?" -msgstr "那裡有一個 %s , 要把它拆下來?" +msgstr "那裡有一個 %s, 要把它拆下來?" #: src/iexamine.cpp #, c-format @@ -122001,43 +124940,43 @@ msgstr "" #: src/iexamine.cpp msgid "No connected couches found. Operation impossible. Exiting." -msgstr "" +msgstr "找不到連接的沙發。無法操作。退出。" #: src/iexamine.cpp msgid "" "No patient found located on the connected couches. Operation impossible. " "Exiting." -msgstr "" +msgstr "找不到位於連接沙發上的病人。無法操作。退出。" #: src/iexamine.cpp msgid "You need an anesthesia kit for autodoc to perform any operation." -msgstr "" +msgstr "您需要一個用於 \"全自動外科醫生\" 的麻醉包來進行手術。" #: src/iexamine.cpp msgid "Autodoc Mk. XI. Status: Online. Please choose operation." -msgstr "" +msgstr "全自動外科醫生 Mk. XI, 狀態: 在線。請選擇手術項目。 " #: src/iexamine.cpp msgid "Choose Compact Bionic Module to install." -msgstr "" +msgstr "選取要安裝的生化插件。" #: src/iexamine.cpp msgid "Choose installed bionic to uninstall." -msgstr "" +msgstr "選取要移除的已安裝生化插件。" #: src/iexamine.cpp msgid "Choose CBM to install" -msgstr "" +msgstr "選取要安裝的生化插件" #: src/iexamine.cpp msgid "You don't have any CBMs to install." -msgstr "" +msgstr "你沒有可以安裝的生化插件。" #. ~ %1$s is the bionic CBM display name, %2$s is the patient name #: src/iexamine.cpp #, c-format msgid "%1$s cannot be installed on %2$s." -msgstr "" +msgstr "%1$s 無法安裝在 %2$s 身上。" #. ~ %1$s is patient name #: src/iexamine.cpp src/iuse_actor.cpp @@ -122047,7 +124986,7 @@ msgstr "你已經安裝過了這個生化插件。" #: src/iexamine.cpp #, c-format msgid "%1$s has already installed this bionic." -msgstr "" +msgstr "%1$s 已經安裝過了這個生化插件。" #. ~ %1$s is patient name #: src/iexamine.cpp @@ -122092,61 +125031,61 @@ msgstr "" #: src/iexamine.cpp msgid "This rack already contains smoked food." -msgstr "" +msgstr "這個架子裡已經裝有煙燻過的食物了。" #: src/iexamine.cpp msgid "Remove it before firing the smoking rack again." -msgstr "再次點燃煙燻架前請先把它清空。" +msgstr "再次點燃煙燻架前請先把它取出。" #: src/iexamine.cpp #, c-format msgid "This rack contains %s, which can't be smoked!" -msgstr "" +msgstr "這個架子裡裝有 %s, 它無法被煙燻!" #: src/iexamine.cpp #, c-format msgid "You remove %s from the rack." -msgstr "" +msgstr "你從架子裡取出了 %s。" #: src/iexamine.cpp msgid "" "This rack has some smoked food that might be dehydrated by smoking it again." -msgstr "架子裡有些已經煙燻好的食物, 可以再次煙燻以便將其脫水。" +msgstr "這個架子裡有些煙燻過的食物, 可以再次煙燻以便將其脫水。" #: src/iexamine.cpp msgid "" "This rack is empty. Fill it with raw meat, fish or sausages and try again." -msgstr "" +msgstr "這個架子是空的。放點生肉、生魚或生香腸, 然後再試一次。" #: src/iexamine.cpp msgid "There is no charcoal in the rack." -msgstr "" +msgstr "這個架子裡沒有木炭。" #: src/iexamine.cpp msgid "" "This rack is overloaded with food, and it blocks the flow of smoke. Remove " "some and try again." -msgstr "" +msgstr "這個架子裡放入了過量的食物, 使煙霧的流動受阻。取出一些食物然後再試一次。" #: src/iexamine.cpp #, c-format msgid "You think that you can load about %s %s in it." -msgstr "" +msgstr "你認為可以在裡面放入 %s %s 的食物。" #: src/iexamine.cpp msgid "There is not enough charcoal in the rack to smoke this much food." -msgstr "" +msgstr "這個架子裡沒有足夠的木炭來煙燻這麼多的食物。" #: src/iexamine.cpp #, c-format msgid "" "You need at least %1$s pieces of charcoal, and the smoking rack has %2$s " "inside." -msgstr "你需要至少 %1$s 塊木炭, 煙燻架裡只有 %2$s 塊。" +msgstr "你需要至少 %1$s 木炭, 煙燻架裡只有 %2$s。" #: src/iexamine.cpp msgid "This smoking rack is ready to be fired, but you have no fire source." -msgstr "這個煙燻架已經準備好點燃了, 但你沒有火源。" +msgstr "這個煙燻架已經準備好被點燃, 但是你沒有火源。" #: src/iexamine.cpp msgid "Fire the smoking rack?" @@ -122154,41 +125093,41 @@ msgstr "要點燃煙燻架嗎?" #: src/iexamine.cpp msgid "You light a small fire under the rack and it starts to smoke." -msgstr "" +msgstr "你在架子下方點燃了火苗, 它開始冒煙。" #: src/iexamine.cpp msgid "You can't place more food while it's smoking." -msgstr "你不能在煙燻中添加更多食物進去。" +msgstr "你不能在煙燻途中放入更多食物。" #: src/iexamine.cpp msgid "Load smoking rack with what kind of food?" -msgstr "要把什麼食物放入煙燻架中?" +msgstr "要往煙燻架裡放入哪種食物?" #: src/iexamine.cpp msgid "You don't have any food that can be smoked." -msgstr "" +msgstr "你沒有可以被煙燻的食物。" #: src/iexamine.cpp #, c-format msgid "Insert how many %s into the rack?" -msgstr "" +msgstr "要往架子裡放入多少 %s?" #: src/iexamine.cpp msgid "You don't have that many." -msgstr "" +msgstr "你沒有那麼多。" #: src/iexamine.cpp msgid "You can't place that many." -msgstr "" +msgstr "你不能放入那麼多。" #: src/iexamine.cpp msgid "You have rotten food mixed with fresh. Get rid of it first." -msgstr "" +msgstr "你有一些腐敗的食物和新鮮的食物混在一起。先清掉它。" #: src/iexamine.cpp #, c-format msgid "You carefully place %s %s in the rack." -msgstr "" +msgstr "你小心翼翼地往架子裡放入 %s %s。" #: src/iexamine.cpp msgid "What to do with the smoking rack:" @@ -122196,20 +125135,20 @@ msgstr "要對煙燻架做什麼:" #: src/iexamine.cpp msgid "Inspect smoking rack" -msgstr "查看煙燻架" +msgstr "檢查煙燻架" #: src/iexamine.cpp msgid "Light up and smoke food... insert some food for smoking first" -msgstr "點燃並煙燻食物... 先放些要煙燻的食物進去" +msgstr "點燃並煙燻食物… 先放入一些要煙燻的食物" #: src/iexamine.cpp #, c-format msgid "Light up and smoke food... need extra %d charges of charcoal" -msgstr "點燃並且醃燻食物...你需要額外 %d 塊木炭" +msgstr "點燃並煙燻食物… 需要額外 %d 木炭" #: src/iexamine.cpp msgid "Light up and smoke food" -msgstr "" +msgstr "點燃並煙燻食物" #: src/iexamine.cpp msgid "" @@ -122219,41 +125158,41 @@ msgstr "點燃煙燻架並開始煙燻。煙燻要花上大約 6 小時。" #: src/iexamine.cpp msgid "Insert food for smoking... smoking rack is full" -msgstr "放入要煙燻的食物... 煙燻架已經滿了" +msgstr "放入要煙燻的食物… 煙燻架已經滿了" #: src/iexamine.cpp #, c-format msgid "Insert food for smoking... remaining capacity is %s %s" -msgstr "放入要煙燻的食物... 剩餘容量 %s %s" +msgstr "放入要煙燻的食物… 剩餘容量為 %s %s" #: src/iexamine.cpp msgid "" "Fill the smoking rack with raw meat, fish or sausages for smoking or fruit " "or vegetable or smoked meat for drying." -msgstr "放入生肉、生魚、生香腸進行煙燻, 或放入水果、蔬菜、煙燻肉以便脫水。" +msgstr "在煙燻架裡放入生肉、生魚或生香腸以進行煙燻, 或放入水果、蔬菜或煙燻肉以進行脫水。" #: src/iexamine.cpp msgid "Remove food from smoking rack" -msgstr "將食物從煙燻架取出" +msgstr "從煙燻架裡取出食物" #: src/iexamine.cpp msgid "Reload with charcoal... you don't have any" -msgstr "" +msgstr "裝填木炭… 你沒有木炭" #: src/iexamine.cpp msgid "Reload with charcoal" -msgstr "" +msgstr "裝填木炭" #: src/iexamine.cpp #, c-format msgid "" "You need %d charges of charcoal for %s %s of food. Minimal amount of " "charcoal is %d charges." -msgstr "你需要額外 %d 塊木炭以 %s %s 食物。最少數量的木炭為 %d 塊。" +msgstr "你需要 %d 木炭用於每 %s %s 的食物。最少要有 %d 木炭。" #: src/iexamine.cpp msgid "Quench burning charcoal" -msgstr "" +msgstr "熄滅燃燒中的木炭" #: src/iexamine.cpp msgid "" @@ -122263,12 +125202,12 @@ msgstr "熄滅火焰將停止煙燻, 但也會銷毀所有用過的木炭。" #: src/iexamine.cpp #, c-format msgid "Rake out %d excess charges of charcoal from smoking rack" -msgstr "從煙燻架取出 %d 塊多餘的木炭" +msgstr "從煙燻架裡取出 %d 多餘的木炭" #: src/iexamine.cpp #, c-format msgid "Remove %d charges of charcoal from smoking rack" -msgstr "從煙燻架移除 %d 塊木炭" +msgstr "從煙燻架裡取出 %d 木炭" #: src/iexamine.cpp msgid "There's a smoking rack here. It is lit and smoking." @@ -122278,11 +125217,11 @@ msgstr "這裡有一個煙燻架。它已被點燃, 正在煙燻中。" #, c-format msgid "It will finish smoking in about %d hour." msgid_plural "It will finish smoking in about %d hours." -msgstr[0] "它將在大約 %d 小時左右煙燻完畢。" +msgstr[0] "它將在大約 %d 小時內煙燻完畢。" #: src/iexamine.cpp msgid "It will finish smoking in less than an hour." -msgstr "它將在不到 1 小時內煙燻完畢。" +msgstr "它將在少於 1 小時內煙燻完畢。" #: src/iexamine.cpp #, c-format @@ -122295,11 +125234,15 @@ msgstr "這裡有一個煙燻架。" #: src/iexamine.cpp msgid "You inspect its contents and find: " -msgstr "" +msgstr "你檢查了它的內容物並且發現: " + +#: src/iexamine.cpp +msgid "... that it is empty." +msgstr "… 它是空的。" #: src/iexamine.cpp msgid "You see some smoldering embers there." -msgstr "" +msgstr "你看到裡面有一些悶燒中的餘燼。" #: src/iexamine.cpp msgid "It is already lit and smoking." @@ -122319,7 +125262,7 @@ msgstr "使用手指駭客?" #: src/iexamine.cpp msgid "You cause a short circuit!" -msgstr "你造成了短路!" +msgstr "你發生了短路!" #: src/iexamine.cpp msgid "Your electrohack is ruined!" @@ -122327,7 +125270,7 @@ msgstr "你的電子駭客壞掉了!" #: src/iexamine.cpp msgid "Your power is drained!" -msgstr "你的能量被削弱!" +msgstr "你的能量流失了!" #: src/init.cpp msgid "Finalizing" @@ -122395,7 +125338,7 @@ msgstr "製作配方" #: src/init.cpp msgid "Recipe groups" -msgstr "" +msgstr "配方群組" #: src/init.cpp msgid "Martial arts" @@ -122407,7 +125350,7 @@ msgstr "NPC類別" #: src/init.cpp msgid "Harvest lists" -msgstr "收穫清單" +msgstr "收穫列表" #: src/init.cpp msgid "Anatomies" @@ -122447,7 +125390,7 @@ msgstr "引擎故障" #: src/init.cpp msgid "Furniture and terrain" -msgstr "傢俱與地形" +msgstr "家具與地形" #: src/init.cpp msgid "Professions" @@ -122467,7 +125410,7 @@ msgstr "突變類別" #: src/init.cpp msgid "Overmap locations" -msgstr "大地圖位置" +msgstr "大地圖地點" #: src/init.cpp msgid "Ammunition types" @@ -122491,7 +125434,7 @@ msgstr "NPC 樣本" #: src/input.cpp msgid "key bindings configuration" -msgstr "按鍵綁定設定" +msgstr "熱鍵設定" #: src/input.cpp #, c-format @@ -122500,7 +125443,7 @@ msgstr "未知按鍵 %ld" #: src/input.cpp msgid "Unbound!" -msgstr "未設定!" +msgstr "未設定" #: src/input.cpp msgctxt "keybinding" @@ -122516,14 +125459,14 @@ msgstr " 或 " #, c-format msgctxt "keybinding" msgid "[any] %s" -msgstr "" +msgstr "[任意鍵] %s" #. ~ keybinding description for unbound or disabled keys #: src/input.cpp #, c-format msgctxt "keybinding" msgid "[n/a] %s" -msgstr "" +msgstr "[未設定] %s" #. ~ keybinding description for bound keys #: src/input.cpp @@ -122534,15 +125477,15 @@ msgstr "[%s] %s" #: src/input.cpp msgid "Unbound keys" -msgstr "取消按鍵" +msgstr "未設定熱鍵" #: src/input.cpp msgid "Keybinding active only on this screen" -msgstr "熱鍵只在目前畫面有用" +msgstr "本地熱鍵 (只在當前畫面有效)" #: src/input.cpp msgid "Keybinding active globally" -msgstr "全域綁定按鍵" +msgstr "全域熱鍵 (在多數的畫面通用)" #: src/input.cpp msgid "" @@ -122550,42 +125493,42 @@ msgid "" "Press + to add local keybinding\n" "Press = to add global keybinding\n" msgstr "" -"按下 - 移除按鍵\n" -"按下 + 增加本地按鍵\n" -"按下 = 增加全域按鍵\n" +"按 - 移除熱鍵\n" +"按 + 新增本地熱鍵\n" +"按 = 新增全域熱鍵\n" #: src/input.cpp #, c-format msgid "Clear keys for %s?" -msgstr "清除 %s 的鍵位?" +msgstr "移除熱鍵於: %s?" #: src/input.cpp msgid "" "There are already local keybindings defined for this action, please remove " "them first." -msgstr "這個動作已經有指定的按鍵了, 請先移除他們。" +msgstr "這個動作已經指定了本地熱鍵, 請先移除它們。" #: src/input.cpp #, c-format msgid "New key for %s" -msgstr "" +msgstr "輸入熱鍵給: %s。" #: src/input.cpp #, c-format msgid "This key is already used for %s." -msgstr "這個按鍵已經指配給 %s 。" +msgstr "這個熱鍵已經指定給: %s。" #: src/input.cpp #, c-format msgid "" "This key conflicts with %s. Remove this key from the conflicting command(s)," " and continue?" -msgstr "這個指定的案件和 %s 衝突, 你要把相互衝突的按鍵取消指定, 然後繼續嗎?" +msgstr "這個熱鍵已經指定給: %s, 你要從衝突的指令移除熱鍵, 然後繼續嗎?" #: src/input.cpp #, c-format msgid "saving keybindings failed: %s" -msgstr "無法儲存按鍵對應: %s" +msgstr "無法儲存熱鍵設定: %s" #: src/input.cpp msgid "any key" @@ -122598,7 +125541,7 @@ msgstr "滑鼠移動" #: src/inventory.cpp #, c-format msgid "Your %s is damaged by rust." -msgstr "" +msgstr "你的 %s 因為生鏽而損壞了。" #: src/inventory_ui.cpp #, c-format @@ -122620,11 +125563,11 @@ msgstr "頁面 %d/%d" #: src/inventory_ui.cpp msgid "ITEMS WORN" -msgstr "穿戴的衣物" +msgstr "穿戴中的物品" #: src/inventory_ui.cpp msgid "WEAPON HELD" -msgstr "手持武器" +msgstr "已手持的武器" #: src/inventory_ui.cpp #, c-format @@ -122643,12 +125586,12 @@ msgstr "沒有可用的選擇" #: src/inventory_ui.cpp #, c-format msgid "[%s]Filter" -msgstr "[%s] 篩選器" +msgstr "[%s] 篩選" #: src/inventory_ui.cpp #, c-format msgid "[%s]Filter: " -msgstr "[%s] 篩選器: " +msgstr "[%s] 篩選: " #: src/inventory_ui.cpp msgid "Next column" @@ -122660,41 +125603,41 @@ msgstr "上一列" #: src/inventory_ui.cpp msgid "Confirm your selection" -msgstr "確認你的選擇" +msgstr "確認選擇" #: src/inventory_ui.cpp msgid "Switch selection mode" -msgstr "切換選取模式" +msgstr "切換選擇模式" #: src/inventory_ui.cpp msgid "End" -msgstr "完結" +msgstr "末頁" #: src/inventory_ui.cpp msgid "Category selection mode" -msgstr "目錄選擇模式" +msgstr "分類選擇模式" #: src/inventory_ui.cpp msgid "Mark/unmark selected item" -msgstr "標記/取消標記 選擇的物品" +msgstr "標記/取消標記選中的物品" #: src/inventory_ui.cpp msgid "ITEMS TO COMPARE" -msgstr "比較物品" +msgstr "要比較的物品" #: src/inventory_ui.cpp #, c-format msgid "You need two items for comparison. Use %s to select them." -msgstr "你需要先選擇兩個物品以作比較。使用 %s 選擇它們。" +msgstr "你需要選擇兩個要比較的物品。使用 %s 以標記它們。" #: src/inventory_ui.cpp #, c-format msgid "No items were selected. Use %s to select them." -msgstr "未選擇任何物品。使用 %s 選擇它們。" +msgstr "沒有選中任何物品。使用 %s 選擇它們。" #: src/inventory_ui.cpp msgid "ITEMS TO DROP" -msgstr "丟棄物品" +msgstr "要丟棄的物品" #: src/item.cpp msgid "yellow" @@ -122709,10 +125652,79 @@ msgstr "橙" msgid "black" msgstr "黑" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks as fresh as it can be. It still has " +"%s until it spoils." +msgstr "" + +#: src/item.cpp +msgid "* This food looks as fresh as it can be." +msgstr "* 這食物看起來非常新鮮。" + +#: src/item.cpp +#, c-format +msgid "" +"* This food looks old. It's just %s from becoming " +"inedible." +msgstr "" + +#: src/item.cpp +msgid "" +"* This food looks old. It's on the brink of becoming inedible." +msgstr "" + +#: src/item.cpp +msgid "" +"* This food looks fine. If you were more skilled in cooking or" +" survival, you might be able to make a better estimation." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks quite fresh. It has %s until it" +" spoils." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it is reaching its midlife. " +"There's %s before it spoils." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it has passed its midlife. " +"Edible, but will go bad in %s." +msgstr "" + +#. ~ here, %s is an approximate time span, e.g., "over 2 weeks" or "about 1 +#. season" +#: src/item.cpp +#, c-format +msgid "" +"* This food looks like it will be old soon. It has " +"%s, so if you plan to use it, it's now or never." +msgstr "" + #: src/item.cpp msgid "Category: " msgstr "分類: " +#: src/item.cpp +msgid "$" +msgstr "" + #: src/item.cpp msgid "Price: " msgstr "價值: " @@ -122755,7 +125767,7 @@ msgstr "命中加成: " #: src/item.cpp msgid "Moves per attack: " -msgstr "攻擊所需行動點: " +msgstr "攻擊所需行動點數: " #: src/item.cpp msgid "Minimum requirements:" @@ -122781,19 +125793,19 @@ msgstr "年份: " #: src/item.cpp msgid "bday rot: " -msgstr "開始腐爛日: " +msgstr "開始腐敗日: " #: src/item.cpp msgid "temp rot: " -msgstr "腐爛溫度: " +msgstr "腐敗溫度: " #: src/item.cpp msgid "max rot: " -msgstr "最大腐爛程度: " +msgstr "最大腐敗程度: " #: src/item.cpp msgid "last rot: " -msgstr "腐爛歷時: " +msgstr "腐敗歷時: " #: src/item.cpp msgid "last temp: " @@ -122809,7 +125821,7 @@ msgstr "" #: src/item.cpp msgid "FROZEN: " -msgstr "" +msgstr "冰凍: " #: src/item.cpp msgid "burn: " @@ -122845,7 +125857,7 @@ msgstr "* 食用這個物品會導致上癮。" #: src/item.cpp msgid "Calories (kcal): " -msgstr "" +msgstr "熱量 (大卡): " #: src/item.cpp msgid "Smells like: " @@ -122880,54 +125892,21 @@ msgstr "* 仔細觀察後, 這似乎會引起幻覺。" #: src/item.cpp #, c-format msgid "" -"* This food is perishable, and takes %s to " -"rot from full freshness, at room temperature." -msgstr "* 這個食物容易變質, 在室溫下經過%s就會從完好狀態腐壞至不宜食用。" - -#: src/item.cpp -msgid "* This food looks as fresh as it can be." -msgstr "* 這食物看起來非常新鮮。" - -#: src/item.cpp -msgid "" -"* This food looks still quite fresh. It's far from becoming " -"old." -msgstr "* 這食物看起來依然新鮮, 距離腐爛還有很長時間。" - -#: src/item.cpp -msgid "" -"* This food looks like it is reaching its midlife. It has" -" some time ahead before spoiling." -msgstr "* 這食物看起來快剩下一半的鮮度, 距離腐爛還有一段時間。" - -#: src/item.cpp -msgid "" -"* This food looks like it has passed its midlife. Edible," -" but will go old sooner rather then later." -msgstr "* 這物看起來已剩下不足一半的鮮度, 仍然能吃, 但很快就會腐爛。" - -#: src/item.cpp -msgid "" -"* This food looks like it will be old soon. It's now or never, if" -" you plan to use it." -msgstr "* 這食物看起來很快就會腐爛, 一不做二不休, 如果你打算吃它的話。" - -#: src/item.cpp -msgid "" -"* This food looks old. It's on a brink of becoming inedible." -msgstr "* 這食物看起來即將腐爛, 似乎一眨眼就會變得不能吃。" +"* This food is perishable, and at room temperature has an" +" estimated nominal shelf life of %s." +msgstr "* 這種食物容易腐敗, 在室溫下的預估保存期限為 %s。" #: src/item.cpp msgid "" "* Quality of this food suffers when it's frozen, and it will become" " mushy after thawing out.." -msgstr "* 這種食物的品質在冷凍時會受到影響, 並且在解凍後會變成糊狀。" +msgstr "* 這種食物的品質在冰凍時會受到影響, 並且在解凍後會變成糊狀。" #: src/item.cpp msgid "" "* It was frozen once and after thawing became mushy and " "tasteless. It will rot if thawed again." -msgstr "* 它曾被冷凍並且在解凍後變得糊狀而無味。要是再解凍一次它將會腐爛。" +msgstr "* 它曾被冰凍並且在解凍後變得糊狀而無味。要是再解凍一次它將會腐敗。" #: src/item.cpp msgid "* It seems that deep freezing killed all parasites." @@ -122937,23 +125916,19 @@ msgstr "* 看起來深度的冷凍殺死了所有寄生蟲。" msgid "" "This food has started to rot, but your bionic " "digestion can tolerate it." -msgstr "這個食物已經開始腐爛, 但你的生化消化系統還可以忍受。" +msgstr "這個食物已經開始腐敗, 但你的生化消化系統還可以忍受。" #: src/item.cpp msgid "" "This food has started to rot, but you can tolerate " "it." -msgstr "這個食物已經開始腐爛, 但還可以忍受。" +msgstr "這個食物已經開始腐敗, 但還可以忍受。" #: src/item.cpp msgid "" "This food has started to rot. Eating it would be a " "very bad idea." -msgstr "這個食物已經開始腐爛, 吃這東西是個壞主意。" - -#: src/item.cpp -msgid "Capacity: " -msgstr "容量: " +msgstr "這個食物已經開始腐敗, 吃這東西是個壞主意。" #: src/item.cpp #, c-format @@ -122961,6 +125936,10 @@ msgid " round of %s" msgid_plural " rounds of %s" msgstr[0] " 發裝的 %s" +#: src/item.cpp +msgid "Capacity: " +msgstr "容量: " + #: src/item.cpp msgid " per round" msgstr "每發 " @@ -123120,7 +126099,7 @@ msgstr "這個模組必須裝在槍上, 不能夠直接拿來射擊 msgid "" "When attached to a gun, allows making reach melee " "attacks with it." -msgstr "裝在槍械上就能夠作出伸延的近戰攻擊。" +msgstr "裝在槍械上就能夠用它作出近戰伸延攻擊。" #: src/item.cpp msgid "Dispersion modifier: " @@ -123139,6 +126118,18 @@ msgstr "操縱性修正: " msgid "Ammo: %s" msgstr "彈藥: %s" +#: src/item.cpp +msgid "%" +msgstr "" + +#: src/item.cpp +msgid "Reload modifier: " +msgstr "" + +#: src/item.cpp +msgid "Minimum strength required modifier: " +msgstr "" + #: src/item.cpp msgid "Used on: " msgstr "使用在: " @@ -123293,7 +126284,7 @@ msgstr "防火: " #: src/item.cpp msgid "Environmental protection: " -msgstr "環境傷害防護: " +msgstr "環境危害防護: " #: src/item.cpp msgid "Just for fun." @@ -123344,11 +126335,11 @@ msgstr[0] "這本書包含了 %1$d 種製作配方: %2$s" #: src/item.cpp msgid "It might help you figuring out some more recipes." -msgstr "它可以幫助你搞清楚更多的配方。" +msgstr "它或許可以幫助你搞清楚更多配方。" #: src/item.cpp msgid "You need to read this book to see its contents." -msgstr "你需要閱讀這本書, 以查看其內容。" +msgstr "你需要閱讀這本書, 以檢視其內容。" #: src/item.cpp msgid "This container " @@ -123364,7 +126355,7 @@ msgstr "是水密的, " #: src/item.cpp msgid "preserves spoiling, " -msgstr "使內容物免於腐壞, " +msgstr "使內容物免於腐敗, " #: src/item.cpp #, c-format @@ -123420,7 +126411,7 @@ msgstr "揮舞時可用的技巧: " #: src/item.cpp msgid "* This item can be used to make long reach attacks." -msgstr "* 這件物品能夠作出長距離伸延攻擊。" +msgstr "* 這件物品能夠作出長距伸延攻擊。" #: src/item.cpp msgid "* This item can be used to make reach attacks." @@ -123453,7 +126444,7 @@ msgstr "%d 穿刺 (%d 爆擊)" #: src/item.cpp #, c-format msgid "%d moves per attack" -msgstr "每次攻擊耗用 %d 行動點" +msgstr "每次攻擊需要 %d 行動點數" #: src/item.cpp msgid "You know how to use this with these martial arts styles: " @@ -123461,11 +126452,11 @@ msgstr "本物品能配合你熟習的武術招式: " #: src/item.cpp msgid "Repaired with: " -msgstr "能被以下工具修復: " +msgstr "能用以下工具修理: " #: src/item.cpp msgid "* This item is not repairable." -msgstr "* 這件物品無法被修復。" +msgstr "* 這件物品無法修理。" #: src/item.cpp msgid "* This item does not conduct electricity." @@ -123482,15 +126473,15 @@ msgstr "* 此物品會導電。" #: src/item.cpp msgid "* This item can be worn with a helmet." -msgstr "* 這件物品能 與頭盔一起穿戴." +msgstr "* 這件物品能 與頭盔一起穿戴。" #: src/item.cpp msgid "* This piece of clothing fits you perfectly." -msgstr "* 這一件衣物很合身。" +msgstr "* 這件衣物很合身。" #: src/item.cpp msgid "* This piece of clothing can be refitted." -msgstr "* 這一件衣物可以被修改得更貼身。" +msgstr "* 這件衣物可以被修改得更合身。" #: src/item.cpp msgid "" @@ -123501,16 +126492,16 @@ msgstr "* 這件衣服太大了, 但可以被改成小一號的 msgid "" "* These clothes are undersized enough to accommodate " "abnormally small mutated anatomy." -msgstr "* 這件衣服的尺寸小了一號足以容納異常小的畸形的身體部位。" +msgstr "* 這件衣物的尺寸小了一號, 足以容納異常小的畸形部位。" #: src/item.cpp msgid "" "* These clothes are undersized but can be refitted." -msgstr "* 這件衣服的尺寸小了一號可以被修改得更貼身。" +msgstr "* 這件衣物的尺寸小了一號可以被修改得更合身。" #: src/item.cpp msgid "* This item can be worn on either side of the body." -msgstr "* 這件物品可以穿在身上任何一邊。" +msgstr "* 這件物品可以穿戴於身體的任何一邊。" #: src/item.cpp msgid "* This gear is a part of power armor." @@ -123520,13 +126511,13 @@ msgstr "* 這件裝備是動力裝甲的部件。" msgid "" "* When worn with a power armor suit, it will fully protect you " "from radiation." -msgstr "* 當你穿上動力裝甲, 它可以讓你完全不受輻射傷害。" +msgstr "* 當你穿著動力裝甲, 它可以讓你完全不受輻射影響。" #: src/item.cpp msgid "" "* When worn with a power armor helmet, it will fully protect " "you from radiation." -msgstr "* 當你穿上動力裝甲頭盔, 它可以讓你完全不受輻射傷害。" +msgstr "* 當你穿著動力裝甲頭盔, 它可以讓你完全不授輻射影響。" #: src/item.cpp #, c-format @@ -123580,7 +126571,7 @@ msgstr "* 這件物品接受到無線電信號後會立即啟動two free hands to fire." @@ -123657,7 +126648,7 @@ msgstr "模組: " #: src/item.cpp msgid "Contents of this item:" -msgstr "" +msgstr "這個物品的內容物:" #: src/item.cpp msgid "You know dozens of things you could craft with it." @@ -123675,27 +126666,27 @@ msgstr "你可用它來製作: %s" #: src/item.cpp #, c-format msgid "It takes you an extremely long time to wield your %s." -msgstr "手持著 %s 花費了極長的時間。" +msgstr "你手持了 %s, 花費了極長的時間。" #: src/item.cpp #, c-format msgid "It takes you a very long time to wield your %s." -msgstr "手持著 %s 花費了很長一段時間。" +msgstr "你手持了 %s, 花費了很長一段時間。" #: src/item.cpp #, c-format msgid "It takes you a long time to wield your %s." -msgstr "手持著 %s 花費了不少時間。" +msgstr "你手持了 %s, 花費了不少的時間。" #: src/item.cpp #, c-format msgid "It takes you several seconds to wield your %s." -msgstr "手持著 %s 花費了幾秒鐘時間。" +msgstr "你手持了 %s, 花費了幾秒鐘時間。" #: src/item.cpp #, c-format msgid "You wield your %s." -msgstr "你手持著 %s 。" +msgstr "你手持了 %s。" #: src/item.cpp msgctxt "damage adjective" @@ -123786,7 +126777,7 @@ msgstr " (骯髒)" #: src/item.cpp src/veh_interact.cpp msgid " (rotten)" -msgstr " (腐爛)" +msgstr " (腐敗)" #: src/item.cpp msgid " (mushy)" @@ -123802,7 +126793,7 @@ msgstr " (新鮮)" #: src/item.cpp msgid " (hot)" -msgstr " (熱)" +msgstr " (加熱)" #: src/item.cpp msgid " (cold)" @@ -123810,7 +126801,7 @@ msgstr " (冷)" #: src/item.cpp src/veh_interact.cpp msgid " (frozen)" -msgstr " (冷凍)" +msgstr " (冰凍)" #: src/item.cpp msgid " (melted)" @@ -123944,7 +126935,7 @@ msgstr "沒有位置容納這件模組" #: src/item.cpp #, c-format msgid "doesn't have enough room for another %s mod" -msgstr "沒有足夠空間來安裝 %s 模組" +msgstr "沒有足夠的空間來安裝 %s 模組" #: src/item.cpp #, c-format @@ -123999,7 +126990,7 @@ msgstr "%s 不是水密容器。" #: src/item.cpp #, c-format msgid "That %s must be on the ground or held to hold contents!" -msgstr "%s 需要放在地上 (或是手持著) 才能裝東西!" +msgstr "這個 %s 必須放在地上或拿在手上才能裝東西!" #: src/item.cpp #, c-format @@ -124058,7 +127049,7 @@ msgstr "我滴神哪, 你正在搬運的屍體開始活過來了!" #: src/item.cpp #, c-format msgid "You take a puff of your %s." -msgstr "你抽了一口你的 %s 。" +msgstr "你抽了一口你的 %s。" #: src/item.cpp #, c-format @@ -124068,7 +127059,7 @@ msgstr "你顫抖的手導致你的 %s 掉了。" #: src/item.cpp #, c-format msgid "You fall asleep and drop your %s." -msgstr "你睡著了, 你丟棄了你的 %s 。" +msgstr "你睡著了, 你丟棄了你的 %s。" #: src/item.cpp #, c-format @@ -124107,14 +127098,14 @@ msgstr "你需要一個UPS讓 %s 運作!" msgctxt "item name" msgid "%s carcass" msgid_plural "%s carcasses" -msgstr[0] "" +msgstr[0] "%s 屍體" #: src/item.cpp #, c-format msgctxt "item name" msgid "quartered %s carcass" msgid_plural "quartered %s carcasses" -msgstr[0] "" +msgstr[0] "四分之一 %s 屍體" #: src/item.cpp #, c-format @@ -124128,7 +127119,7 @@ msgstr[0] "%s 屍體" msgctxt "item name" msgid "%s carcass of %s" msgid_plural "%s carcasses of %s" -msgstr[0] "" +msgstr[0] "%s %s 的屍體" #: src/item.cpp #, c-format @@ -124152,15 +127143,15 @@ msgstr[0] "%s 血液" #: src/item_action.cpp msgid "You do not have an item that can perform this action." -msgstr "你沒有能執行這個動作的物品。" +msgstr "你沒有可以執行這個動作的物品。" #: src/item_action.cpp msgid "You don't have any items with registered uses" -msgstr "你沒有能使用動作選單的物品" +msgstr "你沒有可以使用動作選單的物品。" #: src/item_action.cpp msgid "Execute which action?" -msgstr "執行甚麼動作?" +msgstr "執行什麼動作?" #: src/item_factory.cpp msgid "cannot specify revert_msg without revert_to" @@ -124202,7 +127193,7 @@ msgstr "你已經在抽 %s 了!" #: src/iuse.cpp msgid "Are you sure you want to drink... this?" -msgstr "你確定真的想要...喝下這個東西嗎?" +msgstr "你確定要喝… 這個東西嗎?" #: src/iuse.cpp msgctxt "memorial_male" @@ -124226,14 +127217,14 @@ msgstr "哇! 這 %s 真帶勁。" #: src/iuse.cpp msgid "You don't have anything to light it with!" -msgstr "你沒有能點燃的東西!" +msgstr "你沒有可以點燃它的東西!" #: src/iuse.cpp #, c-format msgid "" "Please let the devs know you should be able to smoke a %s but the smoking " "code does not know how." -msgstr "請回報製作組你應該要可以抽 %s 但抽菸的代碼失效了。" +msgstr "請回報製作組你應該要可以抽 %s, 但抽菸的代碼失效了。" #: src/iuse.cpp #, c-format @@ -124242,7 +127233,7 @@ msgstr "你點燃了 %s。" #: src/iuse.cpp msgid "Ugh, too much smoke... you feel nasty." -msgstr "痾, 抽太多煙了...你覺得想吐。" +msgstr "痾, 抽太多煙了… 你覺得想吐。" #: src/iuse.cpp msgid "You take a puff from your electronic cigarette." @@ -124258,7 +127249,7 @@ msgstr "你沒有菸鹼液!" #: src/iuse.cpp msgid "Ugh, too much nicotine... you feel nasty." -msgstr "痾, 抽太多尼古丁了...你覺得想吐。" +msgstr "痾, 抽太多尼古丁了… 你覺得想吐。" #: src/iuse.cpp msgid "You take some antibiotics." @@ -124364,7 +127355,7 @@ msgstr "你停止顫抖了。" msgid "" "You start scarfing down the delicious brownie. It tastes a little funny " "though..." -msgstr "你吞下這美味的布朗尼。這味道嚐起來有點好笑..." +msgstr "你吞下這美味的布朗尼。這味道嚐起來有點好笑…" #: src/iuse.cpp msgid "You snort a bump of coke." @@ -124396,7 +127387,7 @@ msgstr "你再也不必害怕流感了。" #: src/iuse.cpp msgid "Are you sure you want to eat this? It looks poisonous..." -msgstr "你確定要吃這個東西嗎? 這看起來有毒..." +msgstr "你確定要吃這個東西嗎? 它看起來有毒…" #: src/iuse.cpp #, c-format @@ -124417,7 +127408,7 @@ msgstr "你突然覺得很空虛。" #: src/iuse.cpp msgid "You feel very sleepy..." -msgstr "你覺得很想睡..." +msgstr "你覺得很想睡…" #: src/iuse.cpp msgid "You eat the datura seed." @@ -124553,7 +127544,7 @@ msgstr "你才吃了一口就立刻嘔吐了。" msgid "" "You feel a familiar warmth, but suddenly it surges into an excruciating burn" " as you convulse, vomiting, and black out..." -msgstr "你感覺到一個熟悉的溫度, 但突然就激增成了難以忍受的灼燒感, 你接著抽筋、嘔吐、昏迷..." +msgstr "你感覺到一個熟悉的溫度, 但突然就激增成了難以忍受的灼燒感, 你接著抽筋、嘔吐、昏迷…" #: src/iuse.cpp msgctxt "memorial_male" @@ -124569,7 +127560,7 @@ msgstr "馬洛斯莓排斥反應。" msgid "" "You feel a familiar warmth, but suddenly it surges into painful burning as " "you convulse and collapse to the ground..." -msgstr "你感覺到一個熟悉的溫度, 但它突然激增成燃燒的劇痛, 你痙攣並癱在地上了......" +msgstr "你感覺到一個熟悉的溫度, 但它突然激增成燃燒的劇痛, 你痙攣並癱在地上了…" #: src/iuse.cpp msgctxt "memorial_male" @@ -124585,17 +127576,17 @@ msgstr "開啟馬洛斯之門。" msgid "" "You wake up in a marloss bush. Almost *cradled* in it, actually, as though " "it grew there for you." -msgstr "你從馬洛斯灌木中醒來。你幾乎被包在裡面, 事實上, 就像是圍繞著你而長出來的。" +msgstr "你從馬洛斯灌木中醒來。事實上, 幾乎是被它抱著, 就像是圍繞著你而長出來的。" #: src/iuse.cpp msgid "" "unity. together we have reached the door. we provide the final key. now " "to pass through..." -msgstr "團結。團結一致讓我們到達了大門。我們有最後的關鍵。現在, 走過去吧..." +msgstr "團結。團結一致讓我們到達了大門。我們有最後的關鍵。現在, 走過去吧…" #: src/iuse.cpp msgid "You feel a strange warmth spreading throughout your body..." -msgstr "你感覺有一股奇妙的暖流從你的身體流出..." +msgstr "你感覺有一股奇妙的暖流從你的身體流出…" #: src/iuse.cpp msgid "" @@ -124662,7 +127653,7 @@ msgstr "這蘋果嘗起來太棒了, 你瞬間吃完, 甚至沒注意它沒有 msgid "" "As the apple settles in, you feel ecstasy radiating through every part of " "your body..." -msgstr "當吃下了蘋果, 你感覺得一陣狂喜流竄到你身體的每個部位..." +msgstr "當吃下了蘋果, 你感覺得一陣狂喜流竄到你身體的每個部位…" #: src/iuse.cpp msgid "" @@ -124717,7 +127708,7 @@ msgstr "" #: src/iuse.cpp msgid "This apple tastes really weird! You're not sure it's good for you..." -msgstr "這顆蘋果嚐起來真的很怪! 你不確定吃下它有沒有好處..." +msgstr "這顆蘋果嚐起來真的很怪! 你不確定吃下它有沒有好處…" #: src/iuse.cpp #, c-format @@ -124731,7 +127722,7 @@ msgstr "把 %s 放在哪邊?" #: src/iuse.cpp msgid "Are you sure you want to feed a person the dog food?" -msgstr "你確定要把寶路餵給人吃?" +msgstr "你確定要把狗食餵給人吃?" #: src/iuse.cpp #, c-format @@ -124756,19 +127747,19 @@ msgstr "" #: src/iuse.cpp msgid "You want to feed it the dog food, but it bites your fingers!" -msgstr "你想餵牠寶路, 但牠卻咬了你的手指!" +msgstr "你想餵牠狗食, 但牠卻咬了你的手指!" #: src/iuse.cpp msgid "" "Apparently it's more interested in your flesh than the dog food in your " "hand!" -msgstr "相比你手中的寶路, 顯然牠對你的肉更感興趣!" +msgstr "相比你手中的狗食, 顯然牠對你的肉更感興趣!" #: src/iuse.cpp #, c-format msgid "" "The %s seems to like you! It lets you pat its head and seems friendly." -msgstr "%s似乎喜歡你! 牠讓你拍了拍他的頭, 感覺很友善。" +msgstr "%s 似乎喜歡你! 牠讓你拍了拍他的頭, 感覺很友善。" #: src/iuse.cpp #, c-format @@ -124781,7 +127772,7 @@ msgstr "" #, c-format msgid "" "The %s seems to like you! It runs around your legs and seems friendly." -msgstr "" +msgstr "%s 似乎喜歡你! 牠在你的腳邊跑來跑去, 感覺很友善。" #: src/iuse.cpp msgid "There is nothing to be fed here." @@ -124793,7 +127784,7 @@ msgstr "太暗了, 你無法縫紉!" #: src/iuse.cpp msgid "Enhance which clothing?" -msgstr "" +msgstr "修改哪件衣物?" #: src/iuse.cpp src/iuse.cpp src/iuse_actor.cpp msgid "You do not have that item!" @@ -124801,15 +127792,15 @@ msgstr "你沒有那個物品!" #: src/iuse.cpp msgid "This can be used to repair or modify other items, not itself." -msgstr "這東西只能用來維修或修改其他物品, 而非本身。" +msgstr "這東西只能用來修理或修改其他物品, 而非本身。" #: src/iuse.cpp msgid "How do you want to modify it?" -msgstr "你要怎麼修改這個?" +msgstr "你要怎麼修改它?" #: src/iuse.cpp msgid "Not enough thread to modify. Which modification do you want to remove?" -msgstr "沒有足夠縫線去修改衣物。你想移除哪個改造?" +msgstr "沒有足夠的縫線去修改衣物。你要移除哪個改造?" #: src/iuse.cpp #, c-format @@ -124855,7 +127846,7 @@ msgstr "拆走凱夫勒" #: src/iuse.cpp msgid "Are you sure? You will not gain any materials back." -msgstr "你確定嗎? 你無法拿回原來的材料。" +msgstr "你確定嗎? 你無法拿回任何材料。" #: src/iuse.cpp #, c-format @@ -124868,7 +127859,7 @@ msgstr "你毀了它。" #: src/iuse.cpp msgid "You fail to modify the clothing, and you waste thread and materials." -msgstr "你修改 %s 失敗, 浪費了縫線和材料。" +msgstr "你修改衣物失敗, 浪費了縫線和材料。" #: src/iuse.cpp #, c-format @@ -124916,7 +127907,7 @@ msgstr "從工具上卸除模組?" #: src/iuse.cpp msgid "You don't have any modified tools." -msgstr "你並沒有改造過的工具。" +msgstr "你沒有改造過的工具。" #: src/iuse.cpp msgid "Fish where?" @@ -124936,7 +127927,7 @@ msgstr "這附近沒有魚。試試其他地方。" #: src/iuse.cpp msgid "You cast your line and wait to hook something..." -msgstr "你甩出線, 等待有東西上鉤..." +msgstr "你甩出線, 等待有東西上鉤…" #: src/iuse.cpp msgid "Fish are not foolish enough to go in here without bait." @@ -125023,7 +128014,7 @@ msgstr "關機中。" #: src/iuse.cpp msgid "Your RM13 combat armor turns off." -msgstr "你的RM13戰鬥裝甲關閉了。" +msgstr "你的 RM13 戰鬥裝甲關閉了。" #: src/iuse.cpp #, c-format @@ -125038,7 +128029,7 @@ msgstr "除非你先把它脫下來, 否則你無法把你的 %s 打包。" #: src/iuse.cpp #, c-format msgid "You pack your %s for storage." -msgstr "你打包了你的 %s 。" +msgstr "你打包了你的 %s。" #: src/iuse.cpp msgid "You need batteries to cauterize wounds." @@ -125051,7 +128042,7 @@ msgstr "沒事燙自己很爽嘛?" #: src/iuse.cpp src/iuse_actor.cpp msgid "" "You are not bleeding or bitten, there is no need to cauterize yourself." -msgstr "你沒有受傷或流血, 所以不需要燒灼你自己。" +msgstr "你沒有受傷或流血, 沒有必要燒灼自己。" #: src/iuse.cpp msgid "Cauterize any open wounds?" @@ -125063,7 +128054,7 @@ msgstr "要淨化甚麼呢?" #: src/iuse.cpp msgid "You don't have water to purify." -msgstr "你沒有水可淨化。" +msgstr "你沒有可以淨化的水。" #: src/iuse.cpp msgid "That volume of water is too large to purify." @@ -125118,7 +128109,7 @@ msgstr "你打開噪音發射器。" #. ~ the sound of a noise emitter when turned on #: src/iuse.cpp msgid "KXSHHHHRRCRKLKKK!" -msgstr "滋~~~~喀啦喀拉" +msgstr "滋~~~~喀啦喀拉!" #: src/iuse.cpp msgid "The infernal racket dies as the noise emitter turns off." @@ -125131,12 +128122,12 @@ msgstr "你已經了解這本書教的所有東西。" #: src/iuse.cpp #, c-format msgid "You learn the essential elements of %s." -msgstr "" +msgstr "你學習了 %s 的基礎。" #: src/iuse.cpp #, c-format msgid "%s to select martial arts style." -msgstr "%s以選擇武術風格。" +msgstr "%s 以選擇武術招式。" #: src/iuse.cpp msgid "You pry out the fence post." @@ -125281,7 +128272,7 @@ msgstr "那裡沒有車輛" #: src/iuse.cpp msgid "With a snarl, the combat chainsaw screams to life!" -msgstr "一陣聲響後, 戰鬥鏈鋸啟動了!" +msgstr "隨著一陣咆哮, 戰鬥鏈鋸啟動了!" #: src/iuse.cpp msgid "You yank the cord, but nothing happens." @@ -125289,7 +128280,7 @@ msgstr "你猛拉細繩, 但完全沒有反應" #: src/iuse.cpp msgid "With a snarl, the electric combat chainsaw screams to life!" -msgstr "" +msgstr "隨著一陣咆哮, 戰鬥電鋸啟動了!" #: src/iuse.cpp msgid "You flip the switch, but nothing happens." @@ -125297,15 +128288,15 @@ msgstr "你扳起開關, 但完全沒有反應" #: src/iuse.cpp msgid "With a roar, the chainsaw leaps to life!" -msgstr "一陣聲響後, 鏈鋸啟動了!" +msgstr "隨著一陣咆哮, 鏈鋸啟動了!" #: src/iuse.cpp msgid "With a roar, the electric chainsaw leaps to life!" -msgstr "一陣聲響後, 電鋸啟動了!" +msgstr "隨著一陣咆哮, 電鋸啟動了!" #: src/iuse.cpp msgid "With a roar, the chainsaws leap to life!" -msgstr "一陣聲響後, 鏈鋸啟動了!" +msgstr "隨著一陣咆哮, 雙頭鏈鋸啟動了!" #: src/iuse.cpp msgid "You yank the cords, but nothing happens." @@ -125313,7 +128304,7 @@ msgstr "你猛拉繩索, 但沒有任何反應。" #: src/iuse.cpp msgid "With a buzz, the chainsaws leap to life!" -msgstr "" +msgstr "隨著一陣咆哮, 雙頭鍊鋸啟動了!" #: src/iuse.cpp msgid "You flip the on switch, but nothing happens." @@ -125329,7 +128320,7 @@ msgstr "你扣動扳機但沒有動靜。" #: src/iuse.cpp msgid "With a roar, the hedge trimmer leaps to life!" -msgstr "一陣聲響後, 修枝機啟動了!" +msgstr "隨著一陣咆哮, 修枝機啟動了!" #: src/iuse.cpp #, c-format @@ -125347,15 +128338,15 @@ msgstr "戰鬥鏈鋸" #: src/iuse.cpp msgid "Your combat chainsaw growls." -msgstr "你的戰鬥鏈鋸怒吼著。" +msgstr "你的戰鬥鏈鋸隆隆作響。" #: src/iuse.cpp msgid "electric combat chainsaw" -msgstr "" +msgstr "戰鬥電鋸" #: src/iuse.cpp msgid "Your electric combat chainsaw growls." -msgstr "" +msgstr "你的戰鬥電鋸隆隆作響。" #: src/iuse.cpp msgid "chainsaw" @@ -125379,15 +128370,15 @@ msgstr "雙頭鏈鋸" #: src/iuse.cpp msgid "Your chainsaws rumble." -msgstr "你的鏈鋸隆隆作響。" +msgstr "你的雙頭鏈鋸隆隆作響。" #: src/iuse.cpp msgid "electric chainsaw lajatang" -msgstr "" +msgstr "雙頭電鋸" #: src/iuse.cpp msgid "Your chainsaws buzz." -msgstr "" +msgstr "你的雙頭電鋸隆隆作響。" #: src/iuse.cpp msgid "electric carver" @@ -125612,23 +128603,23 @@ msgstr "啟動迷你核彈。" #: src/iuse.cpp msgid "You squeeze the pheromone ball..." -msgstr "你擠壓費洛蒙球.." +msgstr "你擠壓費洛蒙球…" #: src/iuse.cpp msgid " squeezes the pheromone ball..." -msgstr " 擠壓費洛蒙球..." +msgstr " 擠壓費洛蒙球…" #: src/iuse.cpp msgid "...but nothing happens." -msgstr "...但沒有發生任何事." +msgstr "… 但沒有發生任何事。" #: src/iuse.cpp msgid "...and a nearby zombie turns friendly!" -msgstr "...附近的殭屍變友善了!" +msgstr "… 附近的殭屍變友善了!" #: src/iuse.cpp msgid "...and several nearby zombies turn friendly!" -msgstr "...附近的幾隻殭屍變友善了!" +msgstr "… 附近的幾隻殭屍變友善了!" #: src/iuse.cpp msgid "Shock where?" @@ -125756,7 +128747,7 @@ msgstr "你聽了 %s" #: src/iuse.cpp msgid "The mp3 player turns off." -msgstr "MP3播放器關閉了。" +msgstr "MP3 播放器關閉了。" #: src/iuse.cpp msgid "" @@ -125770,7 +128761,7 @@ msgstr "" #: src/iuse.cpp #, c-format msgid "You need to wear the %1$s before you can unfold it." -msgstr "" +msgstr "你必須先穿戴 %1$s 才能攤開它。" #: src/iuse.cpp #, c-format @@ -125778,7 +128769,9 @@ msgid "You cannot use the %1$s with another of it's kind." msgstr "" #: src/iuse.cpp -msgid "You unfold solar array from the pack and plug it in." +msgid "" +"You unfold solar array from the pack. You still need to connect it with a " +"cable." msgstr "" #: src/iuse.cpp @@ -125814,11 +128807,11 @@ msgstr "你不認識字!" #: src/iuse.cpp msgid "What do you want to play?" -msgstr "你想玩啥?" +msgstr "你要玩什麼?" #: src/iuse.cpp msgid "Robot finds Kitten" -msgstr "當機器人找到貓" +msgstr "機器人找貓" #: src/iuse.cpp src/iuse_software_snake.cpp msgid "S N A K E" @@ -125894,7 +128887,7 @@ msgstr "從 %s 抽血嘛?" #: src/iuse.cpp #, c-format msgid "You drew blood from the %s..." -msgstr "你抽了 %s 的血..." +msgstr "你抽了 %s 的血…" #: src/iuse.cpp msgid "Draw your own blood?" @@ -125902,17 +128895,17 @@ msgstr "抽你自己的血?" #: src/iuse.cpp msgid "You drew your own blood..." -msgstr "你抽了自己的血..." +msgstr "你抽了自己的血…" #: src/iuse.cpp #, c-format msgid "...but acidic blood melts the %s, destroying it!" -msgstr "...但是強酸血液溶解了 %s , 摧毀了它!" +msgstr "… 但是強酸血液溶解了 %s, 摧毀了它!" #: src/iuse.cpp #, c-format msgid "...but acidic blood damages the %s!" -msgstr "...但是強酸血液使 %s 受損!" +msgstr "… 但是強酸血液使 %s 受損!" #: src/iuse.cpp msgid "You cut the log into planks." @@ -125932,10 +128925,6 @@ msgstr "" msgid "You waste a lot of the wood." msgstr "你浪費了許多木頭。" -#: src/iuse.cpp src/iuse_actor.cpp -msgid "Cut up what?" -msgstr "老兄, 要切啥?" - #: src/iuse.cpp msgid "Chop down which tree?" msgstr "要砍倒哪棵樹?" @@ -125996,11 +128985,11 @@ msgstr "那個方向沒有足夠的空間。" #: src/iuse.cpp #, c-format msgid "You set up the %s on the ground." -msgstr "你在地面上設立了 %s 。" +msgstr "你在地面上設立了 %s。" #: src/iuse.cpp msgid "Examine the center square to pack it up again." -msgstr "檢視中央格子來再次打包。" +msgstr "檢查中央格子來再次打包。" #: src/iuse.cpp msgid "The torch is extinguished." @@ -126048,7 +129037,7 @@ msgstr "炙焰打擊手 (點燃)" msgid "" "You neatly sever all of the veins and arteries in your body. Oh wait, Never" " mind." -msgstr "你俐落的切斷你體內的所有動靜脈。喔, 我的老天~, 當我沒說。" +msgstr "你俐落的切斷你體內的所有靜脈和動脈。喔, 我的老天… 當我沒說。" #: src/iuse.cpp msgid "Gachunk!" @@ -126105,7 +129094,7 @@ msgstr "你全身都充滿了咆嘯的能量!" #: src/iuse.cpp msgid "You have a vision of the surrounding area..." -msgstr "你睜開眼睛, 勉強看到周圍。" +msgstr "你獲得了周圍地區的視野…" #: src/iuse.cpp msgid "Blood soaks out of the ground and walls." @@ -126113,7 +129102,7 @@ msgstr "地面和牆壁沾滿了血漬。" #: src/iuse.cpp msgid "The fabric of space seems to decay." -msgstr "這個空間似乎正在分解..." +msgstr "這個空間的結構似乎正在瓦解。" #: src/iuse.cpp msgid "The earth shakes!" @@ -126142,7 +129131,7 @@ msgstr "巨型黃蜂出現了!" #: src/iuse.cpp #, c-format msgid "The %s glows brightly!" -msgstr "%s發出了光芒!" +msgstr "%s 發出了光芒!" #: src/iuse.cpp msgid "Horrible gases are emitted!" @@ -126162,7 +129151,7 @@ msgstr "你的周圍下起了火雨!" #: src/iuse.cpp msgid "You feel like your action has attracted attention." -msgstr "你覺得你的行動似乎引起了注意。" +msgstr "你覺得你的動作似乎引起了注意。" #: src/iuse.cpp msgid "You feel unhinged." @@ -126201,15 +129190,15 @@ msgstr "你的身邊出現了一個陰影。" #: src/iuse.cpp msgid "Your body feels like jelly." -msgstr "" +msgstr "你感覺身你就像果凍一樣。" #: src/iuse.cpp msgid "You're filled with euphoria!" -msgstr "" +msgstr "你感到興奮滿溢!" #: src/iuse.cpp msgid "(To delete, input one '.')" -msgstr "(輸入 '.' 以刪除)" +msgstr "(輸入 . 以刪除)" #: src/iuse.cpp msgid "You manage to get rid of the message on the ground." @@ -126225,11 +129214,11 @@ msgstr "你在地面上寫下了留言。" #: src/iuse.cpp msgid "Heat up what?" -msgstr "加熱啥?" +msgstr "加熱什麼?" #: src/iuse.cpp msgid "You don't have appropriate food to heat up." -msgstr "你沒有適合的食物可加熱。" +msgstr "你沒有可以加熱的食物。" #: src/iuse.cpp #, c-format @@ -126238,7 +129227,7 @@ msgstr "%s 適合在冰冷的狀態食用。解凍後還要繼續加熱嗎?" #: src/iuse.cpp msgid "You defrost the food." -msgstr "" +msgstr "你解凍了食物。" #: src/iuse.cpp msgid "You defrost and heat up the food." @@ -126250,7 +129239,7 @@ msgstr "你加熱了食物。" #: src/iuse.cpp msgid "There is no fire around, use your integrated toolset instead?" -msgstr "" +msgstr "周圍沒有火源, 要使用你的整合工具手嗎?" #: src/iuse.cpp #, c-format @@ -126292,12 +129281,12 @@ msgstr "你已經弄乾了, %s 沒有作用。" #: src/iuse.cpp src/iuse_actor.cpp #, c-format msgid "There's no room to unfold the %s." -msgstr "沒有足夠的空間讓你展開 %s 。" +msgstr "這裡沒有足夠的空間來展開 %s。" #: src/iuse.cpp #, c-format msgid "You painstakingly unfold the %s and make it ready to ride." -msgstr "你展開了 %s , 準備騎乘。" +msgstr "你展開了 %s, 準備騎乘。" #: src/iuse.cpp msgid "You inject yourself with adrenaline." @@ -126326,11 +129315,11 @@ msgstr "你的心臟劇烈地跳動!" #: src/iuse.cpp msgid "" "You must wear the stimulant delivery system before you can activate it." -msgstr "你必須先穿戴上興奮劑遞送系統才能啟動。" +msgstr "你必須先穿戴興奮劑遞送系統才能啟動它。" #: src/iuse.cpp msgid "The stimulant delivery system is empty." -msgstr "裡頭沒有興奮劑了。" +msgstr "這個興奮劑遞送系統是空的。" #: src/iuse.cpp msgid "You inject yourself with the stimulants." @@ -126338,7 +129327,7 @@ msgstr "你對自己注射興奮劑。" #: src/iuse.cpp msgid "You must wear the radiation biomonitor before you can activate it." -msgstr "你必須先穿戴上輻射檢測器才能啟動。" +msgstr "你必須先穿戴輻射檢測器才能啟動它。" #: src/iuse.cpp msgid "The radiation biomonitor needs batteries to function." @@ -126381,7 +129370,7 @@ msgstr "你換掉你現有的 %s。" #: src/iuse.cpp #, c-format msgid "You don't do anything with your %s." -msgstr "你沒有對你的 %s 作任何事。" +msgstr "你沒有對你的 %s 做任何事。" #: src/iuse.cpp #, c-format @@ -126394,11 +129383,11 @@ msgstr "你的視力變得正常了。" #: src/iuse.cpp msgid "You need a mechanics skill of 2 to use this repair kit." -msgstr "你的機械技能必須達到等級2才能使用這個維修工具。" +msgstr "你需要等級 2 的機械技能才能使用這個修理工具。" #: src/iuse.cpp msgid "Select the firearm to repair" -msgstr "選擇要修復的槍支。" +msgstr "選擇要修理的槍械" #: src/iuse.cpp msgid "That isn't a firearm!" @@ -126412,7 +129401,7 @@ msgstr "你無法修理你的 %s。" #: src/iuse.cpp src/iuse_actor.cpp #, c-format msgid "You cannot improve your %s any more this way." -msgstr "你無法再繼續用這方法增進你的 %s 。" +msgstr "你無法再繼續用這方法增進你的 %s。" #: src/iuse.cpp #, c-format @@ -126452,15 +129441,15 @@ msgstr "你取消清空這工具。" #: src/iuse.cpp msgid "You can't see to repair!" -msgstr "太暗了, 你無法修復!" +msgstr "太暗了, 你無法修理!" #: src/iuse.cpp msgid "You need a fabrication skill of 1 to use this repair kit." -msgstr "你的製作技能必須達到等級1才能使用這個維修工具。" +msgstr "你需要等級 1 的製作技能才能使用這個修理工具。" #: src/iuse.cpp msgid "Select the item to repair" -msgstr "選擇要修復的物品" +msgstr "選擇要修理的物品" #: src/iuse.cpp #, c-format @@ -126520,11 +129509,11 @@ msgstr "你嘗試重新編譯時造成 %s 短路了!" #: src/iuse.cpp msgid "...and turns friendly!" -msgstr "...變友善了!" +msgstr "… 變友善了!" #: src/iuse.cpp msgid "...but the robot refuses to acknowledge you as an ally!" -msgstr "...但這機器人拒絕將你辨識為盟友!" +msgstr "… 但這機器人拒絕將你辨識為盟友!" #: src/iuse.cpp #, c-format @@ -126555,12 +129544,12 @@ msgstr[0] "你下載 %d 個新歌到內部記憶體。" #: src/iuse.cpp #, c-format msgid "You download a recipe for %s into the tablet's memory." -msgstr "你下載一個 %s 的配方到平板的記憶體。" +msgstr "你下載了一個 %s 的配方到平板電腦的記憶體。" #: src/iuse.cpp #, c-format msgid "Your tablet already has a recipe for %s." -msgstr "你的平板裡已經有 %s 的配方了。" +msgstr "你的平板電腦裡已經有 %s 的配方了。" #: src/iuse.cpp msgid "You have updated your monster collection." @@ -126624,7 +129613,7 @@ msgstr "配方: %s" #: src/iuse.cpp msgid "View recipe on E-ink screen" -msgstr "在平板螢幕檢視配方" +msgstr "在平板螢幕上檢視配方" #: src/iuse.cpp msgid "Your collection of monsters" @@ -126648,11 +129637,11 @@ msgstr "解密記憶卡 (低技能)" #: src/iuse.cpp msgid "Wasted time, these pictures do not provoke your senses." -msgstr "浪費時間, 這些照片讓你沒有感覺。" +msgstr "浪費時間, 這些照片無法引發你的感受。" #: src/iuse.cpp msgid "You used to have a dog like this..." -msgstr "你以前有養一隻像這樣的狗..." +msgstr "你以前有養一隻像這樣的狗…" #: src/iuse.cpp msgid "Ha-ha! An amusing cat photo." @@ -126664,7 +129653,7 @@ msgstr "一張漂亮的風景照片。" #: src/iuse.cpp msgid "Food photos... your stomach rumbles!" -msgstr "美食照片...你的肚子咕嚕叫!" +msgstr "美食照片… 你的肚子咕嚕叫!" #: src/iuse.cpp msgid "Some very interesting travel photos." @@ -126729,7 +129718,7 @@ msgstr "你成功解密 %s 上的內容!" #: src/iuse.cpp #, c-format msgid "You failed to decrypt the %s." -msgstr "你無法將 %s 解密。" +msgstr "你無法解密 %s。" #: src/iuse.cpp msgid "You tripped the firmware protection, and the card deleted its data!" @@ -126770,7 +129759,7 @@ msgstr "%s 看起來失明了。" #: src/iuse.cpp msgid "Strange... there's nothing in the picture?" -msgstr "奇怪... 沒有東西在照片上?" +msgstr "奇怪… 沒有東西在照片上?" #: src/iuse.cpp #, c-format @@ -126902,12 +129891,12 @@ msgstr "你把你的遙控車裝備上 %s。" #: src/iuse.cpp #, c-format msgid "RC car with %s ? How?" -msgstr "遙控車跟 %s? 怎麼搞?" +msgstr "遙控車與 %s? 怎麼裝?" #: src/iuse.cpp #, c-format msgid "Your %s is too heavy or bulky for this RC car." -msgstr "你的 %s 對遙控車來說太重或是太大了。" +msgstr "你的 %s 對這台遙控車來說太重或是太大了。" #: src/iuse.cpp msgid "You disarmed your RC car" @@ -126944,15 +129933,15 @@ msgstr "要對遙控器做什麼?" #: src/iuse.cpp msgid "Press blue button" -msgstr "按下藍色按鈕" +msgstr "按藍色按鈕" #: src/iuse.cpp msgid "Press green button" -msgstr "按下綠色按鈕" +msgstr "按綠色按鈕" #: src/iuse.cpp msgid "Press red button" -msgstr "按下紅色按鈕" +msgstr "按紅色按鈕" #: src/iuse.cpp msgid "No active RC cars on ground and in range." @@ -127070,7 +130059,7 @@ msgstr "你被進擊的大同電鍋包圍了!" #: src/iuse.cpp msgid "The multi-cooker should be finishing shortly..." -msgstr "大同電鍋應該快烹調好了..." +msgstr "大同電鍋應該快烹調好了…" #. ~ sound of a multi-cooker finishing its cycle! #: src/iuse.cpp @@ -127115,7 +130104,7 @@ msgstr "拿出餐點" #: src/iuse.cpp msgid "Really stop cooking?" -msgstr "真的要停止烹飪?" +msgstr "確定停止烹飪?" #: src/iuse.cpp #, c-format @@ -127125,7 +130114,7 @@ msgstr "你從大同電鍋中取出食物。 %s 聞起來很美味。" #: src/iuse.cpp #, c-format msgid "You got the %s from the multi-cooker." -msgstr "你從大同電鍋取得 %s 。" +msgstr "你從大同電鍋取得 %s。" #: src/iuse.cpp msgid "Choose desired meal:" @@ -127170,14 +130159,26 @@ msgid "" " but best to stop messing with it." msgstr "你的惡搞差點弄壞大同電鍋! 還好, 它還能用, 但最好不要再亂弄它了。" -#: src/iuse.cpp -msgid "Attach cable to vehicle where?" -msgstr "連結電纜到車輛的哪邊?" - #: src/iuse.cpp msgid "Using cable:" msgstr "使用電纜:" +#: src/iuse.cpp +msgid "Attach cable to vehicle" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to self" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to solar pack" +msgstr "" + +#: src/iuse.cpp +msgid "Attach cable to vehicle where?" +msgstr "連結電纜到車輛的哪邊?" + #: src/iuse.cpp msgid "Attach loose end of the cable" msgstr "連接電纜的鬆脫端" @@ -127203,7 +130204,7 @@ msgstr "你需要肥皂才能使用它。" #: src/iuse.cpp #, c-format msgid "The %s's monitor slowly outputs the data..." -msgstr "%s 的螢幕緩慢的輸出資料..." +msgstr "%s 的螢幕緩慢的輸出資料…" #: src/iuse.cpp #, c-format @@ -127213,7 +130214,7 @@ msgstr "%1$s 閱讀了 %2$s。" #: src/iuse.cpp #, c-format msgid "You need to wear the %1$s before activating it." -msgstr "" +msgstr "你必須先穿戴 %1$s 才能啟動它。" #: src/iuse.cpp msgid "Choose hologram direction." @@ -127261,7 +130262,7 @@ msgstr "用 %s 來捕捉什麼?" #: src/iuse.cpp #, c-format msgid "You cannot use a %s there." -msgstr "你不能在這裡使用 %s 。" +msgstr "你不能在這裡使用 %s。" #: src/iuse.cpp #, c-format @@ -127296,7 +130297,7 @@ msgstr "" #: src/iuse.cpp msgid "You need a cleansing agent to use this." -msgstr "你需要清潔劑才能使用它。" +msgstr "你需要一瓶清潔劑才能使用它。" #: src/iuse.cpp msgid "ITEMS TO CLEAN" @@ -127358,14 +130359,113 @@ msgid "" "work." msgstr "" +#: src/iuse.cpp +#, c-format +msgid "You flip a %s." +msgstr "" + +#: src/iuse.cpp +msgid "Heads!" +msgstr "" + +#: src/iuse.cpp +msgid "Tails!" +msgstr "" + +#: src/iuse.cpp +msgid "It is certain." +msgstr "" + +#: src/iuse.cpp +msgid "It is decidedly so." +msgstr "" + +#: src/iuse.cpp +msgid "Without a doubt." +msgstr "" + +#: src/iuse.cpp +msgid "Yes - definitely." +msgstr "" + +#: src/iuse.cpp +msgid "You may rely on it." +msgstr "" + +#: src/iuse.cpp +msgid "As I see it, yes." +msgstr "" + +#: src/iuse.cpp +msgid "Most likely." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook good." +msgstr "" + +#: src/iuse.cpp +msgid "Signs point to yes." +msgstr "" + +#: src/iuse.cpp +msgid "Reply hazy, try again." +msgstr "" + +#: src/iuse.cpp +msgid "Ask again later." +msgstr "" + +#: src/iuse.cpp +msgid "Better not tell you now." +msgstr "" + +#: src/iuse.cpp +msgid "Cannot predict now." +msgstr "" + +#: src/iuse.cpp +msgid "Concentrate and ask again." +msgstr "" + +#: src/iuse.cpp +msgid "Don't count on it." +msgstr "" + +#: src/iuse.cpp +msgid "My reply is no." +msgstr "" + +#: src/iuse.cpp +msgid "My sources say no." +msgstr "" + +#: src/iuse.cpp +msgid "Outlook not so good." +msgstr "" + +#: src/iuse.cpp +msgid "Very doubtful." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "You ask the %s, then flip it." +msgstr "" + +#: src/iuse.cpp +#, c-format +msgid "The %s says: %s" +msgstr "" + #: src/iuse_actor.cpp #, c-format msgid "The %s is empty!" -msgstr "%s 是空的!" +msgstr "這個 %s 是空的!" #: src/iuse_actor.cpp msgid "You can't do that while underwater" -msgstr "你無法在水下這樣做。" +msgstr "你無法在水下那麼做。" #: src/iuse_actor.cpp #, c-format @@ -127404,12 +130504,12 @@ msgstr "你需要 %s 才行!" #: src/iuse_actor.cpp msgid "You need a syringe to inject this drug." -msgstr "" +msgstr "你需要一個針筒來注射這些藥物。" #: src/iuse_actor.cpp #, c-format msgid "You need %1$s to consume %2$s!" -msgstr "你需要 %1$s 才能消化 %2$s!" +msgstr "你需要 %1$s 才能食用 %2$s!" #: src/iuse_actor.cpp #, c-format @@ -127419,7 +130519,7 @@ msgstr "你需要 %1$s 才能食用 %2$s!" #: src/iuse_actor.cpp #, c-format msgid "There is no adjacent square to release the %s in!" -msgstr "相鄰的格子沒有空位能釋放 %s !" +msgstr "相鄰的格子沒有空位能釋放 %s!" #: src/iuse_actor.cpp #, c-format @@ -127452,12 +130552,12 @@ msgstr "%s 對著你的方向發出了識別敵我的警報聲。" #: src/iuse_actor.cpp msgid "A flashing LED on the laser turret appears to indicate low light." -msgstr "雷射槍塔上的LED閃燈顯示光源不足。" +msgstr "雷射槍塔上的 LED 閃燈顯示光源不足。" #: src/iuse_actor.cpp #, c-format msgid "You should wear the %s before activating it." -msgstr "你應該要先把 %s 穿戴上再啟動。" +msgstr "你應該先穿戴 %s 再來啟動它。" #: src/iuse_actor.cpp #, c-format @@ -127496,7 +130596,7 @@ msgstr "一陣輕響後, 門的鎖被撬開了。" #: src/iuse_actor.cpp msgid "The door swings open..." -msgstr "門緩緩的開啟..." +msgstr "門緩緩的開啟…" #: src/iuse_actor.cpp msgid "That door isn't locked." @@ -127524,7 +130624,7 @@ msgstr "部署到哪?" #: src/iuse_actor.cpp msgid "You attempt to become one with the furniture. It doesn't work." -msgstr "你試圖與傢俱合為一體。那不管用。" +msgstr "你試圖與家具合為一體。那不管用。" #: src/iuse_actor.cpp #, c-format @@ -127533,7 +130633,7 @@ msgstr "你無法部署 %s 在那裡。" #: src/iuse_actor.cpp msgid "There is already furniture at that location." -msgstr "那裡已經有傢俱了。" +msgstr "那裡已經有家具了。" #: src/iuse_actor.cpp #, c-format @@ -127543,7 +130643,7 @@ msgstr "這張 %s 沒有任何新地點。" #: src/iuse_actor.cpp #, c-format msgid "You should read your %s when you get to the surface." -msgstr "當你到達地面的時候你應該要查看一下 %s 。" +msgstr "當你到達地面的時候你應該要檢視一下 %s。" #: src/iuse_actor.cpp msgid "Light where?" @@ -127634,11 +130734,11 @@ msgstr "%s 太小而無法從其回收任何材料。" #: src/iuse_actor.cpp msgid "You are wielding that, are you sure?" -msgstr "你正拿著它。確定要這樣做嗎?" +msgstr "你正拿著它。你確定要這樣做嗎?" #: src/iuse_actor.cpp msgid "You're wearing that, are you sure?" -msgstr "你正穿著它呢, 你確定要這樣做?" +msgstr "你正穿著它。你確定要這樣做嗎?" #: src/iuse_actor.cpp #, c-format @@ -127663,12 +130763,12 @@ msgstr "無法回收 %s。" #: src/iuse_actor.cpp msgid "You can't inscribe an item that isn't solid!" -msgstr "你不能雕刻非固體的物品!" +msgstr "你不能刻寫非固體的物品!" #: src/iuse_actor.cpp #, c-format msgid "You can't %1$s %2$s because of the material it is made of." -msgstr "因其材質, 你無法 %1$s %2$s 。" +msgstr "因其材質, 你無法 %1$s %2$s。" #: src/iuse_actor.cpp #, c-format @@ -127685,7 +130785,7 @@ msgstr "那是一個備註" #: src/iuse_actor.cpp msgid "(To delete, input one '.')\n" -msgstr "(要刪掉, 輸入一個 '.')\n" +msgstr "(輸入 . 以刪除)\n" #: src/iuse_actor.cpp #, c-format @@ -127725,7 +130825,7 @@ msgstr "有點癢。" msgid "" "You need a source of flame (4 charges worth) before you can cauterize " "yourself." -msgstr "你需要火源 (4 單位能量), 才能燒灼你自己的傷口。" +msgstr "你需要一個火源 (4 電量) 才能燒灼你自己的傷口。" #: src/iuse_actor.cpp #, c-format @@ -127734,7 +130834,7 @@ msgstr "你需要至少 %d 電量才能燒灼傷口。" #: src/iuse_actor.cpp msgid "No suitable corpses" -msgstr "無合適屍體" +msgstr "沒有適合的屍體" #: src/iuse_actor.cpp msgid "" @@ -127762,7 +130862,7 @@ msgstr "殘害並奴役某人的屍體讓你感覺糟透了。" #: src/iuse_actor.cpp #, c-format msgid "You need at least %s 1." -msgstr "你需要至少 %s 1." +msgstr "你需要至少 %s 1 級。" #: src/iuse_actor.cpp msgid "You can't play music underwater" @@ -127770,7 +130870,7 @@ msgstr "你無法在水下演奏音樂。" #: src/iuse_actor.cpp msgid " can't play music underwater" -msgstr " 無法在水下演奏音樂。" +msgstr "無法在水下演奏音樂。" #: src/iuse_actor.cpp #, c-format @@ -127780,7 +130880,7 @@ msgstr "你停止演奏你的 %s " #: src/iuse_actor.cpp #, c-format msgid " stops playing their %s" -msgstr " 停止演奏 %s" +msgstr "停止演奏 %s" #: src/iuse_actor.cpp #, c-format @@ -127800,7 +130900,7 @@ msgstr "你覺得太虛弱無法演奏你的 %s" #: src/iuse_actor.cpp #, c-format msgid " feels too weak to play their %s" -msgstr " 感到太虛弱以至於無法演奏 %s" +msgstr "感到太虛弱以至於無法演奏 %s" #: src/iuse_actor.cpp #, c-format @@ -127810,7 +130910,7 @@ msgstr "你開始演奏你的 %s" #: src/iuse_actor.cpp #, c-format msgid " starts playing their %s" -msgstr " 開始演奏 %s" +msgstr "開始演奏 %s" #: src/iuse_actor.cpp #, c-format @@ -127854,12 +130954,12 @@ msgstr "你無法把 %1$s 放到 %2$s 裡。" #: src/iuse_actor.cpp #, c-format msgid "You holster your %s" -msgstr "你把 %s 收到槍套。" +msgstr "你把你的 %s 收到槍套。" #: src/iuse_actor.cpp #, c-format msgid "You need to unwield your %s before using it." -msgstr "你必須在非手持 %s 的狀態下才能使用。" +msgstr "你必須在非手持 %s 的狀態下才能使用它。" #: src/iuse_actor.cpp #, c-format @@ -127935,7 +131035,7 @@ msgstr "沒有足夠的 %s 來組裝 %s" #: src/iuse_actor.cpp msgid "You can't see to do that!" -msgstr "太暗了, 你不能這樣做!" +msgstr "你無法在看不清楚時那麼做!" #: src/iuse_actor.cpp msgid "Your tool does not have enough charges to do that." @@ -127948,7 +131048,7 @@ msgstr "修理什麼?" #: src/iuse_actor.cpp #, c-format msgid "You have no items that could be repaired with a %s." -msgstr "你沒有可用來修理 %s 的物品。" +msgstr "你沒有可以用 %s 來修理的物品。" #: src/iuse_actor.cpp #, c-format @@ -127967,15 +131067,15 @@ msgstr "你沒有足夠的 %s。現有: %d, 需要: %d。" #: src/iuse_actor.cpp msgid "That requires gunsmithing tools." -msgstr "需要槍匠維修工具。" +msgstr "需要槍匠修理工具。" #: src/iuse_actor.cpp msgid "You cannot repair this type of item." -msgstr "你無法維修這類的物品。" +msgstr "你無法修理這類的物品。" #: src/iuse_actor.cpp msgid "This can be used to repair other items, not itself." -msgstr "這東西能用來維修其他物品, 而非本身。" +msgstr "這東西只能用來修理其他物品, 而不是它自己。" #: src/iuse_actor.cpp #, c-format @@ -128153,7 +131253,7 @@ msgstr "* 感染:" #: src/iuse_actor.cpp msgid "Moves to use:" -msgstr "使用所需行動點:" +msgstr "使用所需行動點數:" #: src/iuse_actor.cpp #, c-format @@ -128243,7 +131343,7 @@ msgstr "沒有被改造" #: src/iuse_actor.cpp msgid "None of the mods can be removed." -msgstr "沒有可移除的模組" +msgstr "沒有可以移除的模組。" #: src/iuse_actor.cpp msgid "Has to be taken off first." @@ -128252,12 +131352,12 @@ msgstr "必須先取下。" #: src/iuse_actor.cpp msgctxt "memorial_male" msgid "Consumed mutagen." -msgstr "已服下誘變劑。" +msgstr "服用了誘變劑。" #: src/iuse_actor.cpp msgctxt "memorial_female" msgid "Consumed mutagen." -msgstr "已服下誘變劑。" +msgstr "服用了誘變劑。" #: src/iuse_actor.cpp msgid "You suddenly feel dizzy, and collapse to the ground." @@ -128329,7 +131429,7 @@ msgstr "一個空的購物袋。是紙製的還是塑膠製的?" #: src/iuse_software_kitten.cpp msgid "Could it be... a big ugly bowling trophy?" -msgstr "莫非是......一個又大又醜的保齡球獎杯?" +msgstr "莫非是… 一個又大又醜的保齡球獎杯?" #: src/iuse_software_kitten.cpp msgid "A coat hanger hovers in thin air. Odd." @@ -128349,52 +131449,52 @@ msgstr "一個被遺忘的寂寞逗號, 坐在這裡, 哭泣。" #: src/iuse_software_kitten.cpp msgid "ONE HUNDRED THOUSAND CARPET FIBERS!" -msgstr "" +msgstr "10 萬根地毯纖維!" #: src/iuse_software_kitten.cpp msgid "It's Richard Nixon's nose!" -msgstr "是理查·尼克森的鼻子!" +msgstr "這是理查·尼克森的鼻子!" #: src/iuse_software_kitten.cpp msgid "It's Lucy Ricardo. \"Aaaah, Ricky!\", she says." -msgstr "這是露西.里卡多。\"啊啊, 瑞奇! \", 她這麼說。" +msgstr "這是露西·里卡多。\"啊啊, 瑞奇! \", 她這麼說。" #: src/iuse_software_kitten.cpp msgid "You stumble upon Bill Gates' stand-up act." -msgstr "你偶然撞見比爾.蓋茨站立的動作。" +msgstr "你偶然撞見比爾·蓋茨站立的動作。" #: src/iuse_software_kitten.cpp msgid "Just an autographed copy of the Kama Sutra." -msgstr "只是一本簽名版的欲經。" +msgstr "只是一本簽名版的慾經。" #: src/iuse_software_kitten.cpp msgid "It's the Will Rogers Highway. Who was Will Rogers, anyway?" -msgstr "這是威爾·羅傑斯公路。反正, 誰是威爾·羅傑斯?" +msgstr "這是威爾·羅傑斯公路。無論如何, 誰是威爾·羅傑斯?" #: src/iuse_software_kitten.cpp msgid "" "It's another robot, more advanced in design than you but strangely immobile." -msgstr "這是另一個機器人, 有比你先進的設計但是奇怪的是不會動。" +msgstr "這是另一個機器人, 有著比你先進的設計, 但奇怪的是它不會動。" #: src/iuse_software_kitten.cpp msgid "Leonard Richardson is here, asking people to lick him." -msgstr "倫納德.理查森在這, 要人們舔他。" +msgstr "倫納德·理查森在這, 要人們舔他。" #: src/iuse_software_kitten.cpp msgid "It's a stupid mask, fashioned after a beagle." -msgstr "這是個愚蠢的面具, 過時的獵犬造型。" +msgstr "這是個愚蠢的面具, 過時的小獵犬造型。" #: src/iuse_software_kitten.cpp msgid "Your State Farm Insurance(tm) representative!" -msgstr "您國家農場保險公司的代表!" +msgstr "您的國家農場保險公司的代表!" #: src/iuse_software_kitten.cpp msgid "It's the local draft board." -msgstr "是個本地比賽的看板。" +msgstr "這是個本地選秀的看板。" #: src/iuse_software_kitten.cpp msgid "Seven 1/4\" screws and a piece of plastic." -msgstr "一個螺絲釘與塑膠塊。" +msgstr "7 個 1/4 吋螺絲釘與一塊塑膠。" #: src/iuse_software_kitten.cpp msgid "An 80286 machine." @@ -128414,15 +131514,15 @@ msgstr "一個吊床繫在一棵樹和排球杆之間。" #: src/iuse_software_kitten.cpp msgid "A Texas Instruments of Destruction calculator." -msgstr "一個德州儀器的毀滅計數器。" +msgstr "一個德州毀滅儀器的計數器。" #: src/iuse_software_kitten.cpp msgid "It's a dark, amorphous blob of matter." -msgstr "一個黑暗, 無定形的球體。" +msgstr "一團黑暗、不定形的物質。" #: src/iuse_software_kitten.cpp msgid "Just a pincushion." -msgstr "一個針包。" +msgstr "一個針墊。" #: src/iuse_software_kitten.cpp msgid "It's a mighty zombie talking about some love and prosperity." @@ -128430,11 +131530,11 @@ msgstr "一個正在談論愛與繁榮的強大殭屍。" #: src/iuse_software_kitten.cpp msgid "\"Dear robot, you may have already won our 10 MILLION DOLLAR prize...\"" -msgstr "\"親愛的機器人, 你可能已經贏得了1000萬美元的獎金...\"" +msgstr "\"親愛的機器人, 你可能已經贏得了 1000 萬美元的獎金… \"" #: src/iuse_software_kitten.cpp msgid "It's just an object." -msgstr "只是個物體。" +msgstr "這只是個物體。" #: src/iuse_software_kitten.cpp msgid "A mere collection of pixels." @@ -128442,7 +131542,7 @@ msgstr "一個像素的集合。" #: src/iuse_software_kitten.cpp msgid "A badly dented high-hat cymbal lies on its side here." -msgstr "一個深深凹陷的銅鈸在這裡。" +msgstr "一個嚴重凹陷的銅鈸在這裡。" #: src/iuse_software_kitten.cpp msgid "A marijuana brownie." @@ -128450,7 +131550,7 @@ msgstr "一個大麻布朗尼。" #: src/iuse_software_kitten.cpp msgid "A plush Chewbacca." -msgstr "一個楚巴卡填充玩偶。" +msgstr "一個楚巴卡絨布玩偶。" #: src/iuse_software_kitten.cpp msgid "Daily hunger conditioner from Australasia" @@ -128458,11 +131558,11 @@ msgstr "來自澳大拉西亞的每日飢餓調節器" #: src/iuse_software_kitten.cpp msgid "Just some stuff." -msgstr "就只是一些雜物。" +msgstr "只是一些雜物。" #: src/iuse_software_kitten.cpp msgid "Why are you touching this when you should be finding kitten?" -msgstr "你應該是要去找小貓, 為什麼要碰這個?" +msgstr "你應該要去找小貓, 為什麼要碰這個?" #: src/iuse_software_kitten.cpp msgid "A glorious fan of peacock feathers." @@ -128486,27 +131586,27 @@ msgstr "一張 \"免坐牢\" 卡。" #: src/iuse_software_kitten.cpp msgid "An incredibly expensive \"Mad About You\" collector plate." -msgstr "這是一種非常昂貴的 \"你瘋了\" 收集板。" +msgstr "這是一塊非常昂貴的 \"我為卿狂\" 收藏板。" #: src/iuse_software_kitten.cpp msgid "Paul Moyer's necktie." -msgstr "保羅.莫耶的領帶。" +msgstr "保羅·莫耶的領帶。" #: src/iuse_software_kitten.cpp msgid "A haircut and a real job. Now you know where to get one!" -msgstr "剪個頭髮找個正當工作。現在你知道在哪了!" +msgstr "剪個頭髮找個正當工作。現在你知道去哪找一個了!" #: src/iuse_software_kitten.cpp msgid "An automated robot-hater. It frowns disapprovingly at you." -msgstr "一台機器人自動討厭裝置。它皺眉且對你不以為然。" +msgstr "一台自動機器人討厭裝置。它不以為然地對你皺著眉頭。" #: src/iuse_software_kitten.cpp msgid "An automated robot-liker. It smiles at you." -msgstr "一台機器人自動喜歡裝置。它向你微笑。" +msgstr "一台自動機器人喜歡裝置。它對著你微笑。" #: src/iuse_software_kitten.cpp msgid "It's a black hole. Don't fall in!" -msgstr "這是黑洞。別掉下去!" +msgstr "這是一個黑洞。別掉下去!" #: src/iuse_software_kitten.cpp msgid "Just a big brick wall." @@ -128518,11 +131618,11 @@ msgstr "你找到小貓了! 哦不, 開個玩笑而已。" #: src/iuse_software_kitten.cpp msgid "Heart of Darkness brand pistachio nuts." -msgstr "黑心牌的開心果。" +msgstr "黑心牌開心果。" #: src/iuse_software_kitten.cpp msgid "A smoking branding iron shaped like a 24-pin connector." -msgstr "形狀像 24 針連接器的點煙鐵。" +msgstr "一個形狀像 24 針連接器的點煙鐵。" #: src/iuse_software_kitten.cpp msgid "It's a Java applet." @@ -128530,7 +131630,7 @@ msgstr "這是一個 Java 程式。" #: src/iuse_software_kitten.cpp msgid "An abandoned used-car lot." -msgstr "一個報廢二手車。" +msgstr "一台報廢的二手車。" #: src/iuse_software_kitten.cpp msgid "A shameless plug for Crummy: http://www.crummy.com/" @@ -128555,7 +131655,7 @@ msgstr "這是 \"等待果陀\" 的舞臺佈景" #: src/iuse_software_kitten.cpp msgid "This grain elevator towers high above you." -msgstr "這個穀物倉庫塔高高在上。" +msgstr "這個穀物升降機聳立在你的上方。" #: src/iuse_software_kitten.cpp msgid "A Mentos wrapper." @@ -128583,19 +131683,19 @@ msgstr "有架直升機曾在這裡墜毀。" #: src/iuse_software_kitten.cpp msgid "Carlos Tarango stands here, doing his best impression of Pat Smear." -msgstr "Carlos Tarango 站在這裡, 演著他最拿手的 Pat Smear 角色。" +msgstr "卡洛斯·塔蘭戈站在這裡, 演著他最拿手的帕特·斯密爾。" #: src/iuse_software_kitten.cpp msgid "A patch of mushrooms grows here." -msgstr "這裡長了一片蘑菇園。" +msgstr "這裡長了一片蘑菇。" #: src/iuse_software_kitten.cpp msgid "A patch of grape jelly grows here." -msgstr "這裡長了一片葡萄凍。" +msgstr "這裡長了一片葡萄果凍。" #: src/iuse_software_kitten.cpp msgid "A spindle, and a grindle, and a bucka-wacka-woom!" -msgstr "一個紡錘, 一條弓鰭魚, 以及...哇啊啊啊蟲啊!" +msgstr "一個紡錘, 一條弓鰭魚, 以及… 哇啊啊啊蟲啊!" #: src/iuse_software_kitten.cpp msgid "A geyser sprays water high into the air." @@ -128615,7 +131715,7 @@ msgstr "一個奶油酥條。" #: src/iuse_software_kitten.cpp msgid "One of the few remaining discoes." -msgstr "一家僅存不多的迪斯可舞廳。" +msgstr "僅存不多的迪斯可舞廳的其中一間。" #: src/iuse_software_kitten.cpp msgid "Ah, the uniform of a Revolutionary-era minuteman." @@ -128623,11 +131723,11 @@ msgstr "啊, 一件革命時代的民兵制服。" #: src/iuse_software_kitten.cpp msgid "A punch bowl, filled with punch and lemon slices." -msgstr "這是一碗潘趣酒, 裝滿了潘趣雞尾酒和檸檬片。" +msgstr "一個潘趣碗, 裝滿了潘趣雞尾酒和檸檬片。" #: src/iuse_software_kitten.cpp msgid "It's nothing but a G-thang, baby." -msgstr "幫派就是我們心中的唯一, baby。" +msgstr "幫派就是我們心中的唯一, 寶貝。" #: src/iuse_software_kitten.cpp msgid "IT'S ALIVE! AH HA HA HA HA!" @@ -128652,11 +131752,11 @@ msgstr "這是永遠不會動的機器。" #: src/iuse_software_kitten.cpp msgid "\"On this spot in 1962, Henry Winkler was sick.\"" -msgstr "\"在1962年時, 亨利·溫克勒在這裡生病了。\"" +msgstr "\"在 1962 年時, 亨利·溫克勒在這裡生病了。\"" #: src/iuse_software_kitten.cpp msgid "There's nothing here; it's just an optical illusion." -msgstr "這裡什麼都沒有;只是錯覺。" +msgstr "這裡什麼都沒有, 這只是一種視錯覺。" #: src/iuse_software_kitten.cpp msgid "The World's Biggest Motzah Ball!" @@ -128666,7 +131766,7 @@ msgstr "世界上最大的麵包球!" msgid "" "A tribe of cannibals lives here. They eat Malt-O-Meal for breakfast, you " "know." -msgstr "有個食人族的部落住在這裡。他們都吃薏仁~之類~的當早餐, 你懂的。" +msgstr "有個食人族的部落住在這裡。他們都吃薏仁 *之類* 的當早餐, 你懂的。" #: src/iuse_software_kitten.cpp msgid "This appears to be a rather large stack of trashy romance novels." @@ -128678,7 +131778,7 @@ msgstr "小心! 驚嘆號!" #: src/iuse_software_kitten.cpp msgid "A herd of wild coffee mugs slumbers here." -msgstr "一群野生放牧的咖啡杯在這裡沈睡。" +msgstr "一群野生的咖啡杯在這裡小睡。" #: src/iuse_software_kitten.cpp msgid "It's a limbo bar! How low can you go?" @@ -128702,7 +131802,7 @@ msgstr "一對沙龍造型的門在這開開關關。" #: src/iuse_software_kitten.cpp msgid "It's an ordinary bust of Beethoven... but why is it painted green?" -msgstr "這是一個普通的貝多芬半身像......但為什麼是塗成綠色的?" +msgstr "這是一個普通的貝多芬半身像… 但為什麼是塗成綠色的?" #: src/iuse_software_kitten.cpp msgid "It's TV's lovable wisecracking Crow! \"Bite me!\", he says." @@ -128715,11 +131815,11 @@ msgstr "嘿, 看啊, 是戰爭。有什麼好處呢? 完全沒有。再說一次 #: src/iuse_software_kitten.cpp msgid "It's the amazing self-referential thing that's not kitten." -msgstr "是一個會自我參照的奇異東西, 但不是小貓。" +msgstr "這是一個會自我參照的奇異東西, 但不是小貓。" #: src/iuse_software_kitten.cpp msgid "A flamboyant feather boa. Now you can dress up like Carol Channing!" -msgstr "一個華麗的羽毛。你現在可以打扮的像卡蘿.錢寧了!" +msgstr "一個華麗的羽毛。你現在可以打扮的像卡蘿·錢寧了!" #: src/iuse_software_kitten.cpp msgid "\"Sure hope we get some rain soon,\" says Farmer Joe." @@ -128729,25 +131829,25 @@ msgstr "\"希望很快就能下點雨了, \"農夫喬說道。" msgid "" "\"How in heck can I wash my neck if it ain't gonna rain no more?\" asks " "Farmer Al." -msgstr "\"要是雨繼續下的話, 我要怎麼洗脖子? \"農夫AI這麼問。" +msgstr "\"要是雨再也不下了, 我他媽要怎麼清洗脖子? \" 農夫阿爾問道。" #: src/iuse_software_kitten.cpp msgid "\"Topsoil's all gone, ma,\" weeps Lil' Greg." -msgstr "\"表土全沒了, 媽\", Lil' Greg哭道。" +msgstr "\"表土全沒了, 媽\", 利爾·格雷格哭道。" #: src/iuse_software_kitten.cpp msgid "" "This is a large brown bear. Oddly enough, it's currently peeing in the " "woods." -msgstr "這是一支大棕熊。奇怪的是, 他正在樹林裡噓噓。" +msgstr "這是一隻大棕熊。奇怪的是, 他正在樹林裡噓噓。" #: src/iuse_software_kitten.cpp msgid "A team of arctic explorers is camped here." -msgstr "一隊北極探險家在這裡駐留。" +msgstr "一隊北極探險家在這裡紮營。" #: src/iuse_software_kitten.cpp msgid "This object here appears to be Louis Farrakhan's bow tie." -msgstr "這東西是路易斯·法拉堪的領結。" +msgstr "這個物體是路易斯·法拉堪的領結。" #: src/iuse_software_kitten.cpp msgid "This is the world-famous Chain of Jockstraps." @@ -128763,21 +131863,21 @@ msgstr "這個烤奶酪卷有好多彈孔!" #: src/iuse_software_kitten.cpp msgid "It's a hologram of a crashed helicopter." -msgstr "這是墜毀直升機的全像圖。" +msgstr "這是一架墜毀直升機的全像投影。" #: src/iuse_software_kitten.cpp msgid "" "This is a television. On screen you see a robot strangely similar to " "yourself." -msgstr "這是電視。在螢幕上你看到長得很像自己的奇怪機器人。" +msgstr "這是一台電視。奇怪的是你在螢幕上看到一個長得很像自己的機器人。" #: src/iuse_software_kitten.cpp msgid "This balogna has a first name, it's R-A-N-C-I-D." -msgstr "這個火腿有名字, 是、惡、臭。" +msgstr "這個火腿有名字, 叫做 \"臭肉\"。" #: src/iuse_software_kitten.cpp msgid "A salmon hatchery? Look again. It's merely a single salmon." -msgstr "鮭魚孵化? 再看看。只是一支鮭魚。" +msgstr "鮭魚孵化場? 再看一遍, 那只是一條鮭魚。" #: src/iuse_software_kitten.cpp msgid "It's a rim shot. Ba-da-boom!" @@ -128786,7 +131886,7 @@ msgstr "這是鼓。叭-搭-碰!" #: src/iuse_software_kitten.cpp msgid "" "It's creepy and it's kooky, mysterious and spooky. It's also somewhat ooky." -msgstr "這是毛骨悚然, 這是古怪, 神秘和怪異。這裡也有一些詭異。" +msgstr "它是怪異, 它是瘋狂、神秘、和毛骨悚然。它還有一些愚蠢。" #: src/iuse_software_kitten.cpp msgid "This is an anagram." @@ -128794,11 +131894,11 @@ msgstr "這是猜字謎。" #: src/iuse_software_kitten.cpp msgid "This object is like an analogy." -msgstr "這東西像是類比。" +msgstr "這個物體像是一個比喻。" #: src/iuse_software_kitten.cpp msgid "It's a symbol. You see in it a model for all symbols everywhere." -msgstr "這是個符號。你看到所有符號的共通典範。" +msgstr "這是個符號。你在其中看到所有符號的共通典範。" #: src/iuse_software_kitten.cpp msgid "The object pushes back at you." @@ -128806,13 +131906,13 @@ msgstr "這物體把你往後推。" #: src/iuse_software_kitten.cpp msgid "A traffic signal. It appears to have been recently vandalized." -msgstr "一個交通號誌。似乎已經被破壞了。" +msgstr "一個交通號誌。它似乎在最近被破壞了。" #: src/iuse_software_kitten.cpp msgid "" "\"There is no kitten!\" cackles the old crone. You are shocked by her " "blasphemy." -msgstr "\"根本沒有小貓! \", 老太婆高聲大笑的說。你被她嚇到了。" +msgstr "\"根本沒有小貓! \", 老太婆高聲笑道。你對她的褻瀆感到震驚。" #: src/iuse_software_kitten.cpp msgid "This is a Lagrange point. Don't come too close now." @@ -128820,11 +131920,11 @@ msgstr "這是一個拉格朗日點。不要靠太近了。" #: src/iuse_software_kitten.cpp msgid "The dirty old tramp bemoans the loss of his harmonica." -msgstr "這骯髒的老流浪漢哀嘆著他的口琴遺失了。" +msgstr "這個骯髒的老流浪漢哀嘆著他的口琴遺失了。" #: src/iuse_software_kitten.cpp msgid "Look, it's Fanny the Irishman!" -msgstr "你看, 這是來自愛爾蘭的芬妮!" +msgstr "看, 這是來自愛爾蘭的芬妮!" #: src/iuse_software_kitten.cpp msgid "What in blazes is this?" @@ -128844,7 +131944,7 @@ msgstr "茶或鬆餅。" #: src/iuse_software_kitten.cpp msgid "This jukebox has nothing but Cliff Richards albums in it." -msgstr "這個點唱機裡面只有克里夫.李察的專輯。" +msgstr "這個點唱機裡面只有克里夫·李察的專輯。" #: src/iuse_software_kitten.cpp msgid "It's a Quaker Oatmeal tube, converted into a drum." @@ -128872,15 +131972,15 @@ msgstr "什麼都沒有。" #: src/iuse_software_kitten.cpp msgid "Look at that, it's the Crudmobile." -msgstr "你看看, 是經典老車。" +msgstr "你看看, 這是款經典老車。" #: src/iuse_software_kitten.cpp msgid "Just Walter Mattheau and Jack Lemmon." -msgstr "華特.馬修與傑克.李蒙。" +msgstr "華特·馬修與傑克·李蒙。" #: src/iuse_software_kitten.cpp msgid "Two crepes, two crepes in a box." -msgstr "放在一個盒子裡的兩塊可麗餅。" +msgstr "兩塊可麗餅, 兩塊盒子裡的可麗餅。" #: src/iuse_software_kitten.cpp msgid "An autographed copy of \"Primary Colors\", by Anonymous." @@ -128892,7 +131992,7 @@ msgstr "又一隻兔子? 這是今天第三隻了!" #: src/iuse_software_kitten.cpp msgid "It's a segmentation fault. Core dumped, by the way." -msgstr "這是一個分段錯誤。記憶體也溢出了。" +msgstr "這是一個區段錯誤。附帶一提, 記憶體溢出了。" #: src/iuse_software_kitten.cpp msgid "A historical marker showing the actual location of /dev/null." @@ -128900,23 +132000,23 @@ msgstr "一個歷史性的註記, 顯示了 /dev/null 的真實路徑。" #: src/iuse_software_kitten.cpp msgid "Thar's Mobius Dick, the convoluted whale. Arrr!" -msgstr "這是莫比烏斯迪克, 令人猜不透的鯨魚。吼!" +msgstr "這是莫比烏斯·迪克, 令人猜不透的鯨魚。吼!" #: src/iuse_software_kitten.cpp msgid "It's a charcoal briquette, smoking away." -msgstr "這是木炭塊, 正在冒煙。" +msgstr "這是一塊木炭, 正在冒煙。" #: src/iuse_software_kitten.cpp msgid "A pizza, melting in the sun." -msgstr "一個披薩, 在太陽下融化。" +msgstr "一個披薩, 正在太陽下融化。" #: src/iuse_software_kitten.cpp msgid "It's a \"HOME ALONE 2: Lost in New York\" novelty cup." -msgstr "這是 \"小鬼當家2\" 的造型茶杯。" +msgstr "這是 \"小鬼當家2: 紐約迷途記\" 的造型茶杯。" #: src/iuse_software_kitten.cpp msgid "A stack of 7 inch floppies wobbles precariously." -msgstr "一疊搖搖晃晃的7吋軟碟。" +msgstr "一疊搖搖晃晃的 7 吋軟碟。" #: src/iuse_software_kitten.cpp msgid "It's nothing but a corrupted floppy. Coaster anyone?" @@ -128928,11 +132028,11 @@ msgstr "一段發光的細胞正唱著輻射之歌給你聽。" #: src/iuse_software_kitten.cpp msgid "This TRS-80 III is eerily silent." -msgstr "這 TRS-80 III 詭異的沉默。" +msgstr "這台 TRS-80 III 詭異的沉默。" #: src/iuse_software_kitten.cpp msgid "A toilet bowl occupies this space." -msgstr "這裡就一個馬桶。" +msgstr "一個馬桶佔據了這個空間。" #: src/iuse_software_kitten.cpp msgid "This peg-leg is stuck in a knothole!" @@ -128940,7 +132040,7 @@ msgstr "這隻豬腿卡在洞裡!" #: src/iuse_software_kitten.cpp msgid "It's a solitary vacuum tube." -msgstr "這是孤獨的真空管。" +msgstr "這是一個孤零零的真空管。" #: src/iuse_software_kitten.cpp msgid "This corroded robot is clutching a mitten." @@ -128948,19 +132048,19 @@ msgstr "這個鏽蝕的機器人緊抓著一隻手套。" #: src/iuse_software_kitten.cpp msgid "\"Hi, I'm Anson Williams, TV's 'Potsy'.\"" -msgstr "\"嗨, 我是安森威廉斯, 電視上演的'波西'。\"" +msgstr "\"嗨, 我是安森·威廉斯, 電視上演的 '波西'。\"" #: src/iuse_software_kitten.cpp msgid "This subwoofer was blown out in 1974." -msgstr "這個重低音揚聲器在1974年被做出來的。" +msgstr "這個重低音喇叭是在 1974 年被做出來的。" #: src/iuse_software_kitten.cpp msgid "Three half-pennies and a wooden nickel." -msgstr "三個只有一半的便士幣和木製的鎳幣。" +msgstr "三個只有一半的一分錢和一個木製的五分錢。" #: src/iuse_software_kitten.cpp msgid "It's the missing chapter to \"A Clockwork Orange\"." -msgstr "這是少了最後一章的 \"發條橘子\"。" +msgstr "這是 \"發條橘子\" 缺少的那一章。" #: src/iuse_software_kitten.cpp msgid "It's a burrito stand flyer. \"Taqueria El Ranchito\"." @@ -128968,19 +132068,19 @@ msgstr "這是個卷餅的立牌。上面寫著 \"Taqueria El Ranchito\"。" #: src/iuse_software_kitten.cpp msgid "This smiling family is happy because they eat LARD." -msgstr "這微笑的家庭是幸福的, 因為他們吃豬油。" +msgstr "這個微笑的家庭是幸福的, 因為他們吃豬油。" #: src/iuse_software_kitten.cpp msgid "Roger Avery, persona un famoso de los Estados Unidos." -msgstr "羅傑.艾弗里, 一個美國的名人。" +msgstr "羅傑·艾弗里, 一個美國的名人。" #: src/iuse_software_kitten.cpp msgid "Ne'er but a potted plant." -msgstr "絕對不要買一盆花。" +msgstr "不過是個盆栽植物。" #: src/iuse_software_kitten.cpp msgid "A parrot, kipping on its back." -msgstr "一支鸚鵡, 有猴子在他背上。" +msgstr "一隻鸚鵡, 有猴子在他背上。" #: src/iuse_software_kitten.cpp msgid "A forgotten telephone switchboard." @@ -128992,39 +132092,39 @@ msgstr "一位過時的電話交換機接線生。" #: src/iuse_software_kitten.cpp msgid "It's an automated robot-disdainer. It pretends you're not there." -msgstr "一台機器人自動放空裝置。他假裝你不在那。" +msgstr "一台自動機器人蔑視裝置。他假裝你不在那。" #: src/iuse_software_kitten.cpp msgid "It's a portable hole. A sign reads: \"Closed for the winter\"." -msgstr "這是攜帶式的洞。有牌子寫著: \"因過冬而關閉\"。" +msgstr "這是一個攜帶式的洞。有牌子寫著: \"因過冬而關閉\"。" #: src/iuse_software_kitten.cpp msgid "Just a moldy loaf of bread." -msgstr "只是一個發了霉的麵包。" +msgstr "只是一塊發霉的麵包。" #: src/iuse_software_kitten.cpp msgid "A little glass tub of Carmex. ($.89) Too bad you have no lips." -msgstr "一個玻璃管裝的護唇膏。可惜你沒有嘴唇。" +msgstr "一管小玻璃瓶裝的護唇膏。可惜你沒有嘴唇。" #: src/iuse_software_kitten.cpp msgid "A Swiss-Army knife. All of its appendages are out. (toothpick lost)" -msgstr "這是一把萬用瑞士刀。目前工具是全開狀態。(牙籤不見了)" +msgstr "一把萬用瑞士刀。目前是工具全開狀態。(牙籤不見了)" #: src/iuse_software_kitten.cpp msgid "It's a zen simulation, trapped within an ASCII character." -msgstr "這是一份禪宗的模擬研究, 使用ASCII電腦編碼來進行統整的資料。" +msgstr "這是一份禪宗的模擬, 被困在一個 ASCII 字符裡。" #: src/iuse_software_kitten.cpp msgid "It's a copy of \"The Rubaiyat of Spike Schudy\"." -msgstr "這一份拷貝的波斯詩集 \"Spike Schudy 的魯拜集\"。" +msgstr "這是一份 \"Spike Schudy 的魯拜集\" 的複本。" #: src/iuse_software_kitten.cpp msgid "It's \"War and Peace\" (unabridged, very small print)." -msgstr "這是 \"戰爭與和平\" (完整版, 小字印刷)。" +msgstr "這是一本 \"戰爭與和平\" (完整版, 小字印刷)。" #: src/iuse_software_kitten.cpp msgid "A willing, ripe tomato bemoans your inability to digest fruit." -msgstr "一個現採的番茄, 可惜你無法消化水果。" +msgstr "一個現採的成熟番茄, 可惜你無法消化水果。" #: src/iuse_software_kitten.cpp msgid "A robot comedian. You feel amused." @@ -129032,11 +132132,11 @@ msgstr "一個搞笑機器人。你覺得真有趣。" #: src/iuse_software_kitten.cpp msgid "It's KITT, the talking car." -msgstr "它是基特, 會說話的汽車。" +msgstr "這是基特, 會說話的汽車。" #: src/iuse_software_kitten.cpp msgid "Here's Pete Peterson. His batteries seem to have long gone dead." -msgstr "這是皮特·彼得森。他的電池似乎早就報銷很久了。" +msgstr "這是皮特·彼得森。他的電池似乎早就報銷了。" #: src/iuse_software_kitten.cpp msgid "\"Blup, blup, blup\", says the mud pot." @@ -129052,7 +132152,7 @@ msgstr "長出來, 分支出來, 這是樹枝。" #: src/iuse_software_kitten.cpp msgid "The boom box cranks out an old Ethel Merman tune." -msgstr "收音機發出艾索爾.摩曼的曲子。" +msgstr "這個收音機放著艾索爾·摩曼的曲子。" #: src/iuse_software_kitten.cpp msgid "It's \"Finding kitten\", published by O'Reilly and Associates." @@ -129064,57 +132164,57 @@ msgstr "南瓜派香料。" #: src/iuse_software_kitten.cpp msgid "It's the Bass-Matic '76! Mmm, that's good bass!" -msgstr "攪拌機 76 號! 嗯, 真是好攪拌器!" +msgstr "這是攪拌機 76 號! 嗯, 真是好攪拌器!" #: src/iuse_software_kitten.cpp msgid "\"Lend us a fiver 'til Thursday\", pleas Andy Capp." -msgstr "\"請借給我們五元, 到星期四就好\", 安迪.卡培如此懇求著。" +msgstr "\"請借給我們五元, 到星期四就好\", 安迪·卡培如此懇求著。" #: src/iuse_software_kitten.cpp msgid "It's a tape of '70s rock. All original hits! All original artists!" -msgstr "這是塊裝著70年代搖滾樂的錄音帶。所有衝擊的源頭! 所有歌手的源頭!" +msgstr "這是塊裝著 70 年代搖滾樂的錄音帶。所有衝擊的源頭! 所有藝術的源頭!" #: src/iuse_software_kitten.cpp msgid "You've found the fabled America Online disk graveyard!" -msgstr "你已經找到了傳說中的[美國線上]的磁碟墳場!" +msgstr "你已經找到了傳說中的 \"美國線上\" 的磁碟墳場!" #: src/iuse_software_kitten.cpp msgid "Empty jewelboxes litter the landscape." -msgstr "一個有襯墊的空珠寶盒。" +msgstr "空珠寶盒在這裡堆得亂七八糟。" #: src/iuse_software_kitten.cpp msgid "It's the astounding meta-object." -msgstr "這是驚人的中繼物件。" +msgstr "這是個驚人的中繼物件。" #: src/iuse_software_kitten.cpp msgid "" "Ed McMahon stands here, lost in thought. Seeing you, he bellows, \"YES " "SIR!\"" -msgstr "Ed McMahon 站在這裡沉思。看到你, 他喊叫, \"YES SIR! \"" +msgstr "艾德·麥馬漢站在這裡沉思。看到你, 他喊叫, \"是的, 長官! \"" #: src/iuse_software_kitten.cpp msgid "...thingy???" -msgstr "...什麼玩意兒???" +msgstr "… 什麼玩意兒???" #: src/iuse_software_kitten.cpp msgid "It's 1000 secrets the government doesn't want you to know!" -msgstr "這是1000件政府不希望你知道的機密!" +msgstr "這是 1000 件政府不希望你知道的機密!" #: src/iuse_software_kitten.cpp msgid "The letters O and R." -msgstr "字母 O 和 R。" +msgstr "這是字母 O 和 R。" #: src/iuse_software_kitten.cpp msgid "A magical... magic thing." -msgstr "一件神奇的...奇事。" +msgstr "一件神奇的… 奇事。" #: src/iuse_software_kitten.cpp msgid "It is SOFTWARE BUG." -msgstr "這是個軟體的臭蟲。" +msgstr "這是一個軟體臭蟲。" #: src/iuse_software_kitten.cpp msgid "robotfindskitten v22July2008 - press q to quit." -msgstr "機器人找貓 v22July2008 - 按下 q 離開。" +msgstr "機器人找貓 v22July2008 - 按 q 離開。" #: src/iuse_software_kitten.cpp msgid "robotfindskitten v22July2008" @@ -129124,7 +132224,7 @@ msgstr "機器人找貓 v22July2008" msgid "" "Originally by the illustrious Leonard Richardson, rewritten in PDCurses by " "Joseph Larson, ported to CDDA gaming system by a nutcase." -msgstr "程式最初由傑出的倫納德.理查森撰寫, 約瑟夫.拉爾森用PDCurses改寫, 由一個瘋子移植到CDDA的遊戲系統。" +msgstr "程式最初由傑出的倫納德·理查森撰寫, 由約瑟夫·拉爾森用 PDCurses 改寫, 由一個瘋子移植到 CDDA 的遊戲系統。" #: src/iuse_software_kitten.cpp msgid "In this game, you are robot (" @@ -129141,14 +132241,16 @@ msgid "" "they are kitten or not. The game ends when robot finds kitten. " "Alternatively, you may end the game by hitting 'q', 'Q' or the Escape key." msgstr "" +"你的任務是找到小貓。由於存在各種不是小貓的東西, 使得這個任務變得複雜。機器人必須觸碰物品才能確定它們是不是小貓。當機器人找到小貓時, 遊戲結束。或者," +" 你可以按 q, Q 或 Esc 來結束遊戲。" #: src/iuse_software_kitten.cpp msgid "Press any key to start." -msgstr "按下任意鍵開始。" +msgstr "請按任意鍵開始。" #: src/iuse_software_kitten.cpp msgid "Invalid command: Use direction keys or press 'q'." -msgstr "無效指令: 使用方向鍵或按 'q'。" +msgstr "無效的指令: 按方向鍵移動或按 q 離開。" #: src/iuse_software_kitten.cpp msgid "You found kitten! Way to go, robot!" @@ -129156,16 +132258,16 @@ msgstr "你找到小貓了! 幹得好, 機器人!" #: src/iuse_software_lightson.cpp msgid " toggle lights" -msgstr " 切換燈光" +msgstr "<空白鍵 或 5> 切換燈光" #: src/iuse_software_lightson.cpp src/iuse_software_sokoban.cpp msgid "eset" -msgstr "重設" +msgstr " 重置" #: src/iuse_software_lightson.cpp src/iuse_software_minesweeper.cpp #: src/iuse_software_snake.cpp src/iuse_software_sokoban.cpp msgid "uit" -msgstr "離開" +msgstr " 離開" #: src/iuse_software_lightson.cpp msgid "Game goal: Switch all the lights on." @@ -129174,14 +132276,16 @@ msgstr "遊戲目標: 打開所有燈光。" #: src/iuse_software_lightson.cpp msgid "Legend: # on, - off." msgstr "" +"圖例: # 開, " +"- 關。" #: src/iuse_software_lightson.cpp msgid "Toggle lights switches selected light and 4 its neighbors." -msgstr "" +msgstr "切換燈光會改變當前與相鄰 4 個格子的燈光狀態。" #: src/iuse_software_lightson.cpp src/iuse_software_minesweeper.cpp msgid "Congratulations, you won!" -msgstr "恭喜你勝出遊戲!" +msgstr "恭喜! 你贏了!" #: src/iuse_software_minesweeper.cpp msgid "Max:" @@ -129213,7 +132317,7 @@ msgstr "關卡高度:" #: src/iuse_software_minesweeper.cpp msgid "Number of bombs:" -msgstr "尚餘炸彈:" +msgstr "炸彈數量:" #: src/iuse_software_minesweeper.cpp msgid "ew level" @@ -129221,7 +132325,7 @@ msgstr " 新關卡" #: src/iuse_software_minesweeper.cpp msgid "lag" -msgstr " 棋標" +msgstr " 旗標" #: src/iuse_software_minesweeper.cpp msgid "Boom, you're dead! Better luck next time." @@ -129239,34 +132343,34 @@ msgstr "總分: %d" #: src/iuse_software_snake.cpp msgid "Press 'q' or ESC to exit." -msgstr "按 'q' 或按 ESC 鍵退出。" +msgstr "按 q 或 Esc 退出。" #: src/iuse_software_sokoban.cpp #, c-format msgid "Level: %d/%d" -msgstr "層級: %d/%d" +msgstr "關卡: %d/%d" #: src/iuse_software_sokoban.cpp #, c-format msgid "Moves: %d" -msgstr "移動數: %d" +msgstr "移動步數: %d" #: src/iuse_software_sokoban.cpp #, c-format msgid "Total moves: %d" -msgstr "總移動數: %d" +msgstr "總移動步數: %d" #: src/iuse_software_sokoban.cpp msgid "<+> next" -msgstr "<+> 下一項" +msgstr "<+> 下個關卡" #: src/iuse_software_sokoban.cpp msgid "<-> prev" -msgstr "<-> 上一項" +msgstr "<-> 上個關卡" #: src/iuse_software_sokoban.cpp msgid "ndo move" -msgstr "還原更改" +msgstr " 取消移動" #. ~ abbreviated direction names and long direction names #: src/line.cpp @@ -129491,19 +132595,19 @@ msgstr "滑鼠檢視" #: src/loading_ui.cpp msgid "Loading" -msgstr "載入中" +msgstr "正在讀取" #: src/lua_console.cpp msgid "This build does not support Lua." -msgstr "此版本不支援 Lua" +msgstr "這個遊戲版本不支援 Lua。" #: src/lua_console.cpp msgid "Welcome to the Lua console! Here you can enter Lua code." -msgstr "歡迎來到 Lua 介面, 你可以在此輸入 Lua 程式碼" +msgstr "歡迎來到 Lua 介面, 你可以在這裡輸入 Lua 程式碼。" #: src/lua_console.cpp msgid "Press [Esc] to close the Lua console." -msgstr "按 [Esc] 關閉 Lua 介面。" +msgstr "按 Esc 來關閉 Lua 介面。" #: src/main.cpp msgid "Really Quit? All unsaved changes will be lost." @@ -129511,12 +132615,12 @@ msgstr "確定離開? 所有未儲存的進度將會消失。" #: src/main_menu.cpp msgid "Bugs? Suggestions? Use links in MOTD to report them." -msgstr "" +msgstr "Bugs? 建議? 請拜訪 \"今日消息\" 頁面裡的網址來回報它們。" #: src/main_menu.cpp #, c-format msgid "Tip of the day: %s" -msgstr "本日的提示: %s" +msgstr "本日提示: %s" #: src/main_menu.cpp #, c-format @@ -129529,11 +132633,11 @@ msgstr "代誌大條 - 烏日到站" #: src/main_menu.cpp msgid "No message today." -msgstr "今天沒有訊息。" +msgstr "沒有找到今日消息。" #: src/main_menu.cpp msgid "No credits information found." -msgstr "沒有找到製作組的資料。" +msgstr "沒有找到製作名單。" #: src/main_menu.cpp msgctxt "Main Menu" @@ -129598,7 +132702,7 @@ msgstr "顯示使用模組" #: src/main_menu.cpp msgctxt "Main Menu|World" msgid "opy World Settings" -msgstr "" +msgstr "複製世界設定" #: src/main_menu.cpp msgctxt "Main Menu|Settings" @@ -129608,7 +132712,7 @@ msgstr "選項" #: src/main_menu.cpp msgctxt "Main Menu|Settings" msgid "Kybindings" -msgstr "按鍵對應" +msgstr "熱鍵設定" #: src/main_menu.cpp msgctxt "Main Menu|Settings" @@ -129635,15 +132739,15 @@ msgstr "無法建立存檔資料夾。請檢查權限。" #: src/main_menu.cpp msgid "Unable to make templates directory. Check permissions." -msgstr "無法新增模版資料夾。請檢查權限。" +msgstr "無法建立模板資料夾。請檢查權限。" #: src/main_menu.cpp msgid "Unable to make sound directory. Check permissions." -msgstr "" +msgstr "無法建立音效資料夾。請檢查權限。" #: src/main_menu.cpp msgid "Really quit?" -msgstr "確定要離開?" +msgstr "確定離開?" #: src/main_menu.cpp msgid "Special games don't work with shared maps." @@ -129657,7 +132761,7 @@ msgstr "自定角色" #: src/main_menu.cpp msgctxt "Main Menu|New Game" msgid "reset Character" -msgstr "模版角色" +msgstr "模板角色" #: src/main_menu.cpp msgctxt "Main Menu|New Game" @@ -129667,29 +132771,29 @@ msgstr "隨機角色" #: src/main_menu.cpp msgctxt "Main Menu|New Game" msgid "Play Now! (ixed Scenario)" -msgstr "馬上玩! (已修改的場景)" +msgstr "馬上玩! (預設劇情)" #: src/main_menu.cpp msgctxt "Main Menu|New Game" msgid "Play ow!" -msgstr "立刻玩!" +msgstr "馬上玩! (隨機劇情)" #: src/main_menu.cpp msgid "No templates found!" -msgstr "沒有模板角色!" +msgstr "沒有找到模板!" #: src/main_menu.cpp msgid "Press 'd' to delete a preset." -msgstr "按 'd' 刪除預置設定。" +msgstr "按 d 刪除模板。" #: src/main_menu.cpp #, c-format msgid "Are you sure you want to delete %s?" -msgstr "確認要刪除 %s?" +msgstr "你確定要刪除 %s 嗎?" #: src/main_menu.cpp msgid "Sorry, something went wrong." -msgstr "抱歉, 某處發生了錯誤。" +msgstr "抱歉, 某處發生錯誤。" #: src/main_menu.cpp msgid "No Worlds found!" @@ -129697,23 +132801,23 @@ msgstr "沒有找到世界!" #: src/main_menu.cpp msgid "This world requires the game to be compiled with Lua." -msgstr "這個世界需要遊戲編譯成支援Lua" +msgstr "這個世界需要編譯成支援 Lua 的遊戲版本。" #: src/main_menu.cpp msgid "No save games found!" -msgstr "沒有遊戲紀錄!" +msgstr "沒有找到遊戲存檔!" #: src/main_menu.cpp msgid "Delete the world and all saves?" -msgstr "是否刪除世界和所有紀錄?" +msgstr "刪除世界與所有存檔?" #: src/main_menu.cpp msgid "Remove all saves and regenerate world?" -msgstr "刪除所有遊戲記錄並重新產生世界?" +msgstr "刪除所有存檔並重新生成世界?" #: src/main_menu.cpp msgid "Only the admin can change worlds." -msgstr "只有管理員能夠更換世界。" +msgstr "只有管理員可以改變世界。" #: src/main_menu.cpp msgid "Create World" @@ -129811,12 +132915,12 @@ msgstr "金屬欄杆融化了!" #: src/map.cpp #, c-format msgid "It should take %d minutes to finish washing items in the %s." -msgstr "應該還需要 %d 分鐘去洗滌 %s 裡的物品。" +msgstr "它需要 %d 分鐘才能完成清洗 %s 裡的物品。" #: src/map.cpp #, c-format msgid "The washing machine in the %s has finished washing." -msgstr "%s 裡的洗衣機已經完成洗滌。" +msgstr "%s 裡的洗衣機已經完成清洗。" #: src/map.cpp msgid "You disarm the trap!" @@ -129847,7 +132951,7 @@ msgstr "危險! 地雷區!" #: src/mapbuffer.cpp #, c-format msgid "Please wait as the map saves [%d/%d]" -msgstr "請等待地圖存檔 [%d/%d]" +msgstr "正在儲存地圖, 請稍候 [%d/%d]" #: src/mapgen.cpp msgid "Sub-prime contact console" @@ -129985,6 +133089,212 @@ msgstr "開啟補給室" msgid "Open Evidence Locker" msgstr "開啟證物保管箱" +#: src/martialarts.cpp +#, c-format +msgid "%s required: " +msgstr "%s需求: " + +#: src/martialarts.cpp +msgid "Skill" +msgid_plural "Skills" +msgstr[0] "技能" + +#: src/martialarts.cpp +msgid "Requires: " +msgstr "前提增益: " + +#: src/martialarts.cpp +msgid "activate" +msgstr "發動" + +#: src/martialarts.cpp +msgid "be used" +msgstr "使用" + +#: src/martialarts.cpp +#, c-format +msgid "* Can %s while armed or unarmed" +msgstr "* 持武空手時可以%s" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while unarmed" +msgstr "* 只有空手時可以%s" + +#: src/martialarts.cpp +#, c-format +msgid "* Can only %s while armed" +msgstr "* 只有持武時可以%s" + +#: src/martialarts.cpp +#, c-format +msgid "Buff technique: %s" +msgstr "名稱: %s" + +#: src/martialarts.cpp +#, c-format +msgid "%s: " +msgstr "%s: " + +#: src/martialarts.cpp +msgid "Bonus" +msgid_plural "Bonus/stack" +msgstr[0] "加成" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stack up to %d times" +msgstr "* 最多能疊加 %d 次" + +#: src/martialarts.cpp +#, c-format +msgid "* Will last for %d %s" +msgstr "* 發動後持續 %d %s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to dodge%s" +msgstr "* 將給予 +%s 閃避加成%s" + +#: src/martialarts.cpp +msgid " for the stack" +msgid_plural " per stack" +msgstr[0] " (每次疊加)" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to dodge%s" +msgstr "* 將給予 %s 閃避懲罰%s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a +%s bonus to block%s" +msgstr "* 將給予 +%s 格擋加成%s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will give a %s penalty to block%s" +msgstr "* 將給予 %s 格擋懲罰%s" + +#: src/martialarts.cpp +msgid "* Attacks will be completely silent" +msgstr "* 攻擊將完全無聲" + +#: src/martialarts.cpp +#, c-format +msgid "Type: %s" +msgstr "類型: %s" + +#: src/martialarts.cpp +msgid "defensive" +msgstr "防禦" + +#: src/martialarts.cpp +msgid "offensive" +msgstr "進攻" + +#: src/martialarts.cpp +msgid "Bonus: " +msgstr "加成: " + +#: src/martialarts.cpp +msgid "* Will only activate on a crit" +msgstr "* 只有爆擊時可以使用" + +#: src/martialarts.cpp +msgid "* Will counterattack when you dodge" +msgstr "* 可以在閃避反擊" + +#: src/martialarts.cpp +msgid "* Will counterattack when you block" +msgstr "* 可以在格擋反擊" + +#: src/martialarts.cpp +msgid "* Will grant free recovery from a miss" +msgstr "* 可以在失誤快速回復" + +#: src/martialarts.cpp +msgid "* Will break a grab" +msgstr "* 使用時掙脫束縛" + +#: src/martialarts.cpp +msgid "* Will attack in a wide arc in front of you" +msgstr "* 將攻擊前方橫排 3 名敵人" + +#: src/martialarts.cpp +msgid "* Will attack adjacent enemies around you" +msgstr "* 將攻擊周圍所有敵人" + +#: src/martialarts.cpp +msgid "" +"* Will attack your target and another one behind " +"it" +msgstr "* 將攻擊前方直線 2 名敵人" + +#: src/martialarts.cpp +#, c-format +msgid "* Will knock back enemies %d %s" +msgstr "* 將目標擊退 %d %s" + +#: src/martialarts.cpp +msgid "tile" +msgid_plural "tiles" +msgstr[0] "格" + +#: src/martialarts.cpp +#, c-format +msgid "* Will down enemies for %d %s" +msgstr "* 將目標擊倒 %d %s" + +#: src/martialarts.cpp +#, c-format +msgid "* Will stun target for %d %s" +msgstr "* 將目標擊暈 %d %s" + +#: src/martialarts.cpp +msgid "* Will disarm the target" +msgstr "* 將目標繳械" + +#: src/martialarts.cpp +msgid "" +"This style forces you to use unarmed strikes, even if wielding a " +"weapon." +msgstr "這個招式會強制你使用徒手攻擊, 即使已經手持武器。" + +#: src/martialarts.cpp +#, c-format +msgid "
%s buffs:
" +msgstr "
%s增益:
" + +#: src/martialarts.cpp +msgid "Passive" +msgstr "被動" + +#: src/martialarts.cpp +msgid "Hit" +msgstr "命中" + +#: src/martialarts.cpp +msgid "Get hit" +msgstr "挨打" + +#: src/martialarts.cpp +#, c-format +msgid "
Technique:
%s " +msgstr "" +"
主動技巧:
\n" +"名稱: %s " + +#: src/martialarts.cpp +msgid "Weapon:" +msgid_plural "Weapons:" +msgstr[0] "可用武器:" + +#: src/martialarts.cpp +#, c-format +msgid " Style: %s " +msgstr " 招式: %s " + #: src/material.cpp msgid "damages" msgstr "損傷的" @@ -129997,27 +133307,27 @@ msgstr "%s 跳開了!" #: src/mattack_actors.cpp src/monattack.cpp #, c-format msgid "The %s lunges at you, but you dodge!" -msgstr "%s 衝向了你, 但你躲開了!" +msgstr "%s 撲向了你, 但是你躲開了!" #: src/mattack_actors.cpp #, c-format msgid "The %1$s bites your %2$s, but fails to penetrate armor!" -msgstr "%1$s 咬到了你的 %2$s, 但是無法穿透護甲!" +msgstr "%1$s 咬到了你的 %2$s, 但是未能穿透護甲!" #: src/mattack_actors.cpp #, c-format msgid "The %1$s bites your %2$s!" -msgstr "%1$s 咬到你的 %2$s!" +msgstr "%1$s 咬到了你的 %2$s!" #: src/mattack_actors.cpp src/monattack.cpp #, c-format msgid "The %s lunges at , but they dodge!" -msgstr "%s 衝向了 , 但他躲開了!" +msgstr "%s 撲向了 , 但是他躲開了!" #: src/mattack_actors.cpp #, c-format msgid "The %1$s bites 's %2$s, but fails to penetrate armor!" -msgstr "%1$s 咬到了 的 %2$s, 但是無法穿透護甲!" +msgstr "%1$s 咬到了 的 %2$s, 但是未能穿透護甲!" #: src/mattack_actors.cpp #, c-format @@ -130034,17 +133344,17 @@ msgstr "%1$s 發射了 %2$s!" msgid "Pointed in your direction, the %s emits an IFF warning beep." msgid_plural "" "Pointed in your direction, the %s emits %d annoyed sounding beeps." -msgstr[0] "%s 對著你的方向發出 %d 急促的嗶嗶聲。" +msgstr[0] "%s 對著你的方向發出了 %d 急促的嗶嗶聲。" #. ~ There will be a 120mm HEAT shell sent at high speed to your location next #. turn. #: src/mattack_actors.cpp src/monattack.cpp msgid "You're not sure why you've got a laser dot on you..." -msgstr "你不確定為什麼你身上有個雷射紅點..." +msgstr "你不確定為什麼你身上有個雷射紅點…" #: src/mattack_actors.cpp src/monattack.cpp msgid "The " -msgstr "這 " +msgstr "" #: src/melee.cpp #, c-format @@ -130059,12 +133369,12 @@ msgstr " 的 %s 受到攻擊傷害!" #: src/melee.cpp #, c-format msgid "Your %s breaks apart!" -msgstr "" +msgstr "你的 %s 被打斷了!" #: src/melee.cpp #, c-format msgid "'s %s breaks apart!" -msgstr "" +msgstr " 的 %s 被打斷了!" #: src/melee.cpp #, c-format @@ -130155,7 +133465,7 @@ msgstr[0] "%d 敵人擊中!" #: src/melee.cpp #, c-format msgid "You have learned %s from extensive practice with the CQB Bionic." -msgstr "頻繁使用CQB生化插件的過程中讓你學會了 %s 。" +msgstr "頻繁使用 CQB 生化插件的過程中讓你學會了 %s。" #. ~ Adjective in "You block of the damage with your . #: src/melee.cpp @@ -130195,7 +133505,7 @@ msgstr "對你的 %1$s 傷害被 %2$s 格擋了!" #: src/melee.cpp #, c-format msgid " blocks %1$s of the damage with their %2$s!" -msgstr " 的 %1$s 傷害被他的 %2$s 格擋了!" +msgstr " 用他的 %2$s 格擋了 %1$s 傷害!" #: src/melee.cpp #, c-format @@ -130215,7 +133525,7 @@ msgstr "你電擊 %s。" #: src/melee.cpp #, c-format msgid " shocks %s." -msgstr " 電擊 %s." +msgstr " 電擊 %s。" #: src/melee.cpp #, c-format @@ -130320,7 +133630,7 @@ msgstr "你剖開 %s 取出內臟" #: src/melee.cpp #, c-format msgid "You slash %s" -msgstr "你斬了 %s" +msgstr "你斬擊 %s" #: src/melee.cpp #, c-format @@ -130365,7 +133675,7 @@ msgstr " 剖開 %s 取出內臟" #: src/melee.cpp #, c-format msgid " slashes %s" -msgstr " 斬了 %s" +msgstr " 斬擊 %s" #: src/melee.cpp #, c-format @@ -130380,965 +133690,417 @@ msgstr " 切殘 %s" #: src/melee.cpp #, c-format msgid " stabs %s" -msgstr " 捅 %s" - -#: src/melee.cpp -#, c-format -msgid " cuts %s" -msgstr " 砍中 %s" - -#: src/melee.cpp -#, c-format -msgid " nicks %s" -msgstr " 劃中 %s" - -#: src/melee.cpp -#, c-format -msgid " slices %s" -msgstr " 割到 %s" - -#: src/melee.cpp -#, c-format -msgid "You clobber %s" -msgstr "你海扁 %s" - -#: src/melee.cpp -#, c-format -msgid "You smash %s" -msgstr "你砸中 %s" - -#: src/melee.cpp -#, c-format -msgid "You thrash %s" -msgstr "你捶打 %s" - -#: src/melee.cpp -#, c-format -msgid "You batter %s" -msgstr "你敲中 %s" - -#: src/melee.cpp -#, c-format -msgid "You hit %s" -msgstr "你擊中 %s" - -#: src/melee.cpp -#, c-format -msgid "You whack %s" -msgstr "你揮打 %s" - -#: src/melee.cpp -#, c-format -msgid " clobbers %s" -msgstr " 海扁 %s" - -#: src/melee.cpp -#, c-format -msgid " smashes %s" -msgstr " 砸中 %s" - -#: src/melee.cpp -#, c-format -msgid " thrashes %s" -msgstr " 捶打 %s" - -#: src/melee.cpp -#, c-format -msgid " batters %s" -msgstr " 敲中 %s" - -#: src/melee.cpp -#, c-format -msgid " hits %s" -msgstr " 擊中 %s" - -#: src/melee.cpp -#, c-format -msgid " whacks %s" -msgstr " 揮打 %s" - -#: src/melee.cpp -#, c-format -msgid "The bugs attack %s" -msgstr "臭蟲攻擊 %s" - -#. ~ NPC hits something but does no damage -#: src/melee.cpp -#, c-format -msgid "%s but does no damage." -msgstr "%s 但是沒有造成傷害。" - -#. ~ someone hits something but do no damage -#: src/melee.cpp -#, c-format -msgid "%s but do no damage." -msgstr "%s 但是沒有造成傷害。" - -#. ~ NPC hits something (critical) -#: src/melee.cpp -#, c-format -msgid "%s. Critical!" -msgstr "%s。爆擊!" - -#. ~ someone hits something for %d damage (critical) -#: src/melee.cpp -#, c-format -msgid "%s for %d damage. Critical!" -msgstr "%s 造成 %d 傷害。爆擊!" - -#. ~ NPC hits something -#: src/melee.cpp -#, c-format -msgid "%s." -msgstr "%s." - -#. ~ someone hits something for %d damage -#: src/melee.cpp -#, c-format -msgid "%s for %d damage." -msgstr "%s 造成 %d 傷害。" - -#: src/melee.cpp -#, c-format -msgid "You lunge for the %s, but miss!" -msgstr "你衝向 %s, 但失誤了!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force!" -msgstr "你抓住 %s, 並用盡全力拉扯!" - -#: src/melee.cpp -#, c-format -msgid "You forcefully take %s from %s!" -msgstr "你強行把 %s 從 %s 身上拿走!" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but it drops nearby!" -msgstr "你抓住 %s, 並用盡全力拉扯! 但它掉在附近了。" - -#: src/melee.cpp -#, c-format -msgid "You grab at %s and pull with all your force, but in vain!" -msgstr "你抓住 %s, 並用盡全力拉扯! 可是沒有用。" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might forcing their %s to drop down nearby!" -msgstr "你用盡全力砸擊 %s, 使得他的 %s 掉在附近了!" - -#: src/melee.cpp -#, c-format -msgid "You smash %s with all your might but %s remains in their hands!" -msgstr "你用盡全力砸擊 %s, 但 %s 仍在他的手上!" - -#: src/melee.cpp src/npctalk.cpp -#, c-format -msgid "%s is hostile!" -msgstr "%s 與你敵對!" - -#: src/melee.cpp -#, c-format -msgid "You sneakily steal %1$s from %2$s!" -msgstr "你鬼祟地把 %1$s 從 %2$s 身上偷走了!" - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s, but did not attract attention." -msgstr "你未能把 %1$s 從 %2$s 身上偷走, 但對方也沒有注意到。" - -#: src/melee.cpp -#, c-format -msgid "You failed to steal %1$s from %2$s." -msgstr "你未能把 %1$s 從 %2$s 身上偷走。" - -#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a -#. whack! x 12" -#: src/messages.cpp -#, c-format -msgid "%s x %d" -msgstr "%s x %d" - -#: src/messages.cpp -msgctxt "message type" -msgid "good" -msgstr "良好" - -#: src/messages.cpp -msgctxt "message type" -msgid "bad" -msgstr "惡劣" - -#: src/messages.cpp -msgctxt "message type" -msgid "mixed" -msgstr "" - -#: src/messages.cpp -msgctxt "message type" -msgid "warning" -msgstr "" - -#: src/messages.cpp -msgctxt "message type" -msgid "info" -msgstr "" - -#: src/messages.cpp -msgctxt "message type" -msgid "neutral" -msgstr "" - -#: src/messages.cpp -msgctxt "message type" -msgid "debug" -msgstr "" - -#: src/messages.cpp -#, c-format -msgid "< Press %s to filter, %s to reset >" -msgstr "" - -#: src/messages.cpp -#, c-format -msgid "" -"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" -"Examples:\n" -" good:mutation\n" -" :you pick up: 1\n" -" crash!\n" -msgstr "" - -#. ~ the 2nd %s is a type name, this is used to format a list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s, " -msgstr "" - -#. ~ the 2nd %s is a type name, this is used to format the last type name in a -#. list of type names -#: src/messages.cpp -#, c-format -msgctxt "message log" -msgid "%s." -msgstr "" - -#: src/mission_companion.cpp -msgid "Outpost Missions" -msgstr "前哨任務" - -#: src/mission_companion.cpp -msgid "Base Missions" -msgstr "" - -#: src/mission_companion.cpp -msgid "Junk Shop Missions" -msgstr "" - -#: src/mission_companion.cpp -msgid "Agricultural Missions" -msgstr "農業任務" - -#: src/mission_companion.cpp -msgid "Construction Missions" -msgstr " 建設任務" - -#: src/mission_companion.cpp -msgid "Free Merchant Missions" -msgstr "自由商會任務" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." -msgstr "" -"報酬: $25-$500\n" -"危險: 低\n" -"需時: 10小時任務\n" -"\n" -"派遣其中一位同伴在附近的荒野和孤立建築中巡邏。能在相對安全的環境中對付落單的生物並鍛煉自己的生存能力。" - -#: src/mission_companion.cpp -msgid "Assign Scavenging Patrol" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Profit: $25-$500\n" -"Danger: Low\n" -"Time: 10 hour missions\n" -" \n" -"Patrol Roster:\n" -msgstr "" -"報酬: $25-$500\n" -"危險: 低\n" -"需時: 10小時任務\n" -"\n" -"巡邏名單:\n" - -#: src/mission_companion.cpp -msgid " hours] \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Do you wish to bring your allies back into your party?" -msgstr "" -"\n" -"\n" -"要把同伴帶回你的隊伍嗎?" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Patrol" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." -msgstr "" -"報酬: $200-$1000\n" -"危險: 中\n" -"需時: 10小時任務\n" -"\n" -"拾荒作戰以昔日的人口密集地區為目標, 以保證在被喪屍包圍前搜刮到最多的珍稀物品。戰鬥不可避免, 團隊成員間難以互相支援。任務報酬較高, 而且同伴有機會帶回物品。" - -#: src/mission_companion.cpp -msgid "Assign Scavenging Raid" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Profit: $200-$1000\n" -"Danger: Medium\n" -"Time: 10 hour missions\n" -" \n" -"Raid Roster:\n" -msgstr "" -"報酬: $200-$1000\n" -"危險: 中\n" -"需時: 10小時任務\n" -"\n" -"作戰名單:\n" - -#: src/mission_companion.cpp -msgid "Retrieve Scavenging Raid" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." -msgstr "" -"報酬: $8/小時\n" -"危險: 最低\n" -"需時: 最少1小時\n" -"\n" -"派遣其中一位同伴進行粗重勞動。這是學習基礎技能和建立聲望的安全手段, 但別指望能有多少報酬。" - -#: src/mission_companion.cpp -msgid "Assign Ally to Menial Labor" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Profit: $8/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"報酬: $8/小時\n" -"危險: 最低\n" -"需時: 最少1小時\n" -"\n" -"勞工名單:\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Menial Labor" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." -msgstr "" -"報酬: $12/小時\n" -"危險: 最低\n" -"需時: 最少1小時\n" -"\n" -"木工工作需要比粗重勞動更高的技術, 同時亦提供更多的報酬。你的同伴不太可能要面對戰鬥, 但在簡易搭建的建築裡工作總有危險。" - -#: src/mission_companion.cpp -msgid "Assign Ally to Carpentry Work" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Profit: $12/hour\n" -"Danger: Minimal\n" -"Time: 1 hour minimum\n" -" \n" -"Labor Roster:\n" -msgstr "" -"報酬: $12/小時\n" -"危險: 最低\n" -"需時: 最少1小時\n" -"\n" -"勞工名單:\n" - -#: src/mission_companion.cpp -msgid "Recover Ally from Carpentry Work" -msgstr "" - -#: src/mission_companion.cpp -msgid "Upgrade Camp" -msgstr "" - -#: src/mission_companion.cpp -msgid "Gather Materials" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Distribute food to your follower and fill you larders. Place the food you wish to distribute opposite the tent door between the manager and wall.\n" -" \n" -"Effects:\n" -"> Increases your faction's food supply value which in turn is used to pay laborers for their time\n" -" \n" -"Must have enjoyability >= -6\n" -"Perishable food liquidated at penalty depending on upgrades and rot time:\n" -"> Rotten: 0%%\n" -"> Rots in < 2 days: 60%%\n" -"> Rots in < 5 days: 80%%\n" -" \n" -"Total faction food stock: %d kcal or %d day's rations" -msgstr "" - -#: src/mission_companion.cpp -msgid "Distribute Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Reset the points that items are sorted to using the [ Menial Labor ] mission.\n" -" \n" -"Effects:\n" -"> Assignable Points: food, food for distribution, seeds, weapons, clothing, bionics, all kinds of tools, wood, trash, books, medication, and ammo.\n" -"> Items sitting on any type of furniture will not be moved.\n" -"> Items that are not listed in one of the categories are defaulted to the tools group." -msgstr "" - -#: src/mission_companion.cpp -msgid "Reset Sort Points" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to gather light brush and heavy sticks.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -"> heavy sticks\n" -"> withered plants\n" -"> splintered wood\n" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: %d/3\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Collect Firewood" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to do low level chores and sort supplies.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Material left outside on the ground will be sorted into the four crates in front of the tent.\n" -"Default, top to bottom: Clothing, Food, Books/Bionics, and Tools. Wood will be piled to the south. Trash to the north.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Menial Labor" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Your base has become large enough to support an expansion. Expansions open up new opportunities but can be expensive and time consuming. Pick them carefully, only 8 can be built at each camp.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose any one of the available expansions. Starting with a farm or lumberyard are always a solid choice since food is used to support companion missions and wood is your primary construction material.\n" -" \n" -"Risk: None\n" -"Time: 3 Hours \n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Expand Base" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to a nearby forest to cut logs.\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: 1 \n" -"Effects:\n" -"> 50%% of trees/trunks at the forest position will be cut down.\n" -"> 50%% of total material will be brought back.\n" -"> Repeatable with diminishing returns.\n" -" \n" -"Risk: Low-Medium\n" -"Time: 6 Hour Base + Travel Time + Cutting Time\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Cut Logs" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Send a companion to build an improvised shelter and stock it with equipment at a distant map location.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Good for setting up resupply or contingency points.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward.\n" -" \n" -"Risk: Medium\n" -"Time: 6 Hour Construction + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Setup Hide Site" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Push gear out to a hide site or bring gear back from one.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 1\n" -"Effects:\n" -"> Good for returning equipment you left in the hide site shelter.\n" -"> Gear is left unattended and could be stolen.\n" -"> Time dependent on weight of equipment being sent forward or back.\n" -" \n" -"Risk: Medium\n" -"Time: 1 Hour Base + Travel\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Relay Hide Site" -msgstr "" - -#: src/mission_companion.cpp -msgid "Construct Map Fortifications" -msgstr "" +msgstr " 捅 %s" -#: src/mission_companion.cpp -msgid "Construct Spiked Trench" -msgstr "" +#: src/melee.cpp +#, c-format +msgid " cuts %s" +msgstr " 砍中 %s" -#: src/mission_companion.cpp -msgid "Recruit Companions" -msgstr "" +#: src/melee.cpp +#, c-format +msgid " nicks %s" +msgstr " 劃中 %s" -#: src/mission_companion.cpp +#: src/melee.cpp #, c-format -msgid "" -"Notes:\n" -"Send a companion out into the great unknown. High survival skills are needed to avoid combat but you should expect an encounter or two.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 3\n" -"Effects:\n" -"> Select checkpoints to customize path.\n" -"> Reveals terrain around the path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" +msgid " slices %s" +msgstr " 割到 %s" -#: src/mission_companion.cpp -msgid "Scout Mission" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You clobber %s" +msgstr "你海扁 %s" -#: src/mission_companion.cpp +#: src/melee.cpp #, c-format -msgid "" -"Notes:\n" -"Send a companion to purge the wasteland. Their goal is to kill anything hostile they encounter and return when their wounds are too great or the odds are stacked against them.\n" -" \n" -"Skill used: survival\n" -"Difficulty: 4\n" -"Effects:\n" -"> Pulls creatures encountered into combat instead of fleeing.\n" -"> Select checkpoints to customize path.\n" -"> Can bounce off hide sites to extend range.\n" -" \n" -"Risk: Very High\n" -"Time: Travel\n" -"Positions: %d/3\n" -msgstr "" +msgid "You smash %s" +msgstr "你砸中 %s" -#: src/mission_companion.cpp -msgid "Combat Patrol" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You thrash %s" +msgstr "你捶打 %s" -#: src/mission_companion.cpp -msgid " Expansion Upgrade" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You batter %s" +msgstr "你敲中 %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Have a companion attempt to completely dissemble a vehicle into components.\n" -" \n" -"Skill used: mechanics\n" -"Difficulty: 2 \n" -"Effects:\n" -"> Removed parts placed on the furniture in the garage.\n" -"> Skill plays a huge role to determine what is salvaged.\n" -" \n" -"Risk: None\n" -"Time: Skill Based \n" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You hit %s" +msgstr "你擊中 %s" -#: src/mission_companion.cpp -msgid " Chop Shop" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You whack %s" +msgstr "你揮打 %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plow any spaces that have reverted to dirt or grass.\n" -" \n" -msgstr "" +#: src/melee.cpp +#, c-format +msgid " clobbers %s" +msgstr " 海扁 %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: fabrication\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Restores only the plots created in the last expansion upgrade.\n" -"> Does not damage existing crops.\n" -" \n" -"Risk: None\n" -"Time: 5 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" +#: src/melee.cpp +#, c-format +msgid " smashes %s" +msgstr " 砸中 %s" -#: src/mission_companion.cpp -msgid " Plow Fields" -msgstr "" +#: src/melee.cpp +#, c-format +msgid " thrashes %s" +msgstr " 捶打 %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Plant designated seeds in the spaces that have already been tilled.\n" -" \n" -msgstr "" +#: src/melee.cpp +#, c-format +msgid " batters %s" +msgstr " 敲中 %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Choose which seed type or all of your seeds.\n" -"> Stops when out of seeds or planting locations.\n" -"> Will plant in ALL dirt mounds in the expansion.\n" -" \n" -"Risk: None\n" -"Time: 1 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" +#: src/melee.cpp +#, c-format +msgid " hits %s" +msgstr " 擊中 %s" -#: src/mission_companion.cpp -msgid " Plant Fields" -msgstr "" +#: src/melee.cpp +#, c-format +msgid " whacks %s" +msgstr " 揮打 %s" -#: src/mission_companion.cpp -msgid "" -"Notes:\n" -"Harvest any plants that are ripe and bring the produce back.\n" -" \n" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "The bugs attack %s" +msgstr "臭蟲攻擊 %s" -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Effects:\n" -"> Will dump all harvesting products onto your location.\n" -" \n" -"Risk: None\n" -"Time: 3 Min / Plot \n" -"Positions: 0/1 \n" -msgstr "" +#. ~ NPC hits something but does no damage +#: src/melee.cpp +#, c-format +msgid "%s but does no damage." +msgstr "%s 但是沒有造成傷害。" -#: src/mission_companion.cpp -msgid " Harvest Fields" -msgstr "" +#. ~ someone hits something but do no damage +#: src/melee.cpp +#, c-format +msgid "%s but do no damage." +msgstr "%s 但是沒有造成傷害。" -#: src/mission_companion.cpp -msgid "Working to expand your camp!\n" -msgstr "" +#. ~ NPC hits something (critical) +#: src/melee.cpp +#, c-format +msgid "%s. Critical!" +msgstr "%s。爆擊!" -#: src/mission_companion.cpp -msgid " hours left] \n" -msgstr "" +#. ~ someone hits something for %d damage (critical) +#: src/melee.cpp +#, c-format +msgid "%s for %d damage. Critical!" +msgstr "%s 造成 %d 傷害。爆擊!" -#: src/mission_companion.cpp -msgid " minutes left] \n" -msgstr "" +#. ~ NPC hits something +#: src/melee.cpp +#, c-format +msgid "%s." +msgstr "%s。" -#: src/mission_companion.cpp -msgid " [DONE]\n" -msgstr "" +#. ~ someone hits something for %d damage +#: src/melee.cpp +#, c-format +msgid "%s for %d damage." +msgstr "%s 造成 %d 傷害。" -#: src/mission_companion.cpp -msgid "Recover Ally from Upgrading" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You lunge for the %s, but miss!" +msgstr "你衝向 %s, 但失誤了!" -#: src/mission_companion.cpp -msgid "Working to upgrade your expansions!\n" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force!" +msgstr "你抓住 %s, 並用盡全力拉扯!" -#: src/mission_companion.cpp -msgid " Expansion" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You forcefully take %s from %s!" +msgstr "你強行把 %s 從 %s 身上拿走!" -#: src/mission_companion.cpp -msgid "Recover Ally, " -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but it drops nearby!" +msgstr "你抓住 %s, 並用盡全力拉扯! 但它掉在附近了。" -#: src/mission_companion.cpp -msgid "Working at the chop shop...\n" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You grab at %s and pull with all your force, but in vain!" +msgstr "你抓住 %s, 並用盡全力拉扯! 可是沒有用。" -#: src/mission_companion.cpp -msgid "/120 hours] \n" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might forcing their %s to drop down nearby!" +msgstr "你用盡全力砸擊 %s, 使得他的 %s 掉在附近了!" -#: src/mission_companion.cpp -msgid " (Finish) Chop Shop" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You smash %s with all your might but %s remains in their hands!" +msgstr "你用盡全力砸擊 %s, 但 %s 仍在他的手上!" -#: src/mission_companion.cpp -msgid "Working in your kitchen!\n" -msgstr "" +#: src/melee.cpp src/npctalk.cpp +#, c-format +msgid "%s is hostile!" +msgstr "%s 與你敵對!" -#: src/mission_companion.cpp -msgid " [ALMOST DONE]\n" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You sneakily steal %1$s from %2$s!" +msgstr "你鬼祟地把 %1$s 從 %2$s 身上偷走了!" -#: src/mission_companion.cpp -msgid " (Finish) Cooking" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s, but did not attract attention." +msgstr "你未能從 %2$s 身上偷走 %1$s, 不過也沒有引起注意。" -#: src/mission_companion.cpp -msgid "Working in your blacksmith shop!\n" -msgstr "" +#: src/melee.cpp +#, c-format +msgid "You failed to steal %1$s from %2$s." +msgstr "你未能從 %2$s 身上偷走 %1$s。" -#: src/mission_companion.cpp -msgid " (Finish) Smithing" -msgstr "" +#. ~ Message %s on the message log was repeated %d times, e.g. "You hear a +#. whack! x 12" +#: src/messages.cpp +#, c-format +msgid "%s x %d" +msgstr "%s x %d" -#: src/mission_companion.cpp -msgid "Working to plow your fields!\n" -msgstr "" +#: src/messages.cpp +msgctxt "message type" +msgid "good" +msgstr "良好" -#: src/mission_companion.cpp -msgid "/~48 hours] \n" -msgstr "" +#: src/messages.cpp +msgctxt "message type" +msgid "bad" +msgstr "惡劣" -#: src/mission_companion.cpp -msgid " (Finish) Plow Fields" -msgstr "" +#: src/messages.cpp +msgctxt "message type" +msgid "mixed" +msgstr "混合" -#: src/mission_companion.cpp -msgid "Working to plant your fields!\n" -msgstr "" +#: src/messages.cpp +msgctxt "message type" +msgid "warning" +msgstr "警告" -#: src/mission_companion.cpp -msgid "/4 hours] \n" -msgstr "" +#: src/messages.cpp +msgctxt "message type" +msgid "info" +msgstr "資訊" -#: src/mission_companion.cpp -msgid " (Finish) Plant Fields" -msgstr "" +#: src/messages.cpp +msgctxt "message type" +msgid "neutral" +msgstr "中立" -#: src/mission_companion.cpp -msgid "Working to harvest your fields!\n" -msgstr "" +#: src/messages.cpp +msgctxt "message type" +msgid "debug" +msgstr "除錯" -#: src/mission_companion.cpp -msgid "/~10 hours] \n" -msgstr "" +#: src/messages.cpp +#, c-format +msgid "< Press %s to filter, %s to reset >" +msgstr "< 按 %s 篩選, 按 %s 重置篩選 >" -#: src/mission_companion.cpp -msgid " (Finish) Harvest Fields" +#: src/messages.cpp +#, c-format +msgid "" +"Format is [[TYPE]:]TEXT. The values for TYPE are: %s\n" +"Examples:\n" +" good:mutation\n" +" :you pick up: 1\n" +" crash!\n" msgstr "" -#: src/mission_companion.cpp -msgid "Working on your farm!\n" +#. ~ the 2nd %s is a type name, this is used to format a list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s, " msgstr "" -#: src/mission_companion.cpp -msgid " (Finish) Crafting" +#. ~ the 2nd %s is a type name, this is used to format the last type name in a +#. list of type names +#: src/messages.cpp +#, c-format +msgctxt "message log" +msgid "%s." msgstr "" #: src/mission_companion.cpp -msgid "Busy crafting!\n" -msgstr "" +msgid "Outpost Missions" +msgstr "前哨任務" #: src/mission_companion.cpp -msgid "Searching for materials to upgrade the camp.\n" +msgid "Junk Shop Missions" msgstr "" #: src/mission_companion.cpp -msgid "/3 hours] \n" -msgstr "" +msgid "Agricultural Missions" +msgstr "農業任務" #: src/mission_companion.cpp -msgid "Recover Ally from Gathering" -msgstr "" +msgid "Construction Missions" +msgstr " 建造任務" #: src/mission_companion.cpp -msgid "Searching for firewood.\n" -msgstr "" +msgid "Free Merchant Missions" +msgstr "自由商會任務" #: src/mission_companion.cpp -msgid "Recover Firewood Gatherers" +msgid "" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" +" \n" +"Assigning one of your allies to patrol the surrounding wilderness and isolated buildings presents the opportunity to build survival skills while engaging in relatively safe combat against isolated creatures." msgstr "" +"報酬: $25-$500\n" +"危險: 低\n" +"需時: 10小時任務\n" +"\n" +"派遣其中一位同伴在附近的荒野和孤立建築中巡邏。能在相對安全的環境中對付落單的生物並鍛煉自己的生存能力。" #: src/mission_companion.cpp -msgid "Performing menial labor...\n" +msgid "Assign Scavenging Patrol" msgstr "" #: src/mission_companion.cpp msgid "" -"\n" +"Profit: $25-$500\n" +"Danger: Low\n" +"Time: 10 hour missions\n" " \n" -"Do you wish to bring your allies back into your party?\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Recover Menial Laborer" +"Patrol Roster:\n" msgstr "" +"報酬: $25-$500\n" +"危險: 低\n" +"需時: 10小時任務\n" +"\n" +"巡邏名單:\n" #: src/mission_companion.cpp -msgid "Surveying for expansion...\n" +msgid " hours] \n" msgstr "" #: src/mission_companion.cpp -msgid "Recover Surveyor" +msgid "Retrieve Scavenging Patrol" msgstr "" #: src/mission_companion.cpp -msgid "Cutting logs in the woods...\n" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Scavenging raids target formerly populated areas to loot as many valuable items as possible before being surrounded by the undead. Combat is to be expected and assistance from the rest of the party can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." msgstr "" +"報酬: $200-$1000\n" +"危險: 中\n" +"需時: 10小時任務\n" +"\n" +"拾荒作戰以昔日的人口密集地區為目標, 以保證在被喪屍包圍前搜刮到最多的珍稀物品。戰鬥不可避免, 團隊成員間難以互相支援。任務報酬較高, 而且同伴有機會帶回物品。" #: src/mission_companion.cpp -msgid "Recover Log Cutter" +msgid "Assign Scavenging Raid" msgstr "" #: src/mission_companion.cpp -msgid "Setting up a hide site...\n" +msgid "" +"Profit: $200-$1000\n" +"Danger: Medium\n" +"Time: 10 hour missions\n" +" \n" +"Raid Roster:\n" msgstr "" +"報酬: $200-$1000\n" +"危險: 中\n" +"需時: 10小時任務\n" +"\n" +"作戰名單:\n" #: src/mission_companion.cpp -msgid "Recover Hide Setup" +msgid "Retrieve Scavenging Raid" msgstr "" #: src/mission_companion.cpp -msgid "Constructing fortifications...\n" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Assigning one of your allies to menial labor is a safe way to teach them basic skills and build reputation with the outpost. Don't expect much of a reward though." msgstr "" +"報酬: $8/小時\n" +"危險: 最低\n" +"需時: 最少1小時\n" +"\n" +"派遣其中一位同伴進行粗重勞動。這是學習基礎技能和建立聲望的安全手段, 但別指望能有多少報酬。" #: src/mission_companion.cpp -msgid "Finish Map Fortifications" +msgid "Assign Ally to Menial Labor" msgstr "" #: src/mission_companion.cpp -msgid "Searching for recruits.\n" +msgid "" +"Profit: $8/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" msgstr "" +"報酬: $8/小時\n" +"危險: 最低\n" +"需時: 最少1小時\n" +"\n" +"勞工名單:\n" #: src/mission_companion.cpp -msgid "Recover Recruiter" +msgid "Recover Ally from Menial Labor" msgstr "" #: src/mission_companion.cpp -msgid "Scouting the region.\n" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Carpentry work requires more skill than menial labor while offering modestly improved pay. It is unlikely that your companions will face combat but there are hazards working on makeshift buildings." msgstr "" +"報酬: $12/小時\n" +"危險: 最低\n" +"需時: 最少1小時\n" +"\n" +"木工工作需要比粗重勞動更高的技術, 同時亦提供更多的報酬。你的同伴不太可能要面對戰鬥, 但在簡易搭建的建築裡工作總有危險。" #: src/mission_companion.cpp -msgid "Recover Scout" +msgid "Assign Ally to Carpentry Work" msgstr "" #: src/mission_companion.cpp -msgid "Patrolling the region.\n" +msgid "" +"Profit: $12/hour\n" +"Danger: Minimal\n" +"Time: 1 hour minimum\n" +" \n" +"Labor Roster:\n" msgstr "" +"報酬: $12/小時\n" +"危險: 最低\n" +"需時: 最少1小時\n" +"\n" +"勞工名單:\n" #: src/mission_companion.cpp -msgid "Recover Combat Patrol" +msgid "Recover Ally from Carpentry Work" msgstr "" #: src/mission_companion.cpp @@ -131361,15 +134123,15 @@ msgstr "" "費用: $1000\n" "\n" "\n" -".........\n" -".........\n" -".........\n" -".........\n" -".........\n" -".........\n" -"..#....**\n" -"..#Ov..**\n" -"...O|....\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" ..#....**\n" +" ..#Ov..**\n" +" ...O|....\n" "\n" "我們可以讓你以優惠折扣價購買一片土地, 作為你自己的農業企業。我們會先為你犁地, 讓你一眼認出那一片是你的… 你有了地之後可以僱用工人為你種植和收割作物。如果我們對你種植的作物有需求, 我們會願意付錢收走。" @@ -131397,15 +134159,15 @@ msgstr "" "費用: $5500\n" "\n" "\n" -".........\n" -".........\n" -".........\n" -".........\n" -".........\n" -".........\n" -"..#....**\n" -"..#Ov..**\n" -"...O|....\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" ..#....**\n" +" ..#Ov..**\n" +" ...O|....\n" "\n" "建造一個堅固的柵欄保護你的土地, 大多數野生動物將沒法啃咬你的農作物。你可以預期產量增加。" @@ -131433,15 +134195,15 @@ msgstr "" "費用: $3.00/株\n" "\n" "\n" -".........\n" -".........\n" -".........\n" -".........\n" -".........\n" -".........\n" -"..#....**\n" -"..#Ov..**\n" -"...O|....\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" ..#....**\n" +" ..#Ov..**\n" +" ...O|....\n" "\n" "如果你願意付錢, 我們可以替你種植你所選擇的作物。當作物準備收穫時可以讓我們替你收割或是直接換成錢。" @@ -131469,15 +134231,15 @@ msgstr "" "費用: $2.00/株\n" "\n" "\n" -".........\n" -".........\n" -".........\n" -".........\n" -".........\n" -".........\n" -"..#....**\n" -"..#Ov..**\n" -"...O|....\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" .........\n" +" ..#....**\n" +" ..#Ov..**\n" +" ...O|....\n" "\n" "我們可以收費為你收割作物, 或是替你直接把作物換成錢。" @@ -131590,7 +134352,7 @@ msgstr "" #: src/mission_companion.cpp msgid "There are no missions at this colony. Press Spacebar..." -msgstr "這個殖民地暫時沒有任務提供。按下空白鍵..." +msgstr "這個殖民地暫時沒有任務提供。請按空白鍵…" #: src/mission_companion.cpp msgid "joins the caravan team..." @@ -131606,236 +134368,7 @@ msgstr "離隊進行拾荒作戰…" #: src/mission_companion.cpp msgid "departs to work as a laborer..." -msgstr "離隊加入勞工行列…" - -#: src/mission_companion.cpp -msgid "You don't have enough food stored to feed your companion." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to upgrade the camp..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have a companion upgrading the camp." -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the materials for the upgrade." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your garage..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your kitchen with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your blacksmith shop with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from your farm with something..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns to you with something..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for materials..." -msgstr "" - -#: src/mission_companion.cpp -msgid "There are too many companions working on this mission!" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for firewood..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to dig ditches and scrub toilets..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to survey land..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You have already selected a surveyor!" -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to upgrade the expansion..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have a worker upgrading that expansion!" -msgstr "" - -#: src/mission_companion.cpp -msgid "Forests and swamps are the only valid cutting locations." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Trip Estimate:\n" -"%s" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to cut logs..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working in the woods..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Forests, swamps, and fields are valid hide site locations." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to build a hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You need equipment to setup a hide site..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working on the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You must select an existing hide site." -msgstr "" - -#: src/mission_companion.cpp -msgid "Bring gear back?" -msgstr "" - -#: src/mission_companion.cpp -msgid "departs for the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You need equipment to transport between the hide site..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from shuttling gear between the hide site..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Select a start and end point. Line must be straight. Fields, forests, and " -"swamps are valid fortification locations. In addition to existing " -"fortification constructions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an end point." -msgstr "" - -#: src/mission_companion.cpp -msgid "Invalid terrain in construction path." -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the material to build the fortification." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from constructing fortifications..." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs to search for recruits..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Select checkpoints until you reach maximum range or select the last point " -"again to end." -msgstr "" - -#: src/mission_companion.cpp -msgid "departs on patrol..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Your companion hit a river and didn't know how to swim..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Your companion hit a river and didn't know how to swim well enough to " -"cross..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't return from patrol..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from patrol..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that garage." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins plowing the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone plowing that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "You have no additional seeds to give your companions..." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins planting the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Which seeds do you wish to have planted?" -msgstr "你想種下那一類種子?" - -#: src/mission_companion.cpp -msgid "You already have someone planting that field." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to harvest the field..." -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone harvesting that field." -msgstr "" +msgstr "離隊加入工人行列…" #: src/mission_companion.cpp msgid "departs to work as a carpenter..." @@ -131874,7 +134407,7 @@ msgstr "商隊回來了。你的一份報酬是 $%d!" #: src/mission_companion.cpp msgid "The caravan was a disaster and your companions never made it home..." -msgstr "商隊遇上了災禍, 你的同伴再也回不來了..." +msgstr "商隊遇上了災禍, 你的同伴再也回不來了…" #: src/mission_companion.cpp #, c-format @@ -131902,15 +134435,15 @@ msgstr "%s 把你的名字記入帳本中, 並叫來附近的工人開犁你的 msgid "" "After counting your money %s directs a nearby laborer to begin constructing " "a fence around your plot..." -msgstr "點算了你的錢後, %s 指派了附近的一位工人開始繞著你的田修築護欄…" +msgstr "點收了你的錢以後, %s 指派了附近的一位工人開始繞著你的田修築護欄…" #: src/mission_companion.cpp msgid "You have no seeds to plant!" -msgstr "你沒有能供種植的種子!" +msgstr "你沒有可以種植的種子!" #: src/mission_companion.cpp msgid "You have no room to plant seeds..." -msgstr "你沒有足夠的空間種下種子…" +msgstr "你沒有足夠的空間來播種…" #: src/mission_companion.cpp msgid "I'm sorry, you don't have enough money to plant those seeds..." @@ -131926,7 +134459,7 @@ msgstr "是否要把 %d %s 種在這兒並花費 $%d?" msgid "" "After counting your money and collecting your seeds, %s calls forth a labor " "party to plant your field." -msgstr "收取了你的錢和種子後, %s 召喚了一群勞工來種植你的田地。" +msgstr "點收了你的錢和種子以後, %s 叫來了一群工人種植你的田地。" #: src/mission_companion.cpp msgid "There aren't any plants that are ready to harvest..." @@ -131934,7 +134467,7 @@ msgstr "目前尚未有可收割的作物…" #: src/mission_companion.cpp msgid "Which plants do you want to have harvested?" -msgstr "你想收穫那些作物?" +msgstr "你要收穫那些作物?" #: src/mission_companion.cpp msgid "You decided to hold off for now..." @@ -131944,7 +134477,7 @@ msgstr "你想暫緩一下…" msgid "" "You don't have enough to pay the workers to harvest the crop so you are " "forced to liquidate..." -msgstr "你付不起工人的薪水來幫你收割作物, 所以你必須變賣它…" +msgstr "你沒有足夠的錢來支付工人收割作物的薪水, 所以你被迫變賣…" #: src/mission_companion.cpp #, c-format @@ -131954,12 +134487,12 @@ msgstr "你想要把 %d 個 %s 以 $%d 的價格變賣嗎?" #: src/mission_companion.cpp #, c-format msgid "The %s are liquidated for $%d..." -msgstr "%s 變賣獲得 $%d..." +msgstr "%s 變賣獲得 $%d…" #: src/mission_companion.cpp #, c-format msgid "You receive %d %s..." -msgstr "你收到 %d %s..." +msgstr "你收到 %d %s…" #: src/mission_companion.cpp #, c-format @@ -132029,243 +134562,6 @@ msgid "" "participate in advanced tasks." msgstr "%s 開始信任你的同伴, 願意讓他們參與更複雜的工作。" -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"%s\n" -" \n" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s \n" -"Risk: None\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Skill used: %s\n" -"Difficulty: %d\n" -"%s\n" -"Time: %s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"Notes: \n" -"Send a companion to gather materials for the next camp upgrade.\n" -" \n" -"Skill used: survival\n" -"Difficulty: N/A \n" -"Gathering Possibilities:\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -" \n" -"Risk: Very Low\n" -"Time: 3 Hours, Repeated\n" -"Positions: " -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from upgrading the camp having earned a bit of experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "While gathering supplies, a silent specter approaches %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s notices the antlered horror and slips away before it gets too close." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The survivor approaches %s asking for directions." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Fearful that he may be an agent of some hostile faction, %s doesn't mention " -"the camp." -msgstr "" - -#: src/mission_companion.cpp -msgid "The two part on friendly terms and the survivor isn't seen again." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't detect the ambush until it was too late!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The bull moose charged %s from the tree line..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Despite being caught off guard %s was able to run away until the moose gave " -"up pursuit." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "The jabberwock grabbed %s by the arm from behind and began to scream." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Terrified, %s spun around and delivered a massive kick to the creature's " -"torso..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Collapsing into a pile of gore, %s walked away unscathed..." -msgstr "" - -#: src/mission_companion.cpp -msgid "(Sounds like bullshit, you wonder what really happened.)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s turned to find the hideous black eyes of a giant wasp staring back from " -"only a few feet away..." -msgstr "" - -#: src/mission_companion.cpp -msgid "The screams were terrifying, there was nothing anyone could do." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Pieces of %s were found strewn across a few bushes." -msgstr "" - -#: src/mission_companion.cpp -msgid "(You wonder if your companions are fit to work on their own...)" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"%s returns from gathering materials carrying supplies and has a bit more " -"experience..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Your companion seems disappointed that your pantry is empty..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -" Chopping this vehicle:\n" -"%s" -msgstr "" - -#: src/mission_companion.cpp -msgid "begins working in the garage..." -msgstr "" - -#: src/mission_companion.cpp -msgid "No seeds to plant!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from working your fields..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from doing the dirty work to keep the camp running..." -msgstr "" - -#: src/mission_companion.cpp -msgid "Sorting points have changed, forcing reset." -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an expansion:" -msgstr "" - -#: src/mission_companion.cpp -msgid "You choose to wait..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from surveying for the expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "No items are located at the drop point..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "You distribute %d kcal worth of food to your companions." -msgstr "" - -#: src/mission_companion.cpp -msgid "Harvestable: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Ready for Planting: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Needs Plowing: " -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Name: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "---- Engines ----\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Engine: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Status: %24d%%\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Fuel: %25s\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "---- Fuel Storage & Battery ----\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Estimated Chop Time: 5 Days\n" -msgstr "" - #: src/mission_companion.cpp #, c-format msgid "While %s was framing a building one of the walls began to collapse..." @@ -132392,11 +134688,11 @@ msgstr "" #: src/mission_companion.cpp #, c-format msgid "Engagement between %d members of %s %s and %d members of %s %s%s!" -msgstr "%d 位 %s %s 的成員和 %d 位 %s %s%s 的成員發生衝突!" +msgstr "%d 位 %s %s 的成員和 %d 位 %s %s %s 的成員發生衝突!" #: src/mission_companion.cpp msgid "You don't have any companions to send out..." -msgstr "你沒有任何同伴讓你派遣…" +msgstr "你沒有可以派遣的同伴…" #: src/mission_companion.cpp msgid "" @@ -132413,7 +134709,7 @@ msgstr "" #: src/mission_companion.cpp msgid "You don't have any companions ready to return..." -msgstr "你沒有任何同伴準備好歸隊…" +msgstr "你沒有準備好歸隊的同伴…" #: src/mission_companion.cpp msgid "Who should return?" @@ -132423,368 +134719,6 @@ msgstr "那一位應該歸隊?" msgid "No one returns to your party..." msgstr "沒有人歸隊…" -#: src/mission_companion.cpp -msgid "MAIN" -msgstr "" - -#: src/mission_companion.cpp -msgid " [N] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [NE] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [E] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [SE] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [S] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [SW] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [W] " -msgstr "" - -#: src/mission_companion.cpp -msgid " [NW] " -msgstr "" - -#: src/mission_companion.cpp -msgid "Farm Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Garage Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Kitchen Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Blacksmith Expansion" -msgstr "" - -#: src/mission_companion.cpp -msgid "Empty Expansion" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Select a location between %d and %d tiles away." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"You must select a target between %d and %d range from the base. Range: %d" -msgstr "" - -#: src/mission_companion.cpp -msgid "You must be able to see the target that you select." -msgstr "" - -#: src/mission_companion.cpp -msgid "Do you want to bounce off this location to extend range?" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15.2f (km)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">One Way: %15d (trips)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15.2f (km)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Distance:%15d (m)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Covered: %15d (m)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Travel: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid ">Working: %15d (hours)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (days)\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (hours)\n" -msgstr "共計: %15d (小時)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "Total: %15d (minutes)\n" -msgstr "共計: %15d (分鐘)\n" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Food: %15d (kcal)\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "food for you" -msgstr "" - -#: src/mission_companion.cpp -msgid "food for companions" -msgstr "" - -#: src/mission_companion.cpp -msgid "weapons" -msgstr "武器" - -#: src/mission_companion.cpp -msgid "clothing" -msgstr "衣物" - -#: src/mission_companion.cpp -msgid "bionics" -msgstr "生化插件" - -#: src/mission_companion.cpp -msgid "all kinds of tools" -msgstr "" - -#: src/mission_companion.cpp -msgid "wood of various sorts" -msgstr "" - -#: src/mission_companion.cpp -msgid "trash and rotting food" -msgstr "" - -#: src/mission_companion.cpp -msgid "books" -msgstr "書籍" - -#: src/mission_companion.cpp -msgid "medication" -msgstr "" - -#: src/mission_companion.cpp -msgid "ammo" -msgstr "彈藥" - -#: src/mission_companion.cpp -#, c-format -msgid "Reset point: %s?" -msgstr "重置點數: %s?" - -#: src/mission_companion.cpp -msgid "" -" Items New Point Old Point\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"\n" -" \n" -" Save Points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "Revert to default points?" -msgstr "" - -#: src/mission_companion.cpp -msgid "You don't have the materials to craft that" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Batch crafting %s [MAX: %d]: " -msgstr "" - -#: src/mission_companion.cpp -msgid "Your batch is too large!" -msgstr "" - -#: src/mission_companion.cpp -msgid "You already have someone working in that expansion." -msgstr "" - -#: src/mission_companion.cpp -msgid "begins to work..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Notes:\n" -"Recruiting additional followers is very dangerous and expensive. The outcome is heavily dependent on the skill of the companion you send and the appeal of your base.\n" -" \n" -"Skill used: speech\n" -"Difficulty: 2 \n" -"Base Score: +%3d%%\n" -"> Expansion Bonus: +%3d%%\n" -"> Faction Bonus: +%3d%%\n" -"> Special Bonus: +%3d%%\n" -" \n" -"Total: Skill +%3d%%\n" -" \n" -"Risk: High\n" -"Time: 4 Days\n" -"Positions: %d/1\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s returns from searching for recruits with a bit more experience..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s encountered %s..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s didn't find anyone to recruit..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s convinced %s to hear a recruitment offer from you..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested in anything %s had to offer..." -msgstr "" - -#: src/mission_companion.cpp -msgid "" -"NPC Overview:\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Name: %20s\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Strength: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Dexterity: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "Intelligence: %10d\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Perception: %10d\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Top 3 Skills:\n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Asking for:\n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"> Food: %10d days\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Faction Food:%9d days\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "" -"Recruit Chance: %10d%%\n" -" \n" -msgstr "" - -#: src/mission_companion.cpp -msgid "Select an option:" -msgstr "" - -#: src/mission_companion.cpp -msgid "Increase Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "Decrease Food" -msgstr "" - -#: src/mission_companion.cpp -msgid "Make Offer" -msgstr "" - -#: src/mission_companion.cpp -msgid "Not Interested" -msgstr "" - -#: src/mission_companion.cpp -msgid "You decide you aren't interested..." -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s has been convinced to join!" -msgstr "" - -#: src/mission_companion.cpp -#, c-format -msgid "%s wasn't interested..." -msgstr "" - #: src/mission_companion.h msgid "Do you wish to give your companion additional items?" msgstr "" @@ -132838,7 +134772,7 @@ msgstr "%s 還給你黑盒子。" #: src/mission_start.cpp #, c-format msgid "%s gave you sarcophagus access code." -msgstr "%s 給了你石棺存取碼。" +msgstr "%s 給了你石棺通行代碼。" #: src/mission_start.cpp #, c-format @@ -132875,7 +134809,7 @@ msgstr "你標記了難民中心的位置, 以及通往它的道路…" msgid "" "You mark the refugee center, but you have no idea how to get there by " "road..." -msgstr "你標記了難民中心的位置, 但你不知道要走哪條公路才能到達..." +msgstr "你標記了難民中心的位置, 但你不知道要走哪條道路才能到達…" #: src/mission_start.cpp msgid "Download Routing Software" @@ -132928,7 +134862,7 @@ msgstr "你還沒有失敗過任務!" #: src/mod_manager.cpp #, c-format msgid "No name (%s)" -msgstr "無名 (%s)" +msgstr "沒有名稱 (%s)" #: src/mod_manager.cpp msgid "CORE CONTENT PACKS" @@ -132936,7 +134870,7 @@ msgstr "核心內容包" #: src/mod_manager.cpp msgid "ITEM ADDITION MODS" -msgstr "增加物品的模組" +msgstr "物品類模組" #: src/mod_manager.cpp msgid "CREATURE MODS" @@ -132972,7 +134906,7 @@ msgstr "移除怪物的模組" #: src/mod_manager.cpp msgid "NO CATEGORY" -msgstr "未分類" +msgstr "未分類模組" #: src/mod_manager.cpp msgid "Default" @@ -133002,12 +134936,12 @@ msgstr[0] "作者" #: src/mod_manager_ui.cpp msgid "Maintainer" msgid_plural "Maintainers" -msgstr[0] "維護者" +msgstr[0] "維護" #: src/mod_manager_ui.cpp msgid "Dependency" msgid_plural "Dependencies" -msgstr[0] "依賴性" +msgstr[0] "依賴" #: src/mod_manager_ui.cpp msgid "Mod version" @@ -133024,7 +134958,7 @@ msgstr "這個模組需要 Lua 支援" #: src/monattack.cpp #, c-format msgid "The %1$s feeds an %2$s and it grows!" -msgstr "%1$s 餵食了 %2$s 讓他成長了!" +msgstr "%1$s 餵食了 %2$s, 並使它成長了!" #: src/monattack.cpp #, c-format @@ -133034,11 +134968,11 @@ msgstr "%s 產卵了!" #: src/monattack.cpp #, c-format msgid "The %s tends nearby eggs, and they hatch!" -msgstr "%s 靠近了卵, 而卵孵化了!" +msgstr "%s 照料了附近的卵, 並使卵孵化了!" #: src/monattack.cpp msgid "a terrible shriek!" -msgstr "恐怖的尖叫聲!" +msgstr "一聲恐怖的尖叫!" #: src/monattack.cpp #, c-format @@ -133059,7 +134993,7 @@ msgstr "一陣嘶嘶作響的咯咯聲!" #: src/monattack.cpp msgid "a spitting noise." -msgstr "噴吐的聲音。" +msgstr "一聲噴吐的聲響。" #: src/monattack.cpp #, c-format @@ -133166,7 +135100,7 @@ msgstr "有一具附近的 %s 復活了!" #: src/monattack.cpp msgid "But nothing seems to happen." -msgstr "...但甚麼事似乎都沒有發生。" +msgstr "… 但甚麼事似乎都沒有發生。" #: src/monattack.cpp #, c-format @@ -133252,7 +135186,7 @@ msgstr "有樹枝從地表竄出並刺中了 的 %s!" #: src/monattack.cpp #, c-format msgid "The underbrush beneath your feet grows and pierces your %s!" -msgstr "草叢從你的腳底竄出並刺中了你的 %s !" +msgstr "草叢從你的腳底竄出並刺中了你的 %s!" #: src/monattack.cpp #, c-format @@ -133333,12 +135267,12 @@ msgstr "噗呼。" #: src/monattack.cpp #, c-format msgid "The %s pulses, and fresh fungal material bursts forth!" -msgstr "%s 一邊鼓動, 並釋放出新鮮的真菌孢子。" +msgstr "%s 一邊鼓動, 並釋放出新鮮的真菌孢子!" #: src/monattack.cpp #, c-format msgid "The %s seems to wave you toward the tower..." -msgstr "%s 似乎朝著塔對你揮手示意..." +msgstr "%s 似乎朝著塔對你揮手示意…" #: src/monattack.cpp #, c-format @@ -133376,7 +135310,7 @@ msgstr "%1$s 許多針狀的刺插進你的 %2$s !" #: src/monattack.cpp #, c-format msgid "The %1$s slashes your %2$s, but your armor protects you." -msgstr "%1$s 砍到你的 %2$s, 但你的護具保護了你。" +msgstr "%1$s 斬擊你的 %2$s, 但你的護具保護了你。" #: src/monattack.cpp #, c-format @@ -133390,7 +135324,7 @@ msgstr "你被真菌牆的成長推開了!" #: src/monattack.cpp #, c-format msgid "The %s spreads its tendrils. It seems as though it's expecting you..." -msgstr "%s 展開了它的卷鬚。彷彿在等待你..." +msgstr "%s 展開了它的卷鬚。彷彿在等待你…" #: src/monattack.cpp msgid "" @@ -133401,7 +135335,7 @@ msgstr "塔中延伸出數個卷鬚。靜止不動?" #, c-format msgid "" "The %s works several tendrils into your arms, legs, torso, and even neck..." -msgstr "%s 伸出數個卷鬚纏繞到你的手臂、腿部、軀幹, 甚至是脖子..." +msgstr "%s 伸出數個卷鬚纏繞到你的手臂、腿部、軀幹, 甚至是頸部…" #: src/monattack.cpp msgid "" @@ -133423,7 +135357,7 @@ msgstr "被引見至馬洛斯之門。" msgid "" "assistance, on an arduous quest. unity. together we have reached the door. " "now to pass through..." -msgstr "協助, 一個艱鉅的任務。團結。團結一致讓我們到達了大門。我們有最後的關鍵。現在, 走過去吧..." +msgstr "協助, 一個艱鉅的任務。團結。團結一致讓我們到達了大門。我們有最後的關鍵。現在, 走過去吧…" #: src/monattack.cpp msgid "You're shoved away as a fungal hedgerow grows!" @@ -133433,7 +135367,7 @@ msgstr "你被真菌灌木的成長推開了!" #: src/monattack.cpp #, c-format msgid "A fungal tendril bursts forth from the earth and pierces your %s!" -msgstr "一個真菌鬚破土而出並刺到了你的 %s !" +msgstr "一個真菌鬚破土而出並刺到了你的 %s!" #: src/monattack.cpp msgid "A fungal tendril bursts forth from the earth!" @@ -133563,7 +135497,7 @@ msgstr "%s 拍手!" #: src/monattack.cpp #, c-format msgid "The %s's head explodes in a mass of roiling tentacles!" -msgstr "%s的頭部炸開成了翻攪的觸手!" +msgstr "%s 的頭部炸開成了翻攪的觸手!" #: src/monattack.cpp #, c-format @@ -133697,11 +135631,11 @@ msgstr "%s 將你認為是警官。並環顧在旁觀看。" #: src/monattack.cpp msgid "Probably some now-obsolete Internal Affairs subroutine..." -msgstr "也許是一些過時的內部例行流程..." +msgstr "也許是一些過時的內部例行流程…" #: src/monattack.cpp msgid "Ops used to do that in case you needed backup..." -msgstr "隊員經常這樣做以防你需要支援..." +msgstr "隊員經常這樣做以防你需要支援…" #: src/monattack.cpp #, c-format @@ -133772,7 +135706,7 @@ msgstr "%s 打開外蓋伸出了步槍!" #. ~Potential grenading detected. #: src/monattack.cpp msgid "Those laser dots don't seem very friendly..." -msgstr "這個雷射點不太友善..." +msgstr "這個雷射點不太友善…" #: src/monattack.cpp msgid "Targeting." @@ -133795,7 +135729,7 @@ msgstr "鏗拉!" #: src/monattack.cpp #, c-format msgid "The %s's 120mm cannon fires!" -msgstr "%s 發射了 120mm 砲彈!" +msgstr "%s 的 120mm 砲開火了!" #: src/monattack.cpp #, c-format @@ -133820,23 +135754,23 @@ msgstr "警用鳴笛聲, 嗚嗚嗚嗚" #: src/monattack.cpp msgid "\"YOU... ARE FILTH...\"" -msgstr "\"你... 被污染...\"" +msgstr "\"你… 被污染… \"" #: src/monattack.cpp msgid "\"VERMIN... YOU ARE VERMIN...\"" -msgstr "\"害蟲... 你是害蟲...\"" +msgstr "\"害蟲… 你是害蟲… \"" #: src/monattack.cpp msgid "\"LEAVE NOW...\"" -msgstr "\"走開...\"" +msgstr "\"走開… \"" #: src/monattack.cpp msgid "\"WE... WILL FEAST... UPON YOU...\"" -msgstr "\"我們... 會在你屍體上... 慶祝...\"" +msgstr "\"我們… 會在你的屍體上… 慶祝… \"" #: src/monattack.cpp msgid "\"FOUL INTERLOPER...\"" -msgstr "\"違法闖入者...\"" +msgstr "\"違法闖入者… \"" #. ~ %1$s is the name of the zombie upgrading the other, %2$s is the zombie #. being upgraded. @@ -133989,13 +135923,13 @@ msgstr "%s 猛地一爪抓向 , 但他避開了!" #: src/monattack.cpp #, c-format msgid "The %1$s thrusts a claw at your %2$s, slashing it for %3$d damage!" -msgstr "%1$s 猛地一爪抓向你的 %2$s, 造成 %3$d 傷害!" +msgstr "%1$s 用爪子猛刺你的 %2$s, 割傷了它, 造成 %3$d 傷害!" #: src/monattack.cpp #, c-format msgid "" "The %1$s thrusts a claw at 's %2$s, slashing it for %3$d damage!" -msgstr "%1$s 猛地一爪抓向 的 %2$s, 造成 %3$d 傷害!" +msgstr "%1$s 用爪子猛刺 的 %2$s, 割傷了它, 造成 %3$d 傷害!" #: src/monattack.cpp #, c-format @@ -134010,33 +135944,33 @@ msgstr "%1$s 猛地一爪抓向 的 %2$s, 但被護具彈開了!" #: src/monattack.cpp #, c-format msgid "The %s slashes at your neck! You duck!" -msgstr "%s 抓向你的脖子! 你閃開了!" +msgstr "%s 斬擊你的頸部! 你閃開了!" #: src/monattack.cpp #, c-format msgid "The %s slashes at 's neck! They duck!" -msgstr "%s 抓向的脖子! 他閃開了!" +msgstr "%s 斬擊 的頸部! 他閃開了!" #: src/monattack.cpp #, c-format msgid "The %1$s slashes at your neck, cutting your throat for %2$d damage!" -msgstr "%1$s 撕抓你的脖子, 造成 %2$d 傷害!" +msgstr "%1$s 斬擊你的頸部, 割傷了你的喉嚨, 造成 %2$d 傷害!" #: src/monattack.cpp #, c-format msgid "" "The %1$s slashes at 's neck, cutting their throat for %2$d damage!" -msgstr "%1$s 撕抓的脖子, 造成 %2$d 傷害!" +msgstr "%1$s 斬擊 的頸部, 割傷了他的喉嚨, 造成 %2$d 傷害!" #: src/monattack.cpp #, c-format msgid "The %1$s slashes at your %2$s, but glances off your armor!" -msgstr "%1$s 抓向你的 %2$s, 但被你的護具彈開了!" +msgstr "%1$s 斬擊你的 %2$s, 但被你的護具彈開了!" #: src/monattack.cpp #, c-format msgid "The %1$s slashes at 's %2$s, but glances off armor!" -msgstr "%1$s 抓向的 %2$s, 但被護具彈開了!" +msgstr "%1$s 斬擊 的 %2$s, 但被護具彈開了!" #: src/monattack.cpp #, c-format @@ -134113,7 +136047,7 @@ msgstr "但你抓住它的手臂並把它摔到地上!" #: src/monattack.cpp msgid "The flip does shock you..." -msgstr "翻動開關讓你電到了..." +msgstr "翻動開關讓你電到了…" #: src/monattack.cpp msgid "but you deftly spin out of its grasp!" @@ -134227,7 +136161,7 @@ msgstr "%1$s 把 %2$s 摔在地上!" #: src/monattack.cpp #, c-format msgid "The zombie kicks your %1$s for %2$d damage..." -msgstr "殭屍踢中你的 %1$s 造成 %2$d 傷害..." +msgstr "殭屍踢中你的 %1$s 造成 %2$d 傷害…" #: src/monattack.cpp #, c-format @@ -134345,7 +136279,7 @@ msgstr "" #: src/monattack.cpp msgid "A spooky skeleton rises from the ground!" -msgstr "" +msgstr "一副可怕的骨架從地面上站了起來!" #: src/monattack.cpp msgid "DOOT." @@ -134449,7 +136383,7 @@ msgstr "%s 融化了。" #: src/mondeath.cpp msgid "Your obsession with the fault fades away..." -msgstr "你對斷層的偏執消失了..." +msgstr "你對斷層的偏執消失了…" #: src/mondeath.cpp msgid "As the final light is destroyed, it erupts in a blinding flare!" @@ -134524,7 +136458,7 @@ msgstr "%s 被擊中後噴灑出強酸!" #: src/monexamine.cpp #, c-format msgid "You milk the %s." -msgstr "你從 %s擠奶。" +msgstr "你從 %s 擠奶。" #: src/monexamine.cpp #, c-format @@ -134615,7 +136549,7 @@ msgstr "巨大" #: src/monster.cpp msgid "Friendly." -msgstr "友好" +msgstr "友善。" #: src/monster.cpp msgid "Passive." @@ -134655,7 +136589,7 @@ msgstr "厚樹皮" #: src/monster.cpp msgid "exoskeleton" -msgstr "" +msgstr "外骨骼" #: src/monster.cpp msgid "thick hide" @@ -134672,37 +136606,37 @@ msgstr "%s 的" #: src/monster.cpp msgid "It is uninjured." -msgstr "毫髮無傷" +msgstr "它毫髮無傷。" #: src/monster.cpp msgid "It is lightly injured." -msgstr "輕微受傷" +msgstr "它輕微受傷。" #: src/monster.cpp msgid "It is moderately injured." -msgstr "中度受傷" +msgstr "它中度受傷。" #: src/monster.cpp msgid "It is heavily injured." -msgstr "重度受傷" +msgstr "它重度受傷。" #: src/monster.cpp msgid "It is severely injured." -msgstr "嚴重受創" +msgstr "它嚴重受創。" #: src/monster.cpp msgid "It is nearly dead!" -msgstr "" +msgstr "它瀕臨死亡!" #: src/monster.cpp #, c-format msgid "This is a %s. %s" -msgstr "這是 %s. %s" +msgstr "這是 %s。 %s" #: src/monster.cpp #, c-format msgid "It is %s." -msgstr "這是 %s." +msgstr "這是 %s。" #: src/monster.cpp #, c-format @@ -134732,12 +136666,12 @@ msgstr "畸形" #: src/monster.cpp #, c-format msgid "It is %s." -msgstr "這是 %s." +msgstr "這是 %s。" #: src/monster.cpp #, c-format msgid "It has the following senses: %s." -msgstr "它有下列感官: %s." +msgstr "它有下列感官: %s。" #: src/monster.cpp msgid "hearing" @@ -134758,7 +136692,7 @@ msgstr "它沒有感官。" #: src/monster.cpp #, c-format msgid "It can %s." -msgstr "它會 %s." +msgstr "它會 %s。" #: src/monster.cpp msgid "swim" @@ -135103,7 +137037,7 @@ msgstr "生化能量儲存量增加了 100。" #: src/mutation.cpp msgid "You feel something straining deep inside you, yearning to be free..." -msgstr "你感覺到有東西在你的體內深處掙扎, 渴望被解放..." +msgstr "你感覺到有東西在你的體內深處掙扎, 渴望被解放…" #: src/mutation.cpp #, c-format @@ -135220,7 +137154,7 @@ msgstr "在痛苦中掙扎著倒臥在地面上。" msgid "" "It was probably that marloss -- how did you know to call it \"marloss\" " "anyway?" -msgstr "這大概是因為那個馬洛斯--你是怎麼知道要叫它 \"馬洛斯\" 的?" +msgstr "這大概是因為那個馬洛斯 - 你是怎麼知道要叫它 \"馬洛斯\" 的?" #: src/mutation.cpp msgid "Best to stay clear of that alien crap in future." @@ -135272,7 +137206,7 @@ msgstr "刺痛的頭疼讓你走得東倒西歪!" #: src/mutation.cpp msgid "Your head throbs with memories of your life, before all this..." -msgstr "昔日的記憶在你的眼中閃現。身為人類的記憶..." +msgstr "昔日的記憶在你的眼中閃現。身為人類的記憶…" #: src/mutation.cpp msgid "Images of your past life flash before you." @@ -135294,13 +137228,13 @@ msgstr "喔~耶! 就是這玩意兒!" #: src/mutation_ui.cpp msgid "Reassigning." -msgstr "重新分配中。" +msgstr "重定代碼中。" #: src/mutation_ui.cpp msgid "" "Select a mutation to reassign or press SPACE to " "cancel. " -msgstr "選擇要重新分配按鍵的突變或是按下 空白鍵 取消。" +msgstr "選擇一個突變, 或是按空白鍵取消。 " #: src/mutation_ui.cpp msgid "Activating" @@ -135309,7 +137243,7 @@ msgstr "啟動中" #: src/mutation_ui.cpp #, c-format msgid "%s to examine mutation, " -msgstr "[%s] 查看突變 " +msgstr "[%s] 檢視描述 " #: src/mutation_ui.cpp msgid "Examining" @@ -135332,7 +137266,7 @@ msgstr "[%s] 設定熱鍵" #: src/mutation_ui.cpp msgid " MUTATIONS " -msgstr "突變" +msgstr " 突變 " #: src/mutation_ui.cpp msgid "Passive:" @@ -135350,27 +137284,27 @@ msgstr "無" #: src/mutation_ui.cpp #, c-format msgid " - %d RU / %d turns" -msgstr " - %d 能量 / %d 回合" +msgstr ", %d 能量 / %d 回合" #. ~ RU means Resource Units #: src/mutation_ui.cpp #, c-format msgid " - %d RU" -msgstr " - %d 能量" +msgstr ", %d 能量" #: src/mutation_ui.cpp #, c-format msgid " - %d turns" -msgstr " - %d 回合" +msgstr ", %d 回合" #: src/mutation_ui.cpp msgid " - Active" -msgstr " - 啟動" +msgstr ", (啟動)" #: src/mutation_ui.cpp #, c-format msgid "%s; enter new letter." -msgstr "%s: 輸入新代碼。" +msgstr "輸入新代碼: %s (按 Esc 取消)。" #: src/mutation_ui.cpp #, c-format @@ -135391,13 +137325,15 @@ msgstr "你停止使用你的 %s。" #: src/mutation_ui.cpp #, c-format msgid "You don't have enough in you to activate your %s!" -msgstr "你沒有足夠能量啟動你的 %s!" +msgstr "你沒有足夠的能量來啟動你的 %s!" #: src/mutation_ui.cpp #, c-format msgid "" "You cannot activate %s! To read a description of %s, press '!', then '%c'." -msgstr "你無法啟動 %s! 若要讀取 %s 的描述, 按下 '!', 接著 '%c'." +msgstr "" +"你無法啟動 %s!\n" +"若要檢視 %s 的描述, 按 ! 接著按 %c。" #: src/name.cpp msgid "Tom" @@ -135428,13 +137364,14 @@ msgstr "剩餘點數: %4d " msgid "Freeform" msgstr "自由形式" -#: src/newcharacter.cpp -msgid "Pick your style:" -msgstr "選取你的招式:" +#: src/newcharacter.cpp src/player.cpp +#, c-format +msgid "Select a style. (press %s for more info)" +msgstr "選擇招式 (按 %s 顯示詳細資訊)" #: src/newcharacter.cpp msgid "Use this style?" -msgstr "使用這個招式?" +msgstr "學習這個招式?" #: src/newcharacter.cpp #, c-format @@ -135444,14 +137381,14 @@ msgid "" "\n" "Continue anyways?" msgstr "" -"已有名為'%s' 的角色存在於此世界。\n" -"儲存將覆蓋已存在的角色。\n" +"已有名為 %s 的角色存在於此世界。\n" +"儲存將覆蓋已經存在的角色。\n" "\n" "要繼續嗎?" #: src/newcharacter.cpp msgid "Last Character" -msgstr "上次使用的角色" +msgstr "上一個角色" #: src/newcharacter.cpp msgid "POINTS" @@ -135483,16 +137420,16 @@ msgstr "描述" #: src/newcharacter.cpp msgid "points" -msgstr "點" +msgstr "點數" #: src/newcharacter.cpp #, c-format msgid "(Press %s to change)" -msgstr "(按下 %s 來改變)" +msgstr "(按 %s 改變)" #: src/newcharacter.cpp msgid "Sort by:" -msgstr "排序規則:" +msgstr "排序模式:" #: src/newcharacter.cpp msgid "Multiple pools" @@ -135504,9 +137441,9 @@ msgid "" "Putting stat points into traits and skills is allowed and putting trait points into skills is allowed.\n" "Scenarios and professions affect skill point pool" msgstr "" -"屬性、專長與技能點數分別計算。\n" -"允許把屬性點數花在專長和技能上, 而專長點數亦可以用在技能上。\n" -"劇情和職業會影響屬性點數。" +"屬性、特質、與技能點數分別計算。\n" +"劇情和職業會影響屬性點數。\n" +"允許把屬性點數花在特質與技能上, 或是把特質點數花在技能上。" #: src/newcharacter.cpp msgid "Single pool" @@ -135514,15 +137451,15 @@ msgstr "點數共通" #: src/newcharacter.cpp msgid "Stats, traits and skills share a single point pool." -msgstr "屬性、專長與技能共用點數。" +msgstr "屬性、特質與技能點數可以共通使用。" #: src/newcharacter.cpp msgid "No point limits are enforced" -msgstr "無點數限制。" +msgstr "沒有任何點數限制。" #: src/newcharacter.cpp msgid "Return to main menu?" -msgstr "回到主選單?" +msgstr "返回主選單?" #: src/newcharacter.cpp #, c-format @@ -135531,24 +137468,24 @@ msgid "" " %s to increase the statistic.\n" " %s to decrease the statistic." msgstr "" -" %s / %s 方向鍵選擇屬性。\n" -" %s 提昇屬性。\n" -" %s 降低屬性。" +" 按 %s / %s 選擇屬性。\n" +" 按 %s 提昇屬性。\n" +" 按 %s 降低屬性。" #: src/newcharacter.cpp #, c-format msgid "%s lets you view and alter keybindings." -msgstr "%s 檢視與更改按鍵配置。" +msgstr "按 %s 檢視熱鍵設定。" #: src/newcharacter.cpp #, c-format msgid "%s takes you to the next tab." -msgstr "%s 移到下個分頁。" +msgstr "按 %s 移到下個分頁。" #: src/newcharacter.cpp #, c-format msgid "%s returns you to the main menu." -msgstr "%s 回到主選單。" +msgstr "按 %s 移到上個分頁。" #: src/newcharacter.cpp src/player_display.cpp msgid "Strength:" @@ -135568,7 +137505,7 @@ msgstr "感知:" #: src/newcharacter.cpp msgid "Increasing Str further costs 2 points." -msgstr "繼續提升力量需要 2 點。" +msgstr "繼續提升 力量 需要 2 點數" #: src/newcharacter.cpp #, c-format @@ -135589,11 +137526,13 @@ msgstr "近戰傷害加成: %.1f" msgid "" "Strength also makes you more resistant to many diseases and poisons, and " "makes actions which require brute force more effective." -msgstr "提昇力量也能讓你增加對疾病與毒素的抵抗力, 也讓需要使用蠻力的動作更有效率。" +msgstr "" +"力量影響你的近戰傷害、可背負的重量、整體 HP、\n" +"對疾病與毒素的抵抗力、以及需要蠻力的動作的效率。" #: src/newcharacter.cpp msgid "Increasing Dex further costs 2 points." -msgstr "繼續提升敏捷需要 2 點。" +msgstr "繼續提升 敏捷 需要 2 點數" #: src/newcharacter.cpp #, c-format @@ -135603,20 +137542,22 @@ msgstr "近戰命中加成: +%.2f" #: src/newcharacter.cpp #, c-format msgid "Throwing penalty per target's dodge: +%d" -msgstr "每點目標閃避的投擲懲罰: +%d" +msgstr "每點目標閃避值的投擲懲罰: +%d" #: src/newcharacter.cpp #, c-format msgid "Ranged penalty: -%d" -msgstr "遠距懲罰: -%d" +msgstr "遠程懲罰: -%d" #: src/newcharacter.cpp msgid "Dexterity also enhances many actions which require finesse." -msgstr "敏捷可提高許多行動的技巧。" +msgstr "" +"敏捷影響你的近戰命中機率、在遠程戰鬥幫助你穩定槍枝、\n" +"並增強需要靈巧的動作。" #: src/newcharacter.cpp msgid "Increasing Int further costs 2 points." -msgstr "繼續提升智力需要 2 點。" +msgstr "繼續提升 智力 需要 2 點數" #: src/newcharacter.cpp #, c-format @@ -135637,11 +137578,14 @@ msgstr "物品製作加成: %2d%%" msgid "" "Intelligence is also used when crafting, installing bionics, and interacting" " with NPCs." -msgstr "智力可用於製作物品, 安裝生化插件, 以及與NPC的互動上。" +msgstr "" +"智力在大多數情況下不重要, 但它是執行複雜任務的關鍵,\n" +"例如製作電子物品、安裝生化插件、或是與 NPC 互動。\n" +"它也影響你能透過閱讀書本學到多少技能。" #: src/newcharacter.cpp msgid "Increasing Per further costs 2 points." -msgstr "提升感知需要 2 點。" +msgstr "繼續提升 感知 需要 2 點數" #: src/newcharacter.cpp #, c-format @@ -135651,7 +137595,7 @@ msgstr "瞄準懲罰: -%d" #: src/newcharacter.cpp msgid "" "Perception is also used for detecting traps and other things of interest." -msgstr "感知用於偵測陷阱以及發現週遭一些東西。" +msgstr "感知是遠程戰鬥的重要屬性。它同時也用於偵測陷阱和其他有趣的事物。" #: src/newcharacter.cpp #, c-format @@ -135661,11 +137605,11 @@ msgstr[0] "%s %s %d 點數" #: src/newcharacter.cpp msgid "costs" -msgstr "花費" +msgstr "需要" #: src/newcharacter.cpp msgid "earns" -msgstr "獲得" +msgstr "給予" #: src/newcharacter.cpp #, c-format @@ -135679,11 +137623,11 @@ msgstr "你的 %s 職業不允許你移除這個特質。" #: src/newcharacter.cpp msgid "You already picked a conflicting trait!" -msgstr "你已經選了一個相衝突的特質!" +msgstr "你已經選擇了一個相互衝突的特質!" #: src/newcharacter.cpp msgid "The scenario you picked prevents you from taking this trait!" -msgstr "你選擇的劇情不允許你挑選這個特質!" +msgstr "你選擇的劇情不允許你選擇這個特質!" #: src/newcharacter.cpp #, c-format @@ -135699,7 +137643,7 @@ msgstr[0] "抱歉, 你只能選取 %d 點劣勢。" #: src/newcharacter.cpp msgid "Nothing found." -msgstr "沒有發現。" +msgstr "你的篩選沒有結果。" #: src/newcharacter.cpp msgid "no filter" @@ -135710,14 +137654,14 @@ msgstr "沒有篩選" #, c-format msgid "Profession %1$s earns %2$d point" msgid_plural "Profession %1$s earns %2$d points" -msgstr[0] "職業 %1$s 將得到 %2$d 點數" +msgstr[0] "%1$s 給予 %2$d 點數" #. ~ 1s - profession name, 2d - current character points. #: src/newcharacter.cpp #, c-format msgid "Profession %1$s costs %2$d point" msgid_plural "Profession %1$s costs %2$d points" -msgstr[0] "職業 %1$s 需花費 %2$d 點數" +msgstr[0] "%1$s 需要 %2$d 點數" #: src/newcharacter.cpp msgid "Addictions:" @@ -135773,11 +137717,11 @@ msgstr "無" #: src/newcharacter.cpp msgid "toggled" -msgstr "已切換" +msgstr "切換" #: src/newcharacter.cpp msgid "activated" -msgstr "啟動的" +msgstr "啟動" #: src/newcharacter.cpp #, c-format @@ -135785,47 +137729,47 @@ msgid "" "Press %1$s or %2$s to " "scroll." msgstr "" -"按下 %1$s 或 %2$s 來捲動。" +"按 %1$s 或 %2$s 捲動列表。" #. ~ Gender switch message. 1s - change key name, 2s - profession name. #: src/newcharacter.cpp #, c-format msgid "Press %1$s to switch to %2$s( female )." -msgstr "按 %1$s 切換成 %2$s (女性)。" +msgstr "按 %1$s 切換 %2$s (女性)。" #: src/newcharacter.cpp #, c-format msgid "Press %1$s to switch to %2$s(male)." -msgstr "按 %1$s 來換成 %2$s (男性)。" +msgstr "按 %1$s 切換 %2$s (男性)。" #: src/newcharacter.cpp msgid "Search by profession name." -msgstr "按職業搜尋。" +msgstr "搜尋職業名稱。" #: src/newcharacter.cpp #, c-format msgid "Upgrading %s costs %d point" msgid_plural "Upgrading %s costs %d points" -msgstr[0] "升級 %s 需花費 %d 點數" +msgstr[0] "升級 %s 需要 %d 點數" #. ~ 1s - scenario name, 2d - current character points. #: src/newcharacter.cpp #, c-format msgid "Scenario %1$s earns %2$d point" msgid_plural "Scenario %1$s earns %2$d points" -msgstr[0] "劇情 %1$s 獲得 %2$d 點" +msgstr[0] "%1$s 給予 %2$d 點數" #. ~ 1s - scenario name, 2d - current character points. #: src/newcharacter.cpp #, c-format msgid "Scenario %1$s costs %2$d point" msgid_plural "Scenario %1$s cost %2$d points" -msgstr[0] "劇情 %1$s 花費 %2$d 點" +msgstr[0] "%1$s 需要 %2$d 點數" #: src/newcharacter.cpp msgid "" "This scenario is not available in this world due to city size settings. " -msgstr "此場景不適用於此世界, 因為城市規模的設定。" +msgstr "因為城市規模設定, 這個劇情無法在這個世界使用。" #: src/newcharacter.cpp msgid "Professions:" @@ -135846,7 +137790,7 @@ msgstr ", 預設:\n" #: src/newcharacter.cpp msgid "Scenario Location:" -msgstr "劇情位置:" +msgstr "劇情地點:" #: src/newcharacter.cpp msgid "Scenario Flags:" @@ -135870,15 +137814,15 @@ msgstr "冬天開局" #: src/newcharacter.cpp msgid "Next summer start" -msgstr "第二個夏季開局" +msgstr "第二年的夏天開局" #: src/newcharacter.cpp msgid "Infected player" -msgstr "受感染的玩家" +msgstr "受到感染" #: src/newcharacter.cpp msgid "Drunk and sick player" -msgstr "又病又醉的玩家" +msgstr "又醉又病" #: src/newcharacter.cpp msgid "Fire nearby" @@ -135894,11 +137838,11 @@ msgstr "四肢帶傷" #: src/newcharacter.cpp msgid "No starting NPC" -msgstr "" +msgstr "沒有初始 NPC" #: src/newcharacter.cpp msgid "Search by scenario name." -msgstr "按劇情名稱搜尋。" +msgstr "搜尋劇情名稱。" #: src/newcharacter.cpp msgid "Name:" @@ -135926,39 +137870,39 @@ msgstr "技能:" #: src/newcharacter.cpp msgid "(Top 8)" -msgstr "(最高 8)" +msgstr "(顯示最高的 8 項)" #: src/newcharacter.cpp #, c-format msgid "Press %s to finish character creation or %s to go back." -msgstr "按 %s 完成創造角色 或是按 %s 回頭瀏覽你的角色。" +msgstr "按 %s 完成創造角色, 按 %s 回頭檢視角色設定。" #: src/newcharacter.cpp #, c-format msgid "" "Press %s to save character template, %s to re-roll or %s for random " "scenario." -msgstr "按下 %s 把這個角色儲存成模版, 按 %s 隨機角色或按 %s 隨機劇情。" +msgstr "按 %s 儲存角色模板, 按 %s 重擲隨機角色, 按 %s 重擲隨機角色以及劇情。" #: src/newcharacter.cpp #, c-format msgid "Press %s to save a template of this character." -msgstr "按下 %s 把這個角色儲存成模版。" +msgstr "按 %s 儲存角色模板。" #: src/newcharacter.cpp #, c-format msgid "Press %s to pick a random name." -msgstr "按 %s 來隨機挑選名字。" +msgstr "按 %s 隨機挑選角色名字。" #: src/newcharacter.cpp #, c-format msgid "Press %s to switch gender" -msgstr "按 %s 來切換性別" +msgstr "按 %s 切換性別" #: src/newcharacter.cpp #, c-format msgid "Press %s to select location." -msgstr "按 %s 來選擇地點。" +msgstr "按 %s 選擇角色起始地點。" #: src/newcharacter.cpp msgid "Starting location:" @@ -135974,33 +137918,33 @@ msgstr "職業: " #: src/newcharacter.cpp msgid "Too many points allocated, change some features and try again." -msgstr "分配了太多點數, 調整一下再試試吧。" +msgstr "分配了太多點數, 調整一下再試試。" #: src/newcharacter.cpp msgid "" "Too many trait points allocated, change some traits or lower some stats and " "try again." -msgstr "分配了太多特質點數, 調整一下特質或是降低一些屬性再試試吧。" +msgstr "分配了太多特質點數, 調整一下特質或是降低一些屬性再試試。" #: src/newcharacter.cpp msgid "Too many stat points allocated, lower some stats and try again." -msgstr "分配了太多屬性點數, 降低一些屬性再試試吧。" +msgstr "分配了太多屬性點數, 降低一些屬性再試試。" #: src/newcharacter.cpp msgid "Remaining points will be discarded, are you sure you want to proceed?" -msgstr "未分配的點數將被捨棄, 你確定要進行?" +msgstr "剩餘點數將被捨棄, 你確定要繼續嗎?" #: src/newcharacter.cpp msgid "_______NO NAME ENTERED!_______" -msgstr "" +msgstr "________ 沒有輸入名字! ________" #: src/newcharacter.cpp msgid "Are you SURE you're finished? Your name will be randomly generated." -msgstr "你確定完成了嗎? 你的名字將會隨機產生。" +msgstr "你 *確定* 完成了嗎? 你的名字將會隨機產生。" #: src/newcharacter.cpp src/worldfactory.cpp msgid "Are you SURE you're finished?" -msgstr "你確定完成了?" +msgstr "你 *確定* 完成了嗎?" #: src/newcharacter.cpp msgid "Name of template:" @@ -136008,22 +137952,22 @@ msgstr "模板名稱:" #: src/newcharacter.cpp msgid "Keep in mind you may not use special characters like / in filenames" -msgstr "記住你不能使用特殊符號 (例如: / ) 在檔案名稱上。" +msgstr "記住你不能在檔案名稱裡使用特殊符號 (例如: / )。" #: src/newcharacter.cpp msgid "" "Conversion of your filename to your native character set resulted in some " "unsafe characters, please try an alphanumeric filename instead" -msgstr "" +msgstr "將你的檔案名稱轉換為本地字元集時產生了一些不安全的字元, 請嘗試使用英文與數字來命名檔案。" #: src/newcharacter.cpp msgid "player template" -msgstr "玩家模板" +msgstr "角色模板" #: src/npc.cpp #, c-format msgid " wears the %s." -msgstr " 穿起了 %s。" +msgstr " 穿戴了 %s。" #: src/npc.cpp #, c-format @@ -136244,13 +138188,13 @@ msgstr "冷血的殺害了無辜的 %s。他們很弱。" #, c-format msgctxt "memorial_male" msgid "Killed an innocent, %s." -msgstr "殺死了無辜的 %s 。" +msgstr "殺死了無辜的 %s。" #: src/npc.cpp #, c-format msgctxt "memorial_female" msgid "Killed an innocent, %s." -msgstr "殺死了無辜的 %s 。" +msgstr "殺死了無辜的 %s。" #: src/npc.cpp #, c-format @@ -136356,7 +138300,7 @@ msgstr " 不再膽怯了。" #: src/npcmove.cpp msgid "" -msgstr "" +msgstr "" #: src/npcmove.cpp #, c-format @@ -136365,7 +138309,7 @@ msgstr "%s 躺下並開始睡覺。" #: src/npcmove.cpp msgid "Don't move a muscle..." -msgstr "別想亂動..." +msgstr "別想亂動…" #: src/npcmove.cpp #, c-format @@ -136404,13 +138348,13 @@ msgstr "%s 緊張地四處張望, 彷彿在尋找什麼東西。" #: src/npcmove.cpp src/output.h msgid " and " -msgstr " 和 " +msgstr " 與 " #: src/npcmove.cpp #, c-format msgid "%s drops %d item." msgid_plural "%s drops %d items." -msgstr[0] "%s 丟棄 %d 物品。" +msgstr[0] "%s 丟棄了 %d 個物品。" #: src/npcmove.cpp #, c-format @@ -136566,7 +138510,7 @@ msgstr "我 %s 被咬的傷口看起來有點糟。" #: src/npcmove.cpp msgid "" -msgstr "" +msgstr "" #: src/npcmove.cpp msgid "I'm suffering from radiation sickness..." @@ -136641,56 +138585,14 @@ msgstr " 如果你有興趣的話, 我需要一個幫手。" msgid " If you are interested, I have another job for you." msgstr " 我有另一件工作給你。想要聽看看嗎?" -#: src/npctalk.cpp -msgid "Pleasure doing business!" -msgstr "開張大吉!" - -#: src/npctalk.cpp -msgid "Well, I guess it's just us." -msgstr "嗯, 我想只剩我們了。" - -#: src/npctalk.cpp -msgid "At least we've got shelter." -msgstr "至少我們還有避難所。" - -#: src/npctalk.cpp -msgid "I don't know, look for supplies and other survivors I guess." -msgstr "我不知道, 我想應該就是蒐集物資以及找其他的生存者吧。" - -#: src/npctalk.cpp -msgid "Maybe we should start boarding up this place." -msgstr "也許我們要開始把這個地方用木板加固起來。" - -#: src/npctalk.cpp -msgid "" -"I suppose getting a car up and running should really be useful if we have to" -" disappear quickly from here." -msgstr "如果我們要迅速從這裡消失, 我想取得一輛車來行駛應該是很有幫助。" - -#: src/npctalk.cpp -msgid "" -"We could look for one of those farms out here. They can provide plenty of " -"food and aren't close to the cities." -msgstr "我們可以找個這樣的農場, 他們可以提供大量的食物, 而且遠離城市。" - -#: src/npctalk.cpp -msgid "" -"We should probably stay away from those cities, even if there's plenty of " -"useful stuff there." -msgstr "我們最好遠離那些城市, 即使有許多實用的東西在那裡。" - #: src/npctalk.cpp msgid "You just asked me for stuff; ask later." -msgstr "你沒多久前才跟我要東西;晚點再說吧。" +msgstr "你沒多久前才跟我要東西, 晚點再說吧。" #: src/npctalk.cpp msgid "Why should I share my equipment with you?" msgstr "為什麼要我分裝備給你?" -#: src/npctalk.cpp -msgid "Okay, here you go." -msgstr "好啦, 給你。" - #: src/npctalk.cpp msgid ", and if you ask again, !" msgstr ", 要是你敢再問的話, !" @@ -136709,47 +138611,7 @@ msgstr "抱歉, 看來我沒有什麼能教你的了。" #: src/npctalk.cpp msgid "Here's what I can teach you..." -msgstr "這些是我能教你的..." - -#: src/npctalk.cpp -msgid "Alright, let's begin." -msgstr "好吧, 我們開始。" - -#: src/npctalk.cpp -msgid "Not until I get some antibiotics..." -msgstr "我還沒找到抗生素..." - -#: src/npctalk.cpp -msgid "You asked me recently; ask again later." -msgstr "你沒多久前才問過我;晚點再說吧。" - -#: src/npctalk.cpp -msgid "Why should I travel with you?" -msgstr "為什麼我要跟著你旅行?" - -#: src/npctalk.cpp -msgid "You got it, I'm with you!" -msgstr "我懂了, 我跟著你!" - -#: src/npctalk.cpp -msgid "Yeah... I don't think so." -msgstr "痾... 我不這麼覺得。" - -#: src/npctalk.cpp -msgid "What is it?" -msgstr "什麼事?" - -#: src/npctalk.cpp -msgid "You're really leaving?" -msgstr "你真的要離開?" - -#: src/npctalk.cpp -msgid "Alright. You can lead now." -msgstr "好吧。你可以帶路了。" - -#: src/npctalk.cpp -msgid "No. I'm the leader here." -msgstr "不。我才是領隊。" +msgstr "這些是我能教你的…" #: src/npctalk.cpp #, c-format @@ -136762,22 +138624,6 @@ msgid "%d foot." msgid_plural "%d feet." msgstr[0] "%d 呎。" -#: src/npctalk.cpp -msgid "I'm on watch." -msgstr "我來把風。" - -#: src/npctalk.cpp -msgid "Not a bloody chance, I'm going to get left behind!" -msgstr "我才不要, 我會被丟在後面沒人理!" - -#: src/npctalk.cpp -msgid "I'd prefer to keep that to myself." -msgstr "我想自己管好自己就好了。" - -#: src/npctalk.cpp -msgid "I really don't feel comfortable doing so..." -msgstr "這麼做讓我不是很舒服..." - #: src/npctalk.cpp msgid "*is not engaging enemies." msgstr "*將不會攻擊敵人。" @@ -136815,27 +138661,27 @@ msgstr "她" #: src/npctalk.cpp #, c-format msgid " %s will use silenced firearms." -msgstr " %s將使用無聲的槍械。" +msgstr "%s將使用無聲的槍械。" #: src/npctalk.cpp #, c-format msgid " %s will use firearms." -msgstr " %s將使用槍械。" +msgstr "%s將使用槍械。" #: src/npctalk.cpp #, c-format msgid " %s will not use firearms." -msgstr " %s將不會使用槍械。" +msgstr "%s將不會使用槍械。" #: src/npctalk.cpp #, c-format msgid " %s will use grenades." -msgstr " %s會使用榴彈。" +msgstr "%s會使用榴彈。" #: src/npctalk.cpp #, c-format msgid " %s will not use grenades." -msgstr " %s不會使用榴彈。" +msgstr "%s不會使用榴彈。" #: src/npctalk.cpp msgid "What should I do?" @@ -136855,7 +138701,7 @@ msgstr "我在這裡經營商店。" #: src/npctalk.cpp msgid "I'm guarding this location." -msgstr "我正在防禦這個位置。" +msgstr "我正在守衛這個地點。" #: src/npctalk.cpp msgid "&You yell, but can't hear yourself." @@ -136891,7 +138737,7 @@ msgstr "筋疲力竭" #: src/npctalk.cpp src/sidebar.cpp msgid "Dead tired" -msgstr "累得要死" +msgstr "累得半死" #: src/npctalk.cpp src/sidebar.cpp msgid "Tired" @@ -136915,7 +138761,7 @@ msgstr "快一點啦, 我想要回去睡覺了。" #: src/npctalk.cpp msgid "Just few minutes more..." -msgstr "再幾分鐘就好..." +msgstr "再幾分鐘就好…" #: src/npctalk.cpp msgid "Anything to do before I go to sleep?" @@ -136924,67 +138770,67 @@ msgstr "在我要睡之前還有什麼要做的嗎?" #: src/npctalk.cpp #, c-format msgid " %s will pick up all items." -msgstr "%s 會撿取所有物品。" +msgstr "%s會撿取所有物品。" #: src/npctalk.cpp #, c-format msgid " %s will pick up items from the whitelist." -msgstr "%s 會撿取白名單裡頭的物品。" +msgstr "%s會撿取白名單裡頭的物品。" #: src/npctalk.cpp #, c-format msgid " %s will not pick up items." -msgstr "%s 不會撿取物品。" +msgstr "%s不會撿取物品。" #: src/npctalk.cpp #, c-format msgid " %s will bash down obstacles." -msgstr "%s 會打壞障礙物。" +msgstr "%s會打壞障礙物。" #: src/npctalk.cpp #, c-format msgid " %s will not bash down obstacles." -msgstr "%s 不會打壞障礙物。" +msgstr "%s不會打壞障礙物。" #: src/npctalk.cpp #, c-format msgid " %s will sleep when tired." -msgstr "%s 累的時候會睡的。" +msgstr "%s累的時候會去睡。" #: src/npctalk.cpp #, c-format msgid " %s will sleep only when exhausted." -msgstr "%s 只有精疲力竭的時候才會去睡。" +msgstr "%s只有精疲力竭的時候才會去睡。" #: src/npctalk.cpp #, c-format msgid " %s will complain about wounds and needs." -msgstr "%s 會抱怨傷口跟需求。" +msgstr "%s會抱怨傷口跟需求。" #: src/npctalk.cpp #, c-format msgid " %s will only complain in an emergency." -msgstr "%s 只有在緊急情況下才會抱怨。" +msgstr "%s只有在緊急情況下才會抱怨。" #: src/npctalk.cpp #, c-format msgid " %s will smash nearby zombie corpses." -msgstr "%s 將砸碎附近的殭屍屍體。" +msgstr "%s會砸碎附近的殭屍屍體。" #: src/npctalk.cpp #, c-format msgid " %s will leave zombie corpses intact." -msgstr "%s 將保持殭屍屍體完整。" +msgstr "%s會保持殭屍屍體完整。" #: src/npctalk.cpp #, c-format msgid " %s will close doors behind themselves." -msgstr "%s 通過門後會把它關上。" +msgstr "%s通過門後會把它關上。" #: src/npctalk.cpp #, c-format msgid " %s will leave doors open." -msgstr "%s 會讓門敞開著。" +msgstr "%s會讓門保持敞開。" #: src/npctalk.cpp msgid "YES, MASTER!" @@ -137000,7 +138846,7 @@ msgstr "我有新消息。" #: src/npctalk.cpp msgid "I'm sorry... I failed." -msgstr "我很抱歉... 我失敗了。" +msgstr "我很抱歉… 我失敗了。" #: src/npctalk.cpp msgid "Not yet." @@ -137044,7 +138890,7 @@ msgstr "我帶來了。" #: src/npctalk.cpp msgid "I've taken care of it..." -msgstr "我已經辦好這件事了..." +msgstr "我已經辦好這件事了…" #: src/npctalk.cpp msgid "Mission success! I don't know what else to say." @@ -137077,36 +138923,12 @@ msgstr "為我工作。" #: src/npctalk.cpp msgid "You might be seeing more of me..." -msgstr "你可能會看到越來越多的我..." +msgstr "你可能會看到越來越多的我…" #: src/npctalk.cpp msgid "Delivering bandages." msgstr "提供繃帶。" -#: src/npctalk.cpp -msgid "What should we do now?" -msgstr "我們現在該怎麼辦?" - -#: src/npctalk.cpp -msgid "Any tips?" -msgstr "有建議嗎?" - -#: src/npctalk.cpp -msgid "Want to travel with me?" -msgstr "你願意跟我一起旅行嗎?" - -#: src/npctalk.cpp -msgid "Let's trade items." -msgstr "我們來交易吧。" - -#: src/npctalk.cpp -msgid "I can't leave the shelter without equipment..." -msgstr "我不能沒有裝備就離開避難所..." - -#: src/npctalk.cpp -msgid "Hmm, okay." -msgstr "嗯, 好吧。" - #: src/npctalk.cpp msgid "Okay, fine." msgstr "好吧, 算了。" @@ -137121,7 +138943,7 @@ msgstr "因為我是你的朋友!" #: src/npctalk.cpp msgid "Well, I am helping you out..." -msgstr "因為, 我正在幫你的忙..." +msgstr "因為, 我正在幫你的忙…" #: src/npctalk.cpp msgid "I'll give it back!" @@ -137139,30 +138961,6 @@ msgstr "痾, 算了。" msgid "Never mind, I'll do without. Bye." msgstr "算了, 沒有也行, 再見。" -#: src/npctalk.cpp -msgid "Thank you!" -msgstr "謝謝!" - -#: src/npctalk.cpp -msgid "Thanks! But can I have some more?" -msgstr "謝了! 還可以再給多點嗎?" - -#: src/npctalk.cpp -msgid "Thanks, see you later!" -msgstr "謝了, 待會見!" - -#: src/npctalk.cpp -msgid "Okay, okay, sorry." -msgstr "好吧, 好吧, 真抱歉。" - -#: src/npctalk.cpp -msgid "Seriously, give me more stuff!" -msgstr "我說真的, 再給我東西!" - -#: src/npctalk.cpp -msgid "Okay, fine, bye." -msgstr "好吧, 好, 再見。" - #: src/npctalk.cpp msgid "Yes, let's resume training " msgstr "好, 繼續訓練 " @@ -137184,94 +138982,6 @@ msgstr "%s: %d -> %d" msgid "%s: %d -> %d (cost $%d)" msgstr "%s: %d -> %d (花費 $%d)" -#: src/npctalk.cpp -msgid "Sounds good." -msgstr "聽起來不錯。" - -#: src/npctalk.cpp -msgid "On second thought, never mind." -msgstr "我再想想, 抱歉。" - -#: src/npctalk.cpp -msgid "Okay. Lead the way." -msgstr "好。帶路吧。" - -#: src/npctalk.cpp -msgid "No, we'll be okay here." -msgstr "不, 我待在這就好了。" - -#: src/npctalk.cpp -msgid "Understood. I'll get those antibiotics." -msgstr "了解。我會找到抗生素的。" - -#: src/npctalk.cpp -msgid "Right, right, I'll ask later." -msgstr "好吧, 好吧, 我待會再問。" - -#: src/npctalk.cpp -msgid "I can keep you safe." -msgstr "我能保護你。" - -#: src/npctalk.cpp -msgid "You can keep me safe." -msgstr "你能保護我。" - -#: src/npctalk.cpp -msgid "We're friends, aren't we?" -msgstr "我們不是朋友嗎?" - -#: src/npctalk.cpp -msgid "I'll kill you if you don't." -msgstr "你不照做我就殺了你!" - -#: src/npctalk.cpp -msgid "Awesome!" -msgstr "讚啦!" - -#: src/npctalk.cpp -msgid "Okay, let's go!" -msgstr "好, 我們走!" - -#: src/npctalk.cpp -msgid "How much further?" -msgstr "還有多遠?" - -#: src/npctalk.cpp -msgid "I'm going to go my own way for a while." -msgstr "我要暫時分開一會。" - -#: src/npctalk.cpp -msgid "I'd like to lead for a while." -msgstr "我要暫時帶領一會。" - -#: src/npctalk.cpp -msgid "Step aside. I'm leader now." -msgstr "讓開。我現在是領隊了。" - -#: src/npctalk.cpp -msgid "Let's go." -msgstr "我們走。" - -#: src/npctalk.cpp -msgid "Nah, I'm just kidding." -msgstr "啊, 只是開玩笑而已。" - -#: src/npctalk.cpp -msgid "Yeah, I'm sure. Bye." -msgstr "耶, 我很確定。掰。" - -#: src/npctalk.cpp -msgid "Good. Something else..." -msgstr "好。還有其他的..." - -#: src/npctalk.cpp -msgid "Alright, let's go." -msgstr "好吧, 我們走。" - -#: src/npctalk.cpp -msgid "Okay, okay." -msgstr "好啦, 好啦。" - #: src/npctalk.cpp msgid "Okay, thanks." msgstr "好啦, 謝了。" @@ -137280,13 +138990,9 @@ msgstr "好啦, 謝了。" msgid "Let's keep moving." msgstr "我們繼續行動吧。" -#: src/npctalk.cpp -msgid "I need you to come with me." -msgstr "我需要你跟我來。" - #: src/npctalk.cpp msgid "Combat commands..." -msgstr "戰鬥指令..." +msgstr "戰鬥指令…" #: src/npctalk.cpp msgid "I can't train you properly while you're operating a vehicle!" @@ -137294,7 +139000,7 @@ msgstr "你在駕駛車輛時我無法訓練你。" #: src/npctalk.cpp msgid "Give it some time, I'll show you something new later..." -msgstr "給我點時間, 我會讓你看些新玩意..." +msgstr "給我點時間, 我會讓你看些新玩意…" #: src/npctalk.cpp msgid "I'm too thirsty, give me something to drink." @@ -137302,7 +139008,7 @@ msgstr "我太渴了, 給我點能喝的東西。" #: src/npctalk.cpp msgid "I'm too hungry, give me something to eat." -msgstr "我太渴了, 給我點能吃的東西。" +msgstr "我太餓了, 給我點能吃的東西。" #: src/npctalk.cpp msgid "I'm too tired, let me rest first." @@ -137326,7 +139032,7 @@ msgstr "守護這個地點。" #: src/npctalk.cpp msgid "I'd like to know a bit more about you..." -msgstr "我想更了解你一點..." +msgstr "我想更了解你一點…" #: src/npctalk.cpp msgid "I want you to use this item" @@ -137338,23 +139044,19 @@ msgstr "拿著這個物品" #: src/npctalk.cpp msgid "Miscellaneous rules..." -msgstr "一些行動規則..." +msgstr "一些行動規則…" #: src/npctalk.cpp -msgid "Let's talk about faction camps." -msgstr "" - -#: src/npctalk.cpp -msgid "I'll give you some space." -msgstr "我會給你一些空間。" +msgid "I'm going to go my own way for a while." +msgstr "我要暫時分開一會。" #: src/npctalk.cpp -msgid "I understand..." -msgstr "我了解..." +msgid "Let's talk about faction camps." +msgstr "" #: src/npctalk.cpp msgid "Change your engagement rules..." -msgstr "更改你的交戰守則..." +msgstr "更改你的交戰守則…" #: src/npctalk.cpp msgid "Change your aiming rules..." @@ -137478,7 +139180,7 @@ msgstr "不理會屍體" #: src/npctalk.cpp msgid "Smash zombie corpses." -msgstr "砸碎殭屍屍體" +msgstr "砸爛殭屍屍體。" #: src/npctalk.cpp msgid "Close the doors." @@ -137548,6 +139250,8 @@ msgid "" "%s \n" "Are you sure you wish to continue? " msgstr "" +"%s \n" +"你確定你想要繼續嗎?" #: src/npctalk.cpp msgid "You weren't able to survey the camp site." @@ -137642,20 +139346,20 @@ msgstr "" #: src/npctalk.cpp msgid "I don't trust you enough to eat THIS..." -msgstr "我還沒 相信你到要吃那個東西..." +msgstr "我還沒 相信你到要吃那個東西…" #: src/npctalk.cpp msgid "It doesn't look like a good idea to consume this..." -msgstr "吃下它並不是個好主意..." +msgstr "食用它看起來並不是個好主意…" #: src/npctalk.cpp #, c-format msgid "I need a %s to consume that!" -msgstr "我需要 %s 來使用它!" +msgstr "我需要 %s 才能食用它!" #: src/npctalk.cpp msgid "It doesn't look like a good idea to consume this.." -msgstr "吃下它並不是個好主意..." +msgstr "食用它看起來並不是個好主意…" #: src/npctalk.cpp msgid "Offer what?" @@ -137663,7 +139367,7 @@ msgstr "能提供哪些?" #: src/npctalk.cpp msgid "You have no items to offer." -msgstr "你沒有東西可以提供" +msgstr "你沒有可以提供的東西。" #: src/npctalk.cpp msgid "Changed your mind?" @@ -137679,7 +139383,7 @@ msgstr "你瘋了嗎!?" #: src/npctalk.cpp msgid "Here we go..." -msgstr "我們開始吧..." +msgstr "我們開始吧…" #: src/npctalk.cpp msgid "My current weapon is better than this." @@ -137692,7 +139396,7 @@ msgstr "(新武器的價值: %.1f vs %.1f)。" #: src/npctalk.cpp msgid "It's too encumbering to wear." -msgstr "這穿起來太累贅了。" +msgstr "這個穿起來太累贅了。" #: src/npctalk.cpp msgid "I have no space to store it." @@ -137771,7 +139475,7 @@ msgstr "你的錢不足以支付手術費…" #: src/npctalk_funcs.cpp msgid "You don't have any bionics installed..." -msgstr "你並沒有安裝任何生化插件…" +msgstr "你沒有安裝任何生化插件…" #: src/npctalk_funcs.cpp msgid "Which bionic do you wish to uninstall?" @@ -137785,17 +139489,17 @@ msgstr "%s 沒有東西能給你!" #: src/npctalk_funcs.cpp #, c-format msgid "%s gives you a decent haircut..." -msgstr "%s 替你剪了一頭體面的髮型..." +msgstr "%s 替你剪了一頭體面的髮型…" #: src/npctalk_funcs.cpp #, c-format msgid "%s gives you a decent shave..." -msgstr "%s 替你刮了一臉體面的鬍子..." +msgstr "%s 替你刮了一臉體面的鬍子…" #: src/npctalk_funcs.cpp #, c-format msgid "%s drops the logs off in the garage..." -msgstr "%s 把原木放進車庫..." +msgstr "%s 把原木放進車庫…" #: src/npctalk_funcs.cpp #, c-format @@ -137832,7 +139536,7 @@ msgstr "%s 覺得你的威脅減少了。" #: src/npctalk_funcs.cpp #, c-format msgid "Pause to stay still. Any movement may cause %s to attack." -msgstr "按 '.' 以停在原地。任何行動將導致 %s 的攻擊。" +msgstr "按 . 以待在原地。任何行動都可能導致 %s 的攻擊。" #: src/npctalk_funcs.cpp msgid "Pay:" @@ -137843,8 +139547,8 @@ msgid "" "TAB key to switch lists, letters to pick items, Enter to finalize, Esc to quit,\n" "? to get information on an item." msgstr "" -"[TAB] 切換買賣方 [字母] 選擇物品 [Enter] 確定交易 [Esc] 結束交易\n" -"[?] 查詢物品資訊" +"[Tab] 切換買賣方 [字母] 選擇物品 [Enter] 確定交易 [Esc] 結束交易\n" +"[?] 查詢物品資訊" #: src/npctrade.cpp #, c-format @@ -137905,35 +139609,35 @@ msgstr "%d (%s)" #: src/options.cpp #, c-format msgid "Default: %s - Values: %s" -msgstr "預設值: %s 可用值: %s" +msgstr " 預設值: %s 可用值: %s" #: src/options.cpp #, c-format msgid "Default: %s" -msgstr "預設值: %s" +msgstr " 預設值: %s" #: src/options.cpp msgid "Default: False" -msgstr "預設值: 否" +msgstr " 預設值: 否" #: src/options.cpp msgid "Default: True" -msgstr "預設值: 是" +msgstr " 預設值: 是" #: src/options.cpp #, c-format msgid "Default: %d - Min: %d, Max: %d" -msgstr "預設值: %d 最小值: %d 最大值: %d" +msgstr " 預設值: %d 最小值: %d 最大值: %d" #: src/options.cpp #, c-format msgid "Default: %d: %s" -msgstr "預設值: %d (%s)" +msgstr " 預設值: %d (%s)" #: src/options.cpp #, c-format msgid "Default: %.2f - Min: %.2f, Max: %.2f" -msgstr "預設值: %.2f 最小值: %.2f 最大值: %.2f" +msgstr " 預設值: %.2f 最小值: %.2f 最大值: %.2f" #: src/options.cpp msgid "Hoder's" @@ -137975,11 +139679,11 @@ msgstr "預設角色名字" msgid "" "Set a default character name that will be used instead of a random name on " "character creation." -msgstr "設定一個預設的角色名字, 而不是使用隨機產生的名稱。" +msgstr "設定一個預設的角色名字, 而不是使用隨機挑選的名字。" #: src/options.cpp msgid "Auto pickup enabled" -msgstr "啟用自動撿取" +msgstr "自動撿取" #: src/options.cpp msgid "" @@ -137995,7 +139699,7 @@ msgid "" "If true, will enable to pickup items one tile around to the player. You can" " assign No Auto Pickup zones with the Zones Manager 'Y' key for e.g. your " "homebase." -msgstr "設定為 [是], 將自動撿取玩家周圍一格的物品。你可以按 'Y' 使用 \"區域管理器\" 指定關閉自動撿取的區域, 例如: 你的基地。" +msgstr "設定為 [是], 將自動撿取玩家周圍一格的物品。你可以按 Y 使用 \"區域管理器\" 指派關閉自動撿取的區域, 例如: 你的基地。" #: src/options.cpp msgid "Auto pickup weight limit" @@ -138058,7 +139762,12 @@ msgid "" "corpses you stand on. - Pulp Adjacent: Also pulp corpses adjacent from you." " - Butcher: Butcher corpses you stand on." msgstr "" -"設定 \"自動打爛或屠宰\" 啟用時的行動。 [打爛] 打爛在你腳下的屍體。 [打爛鄰接] 把鄰接的屍體也一起打爛。 [屠宰] 屠宰在你腳下的屍體。" +"設定 \"自動打爛或屠宰\" 啟用時的動作。 [打爛] 打爛在你腳下的屍體。 [打爛鄰接] 把鄰接的屍體也一起打爛。 [屠宰] 屠宰在你腳下的屍體。" + +#: src/options.cpp +msgctxt "options" +msgid "Disabled" +msgstr "停用" #: src/options.cpp msgid "Pulp" @@ -138086,7 +139795,7 @@ msgstr "自動採集" msgid "" "Action to perform when 'Auto foraging' is enabled. Bushes: Only forage " "bushes. - Trees: Only forage trees. - Both: Forage bushes and trees." -msgstr "設定 \"自動採集\" 啟用時的行動。 [灌木] 只會採集灌木。 [樹木] 只會採集樹木。 [兩者] 採集灌木與樹木。" +msgstr "設定 \"自動採集\" 啟用時的動作。 [灌木] 只會採集灌木。 [樹木] 只會採集樹木。 [兩者] 採集灌木與樹木。" #: src/options.cpp msgid "Both" @@ -138169,7 +139878,8 @@ msgid "" "If enabled, monsters will take periodic gameplay turns. This value is the " "delay between each turn, in seconds. Works best with Safe Mode disabled. 0" " = disabled." -msgstr "假如啟用, 怪物將會隨著時間自行行動。輸入的數值是每回合之間的延遲, 以秒為單位。建議停用安全模式。設定為 [0] 會停用這個功能。" +msgstr "" +"假如啟用, 每經過 [設定值] * 秒, 遊戲會自動經過 1 回合, 並且怪物會依回合行動。啟用時建議停用安全模式。設定為 [0] 會停用這個功能。" #: src/options.cpp msgid "Autosave" @@ -138208,7 +139918,7 @@ msgid "" "If disabled, everything is square: moving to the northwest corner of a " "building takes as long as moving to the north wall." msgstr "" -"設定為 [是], 遊戲將會以更真實的方式計算距離: 光源會變成圓形、斜著移動距離會更遠也更費時。設定為 [否], 所有東西都是方形的: " +"設定為 [是], 遊戲將會以更真實的方式計算距離: 光源會變成圓形、斜線移動距離會更遠也更費時。設定為 [否], 所有東西都是方形的: " "移動到建築物的西北角跟移動到正北方的牆壁花費同樣的時間。" #: src/options.cpp @@ -138249,10 +139959,6 @@ msgstr " [總是] 總是啟動死亡鏡頭。 [詢問] 死後詢問。 [從不] msgid "Always" msgstr "總是" -#: src/options.cpp -msgid "Ask" -msgstr "詢問" - #: src/options.cpp msgid "Never" msgstr "從不" @@ -138432,33 +140138,32 @@ msgstr "設定為 [是], 當使用移動所有物品的命令後會關閉進階 #: src/options.cpp msgid "Open default advanced inventory layout" -msgstr "總是打開預設的進階物品欄頁面" +msgstr "總是打開預設的進階物品欄佈局" #: src/options.cpp msgid "Open default advanced inventory layout instead of last opened layout" -msgstr "設定為 [是], 會打開預設的進階物品欄頁面而不是上次打開的頁面。" +msgstr "設定為 [是], 會打開預設的進階物品欄佈局而不是上次使用的佈局。" #: src/options.cpp msgid "Display actions in Use Item menu" -msgstr "在 \"使用物品\" 選單中顯示相關行動" +msgstr "在 \"使用物品\" 選單中顯示相關動作" #: src/options.cpp msgid "" "If true, actions ( like \"Read\", \"Smoke\", \"Wrap tighter\" ) will be " "displayed next to the corresponding items." -msgstr "設定為 [是], 可用的行動 (如閱讀, 吸煙, 包緊) 會顯示在相應的物品旁邊。" +msgstr "設定為 [是], 可用的動作 (如閱讀、吸煙、包緊) 會顯示在相應的物品旁邊。" #: src/options.cpp msgid "Diagonal movement with cursor keys and modifiers" -msgstr "使用修飾鍵與方向鍵進行對角線移動" +msgstr "使用修飾鍵與方向鍵進行斜線移動" #: src/options.cpp msgid "" "If true, allows diagonal movement with cursor keys using CTRL and SHIFT " "modifiers. Diagonal movement action keys are taken from keybindings, so you" " need these to be configured." -msgstr "" -"設定為 [是], 允許使用 + 方向鍵 來進行對角線移動。對角線移動的行動按鍵取決於設定的熱鍵, 所以需要先進行設定。" +msgstr "設定為 [是], 允許使用 Ctrl 或 Shift 配合方向鍵來進行斜線移動。斜線移動的按鍵取決於熱鍵設定。" #: src/options.cpp msgid "Vehicle plating changes part color" @@ -138485,8 +140190,7 @@ msgid "" "If true, when controlling a vehicle, a white 'X' ( in curses version ) or a " "crosshair ( in tiles version ) at distance 10 from the center will display " "its current facing." -msgstr "" -"設定為 [是], 控制車輛時會把車輛的朝向以白色的 X 符號 (字符版本) 或十字線 (圖像版本) 顯示在距離車輛中心點前方 10 格的位置。" +msgstr "設定為 [是], 控制車輛時會把車輛的朝向以白色的 X 符號 (字符版本) 或十字線 (圖像版本) 顯示在距離角色前方 10 格的位置。" #: src/options.cpp msgid "Sidebar position" @@ -138500,11 +140204,11 @@ msgstr "切換側邊欄設在左側或右側。需要重新啟動遊戲。" #. ~ sidebar position #: src/options.cpp msgid "Left" -msgstr "左" +msgstr "左側" #: src/options.cpp msgid "Right" -msgstr "右" +msgstr "右側" #: src/options.cpp msgid "Sidebar style" @@ -138632,13 +140336,13 @@ msgstr "邊緣" #: src/options.cpp msgid "Auto inventory letters" -msgstr "自動分配物品代碼" +msgstr "自動指定物品代碼" #: src/options.cpp msgid "" "If false, new inventory items will only get letters assigned if they had one" " before." -msgstr "設定為 [否], 物品欄中的新物品只會在先前指定過字母時被分配代碼。" +msgstr "設定為 [否], 物品欄中的新物品只有在曾經擁有代碼時被指派代碼。" #: src/options.cpp msgid "Show item health bars" @@ -138663,7 +140367,7 @@ msgstr "啟用搖桿" #: src/options.cpp msgid "Enable input from joystick." -msgstr "啟用搖桿操作。" +msgstr "啟用搖桿輸入。" #: src/options.cpp msgid "Hide mouse cursor" @@ -138673,7 +140377,7 @@ msgstr "隱藏滑鼠游標" msgid "" "Show: Cursor is always shown. Hide: Cursor is hidden. HideKB: Cursor is " "hidden on keyboard input and unhidden on mouse movement." -msgstr " [顯示] 游標總是顯示。 [隱藏] 游標隱藏。 [自動] 游標會在鍵盤輸入時隱藏。" +msgstr " [顯示] 游標總是顯示。 [隱藏] 游標隱藏。 [自動] 游標會在鍵盤輸入時隱藏, 在滑鼠移動時取消隱藏。" #. ~ show mouse cursor #: src/options.cpp @@ -138704,7 +140408,7 @@ msgstr "下雨動畫" #: src/options.cpp msgid "If true, will display weather animations." -msgstr "設定為 [是], 將會顯示天氣的動畫。" +msgstr "設定為 [是], 將會顯示天氣動畫。" #: src/options.cpp msgid "SCT animation" @@ -138779,7 +140483,7 @@ msgid "" "If true, shows the pixel-detail minimap in game after the save is loaded. " "Use the 'Toggle Pixel Minimap' action key to change its visibility during " "gameplay." -msgstr "設定為 [是], 在載入存檔後顯示像素小地圖。使用 \"切換像素小地圖\" 按鍵來切換小地圖的顯示。" +msgstr "設定為 [是], 在讀取存檔後顯示像素小地圖。使用 \"切換像素小地圖\" 按鍵來切換小地圖的顯示。" #: src/options.cpp msgid "Pixel minimap drawing mode" @@ -138835,7 +140539,7 @@ msgstr "敵人標記閃爍速度" msgid "" "Controls how fast the enemy beacons blink on the pixel minimap. Value is " "multiplied by 200 ms. Set to 0 to disable." -msgstr "設定像素小地圖上的敵人標記閃爍速度。[設定值] 將被乘以 200 毫秒。設定為 [0] 會停用這個功能。" +msgstr "設定像素小地圖上的敵人標記閃爍速度為 [設定值] * 200 毫秒。設定為 [0] 會停用這個功能。" #: src/options.cpp src/sdltiles.cpp msgid "Display" @@ -138918,7 +140622,7 @@ msgstr "初始屬性點數" #: src/options.cpp msgid "Initial points available to spend on stats on character generation." -msgstr "創造角色時可用的屬性點數。" +msgstr "創造角色時可用的初始屬性點數。" #: src/options.cpp msgid "Initial trait points" @@ -138926,7 +140630,7 @@ msgstr "初始特質點數" #: src/options.cpp msgid "Initial points available to spend on traits on character generation." -msgstr "創造角色時可用的特質點數。" +msgstr "創造角色時可用的初始特質點數。" #: src/options.cpp msgid "Initial skill points" @@ -138934,7 +140638,7 @@ msgstr "初始技能點數" #: src/options.cpp msgid "Initial points available to spend on skills on character generation." -msgstr "創造角色時可用的技能點數。" +msgstr "創造角色時可用的初始技能點數。" #: src/options.cpp msgid "Maximum trait points" @@ -138942,7 +140646,7 @@ msgstr "最大特質點數" #: src/options.cpp msgid "Maximum trait points available for character generation." -msgstr "創造角色時可用的最大特質點數。" +msgstr "創造角色時允許的最大特質點數。" #: src/options.cpp msgid "Skill training speed" @@ -139111,7 +140815,7 @@ msgid "" "A scaling factor that determines the time between monster upgrades. A " "higher number means slower evolution. Set to 0.00 to turn off monster " "upgrades." -msgstr "設定怪物進化速度的比率。數字越大代表進化越慢。設定為 [0.00] 會停止怪物進化。" +msgstr "設定怪物進化的速度。數字越大代表進化越慢。設定為 [0.00] 會停止怪物進化。" #: src/options.cpp msgid "Monster speed" @@ -139121,7 +140825,7 @@ msgstr "怪物速度" msgid "" "Determines the movement rate of monsters. A higher value increases monster " "speed and a lower reduces it." -msgstr "設定怪物移動速度的比率。較高的數值會增加怪物的速度, 較低的數值會使它們變得遲緩。" +msgstr "設定怪物行動的速度。較高的數值會增加怪物的速度, 較低的數值會使它們變得遲緩。" #: src/options.cpp msgid "Monster resilience" @@ -139157,7 +140861,7 @@ msgstr "初始季節" msgid "" "Season the player starts in. Options other than the default delay spawn of " "the character, so food decay and monster spawns will have advanced." -msgstr "設定角色起始時的季節。設定為非預設的季節將會延遲角色的產生, 因此食物會腐壞, 產生的怪物也會進化。" +msgstr "設定角色起始時的季節。設定為非預設的季節將會延遲角色的產生, 因此食物會腐敗, 產生的怪物也會進化。" #: src/options.cpp msgid "Season length" @@ -139172,7 +140876,7 @@ msgstr "設定季節長度, 以天為單位。注意: 除了季節天數以外, #: src/options.cpp msgid "Construction scaling" -msgstr "建設需時" +msgstr "建造需時" #: src/options.cpp msgid "" @@ -139180,7 +140884,7 @@ msgid "" "default, '200' is two times longer. '0' automatically scales construction " "time to match the world's season length." msgstr "" -"設定建設所需要的時間, 以百分比為單位。 [50] 只需要一半時間。 [200] 則需要兩倍時間。[0] 會自動調整建設時間以符合世界的季節長度。" +"設定建造所需要的時間, 以百分比為單位。 [50] 只需要一半時間。 [200] 則需要兩倍時間。[0] 會自動調整建造時間以符合世界的季節長度。" #: src/options.cpp msgid "Eternal season" @@ -139281,11 +140985,11 @@ msgstr "設定為 [是], 向下的樓梯會直接放置在向上的樓梯之上, #: src/options.cpp msgid "Character point pools" -msgstr "角色點數池" +msgstr "角色點數" #: src/options.cpp msgid "Allowed point pools for character generation." -msgstr "設定創造角色時可用的點數池規則。" +msgstr "設定創造角色時可用的點數規則。" #: src/options.cpp msgid "Multi-pool only" @@ -139293,7 +140997,7 @@ msgstr "點數分別計算" #: src/options.cpp msgid "No freeform" -msgstr "無自由形式" +msgstr "沒有自由形式" #: src/options.cpp msgid "Quicksave on app lose focus" @@ -139456,7 +141160,7 @@ msgstr "新增快捷鍵用於動作選單的選取" msgid "" "If true, automatically add a shortcut for actions selected via the in-game " "action menu." -msgstr "設定為 [是], 自動為在遊戲中動作選單選取的動作新增快捷鍵。" +msgstr "設定為 [是], 自動為在遊戲中動作選單選中的動作新增快捷鍵。" #: src/options.cpp msgid "Add shortcuts for inventory selections" @@ -139465,7 +141169,7 @@ msgstr "新增快捷鍵用於物品欄的選取" #: src/options.cpp msgid "" "If true, automatically add a shortcut for items selected via the inventory." -msgstr "設定為 [是], 自動為在遊戲中物品欄選取的物品新增快捷鍵。" +msgstr "設定為 [是], 自動為在遊戲中物品欄選中的物品新增快捷鍵。" #: src/options.cpp msgid "Tap key (in-game)" @@ -139540,7 +141244,7 @@ msgid "" "If true, contextual in-game shortcuts are added and removed automatically as" " needed: examine, close, butcher, move up/down, control vehicle, pickup, " "toggle enemy + safe mode, sleep." -msgstr "設定為 [是], 環境相關快捷鍵將在需要時自動新增或移除, 包含: 查看、關門、屠宰、往上/下移動、控制車輛、撿起、切換安全模式、睡覺。" +msgstr "設定為 [是], 環境相關快捷鍵將在需要時自動新增或移除, 包含: 檢查、關門、屠宰、上/下樓梯、控制車輛、撿起、切換安全模式、睡覺。" #: src/options.cpp msgid "Move contextual gameplay shortcuts to front" @@ -139573,7 +141277,7 @@ msgstr "用於關閉自動撿取區域的獨立快捷鍵" msgid "" "If true, separate gameplay shortcuts will be used within No Auto Pickup " "zones. Useful for keeping home base actions separate from exploring actions." -msgstr "設定為 [是], 在關閉自動撿取區域內時將使用獨立的遊戲快捷鍵。這有助於將基地裡的行動與探索時的行動分開。" +msgstr "設定為 [是], 在關閉自動撿取區域內時將使用獨立的遊戲快捷鍵。這有助於將基地裡的動作與探索時的動作分開。" #: src/options.cpp msgid "Turns to remove unused gameplay shortcuts" @@ -139583,7 +141287,7 @@ msgstr "移除未使用快捷鍵回合數" msgid "" "If non-zero, unused gameplay shortcuts will be removed after this many turns" " (as in discrete player actions, not world calendar turns)." -msgstr "設定為 [0] 以外的數值, 未使用的遊戲快捷鍵將在 [設定值] 回合後被移除 (以玩家的行動次數計算, 而不是世界時間回合)。" +msgstr "設定為 [0] 以外的數值, 未使用的遊戲快捷鍵將在 [設定值] * 回合後被移除 (以玩家的動作次數計算, 而不是世界時間回合)。" #: src/options.cpp msgid "Shortcuts persistence" @@ -139705,14 +141409,18 @@ msgstr "目前世界" msgid "%s #%s -- The window will be %d pixel wide with the selected value." msgid_plural "" "%s #%s -- The window will be %d pixels wide with the selected value." -msgstr[0] "%s #%s - 依目前設定值, 視窗將會是 %d 像素寬。" +msgstr[0] "" +"%s #%s\n" +"依目前設定值, 視窗將會是 %d 像素寬。" #: src/options.cpp #, c-format msgid "%s #%s -- The window will be %d pixel tall with the selected value." msgid_plural "" "%s #%s -- The window will be %d pixels tall with the selected value." -msgstr[0] "%s #%s - 依目前設定值, 視窗將會是 %d 像素高。" +msgstr[0] "" +"%s #%s\n" +"依目前設定值, 視窗將會是 %d 像素高。" #: src/options.cpp msgid "Some of these options may produce unexpected results if changed." @@ -139729,7 +141437,7 @@ msgstr "" #: src/options.cpp msgid "Invalid input: not a number" -msgstr "輸入無效: 非數字" +msgstr "無效的輸入: 非數字" #: src/options.cpp msgid "options" @@ -139737,59 +141445,61 @@ msgstr "選項" #: src/output.cpp msgid "Press any key for more..." -msgstr "按下任意鍵看更多..." +msgstr "請按任意鍵看更多…" #: src/output.cpp #, c-format msgctxt "query_yn" msgid "%s (Case Sensitive)" -msgstr "" +msgstr "%s (大小寫敏感)" #: src/output.cpp #, c-format msgctxt "query_yn" msgid "%s" -msgstr "" +msgstr "%s" #: src/output.cpp msgid "Type part of an item's name to filter it." -msgstr "鍵入物品的部分名稱以作篩選。" +msgstr "輸入物品的部分名稱以進行篩選。" #: src/output.cpp msgid "Type part of an item's name to move nearby items to the bottom." -msgstr "輸入物品的部分名稱以移動附近的物品到列表底端。" +msgstr "輸入物品的部分名稱以移動物品到列表底端。" #: src/output.cpp msgid "Type part of an item's name to move nearby items to the top." -msgstr "輸入物品的部分名稱以移動附近的物品到列表頂端。" +msgstr "輸入物品的部分名稱以移動物品到列表頂端。" #: src/output.cpp msgid "Separate multiple items with ," -msgstr "用逗號將數個要篩選物品分開, " +msgstr "多個項目加上 , 符號表示區隔。" #. ~ An example of how to separate multiple items with a comma when filtering #. items. #: src/output.cpp msgid "Example: back,flash,aid, ,band" -msgstr "例如: back,flash,aid, ,band" +msgstr "範例: back, flash, aid, , band" #: src/output.cpp msgid "To exclude items, place - in front." -msgstr "前面加上 - 符號以排除物品。" +msgstr "項目前面加上 - 符號表示排除。" #. ~ An example of how to exclude items with - when filtering items. #: src/output.cpp msgid "Example: -pipe,-chunk,-steel" -msgstr "例如: -pipe,-chunk,-steel" +msgstr "範例: -pipe, -chunk, -steel" #: src/output.cpp msgid "Search [c]ategory, [m]aterial, or [q]uality:" msgstr "" +"特殊前綴符號 c:分類, m:材質, " +"q:特性。" #. ~ An example of how to filter items based on category or material. #: src/output.cpp msgid "Example: c:food,m:iron,q:hammering" -msgstr "" +msgstr "範例: c:食物, m:鐵, q:敲擊" #: src/output.cpp msgid "unknown" @@ -139797,7 +141507,7 @@ msgstr "未知" #: src/output.cpp msgid "bright" -msgstr "明亮的" +msgstr "明亮" #: src/output.cpp msgid "cloudy" @@ -139817,15 +141527,15 @@ msgstr "非常黑暗" #: src/output.h msgid ", " -msgstr ", " +msgstr "、" #: src/output.h msgid ", and " -msgstr ", 和 " +msgstr " 與 " #: src/output.h msgid ", or " -msgstr ", 或" +msgstr " 或 " #: src/output.h #, c-format @@ -139840,7 +141550,7 @@ msgstr "無效" msgid "" "Unable to place all configured specials, some missions may fail to " "initialize." -msgstr "無法配置所有的特殊功能, 某些任務可能無法初始化。" +msgstr "無法放置所有設定好的特殊地點, 某些任務可能無法初始化。" #: src/overmap.cpp #, c-format @@ -139866,7 +141576,8 @@ msgid "" "This is FEMA camp %d%d. Supplies are limited, please bring supplemental " "food, water, and bedding. This is FEMA camp %d%d. A designated long-term " "emergency shelter." -msgstr "這是聯邦急難救助營 %d%d。物資有限, 請自行攜帶補充用食物, 水, 及床鋪。這是聯邦急難救助營 %d%d。一個長期的急難救助庇護所。" +msgstr "" +"這是聯邦緊急事務管理署營地 %d%d。物資有限, 請自行攜帶補充用食物, 水, 及床鋪。這是聯邦緊急事務管理署營地 %d%d。一個長期的急難庇護所。" #: src/overmap_ui.cpp msgid "Notes:" @@ -139874,19 +141585,19 @@ msgstr "註記: " #: src/overmap_ui.cpp msgid "< Prev notes" -msgstr "< 上頁註記" +msgstr "[<] 上頁註記" #: src/overmap_ui.cpp msgid "Next notes >" -msgstr "下頁註記 >" +msgstr "下頁註記 [>]" #: src/overmap_ui.cpp msgid "Press letter to center on note" -msgstr "按下代碼以將註記置中" +msgstr "[註記代碼] 置中註記" #: src/overmap_ui.cpp msgid "Spacebar - Return to map " -msgstr "空白鍵 - 返回到地圖 " +msgstr "[空白鍵] 返回地圖" #: src/overmap_ui.cpp msgid "Zone:" @@ -139899,41 +141610,43 @@ msgstr "# 尚未探索" #: src/overmap_ui.cpp #, c-format msgid "Distance to target: %d" -msgstr "與目標的距離: %d" +msgstr "目標距離: %d" #: src/overmap_ui.cpp msgid "Use movement keys to pan." -msgstr "使用移動鍵來平移。" +msgstr "[移動鍵] 平移地圖" #: src/overmap_ui.cpp #, c-format msgid "%s - %s" -msgstr "%s - %s" +msgstr "[%s] %s" #: src/overmap_ui.cpp #, c-format msgid "LEVEL %i, %d'%d, %d'%d" -msgstr "層級 %i, %d'%d, %d'%d" +msgstr "樓層 %i, %d'%d, %d'%d" #: src/overmap_ui.cpp msgid "Color codes: " -msgstr "顏色碼: " +msgstr "顏色代碼: " #: src/overmap_ui.cpp msgid "Type GLYPH:TEXT to set a custom glyph." -msgstr "" +msgstr "輸入 \"符號:文字\" 來設定一個自訂符號。" #: src/overmap_ui.cpp msgid "Type COLOR;TEXT to set a custom color." -msgstr "" +msgstr "輸入 \"顏色;文字\" 來設定一個自訂顏色。" #: src/overmap_ui.cpp msgid "Examples: B:Base | g;Loot | !:R;Minefield" msgstr "" +"範例: B:基地 | g;物資 | " +"!:R;地雷區" #: src/overmap_ui.cpp msgid "Note:" -msgstr "" +msgstr "註記:" #: src/overmap_ui.cpp msgid "Really delete note?" @@ -139941,11 +141654,11 @@ msgstr "確定刪除註記?" #: src/overmap_ui.cpp msgid "Search term:" -msgstr "搜尋項目:" +msgstr "搜尋:" #: src/overmap_ui.cpp msgid "Multiple entries separated with , Excludes starting with -" -msgstr "" +msgstr "多個項目以 , 符號隔開。排除項目以 - 符號起始。" #: src/overmap_ui.cpp msgid "No results found." @@ -139965,27 +141678,27 @@ msgstr "結果:" #: src/overmap_ui.cpp msgid "Direction:" -msgstr "方向:" +msgstr "方位:" #: src/overmap_ui.cpp msgid "'<' '>' Cycle targets." -msgstr "'<' '>' 切換目標" +msgstr "[左/右移動鍵] 切換目標" #: src/overmap_ui.cpp msgid "Enter/Spacebar to select." -msgstr "Enter/空白鍵 選擇" +msgstr "[Enter 或 空白鍵] 選擇" #: src/overmap_ui.cpp msgid "q or ESC to return." -msgstr "按 q 或 ESC 返回遊戲。" +msgstr "[q 或 Esc] 返回" #: src/overmap_ui.cpp msgid "Select terrain to place:" -msgstr "" +msgstr "選擇要放置的地形:" #: src/overmap_ui.cpp msgid "Select special to place:" -msgstr "" +msgstr "選擇要放置的特殊地點:" #: src/overmap_ui.cpp msgid "Place overmap terrain:" @@ -139993,12 +141706,12 @@ msgstr "放置大地圖地形:" #: src/overmap_ui.cpp msgid "Place overmap special:" -msgstr "放置大地圖特殊:" +msgstr "放置大地圖特殊地點:" #: src/overmap_ui.cpp #, c-format msgid "Rotation: %s %s" -msgstr "旋轉: %s %s" +msgstr "朝向: %s %s" #: src/overmap_ui.cpp msgid "(fixed)" @@ -140006,23 +141719,23 @@ msgstr "(固定)" #: src/overmap_ui.cpp msgid "Areas highlighted in red" -msgstr "以紅色標記的區域" +msgstr "以紅色標記的區域裡面的地" #: src/overmap_ui.cpp msgid "already have map content" -msgstr "裡面的地圖內容已經" +msgstr "圖內容已經生成。它們的大" #: src/overmap_ui.cpp msgid "generated. Their overmap" -msgstr "生成。它們的大地圖" +msgstr "地圖 ID 會改變, 但是內容" #: src/overmap_ui.cpp msgid "id will change, but not" -msgstr "ID 會改變, 但內容物" +msgstr "不會更動。" #: src/overmap_ui.cpp msgid "their contents." -msgstr "不會更動。" +msgstr " " #: src/overmap_ui.cpp #, c-format @@ -140036,7 +141749,7 @@ msgstr "[%s] 套用" #: src/overmap_ui.cpp msgid "[ESCAPE/Q] Cancel" -msgstr "[ESC/Q] 取消" +msgstr "[Esc 或 Q] 取消" #. ~ First parameter is a terrain name, second parameter is a city name. #: src/overmapbuffer.cpp @@ -140212,7 +141925,7 @@ msgstr "撿取" #: src/pickup.cpp msgid "Set filter" -msgstr "設置篩選器" +msgstr "篩選:" #: src/pickup.cpp msgid "Enter 2 letters (case sensitive):" @@ -140220,7 +141933,7 @@ msgstr "輸入 2 個字母 (大小寫敏感):" #: src/pickup.cpp msgid "Your filter returned no results" -msgstr "你的篩選器並未找到結果" +msgstr "你的篩選沒有結果" #: src/pickup.cpp #, c-format @@ -140309,7 +142022,7 @@ msgstr "你被自己的蟲肢妨礙到。" #: src/player.cpp msgid "Your clothing restricts your insect arms." -msgstr "你的服裝限制了你蟲肢的行動。" +msgstr "你的衣物限制了你的蟲肢的行動。" #: src/player.cpp msgid "Your webbed hands get in the way." @@ -140321,7 +142034,7 @@ msgstr "你被自己的蛛肢妨礙到。" #: src/player.cpp msgid "Your clothing constricts your arachnid limbs." -msgstr "你的服裝妨礙了你蛛肢的行動。" +msgstr "你的衣物妨礙了你的蛛肢的行動。" #: src/player.cpp msgid "Your pain distracts you!" @@ -140329,7 +142042,7 @@ msgstr "你的疼痛讓你分心!" #: src/player.cpp msgid "You're weak from hunger." -msgstr "你因飢餓而變得虛弱。" +msgstr "你因為飢餓而變得虛弱。" #: src/player.cpp msgid "You're weak from thirst." @@ -140337,7 +142050,7 @@ msgstr "你因口渴而變得虛弱。" #: src/player.cpp msgid "You learned a new style." -msgstr "你學到了新招式。" +msgstr "你學會了一個新招式。" #: src/player.cpp msgid "You lost your book! You stop reading." @@ -140386,7 +142099,7 @@ msgstr "你感到你的 %s 因為高溫而變得紅腫!" #: src/player.cpp #, c-format msgid "You feel your %s getting very hot." -msgstr "你覺得你的 %s 很熱。" +msgstr "你感到你的 %s 非常炎熱。" #. ~ %s is bodypart #: src/player.cpp @@ -140404,7 +142117,7 @@ msgstr "風吹得你的 %s 發冷。" msgid "" "The wind is very strong, you should find some more wind-resistant clothing " "for your %s." -msgstr "風很強, 你應該要找一些更抗風的衣物來保護你的 %s 。" +msgstr "風很強, 你應該要找一些更抗風的衣物來保護你的 %s。" #: src/player.cpp #, c-format @@ -140517,22 +142230,22 @@ msgstr "最終屬性:" #: src/player.cpp src/sidebar.cpp #, c-format msgid "Str %d" -msgstr "力量: %d" +msgstr "力量%d" #: src/player.cpp src/sidebar.cpp #, c-format msgid "Dex %d" -msgstr "敏捷: %d" +msgstr "敏捷%d" #: src/player.cpp src/sidebar.cpp #, c-format msgid "Int %d" -msgstr "智力: %d" +msgstr "智力%d" #: src/player.cpp src/sidebar.cpp #, c-format msgid "Per %d" -msgstr "感知: %d" +msgstr "感知%d" #: src/player.cpp msgid "Base Stats:" @@ -140593,8 +142306,7 @@ msgstr "能量: %d/%d" #: src/player.cpp msgid "Weapon:" -msgid_plural "Weapons:" -msgstr[0] "武器:" +msgstr "武器:" #: src/player.cpp msgid "Equipment:" @@ -140811,7 +142523,7 @@ msgstr "你被 %s 抓住了!" #: src/player.cpp msgid "Filth from your clothing has implanted deep in the wound." -msgstr "衣服上的污染物深深注入了你的傷口。" +msgstr "衣物上的污染物深深注入了你的傷口。" #: src/player.cpp msgid "Ouch, something hurts!" @@ -141063,12 +142775,12 @@ msgstr "你蜷曲身軀擠進這車輛。" #: src/player.cpp #, c-format msgid "Bandaged wounds on your %s was healed." -msgstr "你的 %s 上的已包紮傷口已經癒合。" +msgstr "你的 %s 上的已包紮傷口已經癒合了。" #: src/player.cpp #, c-format msgid "Disinfected wounds on your %s was healed." -msgstr "" +msgstr "你的 %s 上的消毒處理過的傷口已經癒合了。" #: src/player.cpp #, c-format @@ -141087,13 +142799,13 @@ msgstr "對 %s 上癮了。" #, c-format msgctxt "memorial_male" msgid "Overcame addiction to %s." -msgstr "戒除了 %s 。" +msgstr "戒除了 %s。" #: src/player.cpp #, c-format msgctxt "memorial_female" msgid "Overcame addiction to %s." -msgstr "戒除了 %s 。" +msgstr "戒除了 %s。" #: src/player.cpp #, c-format @@ -141250,11 +142962,11 @@ msgstr "你突然覺得寒冷。" #: src/player.cpp msgid "You suddenly feel very hot." -msgstr "你突然感到非常熱。" +msgstr "你突然感到非常炎熱。" #: src/player.cpp msgid "You suddenly feel hot." -msgstr "你突然覺得熱。" +msgstr "你突然感到炎熱。" #: src/player.cpp #, c-format @@ -141393,7 +143105,7 @@ msgstr "" #: src/player.cpp #, c-format msgid "Look at that %1$s!" -msgstr "" +msgstr "看看那個 %1$s!" #: src/player.cpp #, c-format @@ -141506,7 +143218,7 @@ msgstr "" #: src/player.cpp msgid "You suddenly feel so numb..." -msgstr "你突然覺得很麻木..." +msgstr "你突然覺得很麻木…" #: src/player.cpp msgid "You start to shake uncontrollably." @@ -141522,7 +143234,7 @@ msgstr "" #: src/player.cpp msgid "\"Stop laughing at me!\"" -msgstr "" +msgstr "\"別再取笑我了! \"" #: src/player.cpp msgid "\"Don't point that thing at me!\"" @@ -141534,7 +143246,7 @@ msgstr "" #: src/player.cpp msgid "\"No! Stop!\"" -msgstr "" +msgstr "\"不! 住手! \"" #: src/player.cpp msgid "\"Get the fuck away from me!\"" @@ -141628,7 +143340,7 @@ msgstr "你突然看不見了!" #: src/player.cpp msgid "Your visual centers must be acting up..." -msgstr "你的視覺中樞必須動起來了..." +msgstr "你的視覺中樞必須動起來了…" #: src/player.cpp msgid "You feel an anomalous sensation coming from your radiation sensors." @@ -141702,7 +143414,7 @@ msgstr "你不由自主地顫抖著。" #: src/player.cpp msgid "You feel nauseous..." -msgstr "你覺得反胃..." +msgstr "你覺得反胃…" #: src/player.cpp msgid "You black out!" @@ -141718,11 +143430,11 @@ msgstr "你蹣跚地跌倒了!" #: src/player.cpp msgid "You feel tired..." -msgstr "你覺得累了..." +msgstr "你覺得累了…" #: src/player.cpp msgid "You tiredly rub your eyes." -msgstr "你疲倦得揉了揉眼睛。" +msgstr "你累得揉了揉眼睛。" #: src/player.cpp msgid "You let out a small yawn." @@ -141734,7 +143446,7 @@ msgstr "" #: src/player.cpp msgid "You feel mentally tired." -msgstr "你精神上感到疲倦。" +msgstr "你感到精神疲倦。" #: src/player.cpp msgid "You feel lightheaded for a moment." @@ -141772,15 +143484,15 @@ msgstr "你的意識過於疲倦, 以至於你覺得再也不能相信你的眼 msgid "" "Your muscles spasm uncontrollably, and you have trouble keeping your " "balance." -msgstr "" +msgstr "你的肌肉不受控制地痙攣, 你很難保持平衡。" #: src/player.cpp msgid "Your shaking legs make you stumble." -msgstr "" +msgstr "你的顫抖的雙腿使你蹣跚而行。" #: src/player.cpp msgid "You fall over!" -msgstr "" +msgstr "你跌倒了!" #. ~ %s is bodypart #: src/player.cpp @@ -141826,7 +143538,7 @@ msgstr "你乾嘔, 但你的胃是空的。" #: src/player.cpp src/sounds.cpp #, c-format msgid "From the %1$s you hear %2$s" -msgstr "從 %1$s 你聽見 %2$s" +msgstr "你聽見 %1$s 傳來 %2$s" #: src/player.cpp msgid "Your optical cloak flickers for a moment!" @@ -141834,7 +143546,7 @@ msgstr "你的光學斗篷閃爍了一陣!" #: src/player.cpp msgid "Your power armor disengages." -msgstr "動力護甲關閉。" +msgstr "你的動力裝甲關閉了。" #: src/player.cpp #, c-format @@ -141911,7 +143623,7 @@ msgstr "| 傷害 | 穿刺 " #: src/player.cpp #, c-format msgid "You need a compatible magazine to reload the %s!" -msgstr "你需要相容的彈匣來重新填裝 %s !" +msgstr "你需要一個相容的彈匣來重新填裝 %s!" #: src/player.cpp msgid "Nothing to reload!" @@ -141920,7 +143632,7 @@ msgstr "沒有東西要重新裝填!" #: src/player.cpp #, c-format msgid "You don't have any %s to reload your %s!" -msgstr "你沒有 %s 去裝填你的 %s !" +msgstr "你沒有 %s 來裝填你的 %s!" #: src/player.cpp #, c-format @@ -141929,11 +143641,11 @@ msgstr "你不太可能把 %s 穿戴上。" #: src/player.cpp msgid "Can't wear power armor over other gear!" -msgstr "無法把動力裝甲穿在其他衣服上!" +msgstr "無法把動力裝甲穿在其他裝備上!" #: src/player.cpp msgid "You can only wear power armor components with power armor!" -msgstr "你只能在身上穿動力裝甲時才能穿戴其他部位。" +msgstr "你只能把動力裝甲的部件跟動力裝甲穿在一起!" #: src/player.cpp #, c-format @@ -141943,11 +143655,11 @@ msgstr "不能穿戴多於一件的 %s!" #: src/player.cpp #, c-format msgid "Can't wear %s with power armor!" -msgstr "無法將 %s 跟動力護甲穿在一起!" +msgstr "無法將 %s 跟動力裝甲穿在一起!" #: src/player.cpp msgid "You don't have a hand free to wear that." -msgstr "你的手沒空來穿它" +msgstr "你沒有空閒的手來穿戴它。" #: src/player.cpp #, c-format @@ -141957,7 +143669,7 @@ msgstr "%s 你的手沒空來穿它。" #: src/player.cpp #, c-format msgid "Can't wear %i or more %s at once." -msgstr "無法一次穿上 %i 或更多的 %s。" +msgstr "無法一次穿戴 %i 或更多的 %s。" #: src/player.cpp msgid "You're already wearing footwear!" @@ -141966,7 +143678,7 @@ msgstr "你已經穿了鞋了!" #: src/player.cpp #, c-format msgid "%s is already wearing footwear!" -msgstr "%s已經穿了鞋了!" +msgstr "%s 已經穿了鞋了!" #: src/player.cpp msgid "You can't wear that with other headgear!" @@ -141988,21 +143700,21 @@ msgstr "%s 頭上無法穿戴這麼多東西!" #: src/player.cpp msgid "Can't wear that, it's made of wool!" -msgstr "無法穿上, 這是羊毛製的!" +msgstr "無法穿戴它, 它是羊毛製的!" #: src/player.cpp msgid "Can't wear that, it's filthy!" -msgstr "無法穿上, 這很髒。" +msgstr "無法穿戴它, 它很骯髒。" #: src/player.cpp #, c-format msgid "Your %s mutation prevents you from wearing your %s." -msgstr "" +msgstr "你的 %s 突變不允許你穿戴 %s。" #: src/player.cpp #, c-format msgid "Cannot wear a helmet over %s." -msgstr "無法在 %s外層穿戴頭盔。" +msgstr "無法在 %s 外層穿戴頭盔。" #: src/player.cpp msgid "horns" @@ -142022,7 +143734,7 @@ msgstr "不能揮灑溢出的液體。" #: src/player.cpp msgid "Something you are wearing hinders the use of both hands." -msgstr "你穿戴的東西阻礙了使用雙手" +msgstr "你穿戴的東西阻礙了使用雙手。" #: src/player.cpp #, c-format @@ -142037,7 +143749,7 @@ msgstr "你僅有的一支手力量不足, 拿不了 %s。" #: src/player.cpp #, c-format msgid "You cannot unwield your %s." -msgstr "你不能放開你的 %s 。" +msgstr "你不能放開你的 %s。" #: src/player.cpp #, c-format @@ -142049,21 +143761,6 @@ msgstr "抽出 %s 自 %s?" msgid "Stop wielding %s?" msgstr "停止手持 %s?" -#: src/player.cpp -msgid "Technique:" -msgid_plural "Techniques:" -msgstr[0] "技巧:" - -#: src/player.cpp -msgid "" -"This style forces you to use unarmed strikes, even if wielding a weapon." -msgstr "此武術會使你強制使用空手招式攻擊, 即使手持武器。" - -#: src/player.cpp -#, c-format -msgid "Select a style. (press %s for more info)" -msgstr "選擇招式 (按 %s 取得更多資訊)" - #: src/player.cpp msgid "Keep hands free (off)" msgstr "保持空手 (關閉)" @@ -142084,7 +143781,7 @@ msgstr "丟棄 %s" #: src/player.cpp msgid "Spill contents and store in inventory" -msgstr "倒掉內容物並把容器收到物品欄" +msgstr "倒掉裡面的東西並把容器收到物品欄" #: src/player.cpp msgid "Store in inventory" @@ -142096,7 +143793,7 @@ msgstr "丟棄物品" #: src/player.cpp msgid "Spill contents and wear item" -msgstr "倒掉內容物並穿起物品" +msgstr "倒掉裡面的東西並穿戴物品" #: src/player.cpp #, c-format @@ -142119,6 +143816,11 @@ msgstr "打斷" msgid "Mend" msgstr "修補" +#: src/player.cpp +#, c-format +msgid "The %s doesn't have any faults to toggle." +msgstr "%s 沒有任何故障可供切換。" + #: src/player.cpp #, c-format msgid "The %s doesn't have any faults to mend." @@ -142182,13 +143884,13 @@ msgstr "你聽不見了!" #: src/player.cpp #, c-format msgid "This %s is too big to wear comfortably! Maybe it could be refitted..." -msgstr "這件 %s 太大了以至於無法穿得舒服! 或許它可以被修改得更貼身..." +msgstr "這件 %s 太大了以至於無法穿得舒服! 或許它可以被修改得更合身…" #: src/player.cpp #, c-format msgid "" "This %s is too small to wear comfortably! Maybe it could be refitted..." -msgstr "這件 %s 太小了以至於無法穿得舒服! 或許它可以被修改得更貼身..." +msgstr "這件 %s 太小了以至於無法穿得舒服! 或許它可以被修改得更合身…" #: src/player.cpp #, c-format @@ -142226,17 +143928,17 @@ msgstr " 並沒有穿戴那件物品。" msgid "" " can't take off power armor while wearing other power armor " "components." -msgstr "穿著其他動力裝甲部件時無法直接脫下動力裝甲。" +msgstr "無法在穿著其他動力裝甲的部件時脫下動力裝甲。" #: src/player.cpp msgid "" "You can't take off power armor while wearing other power armor components." -msgstr "你穿著其他動力裝甲部件時無法直接脫下動力裝甲。" +msgstr "你無法在穿著其他動力裝甲的部件時脫下動力裝甲。" #: src/player.cpp #, c-format msgid "No room in inventory for your %s. Drop it?" -msgstr "你的物品欄放不下 %s。丟棄嗎?" +msgstr "你的物品欄沒有空間來容納 %s。要丟棄它嗎?" #: src/player.cpp #, c-format @@ -142260,13 +143962,13 @@ msgstr "不能把物品放到那!" #, c-format msgid "Your %s needs %d charge from some UPS." msgid_plural "Your %s needs %d charges from some UPS." -msgstr[0] "你的 %s 需要 %d 電量來自於UPS。" +msgstr[0] "你的 %s 需要 %d 來自 UPS 的電量。" #: src/player.cpp #, c-format msgid "Your %s has %d charge but needs %d." msgid_plural "Your %s has %d charges but needs %d." -msgstr[0] "你的 %s 的目前電量為 %d 還需要 %d。" +msgstr[0] "你的 %s 有 %d 電量, 但需要 %d 電量。" #: src/player.cpp #, c-format @@ -142286,12 +143988,12 @@ msgstr "嘗試不使用工具 (%i%%) 可能造成傷害 (%i%%)" #: src/player.cpp #, c-format msgid "Use 100 charges of firearm repair kit (%i%%)" -msgstr "使用 100 電量的槍械維修工具 (%i%%)" +msgstr "使用 100 電量的槍械修理工具 (%i%%)" #: src/player.cpp #, c-format msgid "Use 25 charges of gunsmith repair kit (%i%%)" -msgstr "使用 25 電量槍匠維修工具 (%i%%)" +msgstr "使用 25 電量槍匠修理工具 (%i%%)" #: src/player.cpp #, c-format @@ -142300,7 +144002,7 @@ msgstr "你的 %s 不是一個好的閱讀材料。" #: src/player.cpp msgid "It's a bad idea to read while driving!" -msgstr "邊駕駛邊讀書不是個好主意!" +msgstr "邊駕駛邊書讀不是個好主意!" #: src/player.cpp msgid "What's the point of studying? (Your morale is too low!)" @@ -142309,7 +144011,7 @@ msgstr "學這幹嘛? (你的士氣太低! )" #: src/player.cpp #, c-format msgid "You need %s %d to understand the jargon!" -msgstr "" +msgstr "你需要 %s %d 才能理解這些專業術語!" #: src/player.cpp msgid "Your eyes won't focus without reading glasses." @@ -142317,7 +144019,7 @@ msgstr "沒戴老花眼鏡你的視線無法集中。" #: src/player.cpp msgid "It's too dark to read!" -msgstr "太暗了沒辦法閱讀!" +msgstr "太暗了, 沒辦法閱讀!" #: src/player.cpp msgid "Maybe someone could read that to you, but you're deaf!" @@ -142331,7 +144033,7 @@ msgstr "%s 是文盲!" #: src/player.cpp #, c-format msgid "%s needs %s %d to understand the jargon!" -msgstr "" +msgstr "%s 需要 %s %d 才能理解這些專業術語!" #: src/player.cpp #, c-format @@ -142341,12 +144043,12 @@ msgstr "%s 需要老花眼鏡!" #: src/player.cpp #, c-format msgid "It's too dark for %s to read!" -msgstr "太暗了 %s 沒辦法閱讀!" +msgstr "太暗了, %s 沒辦法閱讀!" #: src/player.cpp #, c-format msgid "%s could read that to you, but they can't see you." -msgstr "%s 可以讀給你聽, 但他看不見你。" +msgstr "%s 可以讀給你聽, 但是他看不見你。" #: src/player.cpp #, c-format @@ -142356,7 +144058,7 @@ msgstr "%s 的士氣太低了!" #: src/player.cpp #, c-format msgid "%s reads aloud..." -msgstr "%s 在朗讀..." +msgstr "%s 在朗讀…" #: src/player.cpp #, c-format @@ -142427,11 +144129,11 @@ msgstr "不參與:" #: src/player.cpp #, c-format msgid "Now reading %s, %s to stop early." -msgstr "正在閱讀 %s, 按 %s 停止。" +msgstr "正在閱讀 %s, %s 停止。" #: src/player.cpp msgid "You read aloud..." -msgstr "你在朗讀..." +msgstr "你大聲朗讀…" #: src/player.cpp #, c-format @@ -142506,7 +144208,7 @@ msgstr[0] "這本書包含了 %1$u 種製作配方: %2$s" #: src/player.cpp msgid "It might help you figuring out some more recipes." -msgstr "它可以幫助你搞清楚更多的配方。" +msgstr "它或許可以幫助你搞清楚更多配方。" #: src/player.cpp #, c-format @@ -142550,7 +144252,7 @@ msgstr "再讀一次 %s 對 %s 來說不是那麼有趣。" #: src/player.cpp msgid "Maybe you should find something new to read..." -msgstr "你也許該找點新的閱讀材料..." +msgstr "你也許該找點新的閱讀材料…" #: src/player.cpp msgid "You relax as your roots embrace the soil." @@ -142566,13 +144268,13 @@ msgstr "人類的家具擋住你的根。你感覺不舒服。" #: src/player.cpp msgid "Your roots scrabble ineffectively at the unyielding surface." -msgstr "你的根在堅硬的地面無助的劃過." +msgstr "你的根在堅硬的地面無助的劃過。" #: src/player.cpp msgid "" "Our fibers meld with the ground beneath us. The gills on our neck begin to " "seed the air with spores as our awareness fades." -msgstr "" +msgstr "我們的纖維與我們腳下的地面融為一體。當我們的意識開始消失, 我們頸部的菌褶開始朝空氣中散布孢子。" #: src/player.cpp msgid "These thick webs support your weight, and are strangely comfortable..." @@ -142598,11 +144300,11 @@ msgstr "也許一個好的厚蛛網能幫助你入睡。" #: src/player.cpp msgid "" "You lay beneath the waves' embrace, gazing up through the water's surface..." -msgstr "" +msgstr "你躺在海浪的擁抱下, 凝視著水面下…" #: src/player.cpp msgid "You settle into the water and begin to drowse..." -msgstr "" +msgstr "你沉入水中, 意識變得模糊…" #: src/player.cpp msgid "This is a comfortable place to sleep." @@ -142620,7 +144322,7 @@ msgstr "在 %s 上很難以入睡。" #: src/player.cpp msgid "You start trying to fall asleep." -msgstr "" +msgstr "你試圖入睡。" #: src/player.cpp msgid "You nestle your pile of clothes for warmth." @@ -142652,24 +144354,24 @@ msgstr "開始冬眠。" #: src/player.cpp src/player_hardcoded_effects.cpp msgid "It looks like you've slept through your internal alarm..." -msgstr "看來你睡過頭了..." +msgstr "看來你睡過頭了…" #: src/player.cpp src/player_hardcoded_effects.cpp msgid "It looks like you've slept through the alarm..." -msgstr "看來你睡過頭了..." +msgstr "看來你睡過頭了…" #. ~ %s is armor name #: src/player.cpp #, c-format msgctxt "memorial_male" msgid "Worn %s was completely destroyed." -msgstr "穿戴的 %s 已經被完全摧毀。" +msgstr "穿著的 %s 已經被完全摧毀。" #: src/player.cpp #, c-format msgctxt "memorial_female" msgid "Worn %s was completely destroyed." -msgstr "穿戴的 %s 已經被完全摧毀。" +msgstr "穿著的 %s 已經被完全摧毀。" #: src/player.cpp #, c-format @@ -142729,12 +144431,12 @@ msgstr "%s 迴避掉了… 快如閃電!" #: src/player.cpp msgid "You try to dodge but there's no room!" -msgstr "你試著迴避掉但是沒有空間讓你躲了" +msgstr "你試著迴避, 但是這裡沒有空間可以閃躲了!" #: src/player.cpp #, c-format msgid "%s tries to dodge but there's no room!" -msgstr "%s 試著迴避掉, 但是沒有空間能躲了!" +msgstr "%s 試著迴避, 但是那裡沒有空間可以閃躲了!" #: src/player.cpp msgid "You start hauling items along the ground." @@ -142774,7 +144476,7 @@ msgstr "當你想起最近的狩獵, 你的心跳加速。" #: src/player.cpp #, c-format msgid "Your knowledge of %s begins to fade, but your memory banks retain it!" -msgstr "" +msgstr "你開始淡忘關於 %s 的知識, 但你的記憶庫保留了它!" #: src/player.cpp #, c-format @@ -142785,40 +144487,40 @@ msgstr "你的 %s 技能下降到 %d!" #, c-format msgid "Swimming costs %+d movement point. " msgid_plural "Swimming costs %+d movement points. " -msgstr[0] "游泳消耗 %+d 移動點數。 " +msgstr[0] "游泳消耗 %+d 行動點數。" #: src/player_display.cpp #, c-format msgid "Running costs %+d movement point. " msgid_plural "Running costs %+d movement points. " -msgstr[0] "奔跑消耗 %+d 移動點數。 " +msgstr[0] "奔跑消耗 %+d 行動點數。" #: src/player_display.cpp #, c-format msgid "Reloading costs %+d movement point. " msgid_plural "Reloading costs %+d movement points. " -msgstr[0] "重新裝填消耗 %+d 移動點數。 " +msgstr[0] "重新裝填消耗 %+d 行動點數。" #: src/player_display.cpp #, c-format msgid "Melee and thrown attacks cost %+d movement point. " msgid_plural "Melee and thrown attacks cost %+d movement points. " -msgstr[0] "近戰與投擲攻擊消耗 %+d 移動點數。 " +msgstr[0] "近戰與投擲攻擊消耗 %+d 行動點數。" #: src/player_display.cpp #, c-format msgid "Dodge skill %+.1f. " -msgstr "閃避技能 %+.1f。 " +msgstr "閃避技能 %+.1f。" #: src/player_display.cpp #, c-format msgid "Melee attack rolls %+d%%; " -msgstr "近戰命中 %+d%%; " +msgstr "近戰命中 %+d%%。" #: src/player_display.cpp msgid "" "Head encumbrance has no effect; it simply limits how much you can put on." -msgstr "頭部累贅度沒有影響; 僅僅限制你能穿上的東西。" +msgstr "頭部累贅沒有特殊影響, 僅僅限制你能穿上的東西。" #: src/player_display.cpp #, c-format @@ -142826,29 +144528,29 @@ msgid "" "Perception %+d when checking traps or firing ranged weapons;\n" "Dispersion %+d when throwing items." msgstr "" -"偵測陷阱或射擊武器時感知 %+d;\n" +"偵測陷阱或射擊遠程武器時感知 %+d。\n" "投擲物品時分散 %+d。" #: src/player_display.cpp msgid "" "Covering your mouth will make it more difficult to breathe and catch your " "breath." -msgstr "嘴部的覆蓋將會影響呼吸以及喘息的困難度。" +msgstr "包覆嘴部會影響你呼吸以及喘息的困難度。" #: src/player_display.cpp msgid "" "Arm encumbrance affects stamina cost of melee attacks and accuracy with " "ranged weapons." -msgstr "手臂累贅度影響到你使用遠距武器的命中率, 以及近戰攻擊時的體力消耗。" +msgstr "手臂累贅會影響你使用遠程武器的命中率, 以及近戰攻擊時的體力消耗。" #: src/player_display.cpp msgid "Reduces the speed at which you can handle or manipulate items\n" -msgstr "降低你處理或操控物品的速度\n" +msgstr "手掌累贅會降低你處理或操作物品的速度。\n" #: src/player_display.cpp #, c-format msgid "Dexterity %+.1f when throwing items;\n" -msgstr "投擲物品時敏捷 %+.1f;\n" +msgstr "投擲物品時敏捷 %+.1f。\n" #: src/player_display.cpp #, c-format @@ -142871,25 +144573,25 @@ msgstr "智力" msgid "Perception" msgstr "感知" -#: src/player_display.cpp -msgid "Speed" -msgstr "速度" - #: src/player_display.cpp msgid "Severely Malnourished" -msgstr "" +msgstr "嚴重營養不良" #: src/player_display.cpp msgid "" "Your body is severely weakened by starvation. You might die if you don't start eating regular meals!\n" " \n" msgstr "" +"你的身體因為營養不良而變得嚴重虛弱。如果再不開始定期進食, 你可能會死!\n" +" \n" #: src/player_display.cpp msgid "" "Your body is weakened by starvation. Only time and regular meals will help you recover.\n" " \n" msgstr "" +"你的身體因為營養不良而變得虛弱。只有定期進食一段時間才能讓你康復。\n" +" \n" #: src/player_display.cpp msgid "In Sunlight" @@ -142900,24 +144602,24 @@ msgid "" "The sunlight irritates you.\n" "Strength - 1; Dexterity - 1; Intelligence - 1; Perception - 1" msgstr "" -"陽光荼毒著你。\n" -"力量 - 1; 敏捷 - 1; 智力 - 1; 敏捷 - 1" +"力量 -1 敏捷 -1 智力 -1 感知 -1\n" +"陽光荼毒著你。" #: src/player_display.cpp msgid "" "The sunlight irritates you badly.\n" "Strength - 2; Dexterity - 2; Intelligence - 2; Perception - 2" msgstr "" -"陽光無情的荼毒著你。\n" -"力量 -2; 敏捷 -2; 智力 -2; 感知 -2" +"力量 -2 敏捷 -2 智力 -2 感知 -2\n" +"陽光無情的荼毒著你。" #: src/player_display.cpp msgid "" "The sunlight irritates you terribly.\n" "Strength - 4; Dexterity - 4; Intelligence - 4; Perception - 4" msgstr "" -"陽光惡狠狠的荼毒著你。\n" -"力量 - 4; 敏捷 - 4; 智力 - 4; 感知 - 4" +"力量 -4 敏捷 -4 智力 -4 感知 -4\n" +"陽光要命的荼毒著你。" #. ~ player info window: 1s - name, 2s - gender, 3s - Prof or Mutation name #: src/player_display.cpp @@ -142933,7 +144635,7 @@ msgstr "%1$s | %2$s" #: src/player_display.cpp msgid "Cycle to next category" -msgstr "切換至下個目錄" +msgstr "移到下個分類" #: src/player_display.cpp msgid "Toggle skill training" @@ -142942,7 +144644,7 @@ msgstr "切換技能訓練" #: src/player_display.cpp #, c-format msgid "Press %s for help." -msgstr "按 %s 看說明。" +msgstr "按 %s 顯示說明。" #: src/player_display.cpp msgid "ENCUMBRANCE AND WARMTH" @@ -142972,54 +144674,56 @@ msgstr "目前速度:" #: src/player_display.cpp #, c-format msgid "Overburdened -%s%d%%" -msgstr "超重 -%s%d%%" +msgstr "超重 -%s%d%%" #: src/player_display.cpp #, c-format msgid "Pain -%s%d%%" -msgstr "疼痛 -%s%d%%" +msgstr "疼痛 -%s%d%%" #: src/player_display.cpp #, c-format msgid "Thirst -%s%d%%" -msgstr "口渴 -%s%d%%" +msgstr "口渴 -%s%d%%" #: src/player_display.cpp #, c-format msgid "Inanition -%s%d%%" -msgstr "營養不良 -%s%d%%" +msgstr "飢餓 -%s%d%%" #: src/player_display.cpp #, c-format msgid "Out of Sunlight -%s%d%%" -msgstr "遠離陽光 -%s%d%%" +msgstr "遠離陽光 -%s%d%%" #: src/player_display.cpp #, c-format msgid "Cold-Blooded +%s%d%%" -msgstr "冷血 +%s%d%%" +msgstr "冷血 +%s%d%%" #: src/player_display.cpp #, c-format msgid "Cold-Blooded -%s%d%%" -msgstr "冷血 -%s%d%%" +msgstr "冷血 -%s%d%%" #: src/player_display.cpp #, c-format msgid "Quick +%s%d%%" -msgstr "急性子 +%s%d%%" +msgstr "俐落 +%s%d%%" #: src/player_display.cpp #, c-format msgid "Bionic Speed +%s%d%%" -msgstr "生化插件速度 +%s%d%%" +msgstr "生化插件速度 +%s%d%%" #: src/player_display.cpp msgid "" "Strength affects your melee damage, the amount of weight you can carry, your" " total HP, your resistance to many diseases, and the effectiveness of " "actions which require brute force." -msgstr "力量影響你的近戰傷害, 可背負的重量, 你的整體HP, 對許多疾病的抵抗力, 以及有蠻力需求的動作的效率。" +msgstr "" +"力量影響你的近戰傷害、可背負的重量、整體 HP、\n" +"對疾病與毒素的抵抗力、以及需要蠻力的動作的效率。" #: src/player_display.cpp msgid "Base HP:" @@ -143035,13 +144739,15 @@ msgstr "負重 (磅):" #: src/player_display.cpp msgid "Melee damage:" -msgstr "近戰傷害:" +msgstr "近戰傷害加成:" #: src/player_display.cpp msgid "" "Dexterity affects your chance to hit in melee combat, helps you steady your " "gun for ranged combat, and enhances many actions that require finesse." -msgstr "敏捷影響你在近戰的命中機率, 幫助你穩定槍枝的遠程射擊, 增強你行動中所需的技巧。" +msgstr "" +"敏捷影響你的近戰命中機率、在遠程戰鬥幫助你穩定槍枝、\n" +"並增強需要靈巧的動作。" #: src/player_display.cpp msgid "Melee to-hit bonus:" @@ -143049,7 +144755,7 @@ msgstr "近戰命中加成:" #: src/player_display.cpp msgid "Ranged penalty:" -msgstr "遠距懲罰:" +msgstr "遠程懲罰:" #: src/player_display.cpp msgid "Throwing penalty per target's dodge:" @@ -143060,7 +144766,10 @@ msgid "" "Intelligence is less important in most situations, but it is vital for more " "complex tasks like electronics crafting. It also affects how much skill you" " can pick up from reading a book." -msgstr "智力在大多數情況下是不重要的, 但它是影響類似製作電子類物品的關鍵屬性。同時也會影響你在書中能學到的技能多少。" +msgstr "" +"智力在大多數情況下不重要, 但它是執行複雜任務的關鍵, \n" +"例如製作電子物品、安裝生化插件、或是與 NPC 互動。\n" +"它也影響你能透過閱讀書本學到多少技能。" #: src/player_display.cpp msgid "Read times:" @@ -143078,7 +144787,7 @@ msgstr "物品製作加成:" msgid "" "Perception is the most important stat for ranged combat. It's also used for" " detecting traps and other things of interest." -msgstr "感知是遠程作戰的重要屬性。它同時也影響到偵測陷阱以及探索有趣事物的能力。" +msgstr "感知是遠程戰鬥的重要屬性。它同時也用於偵測陷阱和其他有趣的事物。" #: src/player_display.cpp msgid "Trap detection level:" @@ -143436,7 +145145,7 @@ msgstr "你突然發抖。" #: src/player_hardcoded_effects.cpp msgid "Your vision is filled with bright lights..." -msgstr "你的視線被強光所掩蓋..." +msgstr "你的視線被強光所掩蓋…" #: src/player_hardcoded_effects.cpp msgid "You're suddenly covered in ectoplasm." @@ -143502,7 +145211,7 @@ msgstr "你的血管發癢。" #: src/player_hardcoded_effects.cpp msgid "Your muscles feel like they're knotted and tired." -msgstr "你的肌肉感覺緊繃又疲憊。" +msgstr "你的肌肉感到又累又緊繃。" #: src/player_hardcoded_effects.cpp msgid "Your muscles are tight and sore." @@ -143573,7 +145282,7 @@ msgstr "死於曼陀羅過量。" #: src/player_hardcoded_effects.cpp #, c-format msgid "Your %s wound begins to feel better!" -msgstr "" +msgstr "你感覺 %s 的傷口好轉了!" #: src/player_hardcoded_effects.cpp msgid "You succumb to the infection." @@ -143597,7 +145306,7 @@ msgstr "你充分的休息了。" msgid "" "You feel physically rested, but you haven't been able to catch up on your " "missed sleep yet." -msgstr "" +msgstr "你覺得身體有休息了, 可是卻依然沒法彌補之前的睡眠不足。" #: src/player_hardcoded_effects.cpp msgid "It's too bright to sleep." @@ -143617,15 +145326,15 @@ msgstr "你熱到打滾。" #: src/player_hardcoded_effects.cpp msgid "It's too hot to sleep." -msgstr "太熱了沒辦法睡。" +msgstr "太炎熱了沒辦法睡。" #: src/player_hardcoded_effects.cpp msgid "It looks like you woke up before your alarm." -msgstr "" +msgstr "看來你在鬧鈴響前就醒了…" #: src/player_hardcoded_effects.cpp msgid "Your internal chronometer went off and you haven't slept a wink." -msgstr "" +msgstr "你的內部計時器響了, 你一點都沒睡著。" #: src/player_hardcoded_effects.cpp msgid "Your internal chronometer finally wakes you up." @@ -143726,7 +145435,7 @@ msgstr "使用方向鍵來移動游標到目標上" #: src/ranged.cpp #, c-format msgid "%c %c Cycle targets; %c to fire." -msgstr "[%c/%c] 切換目標 [%c] 射擊" +msgstr "[%c/%c] 切換目標 [%c] 發射" #: src/ranged.cpp #, c-format @@ -143953,6 +145662,10 @@ msgstr "喀-砰!" msgid "kerblam!" msgstr "咔-啦-碰!" +#: src/recipe.cpp +msgid "none" +msgstr "無" + #: src/requirements.cpp #, c-format msgid "%d tool with %s of %d or more." @@ -144003,7 +145716,7 @@ msgstr "無" #: src/safemode_ui.cpp msgid " SAFE MODE MANAGER " -msgstr "安全模式管理器" +msgstr " 安全模式管理器 " #: src/safemode_ui.cpp msgid "Attitude" @@ -144015,7 +145728,7 @@ msgstr "距離" #: src/safemode_ui.cpp msgid "B/W" -msgstr "黑/白" +msgstr "模式" #: src/safemode_ui.cpp msgid "Safe Mode enabled:" @@ -144027,11 +145740,11 @@ msgstr "安全模式管理器尚未啟動。" #: src/safemode_ui.cpp msgid "Default rules are used. Add a rule to activate." -msgstr "現正使用預設規則。" +msgstr "目前使用預設規則。新增規則以啟動管理器。" #: src/safemode_ui.cpp msgid "Press ~ to add a default ruleset to get started." -msgstr "按 ~ 鍵添加新規則以啟動。" +msgstr "按 ~ 新增預設規則集合以開始使用。" #: src/safemode_ui.cpp msgid "Whitelist" @@ -144048,14 +145761,14 @@ msgid "" "*cid*zo*ie multiple * are allowed\n" "AcI*zO*iE case insensitive search" msgstr "" -"* 是一個通用符號。舉例如下:\n" +"* 是一個萬用字元。舉例如下:\n" "\n" -"human 對應所有NPC\n" -"zombie 對應名稱完全一樣的怪物\n" -"acidic zo* 對應名稱以 'acidic zo' 開頭的怪物\n" -"*mbie 對應名稱以 'mble' 結尾的怪物\n" -"*cid*zo*ie 能使用多個 * \n" -"AcI*zO*iE 搜索不區分大小寫" +"human 符合所有 NPC\n" +"zombie 符合名稱完全一樣的怪物\n" +"acidic zo* 符合名稱以 acidic zo 開頭的怪物\n" +"*mbie 符合名稱以 mble 結尾的怪物\n" +"*cid*zo*ie 允許使用多個 * 符號\n" +"AcI*zO*iE 搜尋不區分大小寫" #: src/safemode_ui.cpp msgid "Safe Mode Rule:" @@ -144063,7 +145776,7 @@ msgstr "安全模式規則:" #: src/safemode_ui.cpp msgid "Proximity Distance (0=max view distance)" -msgstr "接近距離 (0 = 最大可視距離)" +msgstr "接近距離, 0 等於最大可視距離:" #: src/safemode_ui.cpp msgid "Option: " @@ -144071,21 +145784,21 @@ msgstr "選項: " #: src/safemode_ui.cpp msgid "No monsters loaded. Please start a game first." -msgstr "未有加載怪物。請先啟動遊戲。" +msgstr "尚未讀取怪物資料。請先開始遊戲。" #: src/safemode_ui.cpp #, c-format msgid "%1$d monster matches: %2$s" msgid_plural "%1$d monsters match: %2$s" -msgstr[0] "%1$d 怪物符合: %2$s" +msgstr[0] "%1$d 個怪物符合: %2$s" #: src/safemode_ui.cpp msgid "Lists monsters regardless of their attitude." -msgstr "列出所有怪物, 不論態度如何。" +msgstr "列出所有怪物, 不論態度如何" #: src/safemode_ui.cpp msgid "Safe Mode is not enabled in the options. Enable it now?" -msgstr "安全模式功能沒有開啟。現在啟用?" +msgstr "安全模式功能沒有啟用。現在啟用?" #: src/safemode_ui.cpp msgid "safemode configuration" @@ -144104,7 +145817,7 @@ msgstr "幾乎全部" #: src/scenario.cpp msgid "Limited" -msgstr "已限定" +msgstr "限定" #: src/sdltiles.cpp msgid "" @@ -144121,35 +145834,35 @@ msgstr "體力" #: src/sidebar.cpp msgid "No Style" -msgstr "無招式" +msgstr "沒有招式" #: src/sidebar.cpp msgid "Starving!" -msgstr "快餓死!" +msgstr "營養不良!" #: src/sidebar.cpp msgid "Near starving" -msgstr "極度飢餓" +msgstr "營養不良" #: src/sidebar.cpp msgid "Famished" -msgstr "非常飢餓" +msgstr "極度飢餓" #: src/sidebar.cpp msgid "Very hungry" -msgstr "飢餓" +msgstr "非常飢餓" #: src/sidebar.cpp msgid "Hungry" -msgstr "肚餓" +msgstr "飢餓" #: src/sidebar.cpp msgid "Engorged" -msgstr "吃撐" +msgstr "腹脹" #: src/sidebar.cpp msgid "Sated" -msgstr "吃太飽" +msgstr "飽足" #: src/sidebar.cpp msgid "Full" @@ -144161,7 +145874,7 @@ msgstr " (上升中!!)" #: src/sidebar.cpp msgid " (Rising!)" -msgstr " (上升中!)" +msgstr " (上升中! )" #: src/sidebar.cpp msgid " (Rising)" @@ -144173,7 +145886,7 @@ msgstr " (下降中)" #: src/sidebar.cpp msgid " (Falling!)" -msgstr " (下降中!)" +msgstr " (下降中! )" #: src/sidebar.cpp msgid " (Falling!!)" @@ -144187,12 +145900,12 @@ msgstr "酷熱!%s" #: src/sidebar.cpp #, c-format msgid "Very hot!%s" -msgstr "非常酷熱!%s" +msgstr "非常炎熱!%s" #: src/sidebar.cpp #, c-format msgid "Warm%s" -msgstr "溫熱%s" +msgstr "炎熱%s" #: src/sidebar.cpp #, c-format @@ -144212,7 +145925,7 @@ msgstr "非常寒冷!%s" #: src/sidebar.cpp #, c-format msgid "Freezing!%s" -msgstr "冰凍!%s" +msgstr "酷寒!%s" #: src/sidebar.cpp msgid "Deaf!" @@ -144229,7 +145942,7 @@ msgstr "脫水" #: src/sidebar.cpp msgid "Dehydrated" -msgstr "極渴" +msgstr "極度口渴" #: src/sidebar.cpp msgid "Very thirsty" @@ -144305,15 +146018,15 @@ msgstr "你聽到 %s" #: src/sounds.cpp msgid "Your alarm clock finally wakes you up." -msgstr "" +msgstr "你的鬧鐘終於叫醒了你。" #: src/sounds.cpp msgid "Your alarm clock wakes you up." -msgstr "" +msgstr "你的鬧鐘叫醒了你。" #: src/sounds.cpp msgid "Your alarm clock goes off and you haven't slept a wink." -msgstr "" +msgstr "你的鬧鐘響了, 你一點都沒睡著。" #: src/sounds.cpp msgid "You turn off your alarm-clock." @@ -144326,7 +146039,7 @@ msgstr "一個聲音" #: src/start_location.cpp msgid "" "Unable to generate a valid starting location, please report this failure." -msgstr "無法正確生成起始位置, 請回報此錯誤" +msgstr "無法正確生成起始地點, 請回報此錯誤" #: src/string_input_popup.cpp msgid "d: delete history" @@ -144608,11 +146321,11 @@ msgstr "觸發了詭雷。" #. ~ the sound of a telepad functioning #: src/trapfunc.cpp msgid "vvrrrRRMM*POP!*" -msgstr "嘎嘎嘎嘎 *碰! *" +msgstr "嘎嘎嘎嘎 *碰*!" #: src/trapfunc.cpp msgid "The air shimmers around you..." -msgstr "空氣圍繞著你閃閃發光..." +msgstr "空氣圍繞著你閃閃發光…" #: src/trapfunc.cpp msgctxt "memorial_male" @@ -144627,7 +146340,7 @@ msgstr "觸發了傳送陷阱。" #: src/trapfunc.cpp #, c-format msgid "The air shimmers around the %s..." -msgstr "空氣圍繞著 %s 閃閃發光..." +msgstr "空氣圍繞著 %s 閃閃發光…" #: src/trapfunc.cpp msgid "You step in a puddle of thick goo." @@ -144708,7 +146421,7 @@ msgstr "你拍拍你的翅膀優雅的著陸。" msgid "" "You hit the ground hard, but your shock absorbers handle the impact " "admirably!" -msgstr "" +msgstr "你摔到堅硬的地面上, 但你的減震器完美地抵銷了衝擊力道!" #: src/trapfunc.cpp msgid "You hurt yourself!" @@ -144774,7 +146487,7 @@ msgstr "你避開其中的玻璃碎片。" #: src/trapfunc.cpp #, c-format msgid "The glass shards slash your %s!" -msgstr "玻璃碎片割到你的 %s!" +msgstr "玻璃碎片割傷了你的 %s!" #: src/trapfunc.cpp msgid "The shards shatter!" @@ -145031,7 +146744,7 @@ msgstr "所需技能:\n" #: src/veh_interact.cpp #, c-format msgid "Only one %1$s powered engine can be installed." -msgstr "" +msgstr "只能安裝一個 %1$s 為動力的引擎。" #: src/veh_interact.cpp msgid "Funnels need to be installed over a tank." @@ -145039,7 +146752,7 @@ msgstr "集雨器需要安裝在水箱上。" #: src/veh_interact.cpp msgid "Can't install turret on another turret." -msgstr "" +msgstr "無法把砲塔安裝在另一個砲塔之上。" #: src/veh_interact.cpp msgid "Additional requirements:\n" @@ -145066,7 +146779,7 @@ msgstr "" #: src/veh_interact.cpp msgid "Your morale is too low to construct..." -msgstr "士氣低落無法進行建設…" +msgstr "士氣低落無法進行建造…" #: src/veh_interact.cpp msgid "Cannot install any part here." @@ -145118,7 +146831,7 @@ msgstr "其他" #: src/veh_interact.cpp msgctxt "Vehicle Parts|" msgid "Filter" -msgstr "篩選器" +msgstr "篩選" #: src/veh_interact.cpp msgctxt "Vehicle Parts|" @@ -145170,7 +146883,7 @@ msgstr "選擇形狀:" #: src/veh_interact.cpp msgid "Your morale is too low to repair..." -msgstr "你士氣低落無法進行維修..." +msgstr "你士氣低落無法進行修理…" #: src/veh_interact.cpp msgid "There are no damaged parts on this vehicle." @@ -145182,7 +146895,7 @@ msgstr "你無法在開車時修理東西。" #: src/veh_interact.cpp msgid "Choose a part here to repair:" -msgstr "選擇要維修的零件:" +msgstr "選擇要修理的零件:" #: src/veh_interact.cpp msgid "This part cannot be repaired" @@ -145190,7 +146903,7 @@ msgstr "這個零件無法修理" #: src/veh_interact.cpp msgid "Your morale is too low to mend..." -msgstr "你的士氣太低而無法修補..." +msgstr "你的士氣太低而無法修補…" #: src/veh_interact.cpp msgid "No faulty parts require mending." @@ -145273,6 +146986,21 @@ msgstr "[{] 向上捲動" msgid "'}' to scroll down" msgstr "[}] 向下捲動" +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the broken %1$s may yield some fragments.\n" +msgstr "移除損壞的 %1$s 可能會獲得一些碎片。\n" + +#: src/veh_interact.cpp +#, c-format +msgid "" +"Removing the %1$s will yield:\n" +"> %2$s\n" +msgstr "" +"移除 %1$s 會獲得:\n" +"> %2$s\n" + #: src/veh_interact.cpp #, c-format msgid "> %2$s" @@ -145300,7 +147028,7 @@ msgstr "這個車輛已經沒有液體燃料能抽取了。" #: src/veh_interact.cpp msgid "You need a hose to siphon liquid fuel." -msgstr "你需要 軟管 才能抽取油箱裡的燃料。" +msgstr "你需要一個軟管才能抽取油箱裡的燃料。" #: src/veh_interact.cpp msgid "You can't siphon from a moving vehicle." @@ -145312,15 +147040,15 @@ msgstr "選取要抽取的油箱: " #: src/veh_interact.cpp msgid "The vehicle has no solid fuel left to remove." -msgstr "" +msgstr "這台車沒有固態燃料可移除。" #: src/veh_interact.cpp msgid "You can't unload from a moving vehicle." -msgstr "" +msgstr "你無法在移動中的車輛上進行卸載。" #: src/veh_interact.cpp msgid "There is no wheel to change here." -msgstr "這裡沒有輪子可以換。" +msgstr "這裡沒有輪胎可以換。" #: src/veh_interact.cpp #, c-format @@ -145329,8 +147057,8 @@ msgid "" "wheel, and either lifting equipment " "or %5$d strength." msgstr "" -"你需要一個扳手, 一個輪胎, " -"以及一個起重裝置或 %5$d 點力量才可替換輪胎。" +"你需要一個扳手、一個輪胎、以及一個起重裝置或" +" %5$d 點力量才能替換輪胎。" #: src/veh_interact.cpp msgid "Who is driving while you work?" @@ -145342,7 +147070,7 @@ msgstr "選擇替換用的輪胎:" #: src/veh_interact.cpp msgid "Need at least one seat and an ally to assign crew members." -msgstr "需要至少一個座位和同伴以指派乘員。" +msgstr "需要至少一個座位和一個同伴以指派乘員。" #: src/veh_interact.cpp msgid "Assign crew positions:" @@ -145445,7 +147173,7 @@ msgstr "狀態:" #: src/veh_interact.cpp msgid "Most damaged (can't repair):" -msgstr "受損最重 (無法修復):" +msgstr "受損最重 (無法修理):" #: src/veh_interact.cpp msgid "Most damaged:" @@ -145485,7 +147213,7 @@ msgstr "安裝" #: src/veh_interact.cpp msgid "epair" -msgstr "維修" +msgstr "修理耐久" #: src/veh_interact.cpp msgid "end" @@ -145505,7 +147233,7 @@ msgstr "抽取" #: src/veh_interact.cpp msgid "unloa" -msgstr "" +msgstr " 卸下" #: src/veh_interact.cpp msgid "hange tire" @@ -145525,7 +147253,7 @@ msgstr "
標籤" #: src/veh_interact.cpp msgid "-back" -msgstr "離開" +msgstr " 離開" #: src/veh_interact.cpp msgid "Dur" @@ -145553,11 +147281,11 @@ msgstr "重量" #: src/veh_interact.cpp msgid "FoldVol" -msgstr "摺疊體積" +msgstr "折疊體積" #: src/veh_interact.cpp msgid "Folded Volume" -msgstr "摺疊體積" +msgstr "折疊體積" #: src/veh_interact.cpp msgid "Cap" @@ -145659,7 +147387,7 @@ msgstr "選取要抽取的油箱: " #: src/veh_interact.cpp msgid "Remove what?" -msgstr "" +msgstr "移除什麼?" #: src/veh_interact.cpp #, c-format @@ -145674,7 +147402,7 @@ msgstr "你找不到 %s 要求的基礎零件。" #: src/veh_interact.cpp msgid "" "Choose a facing direction for the new headlight. Press space to continue." -msgstr "設定新車頭燈的照射方向。按空白鍵繼續。" +msgstr "設定新車頭燈的照射方向。請按空白鍵繼續。" #: src/veh_interact.cpp #, c-format @@ -145702,7 +147430,7 @@ msgstr "你裝填了 %1$s 的 %2$s 燃料。" #: src/veh_interact.cpp #, c-format msgid "You don't meet the requirements to remove the %s." -msgstr "你沒有對應的工具來移除 %s。" +msgstr "你沒有達成移除 %s 的需求。" #: src/veh_interact.cpp #, c-format @@ -145726,7 +147454,7 @@ msgstr "你把其中一個 %1$s 的輪胎換成了 %2$s。" #: src/veh_type.cpp msgid "Description\n" -msgstr "" +msgstr "描述\n" #: src/veh_type.cpp #, c-format @@ -145734,6 +147462,8 @@ msgid "" "\n" "Range: %1$5d Damage: %2$5.0f" msgstr "" +"\n" +"距離: %1$5d 傷害: %2$5.0f" #: src/veh_type.cpp #, c-format @@ -145743,12 +147473,12 @@ msgstr "具有 %1$d 級的 %2$s 特性" #: src/veh_type.cpp #, c-format msgid " and is rated at %1$d %2$s" -msgstr "" +msgstr "估計能抬起 %1$d %2$s" #: src/veh_utils.cpp #, c-format msgid "You don't meet the requirements to repair the %s." -msgstr "你不符合修理 %s 的要求。" +msgstr "你沒有達成修理 %s 的需求。" #: src/veh_utils.cpp #, c-format @@ -145766,51 +147496,51 @@ msgstr "砰!" #: src/vehicle.cpp msgid "Remove attached alternator first." -msgstr "" +msgstr "請先移除掛載的發電機。" #: src/vehicle.cpp msgid "Remove attached seatbelt first." -msgstr "" +msgstr "請先移除掛載的安全帶。" #: src/vehicle.cpp msgid "Remove attached curtains first." -msgstr "" +msgstr "請先移除掛載的窗簾。" #: src/vehicle.cpp msgid "Remove attached part first." -msgstr "" +msgstr "請先移除掛載部件。" #: src/vehicle.cpp msgid "Remove battery from mount first." -msgstr "" +msgstr "請先移除掛載的電池。" #: src/vehicle.cpp msgid "Remove attached mounted weapon first." -msgstr "" +msgstr "請先移除掛載的武器。" #: src/vehicle.cpp msgid "Remove carried animal first." -msgstr "" +msgstr "請先移除其中的動物。" #: src/vehicle.cpp msgid "Remove all other attached parts first." -msgstr "" +msgstr "請先移除全部的掛載部件。" #: src/vehicle.cpp msgid "Removing this part would split the vehicle." -msgstr "" +msgstr "移除這部件會讓車輛裂開。" #. ~ %1$s is the vehicle being loaded onto the bicycle rack #: src/vehicle.cpp #, c-format msgid "You load the %1$s on the rack" -msgstr "" +msgstr "你將 %1$s 掛載到自行車架上" #. ~ %1$s is the vehicle being loaded onto the bicycle rack #: src/vehicle.cpp #, c-format msgid "You can't get the %1$s on the rack" -msgstr "" +msgstr "你無法拿取自行車架上的 %1$s" #: src/vehicle.cpp msgid "The vehicle part you were working on has gone!" @@ -145824,13 +147554,13 @@ msgstr "你在處理的車輛零件被摧毀了!" #: src/vehicle.cpp #, c-format msgid "You unload the %s from the bike rack. " -msgstr "" +msgstr "你從自行車架上卸下了 %s。" #. ~ %s is the vehicle being loaded onto the bicycle rack #: src/vehicle.cpp #, c-format msgid "You can't unload the %s from the bike rack. " -msgstr "" +msgstr "你無法從自行車架上卸下 %s。" #: src/vehicle.cpp msgid "ROARRR!" @@ -145854,11 +147584,11 @@ msgstr "whirrr!" #: src/vehicle.cpp msgid "BRRROARRR!" -msgstr "" +msgstr "BRRROARRR!!" #: src/vehicle.cpp msgid "BRUMBRUMBRUMBRUM!" -msgstr "" +msgstr "BRUMBRUMBRUMBRUM!!!" #: src/vehicle.cpp #, c-format @@ -145917,7 +147647,7 @@ msgstr "%s 的油箱爆炸了!" #: src/vehicle_display.cpp msgid "More parts here..." -msgstr "這裡有更多的零件..." +msgstr "這裡有更多的零件…" #. ~ used/total volume of a cargo vehicle part #: src/vehicle_display.cpp @@ -145947,7 +147677,7 @@ msgstr "殘骸堆" #: src/vehicle_move.cpp #, c-format msgid "The %s doesn't have enough wheels to move!" -msgstr "%s 沒有足夠的輪子無法移動!" +msgstr "%s 沒有足夠的輪胎用於移動!" #: src/vehicle_move.cpp #, c-format @@ -146053,7 +147783,7 @@ msgstr "你開始控制 %s。" #: src/vehicle_move.cpp #, c-format msgid "The %s recovers from its skid." -msgstr "%s 從打滑中回復正常." +msgstr "%s 從打滑中回復正常。" #: src/vehicle_move.cpp #, c-format @@ -146078,17 +147808,17 @@ msgstr "你被衝擊波擊中造成 %d 傷害!" #: src/vehicle_move.cpp #, c-format msgid " takes %d damage by the power of the impact!" -msgstr " 被衝擊波擊中造成 %d 傷害!" +msgstr "被衝擊波擊中造成 %d 傷害!" #: src/vehicle_move.cpp #, c-format msgid "You lose control of the %s." -msgstr "你停止控制 %s 。" +msgstr "你停止控制 %s。" #: src/vehicle_move.cpp #, c-format msgid " loses control of the %s." -msgstr " 停止控制 %s 。" +msgstr "停止控制 %s。" #: src/vehicle_move.cpp #, c-format @@ -146098,7 +147828,7 @@ msgstr "你因為衝擊力的影響而彈出 %s 的座位!" #: src/vehicle_move.cpp #, c-format msgid " is hurled from the %s's seat by the power of the impact!" -msgstr " 因為衝擊力的影響而彈出 %s 的座位!" +msgstr "因為衝擊力的影響而彈出 %s 的座位!" #: src/vehicle_part.cpp #, c-format @@ -146126,13 +147856,13 @@ msgstr "電力不足以啟動 %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn off %s" -msgstr "關閉 %s" +msgid "Turn on %s" +msgstr "啟動 %s" #: src/vehicle_use.cpp #, c-format -msgid "Turn on %s" -msgstr "啟動 %s" +msgid "Turn off %s" +msgstr "關閉 %s" #: src/vehicle_use.cpp #, c-format @@ -146158,19 +147888,19 @@ msgstr "開啟" #: src/vehicle_use.cpp msgid "Open all curtains" -msgstr "" +msgstr "打開所有窗簾" #: src/vehicle_use.cpp msgid "Open all curtains and doors" -msgstr "" +msgstr "打開所有窗簾與門" #: src/vehicle_use.cpp msgid "Close all doors" -msgstr "" +msgstr "關閉所有門" #: src/vehicle_use.cpp msgid "Close all curtains and doors" -msgstr "" +msgstr "關閉所有窗簾與門" #: src/vehicle_use.cpp msgid "headlights" @@ -146228,13 +147958,9 @@ msgstr "已啟動攝影系統" msgid "Camera system won't turn on" msgstr "無法啟動攝影系統" -#: src/vehicle_use.cpp -msgid "Quit controlling electronics" -msgstr "" - #: src/vehicle_use.cpp msgid "Electronics controls" -msgstr "" +msgstr "電子控制" #: src/vehicle_use.cpp #, c-format @@ -146279,7 +148005,7 @@ msgstr "你能用個螺絲起子來進行短接發動。" #: src/vehicle_use.cpp msgid "You destroy the controls..." -msgstr "你毀掉了控制器..." +msgstr "你毀掉了控制器…" #: src/vehicle_use.cpp msgid "You damage the controls." @@ -146368,7 +148094,7 @@ msgstr "定速駕駛啟動" #: src/vehicle_use.cpp #, c-format msgid "Fold %s" -msgstr "摺疊 %s" +msgstr "折疊 %s" #: src/vehicle_use.cpp msgid "Try to disarm alarm." @@ -146411,32 +148137,32 @@ msgstr "你巧妙的將 %s 折疊好。" #: src/vehicle_use.cpp #, c-format msgid "folded %s" -msgstr "摺疊的 %s" +msgstr "%s (折疊)" #: src/vehicle_use.cpp #, c-format msgid "A folded %s." -msgstr "一個折疊的 %s." +msgstr "一個折疊的 %s。" #: src/vehicle_use.cpp #, c-format msgid "Looks like the %1$s is out of %2$s." -msgstr "%1$s 似乎缺少了 %2$s." +msgstr "%1$s 似乎缺少了 %2$s。" #: src/vehicle_use.cpp #, c-format msgid "The %s makes a long beeping sound." -msgstr "%s發出很長的嗶嗶響聲。" +msgstr "%s 發出很長的嗶嗶響聲。" #: src/vehicle_use.cpp #, c-format msgid "The %s makes a single clicking sound." -msgstr "%s發出單一的咔嚓聲。" +msgstr "%s 發出單一的咔嚓聲。" #: src/vehicle_use.cpp #, c-format msgid "The %s makes a rapid clicking sound." -msgstr "%s發出急促的咔嚓聲。" +msgstr "%s 發出急促的咔嚓聲。" #: src/vehicle_use.cpp #, c-format @@ -146446,7 +148172,7 @@ msgstr "%s 很快就熄火了。" #: src/vehicle_use.cpp #, c-format msgid "The %s makes a terrible clanking sound." -msgstr "%s發出可怕的叮噹聲。" +msgstr "%s 發出可怕的叮噹聲。" #: src/vehicle_use.cpp msgid "You honk the horn!" @@ -146476,11 +148202,11 @@ msgstr "哐哐哐哐!" #: src/vehicle_use.cpp msgid "Swish" -msgstr "嗖~" +msgstr "嗖" #: src/vehicle_use.cpp msgid "Clink" -msgstr "鐺~" +msgstr "鐺" #: src/vehicle_use.cpp msgid "Cugugugugug" @@ -146565,11 +148291,11 @@ msgstr "你的衣物保護了你不被酸雨傷害。" #: src/weather.cpp msgid "Your power armor protects you from the acidic drizzle." -msgstr "你的動力裝甲保護了你不被酸雨傷害。" +msgstr "你的動力裝甲保護了你不受酸雨傷害。" #: src/weather.cpp msgid "The acid rain stings, but is mostly harmless for now..." -msgstr "酸雨刺痛了你的皮膚, 但目前還沒有什麼影響..." +msgstr "酸雨刺痛了你的皮膚, 但目前還沒有什麼影響…" #: src/weather.cpp msgid "Your umbrella protects you from the acid rain." @@ -146581,7 +148307,7 @@ msgstr "你的衣物保護了你不被酸雨傷害。" #: src/weather.cpp msgid "Your power armor protects you from the acid rain." -msgstr "你的動力裝甲保護了你不被酸雨傷害。" +msgstr "你的動力裝甲保護了你不受酸雨傷害。" #: src/weather.cpp msgid "The acid rain burns!" @@ -146634,7 +148360,7 @@ msgstr "茫茫荒野" msgid "" "The current time is %s Eastern Standard Time. At %s in %s, it was %s. The " "temperature was %s. " -msgstr "目前東部標準時間 %s 。 %s 的 %s, 是 %s, 溫度為 %s。" +msgstr "目前東部標準時間 %s。 %s 的 %s, 是 %s, 溫度為 %s。" #: src/weather.cpp msgid "Tonight" @@ -146773,12 +148499,12 @@ msgstr "分類: " #: src/wish.cpp #, c-format msgid "pts: %d vis: %d ugly: %d" -msgstr "" +msgstr "點數: %d 能見度: %d 醜陋: %d" #: src/wish.cpp #, c-format msgid "[%s] find, [%s] quit, [t] toggle base trait" -msgstr "" +msgstr "[%s] 尋找, [%s] 退出, [t] 切換基礎特質" #: src/wish.cpp #, c-format @@ -146803,7 +148529,7 @@ msgstr "已產生 %d/%d 怪物, 選擇其他或按 [%s] 退出。" #: src/wish.cpp msgid "Add which flag? Use UPPERCASE letters without quotes" -msgstr "" +msgstr "添加哪個標記? 請使用不含引號的大寫字母" #: src/wish.cpp msgid " (contained)" @@ -146811,12 +148537,12 @@ msgstr " (已存放)" #: src/wish.cpp msgid " (flagged)" -msgstr "" +msgstr " (已標記)" #: src/wish.cpp #, c-format msgid "[%s] find, [f] container, [F] flag, [%s] quit" -msgstr "" +msgstr "[%s] 尋找, [f] 容器, [F] 標記, [%s] 退出" #: src/wish.cpp #, c-format @@ -146848,7 +148574,7 @@ msgstr "@ %d: %s " #: src/wish.cpp #, c-format msgid "Set '%s' to.." -msgstr "設定 '%s' 為.." +msgstr "設定 '%s' 為…" #: src/wish.cpp msgid " (current)" @@ -146897,7 +148623,7 @@ msgstr "設為 5" #: src/worldfactory.cpp msgid "Do you want to abort World Generation?" -msgstr "你要取消產生世界嗎?" +msgstr "你要中止創造世界嗎?" #: src/worldfactory.cpp msgid "world data" @@ -146914,12 +148640,12 @@ msgstr "頁面 %lu" #: src/worldfactory.cpp msgid "Pick a world to enter game" -msgstr "選擇要進入遊戲的世界" +msgstr "選擇一個要進入遊戲的世界。" #: src/worldfactory.cpp #, c-format msgid "Can't start in world [%s]. Some of mods require Lua support." -msgstr "無法在 [%s] 世界裡開始遊戲。部份模組需要 Lua 支援。" +msgstr "無法在 %s 世界裡開始遊戲。部份模組需要 Lua 支援。" #: src/worldfactory.cpp msgid " ACTIVE WORLD MODS " @@ -146927,15 +148653,15 @@ msgstr " 啟用中的模組 " #: src/worldfactory.cpp msgid "--NO ACTIVE MODS--" -msgstr "--沒有啟用的模組--" +msgstr "--沒有啟用中的模組--" #: src/worldfactory.cpp msgid "Switch to other list" -msgstr "切換到其他列表" +msgstr "移到其他列表" #: src/worldfactory.cpp msgid "Activate / deactivate mod" -msgstr "啟動 / 取消 模組" +msgstr "啟動/取消模組" #: src/worldfactory.cpp msgid "Mod List" @@ -146948,7 +148674,7 @@ msgstr "模組讀取順序" #: src/worldfactory.cpp #, c-format msgid "... %s = View full description " -msgstr "" +msgstr "… 按 %s 檢視完整模組描述 " #: src/worldfactory.cpp msgid "--NO AVAILABLE MODS--" @@ -146960,7 +148686,7 @@ msgstr "無法加入模組。這個模組需要 Lua 支援。" #: src/worldfactory.cpp msgid "Saved list of active mods as default" -msgstr "儲存列表啟動中的模組為預設值" +msgstr "已將啟動中的模組列表儲存為預設值" #: src/worldfactory.cpp msgid "World Name:" @@ -146969,7 +148695,7 @@ msgstr "世界名稱:" #: src/worldfactory.cpp #, c-format msgid "Press %s to pick a random name for your world." -msgstr "按下 %s 來挑選一個隨機世界名稱。" +msgstr "按 %s 隨機挑選世界名稱。" #: src/worldfactory.cpp #, c-format @@ -146978,28 +148704,27 @@ msgid "" "is and are ready to continue, or %s to go back and " "review your world." msgstr "" -"當你完成設定世界並準備繼續時按 %s, 或按 %s " -"返回重新檢視世界設定。" +"按 %s 完成創造世界, 按 %s 回頭檢視世界設定。" #: src/worldfactory.cpp #, c-format msgid "Mod '%s' requires Lua support." -msgstr "模組 \"%s\" 需要 Lua 支援。" +msgstr "模組 %s 需要 Lua 支援。" #: src/worldfactory.cpp msgid "________NO NAME ENTERED!________" -msgstr "" +msgstr "_________ 沒有輸入名稱! ________" #: src/worldfactory.cpp msgid "Are you SURE you're finished? World name will be randomly generated." -msgstr "你確定完成了嗎? 世界名稱將會隨機產生。" +msgstr "你 *確定* 完成了嗎? 世界名稱將會隨機產生。" #: src/worldfactory.cpp #, c-format msgid "" "%s = Save Load Order as default. %s = Controls %s/%s = Prev/Next Option. " "%s/%s = Prev/Next Tab." -msgstr "" +msgstr "%s 儲存模組讀取順序為預設值 %s 設定熱鍵 %s/%s 切換分類 %s/%s 切換分頁" #: src/worldfactory.cpp msgid "World Mods" @@ -147021,4 +148746,4 @@ msgstr "%s 是保留名稱!" #: src/worldfactory.cpp #, c-format msgid "A world named %s already exists!" -msgstr "世界名稱 %s 已存在!" +msgstr "世界名稱 %s 已經存在!" diff --git a/lang/strip_line_numbers.py b/lang/strip_line_numbers.py index a5e59e12cd87d..927d0be832f01 100755 --- a/lang/strip_line_numbers.py +++ b/lang/strip_line_numbers.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 "Strip line numbers from comments in input .pot or .po file." from __future__ import print_function @@ -14,7 +14,7 @@ def strip_pot_file(filename): print("Invalid filename: %s" % filename) sys.exit(1) try: - to_write = open(filename, 'r').readlines() + to_write = open(filename, 'r', encoding="utf-8").readlines() except IOError as read_exc: print(read_exc) sys.exit(1) @@ -25,7 +25,7 @@ def strip_pot_file(filename): # Write the file back out with the line numbers stripped try: - open(filename, 'w').writelines(to_write) + open(filename, 'w', encoding="utf-8").writelines(to_write) except IOError as write_exc: print(write_exc) sys.exit(1) diff --git a/lang/unicode_check.py b/lang/unicode_check.py index 28cdbe4c5430b..b1759d1a018a7 100755 --- a/lang/unicode_check.py +++ b/lang/unicode_check.py @@ -1,26 +1,7 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 from __future__ import print_function import sys -version_major = sys.version_info[0] - -def p2_check(f): - count = 1 - try: - for ln in f: - ln.decode("utf-8") - count = count + 1 - except IOError as err: - print(err) - return False - - except UnicodeDecodeError as UE: - print("Unicode error on line {0}:\n{1}".format(count, UE[1]), end="") - print("{0:>{1}}{2}".format("^", UE[2], "^" * (UE[3]-UE[2] + 1) )) - return False - - return True - def print_encode_error(unicode_err, counter): chunk = unicode_err.object err_line = counter + chunk.count(b'\n', 0, unicode_err.start) @@ -33,7 +14,7 @@ def print_encode_error(unicode_err, counter): x_start = unicode_err.start - line_start + 2 print("{0:>{1}}".format("^" * x_num, x_start)) -def p3_check(f): +def check(f): count = 1 try: for ln in f: @@ -51,13 +32,6 @@ def p3_check(f): if len(sys.argv) < 2: print("Usage: {} [FILENAME]".format(sys.argv[0])) sys.exit(1) - with open(sys.argv[1]) as pot_file: - if version_major == 2: - if not p2_check(pot_file): - sys.exit(1) - elif version_major == 3: - if not p3_check(pot_file): - sys.exit(1) - else: - print("Unsupported python version.") + with open(sys.argv[1], encoding="utf-8") as pot_file: + if not check(pot_file): sys.exit(1) diff --git a/lang/update_pot.sh b/lang/update_pot.sh index 6a96d90680868..8bc2a7d1fa3ba 100755 --- a/lang/update_pot.sh +++ b/lang/update_pot.sh @@ -30,6 +30,8 @@ xgettext --default-domain="cataclysm-dda" \ --keyword="ngettext:1,2" \ --keyword="translate_marker" \ --keyword="translate_marker_context:1c,2" \ + --keyword="translation:1,1t" \ + --keyword="translation:1c,2,2t" \ --from-code="UTF-8" \ src/*.cpp src/*.h lang/json/*.py if [ $? -ne 0 ]; then @@ -52,7 +54,7 @@ fi # strip line-numbers from the .pot file echo "> Stripping .pot file from unneeded comments" -if ! python lang/strip_line_numbers.py lang/po/cataclysm-dda.pot +if ! lang/strip_line_numbers.py lang/po/cataclysm-dda.pot then echo "Error in strip_line_numbers.py. Aborting" exit 1 @@ -68,7 +70,7 @@ fi # Check for broken Unicode symbols echo "> Checking for wrong Unicode symbols" -if ! python lang/unicode_check.py lang/po/cataclysm-dda.pot +if ! lang/unicode_check.py lang/po/cataclysm-dda.pot then echo "Updated pot file contain broken Unicode symbols. Aborting." exit 1 diff --git a/lua/class_definitions.lua b/lua/class_definitions.lua index 9812ecd8efa82..775c242c2c4fc 100644 --- a/lua/class_definitions.lua +++ b/lua/class_definitions.lua @@ -1193,7 +1193,7 @@ classes = { functions = { } }, - uimenu = { + uilist = { attributes = { title = { type = "string", @@ -1202,6 +1202,10 @@ classes = { selected = { type = "int", writable = false + }, + ret = { + type = "int", + writable = false } }, functions = { @@ -2204,9 +2208,14 @@ global_functions = { rval = "string" }, create_uimenu = { - cpp_name = "create_uimenu", + cpp_name = "create_uilist_no_cancel", + args = {}, + rval = "uilist&" + }, + create_uilist = { + cpp_name = "create_uilist", args = {}, - rval = "uimenu&" + rval = "uilist&" }, get_terrain_type = { cpp_name = "get_terrain_type", diff --git a/msvc-full-features/Cataclysm-vcpkg.sln b/msvc-full-features/Cataclysm-vcpkg.sln new file mode 100644 index 0000000000000..cb4ced433695d --- /dev/null +++ b/msvc-full-features/Cataclysm-vcpkg.sln @@ -0,0 +1,36 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27703.2047 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F95AB660-996E-46F9-B704-DAFA4489DEA7}" + ProjectSection(SolutionItems) = preProject + ..\.editorconfig = ..\.editorconfig + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Cataclysm-vcpkg", "Cataclysm-vcpkg.vcxproj", "{2586F32C-9F3B-4410-88D1-4543C38511D7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2586F32C-9F3B-4410-88D1-4543C38511D7}.Debug|x64.ActiveCfg = Debug|x64 + {2586F32C-9F3B-4410-88D1-4543C38511D7}.Debug|x64.Build.0 = Debug|x64 + {2586F32C-9F3B-4410-88D1-4543C38511D7}.Release|x64.ActiveCfg = Release|x64 + {2586F32C-9F3B-4410-88D1-4543C38511D7}.Release|x64.Build.0 = Release|x64 + {2586F32C-9F3B-4410-88D1-4543C38511D7}.Debug|x86.ActiveCfg = Debug|Win32 + {2586F32C-9F3B-4410-88D1-4543C38511D7}.Debug|x86.Build.0 = Debug|Win32 + {2586F32C-9F3B-4410-88D1-4543C38511D7}.Release|x86.ActiveCfg = Release|Win32 + {2586F32C-9F3B-4410-88D1-4543C38511D7}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {F29F127E-904D-4F04-B238-3A9D3DD540B8} + EndGlobalSection +EndGlobal diff --git a/msvc-full-features/Cataclysm-vcpkg.vcxproj b/msvc-full-features/Cataclysm-vcpkg.vcxproj new file mode 100644 index 0000000000000..2ede636b710c6 --- /dev/null +++ b/msvc-full-features/Cataclysm-vcpkg.vcxproj @@ -0,0 +1,225 @@ + + + + + Debug + x64 + + + Release + x64 + + + Debug + Win32 + + + Release + Win32 + + + + 15.0 + {2586F32C-9F3B-4410-88D1-4543C38511D7} + Win32Proj + Cataclysm + 10.0.17134.0 + + + + Application + true + v141 + MultiByte + + + Application + false + v141 + false + MultiByte + + + Application + true + v141 + MultiByte + + + Application + false + v141 + false + MultiByte + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\..\ + Cataclysm- + vcpkg\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\..\ + Cataclysm + vcpkg\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\..\ + Cataclysm- + vcpkg\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\..\ + Cataclysm + vcpkg\$(Platform)\$(Configuration)\ + + + + Use + Level1 + Disabled + true + _SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_DEBUG;_WINDOWS;SDL_SOUND;TILES;LUA;LOCALIZE;USE_VCPKG;USE_WINMAIN;%(PreprocessorDefinitions) + false + false + false + /bigobj /utf-8 %(AdditionalOptions) + stdafx.h + 4819;4146 + ProgramDatabase + true + true + + + Windows + true + /LTCG:OFF %(AdditionalOptions) + Default + + + true + + + + + Level1 + Use + MaxSpeed + true + true + _SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;NDEBUG;_WINDOWS;SDL_SOUND;TILES;LUA;LOCALIZE;USE_VCPKG;USE_WINMAIN;%(PreprocessorDefinitions) + true + false + false + 4819;4146 + stdafx.h + /bigobj /utf-8 %(AdditionalOptions) + true + ProgramDatabase + + + Windows + true + true + DebugFastLink + Default + /LTCG:OFF %(AdditionalOptions) + + + prebuild.cmd + + + + + Use + Level1 + Disabled + true + _SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_DEBUG;_WINDOWS;SDL_SOUND;TILES;LUA;LOCALIZE;USE_VCPKG;USE_WINMAIN;%(PreprocessorDefinitions) + false + false + false + /bigobj /utf-8 %(AdditionalOptions) + stdafx.h + 4819;4146 + ProgramDatabase + true + true + + + Windows + true + /LTCG:OFF %(AdditionalOptions) + Default + + + true + + + + + Level1 + Use + MaxSpeed + true + true + _SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;NDEBUG;_WINDOWS;SDL_SOUND;TILES;LUA;LOCALIZE;USE_VCPKG;USE_WINMAIN;%(PreprocessorDefinitions) + true + false + false + 4819;4146 + stdafx.h + /bigobj /utf-8 %(AdditionalOptions) + true + ProgramDatabase + + + Windows + true + true + DebugFastLink + Default + /LTCG:OFF %(AdditionalOptions) + + + prebuild.cmd + + + + + + + + + + Create + Create + Create + Create + + + + + + diff --git a/msvc-full-features/Cataclysm.vcxproj b/msvc-full-features/Cataclysm.vcxproj index 9dd7fa81c295f..deb7615533511 100755 --- a/msvc-full-features/Cataclysm.vcxproj +++ b/msvc-full-features/Cataclysm.vcxproj @@ -23,6 +23,7 @@ Win32Proj Cataclysm 8.1 + NoUpgrade diff --git a/msvc-full-features/Cataclysm_lib.vcxproj b/msvc-full-features/Cataclysm_lib.vcxproj index 5423034a5c7e3..4abca8db661dd 100755 --- a/msvc-full-features/Cataclysm_lib.vcxproj +++ b/msvc-full-features/Cataclysm_lib.vcxproj @@ -23,6 +23,7 @@ Win32Proj Cataclysm_lib 8.1 + NoUpgrade diff --git a/msvc-full-features/Tests.vcxproj b/msvc-full-features/Tests.vcxproj index 08643a4361d18..050ca739fa995 100755 --- a/msvc-full-features/Tests.vcxproj +++ b/msvc-full-features/Tests.vcxproj @@ -23,6 +23,7 @@ Win32Proj Tests 8.1 + NoUpgrade diff --git a/msvc-full-features/WINDEPEND.props b/msvc-full-features/WINDEPEND.props index 80ff02ae4e70d..4cb1fc0ce78bc 100644 --- a/msvc-full-features/WINDEPEND.props +++ b/msvc-full-features/WINDEPEND.props @@ -3,10 +3,10 @@ $(SolutionDir)..\WinDepend\ - $(WINDEPEND)SDL2-2.0.4\ + $(WINDEPEND)SDL2-2.0.9\ $(WINDEPEND)SDL2_ttf-2.0.14\ - $(WINDEPEND)SDL2_mixer-2.0.1\ - $(WINDEPEND)SDL2_image-2.0.1\ + $(WINDEPEND)SDL2_mixer-2.0.4\ + $(WINDEPEND)SDL2_image-2.0.4\ $(WINDEPEND)gettext\ $(WINDEPEND)lua-5.3.3\ diff --git a/msvc-full-features/stdafx.h b/msvc-full-features/stdafx.h index 477c163cf5ede..e6eff8ed21155 100644 --- a/msvc-full-features/stdafx.h +++ b/msvc-full-features/stdafx.h @@ -1,92 +1,98 @@ #pragma once +#include +#include +#include #include -#include -#include -#include -#include #include -//#include -//#include -#include -#include #include -#include -#include -#include #include -#include -#include -#include #include -#include -#include -#include #include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include -#include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include -#include -//#include -//#include #include -#include -#include -#include -#include #include -#include -#include -#include -#include #include -#include -#include -#include -#include #include -#include -#include -#include -#include #include -#include -#include -//#include -#include #include -#include -//#include -#include -#include #include -#include -#include -#include -#include #include -#include -#include -#include #include -//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "../src/platform_win.h" #if defined(TILES) -# include -# include -# include -# if defined(SDL_SOUND) -# include +# if defined(_MSC_VER) && defined(USE_VCPKG) +# include +# include +# include +# include +# include +# ifdef SDL_SOUND +# include +# endif +# else +# include +# include +# include +# include +# include +# ifdef SDL_SOUND +# include +# endif # endif #endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1b603c4105215..1496153178134 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,10 +2,13 @@ cmake_minimum_required(VERSION 2.8.12) SET(CATACLYSM_DDA_SRCS "") +SET(MAIN_CPP ${CMAKE_SOURCE_DIR}/src/main.cpp) FILE(GLOB CATACLYSM_DDA_SOURCES ${CMAKE_SOURCE_DIR}/src/*.cpp) +LIST(REMOVE_ITEM CATACLYSM_DDA_SOURCES ${MAIN_CPP}) + FILE(GLOB CATACLYSM_DDA_HEADERS ${CMAKE_SOURCE_DIR}/src/*.h) @@ -42,7 +45,7 @@ IF(WIN32) ${CMAKE_SOURCE_DIR}/src ) SET(CATACLYSM_DDA_SRCS - ${CMAKE_SOURCE_DIR}/src/main.cpp + ${MAIN_CPP} ${CMAKE_BINARY_DIR}/resource.rc.o ) ENDIF(RC_COMPILER_PATH) @@ -50,16 +53,20 @@ ENDIF(WIN32) # Build tiles version if requested IF(TILES) + add_library(libcataclysm-tiles STATIC + ${CATACLYSM_DDA_SOURCES} + ${CATACLYSM_DDA_HEADERS} + ) + + target_include_directories(libcataclysm-tiles PUBLIC ${CMAKE_SOURCE_DIR}/src) + IF(WIN32) - ADD_EXECUTABLE(cataclysm-tiles WIN32 - ${CATACLYSM_DDA_SOURCES} - ${CATACLYSM_DDA_HEADERS} + ADD_EXECUTABLE(cataclysm-tiles ${CATACLYSM_DDA_SRCS} ) ELSE(WIN32) ADD_EXECUTABLE(cataclysm-tiles - ${CATACLYSM_DDA_SOURCES} - ${CATACLYSM_DDA_HEADERS} + ${MAIN_CPP} ) ENDIF(WIN32) @@ -67,44 +74,46 @@ IF(TILES) ADD_DEPENDENCIES(cataclysm-tiles compile_res) ENDIF(RC_COMPILER_PATH) - ADD_DEPENDENCIES(cataclysm-tiles get_version) + ADD_DEPENDENCIES(libcataclysm-tiles get_version) + + target_link_libraries(cataclysm-tiles libcataclysm-tiles) + target_compile_definitions(libcataclysm-tiles PUBLIC TILES ) IF (LUA) - ADD_DEPENDENCIES(cataclysm-tiles lua_bindings) - target_include_directories(cataclysm-tiles PUBLIC ${LUA_INCLUDE_DIR}) - target_link_libraries(cataclysm-tiles ${LUA_LIBRARIES}) + ADD_DEPENDENCIES(libcataclysm-tiles lua_bindings) + target_include_directories(libcataclysm-tiles PUBLIC ${LUA_INCLUDE_DIR}) + target_link_libraries(libcataclysm-tiles ${LUA_LIBRARIES}) ENDIF(LUA) IF (LOCALIZE) - target_include_directories(cataclysm-tiles PUBLIC + target_include_directories(libcataclysm-tiles PUBLIC ${LIBINTL_INCLUDE_DIR} ${ICONV_INCLUDE_DIR} ) - target_link_libraries(cataclysm-tiles + target_link_libraries(libcataclysm-tiles ${LIBINTL_LIBRARIES} ${ICONV_LIBRARIES} ) ENDIF (LOCALIZE) IF(CMAKE_USE_PTHREADS_INIT) - set_property(TARGET cataclysm-tiles PROPERTY COMPILE_OPTIONS "-pthread") - set_property(TARGET cataclysm-tiles PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread") + target_compile_options(libcataclysm-tiles PUBLIC "-pthread") ENDIF(CMAKE_USE_PTHREADS_INIT) IF(CMAKE_THREAD_LIBS_INIT) - target_link_libraries(cataclysm-tiles ${CMAKE_THREAD_LIBS_INIT}) + target_link_libraries(libcataclysm-tiles ${CMAKE_THREAD_LIBS_INIT}) ENDIF(CMAKE_THREAD_LIBS_INIT) IF (NOT DYNAMIC_LINKING) # SDL, SDL_Image, SDL_ttf deps are required for static build - target_include_directories(cataclysm-tiles PUBLIC + target_include_directories(libcataclysm-tiles PUBLIC ${FREETYPE_INCLUDE_DIRS} ${PNG_INCLUDE_DIRS} ${JPEG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS} ${BZIP2_INCLUDE_DIR} ) - target_link_libraries(cataclysm-tiles + target_link_libraries(libcataclysm-tiles ${FREETYPE_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} @@ -113,42 +122,37 @@ IF(TILES) ) ENDIF (NOT DYNAMIC_LINKING) - target_include_directories(cataclysm-tiles PUBLIC + target_include_directories(libcataclysm-tiles PUBLIC ${SDL2_INCLUDE_DIR} ${SDL2_IMAGE_INCLUDE_DIRS} ${SDL2_TTF_INCLUDE_DIRS} ) - target_link_libraries(cataclysm-tiles + target_link_libraries(libcataclysm-tiles ${SDL2_LIBRARY} ${SDL2_IMAGE_LIBRARIES} ${SDL2_TTF_LIBRARIES} ) IF(SOUND) - set_target_properties(cataclysm-tiles PROPERTIES COMPILE_DEFINITIONS - "TILES;SDL_SOUND" ) - - target_include_directories(cataclysm-tiles PUBLIC ${OGGVORBIS_INCLUDE_DIR}) - target_link_libraries(cataclysm-tiles ${OGG_LIBRARY}) - target_link_libraries(cataclysm-tiles ${VORBIS_LIBRARY}) - target_link_libraries(cataclysm-tiles ${VORBISFILE_LIBRARY}) - - target_include_directories(cataclysm-tiles PUBLIC ${SDL2_MIXER_INCLUDE_DIRS}) - target_link_libraries(cataclysm-tiles ${SDL2_MIXER_LIBRARIES}) - ELSE(SOUND) - # Set additional build props - set_target_properties(cataclysm-tiles PROPERTIES COMPILE_DEFINITIONS - "TILES" ) + target_compile_definitions(libcataclysm-tiles PUBLIC SDL_SOUND ) + + target_include_directories(libcataclysm-tiles PUBLIC ${OGGVORBIS_INCLUDE_DIR}) + target_link_libraries(libcataclysm-tiles ${OGG_LIBRARY}) + target_link_libraries(libcataclysm-tiles ${VORBIS_LIBRARY}) + target_link_libraries(libcataclysm-tiles ${VORBISFILE_LIBRARY}) + + target_include_directories(libcataclysm-tiles PUBLIC ${SDL2_MIXER_INCLUDE_DIRS}) + target_link_libraries(libcataclysm-tiles ${SDL2_MIXER_LIBRARIES}) ENDIF(SOUND) IF(WIN32) # Global settings for Windows targets (at end) - target_link_libraries(cataclysm-tiles gdi32.lib) - target_link_libraries(cataclysm-tiles winmm.lib) - target_link_libraries(cataclysm-tiles imm32.lib) - target_link_libraries(cataclysm-tiles ole32.lib) - target_link_libraries(cataclysm-tiles oleaut32.lib) - target_link_libraries(cataclysm-tiles version.lib) + target_link_libraries(libcataclysm-tiles gdi32.lib) + target_link_libraries(libcataclysm-tiles winmm.lib) + target_link_libraries(libcataclysm-tiles imm32.lib) + target_link_libraries(libcataclysm-tiles ole32.lib) + target_link_libraries(libcataclysm-tiles oleaut32.lib) + target_link_libraries(libcataclysm-tiles version.lib) ENDIF(WIN32) IF(RELEASE) @@ -158,16 +162,20 @@ ENDIF(TILES) # Build curses version if requested IF(CURSES) + add_library(libcataclysm STATIC + ${CATACLYSM_DDA_SOURCES} + ${CATACLYSM_DDA_HEADERS} + ) + + target_include_directories(libcataclysm PUBLIC ${CMAKE_SOURCE_DIR}/src) + IF(WIN32) ADD_EXECUTABLE(cataclysm - ${CATACLYSM_DDA_SOURCES} - ${CATACLYSM_DDA_HEADERS} ${CATACLYSM_DDA_SRCS} ) ELSE(WIN32) ADD_EXECUTABLE(cataclysm - ${CATACLYSM_DDA_SOURCES} - ${CATACLYSM_DDA_HEADERS} + ${MAIN_CPP} ) ENDIF(WIN32) @@ -175,45 +183,46 @@ IF(CURSES) ADD_DEPENDENCIES(cataclysm compile_res) ENDIF(RC_COMPILER_PATH) - ADD_DEPENDENCIES(cataclysm get_version) + ADD_DEPENDENCIES(libcataclysm get_version) + + target_link_libraries(cataclysm libcataclysm) IF (LUA) - ADD_DEPENDENCIES(cataclysm lua_bindings) - target_include_directories(cataclysm PUBLIC ${LUA_INCLUDE_DIR}) - target_link_libraries(cataclysm ${LUA_LIBRARIES}) + ADD_DEPENDENCIES(libcataclysm lua_bindings) + target_include_directories(libcataclysm PUBLIC ${LUA_INCLUDE_DIR}) + target_link_libraries(libcataclysm ${LUA_LIBRARIES}) ENDIF(LUA) IF (LOCALIZE) - target_include_directories(cataclysm PUBLIC + target_include_directories(libcataclysm PUBLIC ${LIBINTL_INCLUDE_DIR} ${ICONV_INCLUDE_DIR} ) - target_link_libraries(cataclysm + target_link_libraries(libcataclysm ${LIBINTL_LIBRARIES} ${ICONV_LIBRARIES} ) ENDIF (LOCALIZE) - target_include_directories(cataclysm PUBLIC ${CURSES_INCLUDE_DIR}) - target_link_libraries(cataclysm ${CURSES_LIBRARIES}) + target_include_directories(libcataclysm PUBLIC ${CURSES_INCLUDE_DIR}) + target_link_libraries(libcataclysm ${CURSES_LIBRARIES}) IF(CMAKE_USE_PTHREADS_INIT) - set_property(TARGET cataclysm PROPERTY COMPILE_OPTIONS "-pthread") - set_property(TARGET cataclysm PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread") + target_compile_options(libcataclysm PUBLIC "-pthread") ENDIF(CMAKE_USE_PTHREADS_INIT) IF(CMAKE_THREAD_LIBS_INIT) - target_link_libraries(cataclysm ${CMAKE_THREAD_LIBS_INIT}) + target_link_libraries(libcataclysm ${CMAKE_THREAD_LIBS_INIT}) ENDIF(CMAKE_THREAD_LIBS_INIT) IF(WIN32) # Global settings for Windows targets (at end) - target_link_libraries(cataclysm gdi32.lib) - target_link_libraries(cataclysm winmm.lib) - target_link_libraries(cataclysm imm32.lib) - target_link_libraries(cataclysm ole32.lib) - target_link_libraries(cataclysm oleaut32.lib) - target_link_libraries(cataclysm version.lib) + target_link_libraries(libcataclysm gdi32.lib) + target_link_libraries(libcataclysm winmm.lib) + target_link_libraries(libcataclysm imm32.lib) + target_link_libraries(libcataclysm ole32.lib) + target_link_libraries(libcataclysm oleaut32.lib) + target_link_libraries(libcataclysm version.lib) ENDIF(WIN32) IF(RELEASE) @@ -317,3 +326,5 @@ IF(MINGW AND NOT RELEASE) DESTINATION ${BIN_PREFIX} ) ENDIF(MINGW AND NOT RELEASE) + +# vim:noet diff --git a/src/action.cpp b/src/action.cpp index f66c8d0d7151f..1e576b875986d 100644 --- a/src/action.cpp +++ b/src/action.cpp @@ -1,31 +1,27 @@ #include "action.h" -#include "output.h" -#include "options.h" -#include "path_info.h" + +#include "cata_utility.h" #include "debug.h" #include "game.h" -#include "map.h" #include "iexamine.h" -#include "player.h" -#include "options.h" -#include "messages.h" -#include "translations.h" #include "input.h" -#include "crafting.h" +#include "map.h" #include "map_iterator.h" -#include "ui.h" -#include "trap.h" -#include "itype.h" #include "mapdata.h" -#include "cata_utility.h" +#include "messages.h" +#include "optional.h" +#include "output.h" +#include "path_info.h" +#include "player.h" +#include "translations.h" +#include "trap.h" +#include "ui.h" #include "vehicle.h" #include "vpart_position.h" -#include "optional.h" +#include #include -#include #include -#include extern bool tile_iso; @@ -100,7 +96,7 @@ std::vector keys_bound_to( action_id act ) action_id action_from_key( char ch ) { input_context ctxt = get_default_mode_input_context(); - input_event event( ( long ) ch, CATA_INPUT_KEYBOARD ); + input_event event( static_cast( ch ), CATA_INPUT_KEYBOARD ); const std::string action = ctxt.input_to_action( event ); return look_up_action( action ); } @@ -485,6 +481,7 @@ bool can_butcher_at( const tripoint &p ) { // TODO: unify this with game::butcher const int factor = g->u.max_quality( quality_id( "BUTCHER" ) ); + const int factorD = g->u.max_quality( quality_id( "CUT_FINE" ) ); auto items = g->m.i_at( p ); bool has_item = false; bool has_corpse = false; @@ -492,7 +489,7 @@ bool can_butcher_at( const tripoint &p ) const inventory &crafting_inv = g->u.crafting_inventory(); for( auto &items_it : items ) { if( items_it.is_corpse() ) { - if( factor != INT_MIN ) { + if( factor != INT_MIN || factorD != INT_MIN ) { has_corpse = true; } } else if( g->u.can_disassemble( items_it, crafting_inv ).success() ) { @@ -541,11 +538,7 @@ bool can_examine_at( const tripoint &p ) } const trap &tr = g->m.tr_at( p ); - if( tr.can_see( p, g->u ) ) { - return true; - } - - return false; + return tr.can_see( p, g->u ); } bool can_interact_at( action_id action, const tripoint &p ) @@ -578,12 +571,12 @@ action_id handle_action_menu() const input_context ctxt = get_default_mode_input_context(); std::string catgname; -#define REGISTER_ACTION(name) entries.emplace_back(uimenu_entry(name, true, hotkey_for_action(name), \ - ctxt.get_action_name(action_ident(name)))); -#define REGISTER_CATEGORY(name) categories_by_int[last_category] = name; \ +#define REGISTER_ACTION( name ) entries.emplace_back( name, true, hotkey_for_action(name), \ + ctxt.get_action_name( action_ident( name ) ) ); +#define REGISTER_CATEGORY( name ) categories_by_int[last_category] = name; \ catgname = name; \ catgname += "..."; \ - entries.emplace_back(uimenu_entry(last_category, true, -1, catgname)); \ + entries.emplace_back( last_category, true, -1, catgname ); \ last_category++; // Calculate weightings for the various actions to give the player suggestions @@ -651,8 +644,8 @@ action_id handle_action_menu() std::string category = "back"; while( true ) { - std::vector entries; - uimenu_entry *entry; + std::vector entries; + uilist_entry *entry; std::map categories_by_int; int last_category = NUM_ACTIONS + 1; @@ -790,8 +783,8 @@ action_id handle_action_menu() if( category != "back" ) { std::string msg = _( "Back" ); msg += "..."; - entries.emplace_back( uimenu_entry( 2 * NUM_ACTIONS, true, - hotkey_for_action( ACTION_ACTIONMENU ), msg ) ); + entries.emplace_back( 2 * NUM_ACTIONS, true, + hotkey_for_action( ACTION_ACTIONMENU ), msg ); } std::string title = _( "Actions" ); @@ -803,14 +796,15 @@ action_id handle_action_menu() int width = 0; for( auto &cur_entry : entries ) { - if( width < ( int )cur_entry.txt.length() ) { + if( width < static_cast( cur_entry.txt.length() ) ) { width = cur_entry.txt.length(); } } //border=2, selectors=3, after=3 for balance. width += 2 + 3 + 3; int ix = ( TERMX > width ) ? ( TERMX - width ) / 2 - 1 : 0; - int iy = ( TERMY > ( int )entries.size() + 2 ) ? ( TERMY - ( int )entries.size() - 2 ) / 2 - 1 : 0; + int iy = ( TERMY > static_cast( entries.size() ) + 2 ) ? ( TERMY - static_cast + ( entries.size() ) - 2 ) / 2 - 1 : 0; int selection = uilist( std::max( ix, 0 ), std::min( width, TERMX - 2 ), std::max( iy, 0 ), title, entries ); @@ -827,7 +821,7 @@ action_id handle_action_menu() } else if( selection > NUM_ACTIONS ) { category = categories_by_int[selection]; } else { - return ( action_id ) selection; + return static_cast( selection ); } } @@ -838,13 +832,11 @@ action_id handle_action_menu() action_id handle_main_menu() { const input_context ctxt = get_default_mode_input_context(); - std::vector entries; + std::vector entries; auto REGISTER_ACTION = [&]( action_id name ) { - entries.emplace_back( uimenu_entry( name, true, hotkey_for_action( name ), - ctxt.get_action_name( action_ident( name ) ) - ) - ); + entries.emplace_back( name, true, hotkey_for_action( name ), + ctxt.get_action_name( action_ident( name ) ) ); }; REGISTER_ACTION( ACTION_HELP ); @@ -860,14 +852,15 @@ action_id handle_main_menu() int width = 0; for( auto &entry : entries ) { - if( width < ( int )entry.txt.length() ) { + if( width < static_cast( entry.txt.length() ) ) { width = entry.txt.length(); } } //border=2, selectors=3, after=3 for balance. width += 2 + 3 + 3; int ix = ( TERMX > width ) ? ( TERMX - width ) / 2 - 1 : 0; - int iy = ( TERMY > ( int )entries.size() + 2 ) ? ( TERMY - ( int )entries.size() - 2 ) / 2 - 1 : 0; + int iy = ( TERMY > static_cast( entries.size() ) + 2 ) ? ( TERMY - static_cast + ( entries.size() ) - 2 ) / 2 - 1 : 0; int selection = uilist( std::max( ix, 0 ), std::min( width, TERMX - 2 ), std::max( iy, 0 ), _( "MAIN MENU" ), entries ); @@ -876,7 +869,7 @@ action_id handle_main_menu() if( selection < 0 || selection >= NUM_ACTIONS ) { return ACTION_NULL; } else { - return ( action_id ) selection; + return static_cast( selection ); } } diff --git a/src/action.h b/src/action.h index 3de255d275ff2..f83d24e0d3625 100644 --- a/src/action.h +++ b/src/action.h @@ -2,10 +2,10 @@ #ifndef ACTION_H #define ACTION_H -#include #include -#include #include +#include +#include struct tripoint; diff --git a/src/activity_handlers.cpp b/src/activity_handlers.cpp index 2fcdc891eb4b8..fe0a7c60812b9 100644 --- a/src/activity_handlers.cpp +++ b/src/activity_handlers.cpp @@ -1,44 +1,42 @@ #include "activity_handlers.h" -#include "game.h" -#include "map.h" -#include "player.h" #include "action.h" -#include "veh_interact.h" +#include "catalua.h" +#include "clzones.h" +#include "construction.h" +#include "craft_command.h" #include "debug.h" -#include "translations.h" -#include "sounds.h" +#include "fault.h" +#include "field.h" +#include "game.h" +#include "gates.h" +#include "harvest.h" +#include "iexamine.h" +#include "itype.h" #include "iuse_actor.h" -#include "skill.h" -#include "craft_command.h" -#include "rng.h" -#include "requirements.h" +#include "map.h" +#include "map_iterator.h" +#include "mapdata.h" +#include "martialarts.h" +#include "messages.h" #include "mongroup.h" #include "morale_types.h" -#include "string_formatter.h" -#include "output.h" -#include "vpart_position.h" -#include "messages.h" -#include "martialarts.h" -#include "itype.h" -#include "vehicle.h" -#include "mapdata.h" -#include "iexamine.h" #include "mtype.h" -#include "field.h" -#include "weather.h" +#include "output.h" +#include "player.h" +#include "requirements.h" +#include "rng.h" +#include "skill.h" +#include "sounds.h" +#include "string_formatter.h" +#include "translations.h" #include "ui.h" -#include "map_iterator.h" -#include "gates.h" -#include "catalua.h" -#include "fault.h" -#include "construction.h" -#include "harvest.h" -#include "clzones.h" +#include "veh_interact.h" +#include "vehicle.h" +#include "vpart_position.h" -#include -#include #include +#include #define dbg(x) DebugLog((DebugLevel)(x),D_GAME) << __FILE__ << ":" << __LINE__ << ": " @@ -255,9 +253,10 @@ void set_up_butchery( player_activity &act, player &u, butcher_type action ) return; } - int factor = u.max_quality( quality_id( "BUTCHER" ) ); + int factor = u.max_quality( action == DISSECT ? quality_id( "CUT_FINE" ) : + quality_id( "BUTCHER" ) ); auto items = g->m.i_at( u.pos() ); - if( static_cast( act.index ) >= items.size() || factor == INT_MIN ) { + if( static_cast( act.index ) >= items.size() ) { // Let it print a msg for lack of corpses act.index = INT_MAX; return; @@ -266,19 +265,24 @@ void set_up_butchery( player_activity &act, player &u, butcher_type action ) item corpse_item = items[act.index]; const mtype &corpse = *( corpse_item.get_mtype() ); - if( action != DISSECT && u.max_quality( quality_id( "BUTCHER" ) ) < 0 && one_in( 3 ) ) { - u.add_msg_if_player( m_bad, - _( "You don't trust the quality of your tools, but carry on anyway." ) ); + if( action != DISSECT ) { + if( factor == INT_MIN ) { + u.add_msg_if_player( m_info, + _( "None of your cutting tools are suitable for butchering." ) ); + act.set_to_null(); + return; + } else if( factor < 0 && one_in( 3 ) ) { + u.add_msg_if_player( m_bad, + _( "You don't trust the quality of your tools, but carry on anyway." ) ); + } } if( action == DISSECT ) { - factor = u.max_quality( quality_id( "CUT_FINE" ) ); switch( factor ) { case INT_MIN: u.add_msg_if_player( m_info, _( "None of your tools are sharp and precise enough to do that." ) ); act.set_to_null(); return; - break; case 1: u.add_msg_if_player( m_info, _( "You could use a better tool, but this will do." ) ); break; @@ -383,7 +387,7 @@ void set_up_butchery( player_activity &act, player &u, butcher_type action ) if( is_human && !( u.has_trait_flag( "CANNIBAL" ) || u.has_trait_flag( "PSYCHOPATH" ) || u.has_trait_flag( "SAPIOVORE" ) ) ) { - if( query_yn( "Would you dare desecrate the mortal remains of a fellow human being?" ) ) { + if( query_yn( _( "Would you dare desecrate the mortal remains of a fellow human being?" ) ) ) { g->u.add_morale( MORALE_BUTCHER, -50, 0, 2_days, 3_hours ); switch( rng( 1, 3 ) ) { case 1: @@ -463,6 +467,10 @@ int butcher_time_to_cut( const player &u, const item &corpse_item, const butcher break; } + if( corpse_item.has_flag( "QUARTERED" ) ) { + time_to_cut /= 4; + } + return time_to_cut; } @@ -1065,14 +1073,14 @@ void activity_handlers::butcher_finish( player_activity *act, player *p ) } int skill_level = p->get_skill_level( skill_survival ); - int factor = p->max_quality( quality_id( "BUTCHER" ) ); + int factor = p->max_quality( action == DISSECT ? quality_id( "CUT_FINE" ) : + quality_id( "BUTCHER" ) ); // DISSECT has special case factor calculation and results. if( action == DISSECT ) { skill_level = p->get_skill_level( skill_firstaid ); skill_level += p->max_quality( quality_id( "CUT_FINE" ) ); skill_level += p->get_skill_level( skill_electronics ) / 2; - factor = 0; } auto roll_butchery = [&]() { @@ -1209,7 +1217,6 @@ void activity_handlers::butcher_finish( player_activity *act, player *p ) } act->set_to_null(); return; - break; case DISSECT: p->add_msg_if_player( m_good, _( "You finish dissecting the %s." ), corpse_item.tname().c_str() ); g->m.i_rem( p->pos(), act->index ); @@ -1484,7 +1491,7 @@ void activity_handlers::firstaid_finish( player_activity *act, player *p ) // TODO: Store the patient somehow, retrieve here player &patient = *p; - hp_part healed = ( hp_part )act->values[0]; + hp_part healed = static_cast( act->values[0] ); long charges_consumed = actor->finish_using( *p, patient, *used_tool, healed ); p->consume_charges( it, charges_consumed ); @@ -1697,7 +1704,7 @@ void activity_handlers::make_zlave_finish( player_activity *act, player *p ) act->set_to_null(); auto items = g->m.i_at( p->pos() ); std::string corpse_name = act->str_values[0]; - item *body = NULL; + item *body = nullptr; for( auto it = items.begin(); it != items.end(); ++it ) { if( it->display_name() == corpse_name ) { @@ -1705,7 +1712,7 @@ void activity_handlers::make_zlave_finish( player_activity *act, player *p ) } } - if( body == NULL ) { + if( body == nullptr ) { add_msg( m_info, _( "There's no corpse to make into a zombie slave!" ) ); return; } @@ -1859,7 +1866,7 @@ void activity_handlers::pulp_do_turn( player_activity *act, player *p ) g->m.add_splatter_trail( type_blood, pos, dest ); } - float stamina_ratio = ( float )p->stamina / p->get_stamina_max(); + float stamina_ratio = static_cast( p->stamina ) / p->get_stamina_max(); p->mod_stat( "stamina", stamina_ratio * -40 ); moves += 100 / std::max( 0.25f, stamina_ratio ); @@ -2097,33 +2104,45 @@ void activity_handlers::start_engines_finish( player_activity *act, player *p ) } int attempted = 0; + int non_muscle_attempted = 0; int started = 0; - int not_muscle = 0; + int non_muscle_started = 0; const bool take_control = act->values[0]; for( size_t e = 0; e < veh->engines.size(); ++e ) { if( veh->is_engine_on( e ) ) { attempted++; + if( !veh->is_engine_type( e, "muscle" ) ) { + non_muscle_attempted++; + } if( veh->start_engine( e ) ) { started++; - } - if( !veh->is_engine_type( e, "muscle" ) ) { - not_muscle++; + if( !veh->is_engine_type( e, "muscle" ) ) { + non_muscle_started++; + } } } } - veh->engine_on = attempted > 0 && started == attempted; + //Did any engines start? + veh->engine_on = started; if( attempted == 0 ) { add_msg( m_info, _( "The %s doesn't have an engine!" ), veh->name.c_str() ); - } else if( not_muscle > 0 ) { - if( started == attempted ) { + } else if( non_muscle_attempted > 0 ) { + //Some non-muscle engines tried to start + if( non_muscle_attempted == non_muscle_started ) { + //All of the non-muscle engines started add_msg( ngettext( "The %s's engine starts up.", - "The %s's engines start up.", not_muscle ), veh->name.c_str() ); + "The %s's engines start up.", non_muscle_started ), veh->name.c_str() ); + } else if( non_muscle_started > 0 ) { + //Only some of the non-muscle engines started + add_msg( ngettext( "One of the %s's engines start up.", + "Some of the %s's engines start up.", non_muscle_started ), veh->name.c_str() ); } else { + //All of the non-muscle engines failed add_msg( m_bad, ngettext( "The %s's engine fails to start.", - "The %s's engines fail to start.", not_muscle ), veh->name.c_str() ); + "The %s's engines fail to start.", non_muscle_attempted ), veh->name.c_str() ); } } @@ -2240,7 +2259,7 @@ repeat_type repeat_menu( const std::string &title, repeat_type last_selection ) rmenu.query(); if( rmenu.ret >= REPEAT_ONCE && rmenu.ret <= REPEAT_EVENT ) { - return ( repeat_type )rmenu.ret; + return static_cast( rmenu.ret ); } return REPEAT_CANCEL; @@ -2300,11 +2319,11 @@ struct weldrig_hack { void activity_handlers::repair_item_finish( player_activity *act, player *p ) { const std::string iuse_name_string = act->get_str_value( 0, "repair_item" ); - repeat_type repeat = ( repeat_type )act->get_value( 0, REPEAT_INIT ); + repeat_type repeat = static_cast( act->get_value( 0, REPEAT_INIT ) ); weldrig_hack w_hack; item_location *ploc = nullptr; - if( act->targets.size() > 0 ) { + if( !act->targets.empty() ) { ploc = &act->targets[0]; } @@ -3030,7 +3049,7 @@ void activity_handlers::plant_plot_do_turn( player_activity *, player *p ) const auto options = dynamic_cast( zone.get_options() ); const auto seed = options.get_seed(); - if( seed != "" && !( std::find( seeds.begin(), seeds.end(), seed ) != seeds.end() ) ) { + if( !seed.empty() && std::find( seeds.begin(), seeds.end(), seed ) == seeds.end() ) { seeds.emplace_back( seed ); } } @@ -3075,7 +3094,7 @@ void activity_handlers::plant_plot_do_turn( player_activity *, player *p ) return itm.typeId() == itype_id( seed ); } ); } ); - if( seed_inv.size() > 0 ) { + if( !seed_inv.empty() ) { auto it = seed_inv.front(); iexamine::plant_seed( *p, tile_loc, it->typeId() ); } diff --git a/src/activity_handlers.h b/src/activity_handlers.h index 34e57198928f8..50441a222e4ef 100644 --- a/src/activity_handlers.h +++ b/src/activity_handlers.h @@ -6,8 +6,8 @@ #include #include -#include #include +#include class player; diff --git a/src/activity_item_handling.cpp b/src/activity_item_handling.cpp index 9c1c8ff28fdc4..96307b6359019 100644 --- a/src/activity_item_handling.cpp +++ b/src/activity_item_handling.cpp @@ -1,39 +1,37 @@ #include "activity_handlers.h" -#include "game.h" -#include "map.h" -#include "mapdata.h" -#include "item.h" -#include "player_activity.h" #include "action.h" +#include "clzones.h" +#include "creature.h" +#include "debug.h" #include "enums.h" #include "field.h" #include "fire.h" -#include "creature.h" -#include "pickup.h" -#include "translations.h" +#include "game.h" +#include "item.h" +#include "map.h" +#include "map_iterator.h" +#include "mapdata.h" #include "messages.h" #include "monster.h" #include "optional.h" #include "output.h" +#include "pickup.h" +#include "player.h" +#include "player_activity.h" +#include "requirements.h" +#include "string_formatter.h" +#include "translations.h" #include "trap.h" +#include "veh_type.h" #include "vehicle.h" #include "vpart_position.h" #include "vpart_reference.h" -#include "veh_type.h" -#include "player.h" -#include "string_formatter.h" -#include "debug.h" -#include "pickup.h" -#include "requirements.h" -#include "map_iterator.h" -#include "clzones.h" +#include +#include #include #include -#include -#include -#include void cancel_aim_processing(); @@ -51,7 +49,7 @@ struct act_item { act_item( const item *it, int count, int consumed_moves ) : it( it ), count( count ), - consumed_moves( consumed_moves ) {}; + consumed_moves( consumed_moves ) {} }; // @todo: Deliberately unified with multidrop. Unify further. @@ -757,7 +755,7 @@ static double get_capacity_fraction( int capacity, int volume ) double fr = 1; if( capacity > volume ) { - fr = ( double )volume / capacity; + fr = static_cast( volume ) / capacity; } return fr; @@ -885,7 +883,7 @@ static std::vector route_adjacent( const player &p, const tripoint &de for( const tripoint &tp : sorted ) { auto route = g->m.route( p.pos(), tp, p.get_pathfinding_settings(), avoid ); - if( route.size() > 0 ) { + if( !route.empty() ) { return route; } } @@ -958,7 +956,7 @@ void activity_on_turn_move_loot( player_activity &, player &p ) } // check if we found path to source / adjacent tile - if( route.size() == 0 ) { + if( route.empty() ) { add_msg( m_info, _( "You can't reach the source tile. Try to sort out loot without a cart." ) ); return; } diff --git a/src/activity_type.cpp b/src/activity_type.cpp index 8a401b3c375cc..ff121363b298a 100644 --- a/src/activity_type.cpp +++ b/src/activity_type.cpp @@ -6,6 +6,7 @@ #include "json.h" #include "translations.h" +#include #include // activity_type functions @@ -53,7 +54,7 @@ void activity_type::load( JsonObject &jo ) void activity_type::check_consistency() { for( const auto &pair : activity_type_all ) { - if( pair.second.stop_phrase_ == "" ) { + if( pair.second.stop_phrase_.empty() ) { debugmsg( "%s doesn't have a stop phrase", pair.first.c_str() ); } if( pair.second.based_on_ == based_on_type::NEITHER && diff --git a/src/activity_type.h b/src/activity_type.h index 2cf823f57a08d..b98ed4b4169e8 100644 --- a/src/activity_type.h +++ b/src/activity_type.h @@ -4,8 +4,6 @@ #include "string_id.h" -#include - class activity_type; class JsonObject; class player; diff --git a/src/addiction.cpp b/src/addiction.cpp index 4f17d09aacf92..9c55114b2a0c4 100644 --- a/src/addiction.cpp +++ b/src/addiction.cpp @@ -1,10 +1,10 @@ #include "addiction.h" -#include "debug.h" -#include "pldata.h" -#include "player.h" + #include "morale_types.h" -#include "rng.h" #include "output.h" +#include "player.h" +#include "pldata.h" +#include "rng.h" #include "translations.h" const efftype_id effect_hallu( "hallu" ); @@ -343,7 +343,7 @@ const std::string &addiction_text( addiction const &cur ) return iter->second; } - static const std::string error_string( "" ); + static const std::string error_string; return error_string; } diff --git a/src/addiction.h b/src/addiction.h index f9cc952ca5f15..6c079fdb8a64d 100644 --- a/src/addiction.h +++ b/src/addiction.h @@ -2,9 +2,6 @@ #ifndef ADDICTION_H #define ADDICTION_H -#include -#include - #include "string_id.h" class addiction; diff --git a/src/advanced_inv.cpp b/src/advanced_inv.cpp index 4eb055e96e77f..fbc6e198273aa 100644 --- a/src/advanced_inv.cpp +++ b/src/advanced_inv.cpp @@ -1,48 +1,44 @@ #include "advanced_inv.h" + +#include "auto_pickup.h" +#include "cata_utility.h" +#include "catacharset.h" +#include "debug.h" +#include "field.h" #include "game.h" -#include "player.h" -#include "output.h" +#include "input.h" #include "item_category.h" +#include "item_search.h" #include "map.h" -#include "debug.h" -#include "catacharset.h" -#include "translations.h" -#include "uistate.h" -#include "auto_pickup.h" +#include "mapdata.h" #include "messages.h" +#include "options.h" +#include "output.h" +#include "pickup.h" +#include "player.h" #include "player_activity.h" #include "string_formatter.h" -#include "compatibility.h" -#include "enums.h" -#include "input.h" -#include "options.h" +#include "string_input_popup.h" +#include "translations.h" +#include "trap.h" #include "ui.h" +#include "uistate.h" +#include "vehicle.h" #include "vpart_position.h" #include "vpart_reference.h" -#include "trap.h" -#include "itype.h" -#include "vehicle.h" -#include "mapdata.h" -#include "field.h" -#include "cata_utility.h" -#include "item_search.h" -#include "string_input_popup.h" -#include "pickup.h" #ifdef __ANDROID__ -#include "SDL_keyboard.h" +#include #endif +#include +#include +#include #include #include -#include -#include #include -#include +#include #include -#include -#include -#include enum aim_exit { exit_none = 0, @@ -81,9 +77,6 @@ advanced_inventory::advanced_inventory() { AIM_WORN, 25, 3, {0, 0, 0}, _( "Worn Items" ), _( "WR" ) } } } ) -, head() -, left_window() -, right_window() { // initialize screen coordinates for small overview 3x3 grid, depending on control scheme if( tile_iso && use_tiles ) { @@ -300,7 +293,7 @@ void advanced_inventory::print_items( advanced_inventory_pane &pane, bool active mvwprintz( window, 5, lastcol - table_hdr_len1 + 1, c_light_gray, _( "amt weight vol" ) ); } - for( int i = page * itemsPerPage, x = 0 ; i < ( int )items.size() && + for( int i = page * itemsPerPage, x = 0 ; i < static_cast( items.size() ) && x < itemsPerPage ; i++, x++ ) { const auto &sitem = items[i]; if( sitem.is_category_header() ) { @@ -406,7 +399,7 @@ struct advanced_inv_sorter { advanced_inv_sortby sortby; advanced_inv_sorter( advanced_inv_sortby sort ) { sortby = sort; - }; + } bool operator()( const advanced_inv_listitem &d1, const advanced_inv_listitem &d2 ) { // Note: the item pointer can only be null on sort by category, otherwise it is always valid. switch( sortby ) { @@ -472,7 +465,7 @@ struct advanced_inv_sorter { } }; -void advanced_inventory::menu_square( uimenu &menu ) +void advanced_inventory::menu_square( uilist &menu ) { assert( menu.entries.size() >= 9 ); int ofs = -25 - 4; @@ -741,7 +734,7 @@ void advanced_inventory::init() w_height = ( TERMY < min_w_height + head_height ) ? min_w_height : TERMY - head_height; w_width = ( TERMX < min_w_width ) ? min_w_width : ( TERMX > max_w_width ) ? max_w_width : - ( int )TERMX; + static_cast( TERMX ); headstart = 0; //(TERMY>w_height)?(TERMY-w_height)/2:0; colstart = ( TERMX > w_width ) ? ( TERMX - w_width ) / 2 : 0; @@ -801,12 +794,8 @@ advanced_inv_listitem::advanced_inv_listitem() : idx() , area() , id( "null" ) - , name() - , name_without_prefix() , autopickup() , stacks() - , volume() - , weight() , cat( nullptr ) { } @@ -816,11 +805,8 @@ advanced_inv_listitem::advanced_inv_listitem( const item_category *category ) , area() , id( "null" ) , name( category->name() ) - , name_without_prefix() , autopickup() , stacks() - , volume() - , weight() , cat( category ) { } @@ -1416,7 +1402,7 @@ static tripoint aim_vector( aim_location id ) default: return tripoint( 0, 0, 0 ); } -}; +} void advanced_inventory::display() { @@ -1514,7 +1500,7 @@ void advanced_inventory::display() } else if (action == "ITEMS_DEFAULT") { for( side cside : { left, right } ) { auto &pane = panes[cside]; - aim_location location = ( aim_location )uistate.adv_inv_default_areas[cside]; + aim_location location = static_cast( uistate.adv_inv_default_areas[cside] ); if( pane.get_area() != location || location == AIM_ALL ) { pane.recalc = true; } @@ -1982,10 +1968,10 @@ bool advanced_inventory::query_destination( aim_location &def ) prefix + " " + s.name + " " + ( s.veh != nullptr ? s.veh->name : "" ) ); } } - // Selected keyed to uimenu.entries, which starts at 0. + // Selected keyed to uilist.entries, which starts at 0. menu.selected = uistate.adv_inv_last_popup_dest - AIM_SOUTHWEST; menu.show(); // generate and show window. - while( menu.ret == UIMENU_WAIT_INPUT ) { + while( menu.ret == UILIST_WAIT_INPUT ) { // Render a fancy ASCII grid at the left of the menu. menu_square( menu ); menu.query( false ); // query, but don't loop diff --git a/src/advanced_inv.h b/src/advanced_inv.h index 8996afceda562..fad32d4083639 100644 --- a/src/advanced_inv.h +++ b/src/advanced_inv.h @@ -6,14 +6,14 @@ #include "enums.h" #include "units.h" -#include #include +#include #include -#include #include -#include +#include +#include -class uimenu; +class uilist; class vehicle; class item; @@ -469,7 +469,7 @@ class advanced_inventory bool query_charges( aim_location destarea, const advanced_inv_listitem &sitem, const std::string &action, long &amount ); - void menu_square( uimenu &menu ); + void menu_square( uilist &menu ); static char get_location_key( aim_location area ); static char get_direction_key( aim_location area ); diff --git a/src/ammo.cpp b/src/ammo.cpp index dc642fc86a068..9429bd33918e6 100644 --- a/src/ammo.cpp +++ b/src/ammo.cpp @@ -1,7 +1,8 @@ #include "ammo.h" + #include "debug.h" -#include "json.h" #include "item.h" +#include "json.h" #include "translations.h" #include diff --git a/src/anatomy.cpp b/src/anatomy.cpp index bde34591d03af..b86f00522a191 100644 --- a/src/anatomy.cpp +++ b/src/anatomy.cpp @@ -1,14 +1,15 @@ #include "anatomy.h" + +#include "cata_utility.h" #include "generic_factory.h" -#include "rng.h" -#include "output.h" #include "messages.h" -#include "cata_utility.h" +#include "output.h" +#include "rng.h" #include "weighted_list.h" -#include -#include +#include #include +#include anatomy_id human_anatomy( "human_anatomy" ); @@ -152,4 +153,4 @@ bodypart_id anatomy::select_body_part( int size_diff, int hit_roll ) const add_msg( m_debug, "selected part: %s", ret->id().obj().name.c_str() ); return *ret; -} \ No newline at end of file +} diff --git a/src/anatomy.h b/src/anatomy.h index 37f8e2a65e573..9f82174d1c7f5 100644 --- a/src/anatomy.h +++ b/src/anatomy.h @@ -4,8 +4,7 @@ #include "bodypart.h" #include "string_id.h" -#include -#include + #include class anatomy; @@ -54,4 +53,4 @@ class anatomy extern anatomy_id human_anatomy; -#endif \ No newline at end of file +#endif diff --git a/src/animation.cpp b/src/animation.cpp index b9ba51de2c570..510aebd9ea796 100644 --- a/src/animation.cpp +++ b/src/animation.cpp @@ -1,13 +1,15 @@ #include "animation.h" + #include "game.h" #include "map.h" -#include "options.h" -#include "output.h" #include "monster.h" #include "mtype.h" -#include "weather.h" +#include "options.h" +#include "output.h" #include "player.h" #include "popup.h" +#include "weather.h" + #ifdef TILES #include "cata_tiles.h" // all animation functions will be pushed out to a cata_tiles function in some manner @@ -17,7 +19,6 @@ extern std::unique_ptr tilecontext; // obtained from sdltiles.cpp #endif #include -#include bool is_valid_in_w_terrain( int x, int y ); // see game.cpp @@ -101,7 +102,7 @@ tripoint relative_view_pos( player const &u, tripoint const &p ) noexcept } // Convert p to screen position relative to the current terrain view -static tripoint relative_view_pos( game const &g, tripoint const &p ) noexcept +tripoint relative_view_pos( game const &g, tripoint const &p ) noexcept { return { POSX + p.x - g.ter_view_x, POSY + p.y - g.ter_view_y, @@ -219,7 +220,7 @@ void draw_custom_explosion_curses( game &g, void game::draw_explosion( const tripoint &p, int const r, nc_color const col ) { if( test_mode ) { - return; // avoid segfault + return; // avoid segfault from null tilecontext in tests } if( !use_tiles ) { @@ -255,7 +256,7 @@ void game::draw_explosion( const tripoint &p, int const r, nc_color const col ) void game::draw_custom_explosion( const tripoint &, const std::map &all_area ) { if( test_mode ) { - return; // avoid segfault + return; // avoid segfault from null tilecontext in tests } constexpr explosion_neighbors all_neighbors = N_NORTH | N_SOUTH | N_WEST | N_EAST; @@ -335,10 +336,9 @@ void game::draw_custom_explosion( const tripoint &, const std::map > layers; - bool changed; while( !neighbors.empty() ) { std::map layer; - changed = false; + bool changed = false; // Find a layer that can be drawn for( const auto &pr : neighbors ) { if( pr.second.neighborhood != all_neighbors ) { @@ -470,6 +470,10 @@ void draw_hit_mon_curses( const tripoint ¢er, const monster &m, player const #if defined(TILES) void game::draw_hit_mon( const tripoint &p, const monster &m, bool const dead ) { + if( test_mode ) { + return; // avoid segfault from null tilecontext in tests + } + if( !use_tiles ) { draw_hit_mon_curses( p, m, u, dead ); return; @@ -502,6 +506,10 @@ void draw_hit_player_curses( game const &g, player const &p, const int dam ) #if defined(TILES) void game::draw_hit_player( player const &p, const int dam ) { + if( test_mode ) { + return; // avoid segfault from null tilecontext in tests + } + if( !use_tiles ) { draw_hit_player_curses( *this, p, dam ); return; diff --git a/src/armor_layers.cpp b/src/armor_layers.cpp index e6ab55e16e15b..faf004a0be714 100644 --- a/src/armor_layers.cpp +++ b/src/armor_layers.cpp @@ -1,20 +1,18 @@ +#include "cata_utility.h" +#include "catacharset.h" // used for utf8_width() #include "game.h" #include "game_inventory.h" -#include "player.h" -#include "catacharset.h" // used for utf8_width() #include "input.h" -#include "output.h" #include "item.h" +#include "line.h" +#include "output.h" +#include "player.h" #include "string_formatter.h" -#include "units.h" #include "translations.h" -#include "npc.h" -#include "cata_utility.h" -#include "line.h" -#include -#include #include +#include +#include namespace { @@ -77,7 +75,7 @@ item_penalties get_item_penalties( std::list::const_iterator worn_item_it, if( it->get_layer() > layer && it->covers( bp ) ) { bad_items_within.insert( it->type_name() ); } - }; + } if( !bad_items_within.empty() ) { body_parts_with_out_of_order_penalty.push_back( bp ); lists_of_bad_items_within.push_back( bad_items_within ); @@ -424,12 +422,10 @@ void player::sort_armor() int tabindex = num_bp; const int tabcount = num_bp + 1; - int leftListSize; int leftListIndex = 0; int leftListOffset = 0; int selected = -1; - int rightListSize; int rightListOffset = 0; std::vector::iterator> tmp_worn; @@ -521,7 +517,8 @@ void player::sort_armor() } } } - leftListSize = ( ( int )tmp_worn.size() < cont_h - 2 ) ? ( int )tmp_worn.size() : cont_h - 2; + int leftListSize = ( static_cast( tmp_worn.size() ) < cont_h - 2 ) ? static_cast + ( tmp_worn.size() ) : cont_h - 2; // Ensure leftListIndex is in bounds int new_index_upper_bound = std::max( 0, int( tmp_worn.size() ) - 1 ); @@ -552,7 +549,7 @@ void player::sort_armor() // Left footer mvwprintz( w_sort_left, cont_h - 1, 0, c_light_gray, _( "(Outermost)" ) ); - if( leftListSize > ( int )tmp_worn.size() ) { + if( leftListSize > static_cast( tmp_worn.size() ) ) { // @todo: replace it by right_print() mvwprintz( w_sort_left, cont_h - 1, left_w - utf8_width( _( "" ) ), c_light_blue, _( "" ) ); @@ -579,7 +576,7 @@ void player::sort_armor() right_print( w_sort_right, 0, 0, c_light_gray, _( "Encumbrance" ) ); // Right list - rightListSize = 0; + int rightListSize = 0; for( int cover = 0, pos = 1; cover < num_bp; cover++ ) { bool combined = false; if( cover > 3 && cover % 2 == 0 && @@ -696,7 +693,7 @@ void player::sort_armor() selected = leftListIndex; } } else if( action == "CHANGE_SIDE" ) { - if( leftListIndex < ( int ) tmp_worn.size() && tmp_worn[leftListIndex]->is_sided() ) { + if( leftListIndex < static_cast( tmp_worn.size() ) && tmp_worn[leftListIndex]->is_sided() ) { if( g->u.query_yn( _( "Swap side for %s?" ), tmp_worn[leftListIndex]->tname().c_str() ) ) { change_side( *tmp_worn[leftListIndex] ); wrefresh( w_sort_armor ); @@ -762,7 +759,7 @@ void player::sort_armor() draw_grid( w_sort_armor, left_w, middle_w ); } else if( action == "REMOVE_ARMOR" ) { // query (for now) - if( leftListIndex < ( int ) tmp_worn.size() ) { + if( leftListIndex < static_cast( tmp_worn.size() ) ) { if( g->u.query_yn( _( "Remove selected armor?" ) ) ) { do_return_entry(); // remove the item, asking to drop it if necessary diff --git a/src/artifact.cpp b/src/artifact.cpp index e4a86439c898d..8e81cb1c581e2 100644 --- a/src/artifact.cpp +++ b/src/artifact.cpp @@ -1,17 +1,14 @@ #include "artifact.h" -#include "output.h" // string_format +#include "cata_utility.h" #include "item_factory.h" -#include "debug.h" #include "json.h" -#include "string_formatter.h" -#include "cata_utility.h" #include "rng.h" +#include "string_formatter.h" #include "translations.h" -#include -#include #include +#include #include template @@ -608,10 +605,10 @@ it_artifact_tool::it_artifact_tool() : itype() tool->charges_per_use = 1; artifact->charge_type = ARTC_NULL; artifact->charge_req = ACR_NULL; - artifact->dream_msg_unmet = artifact_dream_data[( int )ACR_NULL].msg_unmet; - artifact->dream_msg_met = artifact_dream_data[( int )ACR_NULL].msg_met; - artifact->dream_freq_unmet = artifact_dream_data[( int )ACR_NULL].freq_unmet; - artifact->dream_freq_met = artifact_dream_data[( int )ACR_NULL].freq_met; + artifact->dream_msg_unmet = artifact_dream_data[static_cast( ACR_NULL )].msg_unmet; + artifact->dream_msg_met = artifact_dream_data[static_cast( ACR_NULL )].msg_met; + artifact->dream_freq_unmet = artifact_dream_data[static_cast( ACR_NULL )].freq_unmet; + artifact->dream_freq_met = artifact_dream_data[static_cast( ACR_NULL )].freq_met; use_methods.emplace( "ARTIFACT", use_function( "ARTIFACT", &iuse::artifact ) ); } @@ -783,11 +780,14 @@ std::string new_artifact() def.artifact->charge_req = art_charge_req( rng( ACR_NULL + 1, NUM_ACRS - 1 ) ); } // Assign dream data (stored individually so they can be overridden in json) - def.artifact->dream_msg_unmet = artifact_dream_data[( int )( def.artifact->charge_req )].msg_unmet; - def.artifact->dream_msg_met = artifact_dream_data[( int )( def.artifact->charge_req )].msg_met; - def.artifact->dream_freq_unmet = artifact_dream_data[( int )( - def.artifact->charge_req )].freq_unmet; - def.artifact->dream_freq_met = artifact_dream_data[( int )( def.artifact->charge_req )].freq_met; + def.artifact->dream_msg_unmet = artifact_dream_data[static_cast + ( def.artifact->charge_req )].msg_unmet; + def.artifact->dream_msg_met = artifact_dream_data[static_cast + ( def.artifact->charge_req )].msg_met; + def.artifact->dream_freq_unmet = artifact_dream_data[static_cast + ( def.artifact->charge_req )].freq_unmet; + def.artifact->dream_freq_met = artifact_dream_data[static_cast + ( def.artifact->charge_req )].freq_met; // Stronger artifacts have a higher chance of picking their dream def.artifact->dream_freq_unmet *= ( 1 + 0.1 * ( num_bad + num_good ) ); def.artifact->dream_freq_met *= ( 1 + 0.1 * ( num_bad + num_good ) ); @@ -1007,11 +1007,14 @@ std::string new_natural_artifact( artifact_natural_property prop ) } } // Assign dream data (stored individually so they can be overridden in json) - def.artifact->dream_msg_unmet = artifact_dream_data[( int )( def.artifact->charge_req )].msg_unmet; - def.artifact->dream_msg_met = artifact_dream_data[( int )( def.artifact->charge_req )].msg_met; - def.artifact->dream_freq_unmet = artifact_dream_data[( int )( - def.artifact->charge_req )].freq_unmet; - def.artifact->dream_freq_met = artifact_dream_data[( int )( def.artifact->charge_req )].freq_met; + def.artifact->dream_msg_unmet = artifact_dream_data[static_cast + ( def.artifact->charge_req )].msg_unmet; + def.artifact->dream_msg_met = artifact_dream_data[static_cast + ( def.artifact->charge_req )].msg_met; + def.artifact->dream_freq_unmet = artifact_dream_data[static_cast + ( def.artifact->charge_req )].freq_unmet; + def.artifact->dream_freq_met = artifact_dream_data[static_cast + ( def.artifact->charge_req )].freq_met; item_controller->add_item_type( static_cast( def ) ); return def.get_id(); } @@ -1158,33 +1161,33 @@ void it_artifact_tool::deserialize( JsonObject &jo ) tool->revert_to.reset(); } - artifact->charge_type = ( art_charge )jo.get_int( "charge_type" ); + artifact->charge_type = static_cast( jo.get_int( "charge_type" ) ); // Artifacts in older saves do not have charge_req if( jo.has_int( "charge_req" ) ) { - artifact->charge_req = ( art_charge_req )jo.get_int( "charge_req" ); + artifact->charge_req = static_cast( jo.get_int( "charge_req" ) ); } else { artifact->charge_req = ACR_NULL; } JsonArray ja = jo.get_array( "effects_wielded" ); while( ja.has_more() ) { - artifact->effects_wielded.push_back( ( art_effect_passive )ja.next_int() ); + artifact->effects_wielded.push_back( static_cast( ja.next_int() ) ); } ja = jo.get_array( "effects_activated" ); while( ja.has_more() ) { - artifact->effects_activated.push_back( ( art_effect_active )ja.next_int() ); + artifact->effects_activated.push_back( static_cast( ja.next_int() ) ); } ja = jo.get_array( "effects_carried" ); while( ja.has_more() ) { - artifact->effects_carried.push_back( ( art_effect_passive )ja.next_int() ); + artifact->effects_carried.push_back( static_cast( ja.next_int() ) ); } //Generate any missing dream data (due to e.g. old save) if( !jo.has_array( "dream_unmet" ) ) { - artifact->dream_msg_unmet = artifact_dream_data[( int )( artifact->charge_req )].msg_unmet; + artifact->dream_msg_unmet = artifact_dream_data[static_cast( artifact->charge_req )].msg_unmet; } else { ja = jo.get_array( "dream_unmet" ); while( ja.has_more() ) { @@ -1192,7 +1195,7 @@ void it_artifact_tool::deserialize( JsonObject &jo ) } } if( !jo.has_array( "dream_met" ) ) { - artifact->dream_msg_met = artifact_dream_data[( int )( artifact->charge_req )].msg_met; + artifact->dream_msg_met = artifact_dream_data[static_cast( artifact->charge_req )].msg_met; } else { ja = jo.get_array( "dream_met" ); while( ja.has_more() ) { @@ -1202,12 +1205,13 @@ void it_artifact_tool::deserialize( JsonObject &jo ) if( jo.has_int( "dream_freq_unmet" ) ) { artifact->dream_freq_unmet = jo.get_int( "dream_freq_unmet" ); } else { - artifact->dream_freq_unmet = artifact_dream_data[( int )( artifact->charge_req )].freq_unmet; + artifact->dream_freq_unmet = artifact_dream_data[static_cast + ( artifact->charge_req )].freq_unmet; } if( jo.has_int( "dream_freq_met" ) ) { artifact->dream_freq_met = jo.get_int( "dream_freq_met" ); } else { - artifact->dream_freq_met = artifact_dream_data[( int )( artifact->charge_req )].freq_met; + artifact->dream_freq_met = artifact_dream_data[static_cast( artifact->charge_req )].freq_met; } } @@ -1260,7 +1264,7 @@ void it_artifact_armor::deserialize( JsonObject &jo ) JsonArray ja = jo.get_array( "effects_worn" ); while( ja.has_more() ) { - artifact->effects_worn.push_back( ( art_effect_passive )ja.next_int() ); + artifact->effects_worn.push_back( static_cast( ja.next_int() ) ); } } @@ -1313,7 +1317,7 @@ void it_artifact_tool::serialize( JsonOut &json ) const json.member( "price", price ); json.member( "materials" ); json.start_array(); - for( auto mat : materials ) { + for( const material_id &mat : materials ) { json.write( mat ); } json.end_array(); @@ -1367,7 +1371,7 @@ void it_artifact_armor::serialize( JsonOut &json ) const json.member( "price", price ); json.member( "materials" ); json.start_array(); - for( auto mat : materials ) { + for( const material_id &mat : materials ) { json.write( mat ); } json.end_array(); diff --git a/src/artifact.h b/src/artifact.h index ba650ac482347..9ec0ce3b921d7 100644 --- a/src/artifact.h +++ b/src/artifact.h @@ -2,11 +2,10 @@ #ifndef ARTIFACT_H #define ARTIFACT_H -#include "itype.h" #include "enums.h" +#include "itype.h" #include -#include class JsonObject; class JsonOut; @@ -84,7 +83,7 @@ class it_artifact_tool : public itype it_artifact_tool(); it_artifact_tool( JsonObject &jo ); - it_artifact_tool( const itype &base ) : itype( base ) {}; + it_artifact_tool( const itype &base ) : itype( base ) {} void create_name( const std::string &type ); void create_name( const std::string &property_name, const std::string &shape_name ); @@ -98,7 +97,7 @@ class it_artifact_armor : public itype it_artifact_armor(); it_artifact_armor( JsonObject &jo ); - it_artifact_armor( const itype &base ) : itype( base ) {}; + it_artifact_armor( const itype &base ) : itype( base ) {} void create_name( const std::string &type ); }; diff --git a/src/assign.h b/src/assign.h index a3c9d98095a55..6a7fd7591f815 100644 --- a/src/assign.h +++ b/src/assign.h @@ -2,17 +2,17 @@ #ifndef ASSIGN_H #define ASSIGN_H -#include -#include +#include "color.h" +#include "debug.h" +#include "json.h" +#include "units.h" + +#include #include #include -#include #include - -#include "json.h" -#include "debug.h" -#include "units.h" -#include "color.h" +#include +#include namespace cata { diff --git a/src/auto_pickup.cpp b/src/auto_pickup.cpp index 348aba6dc5f01..bfc3a41636673 100644 --- a/src/auto_pickup.cpp +++ b/src/auto_pickup.cpp @@ -1,26 +1,25 @@ #include "auto_pickup.h" -#include "game.h" -#include "player.h" -#include "output.h" -#include "json.h" -#include "debug.h" -#include "item_factory.h" -#include "translations.h" + #include "cata_utility.h" -#include "path_info.h" -#include "string_formatter.h" +#include "debug.h" #include "filesystem.h" +#include "game.h" #include "input.h" -#include "options.h" +#include "item_factory.h" #include "itype.h" -#include "string_input_popup.h" -#include "string_id.h" +#include "json.h" #include "material.h" +#include "options.h" +#include "output.h" +#include "path_info.h" +#include "player.h" +#include "string_formatter.h" +#include "string_id.h" +#include "string_input_popup.h" +#include "translations.h" -#include +#include #include -#include -#include auto_pickup &get_auto_pickup() { @@ -378,7 +377,7 @@ void auto_pickup::show( const std::string &custom_name, bool is_autopickup ) void auto_pickup::test_pattern( const int iTab, const int iRow ) { std::vector vMatchingItems; - std::string sItemName = ""; + std::string sItemName; if( vRules[iTab][iRow].sRule.empty() ) { return; @@ -415,7 +414,7 @@ void auto_pickup::test_pattern( const int iTab, const int iRow ) nmatch ), nmatch, vRules[iTab][iRow].sRule.c_str() ); draw_border( w_test_rule_border, BORDER_COLOR, buf, hilite( c_white ) ); center_print( w_test_rule_border, iContentHeight + 1, red_background( c_white ), - _( "Won't display bottled and suffixes=(fits)" ) ); + _( "Won't display content or suffix matches" ) ); wrefresh( w_test_rule_border ); int iLine = 0; @@ -787,7 +786,7 @@ void auto_pickup::load_legacy_rules( std::vector &rules, std::istream &f if( iNum != 2 ) { DebugLog( D_ERROR, DC_ALL ) << "Bad Rule: " << sLine; } else { - std::string sRule = ""; + std::string sRule; bool bActive = true; bool bExclude = false; diff --git a/src/auto_pickup.h b/src/auto_pickup.h index fb6d5773fb9ce..d283add446243 100644 --- a/src/auto_pickup.h +++ b/src/auto_pickup.h @@ -2,16 +2,14 @@ #ifndef AUTO_PICKUP_H #define AUTO_PICKUP_H +#include "enums.h" +#include "material.h" + #include -#include +#include #include +#include #include -#include -#include -#include -#include "enums.h" -#include "string_id.h" -#include "material.h" class JsonOut; class JsonIn; diff --git a/src/ballistics.cpp b/src/ballistics.cpp index 8868b4780d9dd..1493d9e047a61 100644 --- a/src/ballistics.cpp +++ b/src/ballistics.cpp @@ -9,13 +9,14 @@ #include "messages.h" #include "monster.h" #include "options.h" +#include "output.h" #include "player.h" #include "projectile.h" +#include "rng.h" #include "sounds.h" -#include "output.h" -#include "vpart_position.h" #include "trap.h" #include "vehicle.h" +#include "vpart_position.h" #include diff --git a/src/basecamp.cpp b/src/basecamp.cpp index 45c5bbc0392a3..e18b2e3427445 100644 --- a/src/basecamp.cpp +++ b/src/basecamp.cpp @@ -1,13 +1,14 @@ #include "basecamp.h" -#include -#include #include "output.h" -#include "translations.h" #include "string_formatter.h" +#include "translations.h" + +#include +#include basecamp::basecamp() - : name(), posx( 0 ), posy( 0 ) + : posx( 0 ), posy( 0 ) { } diff --git a/src/bionics.cpp b/src/bionics.cpp index dda6ec6e4d66a..a3013f512ace1 100644 --- a/src/bionics.cpp +++ b/src/bionics.cpp @@ -1,38 +1,35 @@ #include "bionics.h" -#include "player.h" #include "action.h" #include "ballistics.h" +#include "cata_utility.h" +#include "debug.h" #include "dispersion.h" +#include "effect.h" +#include "field.h" #include "game.h" -#include "map.h" -#include "map_iterator.h" -#include "debug.h" -#include "rng.h" #include "input.h" #include "item.h" -#include "bodypart.h" +#include "itype.h" +#include "json.h" +#include "map.h" +#include "map_iterator.h" #include "messages.h" +#include "mutation.h" +#include "options.h" +#include "output.h" +#include "overmap.h" #include "overmapbuffer.h" +#include "player.h" #include "projectile.h" -#include "string_formatter.h" +#include "rng.h" #include "sounds.h" +#include "string_formatter.h" #include "translations.h" -#include "monster.h" -#include "overmap.h" -#include "options.h" -#include "effect.h" -#include "json.h" -#include "itype.h" +#include "ui.h" #include "vehicle.h" -#include "field.h" -#include "weather.h" -#include "cata_utility.h" -#include "output.h" -#include "mutation.h" -#include "requirements.h" #include "vpart_position.h" -#include "ui.h" +#include "weather.h" #include //std::min #include @@ -78,12 +75,6 @@ const efftype_id effect_weed_high( "weed_high" ); static const trait_id trait_PROF_MED( "PROF_MED" ); static const trait_id trait_PROF_AUTODOC( "PROF_AUTODOC" ); -static const trait_id trait_NOPAIN( "NOPAIN" ); -static const trait_id trait_PAINRESIST_TROGLO( "PAINRESIST_TROGLO" ); -static const trait_id trait_PAINRESIST( "PAINRESIST" ); -static const trait_id trait_CENOBITE( "CENOBITE" ); -static const trait_id trait_MASOCHIST( "MASOCHIST" ); -static const trait_id trait_MASOCHIST_MED( "MASOCHIST_MED" ); namespace { @@ -360,7 +351,7 @@ bool player::activate_bionic( int b, bool eff_only ) item water = item( "water_clean", 0 ); water.reset_temp_check(); int humidity = weatherPoint.humidity; - int water_charges = ( humidity * 3.0 ) / 100.0 + 0.5; + int water_charges = lround( humidity * 3.0 / 100.0 ); // At 50% relative humidity or more, the player will draw 2 units of water // At 16% relative humidity or less, the player will draw 0 units of water water.charges = water_charges; @@ -505,7 +496,7 @@ bool player::activate_bionic( int b, bool eff_only ) get_local_humidity( weatherPoint.humidity, g->weather, g->is_sheltered( g->u.pos() ) ) ).c_str() ); add_msg_if_player( m_info, _( "Pressure: %s." ), - print_pressure( ( int )weatherPoint.pressure ).c_str() ); + print_pressure( static_cast( weatherPoint.pressure ) ).c_str() ); add_msg_if_player( m_info, _( "Wind Speed: %.1f %s." ), convert_velocity( int( windpower ), VU_WIND ), velocity_units( VU_WIND ) ); @@ -730,7 +721,7 @@ void player::process_bionic( int b ) } else if( bio.id == "bio_nanobots" ) { for( int i = 0; i < num_hp_parts; i++ ) { if( power_level >= 5 && hp_cur[i] > 0 && hp_cur[i] < hp_max[i] ) { - heal( ( hp_part )i, 1 ); + heal( static_cast( i ), 1 ); charge_power( -5 ); } } @@ -1523,7 +1514,7 @@ void bionic::serialize( JsonOut &json ) const { json.start_object(); json.member( "id", id ); - json.member( "invlet", ( int )invlet ); + json.member( "invlet", static_cast( invlet ) ); json.member( "powered", powered ); json.member( "charge", charge ); json.end_object(); diff --git a/src/bionics.h b/src/bionics.h index b8f0e1987df79..13e09ba961522 100644 --- a/src/bionics.h +++ b/src/bionics.h @@ -5,10 +5,9 @@ #include "bodypart.h" #include "string_id.h" +#include #include -#include #include -#include class player; class JsonObject; diff --git a/src/bionics_ui.cpp b/src/bionics_ui.cpp index 97155ff0be674..fdcfa71ed7d3f 100644 --- a/src/bionics_ui.cpp +++ b/src/bionics_ui.cpp @@ -1,13 +1,12 @@ -#include "player.h" -#include "action.h" -#include "game.h" -#include "input.h" #include "bionics.h" -#include "bodypart.h" -#include "translations.h" + #include "catacharset.h" +#include "game.h" +#include "input.h" #include "output.h" +#include "player.h" #include "string_formatter.h" +#include "translations.h" #include //std::min #include @@ -142,7 +141,7 @@ void draw_description( const catacurses::window &win, bionic const &bio ) // @todo: Unhide when enforcing limits if( g->u.has_trait( trait_id( "DEBUG_CBM_SLOTS" ) ) ) { - const bool each_bp_on_new_line = ypos + ( int )num_bp + 1 < getmaxy( win ); + const bool each_bp_on_new_line = ypos + static_cast( num_bp ) + 1 < getmaxy( win ); ypos += fold_and_print( win, ypos, 0, width, c_light_gray, list_occupied_bps( bio.id, _( "This bionic occupies the following body parts:" ), each_bp_on_new_line ) ); @@ -289,7 +288,7 @@ void player::power_bionics() { std::vector passive = filtered_bionics( *my_bionics, TAB_PASSIVE ); std::vector active = filtered_bionics( *my_bionics, TAB_ACTIVE ); - bionic *bio_last = NULL; + bionic *bio_last = nullptr; bionic_tab_mode tab_mode = TAB_ACTIVE; //added title_tab_height for the tabbed bionic display @@ -308,7 +307,7 @@ void player::power_bionics() const int HEIGHT = std::min( TERMY, std::max( FULL_SCREEN_HEIGHT, TITLE_HEIGHT + TITLE_TAB_HEIGHT + - ( int )my_bionics->size() + 2 ) ); + static_cast( my_bionics->size() ) + 2 ) ); const int WIDTH = FULL_SCREEN_WIDTH + ( TERMX - FULL_SCREEN_WIDTH ) / 2; const int START_X = ( TERMX - WIDTH ) / 2; const int START_Y = ( TERMY - HEIGHT ) / 2; @@ -344,7 +343,7 @@ void player::power_bionics() // drawing the bionics starts with bionic[scroll_position] const int list_start_y = HEADER_LINE_Y;// - scroll_position; int half_list_view_location = LIST_HEIGHT / 2; - int max_scroll_position = std::max( 0, ( int )active.size() ); + int max_scroll_position = std::max( 0, static_cast( active.size() ) ); input_context ctxt( "BIONICS" ); ctxt.register_updown(); @@ -383,7 +382,7 @@ void player::power_bionics() //track which list we are looking at std::vector *current_bionic_list = ( tab_mode == TAB_ACTIVE ? &active : &passive ); - max_scroll_position = std::max( 0, ( int )current_bionic_list->size() - LIST_HEIGHT ); + max_scroll_position = std::max( 0, static_cast( current_bionic_list->size() ) - LIST_HEIGHT ); if( redraw ) { redraw = false; @@ -470,7 +469,7 @@ void player::power_bionics() const std::string action = ctxt.handle_input(); const long ch = ctxt.get_raw_input().get_first_input(); - bionic *tmp = NULL; + bionic *tmp = nullptr; bool confirmCheck = false; if( action == "DOWN" ) { @@ -580,13 +579,13 @@ void player::power_bionics() if( tmp && tmp != bio_last ) { // new bionic selected, update cursor and scroll position int temp_cursor = 0; - for( temp_cursor = 0; temp_cursor < ( int )bio_list.size(); temp_cursor++ ) { + for( temp_cursor = 0; temp_cursor < static_cast( bio_list.size() ); temp_cursor++ ) { if( bio_list[temp_cursor] == tmp ) { break; } } // if bionic is not found in current list, ignore the attempt to view/activate - if( temp_cursor >= ( int )bio_list.size() ) { + if( temp_cursor >= static_cast( bio_list.size() ) ) { continue; } //relocate cursor to the bionic that was found @@ -638,7 +637,7 @@ void player::power_bionics() if( active[i] == tmp ) { tab_mode = TAB_ACTIVE; cursor = static_cast( i ); - int max_scroll_check = std::max( 0, ( int )active.size() - LIST_HEIGHT ); + int max_scroll_check = std::max( 0, static_cast( active.size() ) - LIST_HEIGHT ); if( static_cast( i ) > max_scroll_check ) { scroll_position = max_scroll_check; } else { @@ -651,7 +650,7 @@ void player::power_bionics() if( passive[i] == tmp ) { tab_mode = TAB_PASSIVE; cursor = static_cast( i ); - int max_scroll_check = std::max( 0, ( int )passive.size() - LIST_HEIGHT ); + int max_scroll_check = std::max( 0, static_cast( passive.size() ) - LIST_HEIGHT ); if( static_cast( i ) > max_scroll_check ) { scroll_position = max_scroll_check; } else { diff --git a/src/bodypart.cpp b/src/bodypart.cpp index 735cec366ca74..afee0d9eb377f 100644 --- a/src/bodypart.cpp +++ b/src/bodypart.cpp @@ -1,9 +1,11 @@ #include "bodypart.h" + #include "anatomy.h" -#include "translations.h" -#include "rng.h" #include "debug.h" #include "generic_factory.h" +#include "rng.h" +#include "translations.h" + #include #include diff --git a/src/bodypart.h b/src/bodypart.h index 6316d4ef17e1a..24b4259988ad8 100644 --- a/src/bodypart.h +++ b/src/bodypart.h @@ -2,13 +2,12 @@ #ifndef BODYPART_H #define BODYPART_H -#include +#include "int_id.h" +#include "string_id.h" + #include #include -#include "string_id.h" -#include "int_id.h" - class JsonObject; // The order is important ; pldata.h has to be in the same order diff --git a/src/bonuses.cpp b/src/bonuses.cpp index cbc367f616111..dd7d8885dee76 100644 --- a/src/bonuses.cpp +++ b/src/bonuses.cpp @@ -1,18 +1,14 @@ #include "bonuses.h" + +#include "character.h" #include "damage.h" #include "json.h" -#include "character.h" -#include "debug.h" -#include "translations.h" #include "output.h" +#include "translations.h" -#include +#include #include #include -#include -#include - -#define dbg(x) DebugLog((DebugLevel)(x),D_MAIN) << __FILE__ << ":" << __LINE__ << ": " bool needs_damage_type( affected_stat as ) { @@ -127,11 +123,10 @@ void bonus_container::load( JsonArray &jarr, bool mult ) while( jarr.has_more() ) { JsonArray qualifiers = jarr.next_array(); - affected_stat as; damage_type dt = DT_NULL; const std::string affected_stat_string = qualifiers.next_string(); - as = affected_stat_from_string( affected_stat_string ); + affected_stat as = affected_stat_from_string( affected_stat_string ); if( as == AFFECTED_NULL ) { jarr.throw_error( "Invalid affected stat" ); } @@ -238,7 +233,7 @@ std::string bonus_container::get_description() const } dump << " "; - }; + } } for( const auto &boni : bonuses_flat ) { diff --git a/src/calendar.cpp b/src/calendar.cpp index 6d8087aed2157..a76c4852eeeda 100644 --- a/src/calendar.cpp +++ b/src/calendar.cpp @@ -1,13 +1,13 @@ #include "calendar.h" -#include -#include -#include -#include "output.h" #include "options.h" -#include "translations.h" -#include "string_formatter.h" #include "rng.h" +#include "string_formatter.h" +#include "translations.h" + +#include +#include +#include // Divided by 100 to prevent overflowing when converted to moves const int calendar::INDEFINITELY_LONG( std::numeric_limits::max() / 100 ); @@ -116,14 +116,6 @@ bool calendar::operator ==( const calendar &rhs ) const return turn_number == rhs.turn_number; } -/* -calendar& calendar::operator ++() -{ - *this += 1; - return *this; -} -*/ - calendar calendar::operator -( const calendar &rhs ) const { return calendar( *this ) -= rhs; @@ -292,17 +284,6 @@ float calendar::sunlight() const } } -enum class clipped_unit { - forever, - second, - minute, - hour, - day, - week, - season, - year, -}; - static std::string to_string_clipped( const int num, const clipped_unit type, const clipped_align align ) { @@ -359,46 +340,52 @@ static std::string to_string_clipped( const int num, const clipped_unit type, } } -std::string to_string_clipped( const time_duration &d, - const clipped_align align ) +std::pair clipped_time( const time_duration &d ) { //@todo: change INDEFINITELY_LONG to time_duration if( to_turns( d ) >= calendar::INDEFINITELY_LONG ) { - return to_string_clipped( 0, clipped_unit::forever, align ); + return { 0, clipped_unit::forever }; } if( d < 1_minutes ) { //@todo: add to_seconds,from_seconds, operator ""_seconds, but currently // this could be misleading as we only store turns, which are 6 whole seconds const int sec = to_turns( d ) * 6; - return to_string_clipped( sec, clipped_unit::second, align ); + return { sec, clipped_unit::second }; } else if( d < 1_hours ) { const int min = to_minutes( d ); - return to_string_clipped( min, clipped_unit::minute, align ); + return { min, clipped_unit::minute }; } else if( d < 1_days ) { const int hour = to_hours( d ); - return to_string_clipped( hour, clipped_unit::hour, align ); + return { hour, clipped_unit::hour }; } else if( d < 7_days ) { const int day = to_days( d ); - return to_string_clipped( day, clipped_unit::day, align ); + return { day, clipped_unit::day }; } else if( d < calendar::season_length() || calendar::eternal_season() ) { // eternal seasons means one season is indistinguishable from the next, // therefore no way to count them const int week = to_weeks( d ); - return to_string_clipped( week, clipped_unit::week, align ); + return { week, clipped_unit::week }; } else if( d < calendar::year_length() && !calendar::eternal_season() ) { //@todo: consider a to_season function, but season length is variable, so // this might be misleading const int season = to_turns( d ) / to_turns( calendar::season_length() ); - return to_string_clipped( season, clipped_unit::season, align ); + return { season, clipped_unit::season }; } else { //@todo: consider a to_year function, but year length is variable, so // this might be misleading const int year = to_turns( d ) / to_turns( calendar::year_length() ); - return to_string_clipped( year, clipped_unit::year, align ); + return { year, clipped_unit::year }; } } +std::string to_string_clipped( const time_duration &d, + const clipped_align align ) +{ + std::pair time = clipped_time( d ); + return to_string_clipped( time.first, time.second, align ); +} + std::string to_string( const time_duration &d ) { if( d >= time_duration::from_turns( calendar::INDEFINITELY_LONG ) ) { diff --git a/src/calendar.h b/src/calendar.h index 0748e0e8c6d9f..a39644c055ee5 100644 --- a/src/calendar.h +++ b/src/calendar.h @@ -2,10 +2,10 @@ #ifndef CALENDAR_H #define CALENDAR_H -#include - #include "optional.h" +#include + class time_duration; class time_point; class JsonOut; @@ -486,6 +486,28 @@ enum class clipped_align { none, right, }; + +enum class clipped_unit { + forever, + second, + minute, + hour, + day, + week, + season, + year, +}; + +/** + * Returns a value representing the passed in duration truncated to an appropriate unit + * along with the unit in question. + * "10 days" or "1 minute". + * The chosen unit will be the smallest unit, that is at least as much as the + * given duration. E.g. an input of 60 minutes will return "1 hour", an input of + * 59 minutes will return "59 minutes". + */ +std::pair clipped_time( const time_duration &d ); + /** * Returns a string showing a duration as whole number of appropriate units, e.g. * "10 days" or "1 minute". diff --git a/src/cata_algo.h b/src/cata_algo.h index 144fecc948d45..6888d4aa580f6 100644 --- a/src/cata_algo.h +++ b/src/cata_algo.h @@ -3,7 +3,6 @@ #define CATA_ALGO_H #include -#include #include namespace algo diff --git a/src/cata_tiles.cpp b/src/cata_tiles.cpp index 2b9a0bdb72eaa..2de7bc46eaeb2 100644 --- a/src/cata_tiles.cpp +++ b/src/cata_tiles.cpp @@ -1,51 +1,47 @@ #if (defined TILES) #include "cata_tiles.h" +#include "cata_utility.h" +#include "catacharset.h" +#include "clzones.h" #include "coordinate_conversions.h" +#include "cursesport.h" #include "debug.h" -#include "json.h" -#include "path_info.h" -#include "monstergenerator.h" -#include "item_factory.h" +#include "field.h" +#include "game.h" #include "item.h" -#include "veh_type.h" -#include "filesystem.h" -#include "sounds.h" +#include "item_factory.h" +#include "itype.h" +#include "json.h" #include "map.h" -#include "trap.h" +#include "mapdata.h" +#include "mod_tileset.h" #include "monster.h" -#include "vpart_position.h" +#include "monstergenerator.h" +#include "mtype.h" +#include "npc.h" #include "options.h" -#include "overmapbuffer.h" +#include "output.h" +#include "overlay_ordering.h" +#include "path_info.h" #include "player.h" -#include "npc.h" -#include "catacharset.h" -#include "itype.h" -#include "vpart_reference.h" +#include "rect_range.h" +#include "sdl_wrappers.h" +#include "sounds.h" +#include "submap.h" +#include "trap.h" +#include "veh_type.h" #include "vehicle.h" -#include "game.h" -#include "mapdata.h" -#include "mtype.h" -#include "field.h" +#include "vpart_position.h" +#include "vpart_reference.h" #include "weather.h" #include "weighted_list.h" -#include "submap.h" -#include "output.h" -#include "overlay_ordering.h" -#include "cata_utility.h" -#include "cursesport.h" -#include "rect_range.h" -#include "clzones.h" -#include "mod_tileset.h" -#include #include -#include -#include /* srand, rand */ -#include #include - -#include +#include +#include +#include #define dbg(x) DebugLog((DebugLevel)(x),D_SDL) << __FILE__ << ":" << __LINE__ << ": " @@ -90,22 +86,6 @@ static const std::array TILE_CATEGORY_IDS = {{ namespace { -void printErrorIf( const bool condition, const std::string &message ) -{ - if( !condition ) { - return; - } - dbg( D_ERROR ) << message << ": " << SDL_GetError(); -} - -void throwErrorIf( const bool condition, const std::string &message ) -{ - if( !condition ) { - return; - } - throw std::runtime_error( message + ": " + SDL_GetError() ); -} - /// Returns a number in range [0..1]. The range lasts for @param phase_length_ms (milliseconds). float get_animation_phase( int phase_length_ms ) { @@ -127,22 +107,6 @@ std::string get_ascii_tile_id( const uint32_t sym, const int FG, const int BG ) } } // namespace -// Operator overload required to leverage unique_ptr API. -void SDL_Texture_deleter::operator()( SDL_Texture *const ptr ) -{ - if( ptr ) { - SDL_DestroyTexture( ptr ); - } -} - -// Operator overload required to leverage unique_ptr API. -void SDL_Surface_deleter::operator()( SDL_Surface *const ptr ) -{ - if( ptr ) { - SDL_FreeSurface( ptr ); - } -} - static int msgtype_to_tilecolor( const game_message_type type, const bool bOldMsg ) { const int iBold = bOldMsg ? 0 : 8; @@ -191,10 +155,9 @@ formatted_text::formatted_text( const std::string &text, const int color, } } -cata_tiles::cata_tiles( SDL_Renderer *render ) +cata_tiles::cata_tiles( const SDL_Renderer_Ptr &r ) : renderer( r ) { - assert( render ); - renderer = render; + assert( renderer ); tile_height = 0; tile_width = 0; @@ -258,7 +221,7 @@ void cata_tiles::load_tileset( const std::string &tileset_id, const bool prechec void cata_tiles::reinit() { set_draw_scale( 16 ); - printErrorIf( SDL_RenderClear( renderer ) != 0, "SDL_RenderClear failed" ); + RenderClear( renderer ); minimap_cache.clear(); tex_pool.texture_pool.clear(); reinit_minimap(); @@ -420,9 +383,8 @@ void tileset_loader::copy_surface_to_texture( const SDL_Surface_Ptr &surf, const const rect_range input_range( sprite_width, sprite_height, surf->w / sprite_width, surf->h / sprite_height ); - const std::shared_ptr texture_ptr( SDL_CreateTextureFromSurface( renderer, - surf.get() ), &SDL_DestroyTexture ); - throwErrorIf( !texture_ptr, "SDL_CreateTextureFromSurface failed" ); + const std::shared_ptr texture_ptr = CreateTextureFromSurface( renderer, surf ); + assert( texture_ptr ); for( const SDL_Rect rect : input_range ) { assert( offset.x % sprite_width == 0 ); @@ -463,10 +425,8 @@ static void extend_vector_by( std::vector &vec, const size_t additional_size void tileset_loader::load_tileset( std::string img_path ) { - SDL_Surface_Ptr tile_atlas( IMG_Load( img_path.c_str() ) ); - if( !tile_atlas ) { - throw std::runtime_error( "Could not load tileset image \"" + img_path + "\": " + IMG_GetError() ); - } + const SDL_Surface_Ptr tile_atlas = load_image( img_path.c_str() ); + assert( tile_atlas ); tile_atlas_width = tile_atlas->w; if( R >= 0 && R <= 255 && G >= 0 && G <= 255 && B >= 0 && B <= 255 ) { @@ -476,7 +436,7 @@ void tileset_loader::load_tileset( std::string img_path ) } SDL_RendererInfo info; - throwErrorIf( SDL_GetRendererInfo( renderer, &info ) != 0, "SDL_GetRendererInfo failed" ); + throwErrorIf( SDL_GetRendererInfo( renderer.get(), &info ) != 0, "SDL_GetRendererInfo failed" ); // Software rendering stores textures as surfaces with run-length encoding, which makes extracting a part // in the middle of the texture slow. Therefore this "simulates" that the renderer only supports one tile // per texture. Each tile will go on its own texture object. @@ -568,8 +528,8 @@ void cata_tiles::set_draw_scale( int scale ) tile_width = tileset_ptr->get_tile_width() * tileset_ptr->get_tile_pixelscale() * scale / 16; tile_height = tileset_ptr->get_tile_height() * tileset_ptr->get_tile_pixelscale() * scale / 16; - tile_ratiox = ( ( float )tile_width / ( float )fontwidth ); - tile_ratioy = ( ( float )tile_height / ( float )fontheight ); + tile_ratiox = ( static_cast( tile_width ) / static_cast( fontwidth ) ); + tile_ratioy = ( static_cast( tile_height ) / static_cast( fontheight ) ); } void tileset_loader::load( const std::string &tileset_id, const bool precheck ) @@ -627,13 +587,13 @@ void tileset_loader::load( const std::string &tileset_id, const bool precheck ) load_internal( config, tileset_root, img_path ); // Load mod tilesets if available - for( auto mts : all_mod_tilesets ) { + for( const mod_tileset &mts : all_mod_tilesets ) { // Set sprite_id offset to separate from other tilesets. sprite_id_offset = offset; - tileset_root = mts->get_base_path(); - json_path = mts->get_full_path(); + tileset_root = mts.get_base_path(); + json_path = mts.get_full_path(); - if( !mts->is_compatible( tileset_id ) ) { + if( !mts.is_compatible( tileset_id ) ) { dbg( D_ERROR ) << "Mod tileset in \"" << json_path << "\" is not compatible."; continue; } @@ -652,7 +612,7 @@ void tileset_loader::load( const std::string &tileset_id, const bool precheck ) while( mod_config_array.has_more() ) { JsonObject mod_config = mod_config_array.next_object(); if( mod_config.get_string( "type" ) == "mod_tileset" ) { - if( num_in_file == mts->num_in_file() ) { + if( num_in_file == mts.num_in_file() ) { load_internal( mod_config, tileset_root, img_path ); break; } @@ -917,7 +877,7 @@ void tileset_loader::load_tilejson_from_file( JsonObject &config ) } else if( entry.has_array( "id" ) ) { ids = entry.get_string_array( "id" ); } - for( auto t_id : ids ) { + for( const std::string &t_id : ids ) { tile_type &curr_tile = load_tile( entry, t_id ); curr_tile.offset.x = sprite_offset_x; curr_tile.offset.y = sprite_offset_y; @@ -957,9 +917,6 @@ void tileset_loader::load_tilejson_from_file( JsonObject &config ) * previously loaded tiles (excluding the tiles from the associated image). * @param id The id of the new tile definition (which is the key in @ref tileset::tile_ids). Any existing * definition of the same id is overridden. - * @param size The number of tiles loaded from the current tileset file. This defines the - * range of valid tile ids that can be loaded. An exception is thrown if any tile id is outside - * that range. * @return A reference to the loaded tile inside the @ref tileset::tile_ids map. */ tile_type &tileset_loader::load_tile( JsonObject &entry, const std::string &id ) @@ -1061,12 +1018,12 @@ void cata_tiles::draw( int destx, int desty, const tripoint ¢er, int width, { //set clipping to prevent drawing over stuff we shouldn't SDL_Rect clipRect = {destx, desty, width, height}; - printErrorIf( SDL_RenderSetClipRect( renderer, &clipRect ) != 0, "SDL_RenderSetClipRect failed" ); + printErrorIf( SDL_RenderSetClipRect( renderer.get(), &clipRect ) != 0, + "SDL_RenderSetClipRect failed" ); //fill render area with black to prevent artifacts where no new pixels are drawn - printErrorIf( SDL_SetRenderDrawColor( renderer, 0, 0, 0, 255 ) != 0, - "SDL_SetRenderDrawColor failed" ); - printErrorIf( SDL_RenderFillRect( renderer, &clipRect ) != 0, "SDL_RenderFillRect failed" ); + SetRenderDrawColor( renderer, 0, 0, 0, 255 ); + RenderFillRect( renderer, &clipRect ); } int posx = center.x; @@ -1240,7 +1197,8 @@ void cata_tiles::draw( int destx, int desty, const tripoint ¢er, int width, } } - printErrorIf( SDL_RenderSetClipRect( renderer, nullptr ) != 0, "SDL_RenderSetClipRect failed" ); + printErrorIf( SDL_RenderSetClipRect( renderer.get(), nullptr ) != 0, + "SDL_RenderSetClipRect failed" ); } void cata_tiles::draw_rhombus( int destx, int desty, int size, SDL_Color color, int widthLimit, @@ -1250,9 +1208,8 @@ void cata_tiles::draw_rhombus( int destx, int desty, int size, SDL_Color color, for( int yOffset = -size + abs( xOffset ); yOffset <= size - abs( xOffset ); yOffset++ ) { if( xOffset < widthLimit && yOffset < heightLimit ) { int divisor = 2 * ( abs( yOffset ) == size - abs( xOffset ) ) + 1; - printErrorIf( SDL_SetRenderDrawColor( renderer, color.r / divisor, color.g / divisor, - color.b / divisor, 255 ) != 0, "SDL_SetRenderDrawColor failed" ); - printErrorIf( SDL_RenderDrawPoint( renderer, destx + xOffset, desty + yOffset ) != 0, + SetRenderDrawColor( renderer, color.r / divisor, color.g / divisor, color.b / divisor, 255 ); + printErrorIf( SDL_RenderDrawPoint( renderer.get(), destx + xOffset, desty + yOffset ) != 0, "SDL_RenderDrawPoint failed" ); } } @@ -1276,8 +1233,8 @@ SDL_Texture_Ptr cata_tiles::create_minimap_cache_texture( int tile_width, int ti { const SDL_Surface_Ptr temp = create_tile_surface(); assert( temp ); - SDL_Texture_Ptr tex( SDL_CreateTexture( renderer, temp->format->format, SDL_TEXTUREACCESS_TARGET, - tile_width, tile_height ) ); + SDL_Texture_Ptr tex( SDL_CreateTexture( renderer.get(), temp->format->format, + SDL_TEXTUREACCESS_TARGET, tile_width, tile_height ) ); throwErrorIf( !tex, "SDL_CreateTexture failed to create minimap texture" ); return tex; } @@ -1325,32 +1282,29 @@ void cata_tiles::process_minimap_cache_updates() for( auto &mcp : minimap_cache ) { if( !mcp.second.update_list.empty() ) { - printErrorIf( SDL_SetRenderTarget( renderer, mcp.second.minimap_tex.get() ) != 0, - "SDL_SetRenderTarget failed" ); + SetRenderTarget( renderer, mcp.second.minimap_tex ); //draw a default dark-colored rectangle over the texture which may have been used previously if( !mcp.second.ready ) { mcp.second.ready = true; - printErrorIf( SDL_SetRenderDrawColor( renderer, 0, 0, 0, 255 ) != 0, - "SDL_SetRenderDrawColor failed" ); - printErrorIf( SDL_RenderClear( renderer ) != 0, "SDL_RenderClear failed" ); + SetRenderDrawColor( renderer, 0, 0, 0, 255 ); + RenderClear( renderer ); } for( const point &p : mcp.second.update_list ) { const pixel ¤t_pix = mcp.second.minimap_colors[p.y * SEEX + p.x]; const SDL_Color c = current_pix.getSdlColor(); - printErrorIf( SDL_SetRenderDrawColor( renderer, c.r, c.g, c.b, c.a ) != 0, - "SDL_SetRenderDrawColor failed" ); + SetRenderDrawColor( renderer, c.r, c.g, c.b, c.a ); if( draw_with_dots ) { - printErrorIf( SDL_RenderDrawPoint( renderer, p.x * minimap_tile_size.x, + printErrorIf( SDL_RenderDrawPoint( renderer.get(), p.x * minimap_tile_size.x, p.y * minimap_tile_size.y ) != 0, "SDL_RenderDrawPoint failed" ); } else { rectangle.x = p.x * minimap_tile_size.x; rectangle.y = p.y * minimap_tile_size.y; - printErrorIf( SDL_RenderFillRect( renderer, &rectangle ) != 0, "SDL_RenderFillRect failed" ); + RenderFillRect( renderer, &rectangle ); } } mcp.second.update_list.clear(); @@ -1521,8 +1475,7 @@ void cata_tiles::draw_minimap( int destx, int desty, const tripoint ¢er, int //update minimap textures process_minimap_cache_updates(); //prepare to copy to intermediate texture - printErrorIf( SDL_SetRenderTarget( renderer, main_minimap_tex.get() ) != 0, - "SDL_SetRenderTarget failed" ); + SetRenderTarget( renderer, main_minimap_tex ); //attempt to draw the submap cache if any of its tiles are exposed in the minimap area //the drawn flag prevents it from being drawn more than once @@ -1555,15 +1508,13 @@ void cata_tiles::draw_minimap( int destx, int desty, const tripoint ¢er, int tripoint drawpoint( ( p.x / SEEX ) * SEEX - start_x, ( p.y / SEEY ) * SEEY - start_y, p.z ); drawrect.x = drawpoint.x * minimap_tile_size.x; drawrect.y = drawpoint.y * minimap_tile_size.y; - printErrorIf( SDL_RenderCopy( renderer, it->second.minimap_tex.get(), NULL, &drawrect ) != 0, - "SDL_RenderCopy failed" ); + RenderCopy( renderer, it->second.minimap_tex, nullptr, &drawrect ); } } //set display buffer to main screen set_displaybuffer_rendertarget(); //paint intermediate texture to screen - printErrorIf( SDL_RenderCopy( renderer, main_minimap_tex.get(), NULL, &minimap_clip_rect ) != 0, - "SDL_RenderCopy failed" ); + RenderCopy( renderer, main_minimap_tex, nullptr, &minimap_clip_rect ); //unused submap caches get deleted clear_unused_minimap_cache(); @@ -1639,10 +1590,10 @@ void cata_tiles::draw_minimap( int destx, int desty, const tripoint ¢er, int void cata_tiles::get_window_tile_counts( const int width, const int height, int &columns, int &rows ) const { - columns = tile_iso ? ceil( ( double ) width / tile_width ) * 2 + 4 : ceil( ( - double ) width / tile_width ); - rows = tile_iso ? ceil( ( double ) height / ( tile_width / 2 - 1 ) ) * 2 + 4 : ceil( ( - double ) height / tile_height ); + columns = tile_iso ? ceil( static_cast( width ) / tile_width ) * 2 + 4 : ceil( + static_cast( width ) / tile_width ); + rows = tile_iso ? ceil( static_cast( height ) / ( tile_width / 2 - 1 ) ) * 2 + 4 : ceil( + static_cast( height ) / tile_height ); } bool cata_tiles::draw_from_id_string( std::string id, tripoint pos, int subtile, int rota, @@ -2121,31 +2072,27 @@ bool cata_tiles::draw_sprite_at( const tile_type &tile, switch( rota ) { default: case 0: // unrotated (and 180, with just two sprites) - ret = sprite_tex->render_copy_ex( renderer, &destination, - 0, NULL, SDL_FLIP_NONE ); + ret = sprite_tex->render_copy_ex( renderer, &destination, 0, NULL, SDL_FLIP_NONE ); break; case 1: // 90 degrees (and 270, with just two sprites) #if (defined _WIN32 || defined WINDOWS) destination.y -= 1; #endif - ret = sprite_tex->render_copy_ex( renderer, &destination, - -90, NULL, SDL_FLIP_NONE ); + ret = sprite_tex->render_copy_ex( renderer, &destination, -90, NULL, SDL_FLIP_NONE ); break; case 2: // 180 degrees, implemented with flips instead of rotation - ret = sprite_tex->render_copy_ex( renderer, &destination, - 0, NULL, static_cast( SDL_FLIP_HORIZONTAL | SDL_FLIP_VERTICAL ) ); + ret = sprite_tex->render_copy_ex( renderer, &destination, 0, NULL, + static_cast( SDL_FLIP_HORIZONTAL | SDL_FLIP_VERTICAL ) ); break; case 3: // 270 degrees #if (defined _WIN32 || defined WINDOWS) destination.x -= 1; #endif - ret = sprite_tex->render_copy_ex( renderer, &destination, - 90, NULL, SDL_FLIP_NONE ); + ret = sprite_tex->render_copy_ex( renderer, &destination, 90, NULL, SDL_FLIP_NONE ); break; } } else { // don't rotate, same as case 0 above - ret = sprite_tex->render_copy_ex( renderer, &destination, - 0, NULL, SDL_FLIP_NONE ); + ret = sprite_tex->render_copy_ex( renderer, &destination, 0, NULL, SDL_FLIP_NONE ); } printErrorIf( ret != 0, "SDL_RenderCopyEx() failed" ); @@ -2256,9 +2203,8 @@ bool cata_tiles::draw_terrain_below( const tripoint &p, lit_level /*ll*/, int &/ if( tile_iso ) { belowRect.y += tile_height / 8; } - printErrorIf( SDL_SetRenderDrawColor( renderer, tercol.r, tercol.g, tercol.b, 255 ) != 0, - "SDL_SetRenderDrawColor failed" ); - printErrorIf( SDL_RenderFillRect( renderer, &belowRect ) != 0, "SDL_RenderFillRect failed" ); + SetRenderDrawColor( renderer, tercol.r, tercol.g, tercol.b, 255 ); + RenderFillRect( renderer, &belowRect ); return true; } @@ -2603,17 +2549,11 @@ bool cata_tiles::draw_item_highlight( const tripoint &pos ) SDL_Surface_Ptr create_tile_surface( const int w, const int h ) { - SDL_Surface_Ptr surface; #if SDL_BYTEORDER == SDL_BIG_ENDIAN - surface.reset( SDL_CreateRGBSurface( 0, w, h, 32, 0xFF000000, 0x00FF0000, 0x0000FF00, - 0x000000FF ) ); + return CreateRGBSurface( 0, w, h, 32, 0xFF000000, 0x00FF0000, 0x0000FF00, 0x000000FF ); #else - surface.reset( SDL_CreateRGBSurface( 0, w, h, 32, 0x000000FF, 0x0000FF00, 0x00FF0000, - 0xFF000000 ) ); + return CreateRGBSurface( 0, w, h, 32, 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 ); #endif - throwErrorIf( !surface, "Failed to create surface" ); - assert( surface ); - return surface; } SDL_Surface_Ptr cata_tiles::create_tile_surface() @@ -2634,9 +2574,7 @@ void tileset_loader::ensure_default_item_highlight() assert( surface ); throwErrorIf( SDL_FillRect( surface.get(), NULL, SDL_MapRGBA( surface->format, 0, 0, 127, highlight_alpha ) ) != 0, "SDL_FillRect failed" ); - SDL_Texture_Ptr texture( SDL_CreateTextureFromSurface( renderer, surface.get() ) ); - throwErrorIf( !texture, "Failed to create texture for default item highlight" ); - ts.tile_values.emplace_back( std::move( texture ), SDL_Rect{ 0, 0, ts.tile_width, ts.tile_height } ); + ts.tile_values.emplace_back( CreateTextureFromSurface( renderer, surface ), SDL_Rect{ 0, 0, ts.tile_width, ts.tile_height } ); ts.tile_ids[ITEM_HIGHLIGHT].fg.add( std::vector( {index} ), 1 ); } diff --git a/src/cata_tiles.h b/src/cata_tiles.h index e6e3a005bf68a..9ce2aa578bd6b 100644 --- a/src/cata_tiles.h +++ b/src/cata_tiles.h @@ -2,9 +2,7 @@ #ifndef CATA_TILES_H #define CATA_TILES_H -#include -#include - +#include "sdl_wrappers.h" #include "animation.h" #include "lightmap.h" #include "line.h" @@ -14,7 +12,6 @@ #include "weighted_list.h" #include -#include #include #include #include @@ -69,13 +66,6 @@ enum TILE_CATEGORY { C_WEATHER, }; -/** Typedefs */ -struct SDL_Texture_deleter { - // Operator overload required to leverage unique_ptr API. - void operator()( SDL_Texture *const ptr ); -}; -using SDL_Texture_Ptr = std::unique_ptr; - class texture { private: @@ -94,18 +84,14 @@ class texture /// Interface to @ref SDL_RenderCopyEx, using this as the texture, and /// null as source rectangle (render the whole texture). Other parameters /// are simply passed through. - int render_copy_ex( SDL_Renderer *const renderer, const SDL_Rect *const dstrect, const double angle, + int render_copy_ex( const SDL_Renderer_Ptr &renderer, const SDL_Rect *const dstrect, + const double angle, const SDL_Point *const center, const SDL_RendererFlip flip ) const { - return SDL_RenderCopyEx( renderer, sdl_texture_ptr.get(), &srcrect, dstrect, angle, center, flip ); + return SDL_RenderCopyEx( renderer.get(), sdl_texture_ptr.get(), &srcrect, dstrect, angle, center, + flip ); } }; -struct SDL_Surface_deleter { - // Operator overload required to leverage unique_ptr API. - void operator()( SDL_Surface *const ptr ); -}; -using SDL_Surface_Ptr = std::unique_ptr; - struct pixel { int r; int g; @@ -296,7 +282,7 @@ class tileset_loader { private: tileset &ts; - SDL_Renderer *const renderer; + const SDL_Renderer_Ptr &renderer; int sprite_offset_x; int sprite_offset_y; @@ -364,11 +350,12 @@ class tileset_loader void load_internal( JsonObject &config, const std::string &tileset_root, const std::string &img_path ); public: - tileset_loader( tileset &ts, SDL_Renderer *const r ) : ts( ts ), renderer( r ) { + tileset_loader( tileset &ts, const SDL_Renderer_Ptr &r ) : ts( ts ), renderer( r ) { } /** * @throw std::exception On any error. - * @param tileset_name Ident of the tileset, as it appears in the options. + * @param tileset_id Ident of the tileset, as it appears in the options. + * @param precheck If tue, only loads the meta data of the tileset (tile dimensions). */ void load( const std::string &tileset_id, bool precheck ); }; @@ -394,7 +381,7 @@ struct formatted_text { class cata_tiles { public: - cata_tiles( SDL_Renderer *render ); + cata_tiles( const SDL_Renderer_Ptr &render ); ~cata_tiles(); public: /** Reload tileset, with the given scale. Scale is divided by 16 to allow for scales < 1 without risking @@ -448,8 +435,6 @@ class cata_tiles void get_rotation_and_subtile( const char val, const int num_connects, int &rota, int &subtype ); /** Drawing Layers */ - void draw_single_tile( const tripoint &p, const lit_level ll, - const visibility_variables &cache, int &height_3d ); bool apply_vision_effects( const tripoint &pos, const visibility_type visibility ); bool draw_terrain( const tripoint &p, lit_level ll, int &height_3d ); bool draw_terrain_from_memory( const tripoint &p, int &height_3d ); @@ -468,8 +453,6 @@ class cata_tiles public: // Animation layers - bool draw_hit( const tripoint &p ); - void init_explosion( const tripoint &p, int radius ); void draw_explosion_frame(); void void_explosion(); @@ -510,14 +493,12 @@ class cata_tiles void draw_zones_frame(); void void_zones(); - /** Overmap Layer : Not used for now, do later*/ - bool draw_omap(); - public: /** * Initialize the current tileset (load tile images, load mapping), using the current * tileset as it is set in the options. - * @param precheck If tue, only loads the meta data of the tileset (tile dimensions). + * @param tileset_id Ident of the tileset, as it appears in the options. + * @param precheck If true, only loads the meta data of the tileset (tile dimensions). * @param force If true, forces loading the tileset even if it is already loaded. * @throw std::exception On any error. */ @@ -564,7 +545,7 @@ class cata_tiles void init_light(); /** Variables */ - SDL_Renderer *renderer; + const SDL_Renderer_Ptr &renderer; std::unique_ptr tileset_ptr; int tile_height = 0; diff --git a/src/cata_utility.cpp b/src/cata_utility.cpp index 19bc5d7c1ad42..0a200b4d1e217 100644 --- a/src/cata_utility.cpp +++ b/src/cata_utility.cpp @@ -1,22 +1,21 @@ #include "cata_utility.h" -#include "options.h" -#include "material.h" -#include "enums.h" -#include "creature.h" -#include "translations.h" #include "debug.h" +#include "enums.h" +#include "filesystem.h" +#include "json.h" #include "mapsharing.h" +#include "material.h" +#include "options.h" #include "output.h" -#include "json.h" -#include "filesystem.h" #include "rng.h" +#include "translations.h" #include "units.h" #include #include -#include #include +#include static double pow10( unsigned int n ) { @@ -247,7 +246,7 @@ double convert_volume( int volume, int *out_scale ) ret *= 0.00105669; scale = 2; } - if( out_scale != NULL ) { + if( out_scale != nullptr ) { *out_scale = scale; } return ret; @@ -270,7 +269,7 @@ double clamp_to_width( double value, int width, int &scale ) double clamp_to_width( double value, int width, int &scale, bool *out_truncated ) { - if( out_truncated != NULL ) { + if( out_truncated != nullptr ) { *out_truncated = false; } if( value >= std::pow( 10.0, width ) ) { @@ -279,7 +278,7 @@ double clamp_to_width( double value, int width, int &scale, bool *out_truncated // flag as truncated value = std::pow( 10.0, width ) - 1.0; scale = 0; - if( out_truncated != NULL ) { + if( out_truncated != nullptr ) { *out_truncated = true; } } else if( scale > 0 ) { @@ -415,7 +414,7 @@ std::istream &safe_getline( std::istream &ins, std::string &str ) } return ins; default: - str += ( char )c; + str += static_cast( c ); } } } @@ -531,3 +530,14 @@ void deserialize_wrapper( const std::function &callback, const JsonIn jsin( buffer ); callback( jsin ); } + +bool string_starts_with( const std::string &s1, const std::string &s2 ) +{ + return s1.compare( 0, s2.size(), s2 ) == 0; +} + +bool string_ends_with( const std::string &s1, const std::string &s2 ) +{ + return s1.size() >= s2.size() && + s1.compare( s1.size() - s2.size(), s2.size(), s2 ) == 0; +} diff --git a/src/cata_utility.h b/src/cata_utility.h index 3729e8aed8ff8..d5bc4011dac6a 100644 --- a/src/cata_utility.h +++ b/src/cata_utility.h @@ -2,11 +2,11 @@ #ifndef CATA_UTILITY_H #define CATA_UTILITY_H -#include -#include -#include #include #include +#include +#include +#include class item; class Creature; @@ -93,7 +93,7 @@ bool lcmatch( const std::string &str, const std::string &qry ); * Examle: bank,-house,tank,-car * Will match text containing tank or bank while not containing house or car * - * @param test String to be matched + * @param text String to be matched * @param filter String with include/exclude rules * * @return true if include/exclude rules pass. See Example. @@ -232,7 +232,6 @@ double temp_to_celsius( double fahrenheit ); */ double temp_to_kelvin( double fahrenheit ); - /** * Clamp (number and space wise) value to with, * taking into account the specified preferred scale, @@ -470,4 +469,14 @@ inline void deserialize( T &obj, const std::string &data ) } /**@}*/ +/** + * \brief Returns true iff s1 starts with s2 + */ +bool string_starts_with( const std::string &s1, const std::string &s2 ); + +/** + * \brief Returns true iff s1 ends with s2 + */ +bool string_ends_with( const std::string &s1, const std::string &s2 ); + #endif // CAT_UTILITY_H diff --git a/src/catacharset.cpp b/src/catacharset.cpp index d517446da0eec..bb03ffe04ee9a 100644 --- a/src/catacharset.cpp +++ b/src/catacharset.cpp @@ -1,9 +1,13 @@ #include "catacharset.h" -#include -#include "debug.h" + #include "cursesdef.h" -#include "wcwidth.h" #include "options.h" +#include "wcwidth.h" + +#include +#include +#include + #if (defined _WIN32 || defined WINDOWS) #include "platform_win.h" #include "mmsystem.h" @@ -213,13 +217,12 @@ int cursorx_to_position( const char *line, int cursorx, int *prevpos, int maxlen std::string utf8_truncate( std::string s, size_t length ) { - int last_pos; if( length == 0 || s.empty() ) { return s; } - last_pos = cursorx_to_position( s.c_str(), length, NULL, -1 ); + int last_pos = cursorx_to_position( s.c_str(), length, NULL, -1 ); return s.substr( 0, last_pos ); } diff --git a/src/catacharset.h b/src/catacharset.h index 364c5b87cc071..db3232420c52f 100644 --- a/src/catacharset.h +++ b/src/catacharset.h @@ -2,9 +2,9 @@ #ifndef CATACHARSET_H #define CATACHARSET_H -#include +#include #include -#include + #define ANY_LENGTH 5 #define UNKNOWN_UNICODE 0xFFFD diff --git a/src/catalua.cpp b/src/catalua.cpp index 0de1c4d017fa9..267e83012218c 100644 --- a/src/catalua.cpp +++ b/src/catalua.cpp @@ -1,52 +1,55 @@ #include "catalua.h" -#include - -#include "game.h" -#include "player.h" #include "action.h" -#include "item_factory.h" +#include "debug.h" +#include "game.h" #include "item.h" -#include "pldata.h" +#include "item_factory.h" +#include "line.h" +#include "map.h" #include "mapgen.h" #include "mapgen_functions.h" -#include "map.h" +#include "messages.h" +#include "monstergenerator.h" +#include "omdata.h" #include "output.h" -#include "string_formatter.h" +#include "overmap.h" #include "path_info.h" -#include "monstergenerator.h" -#include "messages.h" -#include "debug.h" -#include "translations.h" -#include "line.h" +#include "player.h" +#include "pldata.h" #include "requirements.h" +#include "rng.h" +#include "string_formatter.h" +#include "translations.h" #include "weather_gen.h" -#include "omdata.h" -#include "overmap.h" + +#include #ifdef LUA -#include "ui.h" -#include "mongroup.h" -#include "itype.h" -#include "morale_types.h" -#include "optional.h" -#include "trap.h" -#include "overmap.h" + +#include "activity_type.h" +#include "bionics.h" +#include "field.h" +#include "filesystem.h" #include "gun_mode.h" +#include "itype.h" #include "mapdata.h" +#include "mongroup.h" +#include "morale_types.h" #include "mtype.h" -#include "field.h" -#include "filesystem.h" -#include "string_input_popup.h" #include "mutation.h" #include "npc.h" -#include "bionics.h" -#include "activity_type.h" +#include "optional.h" +#include "overmap.h" #include "overmap_ui.h" +#include "string_input_popup.h" +#include "trap.h" +#include "ui.h" + extern "C" { -#include "lua.h" -#include "lualib.h" -#include "lauxlib.h" +#include +#include +#include } #include @@ -65,7 +68,7 @@ lua_State *lua_state = nullptr; // Keep track of the current mod from which we are executing, so that // we know where to load files from. -std::string lua_file_path = ""; +std::string lua_file_path; std::stringstream lua_output_stream; std::stringstream lua_error_stream; @@ -769,7 +772,7 @@ void update_globals( lua_State *L ) luah_setglobal( L, "map", -1 ); lua_pop( L, 1 ); - LuaReference::push( L, g ); + LuaReference::push( L, g.get() ); luah_setglobal( L, "g", -1 ); lua_pop( L, 1 ); } @@ -998,11 +1001,19 @@ int lua_mapgen( map *m, const oter_id &terrain_type, const mapgendata &, const t // Custom functions that are to be wrapped from lua. // ------------------------------------------------- -static std::unique_ptr uimenu_instance; -uimenu *create_uimenu() +static std::unique_ptr uilist_instance; +uilist *create_uilist() +{ + uilist_instance.reset( new uilist() ); + return uilist_instance.get(); +} + +// Simulate old create_uimenu() behavior +uilist *create_uilist_no_cancel() { - uimenu_instance = std::unique_ptr( new uimenu() ); - return uimenu_instance.get(); + uilist_instance.reset( new uilist() ); + uilist_instance->allow_cancel = false; + return uilist_instance.get(); } const ter_t &get_terrain_type( int id ) @@ -1064,34 +1075,6 @@ monster *create_monster( const mtype_id &mon_type, const tripoint &p ) // Most lua functions are generated by src/lua/generate_bindings.lua, // these generated functions can be found in src/lua/catabindings.cpp -/* - This function is commented out until I find a way to get a list of all - currently loaded monsters >_> - -// monster_list = game.get_monsters() -static int game_get_monsters(lua_State *L) { - lua_createtable(L, g->_z.size(), 0); // Preallocate enough space for all our monsters. - - // Iterate over the monster list and insert each monster into our returned table. - for( size_t i = 0; i < g->_z.size(); ++i ) { - // The stack will look like this: - // 1 - t, table containing monsters - // 2 - k, index at which the next monster will be inserted - // 3 - v, next monster to insert - // - // lua_rawset then does t[k] = v and pops v and k from the stack - - lua_pushnumber(L, i + 1); - monster** monster_userdata = (monster**) lua_newuserdata(L, sizeof(monster*)); - *monster_userdata = &(g->_z[i]); - luah_setmetatable(L, "monster_metatable"); - lua_rawset(L, -3); - } - - return 1; // 1 return values -} -*/ - static void popup_wrapper( const std::string &text ) { popup( "%s", text.c_str() ); diff --git a/src/catalua.h b/src/catalua.h index 81554c79689fd..8dbfbb2849ac1 100644 --- a/src/catalua.h +++ b/src/catalua.h @@ -2,14 +2,14 @@ #ifndef CATALUA_H #define CATALUA_H -#include "int_id.h" +#include "creature.h" #include "enums.h" +#include "int_id.h" #include "item.h" -#include "creature.h" -#include -#include #include +#include +#include enum CallbackArgumentType : int { Integer, diff --git a/src/char_validity_check.cpp b/src/char_validity_check.cpp index 0834b791961d9..16267b2d7054e 100644 --- a/src/char_validity_check.cpp +++ b/src/char_validity_check.cpp @@ -1,4 +1,5 @@ #include "char_validity_check.h" + #include /** diff --git a/src/character.cpp b/src/character.cpp index a27b336701b7e..ceca309338b64 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -1,35 +1,35 @@ #include "character.h" -#include "game.h" -#include "map.h" + +#include "activity_handlers.h" #include "bionics.h" -#include "map_selector.h" -#include "effect.h" -#include "vehicle_selector.h" +#include "cata_utility.h" #include "debug.h" -#include "mission.h" -#include "translations.h" +#include "effect.h" +#include "field.h" +#include "game.h" #include "itype.h" -#include "options.h" +#include "map.h" #include "map_iterator.h" -#include "field.h" +#include "map_selector.h" #include "messages.h" -#include "input.h" +#include "mission.h" #include "monster.h" #include "mtype.h" -#include "player.h" #include "mutation.h" -#include "skill.h" -#include "vehicle.h" +#include "options.h" #include "output.h" -#include "veh_interact.h" -#include "cata_utility.h" #include "pathfinding.h" +#include "player.h" +#include "skill.h" #include "string_formatter.h" -#include "activity_handlers.h" +#include "translations.h" +#include "veh_interact.h" +#include "vehicle.h" +#include "vehicle_selector.h" #include -#include #include +#include const efftype_id effect_bandaged( "bandaged" ); const efftype_id effect_beartrap( "beartrap" ); @@ -59,9 +59,6 @@ static const trait_id trait_ARACHNID_ARMS( "ARACHNID_ARMS" ); static const trait_id trait_ARM_TENTACLES_4( "ARM_TENTACLES_4" ); static const trait_id trait_ARM_TENTACLES_8( "ARM_TENTACLES_8" ); static const trait_id trait_ARM_TENTACLES( "ARM_TENTACLES" ); -static const trait_id trait_BADBACK( "BADBACK" ); -static const trait_id trait_BENDY2( "BENDY2" ); -static const trait_id trait_BENDY3( "BENDY3" ); static const trait_id trait_BIRD_EYE( "BIRD_EYE" ); static const trait_id trait_CEPH_EYES( "CEPH_EYES" ); static const trait_id trait_CEPH_VISION( "CEPH_VISION" ); @@ -73,18 +70,9 @@ static const trait_id trait_DISORGANIZED( "DISORGANIZED" ); static const trait_id trait_ELFA_FNV( "ELFA_FNV" ); static const trait_id trait_ELFA_NV( "ELFA_NV" ); static const trait_id trait_FEL_NV( "FEL_NV" ); -static const trait_id trait_FLIMSY2( "FLIMSY2" ); -static const trait_id trait_FLIMSY3( "FLIMSY3" ); -static const trait_id trait_FLIMSY( "FLIMSY" ); static const trait_id trait_GLASSJAW( "GLASSJAW" ); -static const trait_id trait_HOLLOW_BONES( "HOLLOW_BONES" ); -static const trait_id trait_HUGE( "HUGE" ); static const trait_id trait_INSECT_ARMS( "INSECT_ARMS" ); -static const trait_id trait_LIGHT_BONES( "LIGHT_BONES" ); static const trait_id trait_MEMBRANE( "MEMBRANE" ); -static const trait_id trait_MUT_TOUGH2( "MUT_TOUGH2" ); -static const trait_id trait_MUT_TOUGH3( "MUT_TOUGH3" ); -static const trait_id trait_MUT_TOUGH( "MUT_TOUGH" ); static const trait_id trait_MYOPIC( "MYOPIC" ); static const trait_id trait_NIGHTVISION2( "NIGHTVISION2" ); static const trait_id trait_NIGHTVISION3( "NIGHTVISION3" ); @@ -98,7 +86,6 @@ static const trait_id trait_SHELL( "SHELL" ); static const trait_id trait_SMALL( "SMALL" ); static const trait_id trait_SMALL2( "SMALL2" ); static const trait_id trait_SMALL_OK( "SMALL_OK" ); -static const trait_id trait_STRONGBACK( "STRONGBACK" ); static const trait_id trait_TAIL_CATTLE( "TAIL_CATTLE" ); static const trait_id trait_TAIL_FLUFFY( "TAIL_FLUFFY" ); static const trait_id trait_TAIL_LONG( "TAIL_LONG" ); @@ -110,20 +97,19 @@ static const trait_id trait_THRESH_CEPHALOPOD( "THRESH_CEPHALOPOD" ); static const trait_id trait_THRESH_INSECT( "THRESH_INSECT" ); static const trait_id trait_THRESH_PLANT( "THRESH_PLANT" ); static const trait_id trait_THRESH_SPIDER( "THRESH_SPIDER" ); -static const trait_id trait_TOUGH2( "TOUGH2" ); -static const trait_id trait_TOUGH3( "TOUGH3" ); -static const trait_id trait_TOUGH( "TOUGH" ); static const trait_id trait_URSINE_EYE( "URSINE_EYE" ); static const trait_id trait_WEBBED( "WEBBED" ); static const trait_id trait_WINGS_BAT( "WINGS_BAT" ); static const trait_id trait_WINGS_BUTTERFLY( "WINGS_BUTTERFLY" ); static const trait_id debug_nodmg( "DEBUG_NODMG" ); -Character::Character() : Creature(), visitable(), hp_cur( { - { - 0 - } -} ), hp_max( {{0}} ) +Character::Character() : + Creature(), + visitable(), + hp_cur( {{0}} ), + hp_max( {{0}} ), + damage_bandaged( {{0}} ), + damage_disinfected( {{0}} ) { str_max = 0; dex_max = 0; @@ -467,7 +453,7 @@ bool Character::move_effects( bool attacking ) } if( has_effect( effect_grabbed ) && !attacking ) { int zed_number = 0; - for( auto &&dest : g->m.points_in_radius( pos(), 1, 0 ) ) { + for( auto &&dest : g->m.points_in_radius( pos(), 1, 0 ) ) { // *NOPAD* const monster *const mon = g->critter_at( dest ); if( mon && ( mon->has_flag( MF_GRABS ) || mon->type->has_special_attack( "GRAB" ) ) ) { @@ -522,7 +508,7 @@ void Character::recalc_hp() new_max_hp[hp_head] *= 0.8; } for( int i = 0; i < num_hp_parts; i++ ) { - hp_cur[i] *= ( float )new_max_hp[i] / ( float )hp_max[i]; + hp_cur[i] *= static_cast( new_max_hp[i] ) / static_cast( hp_max[i] ); hp_max[i] = new_max_hp[i]; } } @@ -637,7 +623,7 @@ float Character::get_vision_threshold( float light_level ) const // As light_level goes from LIGHT_AMBIENT_MINIMAL to LIGHT_AMBIENT_LIT, // dimming goes from 1.0 to 2.0. - const float dimming_from_light = 1.0 + ( ( ( float )light_level - LIGHT_AMBIENT_MINIMAL ) / + const float dimming_from_light = 1.0 + ( ( static_cast( light_level ) - LIGHT_AMBIENT_MINIMAL ) / ( LIGHT_AMBIENT_LIT - LIGHT_AMBIENT_MINIMAL ) ); float range = get_per() / 3.0f - encumb( bp_eyes ) / 10.0f; @@ -655,7 +641,7 @@ float Character::get_vision_threshold( float light_level ) const range++; } - return std::min( ( float )LIGHT_AMBIENT_LOW, threshold_for_range( range ) * dimming_from_light ); + return std::min( static_cast( LIGHT_AMBIENT_LOW ), threshold_for_range( range ) * dimming_from_light ); } bool Character::has_bionic( const bionic_id &b ) const @@ -1302,7 +1288,7 @@ std::string Character::enumerate_unmet_requirements( const item &it, const item check_req( _( "perception" ), get_per(), it.type->min_per ); for( const auto &elem : it.type->min_skills ) { - check_req( context.contextualize_skill( elem.first )->name().c_str(), + check_req( context.contextualize_skill( elem.first )->name(), get_skill_level( elem.first, context ), elem.second ); } @@ -2147,7 +2133,6 @@ hp_part Character::body_window( const std::string &menu_header, bmenu.desc_enabled = true; bmenu.text = menu_header; - bmenu.hilight_disabled = true; bool is_valid_choice = false; @@ -2160,8 +2145,7 @@ hp_part Character::body_window( const std::string &menu_header, const int bonus = e.bonus; // This will c_light_gray if the part does not have any effects cured by the item/effect // (e.g. it cures only bites, but the part does not have a bite effect) - const nc_color state_col = limb_color( bp, bleed > 0.0f ? true : false, bite > 0.0f ? true : false, - infect > 0.0f ? true : false ); + const nc_color state_col = limb_color( bp, bleed > 0.0f, bite > 0.0f, infect > 0.0f ); const bool has_curable_effect = state_col != c_light_gray; // The same as in the main UI sidebar. Independent of the capability of the healing item/effect! const nc_color all_state_col = limb_color( bp, true, true, true ); @@ -2853,6 +2837,8 @@ float Character::mutation_value( const std::string &val ) const return calc_mutation_value<&mutation_branch::fatigue_modifier>( cached_mutations ); } else if( val == "stamina_regen_modifier" ) { return calc_mutation_value<&mutation_branch::stamina_regen_modifier>( cached_mutations ); + } else if( val == "stealth_modifier" ) { + return calc_mutation_value<&mutation_branch::stealth_modifier>( cached_mutations ); } debugmsg( "Invalid mutation value name %s", val.c_str() ); @@ -2911,22 +2897,22 @@ float Character::healing_rate_medicine( float at_rest_quality, const body_part b const effect &e_disinfected = get_effect( effect_disinfected, bp ); if( !e_bandaged.is_null() ) { - bandaged_rate += static_cast( e_bandaged.get_amount( "HEAL_RATE", 0 ) ) / HOURS( 24 ); + bandaged_rate += static_cast( e_bandaged.get_amount( "HEAL_RATE" ) ) / HOURS( 24 ); if( bp == bp_head ) { - bandaged_rate *= e_bandaged.get_amount( "HEAL_HEAD", 0 ) / 100.0f; + bandaged_rate *= e_bandaged.get_amount( "HEAL_HEAD" ) / 100.0f; } if( bp == bp_torso ) { - bandaged_rate *= e_bandaged.get_amount( "HEAL_TORSO", 0 ) / 100.0f; + bandaged_rate *= e_bandaged.get_amount( "HEAL_TORSO" ) / 100.0f; } } if( !e_disinfected.is_null() ) { - disinfected_rate += static_cast( e_disinfected.get_amount( "HEAL_RATE", 0 ) ) / HOURS( 24 ); + disinfected_rate += static_cast( e_disinfected.get_amount( "HEAL_RATE" ) ) / HOURS( 24 ); if( bp == bp_head ) { - disinfected_rate *= e_disinfected.get_amount( "HEAL_HEAD", 0 ) / 100.0f; + disinfected_rate *= e_disinfected.get_amount( "HEAL_HEAD" ) / 100.0f; } if( bp == bp_torso ) { - disinfected_rate *= e_disinfected.get_amount( "HEAL_TORSO", 0 ) / 100.0f; + disinfected_rate *= e_disinfected.get_amount( "HEAL_TORSO" ) / 100.0f; } } diff --git a/src/character.h b/src/character.h index 31d60d743e5e1..1626471eb1f10 100644 --- a/src/character.h +++ b/src/character.h @@ -2,17 +2,20 @@ #ifndef CHARACTER_H #define CHARACTER_H -#include "visitable.h" +#include "bodypart.h" +#include "calendar.h" #include "creature.h" #include "inventory.h" #include "pimpl.h" -#include "bodypart.h" -#include "calendar.h" #include "pldata.h" +#include "rng.h" +#include "visitable.h" +#include #include +#include +#include #include -#include class Skill; struct pathfinding_settings; @@ -61,7 +64,6 @@ enum fatigue_levels { MASSIVE_FATIGUE = 1000 }; - // Sleep deprivation is defined in minutes, and although most calculations scale linearly, // maluses are bestowed only upon reaching the tiers defined below. enum sleep_deprivation_levels { @@ -728,13 +730,13 @@ class Character : public Creature, public visitable pimpl my_bionics; protected: - void on_stat_change( const std::string &, int ) override {}; - virtual void on_mutation_gain( const trait_id & ) {}; - virtual void on_mutation_loss( const trait_id & ) {}; + void on_stat_change( const std::string &, int ) override {} + virtual void on_mutation_gain( const trait_id & ) {} + virtual void on_mutation_loss( const trait_id & ) {} public: - virtual void on_item_wear( const item & ) {}; - virtual void on_item_takeoff( const item & ) {}; - virtual void on_worn_item_washed( const item & ) {}; + virtual void on_item_wear( const item & ) {} + virtual void on_item_takeoff( const item & ) {} + virtual void on_worn_item_washed( const item & ) {} protected: Character(); diff --git a/src/clzones.cpp b/src/clzones.cpp index b663a52927041..776dd1254fdf1 100644 --- a/src/clzones.cpp +++ b/src/clzones.cpp @@ -1,19 +1,17 @@ #include "clzones.h" + +#include "cata_utility.h" +#include "debug.h" #include "game.h" +#include "iexamine.h" +#include "item_category.h" +#include "itype.h" #include "json.h" -#include "debug.h" +#include "line.h" #include "output.h" -#include "cata_utility.h" +#include "string_input_popup.h" #include "translations.h" #include "ui.h" -#include "string_input_popup.h" -#include "line.h" -#include "item.h" -#include "itype.h" -#include "item_category.h" -#include "iexamine.h" - -#include zone_manager::zone_manager() { @@ -30,19 +28,19 @@ zone_manager::zone_manager() zone_type( translate_marker( "Loot: Food" ), translate_marker( "Destination for comestibles. If more specific food zone is not defined, all food is moved here." ) ) ); types.emplace( zone_type_id( "LOOT_PFOOD" ), - zone_type( translate_marker_context( "perishable food", "Loot: P.Food" ), + zone_type( translate_marker( "Loot: P.Food" ), translate_marker( "Destination for perishable comestibles. Does include perishable drinks if such zone is not specified." ) ) ); types.emplace( zone_type_id( "LOOT_DRINK" ), zone_type( translate_marker( "Loot: Drink" ), translate_marker( "Destination for drinks. Does include perishable drinks if such zone is not specified." ) ) ); types.emplace( zone_type_id( "LOOT_PDRINK" ), - zone_type( translate_marker_context( "perishable drink", "Loot: P.Drink" ), + zone_type( translate_marker( "Loot: P.Drink" ), translate_marker( "Destination for perishable drinks." ) ) ); types.emplace( zone_type_id( "LOOT_GUNS" ), zone_type( translate_marker( "Loot: Guns" ), translate_marker( "Destination for guns, bows and similar weapons." ) ) ); types.emplace( zone_type_id( "LOOT_MAGAZINES" ), - zone_type( translate_marker_context( "gun magazines", "Loot: Magazines" ), + zone_type( translate_marker( "Loot: Magazines" ), translate_marker( "Destination for gun magazines." ) ) ); types.emplace( zone_type_id( "LOOT_AMMO" ), zone_type( translate_marker( "Loot: Ammo" ), @@ -57,7 +55,7 @@ zone_manager::zone_manager() zone_type( translate_marker( "Loot: Clothing" ), translate_marker( "Destination for clothing. Does include filthy clothing if such zone is not specified." ) ) ); types.emplace( zone_type_id( "LOOT_FCLOTHING" ), - zone_type( translate_marker_context( "filthy clothing", "Loot: F.Clothing" ), + zone_type( translate_marker( "Loot: F.Clothing" ), translate_marker( "Destination for filthy clothing." ) ) ); types.emplace( zone_type_id( "LOOT_DRUGS" ), zone_type( translate_marker( "Loot: Drugs" ), @@ -75,7 +73,7 @@ zone_manager::zone_manager() zone_type( translate_marker( "Loot: Bionics" ), translate_marker( "Destination for Compact Bionics Modules aka CBMs." ) ) ); types.emplace( zone_type_id( "LOOT_VEHICLE_PARTS" ), - zone_type( translate_marker_context( "vehicle parts", "Loot: V.Parts" ), + zone_type( translate_marker( "Loot: V.Parts" ), translate_marker( "Destination for vehicle parts." ) ) ); types.emplace( zone_type_id( "LOOT_OTHER" ), zone_type( translate_marker( "Loot: Other" ), @@ -90,7 +88,7 @@ zone_manager::zone_manager() zone_type( translate_marker( "Loot: Chemical" ), translate_marker( "Destination for chemicals." ) ) ); types.emplace( zone_type_id( "LOOT_SPARE_PARTS" ), - zone_type( translate_marker_context( "spare parts", "Loot: S.Parts" ), + zone_type( translate_marker( "Loot: S.Parts" ), translate_marker( "Destination for spare parts." ) ) ); types.emplace( zone_type_id( "LOOT_ARTIFACTS" ), zone_type( translate_marker( "Loot: Artifacts" ), @@ -99,7 +97,7 @@ zone_manager::zone_manager() zone_type( translate_marker( "Loot: Armor" ), translate_marker( "Destination for armor. Does include filthy armor if such zone is not specified." ) ) ); types.emplace( zone_type_id( "LOOT_FARMOR" ), - zone_type( translate_marker_context( "filthy armor", "Loot: F.Armor" ), + zone_type( translate_marker( "Loot: F.Armor" ), translate_marker( "Destination for filthy armor." ) ) ); types.emplace( zone_type_id( "LOOT_WOOD" ), zone_type( translate_marker( "Loot: Wood" ), @@ -108,7 +106,7 @@ zone_manager::zone_manager() zone_type( translate_marker( "Loot: Ignore" ), translate_marker( "Items inside of this zone are ignored by \"sort out loot\" zone-action." ) ) ); types.emplace( zone_type_id( "FARM_PLOT" ), - zone_type( translate_marker_context( "plot of land", "Farm: Plot" ), + zone_type( translate_marker( "Farm: Plot" ), translate_marker( "Designate a farm plot for tilling and planting." ) ) ); } @@ -129,7 +127,7 @@ std::shared_ptr zone_options::create( const zone_type_id &type ) } return std::make_shared(); -}; +} bool zone_options::is_valid( const zone_type_id &type, const zone_options &options ) { @@ -189,12 +187,12 @@ plot_options::query_seed_result plot_options::query_seed() bool plot_options::query_at_creation() { return query_seed() != canceled; -}; +} bool plot_options::query() { return query_seed() == changed; -}; +} std::string plot_options::get_zone_name_suggestion() const { @@ -209,7 +207,7 @@ std::string plot_options::get_zone_name_suggestion() const } return _( "No seed" ); -}; +} std::vector> plot_options::get_descriptions() const { @@ -224,15 +222,15 @@ void plot_options::serialize( JsonOut &json ) const { json.member( "mark", mark ); json.member( "seed", seed ); -}; +} void plot_options::deserialize( JsonObject &jo_zone ) { mark = jo_zone.get_string( "mark", "" ); seed = jo_zone.get_string( "seed", "" ); -}; +} -cata::optional zone_manager::query_name( std::string default_name ) const +cata::optional zone_manager::query_name( const std::string &default_name ) const { string_input_popup popup; popup @@ -371,7 +369,7 @@ std::unordered_set zone_manager::get_point_set( const zone_type_id &ty return std::unordered_set(); } - return type_iter->second;; + return type_iter->second; } bool zone_manager::has( const zone_type_id &type, const tripoint &where ) const @@ -420,7 +418,7 @@ zone_type_id zone_manager::get_near_zone_type_for_item( const item &it, } if( cat.id() == "food" ) { - const bool preserves = it.is_food_container() && it.type->container->preserves ? 1 : 0; + const bool preserves = it.is_food_container() && it.type->container->preserves; const auto &it_food = it.is_food_container() ? it.contents.front() : it; if( it_food.is_food() ) { // skip food without comestible, like MREs diff --git a/src/clzones.h b/src/clzones.h index 369d9f1d4859f..027c5a233250b 100644 --- a/src/clzones.h +++ b/src/clzones.h @@ -3,16 +3,15 @@ #define CLZONES_H #include "enums.h" -#include "string_id.h" #include "item.h" #include "optional.h" +#include "string_id.h" -#include -#include -#include #include +#include #include #include +#include class JsonIn; class JsonOut; @@ -44,39 +43,39 @@ class zone_options /* derived classes must always return true */ virtual bool has_options() const { return false; - }; + } /* query only necessary options at zone creation, one by one * returns true if successful, returns false if fails or canceled */ virtual bool query_at_creation() { return true; - }; + } - /* query options, first uimenu should allow to pick an option to edit (if more than one) + /* query options, first uilist should allow to pick an option to edit (if more than one) * returns true if something is changed, otherwise returns false */ virtual bool query() { return false; - }; + } /* suggest a name for the zone, depending on options */ virtual std::string get_zone_name_suggestion() const { return ""; - }; + } /* vector of pairs of each option's description and value */ virtual std::vector> get_descriptions() const { return std::vector>(); - }; + } - virtual void serialize( JsonOut & ) const {}; - virtual void deserialize( JsonObject & ) {}; + virtual void serialize( JsonOut & ) const {} + virtual void deserialize( JsonObject & ) {} }; // mark option interface class mark_option { public: - virtual ~mark_option() {} + virtual ~mark_option() = default; virtual std::string get_mark() const = 0; }; @@ -98,14 +97,14 @@ class plot_options : public zone_options, public mark_option public: std::string get_mark() const override { return mark; - }; + } std::string get_seed() const { return seed; - }; + } bool has_options() const override { return true; - }; + } bool query_at_creation() override; bool query() override; @@ -172,7 +171,7 @@ class zone_manager std::vector get_zones( const zone_type_id &type, const tripoint &where ) const; const zone_data *get_top_zone( const tripoint &where ) const; const zone_data *get_bottom_zone( const tripoint &where ) const; - cata::optional query_name( std::string default_name = "" ) const; + cata::optional query_name( const std::string &default_name = "" ) const; cata::optional query_type() const; void swap( zone_data &a, zone_data &b ); @@ -257,5 +256,4 @@ class zone_manager::zone_data } }; - #endif diff --git a/src/color.cpp b/src/color.cpp index a1afb81311a0b..98e1f2af26be8 100644 --- a/src/color.cpp +++ b/src/color.cpp @@ -1,17 +1,17 @@ #include "color.h" -#include "output.h" + +#include "cata_utility.h" #include "debug.h" +#include "filesystem.h" #include "input.h" +#include "json.h" +#include "output.h" #include "path_info.h" -#include "cata_utility.h" -#include "filesystem.h" #include "string_formatter.h" -#include "ui.h" #include "translations.h" -#include "json.h" +#include "ui.h" #include // for std::count -#include void nc_color::serialize( JsonOut &jsout ) const { @@ -499,49 +499,49 @@ void init_colors() nc_color invert_color( nc_color c ) { const nc_color color = all_colors.get_invert( c ); - return ( ( int )color > 0 ) ? color : c_pink; + return ( static_cast( color ) > 0 ) ? color : c_pink; } nc_color hilite( nc_color c ) { const nc_color color = all_colors.get_highlight( c, HL_BLUE ); - return ( ( int )color > 0 ) ? color : h_white; + return ( static_cast( color ) > 0 ) ? color : h_white; } nc_color red_background( nc_color c ) { const nc_color color = all_colors.get_highlight( c, HL_RED ); - return ( ( int )color > 0 ) ? color : c_white_red; + return ( static_cast( color ) > 0 ) ? color : c_white_red; } nc_color white_background( nc_color c ) { const nc_color color = all_colors.get_highlight( c, HL_WHITE ); - return ( ( int )color > 0 ) ? color : c_black_white; + return ( static_cast( color ) > 0 ) ? color : c_black_white; } nc_color green_background( nc_color c ) { const nc_color color = all_colors.get_highlight( c, HL_GREEN ); - return ( ( int )color > 0 ) ? color : c_black_green; + return ( static_cast( color ) > 0 ) ? color : c_black_green; } nc_color yellow_background( nc_color c ) { const nc_color color = all_colors.get_highlight( c, HL_YELLOW ); - return ( ( int )color > 0 ) ? color : c_black_yellow; + return ( static_cast( color ) > 0 ) ? color : c_black_yellow; } nc_color magenta_background( nc_color c ) { const nc_color color = all_colors.get_highlight( c, HL_MAGENTA ); - return ( ( int )color > 0 ) ? color : c_black_magenta; + return ( static_cast( color ) > 0 ) ? color : c_black_magenta; } nc_color cyan_background( nc_color c ) { const nc_color color = all_colors.get_highlight( c, HL_CYAN ); - return ( ( int )color > 0 ) ? color : c_black_cyan; + return ( static_cast( color ) > 0 ) ? color : c_black_cyan; } /** @@ -780,7 +780,7 @@ void color_manager::show_gui() auto iter = name_color_map.begin(); std::advance( iter, iStartPos ); - std::string sActive = ""; + std::string sActive; // display color manager for( int i = iStartPos; iter != name_color_map.end(); ++iter, ++i ) { @@ -823,7 +823,7 @@ void color_manager::show_gui() } } else if( action == "DOWN" ) { iCurrentLine++; - if( iCurrentLine >= ( int )iMaxColors ) { + if( iCurrentLine >= static_cast( iMaxColors ) ) { iCurrentLine = 0; } } else if( action == "LEFT" ) { @@ -854,7 +854,7 @@ void color_manager::show_gui() } else if( action == "LOAD_TEMPLATE" ) { auto vFiles = get_files_from_path( ".json", FILENAMES["color_templates"], false, true ); - if( vFiles.size() > 0 ) { + if( !vFiles.empty() ) { uilist ui_templates; ui_templates.w_y = iHeaderHeight + 1 + iOffsetY; ui_templates.w_height = 18; @@ -862,7 +862,7 @@ void color_manager::show_gui() ui_templates.text = _( "Color templates:" ); for( const auto &filename : vFiles ) { - ui_templates.addentry( filename.substr( filename.find_last_of( "/" ) + 1 ) ); + ui_templates.addentry( filename.substr( filename.find_last_of( '/' ) + 1 ) ); } ui_templates.query(); @@ -905,7 +905,7 @@ void color_manager::show_gui() std::string sColor = iter.first; std::string sType = _( "default" ); - std::string name_custom = ""; + std::string name_custom; if( sSelected == sColor ) { ui_colors.selected = i; diff --git a/src/color.h b/src/color.h index 08a94e9d38795..f7278659ae273 100644 --- a/src/color.h +++ b/src/color.h @@ -3,11 +3,11 @@ #define COLOR_H #include -#include +#include #include +#include #include #include -#include #define all_colors get_all_colors() @@ -414,7 +414,7 @@ class color_manager bool save_custom(); public: - color_manager() {}; + color_manager() = default; nc_color get( const color_id id ) const; diff --git a/src/color_loader.h b/src/color_loader.h index 9870580cc8632..bc30efb36271a 100644 --- a/src/color_loader.h +++ b/src/color_loader.h @@ -2,16 +2,15 @@ #ifndef COLOR_LOADER_H #define COLOR_LOADER_H -#include "json.h" #include "debug.h" -#include "cata_utility.h" #include "filesystem.h" +#include "json.h" #include "path_info.h" -#include -#include #include #include +#include +#include template class color_loader diff --git a/src/computer.cpp b/src/computer.cpp index 7417a07375546..14b88d5204d31 100644 --- a/src/computer.cpp +++ b/src/computer.cpp @@ -1,35 +1,35 @@ #include "computer.h" + #include "coordinate_conversions.h" +#include "debug.h" +#include "event.h" +#include "field.h" #include "game.h" +#include "input.h" +#include "json.h" +#include "line.h" #include "map.h" -#include "debug.h" +#include "map_iterator.h" +#include "mapdata.h" +#include "messages.h" +#include "mission.h" #include "monster.h" +#include "mtype.h" +#include "output.h" #include "overmap.h" #include "overmap_ui.h" -#include "output.h" -#include "json.h" #include "overmapbuffer.h" -#include "messages.h" -#include "sounds.h" +#include "player.h" #include "rng.h" -#include "mission.h" -#include "translations.h" -#include "monster.h" -#include "event.h" -#include "trap.h" -#include "mapdata.h" -#include "mtype.h" +#include "sounds.h" #include "string_formatter.h" -#include "field.h" -#include "player.h" #include "text_snippets.h" -#include "input.h" -#include "map_iterator.h" -#include "line.h" +#include "translations.h" +#include "trap.h" -#include -#include #include +#include +#include const mtype_id mon_manhack( "mon_manhack" ); const mtype_id mon_secubot( "mon_secubot" ); @@ -201,7 +201,7 @@ void computer::use() do { // TODO: use input context ch = inp_mngr.get_input_event().get_first_input(); - } while( ch != 'q' && ch != 'Q' && ( ch < '1' || ch - '1' >= ( char )options_size ) ); + } while( ch != 'q' && ch != 'Q' && ( ch < '1' || ch - '1' >= static_cast( options_size ) ) ); if( ch == 'q' || ch == 'Q' ) { break; // Exit from main computer loop } else { // We selected an option other than quit. @@ -375,7 +375,6 @@ void computer::activate_function( computer_action action ) query_any( _( "Lock enabled. Press any key..." ) ); break; - // UNLOCK_DISARM falls through to just UNLOCK case COMPACT_UNLOCK_DISARM: remove_submap_turrets(); @@ -863,7 +862,7 @@ of pureed bone & LSD." ) ); case COMPACT_DOWNLOAD_SOFTWARE: if( item *const usb = pick_usb() ) { mission *miss = mission::find( mission_id ); - if( miss == NULL ) { + if( miss == nullptr ) { debugmsg( _( "Computer couldn't find its mission!" ) ); return; } diff --git a/src/computer.h b/src/computer.h index 17bce0ca939aa..aae72ccd2f925 100644 --- a/src/computer.h +++ b/src/computer.h @@ -4,8 +4,9 @@ #include "calendar.h" #include "cursesdef.h" -#include + #include +#include class game; class player; diff --git a/src/construction.cpp b/src/construction.cpp index 26c76b4fdbc23..6f552a2a02e49 100644 --- a/src/construction.cpp +++ b/src/construction.cpp @@ -1,50 +1,44 @@ #include "construction.h" +#include "action.h" +#include "cata_utility.h" #include "coordinate_conversions.h" +#include "debug.h" #include "game.h" +#include "input.h" +#include "inventory.h" +#include "item_group.h" +#include "iuse.h" +#include "json.h" #include "map.h" #include "map_iterator.h" -#include "debug.h" -#include "input.h" +#include "mapdata.h" +#include "messages.h" +#include "npc.h" +#include "options.h" #include "output.h" #include "player.h" -#include "inventory.h" -#include "mapdata.h" +#include "requirements.h" +#include "rng.h" #include "skill.h" #include "string_formatter.h" -#include "action.h" +#include "string_input_popup.h" #include "translations.h" -#include "messages.h" -#include "json.h" -#include "rng.h" -#include "requirements.h" #include "trap.h" -#include "overmapbuffer.h" -#include "options.h" -#include "npc.h" -#include "iuse.h" +#include "uistate.h" #include "veh_type.h" #include "vehicle.h" -#include "item_group.h" -#include "cata_utility.h" -#include "uistate.h" -#include "string_input_popup.h" #include "vpart_position.h" #include -#include #include static const skill_id skill_fabrication( "fabrication" ); static const skill_id skill_electronics( "electronics" ); -static const skill_id skill_unarmed( "unarmed" ); -static const skill_id skill_throw( "throw" ); static const trait_id trait_DEBUG_HS( "DEBUG_HS" ); -static const trait_id trait_NOPAIN( "NOPAIN" ); static const trait_id trait_PAINRESIST_TROGLO( "PAINRESIST_TROGLO" ); static const trait_id trait_STOCKY_TROGLO( "STOCKY_TROGLO" ); -static const trait_id trait_WEB_ROPE( "WEB_ROPE" ); const trap_str_id tr_firewood_source( "tr_firewood_source" ); @@ -73,13 +67,12 @@ void done_dig_stair( const tripoint & ); void done_mine_downstair( const tripoint & ); void done_mine_upstair( const tripoint & ); void done_window_curtains( const tripoint & ); -void done_extract_sand( const tripoint & ); -void done_extract_clay( const tripoint & ); +void done_extract_maybe_revert_to_dirt( const tripoint & ); void done_mark_firewood( const tripoint & ); void failure_standard( const tripoint & ); void failure_deconstruct( const tripoint & ); -}; +} // Helper functions, nobody but us needs to call these. static bool can_construct( const std::string &desc ); @@ -195,7 +188,7 @@ void construction_menu() } int w_height = TERMY; - if( ( int )available.size() + 2 < w_height ) { + if( static_cast( available.size() ) + 2 < w_height ) { w_height = available.size() + 2; } if( w_height < FULL_SCREEN_HEIGHT ) { @@ -231,7 +224,7 @@ void construction_menu() int select = 0; int offset = 0; bool exit = false; - std::string category_name = ""; + std::string category_name; std::vector constructs; //storage for the color text so it can be scrolled std::vector< std::vector < std::string > > construct_buffers; @@ -330,7 +323,8 @@ void construction_menu() // Determine where in the master list to start printing calcStartPos( offset, select, w_list_height, constructs.size() ); // Print the constructions between offset and max (or how many will fit) - for( size_t i = 0; ( int )i < w_list_height && ( i + offset ) < constructs.size(); i++ ) { + for( size_t i = 0; static_cast( i ) < w_list_height && + ( i + offset ) < constructs.size(); i++ ) { int current = i + offset; std::string con_name = constructs[current]; bool highlight = ( current == select ); @@ -359,17 +353,18 @@ void construction_menu() ctxt.get_desc( "HELP_KEYBINDINGS" ).c_str() ) ); //leave room for top and bottom UI text - const int available_buffer_height = w_height - 3 - 3 - ( int )notes.size(); + const int available_buffer_height = w_height - 3 - 3 - static_cast( notes.size() ); // print the hotkeys regardless of if there are constructions for( size_t i = 0; i < notes.size(); ++i ) { - trim_and_print( w_con, w_height - 1 - ( int )notes.size() + ( int )i, pos_x, + trim_and_print( w_con, w_height - 1 - static_cast( notes.size() ) + static_cast( i ), + pos_x, available_window_width, c_white, notes[i] ); } if( !constructs.empty() ) { nc_color color_stage = c_white; - if( select >= ( int ) constructs.size() ) { + if( select >= static_cast( constructs.size() ) ) { select = 0; } std::string current_desc = constructs[select]; @@ -566,7 +561,8 @@ void construction_menu() if( static_cast( construct_buffer_breakpoints[current_construct_breakpoint] + available_buffer_height ) < full_construct_buffer.size() ) { // Print next stage indicator if more breakpoints are remaining after screen height - trim_and_print( w_con, w_height - 2 - ( int )notes.size(), pos_x, available_window_width, + trim_and_print( w_con, w_height - 2 - static_cast( notes.size() ), pos_x, + available_window_width, c_white, _( "Press %s to show next stage(s)." ), ctxt.get_desc( "PAGE_DOWN" ).c_str() ); } @@ -611,7 +607,7 @@ void construction_menu() uistate.construction_filter = filter; } else if( action == "DOWN" ) { update_info = true; - if( select < ( int )constructs.size() - 1 ) { + if( select < static_cast( constructs.size() ) - 1 ) { select++; } else { select = 0; @@ -664,7 +660,7 @@ void construction_menu() offset = 0; load_available_constructions( available, cat_available, hide_unconstructable ); } else if( action == "CONFIRM" ) { - if( constructs.empty() || select >= ( int ) constructs.size() ) { + if( constructs.empty() || select >= static_cast( constructs.size() ) ) { continue;// Nothing to be done here } if( player_can_build( g->u, total_inv, constructs[select] ) ) { @@ -814,8 +810,8 @@ void complete_construction() const auto award_xp = [&]( player & c ) { for( const auto &pr : built.required_skills ) { - c.practice( pr.first, ( int )( ( 10 + 15 * pr.second ) * ( 1 + built.time / 30000.0 ) ), - ( int )( pr.second * 1.25 ) ); + c.practice( pr.first, static_cast( ( 10 + 15 * pr.second ) * ( 1 + built.time / 30000.0 ) ), + static_cast( pr.second * 1.25 ) ); } }; @@ -850,6 +846,11 @@ void complete_construction() } } + // Spawn byproducts + if( built.byproduct_item_group ) { + g->m.spawn_items( u.pos(), item_group::items_from( *built.byproduct_item_group, calendar::turn ) ); + } + add_msg( m_info, _( "You finish your construction: %s." ), _( built.description.c_str() ) ); // clear the activity @@ -966,7 +967,7 @@ void construct::done_vehicle( const tripoint &p ) return; } veh->name = name; - veh->install_part( 0, 0, vpart_from_item( g->u.lastconsumed ) ); + veh->install_part( point( 0, 0 ), vpart_from_item( g->u.lastconsumed ) ); // Update the vehicle cache immediately, // or the vehicle will be invisible for the first couple of turns. @@ -1133,21 +1134,20 @@ void construct::done_window_curtains( const tripoint & ) _( "After boarding up the window the curtains and curtain rod are left." ) ); } -void construct::done_extract_sand( const tripoint &p ) +void construct::done_extract_maybe_revert_to_dirt( const tripoint &p ) { - g->m.spawn_item( g->u.pos(), "material_sand", 1, rng( 300, 600 ) ); if( one_in( 10 ) ) { g->m.ter_set( p, t_dirt ); } - g->u.add_msg_if_player( _( "You gather some sand." ) ); -} -void construct::done_extract_clay( const tripoint &p ) -{ - g->m.spawn_item( g->u.pos(), "clay_lump", rng( 6, 12 ) ); - if( one_in( 10 ) ) { - g->m.ter_set( p, t_dirt ); + + if( g->m.ter( p ) == t_clay ) { + add_msg( _( "You gather some clay." ) ); + } else if( g->m.ter( p ) == t_sand ) { + add_msg( _( "You gather some sand." ) ); + } else { + // Fall through to an undefined material. + add_msg( _( "You gather some materials." ) ); } - g->u.add_msg_if_player( _( "You gather some clay." ) ); } void construct::done_mark_firewood( const tripoint &p ) @@ -1180,7 +1180,7 @@ void assign_or_debugmsg( T &dest, const std::string &fun_id, } ); debugmsg( "Unknown function: %s, available values are %s", fun_id.c_str(), list_available.c_str() ); } -}; +} void load_construction( JsonObject &jo ) { @@ -1234,6 +1234,11 @@ void load_construction( JsonObject &jo ) con.pre_flags = jo.get_tags( "pre_flags" ); + if( jo.has_member( "byproducts" ) ) { + JsonIn &stream = *jo.get_raw( "byproducts" ); + con.byproduct_item_group = item_group::load_item_group( stream, "collection" ); + } + static const std::map> pre_special_map = {{ { "", construct::check_nothing }, { "check_empty", construct::check_empty }, @@ -1253,8 +1258,7 @@ void load_construction( JsonObject &jo ) { "done_mine_downstair", construct::done_mine_downstair }, { "done_mine_upstair", construct::done_mine_upstair }, { "done_window_curtains", construct::done_window_curtains }, - { "done_extract_sand", construct::done_extract_sand }, - { "done_extract_clay", construct::done_extract_clay }, + { "done_extract_maybe_revert_to_dirt", construct::done_extract_maybe_revert_to_dirt }, { "done_mark_firewood", construct::done_mark_firewood } } }; diff --git a/src/construction.h b/src/construction.h index 7c656c9fedf0e..91297824abfa9 100644 --- a/src/construction.h +++ b/src/construction.h @@ -2,13 +2,13 @@ #ifndef CONSTRUCTION_H #define CONSTRUCTION_H +#include "optional.h" #include "string_id.h" -#include -#include +#include #include +#include #include -#include namespace catacurses { @@ -30,6 +30,9 @@ struct construction { std::string pre_terrain; // beginning terrain for construction std::string post_terrain;// final terrain after construction + // Item group of byproducts created by the construction on success. + cata::optional byproduct_item_group; + std::set pre_flags; // flags beginning terrain must have /** Skill->skill level mapping. Can be empty. */ diff --git a/src/consumption.cpp b/src/consumption.cpp index 25c5088a477f6..98d27f5607976 100644 --- a/src/consumption.cpp +++ b/src/consumption.cpp @@ -1,9 +1,6 @@ -#include "player.h" - #include "addiction.h" #include "cata_utility.h" #include "debug.h" -#include "output.h" #include "game.h" #include "itype.h" #include "map.h" @@ -11,16 +8,18 @@ #include "material.h" #include "messages.h" #include "monster.h" -#include "string_formatter.h" #include "morale_types.h" #include "mutation.h" #include "options.h" +#include "output.h" +#include "player.h" +#include "string_formatter.h" #include "translations.h" #include "units.h" #include "vitamin.h" -#include #include +#include namespace { @@ -123,7 +122,7 @@ int player::nutrition_for( const item &comest ) const nutr *= 1.5f; } - return ( int )nutr; + return static_cast( nutr ); } std::pair player::fun_for( const item &comest ) const diff --git a/src/craft_command.cpp b/src/craft_command.cpp index d784f2bc41b9f..856cfc7e14b52 100644 --- a/src/craft_command.cpp +++ b/src/craft_command.cpp @@ -2,20 +2,18 @@ #include "debug.h" #include "game_constants.h" +#include "inventory.h" #include "item.h" #include "itype.h" -#include "inventory.h" #include "output.h" #include "player.h" #include "recipe.h" #include "requirements.h" #include "translations.h" -#include "crafting.h" +#include "uistate.h" -#include #include -#include -#include +#include template std::string comp_selection::nname() const @@ -90,6 +88,18 @@ void craft_command::execute() /* legacy support for lua bindings to last_batch and lastrecipe */ crafter->last_batch = batch_size; crafter->lastrecipe = rec->ident(); + + const auto iter = std::find( uistate.recent_recipes.begin(), uistate.recent_recipes.end(), + rec->ident() ); + if( iter != uistate.recent_recipes.end() ) { + uistate.recent_recipes.erase( iter ); + } + + uistate.recent_recipes.push_back( rec->ident() ); + + if( uistate.recent_recipes.size() > 20 ) { + uistate.recent_recipes.erase( uistate.recent_recipes.begin() ); + } } /** Does a string join with ', ' of the components in the passed vector and inserts into 'str' */ diff --git a/src/craft_command.h b/src/craft_command.h index d5b806b2d6093..965e3d7b71eb8 100644 --- a/src/craft_command.h +++ b/src/craft_command.h @@ -2,11 +2,10 @@ #ifndef CRAFT_COMMAND_H #define CRAFT_COMMAND_H -#include "string_id.h" #include "requirements.h" +#include "string_id.h" #include -#include #include class inventory; @@ -54,7 +53,7 @@ class craft_command { public: /** Instantiates an empty craft_command, which can't be executed. */ - craft_command() {} + craft_command() = default; craft_command( const recipe *to_make, int batch_size, bool is_long, player *crafter ) : rec( to_make ), batch_size( batch_size ), is_long( is_long ), crafter( crafter ) {} @@ -88,9 +87,6 @@ class craft_command std::vector> check_tool_components_missing( const inventory &map_inv ) const; - /** Selects components to use */ - void select_components( inventory &map_inv ); - /** Creates a continue pop up asking to continue crafting and listing the missing components */ bool query_continue( const std::vector> &missing_items, const std::vector> &missing_tools ); diff --git a/src/crafting.cpp b/src/crafting.cpp index 309cdd07ad52b..a5d77e4d19776 100644 --- a/src/crafting.cpp +++ b/src/crafting.cpp @@ -1,40 +1,34 @@ #include "crafting.h" -#include "catacharset.h" +#include "activity_handlers.h" +#include "ammo.h" +#include "bionics.h" +#include "calendar.h" #include "craft_command.h" #include "debug.h" #include "game.h" #include "game_inventory.h" -#include "input.h" -#include "bionics.h" #include "inventory.h" +#include "item.h" #include "itype.h" -#include "ammo.h" #include "map.h" #include "messages.h" -#include "item.h" #include "npc.h" -#include "calendar.h" #include "options.h" #include "output.h" #include "recipe_dictionary.h" #include "requirements.h" #include "rng.h" -#include "vpart_reference.h" #include "translations.h" #include "ui.h" -#include "vpart_position.h" #include "vehicle.h" -#include "crafting_gui.h" -#include "activity_handlers.h" +#include "vpart_position.h" +#include "vpart_reference.h" -#include //std::min -#include -#include //sqrt -#include -#include +#include +#include #include -#include +#include const efftype_id effect_contacts( "contacts" ); @@ -558,16 +552,16 @@ void player::complete_craft() if( making->skill_used ) { // normalize experience gain to crafting time, giving a bonus for longer crafting const double batch_mult = batch_size + base_time_to_craft( *making, batch_size ) / 30000.0; - practice( making->skill_used, ( int )( ( making->difficulty * 15 + 10 ) * batch_mult ), - ( int )making->difficulty * 1.25 ); + practice( making->skill_used, static_cast( ( making->difficulty * 15 + 10 ) * batch_mult ), + static_cast( making->difficulty ) * 1.25 ); //NPCs assisting or watching should gain experience... for( auto &elem : helpers ) { //If the NPC can understand what you are doing, they gain more exp if( elem->get_skill_level( making->skill_used ) >= making->difficulty ) { elem->practice( making->skill_used, - ( int )( ( making->difficulty * 15 + 10 ) * batch_mult * - .50 ), ( int )making->difficulty * 1.25 ); + static_cast( ( making->difficulty * 15 + 10 ) * batch_mult * + .50 ), static_cast( making->difficulty ) * 1.25 ); if( batch_size > 1 ) { add_msg( m_info, _( "%s assists with crafting..." ), elem->name.c_str() ); } @@ -577,8 +571,8 @@ void player::complete_craft() //NPCs around you understand the skill used better } else { elem->practice( making->skill_used, - ( int )( ( making->difficulty * 15 + 10 ) * batch_mult * .15 ), - ( int )making->difficulty * 1.25 ); + static_cast( ( making->difficulty * 15 + 10 ) * batch_mult * .15 ), + static_cast( making->difficulty ) * 1.25 ); add_msg( m_info, _( "%s watches you craft..." ), elem->name.c_str() ); } } @@ -615,7 +609,7 @@ void player::complete_craft() const time_point now = calendar::turn; time_point start_turn = now; tripoint craft_pos = pos(); - if( activity.values.size() > 1 && activity.coords.size() > 0 ) { + if( activity.values.size() > 1 && !activity.coords.empty() ) { start_turn = activity.values.at( 1 ); craft_pos = activity.coords.at( 0 ); } else { @@ -652,7 +646,7 @@ void player::complete_craft() // tools, and it's usually the first item in a list of tools so if this // does get heated we'll find it right away. bool should_heat = false; - if( newits.size() && newits.front().is_food() ) { + if( !newits.empty() && newits.front().is_food() ) { const requirement_data::alter_tool_comp_vector &tool_lists = making->requirements().get_tools(); for( const std::vector &tools : tool_lists ) { for( const tool_comp &t : tools ) { @@ -719,7 +713,16 @@ void player::complete_craft() if( newit.goes_bad() ) { newit.set_relative_rot( max_relative_rot ); + } else { + if( newit.is_container() ) { + for( item &in : newit.contents ) { + if( in.goes_bad() ) { + in.set_relative_rot( max_relative_rot ); + } + } + } } + if( should_heat ) { newit.heat_up(); } else { @@ -1009,7 +1012,7 @@ player::select_tool_component( const std::vector &tools, int batch, i uilist tmenu( hotkeys ); for( auto &map_ha : map_has ) { if( item::find_type( map_ha.type )->maximum_charges() > 1 ) { - std::string tmpStr = string_format( "%s (%d/%d charges nearby)", + std::string tmpStr = string_format( _( "%s (%d/%d charges nearby)" ), item::nname( map_ha.type ), ( map_ha.count * batch ), map_inv.charges_of( map_ha.type ) ); @@ -1021,7 +1024,7 @@ player::select_tool_component( const std::vector &tools, int batch, i } for( auto &player_ha : player_has ) { if( item::find_type( player_ha.type )->maximum_charges() > 1 ) { - std::string tmpStr = string_format( "%s (%d/%d charges on person)", + std::string tmpStr = string_format( _( "%s (%d/%d charges on person)" ), item::nname( player_ha.type ), ( player_ha.count * batch ), charges_of( player_ha.type ) ); diff --git a/src/crafting.h b/src/crafting.h index 4d90709bb44fd..884a9121c561b 100644 --- a/src/crafting.h +++ b/src/crafting.h @@ -3,7 +3,6 @@ #define CRAFTING_H #include -#include class item; class inventory; diff --git a/src/crafting_gui.cpp b/src/crafting_gui.cpp index e41df8ced2f31..4f85f9e699801 100644 --- a/src/crafting_gui.cpp +++ b/src/crafting_gui.cpp @@ -1,29 +1,28 @@ #include "crafting_gui.h" #include "cata_utility.h" +#include "catacharset.h" #include "crafting.h" +#include "debug.h" +#include "game.h" +#include "input.h" +#include "itype.h" +#include "json.h" +#include "output.h" +#include "player.h" #include "recipe_dictionary.h" #include "requirements.h" -#include "player.h" -#include "itype.h" -#include "input.h" -#include "game.h" -#include "translations.h" -#include "string_formatter.h" #include "skill.h" -#include "catacharset.h" -#include "output.h" -#include "json.h" +#include "string_formatter.h" #include "string_input_popup.h" +#include "translations.h" #include "ui.h" #include "uistate.h" -#include "debug.h" - #include +#include #include #include -#include enum TAB_MODE { NORMAL, @@ -57,7 +56,6 @@ std::string get_cat_name( const std::string &prefixed_name ) void load_recipe_category( JsonObject &jsobj ) { - JsonArray subcats; std::string category = jsobj.get_string( "id" ); if( category.find( "CC_" ) != 0 ) { @@ -69,7 +67,7 @@ void load_recipe_category( JsonObject &jsobj ) std::string cat_name = get_cat_name( category ); craft_subcat_list[category] = std::vector(); - subcats = jsobj.get_array( "recipe_subcategories" ); + JsonArray subcats = jsobj.get_array( "recipe_subcategories" ); while( subcats.has_more() ) { std::string subcat_id = subcats.next_string(); if( subcat_id.find( "CSC_" + cat_name + "_" ) != 0 && subcat_id != "CSC_ALL" ) { @@ -184,8 +182,8 @@ const recipe *select_crafting_recipe( int &batch_size ) //preserves component color printout between mode rotations nc_color rotated_color = c_white; int previous_item_line = -1; - std::string previous_tab = ""; - std::string previous_subtab = ""; + std::string previous_tab; + std::string previous_subtab; item tmp; int line = 0; int ypos = 0; @@ -197,7 +195,7 @@ const recipe *select_crafting_recipe( int &batch_size ) bool show_hidden = false; int batch_line = 0; int display_mode = 0; - const recipe *chosen = NULL; + const recipe *chosen = nullptr; std::vector thisItem; std::vector dummy; @@ -212,6 +210,7 @@ const recipe *select_crafting_recipe( int &batch_size ) ctxt.register_action( "NEXT_TAB" ); ctxt.register_action( "FILTER" ); ctxt.register_action( "RESET_FILTER" ); + ctxt.register_action( "TOGGLE_FAVORITE" ); ctxt.register_action( "HELP_RECIPE" ); ctxt.register_action( "HELP_KEYBINDINGS" ); ctxt.register_action( "CYCLE_BATCH" ); @@ -220,7 +219,7 @@ const recipe *select_crafting_recipe( int &batch_size ) const inventory &crafting_inv = g->u.crafting_inventory(); const std::vector helpers = g->u.get_crafting_helpers(); - std::string filterstring = ""; + std::string filterstring; const auto &available_recipes = g->u.get_available_recipes( crafting_inv, &helpers ); std::map availability_cache; @@ -254,9 +253,7 @@ const recipe *select_crafting_recipe( int &batch_size ) } } else { std::vector picking; - if( filterstring.empty() ) { - picking = available_recipes.in_category( tab.cur(), subtab.cur() != "CSC_ALL" ? subtab.cur() : "" ); - } else { + if( !filterstring.empty() ) { auto qry = trim( filterstring ); if( qry.size() > 2 && qry[1] == ':' ) { switch( qry[0] ) { @@ -272,6 +269,10 @@ const recipe *select_crafting_recipe( int &batch_size ) picking = available_recipes.search( qry.substr( 2 ), recipe_subset::search_type::skill ); break; + case 'p': + picking = available_recipes.search( qry.substr( 2 ), recipe_subset::search_type::primary_skill ); + break; + case 'Q': picking = available_recipes.search( qry.substr( 2 ), recipe_subset::search_type::quality ); break; @@ -280,6 +281,11 @@ const recipe *select_crafting_recipe( int &batch_size ) picking = available_recipes.search( qry.substr( 2 ), recipe_subset::search_type::quality_result ); break; + case 'd': + picking = available_recipes.search( qry.substr( 2 ), + recipe_subset::search_type::description_result ); + break; + case 'm': { auto &learned = g->u.get_learned_recipes(); if( query_is_yes( qry ) ) { @@ -307,6 +313,12 @@ const recipe *select_crafting_recipe( int &batch_size ) } else { picking = available_recipes.search( qry ); } + } else if( subtab.cur() == "CSC_*_FAVORITE" ) { + picking = available_recipes.favorite(); + } else if( subtab.cur() == "CSC_*_RECENT" ) { + picking = available_recipes.recent(); + } else { + picking = available_recipes.in_category( tab.cur(), subtab.cur() != "CSC_ALL" ? subtab.cur() : "" ); } current.clear(); @@ -327,13 +339,15 @@ const recipe *select_crafting_recipe( int &batch_size ) } } - std::stable_sort( current.begin(), current.end(), []( const recipe * a, const recipe * b ) { - return b->difficulty < a->difficulty; - } ); + if( subtab.cur() != "CSC_*_RECENT" ) { + std::stable_sort( current.begin(), current.end(), []( const recipe * a, const recipe * b ) { + return b->difficulty < a->difficulty; + } ); - std::stable_sort( current.begin(), current.end(), [&]( const recipe * a, const recipe * b ) { - return availability_cache[a] && !availability_cache[b]; - } ); + std::stable_sort( current.begin(), current.end(), [&]( const recipe * a, const recipe * b ) { + return availability_cache[a] && !availability_cache[b]; + } ); + } std::transform( current.begin(), current.end(), std::back_inserter( available ), [&]( const recipe * e ) { @@ -362,20 +376,20 @@ const recipe *select_crafting_recipe( int &batch_size ) wprintz( w_data, c_white, " " ); if( !filterstring.empty() ) { wprintz( w_data, c_white, - _( "[E]: Describe, [F]ind, [R]eset, [m]ode, [s]how/hide, Re[L]ated, %s [?] keybindings" ), + _( "[E]: Describe, [F]ind, [R]eset, [m]ode, [s]how/hide, Re[L]ated, [*]Favorite, %s [?] keybindings" ), ( batch ) ? _( "cancel [b]atch" ) : _( "[b]atch" ) ); } else { wprintz( w_data, c_white, - _( "[E]: Describe, [F]ind, [m]ode, [s]how/hide, Re[L]ated, %s [?] keybindings" ), + _( "[E]: Describe, [F]ind, [m]ode, [s]how/hide, Re[L]ated, [*]Favorite, %s [?] keybindings" ), ( batch ) ? _( "cancel [b]atch" ) : _( "[b]atch" ) ); } } else { if( !filterstring.empty() ) { mvwprintz( w_data, dataLines + 1, 5, c_white, - _( "[E]: Describe, [F]ind, [R]eset, [m]ode, [s]how/hide, Re[L]ated, [b]atch [?] keybindings" ) ); + _( "[E]: Describe, [F]ind, [R]eset, [m]ode, [s]how/hide, Re[L]ated, [*]Favorite, [b]atch [?] keybindings" ) ); } else { mvwprintz( w_data, dataLines + 1, 5, c_white, - _( "[E]: Describe, [F]ind, [m]ode, [s]how/hide, Re[L]ated, [b]atch [?] keybindings" ) ); + _( "[E]: Describe, [F]ind, [m]ode, [s]how/hide, Re[L]ated, [*]Favorite, [b]atch [?] keybindings" ) ); } mvwprintz( w_data, dataLines + 2, 5, c_white, _( "Press to attempt to craft object." ) ); @@ -640,7 +654,7 @@ const recipe *select_crafting_recipe( int &batch_size ) popup( _( "You can't do that!" ) ); } else if( !g->u.check_eligible_containers_for_crafting( *current[line], ( batch ) ? line + 1 : 1 ) ) { - ; // popup is already inside check + // popup is already inside check } else { chosen = current[line]; batch_size = ( batch ) ? line + 1 : 1; @@ -665,8 +679,11 @@ const recipe *select_crafting_recipe( int &batch_size ) }; std::vector prefixes = { { 'q', _( "metal sawing" ), _( "quality of resulting item" ) }, + //~ Example result description search term + { 'd', _( "reach attack" ), _( "full description of resulting item (slow)" ) }, { 'c', _( "two by four" ), _( "component required to craft" ) }, - { 's', _( "cooking" ), _( "skill required to craft" ) }, + { 'p', _( "tailoring" ), _( "primary skill used to craft" ) }, + { 's', _( "cooking" ), _( "any skill used to craft" ) }, { 'Q', _( "fine bolt turning" ), _( "quality required to craft" ) }, { 't', _( "soldering iron" ), _( "tool required to craft" ) }, { 'h', _( "yes" ), _( "recipes which are hidden or not" ) }, @@ -728,6 +745,18 @@ const recipe *select_crafting_recipe( int &batch_size ) keepline = true; } redraw = true; + } else if( action == "TOGGLE_FAVORITE" ) { + keepline = true; + redraw = true; + if( current.empty() ) { + popup( _( "Nothing selected!" ) ); + continue; + } + if( uistate.favorite_recipes.find( current[line]->ident() ) != uistate.favorite_recipes.end() ) { + uistate.favorite_recipes.erase( current[line]->ident() ); + } else { + uistate.favorite_recipes.insert( current[line]->ident() ); + } } else if( action == "HIDE_SHOW_RECIPE" ) { if( current.empty() ) { popup( _( "Nothing selected!" ) ); @@ -809,7 +838,7 @@ std::string peek_related_recipe( const recipe *current, const recipe_subset &ava rel_menu.settext( _( "Related recipes:" ) ); rel_menu.query(); - if( rel_menu.ret != UIMENU_CANCEL ) { + if( rel_menu.ret != UILIST_CANCEL ) { std::wstring wstr_recipe_name = utf8_to_wstr( rel_menu.entries[ rel_menu.ret ].txt ); return wstr_to_utf8( wstr_recipe_name.substr( 2 ) ); // 2 = prefix length } @@ -821,7 +850,7 @@ int related_menu_fill( uilist &rmenu, const std::vector> &related_recipes, const recipe_subset &available ) { - const std::vector &entries = rmenu.entries; + const std::vector &entries = rmenu.entries; int np_last = entries.empty() ? -1 : entries.back().retval; if( related_recipes.empty() ) { @@ -879,8 +908,9 @@ static bool query_is_yes( const std::string &query ) { const std::string subquery = query.substr( 2 ); - return ( ( subquery == "yes" ) || ( subquery == "y" ) || ( subquery == "1" ) || - ( subquery == "true" ) || ( subquery == "t" ) || ( subquery == "on" ) ); + return subquery == "yes" || subquery == "y" || subquery == "1" || + subquery == "true" || subquery == "t" || subquery == "on" || + subquery == _( "yes" ); } static void draw_hidden_amount( const catacurses::window &w, const int margin_y, int amount ) diff --git a/src/crash.cpp b/src/crash.cpp index 3a853f91f54d6..834ddc38ef5c2 100644 --- a/src/crash.cpp +++ b/src/crash.cpp @@ -9,7 +9,11 @@ #include #ifdef TILES -#include +# if defined(_MSC_VER) && defined(USE_VCPKG) +# include +# else +# include +# endif #endif #include "crash.h" @@ -303,7 +307,7 @@ void init_crash_handlers() char const *type; char const *msg; try { - auto &&ex = std::current_exception(); + auto &&ex = std::current_exception(); // *NOPAD* if( ex ) { std::rethrow_exception( ex ); } else { diff --git a/src/creature.cpp b/src/creature.cpp index 3af0a8ccd74d4..9111fe49a6282 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -1,25 +1,25 @@ #include "creature.h" + #include "item.h" -#include "output.h" +#include "anatomy.h" +#include "debug.h" +#include "effect.h" +#include "field.h" #include "game.h" +#include "itype.h" #include "map.h" #include "messages.h" -#include "rng.h" -#include "translations.h" #include "monster.h" -#include "vpart_position.h" -#include "effect.h" #include "mtype.h" #include "npc.h" -#include "itype.h" -#include "vehicle.h" -#include "debug.h" -#include "field.h" +#include "output.h" #include "projectile.h" -#include "anatomy.h" +#include "rng.h" +#include "translations.h" +#include "vehicle.h" +#include "vpart_position.h" #include -#include #include #include @@ -56,7 +56,7 @@ Creature::Creature() { moves = 0; pain = 0; - killer = NULL; + killer = nullptr; speed_base = 100; underwater = false; @@ -202,7 +202,9 @@ bool Creature::sees( const tripoint &t, bool is_player ) const } if( is_player ) { // Special case monster -> player visibility, forcing it to be symmetric with player vision. - return range >= wanted_range && + const float player_visibility_factor = g->u.visibility() / 100.0f; + int adj_range = std::floor( range * player_visibility_factor ); + return adj_range >= wanted_range && g->m.get_cache_ref( pos().z ).seen_cache[pos().x][pos().y] > LIGHT_TRANSPARENCY_SOLID; } else { return g->m.sees( pos(), t, range ); @@ -493,7 +495,7 @@ void Creature::deal_projectile_attack( Creature *source, dealt_projectile_attack double damage_mult = 1.0; - std::string message = ""; + std::string message; game_message_type gmtSCTcolor = m_neutral; if( goodhit < accuracy_headshot ) { @@ -536,7 +538,8 @@ void Creature::deal_projectile_attack( Creature *source, dealt_projectile_attack impact.mult_damage( damage_mult ); if( proj_effects.count( "NOGIB" ) > 0 ) { - float dmg_ratio = ( float )impact.total_damage() / get_hp_max( player::bp_to_hp( bp_hit ) ); + float dmg_ratio = static_cast( impact.total_damage() ) / get_hp_max( player::bp_to_hp( + bp_hit ) ); if( dmg_ratio > 1.25f ) { impact.mult_damage( 1.0f / dmg_ratio ); } @@ -1452,7 +1455,7 @@ std::pair const &Creature::get_attitude_ui_data( Attitude } }; - if( ( int ) att < 0 || ( int ) att >= ( int ) strings.size() ) { + if( static_cast( att ) < 0 || static_cast( att ) >= static_cast( strings.size() ) ) { return strings.back(); } diff --git a/src/creature.h b/src/creature.h index 52dc8839928ee..8f9228cb87d34 100644 --- a/src/creature.h +++ b/src/creature.h @@ -2,17 +2,16 @@ #ifndef CREATURE_H #define CREATURE_H -#include "pimpl.h" #include "bodypart.h" -#include "string_id.h" +#include "pimpl.h" #include "string_formatter.h" +#include "string_id.h" -#include -#include +#include #include -#include #include -#include +#include +#include enum game_message_type : int; class nc_color; @@ -272,7 +271,7 @@ class Creature */ virtual bool is_immune_field( const field_id ) const { return false; - }; + } /** Returns multiplier on fall damage at low velocity (knockback/pit/1 z-level, not 5 z-levels) */ virtual float fall_damage_mod() const = 0; @@ -401,10 +400,10 @@ class Creature // TODO: replumb this to use a std::string along with monster flags. virtual bool has_flag( const m_flag ) const { return false; - }; + } virtual bool uncanny_dodge() { return false; - }; + } virtual body_part get_random_body_part( bool main = false ) const = 0; /** @@ -615,8 +614,8 @@ class Creature Creature &operator=( Creature && ) = default; protected: - virtual void on_stat_change( const std::string &, int ) {}; - virtual void on_effect_int_change( const efftype_id &, int, body_part ) {}; + virtual void on_stat_change( const std::string &, int ) {} + virtual void on_effect_int_change( const efftype_id &, int, body_part ) {} public: body_part select_body_part( Creature *source, int hit_roll ) const; diff --git a/src/creature_tracker.cpp b/src/creature_tracker.cpp index 3d5f3cfafb178..0ae597a899e4d 100644 --- a/src/creature_tracker.cpp +++ b/src/creature_tracker.cpp @@ -1,11 +1,11 @@ #include "creature_tracker.h" -#include "pathfinding.h" -#include "monster.h" -#include "mongroup.h" -#include "string_formatter.h" + #include "debug.h" -#include "mtype.h" #include "item.h" +#include "mongroup.h" +#include "monster.h" +#include "mtype.h" +#include "string_formatter.h" #include @@ -129,8 +129,6 @@ bool Creature_tracker::update_pos( const monster &critter, const tripoint &new_p rebuild_cache(); return false; } - - return false; } void Creature_tracker::remove_from_location_map( const monster &critter ) diff --git a/src/creature_tracker.h b/src/creature_tracker.h index fbb5f6a021deb..12f40a31fcc3e 100644 --- a/src/creature_tracker.h +++ b/src/creature_tracker.h @@ -5,8 +5,8 @@ #include "enums.h" #include -#include #include +#include class monster; class JsonIn; diff --git a/src/cursesdef.h b/src/cursesdef.h index 172da09da7646..3fcf4330ccfad 100644 --- a/src/cursesdef.h +++ b/src/cursesdef.h @@ -5,7 +5,6 @@ #include "string_formatter.h" #include -#include #include class nc_color; diff --git a/src/cursesport.cpp b/src/cursesport.cpp index abd04305c8087..2cee1d6c14e36 100644 --- a/src/cursesport.cpp +++ b/src/cursesport.cpp @@ -1,13 +1,12 @@ #if (defined TILES || defined _WIN32 || defined WINDOWS) -#include "animation.h" +#include "cursesport.h" + #include "catacharset.h" #include "color.h" -#include "cursesport.h" #include "cursesdef.h" #include "game_ui.h" #include "output.h" -#include // strlen #include /** @@ -564,8 +563,7 @@ void catacurses::wattroff( const window &win_, int ) void catacurses::waddch( const window &win, const chtype ch ) { - char charcode; - charcode = ch; + char charcode = ch; switch( ch ) { //LINE_NESW - X for on, O for off case LINE_XOXO: @@ -602,7 +600,7 @@ void catacurses::waddch( const window &win, const chtype ch ) charcode = LINE_XXXX_C; break; default: - charcode = ( char )ch; + charcode = static_cast( ch ); break; } char buffer[2] = { charcode, '\0' }; diff --git a/src/cursesport.h b/src/cursesport.h index 51d8628d7833e..92d7fc117db9b 100644 --- a/src/cursesport.h +++ b/src/cursesport.h @@ -2,9 +2,9 @@ #ifndef CATACURSE_H #define CATACURSE_H -#include #include #include +#include class nc_color; diff --git a/src/damage.cpp b/src/damage.cpp index 9d0db1717a85b..816d7c8ab1fa7 100644 --- a/src/damage.cpp +++ b/src/damage.cpp @@ -1,13 +1,13 @@ #include "damage.h" + +#include "debug.h" #include "item.h" +#include "json.h" #include "monster.h" -#include "debug.h" -#include "map_iterator.h" #include "mtype.h" -#include "json.h" -#include #include +#include #include bool damage_unit::operator==( const damage_unit &other ) const diff --git a/src/damage.h b/src/damage.h index 801d4d25bbc63..f7ee1bcf2e7a0 100644 --- a/src/damage.h +++ b/src/damage.h @@ -4,11 +4,9 @@ #include "enums.h" #include "string_id.h" + #include -#include #include -#include -#include class item; class monster; diff --git a/src/debug.cpp b/src/debug.cpp index 2d5f1c76a74f9..4ec21de9be9ae 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -1,21 +1,24 @@ #include "debug.h" -#include "path_info.h" -#include "output.h" -#include "filesystem.h" + #include "cursesdef.h" +#include "filesystem.h" +#include "get_version.h" #include "input.h" -#include +#include "output.h" +#include "path_info.h" + +#include #include -#include #include +#include #include -#include -#include -#include +#include +#include #include +#include +#include #include #include -#include #ifndef _MSC_VER #include @@ -26,13 +29,18 @@ #include "platform_win.h" #include #else +#include #include -#include +#include #endif #endif #ifdef TILES -#include +# if defined(_MSC_VER) && defined(USE_VCPKG) +# include +# else +# include +# endif #endif // TILES // Static defines {{{1 @@ -205,7 +213,7 @@ void *tracePtrs[TRACE_SIZE]; // --------------------------------------------------------------------- struct NullBuf : public std::streambuf { - NullBuf() {} + NullBuf() = default; int overflow( int c ) override { return c; } @@ -267,6 +275,7 @@ void DebugFile::init( const std::string &filename ) file.open( filename.c_str(), std::ios::out | std::ios::app ); file << "\n\n-----------------------------------------\n"; currentTime() << " : Starting log."; + DebugLog( D_INFO, D_MAIN ) << "Cataclysm DDA version " << getVersionString(); if( rename_failed ) { DebugLog( D_ERROR, DC_ALL ) << "Moving the previous log file to " << oldfile << " failed.\n" << "Check the file permissions. This program will continue to use the previous log file."; @@ -444,6 +453,93 @@ bool debug_is_safe_string( const char *start, const char *finish ) return std::all_of( start, finish, is_safe_char ); } +std::string debug_resolve_binary( const std::string &binary, std::ostream &out ) +{ + if( binary.find( '/' ) != std::string::npos ) { + // The easy case, where we have a path to the binary + return binary; + } + // If the binary name has no slashes then it was found via PATH + // lookup, and we need to do the same to pass the correct name + // to addr2line. An alternative would be to use /proc/self/exe, + // but that's Linux-specific. + // Obviously this will not work in all situations, but it will + // usually do the right thing. + const char *path = std::getenv( "PATH" ); + if( !path ) { + // Should be impossible, but I want to avoid segfaults + // in the crash handler. + out << "\tbacktrace: PATH not set\n"; + return binary; + } + + for( const std::string &path_elem : string_split( path, ':' ) ) { + if( path_elem.empty() ) { + continue; + } + std::string candidate = path_elem + "/" + binary; + if( 0 == access( candidate.c_str(), X_OK ) ) { + return candidate; + } + } + + return binary; +} + +cata::optional debug_compute_load_offset( + const std::string &binary, const std::string &symbol, + const std::string &offset_within_symbol_s, void *address, std::ostream &out ) +{ + // I don't know a good way to compute this offset. This + // seems to work, but I'm not sure how portable it is. + // + // backtrace_symbols has provided the address of a symbol as loaded + // in memory. We use nm to compute the address of the same symbol + // in the binary file, and take the difference of the two. + // + // There are platform-specific functions which can do similar + // things (e.g. dladdr1 in GNU libdl) but this approach might + // perhaps be more portable and adds no link-time dependencies. + + uintptr_t offset_within_symbol = std::stoull( offset_within_symbol_s, 0, 0 ); + std::string string_sought = " " + symbol; + + // We need to try calling nm in two different ways, because one + // works for executables and the other for libraries. + const char *nm_variants[] = { "nm", "nm -D" }; + for( const char *nm_variant : nm_variants ) { + std::ostringstream cmd; + cmd << nm_variant << ' ' << binary << " 2>&1"; + FILE *nm = popen( cmd.str().c_str(), "re" ); + if( !nm ) { + out << "\tbacktrace: popen(nm) failed\n"; + return cata::nullopt; + } + + char buf[1024]; + while( fgets( buf, sizeof( buf ), nm ) ) { + std::string line( buf ); + while( !line.empty() && std::isspace( line.end()[-1] ) ) { + line.erase( line.end() - 1 ); + } + if( string_ends_with( line, string_sought ) ) { + std::istringstream line_is( line ); + uintptr_t symbol_address; + line_is >> std::hex >> symbol_address; + if( line_is ) { + pclose( nm ); + return reinterpret_cast( address ) - + ( symbol_address + offset_within_symbol ); + } + } + } + + pclose( nm ); + } + + return cata::nullopt; +} + void debug_write_backtrace( std::ostream &out ) { #if defined _WIN32 || defined _WIN64 @@ -480,7 +576,7 @@ void debug_write_backtrace( std::ostream &out ) int count = backtrace( tracePtrs, TRACE_SIZE ); char **funcNames = backtrace_symbols( tracePtrs, count ); for( int i = 0; i < count; ++i ) { - out << "\n\t(" << funcNames[i] << "), "; + out << "\n\t" << funcNames[i]; } out << "\n\n\tAttempting to repeat stack trace using debug symbols...\n"; // Try to print the backtrace again, but this time using addr2line @@ -492,14 +588,26 @@ void debug_write_backtrace( std::ostream &out ) // addresses as possible in each commandline. To that end, we track // the binary of the frame and issue a command whenever that // changes. - std::string addresses; + std::vector addresses; + std::map load_offsets; std::string last_binary_name; - auto call_addr2line = [&out]( const std::string & binary, const std::string & addresses ) { - std::string cmd = "addr2line -e " + binary + " -f -C " + addresses; - FILE *addr2line = popen( cmd.c_str(), "re" ); + auto call_addr2line = [&out, &load_offsets]( const std::string & binary, + const std::vector &addresses ) { + const auto load_offset_it = load_offsets.find( binary ); + const uintptr_t load_offset = ( load_offset_it == load_offsets.end() ) ? 0 : + load_offset_it->second; + + std::ostringstream cmd; + cmd.imbue( std::locale::classic() ); + cmd << "addr2line -i -e " << binary << " -f -C" << std::hex; + for( uintptr_t address : addresses ) { + cmd << " 0x" << ( address - load_offset ); + } + cmd << " 2>&1"; + FILE *addr2line = popen( cmd.str().c_str(), "re" ); if( addr2line == nullptr ) { - out << "backtrace: popen(addr2line) failed\n"; + out << "\tbacktrace: popen(addr2line) failed\n"; return false; } char buf[1024]; @@ -520,39 +628,63 @@ void debug_write_backtrace( std::ostream &out ) if( 0 != pclose( addr2line ) ) { // Most likely reason is that addr2line is not installed, so // in this case we give up and don't try any more frames. - out << "backtrace: addr2line failed\n"; + out << "\tbacktrace: addr2line failed\n"; return false; } return true; }; for( int i = 0; i < count; ++i ) { - // We want to call addr2Line to convert the address to a - // useful format + // An example string from backtrace_symbols is + // ./cataclysm-tiles(_Z21debug_write_backtraceRSo+0x3d) [0x55ddebfa313d] + // From that we need to extract the binary name, the symbol + // name, and the offset within the symbol. We don't need to + // extract the address (the last thing) because that's already + // available in tracePtrs. + auto funcName = funcNames[i]; const auto funcNameEnd = funcName + std::strlen( funcName ); const auto binaryEnd = std::find( funcName, funcNameEnd, '(' ); - auto addressStart = std::find( funcName, funcNameEnd, '[' ); - auto addressEnd = std::find( addressStart, funcNameEnd, ']' ); - if( binaryEnd == funcNameEnd || addressEnd == funcNameEnd ) { - out << "backtrace: Could not extract binary name and address from line\n"; - continue; - } - ++addressStart; - - if( !debug_is_safe_string( addressStart, addressEnd ) ) { - out << "backtrace: Address not safe\n"; + if( binaryEnd == funcNameEnd ) { + out << "\tbacktrace: Could not extract binary name from line\n"; continue; } if( !debug_is_safe_string( funcName, binaryEnd ) ) { - out << "backtrace: Binary name not safe\n"; + out << "\tbacktrace: Binary name not safe\n"; continue; } std::string binary_name( funcName, binaryEnd ); + binary_name = debug_resolve_binary( binary_name, out ); + + // For each binary we need to determine its offset relative to + // its natural load address in order to undo ASLR and pass the + // correct addresses to addr2line + auto load_offset = load_offsets.find( binary_name ); + if( load_offset == load_offsets.end() ) { + const auto symbolNameStart = binaryEnd + 1; + const auto symbolNameEnd = std::find( symbolNameStart, funcNameEnd, '+' ); + const auto offsetEnd = std::find( symbolNameStart, funcNameEnd, ')' ); + + if( symbolNameEnd < offsetEnd && offsetEnd < funcNameEnd ) { + const auto offsetStart = symbolNameEnd + 1; + std::string symbol_name( symbolNameStart, symbolNameEnd ); + std::string offset_within_symbol( offsetStart, offsetEnd ); + + cata::optional offset = + debug_compute_load_offset( binary_name, symbol_name, offset_within_symbol, + tracePtrs[i], out ); + if( offset ) { + load_offsets.emplace( binary_name, *offset ); + } + } + } if( !last_binary_name.empty() && binary_name != last_binary_name ) { + // We have reached the end of the sequence of addresses + // within this binary, so call addr2line before proceeding + // to the next binary. if( !call_addr2line( last_binary_name, addresses ) ) { addresses.clear(); break; @@ -562,8 +694,7 @@ void debug_write_backtrace( std::ostream &out ) } last_binary_name = binary_name; - addresses += " "; - addresses.insert( addresses.end(), addressStart, addressEnd ); + addresses.push_back( reinterpret_cast( tracePtrs[i] ) ); } if( !addresses.empty() ) { diff --git a/src/debug_menu.cpp b/src/debug_menu.cpp index 0772d1c48eff2..6b98bf4ea991b 100644 --- a/src/debug_menu.cpp +++ b/src/debug_menu.cpp @@ -4,19 +4,19 @@ #include "coordinate_conversions.h" #include "game.h" #include "messages.h" -#include "overmap.h" -#include "overmap_ui.h" -#include "player.h" -#include "ui.h" +#include "mission.h" +#include "morale_types.h" #include "npc.h" #include "npc_class.h" #include "output.h" +#include "overmap.h" +#include "overmap_ui.h" #include "overmapbuffer.h" -#include "vitamin.h" -#include "mission.h" +#include "player.h" #include "string_formatter.h" #include "string_input_popup.h" -#include "morale_types.h" +#include "ui.h" +#include "vitamin.h" #include #include @@ -398,7 +398,7 @@ void character_edit_menu() } types.query(); - if( types.ret >= 0 && types.ret < ( int )mts.size() ) { + if( types.ret >= 0 && types.ret < static_cast( mts.size() ) ) { np->add_new_mission( mission::reserve_new( mts[ types.ret ]->id, np->getID() ) ); } } @@ -427,7 +427,7 @@ void character_edit_menu() } classes.query(); - if( classes.ret < ( int )ids.size() && classes.ret >= 0 ) { + if( classes.ret < static_cast( ids.size() ) && classes.ret >= 0 ) { np->randomize( ids[ classes.ret ] ); } } @@ -468,10 +468,10 @@ std::string mission_debug::describe( const mission &m ) void add_header( uilist &mmenu, const std::string &str ) { - if( mmenu.entries.size() != 0 ) { + if( !mmenu.entries.empty() ) { mmenu.addentry( -1, false, -1, "" ); } - uimenu_entry header( -1, false, -1, str, c_yellow, c_yellow ); + uilist_entry header( -1, false, -1, str, c_yellow, c_yellow ); header.force_color = true; mmenu.entries.push_back( header ); } @@ -506,7 +506,7 @@ void mission_debug::edit_npc( npc &who ) } mmenu.query(); - if( mmenu.ret < 0 || mmenu.ret >= ( int )all_missions.size() ) { + if( mmenu.ret < 0 || mmenu.ret >= static_cast( all_missions.size() ) ) { return; } @@ -539,7 +539,7 @@ void mission_debug::edit_player() } mmenu.query(); - if( mmenu.ret < 0 || mmenu.ret >= ( int )all_missions.size() ) { + if( mmenu.ret < 0 || mmenu.ret >= static_cast( all_missions.size() ) ) { return; } diff --git a/src/debug_menu.h b/src/debug_menu.h index bffb3354a7cbc..aac4e3f1e9398 100644 --- a/src/debug_menu.h +++ b/src/debug_menu.h @@ -1,5 +1,6 @@ #pragma once #ifndef DEBUG_MENU_H +#define DEBUG_MENU_H #include "enums.h" diff --git a/src/defense.cpp b/src/defense.cpp index 86b4ed69f7fe0..f0d904f160871 100644 --- a/src/defense.cpp +++ b/src/defense.cpp @@ -1,32 +1,28 @@ #include "gamemode.h" + #include "action.h" #include "color.h" -#include "enums.h" -#include "game.h" -#include "map.h" +#include "construction.h" #include "debug.h" +#include "game.h" +#include "input.h" +#include "item_group.h" #include "itype.h" -#include "mtype.h" -#include "overmapbuffer.h" -#include "crafting.h" -#include "recipe_dictionary.h" -#include "monstergenerator.h" -#include "construction.h" -#include "messages.h" +#include "map.h" #include "map_iterator.h" -#include "rng.h" +#include "messages.h" #include "mongroup.h" -#include "translations.h" -#include "input.h" -#include "overmap.h" +#include "monstergenerator.h" +#include "mtype.h" #include "output.h" +#include "overmap.h" +#include "overmapbuffer.h" #include "player.h" -#include "string_input_popup.h" +#include "rng.h" #include "string_formatter.h" -#include "item_group.h" +#include "string_input_popup.h" +#include "translations.h" -#include -#include #include #include diff --git a/src/dependency_tree.cpp b/src/dependency_tree.cpp index f85a78c12b997..7bdc7fdc76248 100644 --- a/src/dependency_tree.cpp +++ b/src/dependency_tree.cpp @@ -1,10 +1,11 @@ #include "dependency_tree.h" -#include -#include #include "debug.h" #include "output.h" +#include +#include + std::array error_keyvals = {{ "Missing Dependency(ies): ", "", "" }}; // dependency_node @@ -111,7 +112,7 @@ void dependency_node::inherit_errors() nodes_to_check.pop(); // add check errors - if( check->errors().size() > 0 ) { + if( !check->errors().empty() ) { std::map > cerrors = check->errors(); for( auto &cerror : cerrors ) { std::vector node_errors = cerror.second; @@ -360,7 +361,7 @@ dependency_node *dependency_tree::get_node( mod_id key ) if( iter != master_node_map.end() ) { return &iter->second; } - return NULL; + return nullptr; } // makes sure to set up Cycle errors properly! diff --git a/src/dependency_tree.h b/src/dependency_tree.h index bcc1280dd3f6f..aa5595e350273 100644 --- a/src/dependency_tree.h +++ b/src/dependency_tree.h @@ -4,13 +4,9 @@ #include "string_id.h" -#include #include #include -#include -#include -#include -#include +#include struct MOD_INFORMATION; using mod_id = string_id; @@ -77,7 +73,6 @@ class dependency_tree dependency_node *get_node( mod_id key ); std::map master_node_map; - protected: private: // Don't need to be called directly. Only reason to call these are during initialization phase. void build_node_map( std::map > key_dependency_map ); diff --git a/src/descriptions.cpp b/src/descriptions.cpp index c36724a0ca81e..939efe6234ba6 100644 --- a/src/descriptions.cpp +++ b/src/descriptions.cpp @@ -1,16 +1,15 @@ -#include - #include "calendar.h" #include "game.h" -#include "output.h" -#include "player.h" -#include "monster.h" +#include "harvest.h" +#include "input.h" #include "map.h" #include "mapdata.h" +#include "output.h" +#include "player.h" #include "string_formatter.h" -#include "input.h" #include "ui.h" -#include "harvest.h" + +#include const skill_id skill_survival( "survival" ); @@ -141,7 +140,7 @@ std::string map_data_common_t::extended_description() const continue; } - identical_harvest.insert( std::make_pair( hv, ( season_type )season ) ); + identical_harvest.insert( std::make_pair( hv, static_cast( season ) ) ); } // Now print them in order of seasons // @todo: Highlight current season diff --git a/src/dialogue.h b/src/dialogue.h index 3758d2b3ae66d..58b13adbc693b 100644 --- a/src/dialogue.h +++ b/src/dialogue.h @@ -2,18 +2,13 @@ #ifndef DIALOGUE_H #define DIALOGUE_H +#include "dialogue_win.h" #include "npc.h" #include "npc_class.h" -#include "output.h" -#include "game.h" -#include "map.h" -#include "npctalk.h" -#include "dialogue_win.h" -#include -#include -#include #include +#include +#include class JsonObject; class mission; @@ -153,10 +148,9 @@ struct talk_response { /** * Sets an effect to a function object and consequence to explicitly given one. */ - void set_effect_consequence( effect_fun_t eff, dialogue_consequence con ); + void set_effect_consequence( const effect_fun_t &eff, dialogue_consequence con ); void set_effect_consequence( std::function ptr, dialogue_consequence con ); - void load_effect( JsonObject &jo ); void parse_sub_effect( JsonObject jo ); void parse_string_effect( const std::string &type, JsonObject &jo ); @@ -349,8 +343,6 @@ class json_talk_response */ class json_talk_topic { - public: - private: bool replace_built_in_responses = false; std::vector responses; diff --git a/src/dialogue_win.cpp b/src/dialogue_win.cpp index f8b27d28006dc..978d65fcf9724 100644 --- a/src/dialogue_win.cpp +++ b/src/dialogue_win.cpp @@ -1,20 +1,15 @@ -#include "game.h" -#include "map.h" #include "dialogue_win.h" -#include "cata_utility.h" -#include "catacharset.h" + #include "debug.h" -#include "compatibility.h" +#include "game.h" #include "input.h" +#include "map.h" #include "output.h" -#include "ui.h" #include "translations.h" -#include "string_formatter.h" -#include -#include -#include #include +#include +#include void dialogue_window::open_dialogue( bool text_only ) { @@ -108,9 +103,8 @@ bool dialogue_window::print_responses( int const yoffset, const std::vector( yoffset ); + for( size_t i = 0; i < responses.size() && curline <= max_line; i++ ) { const std::vector folded = foldstring( responses[i].second, fold_width ); const nc_color &color = responses[i].first; for( size_t j = 0; j < folded.size(); j++, curline++ ) { @@ -138,7 +132,8 @@ void dialogue_window::refresh_response_display() can_scroll_up = false; } -void dialogue_window::display_responses( int const hilight_lines, std::vector responses, +void dialogue_window::display_responses( int const hilight_lines, + const std::vector &responses, const long &ch ) { if( text_only ) { diff --git a/src/dialogue_win.h b/src/dialogue_win.h index 02f161d4b2a4b..c7bb1def1a2e2 100644 --- a/src/dialogue_win.h +++ b/src/dialogue_win.h @@ -18,7 +18,8 @@ class dialogue_window bool text_only = false; void clear_window_texts(); - void display_responses( int hilight_lines, std::vector responses, const long &ch ); + void display_responses( int hilight_lines, const std::vector &responses, + const long &ch ); void refresh_response_display(); /** * Folds and adds the folded text to @ref history. Returns the number of added lines. diff --git a/src/dispersion.h b/src/dispersion.h index 54403eece6224..6a0cc2547fdd3 100644 --- a/src/dispersion.h +++ b/src/dispersion.h @@ -2,7 +2,7 @@ #ifndef DISPERSION_H #define DISPERSION_H -#include +#include #include class dispersion_sources diff --git a/src/dump.cpp b/src/dump.cpp index eae2c1cdaa5a0..77d3f1ac8c089 100644 --- a/src/dump.cpp +++ b/src/dump.cpp @@ -1,24 +1,21 @@ +#include "ammo.h" +#include "compatibility.h" // needed for the workaround for the std::to_string bug in some compilers #include "game.h" - -#include -#include -#include - -#include "compatibility.h" #include "init.h" #include "item_factory.h" #include "iuse_actor.h" -#include "recipe_dictionary.h" +#include "loading_ui.h" +#include "npc.h" #include "player.h" -#include "vehicle.h" -#include "string_formatter.h" -#include "veh_type.h" +#include "recipe_dictionary.h" #include "skill.h" +#include "veh_type.h" +#include "vehicle.h" #include "vitamin.h" -#include "npc.h" -#include "ammo.h" -#include "crafting.h" -#include "loading_ui.h" + +#include +#include +#include bool game::dump_stats( const std::string &what, dump_mode mode, const std::vector &opts ) @@ -276,11 +273,11 @@ bool game::dump_stats( const std::string &what, dump_mode mode, r.push_back( to_string( veh_fueled.max_velocity() / 100 ) ); r.push_back( to_string( veh_fueled.safe_velocity() / 100 ) ); r.push_back( to_string( veh_fueled.acceleration() / 100 ) ); - r.push_back( to_string( ( int )( 100 * veh_fueled.k_mass() ) ) ); - r.push_back( to_string( ( int )( 100 * veh_fueled.k_aerodynamics() ) ) ); - r.push_back( to_string( ( int )( 100 * veh_fueled.k_friction() ) ) ); - r.push_back( to_string( ( int )( 100 * veh_fueled.k_traction( veh_fueled.wheel_area( - false ) / 2.0f ) ) ) ); + r.push_back( to_string( static_cast( 100 * veh_fueled.k_mass() ) ) ); + r.push_back( to_string( static_cast( 100 * veh_fueled.k_aerodynamics() ) ) ); + r.push_back( to_string( static_cast( 100 * veh_fueled.k_friction() ) ) ); + r.push_back( to_string( static_cast( 100 * veh_fueled.k_traction( veh_fueled.wheel_area( + false ) / 2.0f ) ) ) ); rows.push_back( r ); }; for( auto &e : vehicle_prototype::get_all() ) { diff --git a/src/editmap.cpp b/src/editmap.cpp index 8565bb36fa200..e9be42fb547d9 100644 --- a/src/editmap.cpp +++ b/src/editmap.cpp @@ -1,51 +1,44 @@ #include "editmap.h" -#include "game.h" +#include "artifact.h" +#include "auto_pickup.h" +#include "calendar.h" +#include "compatibility.h" // needed for the workaround for the std::to_string bug in some compilers +#include "computer.h" #include "coordinate_conversions.h" +#include "coordinates.h" +#include "debug.h" +#include "debug_menu.h" +#include "field.h" +#include "game.h" #include "input.h" -#include "output.h" #include "line.h" -#include "computer.h" -#include "veh_interact.h" -#include "options.h" -#include "auto_pickup.h" -#include "debug.h" #include "map.h" -#include "output.h" -#include "uistate.h" -#include "artifact.h" -#include "trap.h" #include "mapdata.h" -#include "overmapbuffer.h" -#include "compatibility.h" -#include "translations.h" -#include "string_formatter.h" -#include "coordinates.h" -#include "vpart_position.h" -#include "npc.h" -#include "vehicle.h" -#include "submap.h" #include "monster.h" +#include "npc.h" +#include "output.h" #include "overmap.h" #include "overmap_ui.h" -#include "calendar.h" -#include "field.h" -#include "ui.h" +#include "overmapbuffer.h" #include "scent_map.h" -#include "debug_menu.h" +#include "string_formatter.h" #include "string_input_popup.h" +#include "submap.h" +#include "translations.h" +#include "trap.h" +#include "ui.h" +#include "uistate.h" +#include "vehicle.h" +#include "vpart_position.h" +#include +#include +#include #include -#include #include -#include -#include #include -#include #include -#include -#include -#include "debug.h" #define dbg(x) DebugLog((DebugLevel)(x),D_GAME) << __FILE__ << ":" << __LINE__ << ": " #define maplim 132 @@ -73,7 +66,7 @@ std::vector fld_string( const std::string &str, int width ) int linepos = width; int linestart = 0; int crpos = -2; - while( linepos < ( int )str.length() || crpos != -1 ) { + while( linepos < static_cast( str.length() ) || crpos != -1 ) { crpos = str.find( '\n', linestart ); if( crpos != -1 && crpos <= linepos ) { lines.push_back( str.substr( linestart, crpos - linestart ) ); @@ -86,7 +79,7 @@ std::vector fld_string( const std::string &str, int width ) } if( spacepos < linestart ) { spacepos = linestart + width; - if( spacepos < ( int )str.length() ) { + if( spacepos < static_cast( str.length() ) ) { lines.push_back( str.substr( linestart, width ) ); linepos = spacepos + width; linestart = spacepos; @@ -109,8 +102,6 @@ void edit_json( SAVEOBJ &it ) std::string save1 = serialize( it ); std::string osave1 = save1; std::vector fs1 = fld_string( save1, TERMX - 10 ); - std::string save2; - std::vector fs2; do { uilist tm; @@ -125,8 +116,8 @@ void edit_json( SAVEOBJ &it ) } catch( const std::exception &err ) { popup( "Error on deserialization: %s", err.what() ); } - save2 = serialize( it ); - fs2 = fld_string( save2, TERMX - 10 ); + std::string save2 = serialize( it ); + std::vector fs2 = fld_string( save2, TERMX - 10 ); tm.addentry( -1, false, -2, "== Reloaded: =====================" ); for( size_t s = 0; s < fs2.size(); ++s ) { @@ -238,7 +229,7 @@ editmap::~editmap() = default; void editmap_hilight::draw( editmap &hm, bool update ) { cur_blink++; - if( cur_blink >= ( int )blink_interval.size() ) { + if( cur_blink >= static_cast( blink_interval.size() ) ) { cur_blink = 0; } if( blink_interval[ cur_blink ] || update ) { @@ -259,7 +250,7 @@ void editmap_hilight::draw( editmap &hm, bool update ) if( t_field.fieldCount() > 0 ) { field_id t_ftype = t_field.fieldSymbol(); const field_entry *t_fld = t_field.findField( t_ftype ); - if( t_fld != NULL ) { + if( t_fld != nullptr ) { t_col = t_fld->color(); t_sym = t_fld->symbol(); } @@ -370,7 +361,7 @@ cata::optional editmap::edit() std::string action; uberdraw = uistate.editmap_nsa_viewmode; - infoHeight = 14; + infoHeight = 20; w_info = catacurses::newwin( infoHeight, width, TERMY - infoHeight, offsetX ); w_help = catacurses::newwin( 3, width - 2, TERMY - 3, offsetX + 1 ); @@ -453,7 +444,7 @@ void editmap::uber_draw_ter( const catacurses::window &w, map *m ) bool draw_veh=true; */ bool draw_itm = true; - bool game_map = ( ( m == &g->m || w == g->w_terrain ) ? true : false ); + bool game_map = ( m == &g->m || w == g->w_terrain ); const int msize = SEEX * MAPSIZE; if( refresh_mplans ) { hilights["mplan"].points.clear(); @@ -546,7 +537,7 @@ void editmap::update_view( bool update_info ) if( t_field.fieldCount() > 0 ) { field_id t_ftype = t_field.fieldSymbol(); const field_entry *t_fld = t_field.findField( t_ftype ); - if( t_fld != NULL ) { + if( t_fld != nullptr ) { t_col = t_fld->color(); t_sym = t_fld->symbol(); } @@ -611,11 +602,17 @@ void editmap::update_view( bool update_info ) mvwprintw( w_info, off++, 1, _( "transparency: %.5f, visibility: %.5f," ), map_cache.transparency_cache[target.x][target.y], map_cache.seen_cache[target.x][target.y] ); - mvwprintw( w_info, off++, 1, _( "apparent light: %.2f, light_at: %.2f" ), - map_cache.seen_cache[target.x][target.y] * map_cache.lm[target.x][target.y], - map_cache.lm[target.x][target.y] ); - mvwprintw( w_info, off++, 1, _( "outside: %d" ), static_cast( g->m.is_outside( target ) ) ); - std::string extras = ""; + map::apparent_light_info al = map::apparent_light_helper( map_cache, target ); + int apparent_light = static_cast( + g->m.apparent_light_at( target, g->m.get_visibility_variables_cache() ) ); + mvwprintw( w_info, off++, 1, _( "outside: %d obstructed: %d" ), + static_cast( g->m.is_outside( target ) ), + static_cast( al.obstructed ) ); + mvwprintw( w_info, off++, 1, _( "light_at: %s" ), + map_cache.lm[target.x][target.y].to_string() ); + mvwprintw( w_info, off++, 1, _( "apparent light: %.5f (%d)" ), + al.apparent_light, apparent_light ); + std::string extras; if( veh_in >= 0 ) { extras += _( " [vehicle]" ); } @@ -627,7 +624,7 @@ void editmap::update_view( bool update_info ) } mvwprintw( w_info, off, 1, "%s %s", g->m.features( target ).c_str(), extras.c_str() ); - off++; // 4-5 + off++; // 9 for( auto &fld : *cur_field ) { const field_entry &cur = fld.second; @@ -636,13 +633,13 @@ void editmap::update_view( bool update_info ) cur.name().c_str(), cur.getFieldType(), cur.getFieldDensity(), to_turns( cur.getFieldAge() ) ); - off++; // 5ish + off++; // 10ish } if( cur_trap != tr_null ) { auto &t = cur_trap.obj(); mvwprintz( w_info, off, 1, t.color, _( "trap: %s (%d)" ), t.name().c_str(), cur_trap.to_i() ); - off++; // 6 + off++; // 11 } if( critter != nullptr ) { @@ -800,8 +797,8 @@ int editmap::edit_ter() int cur_t = 0; int tstart = 2; // draw icon grid - for( int y = tstart; y < pickh && cur_t < ( int ) ter_t::count(); y += 2 ) { - for( int x = xmin; x < pickw && cur_t < ( int ) ter_t::count(); x++, cur_t++ ) { + for( int y = tstart; y < pickh && cur_t < static_cast( ter_t::count() ); y += 2 ) { + for( int x = xmin; x < pickw && cur_t < static_cast( ter_t::count() ); x++, cur_t++ ) { const ter_id tid( cur_t ); const ter_t &ttype = tid.obj(); mvwputch( w_pickter, y, x, ( ter_frn_mode == 0 ? ttype.color() : c_dark_gray ), ttype.symbol() ); @@ -843,7 +840,7 @@ int editmap::edit_ter() mvwprintw( w_pickter, 0, 2, "< %s[%d]: %s >", pttype.id.c_str(), pttype.id.id().to_i(), pttype.name().c_str() ); mvwprintz( w_pickter, off, 2, c_white, _( "movecost %d" ), pttype.movecost ); - std::string extras = ""; + std::string extras; if( pttype.has_flag( TFLAG_INDOORS ) ) { extras += _( "[indoors] " ); } @@ -856,8 +853,8 @@ int editmap::edit_ter() off += 2; int cur_f = 0; int fstart = off; // calculate vertical offset, draw furniture icons - for( int y = fstart; y < pickh && cur_f < ( int ) furn_t::count(); y += 2 ) { - for( int x = xmin; x < pickw && cur_f < ( int ) furn_t::count(); x++, cur_f++ ) { + for( int y = fstart; y < pickh && cur_f < static_cast( furn_t::count() ); y += 2 ) { + for( int x = xmin; x < pickw && cur_f < static_cast( furn_t::count() ); x++, cur_f++ ) { const furn_id fid( cur_f ); const furn_t &ftype = fid.obj(); mvwputch( w_pickter, y, x, ( ter_frn_mode == 1 ? ftype.color() : c_dark_gray ), ftype.symbol() ); @@ -898,7 +895,7 @@ int editmap::edit_ter() mvwprintw( w_pickter, 0, 2, "< %s[%d]: %s >", pftype.id.c_str(), pftype.id.id().to_i(), pftype.name().c_str() ); mvwprintz( w_pickter, off, 2, c_white, _( "movecost %d" ), pftype.movecost ); - std::string fextras = ""; + std::string fextras; if( pftype.has_flag( TFLAG_INDOORS ) ) { fextras += _( "[indoors] " ); } @@ -1046,26 +1043,25 @@ void editmap::update_fmenu_entry( uilist &fmenu, field &field, const field_id id int fdens = 1; const field_t &ftype = fieldlist[idx]; field_entry *fld = field.findField( idx ); - if( fld != NULL ) { + if( fld != nullptr ) { fdens = fld->getFieldDensity(); } fmenu.entries[idx].txt = ftype.name( fdens - 1 ); - if( fld != NULL ) { + if( fld != nullptr ) { fmenu.entries[idx].txt += " " + std::string( fdens, '*' ); } - fmenu.entries[idx].text_color = ( fld != NULL ? c_cyan : fmenu.text_color ); + fmenu.entries[idx].text_color = ( fld != nullptr ? c_cyan : fmenu.text_color ); fmenu.entries[idx].extratxt.color = ftype.color[fdens - 1]; } void editmap::setup_fmenu( uilist &fmenu ) { - std::string fname; fmenu.entries.clear(); for( int i = 0; i < num_fields; i++ ) { const field_id fid = static_cast( i ); const field_t &ftype = fieldlist[fid]; int fdens = 1; - fname = ftype.name( fdens - 1 ); + std::string fname = ftype.name( fdens - 1 ); fmenu.addentry( fid, true, -2, fname ); fmenu.entries[fid].extratxt.left = 1; fmenu.entries[fid].extratxt.txt = string_format( "%c", ftype.sym ); @@ -1100,7 +1096,7 @@ int editmap::edit_fld() int fdens = 0; const field_id idx = static_cast( fmenu.selected ); field_entry *fld = cur_field->findField( idx ); - if( fld != NULL ) { + if( fld != nullptr ) { fdens = fld->getFieldDensity(); } int fsel_dens = fdens; @@ -1137,7 +1133,7 @@ int editmap::edit_fld() field &t_field = g->m.get_field( elem ); field_entry *t_fld = t_field.findField( fid ); int t_dens = 0; - if( t_fld != NULL ) { + if( t_fld != nullptr ) { t_dens = t_fld->getFieldDensity(); } if( fsel_dens != 0 ) { @@ -1182,7 +1178,7 @@ int editmap::edit_fld() uberdraw = !uberdraw; update_view( false ); } - } while( fmenu.ret != UIMENU_CANCEL ); + } while( fmenu.ret != UILIST_CANCEL ); g->draw_sidebar(); return ret; } @@ -1302,7 +1298,7 @@ int editmap::edit_itm() do { ilmenu.query(); - if( ilmenu.ret >= 0 && ilmenu.ret < ( int )items.size() ) { + if( ilmenu.ret >= 0 && ilmenu.ret < static_cast( items.size() ) ) { item &it = items[ilmenu.ret]; uilist imenu; imenu.w_x = ilmenu.w_x; @@ -1314,7 +1310,7 @@ int editmap::edit_itm() imenu.addentry( imenu_damage, true, -1, pgettext( "item manipulation debug menu entry", "damage: %d" ), it.damage() ); imenu.addentry( imenu_burnt, true, -1, pgettext( "item manipulation debug menu entry", - "burnt: %d" ), ( int )it.burnt ); + "burnt: %d" ), static_cast( it.burnt ) ); imenu.addentry( imenu_sep, false, 0, pgettext( "item manipulation debug menu entry", "-[ light emission ]-" ) ); imenu.addentry( imenu_savetest, true, -1, pgettext( "item manipulation debug menu entry", @@ -1332,7 +1328,7 @@ int editmap::edit_itm() intval = it.damage(); break; case imenu_burnt: - intval = ( int )it.burnt; + intval = static_cast( it.burnt ); break; } string_input_popup popup; @@ -1362,7 +1358,7 @@ int editmap::edit_itm() } g->draw_ter( target ); wrefresh( g->w_terrain ); - } while( imenu.ret != UIMENU_CANCEL ); + } while( imenu.ret != UILIST_CANCEL ); g->draw_sidebar(); update_view( true ); } else if( ilmenu.ret == static_cast( items.size() ) ) { @@ -1380,7 +1376,7 @@ int editmap::edit_itm() ilmenu.filterlist(); ilmenu.refresh(); } - } while( ilmenu.ret != UIMENU_CANCEL ); + } while( ilmenu.ret != UILIST_CANCEL ); g->draw_sidebar(); return ret; } @@ -1531,7 +1527,7 @@ int editmap::select_shape( shapetype shape, int mode ) bool update = false; blink = true; if( mode >= 0 ) { - moveall = ( mode == 0 ? false : true ); + moveall = ( mode != 0 ); } altblink = moveall; update_view( false ); @@ -1552,12 +1548,12 @@ int editmap::select_shape( shapetype shape, int mode ) smenu.addentry( editmap_line, true, 'l', pgettext( "shape", "Line" ) ); smenu.addentry( editmap_circle, true, 'c', pgettext( "shape", "Filled Circle" ) ); smenu.addentry( -2, true, 'p', pgettext( "shape", "Point" ) ); - smenu.selected = ( int )shape; + smenu.selected = static_cast( shape ); smenu.query(); - if( smenu.ret == UIMENU_CANCEL ) { + if( smenu.ret == UILIST_CANCEL ) { // canceled } else if( smenu.ret != -2 ) { - shape = ( shapetype )smenu.ret; + shape = static_cast( smenu.ret ); update = true; } else { target_list.clear(); @@ -1696,9 +1692,9 @@ int editmap::mapgen_preview( real_coords &tc, uilist &gmenu ) int gpmenupos = gpmenu.selected; gpmenu.query( false, BLINK_SPEED * 3 ); - if( gpmenu.ret == UIMENU_TIMEOUT ) { + if( gpmenu.ret == UILIST_TIMEOUT ) { showpreview = !showpreview; - } else if( gpmenu.ret != UIMENU_UNBOUND ) { + } else if( gpmenu.ret != UILIST_UNBOUND ) { if( gpmenu.ret == 0 ) { cleartmpmap( tmpmap ); @@ -1712,7 +1708,7 @@ int editmap::mapgen_preview( real_coords &tc, uilist &gmenu ) point target_sub( target.x / 12, target.y / 12 ); g->m.clear_vehicle_cache( target.z ); - std::string s = ""; + std::string s; for( int x = 0; x < 2; x++ ) { for( int y = 0; y < 2; y++ ) { // Apply previewed mapgen to map. Since this is a function for testing, we try avoid triggering @@ -1803,7 +1799,7 @@ int editmap::mapgen_preview( real_coords &tc, uilist &gmenu ) gmenu.show(); gmenu.refresh(); } - } while( gpmenu.ret != 2 && gpmenu.ret != 3 && gpmenu.ret != UIMENU_CANCEL ); + } while( gpmenu.ret != 2 && gpmenu.ret != 3 && gpmenu.ret != UILIST_CANCEL ); update_view( true ); if( gpmenu.ret != 2 && // we didn't apply, so restore the original om_ter @@ -2062,18 +2058,17 @@ int editmap::mapgen_retarget() return ret; } -class edit_mapgen_callback : public uimenu_callback +class edit_mapgen_callback : public uilist_callback { private: editmap *_e; public: edit_mapgen_callback( editmap *e ) { _e = e; - }; - bool key( const input_context &, const input_event &event, int /*entnum*/, uimenu *menu ) override { + } + bool key( const input_context &, const input_event &event, int /*entnum*/, uilist * ) override { if( event.get_first_input() == 'm' ) { _e->mapgen_retarget(); - menu->ret = -1; return true; } return false; @@ -2097,7 +2092,7 @@ int editmap::edit_mapgen() for( size_t i = 0; i < overmap_terrains::get_all().size(); i++ ) { const oter_id id( i ); - gmenu.addentry( -1, !id.id().is_null(), 0, "[%3d] %s", ( int )id, id.id().c_str() ); + gmenu.addentry( -1, !id.id().is_null(), 0, "[%3d] %s", static_cast( id ), id.id().c_str() ); gmenu.entries[i].extratxt.left = 1; gmenu.entries[i].extratxt.color = id->get_color(); gmenu.entries[i].extratxt.txt = string_format( "%c", id->get_sym() ); @@ -2132,7 +2127,7 @@ int editmap::edit_mapgen() if( gmenu.ret > 0 ) { mapgen_preview( tc, gmenu ); } - } while( gmenu.ret != UIMENU_CANCEL ); + } while( gmenu.ret != UILIST_CANCEL ); g->draw_sidebar(); return ret; } diff --git a/src/editmap.h b/src/editmap.h index e990858611d72..c32388d59dcc8 100644 --- a/src/editmap.h +++ b/src/editmap.h @@ -3,16 +3,13 @@ #define EDITMAP_H #include "map.h" -#include "line.h" #include "omdata.h" -#include "ui.h" -#include "trap.h" #include "optional.h" +#include "trap.h" +#include "ui.h" -#include #include -#include -#include +#include struct real_coords; enum field_id : int; @@ -36,7 +33,7 @@ struct editmap_hilight { ) ) ); - }; + } void draw( editmap &em, bool update = false ); }; @@ -70,7 +67,6 @@ class editmap void update_fmenu_entry( uilist &fmenu, field &field, field_id idx ); void setup_fmenu( uilist &fmenu ); - bool change_fld( std::vector coords, field_id fid, int density ); catacurses::window w_info; catacurses::window w_help; int width; diff --git a/src/effect.cpp b/src/effect.cpp index 027c4991c6397..24d676b655b1e 100644 --- a/src/effect.cpp +++ b/src/effect.cpp @@ -1,12 +1,12 @@ #include "effect.h" + #include "debug.h" -#include "rng.h" +#include "json.h" +#include "messages.h" #include "output.h" -#include "string_formatter.h" #include "player.h" -#include "translations.h" -#include "messages.h" -#include "json.h" +#include "rng.h" +#include "string_formatter.h" #include #include @@ -472,17 +472,17 @@ std::string effect::disp_name() const // End result should look like "name (l. arm)" or "name [intensity] (l. arm)" std::ostringstream ret; if( eff_type->use_name_ints() ) { - const std::string &d_name = eff_type->name[ std::min( intensity, + const translation &d_name = eff_type->name[ std::min( intensity, eff_type->name.size() ) - 1 ]; if( d_name.empty() ) { - return ""; + return std::string(); } - ret << _( d_name.c_str() ); + ret << d_name.translated(); } else { if( eff_type->name[0].empty() ) { - return ""; + return std::string(); } - ret << _( eff_type->name[0].c_str() ); + ret << eff_type->name[0].translated(); if( intensity > 1 ) { if( eff_type->id == "bandaged" || eff_type->id == "disinfected" ) { ret << " [" << texitify_healing_power( intensity ) << "]"; @@ -506,7 +506,7 @@ struct desc_freq { std::string neg_string; desc_freq( double c, int v, const std::string &pos, const std::string &neg ) : chance( c ), - val( v ), pos_string( pos ), neg_string( neg ) {}; + val( v ), pos_string( pos ), neg_string( neg ) {} }; std::string effect::disp_desc( bool reduced ) const @@ -544,7 +544,7 @@ std::string effect::disp_desc( bool reduced ) const ret << string_format( _( "Speed %d; " ), tmp ); } // Newline if necessary - if( !ret.str().empty() ) { + if( !ret.str().empty() && ret.str().back() != '\n' ) { ret << "\n"; } @@ -616,21 +616,21 @@ std::string effect::disp_desc( bool reduced ) const } } } - if( constant.size() > 0 ) { + if( !constant.empty() ) { ret << _( "Const: " ) << enumerate_as_string( constant ) << " "; } - if( frequent.size() > 0 ) { + if( !frequent.empty() ) { ret << _( "Freq: " ) << enumerate_as_string( frequent ) << " "; } - if( uncommon.size() > 0 ) { + if( !uncommon.empty() ) { ret << _( "Unfreq: " ) << enumerate_as_string( uncommon ) << " "; } - if( rare.size() > 0 ) { + if( !rare.empty() ) { ret << _( "Rare: " ) << enumerate_as_string( rare ); // No space needed at the end } // Newline if necessary - if( !ret.str().empty() ) { + if( !ret.str().empty() && ret.str().back() != '\n' ) { ret << "\n"; } @@ -1103,7 +1103,7 @@ double effect::get_addict_mod( const std::string &arg, int addict_level ) const // TODO: convert this to JSON id's and values once we have JSON'ed addictions if( arg == "PKILL" ) { if( eff_type->pkill_addict_reduces ) { - return 1.0 / std::max( ( double )addict_level * 2.0, 1.0 ); + return 1.0 / std::max( static_cast( addict_level ) * 2.0, 1.0 ); } else { return 1.0; } @@ -1138,11 +1138,11 @@ std::string effect::get_speed_name() const // USes the speed_mod_name if one exists, else defaults to the first entry in "name". // But make sure the name for this intensity actually exists! if( !eff_type->speed_mod_name.empty() ) { - return eff_type->speed_mod_name; + return _( eff_type->speed_mod_name.c_str() ); } else if( eff_type->use_name_ints() ) { - return eff_type->name[ std::min( intensity, eff_type->name.size() ) - 1 ]; + return eff_type->name[ std::min( intensity, eff_type->name.size() ) - 1 ].translated(); } else if( !eff_type->name.empty() ) { - return eff_type->name[0]; + return eff_type->name[0].translated(); } else { return ""; } @@ -1181,10 +1181,14 @@ void load_effect_type( JsonObject &jo ) if( jo.has_member( "name" ) ) { JsonArray jsarr = jo.get_array( "name" ); while( jsarr.has_more() ) { - new_etype.name.push_back( jsarr.next_string() ); + translation name; + if( !jsarr.read_next( name ) ) { + jsarr.throw_error( "Error reading effect names" ); + } + new_etype.name.emplace_back( name ); } } else { - new_etype.name.push_back( "" ); + new_etype.name.emplace_back(); } new_etype.speed_mod_name = jo.get_string( "speed_name", "" ); @@ -1228,16 +1232,16 @@ void load_effect_type( JsonObject &jo ) new_etype.apply_memorial_log = jo.get_string( "apply_memorial_log", "" ); new_etype.remove_memorial_log = jo.get_string( "remove_memorial_log", "" ); - for( auto &&f : jo.get_string_array( "resist_traits" ) ) { + for( auto &&f : jo.get_string_array( "resist_traits" ) ) { // *NOPAD* new_etype.resist_traits.push_back( trait_id( f ) ); } - for( auto &&f : jo.get_string_array( "resist_effects" ) ) { + for( auto &&f : jo.get_string_array( "resist_effects" ) ) { // *NOPAD* new_etype.resist_effects.push_back( efftype_id( f ) ); } - for( auto &&f : jo.get_string_array( "removes_effects" ) ) { + for( auto &&f : jo.get_string_array( "removes_effects" ) ) { // *NOPAD* new_etype.removes_effects.push_back( efftype_id( f ) ); } - for( auto &&f : jo.get_string_array( "blocks_effects" ) ) { + for( auto &&f : jo.get_string_array( "blocks_effects" ) ) { // *NOPAD* new_etype.blocks_effects.push_back( efftype_id( f ) ); } @@ -1289,7 +1293,7 @@ void effect_type::register_ma_buff_effect( const effect_type &eff ) void effect::serialize( JsonOut &json ) const { json.start_object(); - json.member( "eff_type", eff_type != NULL ? eff_type->id.str() : "" ); + json.member( "eff_type", eff_type != nullptr ? eff_type->id.str() : "" ); json.member( "duration", duration ); json.member( "bp", static_cast( bp ) ); json.member( "permanent", permanent ); @@ -1303,7 +1307,7 @@ void effect::deserialize( JsonIn &jsin ) const efftype_id id( jo.get_string( "eff_type" ) ); eff_type = &id.obj(); jo.read( "duration", duration ); - bp = ( body_part )jo.get_int( "bp" ); + bp = static_cast( jo.get_int( "bp" ) ); permanent = jo.get_bool( "permanent" ); intensity = jo.get_int( "intensity" ); start_time = calendar::time_of_cataclysm; diff --git a/src/effect.h b/src/effect.h index 1d21930bbed0f..3723533ac6d92 100644 --- a/src/effect.h +++ b/src/effect.h @@ -2,10 +2,13 @@ #ifndef EFFECT_H #define EFFECT_H -#include "pldata.h" +#include "bodypart.h" #include "calendar.h" #include "enums.h" +#include "pldata.h" #include "string_id.h" +#include "translations.h" + #include #include #include @@ -113,7 +116,7 @@ class effect_type // It needs to be set for monster::move_effects bool impairs_movement; - std::vector name; + std::vector name; std::string speed_mod_name; std::vector desc; std::vector reduced_desc; diff --git a/src/emit.cpp b/src/emit.cpp index 71ed1fac98fb3..89326a8355fde 100644 --- a/src/emit.cpp +++ b/src/emit.cpp @@ -1,10 +1,10 @@ #include "emit.h" -#include - -#include "json.h" #include "debug.h" #include "generic_factory.h" +#include "json.h" + +#include static std::map emits_all; diff --git a/src/emit.h b/src/emit.h index a1a8571c244e6..a242d81f0309d 100644 --- a/src/emit.h +++ b/src/emit.h @@ -2,11 +2,10 @@ #ifndef EMIT_H #define EMIT_H -#include "string_id.h" #include "field.h" +#include "string_id.h" #include -#include class JsonObject; diff --git a/src/enums.h b/src/enums.h index 3421d341b87af..99b919d4592ca 100644 --- a/src/enums.h +++ b/src/enums.h @@ -2,9 +2,9 @@ #ifndef ENUMS_H #define ENUMS_H -#include #include #include +#include class JsonOut; class JsonIn; @@ -192,12 +192,12 @@ enum object_type { }; struct point { - int x; - int y; - point() : x( 0 ), y( 0 ) {} - point( int X, int Y ) : x( X ), y( Y ) {} + int x = 0; + int y = 0; + constexpr point() = default; + constexpr point( int X, int Y ) : x( X ), y( Y ) {} - point operator+( const point &rhs ) const { + constexpr point operator+( const point &rhs ) const { return point( x + rhs.x, y + rhs.y ); } point &operator+=( const point &rhs ) { @@ -205,7 +205,7 @@ struct point { y += rhs.y; return *this; } - point operator-( const point &rhs ) const { + constexpr point operator-( const point &rhs ) const { return point( x - rhs.x, y - rhs.y ); } point &operator-=( const point &rhs ) { @@ -231,31 +231,31 @@ struct hash { }; } -inline bool operator<( const point &a, const point &b ) +inline constexpr bool operator<( const point &a, const point &b ) { return a.x < b.x || ( a.x == b.x && a.y < b.y ); } -inline bool operator==( const point &a, const point &b ) +inline constexpr bool operator==( const point &a, const point &b ) { return a.x == b.x && a.y == b.y; } -inline bool operator!=( const point &a, const point &b ) +inline constexpr bool operator!=( const point &a, const point &b ) { return !( a == b ); } struct tripoint { - int x; - int y; - int z; - tripoint() : x( 0 ), y( 0 ), z( 0 ) {} - tripoint( int X, int Y, int Z ) : x( X ), y( Y ), z( Z ) {} - explicit tripoint( const point &p, int Z ) : x( p.x ), y( p.y ), z( Z ) {} - - tripoint operator+( const tripoint &rhs ) const { + int x = 0; + int y = 0; + int z = 0; + constexpr tripoint() = default; + constexpr tripoint( int X, int Y, int Z ) : x( X ), y( Y ), z( Z ) {} + explicit constexpr tripoint( const point &p, int Z ) : x( p.x ), y( p.y ), z( Z ) {} + + constexpr tripoint operator+( const tripoint &rhs ) const { return tripoint( x + rhs.x, y + rhs.y, z + rhs.z ); } - tripoint operator-( const tripoint &rhs ) const { + constexpr tripoint operator-( const tripoint &rhs ) const { return tripoint( x - rhs.x, y - rhs.y, z - rhs.z ); } tripoint &operator+=( const tripoint &rhs ) { @@ -264,14 +264,14 @@ struct tripoint { z += rhs.z; return *this; } - tripoint operator-() const { + constexpr tripoint operator-() const { return tripoint( -x, -y, -z ); } /*** some point operators and functions ***/ - tripoint operator+( const point &rhs ) const { + constexpr tripoint operator+( const point &rhs ) const { return tripoint( x + rhs.x, y + rhs.y, z ); } - tripoint operator-( const point &rhs ) const { + constexpr tripoint operator-( const point &rhs ) const { return tripoint( x - rhs.x, y - rhs.y, z ); } tripoint &operator+=( const point &rhs ) { @@ -315,11 +315,11 @@ struct hash { }; } -inline bool operator==( const tripoint &a, const tripoint &b ) +inline constexpr bool operator==( const tripoint &a, const tripoint &b ) { return a.x == b.x && a.y == b.y && a.z == b.z; } -inline bool operator!=( const tripoint &a, const tripoint &b ) +inline constexpr bool operator!=( const tripoint &a, const tripoint &b ) { return !( a == b ); } @@ -337,14 +337,14 @@ inline bool operator<( const tripoint &a, const tripoint &b ) return false; } -static const tripoint tripoint_min { INT_MIN, INT_MIN, INT_MIN }; -static const tripoint tripoint_zero { 0, 0, 0 }; +static constexpr tripoint tripoint_min { INT_MIN, INT_MIN, INT_MIN }; +static constexpr tripoint tripoint_zero { 0, 0, 0 }; struct sphere { - int radius; - tripoint center; + int radius = 0; + tripoint center = tripoint( 0, 0, 0 ); - sphere() : radius( 0 ), center() {} + sphere() = default; explicit sphere( const tripoint ¢er ) : radius( 1 ), center( center ) {} explicit sphere( const tripoint ¢er, int radius ) : radius( radius ), center( center ) {} }; diff --git a/src/event.cpp b/src/event.cpp index cb2bbdc99c42c..d1a4baec2b847 100644 --- a/src/event.cpp +++ b/src/event.cpp @@ -1,20 +1,17 @@ #include "event.h" -#include "npc.h" -#include "game.h" -#include "map.h" + #include "debug.h" +#include "game.h" #include "line.h" -#include "rng.h" -#include "output.h" -#include "options.h" -#include "translations.h" -#include "overmapbuffer.h" +#include "map.h" +#include "mapdata.h" #include "messages.h" -#include "sounds.h" #include "morale_types.h" -#include "mapdata.h" - -#include +#include "options.h" +#include "output.h" +#include "rng.h" +#include "sounds.h" +#include "translations.h" const mtype_id mon_amigara_horror( "mon_amigara_horror" ); const mtype_id mon_copbot( "mon_copbot" ); diff --git a/src/explosion.cpp b/src/explosion.cpp index fb6bd2af4a03a..fdfab053c39f3 100644 --- a/src/explosion.cpp +++ b/src/explosion.cpp @@ -1,25 +1,25 @@ #include "explosion.h" -#include "fragment_cloud.h" #include "cata_utility.h" +#include "character.h" +#include "creature.h" +#include "debug.h" +#include "field.h" +#include "fragment_cloud.h" #include "game.h" #include "item_factory.h" +#include "json.h" #include "map.h" +#include "messages.h" +#include "output.h" +#include "player.h" #include "projectile.h" #include "shadowcasting.h" -#include "json.h" -#include "creature.h" -#include "character.h" -#include "player.h" -#include "monster.h" -#include "vpart_position.h" -#include "output.h" -#include "debug.h" -#include "messages.h" -#include "translations.h" #include "sounds.h" +#include "translations.h" #include "vehicle.h" -#include "field.h" +#include "vpart_position.h" + #include #include // For M_PI @@ -388,6 +388,11 @@ bool shrapnel_check( const fragment_cloud &cloud, const fragment_cloud &intensit intensity.density > MIN_FRAGMENT_DENSITY; } +void update_fragment_cloud( fragment_cloud &update, const fragment_cloud &new_value, quadrant ) +{ + update = std::max( update, new_value ); +} + fragment_cloud accumulate_fragment_cloud( const fragment_cloud &cumulative_cloud, const fragment_cloud ¤t_cloud, const int &distance ) { @@ -405,7 +410,8 @@ fragment_cloud accumulate_fragment_cloud( const fragment_cloud &cumulative_cloud constexpr double TYPICAL_GURNEY_CONSTANT = 2700.0; static float gurney_spherical( const double charge, const double mass ) { - return ( float )( std::pow( ( mass / charge ) + ( 3.0 / 5.0 ), -0.5 ) * TYPICAL_GURNEY_CONSTANT ); + return static_cast( std::pow( ( mass / charge ) + ( 3.0 / 5.0 ), + -0.5 ) * TYPICAL_GURNEY_CONSTANT ); } // Calculate cross-sectional area of a steel sphere in cm^2 based on mass of fragment. @@ -453,8 +459,9 @@ std::vector game::shrapnel( const tripoint &src, int power, { fragment_velocity, static_cast( fragment_count ) }, 1 ); visited_cache[src.x][src.y] = initial_cloud; - castLightAll - ( visited_cache, obstacle_cache, src.x, src.y, 0, initial_cloud ); + castLightAll + ( visited_cache, obstacle_cache, src.x, src.y, 0, initial_cloud ); // Now visited_caches are populated with density and velocity of fragments. for( int x = start.x; x < end.x; x++ ) { diff --git a/src/faction.cpp b/src/faction.cpp index 53fcf5bdd4213..16f60d0649c34 100644 --- a/src/faction.cpp +++ b/src/faction.cpp @@ -1,23 +1,21 @@ #include "faction.h" -#include -#include "rng.h" -#include "math.h" -#include "string_formatter.h" -#include "output.h" -#include "debug.h" -#include "input.h" +#include "catacharset.h" #include "cursesdef.h" +#include "debug.h" #include "enums.h" #include "game_constants.h" -#include "catacharset.h" - +#include "input.h" #include "json.h" +#include "output.h" +#include "rng.h" +#include "string_formatter.h" #include "translations.h" +#include +#include #include #include -#include static std::map _all_faction_templates; @@ -465,7 +463,7 @@ int faction::response_time( const tripoint &abs_sm_pos ) const std::string invent_name() { - std::string ret = ""; + std::string ret; std::string tmp; int syllables = rng( 2, 3 ); for( int i = 0; i < syllables; i++ ) { diff --git a/src/faction.h b/src/faction.h index 8e9722329aaa3..e2567e24e68f7 100644 --- a/src/faction.h +++ b/src/faction.h @@ -4,7 +4,6 @@ #include "string_id.h" -#include #include // TODO: Redefine? diff --git a/src/faction_camp.cpp b/src/faction_camp.cpp index 931718aba4b76..3e22d5702ae6d 100644 --- a/src/faction_camp.cpp +++ b/src/faction_camp.cpp @@ -1,56 +1,50 @@ -#include "npc.h" -#include "output.h" -#include "game.h" -#include "map.h" -#include "mapbuffer.h" + +#include "ammo.h" +#include "bionics.h" +#include "catacharset.h" +#include "compatibility.h" // needed for the workaround for the std::to_string bug in some compilers +#include "construction.h" +#include "coordinate_conversions.h" +#include "craft_command.h" +#include "debug.h" #include "dialogue.h" -#include "rng.h" +#include "editmap.h" +#include "game.h" +#include "iexamine.h" +#include "item_group.h" #include "itype.h" #include "line.h" -#include "bionics.h" -#include "debug.h" -#include "catacharset.h" +#include "map.h" +#include "map_iterator.h" +#include "mapbuffer.h" +#include "mapdata.h" #include "messages.h" #include "mission.h" -#include "ammo.h" +#include "mission_companion.h" +#include "mtype.h" +#include "npc.h" #include "output.h" #include "overmap.h" #include "overmap_ui.h" #include "overmapbuffer.h" -#include "skill.h" -#include "translations.h" -#include "martialarts.h" -#include "input.h" -#include "item_group.h" -#include "compatibility.h" -#include "mapdata.h" #include "recipe.h" +#include "recipe_groups.h" #include "requirements.h" -#include "map_iterator.h" -#include "mongroup.h" -#include "mtype.h" -#include "editmap.h" -#include "construction.h" -#include "coordinate_conversions.h" -#include "craft_command.h" -#include "iexamine.h" -#include "vehicle.h" +#include "rng.h" +#include "skill.h" +#include "string_input_popup.h" +#include "translations.h" #include "veh_type.h" -#include "vpart_reference.h" +#include "vehicle.h" #include "vpart_range.h" -#include "requirements.h" -#include "string_input_popup.h" -#include "line.h" -#include "recipe_groups.h" +#include "vpart_reference.h" + #include "faction_camp.h" -#include "mission_companion.h" -#include "npctalk.h" -#include -#include -#include #include #include +#include +#include const skill_id skill_dodge( "dodge" ); const skill_id skill_gun( "gun" ); @@ -303,7 +297,6 @@ void talk_function::camp_missions( mission_data &mission_key, npc &p ) } } - if( cur_om_level >= 7 ) { std::vector> npc_list = companion_list( p, "_faction_camp_hide_site" ); mission_key.text["Setup Hide Site"] = string_format( _( "Notes:\n" @@ -923,7 +916,6 @@ bool talk_function::handle_camp_mission( mission_entry &cur_key, npc &p ) camp_expansion_select( p ); } - if( cur_key.id == cur_key.dir + " Expansion Upgrade" ) { for( const auto &e : om_expansions ) { if( om_simple_dir( omt_pos, e.second ) == cur_key.dir ) { @@ -945,7 +937,7 @@ bool talk_function::handle_camp_mission( mission_entry &cur_key, npc &p ) if( npc_list.empty() ) { npc *comp = individual_mission( p, _( "begins to upgrade the expansion..." ), "_faction_upgrade_exp_" + cur_key.dir, false, {}, - making->skill_used.obj().name(), making->difficulty ); + making->skill_used.str(), making->difficulty ); if( comp != nullptr ) { g->u.consume_components_for_craft( making, 1, true ); g->u.invalidate_crafting_inventory(); @@ -1167,7 +1159,7 @@ void talk_function::start_camp_upgrade( npc &p, const std::string &bldg ) } npc *comp = individual_mission( p, _( "begins to upgrade the camp..." ), "_faction_upgrade_camp", false, {}, - making->skill_used.obj().name(), making->difficulty ); + making->skill_used.str(), making->difficulty ); if( comp != nullptr ) { comp->companion_mission_time_ret = calendar::turn + making_time; g->u.consume_components_for_craft( making, 1, true ); @@ -1399,7 +1391,7 @@ void talk_function::start_fortifications( std::string &bldg_exp, npc &p ) for( auto fort_om : fortify_om ) { bool valid = false; oter_id &omt_ref = overmap_buffer.ter( fort_om ); - for( auto pos_om : allowed_locations ) { + for( const std::string &pos_om : allowed_locations ) { if( omt_ref.id().c_str() == pos_om ) { valid = true; break; @@ -1429,7 +1421,7 @@ void talk_function::start_fortifications( std::string &bldg_exp, npc &p ) } else { npc *comp = individual_mission( p, _( "begins constructing fortifications..." ), "_faction_camp_om_fortifications", false, {}, - making.skill_used.obj().name(), making.difficulty ); + making.skill_used.str(), making.difficulty ); if( comp != nullptr ) { g->u.consume_components_for_craft( &making, ( fortify_om.size() * 2 ) - 2, true ); g->u.invalidate_crafting_inventory(); @@ -1514,12 +1506,12 @@ void talk_function::camp_craft_construction( npc &p, const mission_entry &cur_ke continue; } npc *comp = individual_mission( p, _( "begins to work..." ), miss_id + cur_key.dir, false, {}, - making->skill_used.obj().name(), making->difficulty ); + making->skill_used.str(), making->difficulty ); if( comp != nullptr ) { time_duration making_time = time_duration::from_turns( making->time / 100 ) * batch_size; g->u.consume_components_for_craft( making, batch_size, true ); g->u.invalidate_crafting_inventory(); - for( auto results : making->create_results( batch_size ) ) { + for( const item &results : making->create_results( batch_size ) ) { comp->companion_mission_inv.add_item( results ); } comp->companion_mission_time_ret = calendar::turn + making_time; @@ -1565,7 +1557,7 @@ bool talk_function::camp_garage_chop_start( npc &p, const std::string &task ) std::vector p_all = car->parts; int prt = 0; int skillLevel = comp->get_skill_level( skill_mechanics ); - while( p_all.size() > 0 ) { + while( !p_all.empty() ) { vehicle_stack contents = car->get_items( prt ); for( auto iter = contents.begin(); iter != contents.end(); ) { comp->companion_mission_inv.add_item( *iter ); @@ -1599,7 +1591,9 @@ bool talk_function::camp_garage_chop_start( npc &p, const std::string &task ) } comp->companion_mission_inv.add_item( p_all[prt].properties_to_item() ); } else if( !skill_destroy ) { - car->break_part_into_pieces( prt, comp->posx(), comp->posy() ); + for( const item &itm : p_all[prt].pieces_for_broken_part() ) { + comp->companion_mission_inv.add_item( itm ); + } } p_all.erase( p_all.begin() + 0 ); } @@ -1827,7 +1821,7 @@ void talk_function::camp_fortifications_return( npc &p ) bool build_dir_NS = ( comp->companion_mission_points[0].y != comp->companion_mission_points[1].y ); //Ensure all tiles are generated before putting fences/trenches down... for( auto pt : comp->companion_mission_points ) { - if( MAPBUFFER.lookup_submap( om_to_sm_copy( pt ) ) == NULL ) { + if( MAPBUFFER.lookup_submap( om_to_sm_copy( pt ) ) == nullptr ) { oter_id &omt_test = overmap_buffer.ter( pt ); std::string om_i = omt_test.id().c_str(); //The thick forests will gen harsh boundries since it won't recognize these tiles when they become fortifications @@ -1936,7 +1930,7 @@ void talk_function::camp_recruit_return( npc &p, const std::string &task, int sc description += string_format( _( "> Food: %10d days\n \n" ), food_desire ); description += string_format( _( "Faction Food:%9d days\n \n" ), camp_food_supply( 0, true ) ); description += string_format( _( "Recruit Chance: %10d%%\n \n" ), - std::min( ( int )( ( 10.0 + appeal ) / 20.0 * 100 ), 100 ) ); + std::min( static_cast( ( 10.0 + appeal ) / 20.0 * 100 ), 100 ) ); description += _( "Select an option:" ); std::vector rec_options; @@ -2217,7 +2211,7 @@ void talk_function::draw_camp_tabs( const catacurses::window &win, const camp_ta const int tab_step = 3; int tab_space = 1; int tab_x = 0; - for( auto t : tabs ) { + for( auto &t : tabs ) { bool tab_empty = entries[tab_x + 1].empty(); draw_subtab( win, tab_space, t, tab_x == cur_tab, false, tab_empty ); tab_space += tab_step + utf8_width( t ); @@ -2295,14 +2289,14 @@ std::map talk_function::camp_recipe_deck( const std::s return recipe_group::get_recipes( om_cur ); } std::map cooking_recipes; - for( auto building_levels : om_all_upgrade_levels( om_cur ) ) { + for( const std::string &building_levels : om_all_upgrade_levels( om_cur ) ) { std::map test_s = recipe_group::get_recipes( building_levels ); cooking_recipes.insert( test_s.begin(), test_s.end() ); } return cooking_recipes; } -int talk_function::camp_recipe_batch_max( const recipe making, const inventory &total_inv ) +int talk_function::camp_recipe_batch_max( const recipe &making, const inventory &total_inv ) { int max_batch = 0; int max_checks = 9; @@ -2437,7 +2431,7 @@ int talk_function::om_harvest_furn( npc &comp, const tripoint &omt_tgt, const fu for( int y = 0; y < 23; y++ ) { if( target_bay.furn( x, y ) == f && x_in_y( chance, 1.0 ) ) { if( force_bash || comp.str_cur > furn_tgt.bash.str_min + rng( -2, 2 ) ) { - for( auto itm : item_group::items_from( furn_tgt.bash.drop_group, calendar::turn ) ) { + for( const item &itm : item_group::items_from( furn_tgt.bash.drop_group, calendar::turn ) ) { comp.companion_mission_inv.push_back( itm ); } harvested++; @@ -2468,7 +2462,7 @@ int talk_function::om_harvest_ter( npc &comp, const tripoint &omt_tgt, const ter for( int y = 0; y < 23; y++ ) { if( target_bay.ter( x, y ) == t && x_in_y( chance, 1.0 ) ) { if( force_bash ) { - for( auto itm : item_group::items_from( ter_tgt.bash.drop_group, calendar::turn ) ) { + for( const item &itm : item_group::items_from( ter_tgt.bash.drop_group, calendar::turn ) ) { comp.companion_mission_inv.push_back( itm ); } harvested++; @@ -2608,13 +2602,13 @@ tripoint talk_function::om_target_tile( const tripoint &omt_pos, int min_range, oter_id &omt_ref = overmap_buffer.ter( omt_tgt ); - if( must_see && overmap_buffer.seen( omt_tgt.x, omt_tgt.y, omt_tgt.z ) == false ) { + if( must_see && !overmap_buffer.seen( omt_tgt.x, omt_tgt.y, omt_tgt.z ) ) { errors = true; popup( _( "You must be able to see the target that you select." ) ); } if( !errors ) { - for( auto pos_om : bounce_locations ) { + for( const std::string &pos_om : bounce_locations ) { if( bounce && omt_ref.id().c_str() == pos_om && range > 5 ) { if( query_yn( _( "Do you want to bounce off this location to extend range?" ) ) ) { om_line_mark( omt_pos, omt_tgt ); @@ -2630,7 +2624,7 @@ tripoint talk_function::om_target_tile( const tripoint &omt_pos, int min_range, return omt_tgt; } - for( auto pos_om : possible_om_types ) { + for( const std::string &pos_om : possible_om_types ) { if( omt_ref.id().c_str() == pos_om ) { return omt_tgt; } @@ -2782,12 +2776,11 @@ std::vector talk_function::om_companion_path( const tripoint &start, i bool bounce ) { std::vector scout_points; - tripoint spt; tripoint last = start; int range = range_start; int def_range = range_start; while( range > 3 ) { - spt = om_target_tile( last, 0, range, {}, false, true, last, false ); + tripoint spt = om_target_tile( last, 0, range, {}, false, true, last, false ); if( spt == tripoint( -999, -999, -999 ) ) { scout_points.clear(); return scout_points; @@ -2895,7 +2888,7 @@ bool talk_function::camp_menial_sort_pts( npc &p, bool reset_pts, bool choose_pt for( size_t x = 0; x < sort_pts.size(); x++ ) { std::string trip_string = string_format( "( %d, %d, %d)", sort_pts[x].x, sort_pts[x].y, sort_pts[x].z ); - std::string old_string = ""; + std::string old_string; if( p.companion_mission_points.size() == sort_pts.size() ) { old_string = string_format( "( %d, %d, %d)", p.companion_mission_points[x].x, p.companion_mission_points[x].y, @@ -3058,7 +3051,7 @@ std::string talk_function::om_upgrade_description( const std::string &bldg ) component_print_buffer.insert( component_print_buffer.end(), tools.begin(), tools.end() ); component_print_buffer.insert( component_print_buffer.end(), comps.begin(), comps.end() ); - std::string comp = ""; + std::string comp; for( auto &elem : component_print_buffer ) { comp = comp + elem + "\n"; } @@ -3082,7 +3075,7 @@ std::string talk_function::om_craft_description( const std::string &itm ) component_print_buffer.insert( component_print_buffer.end(), tools.begin(), tools.end() ); component_print_buffer.insert( component_print_buffer.end(), comps.begin(), comps.end() ); - std::string comp = ""; + std::string comp; for( auto &elem : component_print_buffer ) { comp = comp + elem + "\n"; } @@ -3249,7 +3242,7 @@ std::string talk_function::camp_farm_description( const tripoint &omt_pos, bool std::string crops; int total_c = 0; - for( auto i : plant_names ) { + for( const std::string &i : plant_names ) { if( total_c < 5 ) { crops += "\t" + i + " \n"; total_c++; @@ -3275,7 +3268,7 @@ std::string talk_function::camp_car_description( vehicle *car ) { std::string entry = string_format( _( "Name: %25s\n" ), car->name ); entry += _( "---- Engines ----\n" ); - for( const vpart_reference &vpr : car->get_parts( "ENGINE" ) ) { + for( const vpart_reference &vpr : car->get_any_parts( "ENGINE" ) ) { const vehicle_part &pt = vpr.part(); const vpart_info &vp = pt.info(); entry += string_format( _( "Engine: %25s\n" ), vp.name() ); @@ -3308,7 +3301,6 @@ std::string talk_function::camp_direction( const std::string &line ) line.find_last_of( ']' ) - line.find_last_of( '[' ) + 1 ); } - // food supply int talk_function::camp_food_supply( int change, bool return_days ) { @@ -3356,7 +3348,10 @@ bool talk_function::camp_distribute_food( npc &p ) } int total = 0; - for( auto &i : g->m.i_at( p_food_stock ) ) { + std::vector keep_me; + auto initial_items = g->m.i_at( p_food_stock ); + for( auto &i : initial_items ) { + bool track = p_trash == p_food_stock; if( i.is_container() && i.get_contained().is_food() ) { auto comest = i.get_contained(); i.contents.clear(); @@ -3367,9 +3362,14 @@ bool talk_function::camp_distribute_food( npc &p ) i.on_contents_changed(); g->m.add_item_or_charges( litter_spread, i, false ); i = comest; + track = false; } if( i.is_comestible() && ( i.rotten() || i.type->comestible->fun < -6 ) ) { - g->m.add_item_or_charges( p_trash, i, false ); + if( track ) { + keep_me.push_back( i ); + } else { + g->m.add_item_or_charges( p_trash, i, false ); + } } else if( i.is_food() ) { float rot_multip; int rots_in = to_days( time_duration::from_turns( i.spoilage_sort_order() ) ); @@ -3386,12 +3386,24 @@ bool talk_function::camp_distribute_food( npc &p ) total += i.type->comestible->nutr * rot_multip; } } else if( i.is_corpse() ) { - g->m.add_item_or_charges( p_trash, i, false ); + if( track ) { + keep_me.push_back( i ); + } else { + g->m.add_item_or_charges( p_trash, i, false ); + } } else { - g->m.add_item_or_charges( p_tool, i, false ); + if( p_tool == p_food_stock ) { + keep_me.push_back( i ); + } else { + g->m.add_item_or_charges( p_tool, i, false ); + } } } g->m.i_clear( p_food_stock ); + for( auto &i : keep_me ) { + g->m.add_item_or_charges( p_food_stock, i, false ); + } + popup( _( "You distribute %d kcal worth of food to your companions." ), total * 10 ); camp_food_supply( total ); return true; diff --git a/src/faction_camp.h b/src/faction_camp.h index 028ed948d26ea..acd95b2a08dea 100644 --- a/src/faction_camp.h +++ b/src/faction_camp.h @@ -2,10 +2,8 @@ #ifndef FACTION_CAMP_H #define FACTION_CAMP_H -#include -#include #include -#include +#include class martialart; class JsonObject; @@ -46,11 +44,12 @@ void recover_camp( npc & ); void remove_overseer( npc & ); /** - * Counts or destroys and drops the bash items of all furniture that matches @ref furn_id f in the map tile - * @param omt_tgt, the targeted OM tile - * @param furn_id, furniture you are looking for - * @param chance of destruction, 0 to 1.00 - * @param force_bash, whether you want to destroy the furniture and drop the items vs counting the furniture + * Counts or destroys and drops the bash items of all furniture that matches @ref f in the map tile + * @param comp NPC companion + * @param omt_tgt the targeted OM tile + * @param f furniture you are looking for + * @param chance chance of destruction, 0 to 1.00 + * @param force_bash whether you want to destroy the furniture and drop the items vs counting the furniture */ int om_harvest_furn( npc &comp, const tripoint &omt_tgt, const furn_id &f, float chance = 1.0, bool force_bash = true ); @@ -69,13 +68,14 @@ bool om_set_hide_site( npc &comp, const tripoint &omt_tgt, const std::vector &itms_rem = {} ); /** * Opens the overmap so that you can select points for missions or constructions. - * @param omt_pos, where your camp is, used for calculating travel distances + * @param omt_pos where your camp is, used for calculating travel distances * @param min_range - * @param range, max number of OM tiles the user can select - * @param possible_om_types, requires the user to reselect if the OM picked isn't in the list - * @param must_see, whether the user can select points in the unknown/fog of war - * @param popup_notice, toggles if the user should be shown ranges before being allowed to pick - * @param source, if you are selecting multiple points this is where the OM is centered to start + * @param range max number of OM tiles the user can select + * @param possible_om_types requires the user to reselect if the OM picked isn't in the list + * @param must_see whether the user can select points in the unknown/fog of war + * @param popup_notice toggles if the user should be shown ranges before being allowed to pick + * @param source if you are selecting multiple points this is where the OM is centered to start + * @param bounce */ tripoint om_target_tile( const tripoint &omt_pos, int min_range = 1, int range = 1, const std::vector &possible_om_types = {}, @@ -91,10 +91,10 @@ std::vector om_companion_path( const tripoint &start, int range = 90, /** * Can be used to calculate total trip time for an NPC mission or just the traveling portion. Doesn't use the pathing * algorithms yet. - * @param omt_pos, start point - * @param omt_tgt, target point - * @param work, how much time the NPC will stay at the target - * @param trips, how many trips back and forth the NPC will make + * @param omt_pos start point + * @param omt_tgt target point + * @param work how much time the NPC will stay at the target + * @param trips how many trips back and forth the NPC will make */ time_duration companion_travel_time_calc( const tripoint &omt_pos, const tripoint &omt_tgt, time_duration work, @@ -159,22 +159,30 @@ bool camp_garage_chop_start( npc &p, const std::string &task ); /** * spawn items or corpses based on search attempts - * @param skill, skill level of the search - * @param groupd_id, name of the item_group that provides the items - * @param task, string to identify what types of corpses to provide ( _faction_camp_hunting or _faction_camp_trapping ) - * @param attempts, number of skill checks to make - * @param difficulty, a random number from 0 to difficulty is created for each attempt, and if skill is higher, an item or corpse is spawned + * @param skill skill level of the search + * @param group_id name of the item_group that provides the items + * @param attempts number of skill checks to make + * @param difficulty a random number from 0 to difficulty is created for each attempt, and if skill is higher, an item or corpse is spawned */ void camp_search_results( int skill, const Group_tag &group_id, int attempts, int difficulty ); +/** + * spawn items or corpses based on search attempts + * @param skill skill level of the search + * @param task string to identify what types of corpses to provide ( _faction_camp_hunting or _faction_camp_trapping ) + * @param attempts number of skill checks to make + * @param difficulty a random number from 0 to difficulty is created for each attempt, and if skill is higher, an item or corpse is spawned + */ void camp_hunting_results( int skill, const std::string &task, int attempts, int difficulty ); /// Called when a companion completes any mission and calls companion_return void camp_companion_return( npc &comp ); /** * Perform any mix of the three farm tasks. - * @param harvest, should the NPC harvest every harvestable plant - * @param plant, NPC will keep planting until they are out of dirt mounds or seeds in mission inventory - * @param plow, references the farm json and plows any dirt or grass tiles that are where dirt mounds should be + * @param p NPC companion + * @param task string to identify what types of corpses to provide ( _faction_camp_hunting or _faction_camp_trapping ) + * @param harvest should the NPC harvest every harvestable plant + * @param plant NPC will keep planting until they are out of dirt mounds or seeds in mission inventory + * @param plow references the farm json and plows any dirt or grass tiles that are where dirt mounds should be */ bool camp_farm_return( npc &p, const std::string &task, bool harvest, bool plant, bool plow ); /// Sorts all items within most of the confines of the camp into piles designated by the player or defaulted to @@ -183,8 +191,9 @@ void camp_fortifications_return( npc &p ); void combat_mission_return( std::string &miss, npc &p ); /** * Sets the location of the sorting piles used above. - * @param reset_pts, reverts all previous points to defaults. Called/checked so we can add new point with compatability - * @param choose_pts, let the player flip through all of the points and set the ones they want + * @param p NPC companion + * @param reset_pts reverts all previous points to defaults. Called/checked so we can add new point with compatability + * @param choose_pts let the player flip through all of the points and set the ones they want */ bool camp_menial_sort_pts( npc &p, bool reset_pts = true, bool choose_pts = false ); /// Choose which expansion you should start, called when a survey mission is completed @@ -222,7 +231,7 @@ std::string name_mission_tabs( npc &p, const std::string &id, const std::string /// Creats a map of all the recipes that are available to a building at om_cur, "ALL" for all possible std::map camp_recipe_deck( const std::string &om_cur ); /// Determines what the absolute max (out of 9999) that can be crafted using inventory and food supplies -int camp_recipe_batch_max( const recipe making, const inventory &total_inv ); +int camp_recipe_batch_max( const recipe &making, const inventory &total_inv ); /* * check if a companion survives a random encounter @@ -234,5 +243,5 @@ int camp_recipe_batch_max( const recipe making, const inventory &total_inv ); */ bool survive_random_encounter( npc &comp, std::string &situation, int favor, int threat ); -}; +} #endif diff --git a/src/fault.cpp b/src/fault.cpp index 377f21b3da6af..6ab0a8aec0086 100644 --- a/src/fault.cpp +++ b/src/fault.cpp @@ -2,8 +2,8 @@ #include "debug.h" #include "json.h" -#include "translations.h" #include "requirements.h" +#include "translations.h" static std::map faults_all; diff --git a/src/fault.h b/src/fault.h index ba2d8c85cc917..502bd40269b3b 100644 --- a/src/fault.h +++ b/src/fault.h @@ -4,7 +4,6 @@ #include "string_id.h" -#include #include class JsonObject; diff --git a/src/field.cpp b/src/field.cpp index e05b877c28ec6..6ac212849f293 100644 --- a/src/field.cpp +++ b/src/field.cpp @@ -1,34 +1,32 @@ #include "field.h" -#include "rng.h" -#include "map.h" + +#include "calendar.h" #include "cata_utility.h" #include "debug.h" +#include "emit.h" #include "enums.h" #include "fire.h" -#include "game.h" #include "fungal_effects.h" -#include "messages.h" -#include "vpart_position.h" -#include "translations.h" +#include "game.h" +#include "itype.h" +#include "map.h" +#include "map_iterator.h" +#include "mapdata.h" #include "material.h" +#include "messages.h" #include "monster.h" +#include "mtype.h" #include "npc.h" -#include "trap.h" -#include "itype.h" -#include "emit.h" -#include "vehicle.h" #include "output.h" -#include "calendar.h" -#include "submap.h" -#include "mapdata.h" -#include "mtype.h" -#include "emit.h" +#include "rng.h" #include "scent_map.h" -#include "map_iterator.h" -#include "morale_types.h" +#include "submap.h" +#include "translations.h" +#include "vehicle.h" +#include "vpart_position.h" -#include #include +#include const species_id FUNGUS( "FUNGUS" ); @@ -513,9 +511,8 @@ bool map::process_fields() bool dirty_transparency_cache = false; const int minz = zlevels ? -OVERMAP_DEPTH : abs_sub.z; const int maxz = zlevels ? OVERMAP_HEIGHT : abs_sub.z; - bool zlev_dirty; for( int z = minz; z <= maxz; z++ ) { - zlev_dirty = false; + bool zlev_dirty = false; for( int x = 0; x < my_MAPSIZE; x++ ) { for( int y = 0; y < my_MAPSIZE; y++ ) { submap *const current_submap = get_submap_at_grid( x, y, z ); @@ -737,7 +734,6 @@ bool map::process_fields_in_submap( submap *const current_submap, //Holds m.field_at(x,y).findField(fd_some_field) type returns. // Just to avoid typing that long string for a temp value. field_entry *tmpfld = nullptr; - field_id curtype; //Holds cur.getFieldType() as that is what the old system used before rewrite. tripoint thep; thep.z = submap_z; @@ -771,7 +767,8 @@ bool map::process_fields_in_submap( submap *const current_submap, continue; } - curtype = cur.getFieldType(); + //Holds cur.getFieldType() as that is what the old system used before rewrite. + field_id curtype = cur.getFieldType(); // Again, legacy support in the event someone Mods setFieldDensity to allow more values. if( cur.getFieldDensity() > 3 || cur.getFieldDensity() < 1 ) { debugmsg( "Whoooooa density of %d", cur.getFieldDensity() ); @@ -783,7 +780,6 @@ bool map::process_fields_in_submap( submap *const current_submap, } int part; - vehicle *veh; switch( curtype ) { case fd_null: case num_fields: @@ -937,7 +933,7 @@ bool map::process_fields_in_submap( submap *const current_submap, } //Get the part of the vehicle in the fire. - veh = veh_at_internal( p, part ); // _internal skips the boundary check + vehicle *veh = veh_at_internal( p, part ); // _internal skips the boundary check if( veh != nullptr ) { veh->damage( part, cur.getFieldDensity() * 10, DT_HEAT, true ); //Damage the vehicle in the fire. @@ -2495,8 +2491,7 @@ time_duration field_entry::setFieldAge( const time_duration new_age ) } field::field() - : field_list() - , draw_symbol( fd_null ) + : draw_symbol( fd_null ) { } @@ -2709,7 +2704,7 @@ void map::propagate_field( const tripoint ¢er, field_id fid, int amount, continue; } - open.push( { ( float )rl_dist( center, pt ), pt } ); + open.push( { static_cast( rl_dist( center, pt ) ), pt } ); } } } diff --git a/src/field.h b/src/field.h index ec9b168238690..07cf3588c35b4 100644 --- a/src/field.h +++ b/src/field.h @@ -2,15 +2,13 @@ #ifndef FIELD_H #define FIELD_H -#include "game_constants.h" -#include "color.h" #include "calendar.h" +#include "color.h" +#include "game_constants.h" -#include -#include -#include -#include #include +#include +#include enum phase_id : int; diff --git a/src/filesystem.cpp b/src/filesystem.cpp index 6f69fa1f1b90e..ee8d707eed177 100644 --- a/src/filesystem.cpp +++ b/src/filesystem.cpp @@ -1,21 +1,18 @@ #include "filesystem.h" + #include "debug.h" -#include // for strnlen -#include +#include #include #include #include -#include -#include -#include +#include #include -#include -#include #include - +#include // FILE I/O #include +#include #ifdef _MSC_VER # include "wdirent.h" diff --git a/src/flag.cpp b/src/flag.cpp index 762d611a304d7..86abfbfb59adc 100644 --- a/src/flag.cpp +++ b/src/flag.cpp @@ -3,8 +3,8 @@ #include "debug.h" #include "json.h" -#include #include +#include std::map json_flags_all; diff --git a/src/font_loader.h b/src/font_loader.h index caa4705ee54d2..f9b7b342f4936 100644 --- a/src/font_loader.h +++ b/src/font_loader.h @@ -2,14 +2,14 @@ #ifndef FONT_LOADER_H #define FONT_LOADER_H +#include "debug.h" +#include "filesystem.h" #include "json.h" #include "path_info.h" -#include "filesystem.h" -#include "debug.h" -#include #include #include +#include class font_loader { diff --git a/src/fragment_cloud.h b/src/fragment_cloud.h index 0bf99a180ca98..1d43dc2401ca8 100644 --- a/src/fragment_cloud.h +++ b/src/fragment_cloud.h @@ -2,6 +2,7 @@ #ifndef FRAGMENT_CLOUD_H #define FRAGMENT_CLOUD_H +enum class quadrant; /* * fragment_cloud represents the density and velocity of fragments passing through a square. */ @@ -24,6 +25,7 @@ fragment_cloud shrapnel_calc( const fragment_cloud &initial, const fragment_cloud &cloud, const int &distance ); bool shrapnel_check( const fragment_cloud &cloud, const fragment_cloud &intensity ); +void update_fragment_cloud( fragment_cloud &update, const fragment_cloud &new_value, quadrant ); fragment_cloud accumulate_fragment_cloud( const fragment_cloud &cumulative_cloud, const fragment_cloud ¤t_cloud, const int &distance ); diff --git a/src/fungal_effects.cpp b/src/fungal_effects.cpp index 1c75f615b1e2b..268d62ee2fba3 100644 --- a/src/fungal_effects.cpp +++ b/src/fungal_effects.cpp @@ -1,16 +1,16 @@ #include "fungal_effects.h" + +#include "creature.h" +#include "field.h" #include "game.h" #include "map.h" +#include "map_iterator.h" #include "mapdata.h" -#include "creature.h" +#include "messages.h" #include "monster.h" -#include "field.h" #include "mtype.h" -#include "map_iterator.h" #include "output.h" #include "player.h" -#include "messages.h" -#include "field.h" const mtype_id mon_fungal_blossom( "mon_fungal_blossom" ); const mtype_id mon_spore( "mon_spore" ); diff --git a/src/game.cpp b/src/game.cpp index 0394cff0da32d..90ed2bf5c62e1 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1,129 +1,117 @@ #include "game.h" -#include "coordinate_conversions.h" -#include "rng.h" -#include "dependency_tree.h" -#include "input.h" -#include "output.h" -#include "skill.h" -#include "vpart_range.h" -#include "line.h" -#include "computer.h" -#include "veh_interact.h" -#include "item_category.h" -#include "veh_type.h" -#include "options.h" +#include "action.h" +#include "activity_handlers.h" +#include "artifact.h" #include "auto_pickup.h" -#include "effect.h" #include "bionics.h" -#include "gamemode.h" -#include "vpart_reference.h" -#include "mapbuffer.h" -#include "map_item_stack.h" +#include "bodypart.h" +#include "cata_utility.h" +#include "catacharset.h" +#include "catalua.h" +#include "clzones.h" +#include "compatibility.h" +#include "computer.h" +#include "coordinate_conversions.h" +#include "coordinates.h" +#include "creature_tracker.h" #include "debug.h" #include "debug_menu.h" -#include "gun_mode.h" +#include "dependency_tree.h" #include "editmap.h" -#include "bodypart.h" -#include "map.h" -#include "uistate.h" -#include "ranged.h" -#include "item_group.h" -#include "trait_group.h" -#include "json.h" -#include "vpart_position.h" -#include "artifact.h" -#include "overmapbuffer.h" -#include "trap.h" -#include "mapdata.h" -#include "catacharset.h" -#include "translations.h" -#include "init.h" -#include "help.h" -#include "action.h" -#include "monstergenerator.h" -#include "monattack.h" -#include "string_formatter.h" -#include "mondefense.h" -#include "monfaction.h" -#include "worldfactory.h" +#include "effect.h" +#include "enums.h" +#include "event.h" +#include "faction.h" #include "filesystem.h" -#include "mod_manager.h" -#include "path_info.h" +#include "game_constants.h" +#include "game_inventory.h" +#include "gamemode.h" +#include "gates.h" +#include "gun_mode.h" +#include "help.h" #include "iexamine.h" -#include "mapbuffer.h" -#include "mapsharing.h" -#include "messages.h" -#include "pickup.h" -#include "weather_gen.h" -#include "start_location.h" -#include "debug.h" -#include "catalua.h" -#include "lua_console.h" -#include "sounds.h" +#include "init.h" +#include "input.h" +#include "item_category.h" +#include "item_group.h" +#include "item_location.h" #include "iuse_actor.h" -#include "mutation.h" -#include "mtype.h" +#include "json.h" +#include "lightmap.h" +#include "line.h" +#include "live_view.h" +#include "loading_ui.h" +#include "lua_console.h" #include "map.h" +#include "map_item_stack.h" #include "map_iterator.h" -#include "overmap.h" -#include "overmap_ui.h" -#include "omdata.h" -#include "crafting.h" -#include "construction.h" -#include "lightmap.h" -#include "npc.h" -#include "npc_class.h" -#include "scenario.h" +#include "mapbuffer.h" +#include "mapdata.h" +#include "mapsharing.h" +#include "martialarts.h" +#include "messages.h" #include "mission.h" -#include "compatibility.h" +#include "mod_manager.h" +#include "monattack.h" +#include "monexamine.h" +#include "monfaction.h" #include "mongroup.h" +#include "monstergenerator.h" #include "morale_types.h" -#include "worldfactory.h" -#include "material.h" -#include "martialarts.h" -#include "event.h" -#include "coordinates.h" -#include "creature_tracker.h" -#include "vehicle.h" -#include "submap.h" -#include "mapgen_functions.h" -#include "clzones.h" -#include "item_location.h" -#include "weather.h" -#include "faction.h" -#include "enums.h" -#include "live_view.h" -#include "recipe_dictionary.h" -#include "cata_utility.h" -#include "pathfinding.h" +#include "mtype.h" +#include "mutation.h" +#include "npc.h" +#include "npc_class.h" +#include "omdata.h" +#include "options.h" +#include "output.h" +#include "overmap.h" +#include "overmap_ui.h" +#include "overmapbuffer.h" +#include "path_info.h" +#include "pickup.h" +#include "popup.h" #include "projectile.h" -#include "game_inventory.h" -#include "gates.h" -#include "scent_map.h" +#include "ranged.h" +#include "recipe_dictionary.h" +#include "rng.h" #include "safemode_ui.h" -#include "game_constants.h" -#include "string_input_popup.h" -#include "monexamine.h" -#include "loading_ui.h" -#include "popup.h" +#include "scenario.h" +#include "scent_map.h" #include "sidebar.h" -#include "activity_handlers.h" +#include "sounds.h" +#include "start_location.h" +#include "string_formatter.h" +#include "string_input_popup.h" +#include "submap.h" +#include "trait_group.h" +#include "translations.h" +#include "trap.h" +#include "uistate.h" +#include "veh_interact.h" +#include "veh_type.h" +#include "vehicle.h" +#include "vpart_position.h" +#include "vpart_range.h" +#include "vpart_reference.h" +#include "weather.h" +#include "weather_gen.h" +#include "worldfactory.h" +#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include -#include #include -#include +#include #include -#include -#include -#include -#include -#include -#include -#include #ifdef TILES #include "cata_tiles.h" @@ -134,6 +122,7 @@ #endif #if !(defined _WIN32 || defined WINDOWS || defined TILES) +#include #include #endif @@ -196,7 +185,6 @@ const efftype_id effect_winded( "winded" ); static const bionic_id bio_remote( "bio_remote" ); static const trait_id trait_GRAZER( "GRAZER" ); -static const trait_id trait_HIBERNATE( "HIBERNATE" ); static const trait_id trait_ILLITERATE( "ILLITERATE" ); static const trait_id trait_INFIMMUNE( "INFIMMUNE" ); static const trait_id trait_INFRESIST( "INFRESIST" ); @@ -222,7 +210,7 @@ extern bool add_key_to_quick_shortcuts( long key, const std::string &category, b #endif //The one and only game instance -game *g; +std::unique_ptr g; #ifdef TILES extern std::unique_ptr tilecontext; extern void toggle_fullscreen_window(); @@ -237,33 +225,16 @@ bool is_valid_in_w_terrain( int x, int y ) // This is the main game set-up process. game::game() : - map_ptr(), - u_ptr(), - liveview_ptr(), liveview( *liveview_ptr ), scent_ptr( *this ), - event_manager_ptr(), new_game( false ), uquit( QUIT_NO ), m( *map_ptr ), u( *u_ptr ), scent( *scent_ptr ), events( *event_manager_ptr ), - critter_tracker(), weather( WEATHER_CLEAR ), lightning_active( false ), - weather_precise(), - w_terrain(), - w_overmap(), - w_omlegend(), - w_minimap(), - w_pixel_minimap(), - w_HP(), - w_messages(), - w_location(), - w_status(), - w_status2(), - w_blackspace(), pixel_minimap_option( 0 ), safe_mode( SAFE_MODE_ON ), safe_mode_warning_logged( false ), @@ -272,7 +243,6 @@ game::game() : next_npc_id( 1 ), next_mission_id( 1 ), remoteveh_cache_time( calendar::before_time_starts ), - gamemode(), user_action_counter( 0 ), tileset_zoom( 16 ), weather_override( WEATHER_NULL ) @@ -951,7 +921,7 @@ bool game::start_game() std::string name = v.v->type.str(); std::string search = std::string( "helicopter" ); if( name.find( search ) != std::string::npos ) { - for( const vpart_reference &vp : v.v->get_parts_including_broken( VPFLAG_CONTROLS ) ) { + for( const vpart_reference &vp : v.v->get_any_parts( VPFLAG_CONTROLS ) ) { const tripoint pos = vp.pos(); u.setpos( pos ); @@ -1204,7 +1174,7 @@ bool game::cleanup_at_end() iOffsetX ); draw_border( w_rip ); - sfx::do_player_death_hurt( g->u, 1 ); + sfx::do_player_death_hurt( g->u, true ); sfx::fade_audio_group( 1, 2000 ); sfx::fade_audio_group( 2, 2000 ); sfx::fade_audio_group( 3, 2000 ); @@ -1335,7 +1305,7 @@ bool game::cleanup_at_end() case 2: queryDelete = true; break; - }; + } } if( queryDelete || get_option( "WORLD_END" ) == "delete" ) { @@ -2161,7 +2131,7 @@ int game::inventory_item_menu( int pos, int iStartX, int iWidth, action_menu.query( false ); if( action_menu.ret >= 0 ) { cMenu = action_menu.ret; /* Remember: hotkey == retval, see addentry above. */ - } else if( action_menu.ret == UIMENU_UNBOUND && action_menu.keypress == KEY_RIGHT ) { + } else if( action_menu.ret == UILIST_UNBOUND && action_menu.keypress == KEY_RIGHT ) { // Simulate KEY_RIGHT == '\n' (confirm currently selected entry) for compatibility with old version. // TODO: ideally this should be done in the uilist, maybe via a callback. cMenu = action_menu.ret = action_menu.entries[action_menu.selected].retval; @@ -2245,7 +2215,7 @@ int game::inventory_item_menu( int pos, int iStartX, int iWidth, default: break; } - } while( action_menu.ret == UIMENU_WAIT_INPUT || action_menu.ret == UIMENU_UNBOUND ); + } while( action_menu.ret == UILIST_WAIT_INPUT || action_menu.ret == UILIST_UNBOUND ); } return cMenu; } @@ -3038,8 +3008,7 @@ void game::debug() break; case 6: { - std::string s; - s = _( "Location %d:%d in %d:%d, %s\n" ); + std::string s = _( "Location %d:%d in %d:%d, %s\n" ); s += _( "Current turn: %d.\n%s\n" ); s += ngettext( "%d creature exists.\n", "%d creatures exist.\n", num_creatures() ); popup_top( @@ -3165,7 +3134,7 @@ void game::debug() weather_menu.query(); if( weather_menu.ret >= 0 && weather_menu.ret < NUM_WEATHER_TYPES ) { - weather_type selected_weather = ( weather_type )weather_menu.ret; + weather_type selected_weather = static_cast( weather_menu.ret ); weather_override = selected_weather; nextweather = calendar::turn; update_weather(); @@ -3288,7 +3257,7 @@ void game::debug() default: break; } - } while( smenu.ret != UIMENU_CANCEL ); + } while( smenu.ret != UILIST_CANCEL ); } break; case 27: { @@ -3330,7 +3299,7 @@ void game::debug() draw_counter++; } add_msg( m_info, _( "Drew %d times in %.3f seconds. (%.3f fps average)" ), draw_counter, - difference / 1000.0, 1000.0 * draw_counter / ( double )difference ); + difference / 1000.0, 1000.0 * draw_counter / static_cast( difference ) ); } break; @@ -3773,7 +3742,7 @@ void game::draw_critter( const Creature &critter, const tripoint ¢er ) return; } if( critter.posz() != center.z && m.has_zlevels() ) { - static const tripoint up_tripoint( 0, 0, 1 ); + static constexpr tripoint up_tripoint( 0, 0, 1 ); if( critter.posz() == center.z - 1 && ( debug_mode || u.sees( critter ) ) && m.valid_move( critter.pos(), critter.pos() + up_tripoint, false, true ) ) { @@ -4101,7 +4070,6 @@ void game::draw_minimap() } const int omx = cursx + i; const int omy = cursy + j; - tripoint const cur_pos {omx, omy, get_levz()}; if( overmap_buffer.get_horde_size( omx, omy, get_levz() ) >= HORDE_VISIBILITY_SIZE ) { tripoint const cur_pos {omx, omy, get_levz()}; if( overmap_buffer.seen( omx, omy, get_levz() ) @@ -4447,11 +4415,10 @@ int game::mon_info( const catacurses::window &w ) // Print the symbols of all monsters in all directions. for( int i = 0; i < 8; i++ ) { - int symroom; point pr( xcoords[i] + widths[i] + 1, ycoords[i] + startrow ); // The list of symbols needs a space on each end. - symroom = ( width / 3 ) - widths[i] - 2; + int symroom = ( width / 3 ) - widths[i] - 2; const int typeshere_npc = unique_types[i].size(); const int typeshere_mon = unique_mons[i].size(); const int typeshere = typeshere_mon + typeshere_npc; @@ -5154,7 +5121,6 @@ void game::emp_blast( const tripoint &p ) // TODO: Implement z part int x = p.x; int y = p.y; - int rn; const bool sight = g->u.sees( p ); if( m.has_flag( "CONSOLE", x, y ) ) { if( sight ) { @@ -5165,7 +5131,7 @@ void game::emp_blast( const tripoint &p ) } // TODO: More terrain effects. if( m.ter( x, y ) == t_card_science || m.ter( x, y ) == t_card_military ) { - rn = rng( 1, 100 ); + int rn = rng( 1, 100 ); if( rn > 92 || rn < 40 ) { if( sight ) { add_msg( _( "The card reader is rendered non-functional." ) ); @@ -5618,7 +5584,7 @@ void game::use_item( int pos ) make_active( loc.clone() ); } else { u.use( pos ); - }; + } u.invalidate_crafting_inventory(); } @@ -5632,7 +5598,7 @@ void game::exam_vehicle( vehicle &veh, int cx, int cy ) } } -bool game::forced_door_closing( const tripoint &p, const ter_id door_type, int bash_dmg ) +bool game::forced_door_closing( const tripoint &p, const ter_id &door_type, int bash_dmg ) { // TODO: Z const int &x = p.x; @@ -5780,9 +5746,9 @@ void game::moving_vehicle_dismount( const tripoint &dest_loc ) // Hit the ground according to vehicle speed if( !m.has_flag( "SWIMMABLE", u.pos() ) ) { if( veh->velocity > 0 ) { - fling_creature( &u, veh->face.dir(), veh->velocity / ( float )100 ); + fling_creature( &u, veh->face.dir(), veh->velocity / static_cast( 100 ) ); } else { - fling_creature( &u, veh->face.dir() + 180, -( veh->velocity ) / ( float )100 ); + fling_creature( &u, veh->face.dir() + 180, -( veh->velocity ) / static_cast( 100 ) ); } } } @@ -6545,9 +6511,8 @@ void game::print_fields_info( const tripoint &lp, const catacurses::window &w_lo if( fld.first == fd_fire && ( m.has_flag( TFLAG_FIRE_CONTAINER, lp ) || m.ter( lp ) == t_pit_shallow || m.ter( lp ) == t_pit ) ) { const int max_width = getmaxx( w_look ) - column - 2; - int lines; - lines = fold_and_print( w_look, ++line, column, max_width, cur.color(), - get_fire_fuel_string( lp ) ) - 1; + int lines = fold_and_print( w_look, ++line, column, max_width, cur.color(), + get_fire_fuel_string( lp ) ) - 1; line += lines; } else { mvwprintz( w_look, ++line, column, cur.color(), cur.name() ); @@ -6988,11 +6953,11 @@ void game::zones_manager() uilist as_m; as_m.text = _( "What do you want to change:" ); - as_m.entries.emplace_back( uimenu_entry( 1, true, '1', _( "Edit name" ) ) ); - as_m.entries.emplace_back( uimenu_entry( 2, true, '2', _( "Edit type" ) ) ); - as_m.entries.emplace_back( uimenu_entry( 3, zone.get_options().has_options(), '3', - _( "Edit options" ) ) ); - as_m.entries.emplace_back( uimenu_entry( 4, true, '4', _( "Edit position" ) ) ); + as_m.entries.emplace_back( 1, true, '1', _( "Edit name" ) ); + as_m.entries.emplace_back( 2, true, '2', _( "Edit type" ) ); + as_m.entries.emplace_back( 3, zone.get_options().has_options(), '3', + _( "Edit options" ) ); + as_m.entries.emplace_back( 4, true, '4', _( "Edit position" ) ); as_m.query(); switch( as_m.ret ) { @@ -7481,8 +7446,6 @@ std::vector game::find_nearby_items( int iRadius ) std::vector points = closest_tripoints_first( iRadius, u.pos() ); - tripoint last_pos; - for( auto &points_p_it : points ) { if( points_p_it.y >= u.posy() - iRadius && points_p_it.y <= u.posy() + iRadius && u.sees( points_p_it ) && @@ -8145,7 +8108,6 @@ game::vmenu_ret game::list_monsters( const std::vector &monster_list int iActive = 0; // monster index that we're looking at const int iMaxRows = TERMY - iInfoHeight - 2 - VIEW_OFFSET_Y * 2 - 1; int iStartPos = 0; - tripoint iActivePos; cata::optional iLastActivePos; Creature *cCurMon = nullptr; @@ -8370,7 +8332,7 @@ game::vmenu_ret game::list_monsters( const std::vector &monster_list } // Only redraw trail/terrain if x/y position changed or if keybinding menu erased it - iActivePos = cCurMon->pos() - u.pos(); + tripoint iActivePos = cCurMon->pos() - u.pos(); if( ( !iLastActivePos || iActivePos != *iLastActivePos ) || action == "HELP_KEYBINDINGS" ) { iLastActivePos.emplace( iActivePos ); centerlistview( iActivePos ); @@ -8410,7 +8372,7 @@ game::vmenu_ret game::list_monsters( const std::vector &monster_list std::vector nearby_vehicles_for( const itype_id &ft ) { std::vector result; - for( auto &&p : g->m.points_in_radius( g->u.pos(), 1 ) ) { + for( auto &&p : g->m.points_in_radius( g->u.pos(), 1 ) ) { // *NOPAD* vehicle *const veh = veh_pointer_or_null( g->m.veh_at( p ) ); // TODO: constify fuel_left and fuel_capacity // TODO: add a fuel_capacity_left function @@ -8817,8 +8779,8 @@ void game::plthrow( int pos ) m.draw( w_terrain, u.pos() ); // target_ui() sets x and y, or returns empty vector if we canceled (by pressing Esc) - std::vector trajectory; - trajectory = target_handler().target_ui( u, TARGET_MODE_THROW, &thrown, range ); + std::vector trajectory = target_handler().target_ui( u, TARGET_MODE_THROW, &thrown, + range ); if( trajectory.empty() ) { return; } @@ -9112,7 +9074,7 @@ void add_salvagables( uilist &menu, map_stack &items, const std::vector> &stacks, size_t &menu_index, const salvage_actor &salvage_iuse ) { - if( stacks.size() > 0 ) { + if( !stacks.empty() ) { int hotkey = get_initial_hotkey( menu_index ); for( const auto &stack : stacks ) { @@ -9132,7 +9094,7 @@ void add_salvagables( uilist &menu, map_stack &items, void add_disassemblables( uilist &menu, map_stack &items, const std::vector> &stacks, size_t &menu_index ) { - if( stacks.size() > 0 ) { + if( !stacks.empty() ) { int hotkey = get_initial_hotkey( menu_index ); for( const auto &stack : stacks ) { @@ -9158,6 +9120,7 @@ void game::butcher() } const int factor = u.max_quality( quality_id( "BUTCHER" ) ); + const int factorD = u.max_quality( quality_id( "CUT_FINE" ) ); static const char *no_knife_msg = _( "You don't have a butchering tool." ); static const char *no_corpse_msg = _( "There are no corpses here to butcher." ); @@ -9165,7 +9128,7 @@ void game::butcher() if( m.has_flag( "SEALED", u.pos() ) ) { if( m.sees_some_items( u.pos(), u ) ) { add_msg( m_info, _( "You can't access the items here." ) ); - } else if( factor > INT_MIN ) { + } else if( factor > INT_MIN || factorD > INT_MIN ) { add_msg( m_info, no_corpse_msg ); } else { add_msg( m_info, no_knife_msg ); @@ -9224,13 +9187,13 @@ void game::butcher() } } - // Clear corpses if butcher factor is INT_MIN - if( factor == INT_MIN ) { + // Clear corpses if butcher and dissect factors are INT_MIN + if( factor == INT_MIN && factorD == INT_MIN ) { corpses.clear(); } if( corpses.empty() && disassembles.empty() && salvageables.empty() ) { - if( factor > INT_MIN ) { + if( factor > INT_MIN || factorD > INT_MIN ) { add_msg( m_info, no_corpse_msg ); } else { add_msg( m_info, no_knife_msg ); @@ -9288,7 +9251,7 @@ void game::butcher() add_disassemblables( kmenu, items, disassembly_stacks, i ); add_salvagables( kmenu, items, salvage_stacks, i, *salvage_iuse ); - if( corpses.size() > 1 ) { + if( corpses.size() > 1 && factor > INT_MIN ) { int time_to_cut = 0; for( auto index : corpses ) { time_to_cut += butcher_time_to_cut( u, items[index], BUTCHER ); @@ -9926,59 +9889,6 @@ void game::wield() } } -void game::chat() -{ - const std::vector available = get_npcs_if( [&]( const npc & guy ) { - // @todo: Get rid of the z-level check when z-level vision gets "better" - return u.posz() == guy.posz() && - u.sees( guy.pos() ) && - rl_dist( u.pos(), guy.pos() ) <= 24; - } ); - - uilist nmenu; - nmenu.text = std::string( _( "Who do you want to talk to or yell at?" ) ); - - int i = 0; - - for( auto &elem : available ) { - nmenu.addentry( i++, true, MENU_AUTOASSIGN, ( elem )->name ); - } - - int yell = 0; - int yell_sentence = 0; - - nmenu.addentry( yell = i++, true, 'a', _( "Yell" ) ); - nmenu.addentry( yell_sentence = i++, true, 'b', _( "Yell a sentence" ) ); - - nmenu.query(); - if( nmenu.ret < 0 ) { - return; - } else if( nmenu.ret == yell ) { - u.shout(); - } else if( nmenu.ret == yell_sentence ) { - std::string popupdesc = string_format( _( "Enter a sentence to yell" ) ); - string_input_popup popup; - popup.title( string_format( _( "Yell a sentence" ) ) ) - .width( 64 ) - .description( popupdesc ) - .identifier( "sentence" ) - .max_length( 128 ) - .query(); - - std::string sentence = popup.text(); - add_msg( _( "You yell, \"%s\"" ), sentence.c_str() ); - u.shout(); - - } else if( nmenu.ret <= static_cast( available.size() ) ) { - available[nmenu.ret]->talk_to_u(); - } else { - return; - } - - u.moves -= 100; - refresh_all(); -} - bool game::check_safe_mode_allowed( bool repeat_safe_mode_warnings ) { if( !repeat_safe_mode_warnings && safe_mode_warning_logged ) { @@ -10070,7 +9980,7 @@ bool game::disable_robot( const tripoint &p ) } // Manhacks are special, they have their own menu here. if( mid == mon_manhack ) { - int choice = UIMENU_CANCEL; + int choice = UILIST_CANCEL; if( critter.has_effect( effect_docile ) ) { choice = uilist( _( "Reprogram the manhack?" ), { _( "Engage targets." ) } ); } else { @@ -10357,8 +10267,8 @@ bool game::plmove( int dx, int dy, int dz ) bool toDeepWater = m.has_flag( TFLAG_DEEP_WATER, dest_loc ); bool fromSwimmable = m.has_flag( "SWIMMABLE", u.pos() ); bool fromDeepWater = m.has_flag( TFLAG_DEEP_WATER, u.pos() ); - bool fromBoat = veh0 != nullptr && !empty( veh0->get_parts( VPFLAG_FLOATS ) ); - bool toBoat = veh1 != nullptr && !empty( veh1->get_parts( VPFLAG_FLOATS ) ); + bool fromBoat = veh0 != nullptr && !veh0->floating.empty(); + bool toBoat = veh1 != nullptr && !veh1->floating.empty(); if( toSwimmable && toDeepWater && !toBoat ) { // Dive into water! // Requires confirmation if we were on dry land previously @@ -10464,7 +10374,6 @@ bool game::ramp_move( const tripoint &dest_loc ) } const tripoint above_u( u.posx(), u.posy(), u.posz() + 1 ); - const tripoint above_dest( dest_loc.x, dest_loc.y, dest_loc.z + 1 ); if( m.has_floor_or_support( above_u ) ) { add_msg( m_warning, _( "You can't climb here - there's a ceiling above." ) ); return false; @@ -10573,16 +10482,16 @@ bool game::walk_move( const tripoint &dest_loc ) if( slowed ) { // Unless u.pos() has a higher movecost than dest_loc, state that dest_loc is the cause if( mcost_to >= mcost_from ) { - if( vp_there ) { + if( auto displayed_part = vp_there.part_displayed() ) { add_msg( m_warning, _( "Moving onto this %s is slow!" ), - vp_there->vehicle().part_info( vp_there->part_index() ).name().c_str() ); + displayed_part->part().name() ); } else { add_msg( m_warning, _( "Moving onto this %s is slow!" ), m.name( dest_loc ).c_str() ); } } else { - if( vp_here ) { + if( auto displayed_part = vp_here.part_displayed() ) { add_msg( m_warning, _( "Moving off of this %s is slow!" ), - vp_here->vehicle().part_info( vp_here->part_index() ).name().c_str() ); + displayed_part->part().name() ); } else { add_msg( m_warning, _( "Moving off of this %s is slow!" ), m.name( u.pos() ).c_str() ); } @@ -10894,9 +10803,8 @@ void game::place_player( const tripoint &dest_loc ) } int and_the_rest = 0; for( size_t i = 0; i < names.size(); ++i ) { - std::string fmt; //~ number of items: " " - fmt = ngettext( "%1$d %2$s", "%1$d %2$s", counts[i] ); + std::string fmt = ngettext( "%1$d %2$s", "%1$d %2$s", counts[i] ); names[i] = string_format( fmt, counts[i], names[i].c_str() ); // Skip the first two. if( i > 1 ) { @@ -12263,7 +12171,7 @@ void game::update_stair_monsters() msg = _( "The %1$s pushed the %2$s hard." ); } else { msg = _( "The %1$s pushed the %2$s." ); - }; + } add_msg( msg.c_str(), critter.name().c_str(), other.name().c_str() ); return; } @@ -12469,7 +12377,7 @@ void game::display_scent() if( !got_value || div < 1 ) { add_msg( _( "Never mind." ) ); return; - }; + } draw_ter(); scent.draw( w_terrain, div * 2, u.pos() + u.view_offset ); wrefresh( w_terrain ); @@ -12589,8 +12497,7 @@ void game::process_artifact( item &it, player &p ) { const bool worn = p.is_worn( it ); const bool wielded = ( &it == &p.weapon ); - std::vector effects; - effects = it.type->artifact->effects_carried; + std::vector effects = it.type->artifact->effects_carried; if( worn ) { auto &ew = it.type->artifact->effects_worn; effects.insert( effects.end(), ew.begin(), ew.end() ); diff --git a/src/game.h b/src/game.h index 4c0344f9629c6..c7d90bced5e48 100644 --- a/src/game.h +++ b/src/game.h @@ -2,22 +2,22 @@ #ifndef GAME_H #define GAME_H +#include "calendar.h" +#include "cursesdef.h" #include "enums.h" #include "game_constants.h" -#include "calendar.h" -#include "posix_time.h" #include "int_id.h" -#include "cursesdef.h" -#include "pimpl.h" #include "item_location.h" #include "optional.h" +#include "pimpl.h" +#include "posix_time.h" #include -#include -#include -#include #include +#include #include +#include +#include extern const int savegame_version; extern int save_loading_version; @@ -26,7 +26,7 @@ extern bool test_mode; // The reference to the one and only game instance. class game; -extern game *g; +extern std::unique_ptr g; extern bool trigdist; extern bool use_tiles; @@ -206,9 +206,7 @@ class game /** Saving and loading functions. */ void serialize( std::ostream &fout ); // for save void unserialize( std::istream &fin ); // for load - bool unserialize_legacy( std::istream &fin ); // for old load void unserialize_master( std::istream &fin ); // for load - bool unserialize_master_legacy( std::istream &fin ); // for old load /** write statistics to stdout and @return true if successful */ bool dump_stats( const std::string &what, dump_mode mode, const std::vector &opts ); @@ -515,7 +513,7 @@ class game std::list get_npc_kill(); /** Performs a random short-distance teleport on the given player, granting teleglow if needed. */ - void teleport( player *p = NULL, bool add_teleglow = true ); + void teleport( player *p = nullptr, bool add_teleglow = true ); /** Handles swimming by the player. Called by plmove(). */ void plswim( const tripoint &p ); /** Picks and spawns a random fish from the remaining fish list when a fish is caught. */ @@ -682,7 +680,7 @@ class game // and sets it (view set_driving_view_offset), if // the options for this feature is deactivated or if veh is NULL, // the function set the driving offset to (0,0) - void calc_driving_offset( vehicle *veh = NULL ); + void calc_driving_offset( vehicle *veh = nullptr ); /** * @name Liquid handling @@ -764,7 +762,7 @@ class game * Basically `false` indicates the user does not *want* to handle the liquid, `true` * indicates they want to handle it. */ - bool handle_liquid( item &liquid, item *source = NULL, int radius = 0, + bool handle_liquid( item &liquid, item *source = nullptr, int radius = 0, const tripoint *source_pos = nullptr, const vehicle *source_veh = nullptr, const int part_num = -1, const monster *source_mon = nullptr ); @@ -850,7 +848,7 @@ class game // will do so, if bash_dmg is greater than 0, items won't stop the door // from closing at all. // If the door gets closed the items on the door tile get moved away or destroyed. - bool forced_door_closing( const tripoint &p, const ter_id door_type, int bash_dmg ); + bool forced_door_closing( const tripoint &p, const ter_id &door_type, int bash_dmg ); //pixel minimap management int pixel_minimap_option; @@ -867,7 +865,6 @@ class game void load_shortcuts( std::istream &fin ); #endif bool start_game(); // Starts a new game in the active world - void start_special_game( special_game_id gametype ); // See gamemode.cpp //private save functions. // returns false if saving failed for whatever reason @@ -931,7 +928,6 @@ class game void drop(); // Drop an item 'd' void drop_in_direction(); // Drop w/ direction 'D' - void reassign_item( int pos = INT_MIN ); // Reassign the letter of an item '=' void butcher(); // Butcher a corpse 'B' void eat( int pos = INT_MIN ); // Eat food or fuel 'E' (or 'a') void use_item( int pos = INT_MIN ); // Use item; also tries E,R,W 'a' @@ -1031,7 +1027,6 @@ class game bool is_game_over(); // Returns true if the player quit or died void death_screen(); // Display our stats, "GAME OVER BOO HOO" - void msg_buffer(); // Opens a window with old messages in it void draw_minimap(); // Draw the 5x5 minimap /** Draws the sidebar (if it's visible), including all windows there */ void draw_sidebar(); @@ -1061,7 +1056,6 @@ class game // Debug functions void debug(); // All-encompassing debug screen. TODO: This. void display_scent(); // Displays the scent map - void groupdebug(); // Get into on monster groups // ########################## DATA ################################ @@ -1104,8 +1098,6 @@ class game /** Seed for all the random numbers that should have consistent randomness (weather). */ unsigned int seed; - weather_type weather_override; - // Preview for auto move route std::vector destination_preview; @@ -1113,6 +1105,8 @@ class game void move_save_to_graveyard(); bool save_player_data(); + public: + weather_type weather_override; }; // Returns temperature modifier from direct heat radiation of nearby sources diff --git a/src/game_constants.h b/src/game_constants.h index 6b5bbfe880eaa..5404b3cff3216 100644 --- a/src/game_constants.h +++ b/src/game_constants.h @@ -2,12 +2,12 @@ #ifndef GAME_CONSTANTS_H #define GAME_CONSTANTS_H +#include "units.h" + #ifndef M_PI #define M_PI 3.14159265358979323846 #endif -#include "units.h" - // Fixed window sizes #define HP_HEIGHT 14 #define HP_WIDTH 7 @@ -94,7 +94,6 @@ constexpr int freezer = 23; // -5 Celsius constexpr int freezing = 32; // 0 Celsius } - /** Weight per level of LIFT/JACK tool quality */ #define TOOL_LIFT_FACTOR 500_kilogram // 500kg/level diff --git a/src/game_inventory.cpp b/src/game_inventory.cpp index 32ba7ca626746..d724ccec31e37 100644 --- a/src/game_inventory.cpp +++ b/src/game_inventory.cpp @@ -2,19 +2,17 @@ #include "game.h" #include "inventory_ui.h" -#include "options.h" -#include "player.h" -#include "crafting.h" -#include "output.h" -#include "recipe_dictionary.h" -#include "string_formatter.h" #include "item.h" #include "itype.h" #include "iuse_actor.h" -#include "skill.h" #include "map.h" +#include "options.h" +#include "output.h" +#include "player.h" +#include "recipe_dictionary.h" +#include "skill.h" +#include "string_formatter.h" -#include #include typedef std::function item_filter; @@ -353,7 +351,7 @@ item_location game_menus::inv::disassemble( player &p ) return inv_internal( p, disassemble_inventory_preset( p, p.crafting_inventory() ), _( "Disassemble item" ), 1, _( "You don't have any items you could disassemble." ) ); -}; +} class comestible_inventory_preset : public inventory_selector_preset { diff --git a/src/game_inventory.h b/src/game_inventory.h index 863754438c428..d710b467ef56d 100644 --- a/src/game_inventory.h +++ b/src/game_inventory.h @@ -6,7 +6,6 @@ #include "inventory_ui.h" #include -#include namespace cata { diff --git a/src/game_ui.cpp b/src/game_ui.cpp index 69c100722ce46..d730705de4e80 100644 --- a/src/game_ui.cpp +++ b/src/game_ui.cpp @@ -1,4 +1,5 @@ #include "game_ui.h" + #include "game.h" void game_ui::init_ui() diff --git a/src/gamemode.cpp b/src/gamemode.cpp index a12ebc570b15e..472c1c8e8cd03 100644 --- a/src/gamemode.cpp +++ b/src/gamemode.cpp @@ -1,6 +1,7 @@ #include "gamemode.h" -#include "output.h" + #include "debug.h" +#include "output.h" #include "translations.h" std::string special_game_name( special_game_id id ) diff --git a/src/gamemode.h b/src/gamemode.h index f957342854c57..f774fe2ee28fa 100644 --- a/src/gamemode.h +++ b/src/gamemode.h @@ -2,13 +2,13 @@ #ifndef GAMEMODE_H #define GAMEMODE_H -#include -#include -#include -#include "enums.h" #include "calendar.h" +#include "enums.h" #include "string_id.h" +#include +#include + enum action_id : int; using itype_id = std::string; namespace catacurses @@ -26,20 +26,20 @@ struct special_game { virtual ~special_game() = default; virtual special_game_id id() { return SGAME_NULL; - }; + } // init is run when the game begins virtual bool init() { return true; - }; + } // per_turn is run every turn--before any player actions - virtual void per_turn() { }; + virtual void per_turn() { } // pre_action is run after a keypress, but before the game handles the action // It may modify the action, e.g. to cancel it - virtual void pre_action( action_id & ) { }; + virtual void pre_action( action_id & ) { } // post_action is run after the game handles the action - virtual void post_action( action_id ) { }; + virtual void post_action( action_id ) { } // game_over is run when the player dies (or the game otherwise ends) - virtual void game_over() { }; + virtual void game_over() { } }; @@ -73,12 +73,12 @@ enum tut_lesson { struct tutorial_game : public special_game { special_game_id id() override { return SGAME_TUTORIAL; - }; + } bool init() override; void per_turn() override; void pre_action( action_id &act ) override; void post_action( action_id act ) override; - void game_over() override { }; + void game_over() override { } private: void add_message( tut_lesson lesson ); @@ -129,7 +129,7 @@ struct defense_game : public special_game { special_game_id id() override { return SGAME_DEFENSE; - }; + } bool init() override; void per_turn() override; void pre_action( action_id &act ) override; @@ -138,14 +138,12 @@ struct defense_game : public special_game { private: void init_to_style( defense_style new_style ); - void load_style( std::string style_name ); void setup(); void refresh_setup( const catacurses::window &w, int selection ); void init_mtypes(); void init_constructions(); void init_map(); - std::vector carvan_items( caravan_category cat ); void spawn_wave(); void caravan(); diff --git a/src/gates.cpp b/src/gates.cpp index b06648d942770..af6f23ec94dfb 100644 --- a/src/gates.cpp +++ b/src/gates.cpp @@ -1,18 +1,19 @@ #include "gates.h" + #include "game.h" // TODO: This is a circular dependency +#include "generic_factory.h" +#include "iexamine.h" +#include "json.h" #include "map.h" #include "mapdata.h" -#include "iexamine.h" -#include "vpart_position.h" -#include "generic_factory.h" -#include "player.h" -#include "output.h" #include "messages.h" -#include "json.h" +#include "output.h" +#include "player.h" #include "vehicle.h" +#include "vpart_position.h" -#include #include +#include #include // Gates namespace @@ -28,7 +29,7 @@ struct gate_data { gate_data() : moves( 0 ), bash_dmg( 0 ), - was_loaded( false ) {}; + was_loaded( false ) {} gate_id id; @@ -159,7 +160,9 @@ void gates::open_gate( const tripoint &pos ) bool fail = false; for( int i = 0; i < 4; ++i ) { - static const tripoint dir[4] = { { 1, 0, 0 }, { 0, 1, 0 }, { -1, 0, 0 }, { 0, -1, 0 } }; + static constexpr tripoint dir[4] = { + { 1, 0, 0 }, { 0, 1, 0 }, { -1, 0, 0 }, { 0, -1, 0 } + }; const tripoint wall_pos = pos + dir[i]; if( !gate.is_suitable_wall( wall_pos ) ) { diff --git a/src/gates.h b/src/gates.h index da06238d12962..31fc9b5461ac3 100644 --- a/src/gates.h +++ b/src/gates.h @@ -22,7 +22,7 @@ void open_gate( const tripoint &pos, player &p ); /** opens the gate immediately */ void open_gate( const tripoint &pos ); -}; +} namespace doors { @@ -33,6 +33,6 @@ namespace doors */ void close_door( map &m, Character &who, const tripoint &closep ); -}; +} #endif diff --git a/src/generic_factory.h b/src/generic_factory.h index 6e78451366b69..4aa72c33ca100 100644 --- a/src/generic_factory.h +++ b/src/generic_factory.h @@ -2,26 +2,20 @@ #ifndef GENERIC_FACTORY_H #define GENERIC_FACTORY_H -#include "string_id.h" -#include "int_id.h" -#include "init.h" - +#include "assign.h" #include "debug.h" +#include "init.h" +#include "int_id.h" #include "json.h" -#include "color.h" +#include "string_id.h" #include "translations.h" #include "units.h" -#include "assign.h" -#include -#include +#include #include -#include #include -#include +#include #include -#include -#include /** A generic class to store objects identified by a `string_id`. diff --git a/src/grab.cpp b/src/grab.cpp index f5a386d3c47e2..871b26de35a08 100644 --- a/src/grab.cpp +++ b/src/grab.cpp @@ -1,11 +1,11 @@ #include "game.h" #include "map.h" +#include "messages.h" #include "output.h" -#include "vpart_position.h" #include "player.h" -#include "vehicle.h" -#include "messages.h" #include "sounds.h" +#include "vehicle.h" +#include "vpart_position.h" bool game::grabbed_veh_move( const tripoint &dp ) { diff --git a/src/gun_mode.h b/src/gun_mode.h index 234637911fcaa..6e1316b26829d 100644 --- a/src/gun_mode.h +++ b/src/gun_mode.h @@ -2,8 +2,8 @@ #ifndef GUN_MODE_H #define GUN_MODE_H -#include #include +#include class item; diff --git a/src/handle_action.cpp b/src/handle_action.cpp index 8f1cc00d4a1e1..e5a045c84b8bd 100644 --- a/src/handle_action.cpp +++ b/src/handle_action.cpp @@ -1,44 +1,44 @@ +#include "action.h" +#include "auto_pickup.h" +#include "bionics.h" +#include "calendar.h" +#include "clzones.h" +#include "construction.h" +#include "cursesdef.h" +#include "debug.h" +#include "faction.h" +#include "field.h" #include "game.h" +#include "game_inventory.h" #include "gamemode.h" #include "gates.h" -#include "action.h" +#include "gun_mode.h" +#include "help.h" #include "input.h" -#include "vpart_range.h" -#include "output.h" -#include "player.h" -#include "messages.h" -#include "vehicle.h" -#include "vpart_position.h" -#include "vpart_reference.h" +#include "itype.h" #include "map.h" -#include "options.h" +#include "mapdata.h" #include "mapsharing.h" -#include "safemode_ui.h" -#include "pickup.h" -#include "game_inventory.h" -#include "ranged.h" -#include "debug.h" -#include "worldfactory.h" -#include "faction.h" -#include "itype.h" -#include "auto_pickup.h" -#include "gun_mode.h" -#include "construction.h" -#include "bionics.h" -#include "mutation.h" +#include "messages.h" #include "monster.h" -#include "help.h" -#include "calendar.h" -#include "weather.h" -#include "sounds.h" -#include "veh_type.h" -#include "mapdata.h" #include "mtype.h" -#include "field.h" -#include "clzones.h" -#include "cursesdef.h" +#include "mutation.h" +#include "options.h" +#include "output.h" #include "overmap_ui.h" +#include "pickup.h" +#include "player.h" #include "popup.h" +#include "ranged.h" +#include "safemode_ui.h" +#include "sounds.h" +#include "veh_type.h" +#include "vehicle.h" +#include "vpart_position.h" +#include "vpart_range.h" +#include "vpart_reference.h" +#include "weather.h" +#include "worldfactory.h" #include @@ -384,7 +384,7 @@ static void pldrive( int x, int y ) return; } } else { - if( empty( veh->get_parts( "REMOTE_CONTROLS" ) ) ) { + if( empty( veh->get_avail_parts( "REMOTE_CONTROLS" ) ) ) { add_msg( m_info, _( "Can't drive this vehicle remotely. It has no working controls." ) ); return; } @@ -560,7 +560,6 @@ static void haul() } } - static void smash() { player &u = g->u; @@ -713,15 +712,15 @@ static void sleep() uilist as_m; as_m.text = _( "Are you sure you want to sleep?" ); // (Y)es/(S)ave before sleeping/(N)o - as_m.entries.emplace_back( uimenu_entry( 0, true, - ( get_option( "FORCE_CAPITAL_YN" ) ? 'Y' : 'y' ), - _( "Yes." ) ) ); - as_m.entries.emplace_back( uimenu_entry( 1, ( g->get_moves_since_last_save() ), - ( get_option( "FORCE_CAPITAL_YN" ) ? 'S' : 's' ), - _( "Yes, and save game before sleeping." ) ) ); - as_m.entries.emplace_back( uimenu_entry( 2, true, - ( get_option( "FORCE_CAPITAL_YN" ) ? 'N' : 'n' ), - _( "No." ) ) ); + as_m.entries.emplace_back( 0, true, + get_option( "FORCE_CAPITAL_YN" ) ? 'Y' : 'y', + _( "Yes." ) ); + as_m.entries.emplace_back( 1, g->get_moves_since_last_save(), + get_option( "FORCE_CAPITAL_YN" ) ? 'S' : 's', + _( "Yes, and save game before sleeping." ) ); + as_m.entries.emplace_back( 2, true, + get_option( "FORCE_CAPITAL_YN" ) ? 'N' : 'n', + _( "No." ) ); // List all active items, bionics or mutations so player can deactivate them std::vector active; @@ -784,13 +783,13 @@ static void sleep() _( "You're engorged to hibernate. The alarm would only attract attention. Set an alarm anyway?" ) : _( "You have an alarm clock. Set an alarm?" ); - as_m.entries.emplace_back( uimenu_entry( 0, true, - ( get_option( "FORCE_CAPITAL_YN" ) ? 'N' : 'n' ), - _( "No, don't set an alarm." ) ) ); + as_m.entries.emplace_back( 0, true, + get_option( "FORCE_CAPITAL_YN" ) ? 'N' : 'n', + _( "No, don't set an alarm." ) ); for( int i = 3; i <= 9; ++i ) { - as_m.entries.emplace_back( uimenu_entry( i, true, '0' + i, - string_format( _( "Set alarm to wake up in %i hours." ), i ) ) ); + as_m.entries.emplace_back( i, true, '0' + i, + string_format( _( "Set alarm to wake up in %i hours." ), i ) ); } as_m.query(); @@ -934,6 +933,23 @@ static void read() } } +// Perform a reach attach +// range - the range of the current weapon. +// u - player +static void reach_attach( int range, player &u ) +{ + g->temp_exit_fullscreen(); + g->m.draw( g->w_terrain, u.pos() ); + std::vector trajectory = target_handler().target_ui( u, TARGET_MODE_REACH, &u.weapon, + range ); + if( !trajectory.empty() ) { + u.reach_attack( trajectory.back() ); + } + g->draw_ter(); + wrefresh( g->w_terrain ); + g->reenter_fullscreen(); +} + static void fire() { player &u = g->u; @@ -1042,16 +1058,10 @@ static void fire() g->plfire( u.weapon ); } else if( u.weapon.has_flag( "REACH_ATTACK" ) ) { int range = u.weapon.has_flag( "REACH3" ) ? 3 : 2; - g->temp_exit_fullscreen(); - g->m.draw( g->w_terrain, u.pos() ); - std::vector trajectory; - trajectory = target_handler().target_ui( u, TARGET_MODE_REACH, &u.weapon, range ); - if( !trajectory.empty() ) { - u.reach_attack( trajectory.back() ); - } - g->draw_ter(); - wrefresh( g->w_terrain ); - g->reenter_fullscreen(); + reach_attach( range, u ); + } else if( u.weapon.is_gun() && u.weapon.gun_current_mode().flags.count( "REACH_ATTACK" ) ) { + int range = u.weapon.gun_current_mode().qty; + reach_attach( range, u ); } } diff --git a/src/harvest.h b/src/harvest.h index 7ecb4d92daef6..1b95248814274 100644 --- a/src/harvest.h +++ b/src/harvest.h @@ -2,12 +2,12 @@ #ifndef HARVEST_H #define HARVEST_H +#include "string_id.h" + #include #include #include -#include "string_id.h" - typedef std::string itype_id; class JsonObject; class harvest_list; diff --git a/src/help.cpp b/src/help.cpp index a26dc7ad6605f..c89a034b2dd62 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -2,16 +2,16 @@ #include "action.h" #include "catacharset.h" -#include "input.h" -#include "output.h" #include "cursesdef.h" -#include "translations.h" -#include "text_snippets.h" +#include "input.h" #include "json.h" +#include "output.h" #include "path_info.h" -#include // max in help_main -#include +#include "text_snippets.h" +#include "translations.h" + #include +#include help &get_help() { @@ -48,27 +48,11 @@ void help::deserialize( JsonIn &jsin ) line = string_replace( line, "", dir_grid ); continue; } - - size_t pos = line.find( "", pos, 1 ); - - std::string action = line.substr( pos + 7, pos2 - pos - 7 ); - auto replace = "" + press_x( look_up_action( action ), "", "" ) + ""; - - if( replace.empty() ) { - debugmsg( "Help json: Unknown action: %s", action ); - } else { - line = string_replace( line, "", replace ); - } - - pos = line.find( " FULL_SCREEN_HEIGHT ) ? ( TERMY - FULL_SCREEN_HEIGHT ) / 2 : 0, ( TERMX > FULL_SCREEN_WIDTH ) ? ( TERMX - FULL_SCREEN_WIDTH ) / 2 : 0 ); catacurses::window w_help = catacurses::newwin( FULL_SCREEN_HEIGHT - 2, FULL_SCREEN_WIDTH - 2, - 1 + ( int )( ( TERMY > FULL_SCREEN_HEIGHT ) ? ( TERMY - FULL_SCREEN_HEIGHT ) / 2 : 0 ), - 1 + ( int )( ( TERMX > FULL_SCREEN_WIDTH ) ? ( TERMX - FULL_SCREEN_WIDTH ) / 2 : 0 ) ); + 1 + static_cast( ( TERMY > FULL_SCREEN_HEIGHT ) ? ( TERMY - FULL_SCREEN_HEIGHT ) / 2 : 0 ), + 1 + static_cast( ( TERMX > FULL_SCREEN_WIDTH ) ? ( TERMX - FULL_SCREEN_WIDTH ) / 2 : 0 ) ); bool needs_refresh = true; @@ -152,7 +136,7 @@ void help::display_help() // for the menu shortcuts ctxt.register_action( "ANY_INPUT" ); - std::string action = ""; + std::string action; do { if( needs_refresh ) { @@ -161,14 +145,37 @@ void help::display_help() draw_menu( w_help ); catacurses::refresh(); needs_refresh = false; - }; + } action = ctxt.handle_input(); std::string sInput = ctxt.get_raw_input().text; for( size_t i = 0; i < hotkeys.size(); ++i ) { - for( auto hotkey : hotkeys[i] ) { + for( const std::string &hotkey : hotkeys[i] ) { if( sInput == hotkey ) { - multipage( w_help, help_texts[i].second ); + std::vector i18n_help_texts; + i18n_help_texts.reserve( help_texts[i].second.size() ); + std::transform( help_texts[i].second.begin(), help_texts[i].second.end(), + std::back_inserter( i18n_help_texts ), [&]( std::string & line ) { + std::string line_proc = _( line.c_str() ); + size_t pos = line_proc.find( "", pos, 1 ); + + std::string action = line_proc.substr( pos + 7, pos2 - pos - 7 ); + auto replace = "" + press_x( look_up_action( action ), "", "" ) + ""; + + if( replace.empty() ) { + debugmsg( "Help json: Unknown action: %s", action ); + } else { + line_proc = string_replace( line_proc, "", replace ); + } + + pos = line_proc.find( " -#include -#include #include "cursesdef.h" #include "input.h" +#include +#include +#include + class JsonIn; class help diff --git a/src/iexamine.cpp b/src/iexamine.cpp index ebf3b33f4851b..fb47bcac276ed 100644 --- a/src/iexamine.cpp +++ b/src/iexamine.cpp @@ -1,49 +1,49 @@ #include "iexamine.h" + +#include "ammo.h" +#include "basecamp.h" +#include "bionics.h" +#include "calendar.h" +#include "cata_utility.h" +#include "catacharset.h" +#include "compatibility.h" // needed for the workaround for the std::to_string bug in some compilers +#include "coordinate_conversions.h" +#include "craft_command.h" +#include "debug.h" +#include "event.h" +#include "fungal_effects.h" #include "game.h" #include "harvest.h" +#include "input.h" +#include "inventory.h" +#include "line.h" #include "map.h" -#include "fungal_effects.h" #include "map_iterator.h" -#include "debug.h" #include "mapdata.h" +#include "material.h" +#include "messages.h" +#include "monster.h" +#include "mtype.h" +#include "npc.h" +#include "options.h" #include "output.h" -#include "coordinate_conversions.h" -#include "rng.h" -#include "requirements.h" -#include "ammo.h" -#include "line.h" #include "player.h" -#include "npc.h" +#include "requirements.h" +#include "rng.h" +#include "sounds.h" #include "string_formatter.h" +#include "string_input_popup.h" #include "translations.h" -#include "uistate.h" -#include "messages.h" -#include "compatibility.h" -#include "sounds.h" -#include "input.h" -#include "monster.h" -#include "vpart_position.h" -#include "event.h" -#include "catacharset.h" +#include "trap.h" #include "ui.h" +#include "uistate.h" #include "units.h" -#include "trap.h" -#include "basecamp.h" -#include "mtype.h" -#include "calendar.h" +#include "vpart_position.h" #include "weather.h" -#include "sounds.h" -#include "cata_utility.h" -#include "string_input_popup.h" -#include "bionics.h" -#include "inventory.h" -#include "craft_command.h" -#include "material.h" -#include "options.h" -#include #include #include +#include const mtype_id mon_dark_wyrm( "mon_dark_wyrm" ); const mtype_id mon_fungal_blossom( "mon_fungal_blossom" ); @@ -68,7 +68,6 @@ const efftype_id effect_sleep( "sleep" ); static const trait_id trait_AMORPHOUS( "AMORPHOUS" ); static const trait_id trait_ARACHNID_ARMS_OK( "ARACHNID_ARMS_OK" ); static const trait_id trait_BADKNEES( "BADKNEES" ); -static const trait_id trait_BEAK_HUM( "BEAK_HUM" ); static const trait_id trait_ILLITERATE( "ILLITERATE" ); static const trait_id trait_INSECT_ARMS_OK( "INSECT_ARMS_OK" ); static const trait_id trait_M_DEFENDER( "M_DEFENDER" ); @@ -77,7 +76,6 @@ static const trait_id trait_M_FERTILE( "M_FERTILE" ); static const trait_id trait_M_SPORES( "M_SPORES" ); static const trait_id trait_NOPAIN( "NOPAIN" ); static const trait_id trait_PARKOUR( "PARKOUR" ); -static const trait_id trait_PROBOSCIS( "PROBOSCIS" ); static const trait_id trait_THRESH_MARLOSS( "THRESH_MARLOSS" ); static const trait_id trait_THRESH_MYCUS( "THRESH_MYCUS" ); static const trait_id trait_BURROW( "BURROW" ); @@ -129,7 +127,7 @@ void iexamine::cvdmachine( player &p, const tripoint & ) { // Apply flag to item loc->item_tags.insert( "DIAMOND" ); - add_msg( m_good, "You apply a diamond coating to your %s", loc->type_name().c_str() ); + add_msg( m_good, _( "You apply a diamond coating to your %s" ), loc->type_name().c_str() ); p.mod_moves( -1000 ); } @@ -283,7 +281,7 @@ class atm_menu { .query_long(); return (amount > max) ? max : (amount <= 0) ? 0 : amount; - }; + } //!Get a new cash card. $1.00 fine. bool do_purchase_card() { @@ -1751,7 +1749,7 @@ void iexamine::dirtmound(player &p, const tripoint &examp) int seed_index = query_seed( seed_entries ); // Did we cancel? - if( seed_index < 0 || seed_index >= (int)seed_entries.size() ) { + if( seed_index < 0 || seed_index >= static_cast( seed_entries.size() ) ) { add_msg(_("You saved your seeds for later.")); return; } @@ -1937,7 +1935,7 @@ void iexamine::kiln_empty(player &p, const tripoint &examp) static const std::set kilnable{ material_id( "wood" ), material_id( "bone" ) }; bool fuel_present = false; auto items = g->m.i_at( examp ); - for( auto i : items ) { + for( const item &i : items ) { if( i.typeId() == "charcoal" ) { add_msg( _("This kiln already contains charcoal.") ); add_msg( _("Remove it before firing the kiln again.") ); @@ -1961,7 +1959,7 @@ void iexamine::kiln_empty(player &p, const tripoint &examp) // Burn stuff that should get charred, leave out the rest units::volume total_volume = 0; - for( auto i : items ) { + for( const item &i : items ) { total_volume += i.volume(); } @@ -2275,7 +2273,7 @@ void iexamine::keg(player &p, const tripoint &examp) const auto keg_name = g->m.name( examp ); units::volume keg_cap = get_keg_capacity( examp ); bool liquid_present = false; - for (int i = 0; i < (int)g->m.i_at(examp).size(); i++) { + for (int i = 0; i < static_cast( g->m.i_at(examp).size() ); i++) { if (!g->m.i_at(examp)[i].made_of_from_type( LIQUID ) || liquid_present) { g->m.add_item_or_charges(examp, g->m.i_at(examp)[i]); g->m.i_rem( examp, i ); @@ -2877,7 +2875,7 @@ void iexamine::reload_furniture(player &p, const tripoint &examp) const furn_t &f = g->m.furn(examp).obj(); const itype *type = f.crafting_pseudo_item_type(); const itype *ammo = f.crafting_ammo_item_type(); - if (type == NULL || ammo == NULL) { + if (type == nullptr || ammo == nullptr) { add_msg(m_info, _("This %s can not be reloaded!"), f.name().c_str()); return; } @@ -3049,7 +3047,7 @@ static int getGasDiscountCardQuality( const item &it ) { std::set tags = it.type->item_tags; - for( auto tag : tags ) { + for( const std::string &tag : tags ) { if( tag.size() > 15 && tag.substr(0, 15) == "DISCOUNT_VALUE_" ) { return atoi(tag.substr(15).c_str()); @@ -3363,16 +3361,14 @@ void iexamine::pay_gas( player &p, const tripoint &examp ) } if( refund == choice ) { - item *cashcard; - - const int pos = p.inv.position_by_type( itype_id( "cash_card" ) );; + const int pos = p.inv.position_by_type( itype_id( "cash_card" ) ); if( pos == INT_MIN ) { add_msg( _( "Never mind." ) ); return; } - cashcard = &( p.i_at( pos ) ); + item *cashcard = &( p.i_at( pos ) ); // Okay, we have a cash card. Now we need to know what's left in the pump. const cata::optional pGasPump = getGasPumpByNumber( examp, uistate.ags_pay_gas_selected_pump ); long amount = pGasPump ? fromPumpFuel( pTank, *pGasPump ) : 0l; @@ -3553,7 +3549,7 @@ void iexamine::autodoc( player &p, const tripoint &examp ) for( const item *anesthesia_item : a_filter ) { acomps.push_back( item_comp( anesthesia_item->typeId(), 1 ) ); } - if( !acomps.size() ) { + if( acomps.empty() ) { popup( _( "You need an anesthesia kit for autodoc to perform any operation." ) ); return; } @@ -3804,7 +3800,7 @@ void smoker_finalize(player &, const tripoint &examp) return; } - std::string product = ""; + std::string product; for( size_t i = 0; i < items.size(); i++ ) { auto &item_it = items[i]; //dry products before smoked products to avoid override @@ -3869,7 +3865,6 @@ void smoker_finalize(player &, const tripoint &examp) void smoker_load_food( player &p, const tripoint &examp, const units::volume &remaining_capacity ) { std::vector comps; - std::list moved; if( g->m.furn( examp ) == furn_str_id( "f_smoking_rack_active" ) ) { p.add_msg_if_player( _( "You can't place more food while it's smoking." ) ); @@ -3909,7 +3904,7 @@ void smoker_load_food( player &p, const tripoint &examp, const units::volume &re count = 0; } - if( comps.size() == 0 ) { + if( comps.empty() ) { p.add_msg_if_player( _( "You don't have any food that can be smoked." ) ); return; } @@ -3962,19 +3957,19 @@ void smoker_load_food( player &p, const tripoint &examp, const units::volume &re return it.rotten(); } ); comp_selection selected = p.select_item_component( comps, 1, inv, true ); - moved = p.consume_items( selected, 1 ); + std::list moved = p.consume_items( selected, 1 ); // hack, because consume_items doesn't seem to care of what item is consumed despite filters // TODO: find a way to filter out rotten items from those actualy consumed bool rotted = false; - for( item m : moved ) { + for( const item &m : moved ) { if( m.rotten() ) { rotted = true; } } if( rotted ) { add_msg(m_info, _( "You have rotten food mixed with fresh. Get rid of it first." ) ); - for( item m : moved ) { + for( const item &m : moved ) { g->m.add_item( p.pos(), m ); p.mod_moves( -p.item_handling_cost( m ) ); } @@ -4109,7 +4104,7 @@ void iexamine::smoker_options( player &p, const tripoint &examp ) } pop << "" << _( "You inspect its contents and find: " ) << "" << "\n \n "; if( items_here.empty() ) { - pop << "... that it is empty."; + pop << _( "... that it is empty." ); } else { for( size_t i = 0; i < items_here.size(); i++ ) { auto &it = items_here[i]; @@ -4127,10 +4122,8 @@ void iexamine::smoker_options( player &p, const tripoint &examp ) case 1: //activate if ( active ) { add_msg( _("It is already lit and smoking.") ); - break; } else { smoker_activate( p, examp ); - break; } break; case 2: // load food diff --git a/src/iexamine.h b/src/iexamine.h index 478f80895ebc9..1bf8c2642e600 100644 --- a/src/iexamine.h +++ b/src/iexamine.h @@ -9,11 +9,10 @@ #ifndef IEXAMINE_H #define IEXAMINE_H -#include -#include - -#include "string_id.h" #include "itype.h" +#include "string_id.h" + +#include class game; class item; diff --git a/src/init.cpp b/src/init.cpp index d451323cdefbb..7ab084e751e2e 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1,80 +1,68 @@ #include "init.h" -#include "json.h" -#include "filesystem.h" - -// can load from json #include "activity_type.h" -#include "flag.h" +#include "ammo.h" +#include "anatomy.h" +#include "bionics.h" +#include "clzones.h" +#include "construction.h" +#include "crafting_gui.h" +#include "debug.h" +#include "dialogue.h" #include "effect.h" #include "emit.h" -#include "vitamin.h" +#include "faction.h" #include "fault.h" -#include "material.h" -#include "bionics.h" -#include "profession.h" -#include "skill.h" -#include "mutation.h" -#include "text_snippets.h" +#include "filesystem.h" +#include "flag.h" +#include "gates.h" +#include "harvest.h" +#include "item_action.h" #include "item_factory.h" -#include "vehicle_group.h" -#include "string_formatter.h" -#include "crafting.h" -#include "crafting_gui.h" +#include "json.h" +#include "loading_ui.h" #include "mapdata.h" -#include "color.h" -#include "trap.h" +#include "mapgen.h" +#include "martialarts.h" +#include "material.h" #include "mission.h" +#include "mod_tileset.h" +#include "monfaction.h" +#include "mongroup.h" #include "monstergenerator.h" -#include "inventory.h" -#include "tutorial.h" -#include "overmap.h" -#include "regional_settings.h" +#include "morale_types.h" +#include "mutation.h" +#include "npc.h" +#include "npc_class.h" +#include "omdata.h" +#include "overlay_ordering.h" #include "overmap_connection.h" -#include "artifact.h" #include "overmap_location.h" -#include "mapgen.h" -#include "speech.h" -#include "construction.h" -#include "ammo.h" -#include "debug.h" -#include "path_info.h" +#include "profession.h" +#include "recipe_dictionary.h" +#include "recipe_groups.h" +#include "regional_settings.h" #include "requirements.h" -#include "start_location.h" +#include "rotatable_symbols.h" #include "scenario.h" -#include "omdata.h" -#include "options.h" -#include "faction.h" -#include "npc.h" -#include "item_action.h" -#include "dialogue.h" -#include "mongroup.h" -#include "monfaction.h" -#include "martialarts.h" -#include "veh_type.h" -#include "clzones.h" +#include "skill.h" #include "sounds.h" -#include "gates.h" -#include "overlay_ordering.h" +#include "speech.h" +#include "start_location.h" +#include "string_formatter.h" +#include "text_snippets.h" +#include "trap.h" +#include "tutorial.h" +#include "veh_type.h" +#include "vehicle_group.h" +#include "vitamin.h" #include "worldfactory.h" -#include "weather_gen.h" -#include "npc_class.h" -#include "recipe_dictionary.h" -#include "rotatable_symbols.h" -#include "harvest.h" -#include "morale_types.h" -#include "anatomy.h" -#include "loading_ui.h" -#include "recipe_groups.h" -#include "mod_tileset.h" -#include "help.h" -#include -#include -#include +#include #include #include // for throwing errors -#include // for loading names +#include +#include #if defined(TILES) void load_tileset(); diff --git a/src/init.h b/src/init.h index 73498d199f24a..4db808decd94b 100644 --- a/src/init.h +++ b/src/init.h @@ -2,12 +2,11 @@ #ifndef INIT_H #define INIT_H -#include -#include +#include #include -#include #include -#include +#include +#include class loading_ui; class JsonObject; diff --git a/src/input.cpp b/src/input.cpp index e4c0e055d0f08..4e6fe713ef7c4 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -1,29 +1,28 @@ #include "input.h" + #include "action.h" +#include "cata_utility.h" +#include "catacharset.h" #include "cursesdef.h" #include "debug.h" +#include "filesystem.h" +#include "game.h" +#include "help.h" #include "json.h" +#include "optional.h" +#include "options.h" #include "output.h" -#include "game.h" #include "path_info.h" -#include "filesystem.h" -#include "translations.h" +#include "popup.h" #include "string_formatter.h" -#include "catacharset.h" -#include "optional.h" -#include "cata_utility.h" -#include "options.h" #include "string_input_popup.h" -#include "cursesdef.h" -#include "popup.h" -#include "help.h" +#include "translations.h" +#include +#include #include #include #include -#include -#include -#include using std::min; // from using std::max; @@ -79,7 +78,7 @@ std::string get_input_string_from_file( std::string fname ) read_from_file_optional( fname, [&ret]( std::istream & fin ) { getline( fin, ret ); //remove utf8 bmm - if( !ret.empty() && ( unsigned char )ret[0] == 0xef ) { + if( !ret.empty() && static_cast( ret[0] ) == 0xef ) { ret.erase( 0, 3 ); } while( !ret.empty() && ( ret[ret.size() - 1] == '\r' || ret[ret.size() - 1] == '\n' ) ) { @@ -661,7 +660,7 @@ std::vector input_context::keys_bound_to( const std::string &action_descri // TODO: fix for Unicode. if( events_event.type == CATA_INPUT_KEYBOARD && events_event.sequence.size() == 1 && events_event.sequence.front() < 0xFF && isprint( events_event.sequence.front() ) ) { - result.push_back( ( char )events_event.sequence.front() ); + result.push_back( static_cast( events_event.sequence.front() ) ); } } return result; @@ -677,7 +676,7 @@ std::string input_context::get_available_single_char_hotkeys( std::string reques category ); for( const auto &events_event : events ) { // Only consider keyboard events without modifiers - if( events_event.type == CATA_INPUT_KEYBOARD && 0 == events_event.modifiers.size() ) { + if( events_event.type == CATA_INPUT_KEYBOARD && events_event.modifiers.empty() ) { requested_keys.erase( std::remove_if( requested_keys.begin(), requested_keys.end(), ContainsPredicate, char>( events_event.sequence ) ), @@ -742,7 +741,7 @@ const std::string input_context::get_desc( const std::string &action_descriptor, const std::string input_context::get_desc( const std::string &action_descriptor, const std::string &text, - const std::function evt_filter ) + const std::function evt_filter ) const { if( action_descriptor == "ANY_INPUT" ) { //~ keybinding description for anykey @@ -790,7 +789,7 @@ const std::string &input_context::handle_input( const int timeout ) inp_mngr.set_timeout( timeout ); next_action.type = CATA_INPUT_ERROR; const std::string *result = &CATA_ERROR; - while( 1 ) { + while( true ) { next_action = inp_mngr.get_input_event(); if( next_action.type == CATA_INPUT_TIMEOUT ) { result = &TIMEOUT; @@ -1343,7 +1342,7 @@ std::vector input_context::filter_strings_by_phrase( return filtered_strings; } -void input_context::set_edittext( std::string s ) +void input_context::set_edittext( const std::string &s ) { edittext = s; } diff --git a/src/input.h b/src/input.h index a8fe7f7219d8e..79fe704868368 100644 --- a/src/input.h +++ b/src/input.h @@ -3,14 +3,14 @@ #define INPUT_H #include -#include #include +#include #include + #ifdef __ANDROID__ #include #include #endif -#include struct tripoint; namespace cata @@ -211,7 +211,7 @@ class input_manager * keybinding is overridden by something else in the given context. */ const std::vector &get_input_for_action( const std::string &action_descriptor, - const std::string &context = "default", bool *overwrites_default = NULL ); + const std::string &context = "default", bool *overwrites_default = nullptr ); /** * Return first char associated with an action ID in a given context. @@ -264,8 +264,6 @@ class input_manager */ void wait_for_any_key(); - bool translate_to_window_position(); - /** * Sets global input polling timeout as appropriate for the current interface system. * Use `input_context::(re)set_timeout()` when possible so timeout will be properly @@ -334,7 +332,7 @@ class input_manager const action_attributes &get_action_attributes( const std::string &action_id, const std::string &context = "default", - bool *overwrites_default = NULL ); + bool *overwrites_default = nullptr ); /** * Get a value to be used as the default name for a newly created action. @@ -377,7 +375,7 @@ class input_context input_context_stack.push_back( this ); allow_text_entry = false; #endif - }; + } // TODO: consider making the curses WINDOW an argument to the constructor, so that mouse input // outside that window can be ignored input_context( std::string category ) : registered_any_input( false ), @@ -386,14 +384,14 @@ class input_context input_context_stack.push_back( this ); allow_text_entry = false; #endif - }; + } #ifdef __ANDROID__ virtual ~input_context() { input_context_stack.remove( this ); } - // hack to allow creating manual keybindings for getch() instances, uimenus etc. that don't use an input_context outside of the Android version + // hack to allow creating manual keybindings for getch() instances, uilists etc. that don't use an input_context outside of the Android version struct manual_key { manual_key( long _key, const std::string &_text ) : key( _key ), text( _text ) {} long key; @@ -561,7 +559,7 @@ class input_context const std::function evt_filter = []( const input_event & ) { return true; - } ); + } ) const; /** * Handles input and returns the next action in the queue. @@ -646,7 +644,7 @@ class input_context /** * Get/Set edittext to display IME unspecified string. */ - void set_edittext( std::string s ); + void set_edittext( const std::string &s ); std::string get_edittext(); void set_iso( bool mode = true ); diff --git a/src/int_id.h b/src/int_id.h index cdabfcfa96f00..d61bca2b26514 100644 --- a/src/int_id.h +++ b/src/int_id.h @@ -2,9 +2,9 @@ #ifndef INT_ID_H #define INT_ID_H +#include #include #include -#include template class string_id; diff --git a/src/inventory.cpp b/src/inventory.cpp index 1b0ad4a3e131c..c86efb7c83b8e 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -1,23 +1,22 @@ #include "inventory.h" -#include + +#include "debug.h" #include "game.h" -#include "map.h" #include "iexamine.h" -#include "debug.h" -#include "iuse.h" -#include "vpart_reference.h" -#include "iuse_actor.h" -#include "options.h" -#include "vpart_position.h" -#include "npc.h" #include "itype.h" -#include "vehicle.h" -#include "mapdata.h" +#include "iuse_actor.h" +#include "map.h" #include "map_iterator.h" -#include +#include "mapdata.h" #include "messages.h" //for rust message +#include "npc.h" +#include "options.h" #include "output.h" #include "translations.h" +#include "vehicle.h" +#include "vpart_position.h" +#include "vpart_reference.h" +#include const invlet_wrapper inv_chars( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#&()*+.:;=@[\\]^_{|}" ); @@ -30,11 +29,7 @@ bool invlet_wrapper::valid( const long invlet ) const return find( static_cast( invlet ) ) != std::string::npos; } -inventory::inventory() - : invlet_cache() - , items() -{ -} +inventory::inventory() = default; invslice inventory::slice() { @@ -339,7 +334,7 @@ void inventory::form_from_map( const tripoint &origin, int range, bool assign_in if( g->m.has_furn( p ) ) { const furn_t &f = g->m.furn( p ).obj(); const itype *type = f.crafting_pseudo_item_type(); - if( type != NULL ) { + if( type != nullptr ) { const itype *ammo = f.crafting_ammo_item_type(); item furn_item( type, calendar::turn, 0 ); furn_item.item_tags.insert( "PSEUDO" ); @@ -819,7 +814,7 @@ void inventory::rust_iron_items() one_in( 500 ) && //Scale with volume, bigger = slower (see #24204) one_in( static_cast( 14 * std::cbrt( 0.5 * std::max( 0.05, - ( double )( elem_stack_iter.base_volume().value() ) / 250 ) ) ) ) && + static_cast( elem_stack_iter.base_volume().value() ) / 250 ) ) ) ) && // ^season length ^14/5*0.75/3.14 (from volume of sphere) g->m.water_from( g->u.pos() ).typeId() == "salt_water" ) { //Freshwater without oxygen rusts slower than air diff --git a/src/inventory.h b/src/inventory.h index 45fe1dc92e647..5aa7c5e6c685f 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -2,16 +2,15 @@ #ifndef INVENTORY_H #define INVENTORY_H -#include "visitable.h" -#include "item.h" #include "enums.h" +#include "item.h" +#include "visitable.h" #include #include +#include #include #include -#include -#include class map; class npc; @@ -33,8 +32,6 @@ class salvage_actor; */ class invlet_wrapper : private std::string { - private: - public: invlet_wrapper( const char *chars ) : std::string( chars ) { } diff --git a/src/inventory_ui.cpp b/src/inventory_ui.cpp index 4a01a43685d88..9e8040ece20c9 100644 --- a/src/inventory_ui.cpp +++ b/src/inventory_ui.cpp @@ -1,29 +1,27 @@ #include "inventory_ui.h" +#include "cata_utility.h" +#include "catacharset.h" #include "game.h" -#include "player.h" -#include "action.h" +#include "item.h" +#include "item_category.h" +#include "item_search.h" +#include "itype.h" #include "map.h" #include "map_selector.h" +#include "options.h" #include "output.h" -#include "translations.h" -#include "item_category.h" +#include "player.h" #include "string_formatter.h" -#include "options.h" -#include "messages.h" -#include "catacharset.h" -#include "vpart_reference.h" +#include "string_input_popup.h" +#include "translations.h" #include "vehicle.h" #include "vehicle_selector.h" -#include "cata_utility.h" #include "vpart_position.h" -#include "item.h" -#include "itype.h" -#include "item_search.h" -#include "string_input_popup.h" +#include "vpart_reference.h" #ifdef __ANDROID__ -#include "SDL_keyboard.h" +#include #endif #include @@ -870,7 +868,7 @@ size_t inventory_column::visible_cells() const selection_column::selection_column( const std::string &id, const std::string &name ) : inventory_column( selection_preset ), - selected_cat( id, name, 0 ) {} + selected_cat( id, no_translation( name ), 0 ) {} selection_column::~selection_column() = default; @@ -965,7 +963,7 @@ const item_category *inventory_selector::naturalize_category( const item_categor const std::string name = string_format( "%s %s", category.name().c_str(), suffix.c_str() ); const int sort_rank = category.sort_rank() + dist; - const item_category new_category( id, name, sort_rank ); + const item_category new_category( id, no_translation( name ), sort_rank ); categories.push_back( new_category ); } else { @@ -1020,8 +1018,9 @@ void inventory_selector::add_items( inventory_column &target_column, void inventory_selector::add_character_items( Character &character ) { - static const item_category items_worn_category( "ITEMS_WORN", _( "ITEMS WORN" ), -100 ); - static const item_category weapon_held_category( "WEAPON_HELD", _( "WEAPON HELD" ), -200 ); + static const item_category items_worn_category( "ITEMS_WORN", translation( "ITEMS WORN" ), -100 ); + static const item_category weapon_held_category( "WEAPON_HELD", translation( "WEAPON HELD" ), + -200 ); character.visit_items( [ this, &character ]( item * it ) { if( it == &character.weapon ) { add_item( own_gear_column, item_location( character, it ), 1, &weapon_held_category ); @@ -1045,7 +1044,7 @@ void inventory_selector::add_map_items( const tripoint &target ) if( g->m.accessible_items( target ) ) { const auto items = g->m.i_at( target ); const std::string name = to_upper_case( g->m.name( target ) ); - const item_category map_cat( name, name, 100 ); + const item_category map_cat( name, no_translation( name ), 100 ); add_items( map_column, [ &target ]( item * it ) { return item_location( target, it ); @@ -1063,7 +1062,7 @@ void inventory_selector::add_vehicle_items( const tripoint &target ) const int part = vp->part_index(); const auto items = veh->get_items( part ); const std::string name = to_upper_case( veh->parts[part].name() ); - const item_category vehicle_cat( name, name, 200 ); + const item_category vehicle_cat( name, no_translation( name ), 200 ); add_items( map_column, [ veh, part ]( item * it ) { return item_location( vehicle_cursor( *veh, part ), it ); @@ -1263,7 +1262,7 @@ inventory_selector::stat display_stat( const std::string &caption, int cur_value inventory_selector::stats inventory_selector::get_weight_and_volume_stats( units::mass weight_carried, units::mass weight_capacity, - units::volume volume_carried, units::volume volume_capacity ) + const units::volume &volume_carried, const units::volume &volume_capacity ) { return { { @@ -1480,7 +1479,6 @@ inventory_selector::inventory_selector( const player &u, const inventory_selecto : u( u ) , preset( preset ) , ctxt( "INVENTORY" ) - , columns() , active_column_index( 0 ) , mode( navigation_mode::ITEM ) , own_inv_column( preset ) @@ -1719,7 +1717,7 @@ void inventory_multiselector::rearrange_columns( size_t client_width ) void inventory_multiselector::on_entry_add( const inventory_entry &entry ) { if( entry.is_item() ) { - static_cast( selection_col.get() )->expand_to_fit( entry ); + dynamic_cast( selection_col.get() )->expand_to_fit( entry ); } } diff --git a/src/inventory_ui.h b/src/inventory_ui.h index c15d5e428d656..f3a13762c1db2 100644 --- a/src/inventory_ui.h +++ b/src/inventory_ui.h @@ -2,17 +2,17 @@ #ifndef INVENTORY_UI_H #define INVENTORY_UI_H -#include -#include -#include - #include "color.h" -#include "units.h" #include "cursesdef.h" #include "enums.h" #include "input.h" #include "item_location.h" #include "pimpl.h" +#include "units.h" + +#include +#include +#include class Character; @@ -492,7 +492,7 @@ class inventory_selector static stats get_weight_and_volume_stats( units::mass weight_carried, units::mass weight_capacity, - units::volume volume_carried, units::volume volume_capacity ); + const units::volume &volume_carried, const units::volume &volume_capacity ); /** Get stats to display in top right. * @@ -551,7 +551,6 @@ class inventory_selector } } void toggle_navigation_mode(); - void reassign_custom_invlets(); /** Entry has been added */ virtual void on_entry_add( const inventory_entry & ) {} diff --git a/src/item.cpp b/src/item.cpp index ee8ef65c6ddfe..8b4289657856e 100644 --- a/src/item.cpp +++ b/src/item.cpp @@ -1,71 +1,61 @@ #include "item.h" -#include "flag.h" -#include "string_formatter.h" #include "advanced_inv.h" -#include "player.h" -#include "enums.h" -#include "item_category.h" -#include "damage.h" -#include "dispersion.h" -#include "output.h" -#include "skill.h" -#include "vitamin.h" +#include "ammo.h" #include "bionics.h" #include "bodypart.h" +#include "cata_utility.h" +#include "damage.h" +#include "debug.h" +#include "dispersion.h" +#include "effect.h" // for weed_msg +#include "enums.h" +#include "fault.h" +#include "field.h" +#include "fire.h" +#include "flag.h" #include "game.h" +#include "game_constants.h" #include "gun_mode.h" -#include "map.h" -#include "debug.h" -#include "cursesdef.h" -#include "text_snippets.h" -#include "vpart_position.h" -#include "material.h" +#include "iexamine.h" +#include "item_category.h" #include "item_factory.h" -#include "projectile.h" -#include "effect.h" // for weed_msg -#include "item_group.h" -#include "options.h" -#include "messages.h" -#include "artifact.h" +#include "iteminfo_query.h" #include "itype.h" -#include "ammo.h" #include "iuse_actor.h" -#include "compatibility.h" -#include "translations.h" -#include "crafting.h" -#include "recipe_dictionary.h" -#include "requirements.h" +#include "map.h" #include "martialarts.h" -#include "npc.h" -#include "ui.h" -#include "vehicle.h" +#include "material.h" +#include "messages.h" #include "mtype.h" +#include "npc.h" +#include "options.h" +#include "output.h" +#include "player.h" +#include "projectile.h" #include "ranged.h" -#include "field.h" -#include "fire.h" -#include "weather.h" -#include "catacharset.h" -#include "cata_utility.h" -#include "input.h" -#include "fault.h" +#include "recipe_dictionary.h" +#include "requirements.h" +#include "ret_val.h" +#include "skill.h" +#include "string_formatter.h" +#include "text_snippets.h" +#include "translations.h" +#include "units.h" +#include "vehicle.h" #include "vehicle_selector.h" +#include "vitamin.h" +#include "vpart_position.h" #include "vpart_reference.h" -#include "units.h" -#include "ret_val.h" -#include "iteminfo_query.h" -#include "game_constants.h" -#include "iexamine.h" +#include "weather.h" -#include // floor -#include #include -#include -#include #include -#include -#include #include +#include +#include +#include +#include static const std::string GUN_MODE_VAR_NAME( "item::mode" ); @@ -354,15 +344,12 @@ item &item::ammo_set( const itype_id &ammo, long qty ) item &item::ammo_unset() { if( !is_tool() && !is_gun() && !is_magazine() ) { - ; // do nothing - + // do nothing } else if( is_magazine() ) { contents.clear(); - } else if( magazine_integral() ) { curammo = nullptr; charges = 0; - } else if( magazine_current() ) { magazine_current()->ammo_unset(); } @@ -578,16 +565,17 @@ bool item::stacks_with( const item &rhs ) const } if( goes_bad() ) { // If this goes bad, the other item should go bad, too. It only depends on the item type. - if( bday != rhs.bday ) { + // Stack items that fall into the same "bucket" of freshness. + // Distant buckets are larger than near ones. + std::pair my_clipped_time_to_rot = + clipped_time( type->comestible->spoils - rot ); + std::pair other_clipped_time_to_rot = + clipped_time( rhs.type->comestible->spoils - rhs.rot ); + if( my_clipped_time_to_rot != other_clipped_time_to_rot ) { return false; } - // Because spoiling items are only processed every processing_speed()-th turn - // the rotting value becomes slightly different for items that have - // been created at the same time and place and with the same initial rot. - if( std::abs( to_turns( rot - rhs.rot ) ) > processing_speed() ) { - return false; - } else if( rotten() != rhs.rotten() ) { - // just to be save that rotten and unrotten food is *never* stacked. + if( rotten() != rhs.rotten() ) { + // just to be safe that rotten and unrotten food is *never* stacked. return false; } } @@ -626,7 +614,7 @@ bool item::merge_charges( const item &rhs ) return true; } -void item::put_in( item payload ) +void item::put_in( const item &payload ) { contents.push_back( payload ); } @@ -701,14 +689,13 @@ bool itag2ivar( std::string &item_tag, std::map &item_ { size_t pos = item_tag.find( '=' ); if( item_tag.at( 0 ) == ivaresc && pos != std::string::npos && pos >= 2 ) { - std::string var_name; std::string val_decoded; int svarlen = 0; int svarsep = 0; svarsep = item_tag.find( '=' ); svarlen = item_tag.size(); val_decoded.clear(); - var_name = item_tag.substr( 1, svarsep - 1 ); // will assume sanity here for now + std::string var_name = item_tag.substr( 1, svarsep - 1 ); // will assume sanity here for now for( int s = svarsep + 1; s < svarlen; s++ ) { // cheap and temporary, AFAIK stringstream IFS = [\r\n\t ]; if( item_tag[s] == ivaresc && s < svarlen - 2 ) { @@ -854,29 +841,36 @@ std::string item::info( std::vector &info, const iteminfo_query *parts if( parts->test( iteminfo_parts::BASE_CATEGORY ) ) info.push_back( iteminfo( "BASE", _( "Category: " ), "
" + get_category().name() + "
", - -999, true, "", false ) ); + iteminfo::no_newline ) ); const int price_preapoc = price( false ) * batch; const int price_postapoc = price( true ) * batch; if( parts->test( iteminfo_parts::BASE_PRICE ) ) - info.push_back( iteminfo( "BASE", space + _( "Price: " ), "", - ( double )price_preapoc / 100, false, "$", true, true ) ); + info.push_back( iteminfo( "BASE", space + _( "Price: " ), _( "$" ), + iteminfo::is_decimal | iteminfo::lower_is_better, + static_cast( price_preapoc ) / 100 ) ); if( price_preapoc != price_postapoc && parts->test( iteminfo_parts::BASE_BARTER ) ) { - info.push_back( iteminfo( "BASE", space + _( "Barter value: " ), "", - ( double )price_postapoc / 100, false, "$", true, true ) ); + info.push_back( iteminfo( "BASE", space + _( "Barter value: " ), _( "$" ), + iteminfo::is_decimal | iteminfo::lower_is_better, + static_cast( price_postapoc ) / 100 ) ); } int converted_volume_scale = 0; const double converted_volume = round_up( convert_volume( volume().value(), &converted_volume_scale ) * batch, 2 ); - if( parts->test( iteminfo_parts::BASE_VOLUME ) ) + if( parts->test( iteminfo_parts::BASE_VOLUME ) ) { + iteminfo::flags f = iteminfo::lower_is_better | iteminfo::no_newline; + if( converted_volume_scale != 0 ) { + f |= iteminfo::is_decimal; + } info.push_back( iteminfo( "BASE", _( "Volume: " ), string_format( " %s", volume_units_abbr() ), - converted_volume, converted_volume_scale == 0, - "", false, true ) ); + f, converted_volume ) ); + } if( parts->test( iteminfo_parts::BASE_WEIGHT ) ) info.push_back( iteminfo( "BASE", space + _( "Weight: " ), string_format( " %s", weight_units() ), - convert_weight( weight() ) * batch, false, "", true, true ) ); + iteminfo::lower_is_better | iteminfo::is_decimal, + convert_weight( weight() ) * batch ) ); if( !type->rigid && parts->test( iteminfo_parts::BASE_RIGIDITY ) ) { info.emplace_back( "BASE", _( "Rigid: " ), _( "No (contents increase volume)" ) ); @@ -886,28 +880,31 @@ std::string item::info( std::vector &info, const iteminfo_query *parts int dmg_cut = damage_melee( DT_CUT ); int dmg_stab = damage_melee( DT_STAB ); if( parts->test( iteminfo_parts::BASE_DAMAGE ) ) { + std::string sep; if( dmg_bash ) { - info.emplace_back( "BASE", _( "Bash: " ), "", dmg_bash, true, "", false ); + info.emplace_back( "BASE", _( "Bash: " ), "", iteminfo::no_newline, dmg_bash ); + sep = space; } if( dmg_cut ) { - info.emplace_back( "BASE", ( dmg_bash ? space : std::string() ) + _( "Cut: " ), - "", dmg_cut, true, "", false ); + info.emplace_back( "BASE", sep + _( "Cut: " ), + "", iteminfo::no_newline, dmg_cut ); + sep = space; } if( dmg_stab ) { - info.emplace_back( "BASE", ( ( dmg_bash || dmg_cut ) ? space : std::string() ) + _( "Pierce: " ), - "", dmg_stab, true, "", false ); + info.emplace_back( "BASE", sep + _( "Pierce: " ), + "", iteminfo::no_newline, dmg_stab ); } } if( dmg_bash || dmg_cut || dmg_stab ) { if( parts->test( iteminfo_parts::BASE_TOHIT ) ) - info.push_back( iteminfo( "BASE", space + _( "To-hit bonus: " ), - ( ( type->m_to_hit > 0 ) ? "+" : "" ), - type->m_to_hit, true, "" ) ); + info.push_back( iteminfo( "BASE", space + _( "To-hit bonus: " ), "", + iteminfo::show_plus, type->m_to_hit ) ); if( parts->test( iteminfo_parts::BASE_MOVES ) ) - info.push_back( iteminfo( "BASE", _( "Moves per attack: " ), "", - attack_time(), true, "", true, true ) ); + info.push_back( iteminfo( "BASE", _( "Moves per attack: " ), + "", iteminfo::lower_is_better, + attack_time() ) ); } insert_separation_line(); @@ -951,42 +948,48 @@ std::string item::info( std::vector &info, const iteminfo_query *parts } if( count_by_charges() && !is_food() && !is_medication() && parts->test( iteminfo_parts::BASE_AMOUNT ) ) { - info.push_back( iteminfo( "BASE", _( "Amount: " ), "", charges * batch, true, "", true, false, - true ) ); + info.push_back( iteminfo( "BASE", _( "Amount: " ), "", iteminfo::no_flags, + charges * batch ) ); } - if( debug == true && parts->test( iteminfo_parts::BASE_DEBUG ) ) { - if( g != NULL ) { - info.push_back( iteminfo( "BASE", _( "age: " ), "", - to_hours( age() ), true, "", true, true ) ); + if( debug && parts->test( iteminfo_parts::BASE_DEBUG ) ) { + if( g != nullptr ) { + info.push_back( iteminfo( "BASE", _( "age: " ), "", iteminfo::lower_is_better, + to_hours( age() ) ) ); const item *food = is_food_container() ? &contents.front() : this; if( food && food->goes_bad() ) { - info.push_back( iteminfo( "BASE", _( "bday rot: " ), "", - to_turns( food->age() ), true, "", true, true ) ); - info.push_back( iteminfo( "BASE", _( "temp rot: " ), "", - to_turns( food->rot ), true, "", true, true ) ); - info.push_back( iteminfo( "BASE", space + _( "max rot: " ), "", - to_turns( food->type->comestible->spoils ), true, "", true, true ) ); - info.push_back( iteminfo( "BASE", _( "last rot: " ), "", - to_turn( food->last_rot_check ), true, "", true, true ) ); - info.push_back( iteminfo( "BASE", _( "last temp: " ), "", - to_turn( food->last_temp_check ), true, "", true, true ) ); + info.push_back( iteminfo( "BASE", _( "bday rot: " ), + "", iteminfo::lower_is_better, + to_turns( food->age() ) ) ); + info.push_back( iteminfo( "BASE", _( "temp rot: " ), + "", iteminfo::lower_is_better, + to_turns( food->rot ) ) ); + info.push_back( iteminfo( "BASE", space + _( "max rot: " ), + "", iteminfo::lower_is_better, + to_turns( food->type->comestible->spoils ) ) ); + info.push_back( iteminfo( "BASE", _( "last rot: " ), + "", iteminfo::lower_is_better, + to_turn( food->last_rot_check ) ) ); + info.push_back( iteminfo( "BASE", _( "last temp: " ), + "", iteminfo::lower_is_better, + to_turn( food->last_temp_check ) ) ); } if( food->item_tags.count( "HOT" ) ) { - info.push_back( iteminfo( "BASE", _( "HOT: " ), "", - food->item_counter, true, "", true, true ) ); + info.push_back( iteminfo( "BASE", _( "HOT: " ), "", iteminfo::lower_is_better, + food->item_counter ) ); } if( food->item_tags.count( "COLD" ) ) { info.push_back( iteminfo( "BASE", _( "COLD: " ), "", - food->item_counter, true, "", true, true ) ); + iteminfo::lower_is_better, food->item_counter ) ); } if( food->item_tags.count( "FROZEN" ) ) { info.push_back( iteminfo( "BASE", _( "FROZEN: " ), "", - food->item_counter, true, "", true, true ) ); + iteminfo::lower_is_better, food->item_counter ) ); } } - info.push_back( iteminfo( "BASE", _( "burn: " ), "", burnt, true, "", true, true ) ); + info.push_back( iteminfo( "BASE", _( "burn: " ), "", iteminfo::lower_is_better, + burnt ) ); } } @@ -999,20 +1002,23 @@ std::string item::info( std::vector &info, const iteminfo_query *parts if( med_item != nullptr ) { const auto &med_com = med_item->type->comestible; if( med_com->quench != 0 && parts->test( iteminfo_parts::MED_QUENCH ) ) { - info.push_back( iteminfo( "MED", _( "Quench: " ), "", med_com->quench ) ); + info.push_back( iteminfo( "MED", _( "Quench: " ), med_com->quench ) ); } if( med_com->fun != 0 && parts->test( iteminfo_parts::MED_JOY ) ) { - info.push_back( iteminfo( "MED", _( "Enjoyability: " ), "", g->u.fun_for( *med_item ).first ) ); + info.push_back( iteminfo( "MED", _( "Enjoyability: " ), + g->u.fun_for( *med_item ).first ) ); } if( med_com->stim != 0 && parts->test( iteminfo_parts::MED_STIMULATION ) ) { - info.push_back( iteminfo( "MED", string_format( "%s %s", _( "Stimulation:" ), - med_com->stim > 0 ? _( "Upper" ) : _( "Downer" ) ) ) ); + auto name = string_format( "%s %s", _( "Stimulation:" ), + med_com->stim > 0 ? _( "Upper" ) : _( "Downer" ) ); + info.push_back( iteminfo( "MED", name ) ); } if( parts->test( iteminfo_parts::MED_PORTIONS ) ) { - info.push_back( iteminfo( "MED", _( "Portions: " ), "", abs( int( med_item->charges ) * batch ) ) ); + info.push_back( iteminfo( "MED", _( "Portions: " ), + abs( int( med_item->charges ) * batch ) ) ); } if( med_com->addict && parts->test( iteminfo_parts::DESCRIPTION_MED_ADDICTING ) ) { @@ -1028,27 +1034,29 @@ std::string item::info( std::vector &info, const iteminfo_query *parts } if( food_item != nullptr ) { if( g->u.nutrition_for( *food_item ) != 0 || food_item->type->comestible->quench != 0 ) { - if( parts->test( iteminfo_parts::FOOD_NUTRITION ) ) - info.push_back( iteminfo( "FOOD", _( "Calories (kcal): " ), "", - g->u.nutrition_for( *food_item ) * islot_comestible::kcal_per_nutr, - true, "", false, true ) ); + if( parts->test( iteminfo_parts::FOOD_NUTRITION ) ) { + auto value = g->u.nutrition_for( *food_item ) * islot_comestible::kcal_per_nutr; + info.push_back( iteminfo( "FOOD", _( "Calories (kcal): " ), + "", iteminfo::no_newline, value ) ); + } if( parts->test( iteminfo_parts::FOOD_QUENCH ) ) { - info.push_back( iteminfo( "FOOD", space + _( "Quench: " ), "", + info.push_back( iteminfo( "FOOD", space + _( "Quench: " ), food_item->type->comestible->quench ) ); } } if( food_item->type->comestible->fun != 0 && parts->test( iteminfo_parts::FOOD_JOY ) ) { - info.push_back( iteminfo( "FOOD", _( "Enjoyability: " ), "", g->u.fun_for( *food_item ).first ) ); + info.push_back( iteminfo( "FOOD", _( "Enjoyability: " ), + g->u.fun_for( *food_item ).first ) ); } if( parts->test( iteminfo_parts::FOOD_PORTIONS ) ) { - info.push_back( iteminfo( "FOOD", _( "Portions: " ), "", + info.push_back( iteminfo( "FOOD", _( "Portions: " ), abs( int( food_item->charges ) * batch ) ) ); } - if( food_item->corpse != NULL && ( debug == true || ( g != NULL && - ( g->u.has_bionic( bionic_id( "bio_scent_vision" ) ) || g->u.has_trait( trait_id( "CARNIVORE" ) ) || - g->u.has_artifact_with( AEP_SUPER_CLAIRVOYANCE ) ) ) ) + if( food_item->corpse != nullptr && ( debug || ( g != nullptr && + ( g->u.has_bionic( bionic_id( "bio_scent_vision" ) ) || g->u.has_trait( trait_id( "CARNIVORE" ) ) || + g->u.has_artifact_with( AEP_SUPER_CLAIRVOYANCE ) ) ) ) && parts->test( iteminfo_parts::FOOD_SMELL ) ) { info.push_back( iteminfo( "FOOD", _( "Smells like: " ) + food_item->corpse->nname() ) ); } @@ -1133,14 +1141,16 @@ std::string item::info( std::vector &info, const iteminfo_query *parts if( is_magazine() && !has_flag( "NO_RELOAD" ) ) { - if( parts->test( iteminfo_parts::MAGAZINE_CAPACITY ) ) - info.emplace_back( "MAGAZINE", _( "Capacity: " ), - string_format( ngettext( " round of %s", " rounds of %s", ammo_capacity() ), - ammo_type()->name().c_str() ), ammo_capacity(), true ); - + if( parts->test( iteminfo_parts::MAGAZINE_CAPACITY ) ) { + auto fmt = string_format( + ngettext( " round of %s", " rounds of %s", ammo_capacity() ), + ammo_type()->name() ); + info.emplace_back( "MAGAZINE", _( "Capacity: " ), fmt, iteminfo::no_flags, + ammo_capacity() ); + } if( parts->test( iteminfo_parts::MAGAZINE_RELOAD ) ) info.emplace_back( "MAGAZINE", _( "Reload time: " ), _( " per round" ), - type->magazine->reload_time, true, "", true, true ); + iteminfo::lower_is_better, type->magazine->reload_time ); insert_separation_line(); } @@ -1160,22 +1170,24 @@ std::string item::info( std::vector &info, const iteminfo_query *parts const auto &ammo = *ammo_data()->ammo; if( !ammo.damage.empty() ) { if( parts->test( iteminfo_parts::AMMO_DAMAGE_VALUE ) ) { - info.emplace_back( "AMMO", _( "Damage: " ), "", ammo.damage.total_damage(), true, "", - false, false ); + info.emplace_back( "AMMO", _( "Damage: " ), "", + iteminfo::no_newline, ammo.damage.total_damage() ); } if( parts->test( iteminfo_parts::AMMO_DAMAGE_AP ) ) { - info.emplace_back( "AMMO", space + _( "Armor-pierce: " ), "", get_ranged_pierce( ammo ), true, "", - true, false ); + info.emplace_back( "AMMO", space + _( "Armor-pierce: " ), + get_ranged_pierce( ammo ) ); } if( parts->test( iteminfo_parts::AMMO_DAMAGE_RANGE ) ) { - info.emplace_back( "AMMO", _( "Range: " ), "", ammo.range, true, "", false, false ); + info.emplace_back( "AMMO", _( "Range: " ), "", + iteminfo::no_newline, ammo.range ); } if( parts->test( iteminfo_parts::AMMO_DAMAGE_DISPERSION ) ) { - info.emplace_back( "AMMO", space + _( "Dispersion: " ), "", ammo.dispersion, true, "", true, - true ); + info.emplace_back( "AMMO", space + _( "Dispersion: " ), "", + iteminfo::lower_is_better, ammo.dispersion ); } if( parts->test( iteminfo_parts::AMMO_DAMAGE_RECOIL ) ) { - info.emplace_back( "AMMO", _( "Recoil: " ), "", ammo.recoil, true, "", true, true ); + info.emplace_back( "AMMO", _( "Recoil: " ), "", + iteminfo::lower_is_better, ammo.recoil ); } } @@ -1228,24 +1240,27 @@ std::string item::info( std::vector &info, const iteminfo_query *parts damage_instance ammo_dam = has_ammo ? curammo->ammo->damage : damage_instance(); // @todo This doesn't cover multiple damage types int ammo_pierce = has_ammo ? get_ranged_pierce( *curammo->ammo ) : 0; - int ammo_range = has_ammo ? curammo->ammo->range : 0; int ammo_dispersion = has_ammo ? curammo->ammo->dispersion : 0; const Skill &skill = *mod->gun_skill(); if( parts->test( iteminfo_parts::GUN_USEDSKILL ) ) { - info.push_back( iteminfo( "GUN", _( "Skill used: " ), "" + skill.name() + "" ) ); + info.push_back( iteminfo( "GUN", _( "Skill used: " ), + "" + skill.name() + "" ) ); } if( mod->magazine_integral() || mod->magazine_current() ) { if( mod->magazine_current() && parts->test( iteminfo_parts::GUN_MAGAZINE ) ) { - info.emplace_back( "GUN", _( "Magazine: " ), string_format( "%s", - mod->magazine_current()->tname().c_str() ) ); + info.emplace_back( "GUN", _( "Magazine: " ), + string_format( "%s", + mod->magazine_current()->tname() ) ); } if( mod->ammo_capacity() && parts->test( iteminfo_parts::GUN_CAPACITY ) ) { - info.emplace_back( "GUN", _( "Capacity: " ), - string_format( ngettext( " round of %s", " rounds of %s", mod->ammo_capacity() ), - mod->ammo_type()->name().c_str() ), mod->ammo_capacity(), true ); + auto fmt = string_format( + ngettext( " round of %s", " rounds of %s", mod->ammo_capacity() ), + mod->ammo_type()->name() ); + info.emplace_back( "GUN", _( "Capacity: " ), fmt, iteminfo::no_flags, + mod->ammo_capacity() ); } } else if( parts->test( iteminfo_parts::GUN_TYPE ) ) { info.emplace_back( "GUN", _( "Type: " ), mod->ammo_type()->name() ); @@ -1266,12 +1281,13 @@ std::string item::info( std::vector &info, const iteminfo_query *parts int max_gun_range = mod->gun_range( &g->u ); if( max_gun_range > 0 && parts->test( iteminfo_parts::GUN_MAX_RANGE ) ) { - info.emplace_back( "GUN", _( "Maximum range: " ), "", max_gun_range ); + info.emplace_back( "GUN", _( "Maximum range: " ), "", iteminfo::no_flags, + max_gun_range ); } if( parts->test( iteminfo_parts::GUN_AIMING_STATS ) ) { - info.emplace_back( "GUN", _( "Base aim speed: " ), "", g->u.aim_per_move( *mod, MAX_RECOIL ), - true, "", true, true ); + info.emplace_back( "GUN", _( "Base aim speed: " ), "", iteminfo::no_flags, + g->u.aim_per_move( *mod, MAX_RECOIL ) ); for( const aim_type &type : g->u.get_aim_types( *mod ) ) { // Nameless aim levels don't get an entry. if( type.name.empty() ) { @@ -1281,60 +1297,65 @@ std::string item::info( std::vector &info, const iteminfo_query *parts int max_dispersion = g->u.get_weapon_dispersion( *mod ).max(); int range = range_with_even_chance_of_good_hit( max_dispersion + type.threshold ); info.emplace_back( "GUN", _( "Even chance of good hit at range: " ), - _( "" ), range ); + _( "" ), iteminfo::no_flags, range ); int aim_mv = g->u.gun_engagement_moves( *mod, type.threshold ); info.emplace_back( "GUN", _( "Time to reach aim level: " ), _( " seconds" ), - TICKS_TO_SECONDS( aim_mv ), false, "", true, true ); + iteminfo::is_decimal | iteminfo::lower_is_better, + TICKS_TO_SECONDS( aim_mv ) ); } } if( parts->test( iteminfo_parts::GUN_DAMAGE ) ) { - info.push_back( iteminfo( "GUN", _( "Damage: " ), "", mod->gun_damage( false ).total_damage(), true, - "", false, false ) ); + info.push_back( iteminfo( "GUN", _( "Damage: " ), "", iteminfo::no_newline, + mod->gun_damage( false ).total_damage() ) ); } if( has_ammo ) { - temp1.str( "" ); - temp1 << ( ammo_dam.total_damage() >= 0 ? "+" : "" ); - // ammo_damage and sum_of_damage don't need to translate. - + // ammo_damage and sum_of_damage not shown so don't need to translate. if( parts->test( iteminfo_parts::GUN_DAMAGE_LOADEDAMMO ) ) info.push_back( iteminfo( "GUN", "ammo_damage", "", - ammo_dam.total_damage(), true, temp1.str(), false, false, false ) ); + iteminfo::no_newline | iteminfo::no_name | + iteminfo::show_plus, + ammo_dam.total_damage() ) ); if( parts->test( iteminfo_parts::GUN_DAMAGE_TOTAL ) ) info.push_back( iteminfo( "GUN", "sum_of_damage", _( " = " ), - mod->gun_damage( true ).total_damage(), true, "", false, false, false ) ); + iteminfo::no_newline | iteminfo::no_name, + mod->gun_damage( true ).total_damage() ) ); } if( parts->test( iteminfo_parts::GUN_ARMORPIERCE ) ) info.push_back( iteminfo( "GUN", space + _( "Armor-pierce: " ), "", - get_ranged_pierce( gun ), true, "", !has_ammo, false ) ); + iteminfo::no_newline, get_ranged_pierce( gun ) ) ); if( has_ammo ) { - temp1.str( "" ); - temp1 << ( ammo_pierce >= 0 ? "+" : "" ); // ammo_armor_pierce and sum_of_armor_pierce don't need to translate. if( parts->test( iteminfo_parts::GUN_ARMORPIERCE_LOADEDAMMO ) ) info.push_back( iteminfo( "GUN", "ammo_armor_pierce", "", - ammo_pierce, true, temp1.str(), false, false, false ) ); + iteminfo::no_newline | iteminfo::no_name | + iteminfo::show_plus, ammo_pierce ) ); if( parts->test( iteminfo_parts::GUN_ARMORPIERCE_TOTAL ) ) info.push_back( iteminfo( "GUN", "sum_of_armor_pierce", _( " = " ), - get_ranged_pierce( gun ) + ammo_pierce, true, "", true, false, false ) ); + iteminfo::no_name, + get_ranged_pierce( gun ) + ammo_pierce ) ); } + info.back().bNewLine = true; if( parts->test( iteminfo_parts::GUN_DISPERSION ) ) info.push_back( iteminfo( "GUN", _( "Dispersion: " ), "", - mod->gun_dispersion( false, false ), true, "", !has_ammo, true ) ); + iteminfo::no_newline | iteminfo::lower_is_better, + mod->gun_dispersion( false, false ) ) ); if( has_ammo ) { - temp1.str( "" ); - temp1 << ( ammo_range >= 0 ? "+" : "" ); // ammo_dispersion and sum_of_dispersion don't need to translate. if( parts->test( iteminfo_parts::GUN_DISPERSION_LOADEDAMMO ) ) info.push_back( iteminfo( "GUN", "ammo_dispersion", "", - ammo_dispersion, true, temp1.str(), false, true, false ) ); + iteminfo::no_newline | iteminfo::lower_is_better | + iteminfo::no_name | iteminfo::show_plus, + ammo_dispersion ) ); if( parts->test( iteminfo_parts::GUN_DISPERSION_TOTAL ) ) info.push_back( iteminfo( "GUN", "sum_of_dispersion", _( " = " ), - mod->gun_dispersion( true, false ), true, "", true, true, false ) ); + iteminfo::lower_is_better | iteminfo::no_name, + mod->gun_dispersion( true, false ) ) ); } + info.back().bNewLine = true; // if effective sight dispersion differs from actual sight dispersion display both int act_disp = mod->sight_dispersion(); @@ -1342,18 +1363,18 @@ std::string item::info( std::vector &info, const iteminfo_query *parts int adj_disp = eff_disp - act_disp; if( parts->test( iteminfo_parts::GUN_DISPERSION_SIGHT ) ) { - switch( sgn( adj_disp ) ) { - case -1: - info.emplace_back( "GUN", _( "Sight dispersion: " ), - string_format( "%i-%i = ", act_disp, -adj_disp ), eff_disp, true, "", true, true ); - break; - case 1: - info.emplace_back( "GUN", _( "Sight dispersion: " ), - string_format( "%i+%i = ", act_disp, adj_disp ), eff_disp, true, "", true, true ); - break; - case 0: - info.emplace_back( "GUN", _( "Sight dispersion: " ), "", eff_disp, true, "", true, true ); - break; + info.push_back( iteminfo( "GUN", _( "Sight dispersion: " ), "", + iteminfo::no_newline | iteminfo::lower_is_better, + act_disp ) ); + + if( adj_disp ) { + info.push_back( iteminfo( "GUN", "sight_adj_disp", "", + iteminfo::no_newline | iteminfo::lower_is_better | + iteminfo::no_name | iteminfo::show_plus, + adj_disp ) ); + info.push_back( iteminfo( "GUN", "sight_eff_disp", _( " = " ), + iteminfo::lower_is_better | iteminfo::no_name, + eff_disp ) ); } } @@ -1362,23 +1383,28 @@ std::string item::info( std::vector &info, const iteminfo_query *parts if( aprox->gun_recoil( g->u ) ) { if( parts->test( iteminfo_parts::GUN_RECOIL ) ) info.emplace_back( "GUN", _( "Approximate recoil: " ), "", - aprox->gun_recoil( g->u ), true, "", !bipod, true ); + iteminfo::no_newline | iteminfo::lower_is_better, + aprox->gun_recoil( g->u ) ); if( bipod && parts->test( iteminfo_parts::GUN_RECOIL_BIPOD ) ) { info.emplace_back( "GUN", "bipod_recoil", _( " (with bipod )" ), - aprox->gun_recoil( g->u, true ), true, "", true, true, false ); + iteminfo::lower_is_better | iteminfo::no_name, + aprox->gun_recoil( g->u, true ) ); } } } else { if( mod->gun_recoil( g->u ) ) { if( parts->test( iteminfo_parts::GUN_RECOIL ) ) info.emplace_back( "GUN", _( "Effective recoil: " ), "", - mod->gun_recoil( g->u ), true, "", !bipod, true ); + iteminfo::no_newline | iteminfo::lower_is_better, + mod->gun_recoil( g->u ) ); if( bipod && parts->test( iteminfo_parts::GUN_RECOIL_BIPOD ) ) { info.emplace_back( "GUN", "bipod_recoil", _( " (with bipod )" ), - mod->gun_recoil( g->u, true ), true, "", true, true, false ); + iteminfo::lower_is_better | iteminfo::no_name, + mod->gun_recoil( g->u, true ) ); } } } + info.back().bNewLine = true; auto fire_modes = mod->gun_all_modes(); if( std::any_of( fire_modes.begin(), fire_modes.end(), @@ -1386,13 +1412,15 @@ std::string item::info( std::vector &info, const iteminfo_query *parts return e.second.qty > 1 && !e.second.melee(); } ) ) { info.emplace_back( "GUN", _( "Recommended strength (burst): " ), "", - ceil( mod->type->weight / 333.0_gram ), true, "", true, true ); + iteminfo::lower_is_better, + ceil( mod->type->weight / 333.0_gram ) ); } if( parts->test( iteminfo_parts::GUN_RELOAD_TIME ) ) info.emplace_back( "GUN", _( "Reload time: " ), has_flag( "RELOAD_ONE" ) ? _( " seconds per round" ) : _( " seconds" ), - int( mod->get_reload_time() / 16.67 ), true, "", true, true ); + iteminfo::lower_is_better, + int( mod->get_reload_time() / 16.67 ) ); if( parts->test( iteminfo_parts::GUN_FIRE_MODES ) ) { std::vector fm; @@ -1467,40 +1495,41 @@ std::string item::info( std::vector &info, const iteminfo_query *parts } if( mod.dispersion != 0 && parts->test( iteminfo_parts::GUNMOD_DISPERSION ) ) { info.push_back( iteminfo( "GUNMOD", _( "Dispersion modifier: " ), "", - mod.dispersion, true, ( ( mod.dispersion > 0 ) ? "+" : "" ), true, true ) ); + iteminfo::lower_is_better | iteminfo::show_plus, + mod.dispersion ) ); } if( mod.sight_dispersion != -1 && parts->test( iteminfo_parts::GUNMOD_DISPERSION_SIGHT ) ) { info.push_back( iteminfo( "GUNMOD", _( "Sight dispersion: " ), "", - mod.sight_dispersion, true, "", true, true ) ); + iteminfo::lower_is_better, mod.sight_dispersion ) ); } if( mod.aim_speed >= 0 && parts->test( iteminfo_parts::GUNMOD_AIMSPEED ) ) { info.push_back( iteminfo( "GUNMOD", _( "Aim speed: " ), "", - mod.aim_speed, true, "", true, true ) ); + iteminfo::lower_is_better, mod.aim_speed ) ); } int total_damage = static_cast( mod.damage.total_damage() ); if( total_damage != 0 && parts->test( iteminfo_parts::GUNMOD_DAMAGE ) ) { - info.push_back( iteminfo( "GUNMOD", _( "Damage: " ), "", total_damage, true, - ( ( total_damage > 0 ) ? "+" : "" ) ) ); + info.push_back( iteminfo( "GUNMOD", _( "Damage: " ), "", iteminfo::show_plus, + total_damage ) ); } int pierce = get_ranged_pierce( mod ); if( get_ranged_pierce( mod ) != 0 && parts->test( iteminfo_parts::GUNMOD_ARMORPIERCE ) ) { - info.push_back( iteminfo( "GUNMOD", _( "Armor-pierce: " ), "", pierce, true, - ( ( pierce > 0 ) ? "+" : "" ) ) ); + info.push_back( iteminfo( "GUNMOD", _( "Armor-pierce: " ), "", iteminfo::show_plus, + pierce ) ); } if( mod.handling != 0 && parts->test( iteminfo_parts::GUNMOD_HANDLING ) ) { - info.emplace_back( "GUNMOD", _( "Handling modifier: " ), mod.handling > 0 ? "+" : "", mod.handling, - true ); + info.emplace_back( "GUNMOD", _( "Handling modifier: " ), "", + iteminfo::show_plus, mod.handling ); } if( type->mod->ammo_modifier && parts->test( iteminfo_parts::GUNMOD_AMMO ) ) { - info.push_back( iteminfo( "GUNMOD", - string_format( _( "Ammo: %s" ), type->mod->ammo_modifier->name().c_str() ) ) ); + info.push_back( iteminfo( "GUNMOD", string_format( _( "Ammo: %s" ), + type->mod->ammo_modifier->name() ) ) ); } if( mod.reload_modifier != 0 && parts->test( iteminfo_parts::GUNMOD_RELOAD ) ) { - info.emplace_back( "GUNMOD", _( "Reload modifier: " ), _( "%" ), mod.reload_modifier, true, "", - true, true ); + info.emplace_back( "GUNMOD", _( "Reload modifier: " ), _( "%" ), + iteminfo::lower_is_better, mod.reload_modifier ); } if( mod.min_str_required_mod > 0 && parts->test( iteminfo_parts::GUNMOD_STRENGTH ) ) { - info.push_back( iteminfo( "GUNMOD", _( "Minimum strength required modifier: " ), "", + info.push_back( iteminfo( "GUNMOD", _( "Minimum strength required modifier: " ), mod.min_str_required_mod ) ); } @@ -1602,49 +1631,78 @@ std::string item::info( std::vector &info, const iteminfo_query *parts } if( parts->test( iteminfo_parts::ARMOR_COVERAGE ) ) { - info.push_back( iteminfo( "ARMOR", _( "Coverage: " ), "%", get_coverage(), true, "", - false ) ); + info.push_back( iteminfo( "ARMOR", _( "Coverage: " ), "%", + iteminfo::no_newline, get_coverage() ) ); } if( parts->test( iteminfo_parts::ARMOR_WARMTH ) ) { - info.push_back( iteminfo( "ARMOR", space + _( "Warmth: " ), "", get_warmth() ) ); + info.push_back( iteminfo( "ARMOR", space + _( "Warmth: " ), get_warmth() ) ); } insert_separation_line(); if( parts->test( iteminfo_parts::ARMOR_ENCUMBRANCE ) ) { + int encumbrance = get_encumber(); + std::string format; if( has_flag( "FIT" ) ) { - info.push_back( iteminfo( "ARMOR", _( "Encumbrance: " ), - _( " (fits)" ), - get_encumber(), true, "", false, true ) ); - } else { - info.push_back( iteminfo( "ARMOR", _( "Encumbrance: " ), "", - get_encumber(), true, "", false, true ) ); + format = _( " (fits)" ); + } else if( has_flag( "VARSIZE" ) && encumbrance ) { + format = _( " (poor fit)" ); } + info.push_back( iteminfo( "ARMOR", _( "Encumbrance: " ), format, + iteminfo::no_newline | iteminfo::lower_is_better, + encumbrance ) ); if( !type->rigid ) { const auto encumbrance_when_full = get_encumber_when_containing( get_total_capacity() ); info.push_back( iteminfo( "ARMOR", space + _( "Encumbrance when full: " ), "", - encumbrance_when_full, true, "", false, true ) ); + iteminfo::no_newline | iteminfo::lower_is_better, + encumbrance_when_full ) ); } } int converted_storage_scale = 0; const double converted_storage = round_up( convert_volume( get_storage().value(), &converted_storage_scale ), 2 ); - if( parts->test( iteminfo_parts::ARMOR_STORAGE ) && converted_storage > 0 ) + if( parts->test( iteminfo_parts::ARMOR_STORAGE ) && converted_storage > 0 ) { + auto f = converted_storage_scale == 0 ? iteminfo::no_flags : iteminfo::is_decimal; info.push_back( iteminfo( "ARMOR", space + _( "Storage: " ), string_format( " %s", volume_units_abbr() ), - converted_storage, converted_storage_scale == 0 ) ); + f, converted_storage ) ); + } // Whatever the last entry was, we want a newline at this point info.back().bNewLine = true; if( parts->test( iteminfo_parts::ARMOR_PROTECTION ) ) { - info.push_back( iteminfo( "ARMOR", _( "Protection: Bash: " ), "", bash_resist(), true, "", - false ) ); - info.push_back( iteminfo( "ARMOR", space + _( "Cut: " ), "", cut_resist(), true, "", false ) ); - info.push_back( iteminfo( "ARMOR", space + _( "Acid: " ), "", acid_resist(), true, "", false ) ); - info.push_back( iteminfo( "ARMOR", space + _( "Fire: " ), "", fire_resist(), true, "", true ) ); - info.push_back( iteminfo( "ARMOR", _( "Environmental protection: " ), "", get_env_resist() ) ); + info.push_back( iteminfo( "ARMOR", _( "Protection: Bash: " ), "", + iteminfo::no_newline, bash_resist() ) ); + info.push_back( iteminfo( "ARMOR", space + _( "Cut: " ), + cut_resist() ) ); + info.push_back( iteminfo( "ARMOR", space + _( "Acid: " ), "", + iteminfo::no_newline, acid_resist() ) ); + info.push_back( iteminfo( "ARMOR", space + _( "Fire: " ), "", + iteminfo::no_newline, fire_resist() ) ); + info.push_back( iteminfo( "ARMOR", space + _( "Environmental: " ), + get_env_resist() ) ); + if( type->can_use( "GASMASK" ) ) { + info.push_back( iteminfo( "ARMOR", + _( "Protection when active: " ) ) ); + info.push_back( iteminfo( "ARMOR", space + _( "Acid: " ), "", + iteminfo::no_newline, + acid_resist( false, get_base_env_resist_w_filter() ) ) ); + info.push_back( iteminfo( "ARMOR", space + _( "Fire: " ), "", + iteminfo::no_newline, + fire_resist( false, get_base_env_resist_w_filter() ) ) ); + info.push_back( iteminfo( "ARMOR", space + _( "Environmental: " ), + get_env_resist( get_base_env_resist_w_filter() ) ) ); + } + + if( damage() > 0 ) { + info.push_back( iteminfo( "ARMOR", + _( "Protection values are reduced by " + "damage and you may be able to " + "improve them by repairing this " + "item." ) ) ); + } } } @@ -1666,42 +1724,46 @@ std::string item::info( std::vector &info, const iteminfo_query *parts if( book.skill ) { if( g->u.get_skill_level_object( book.skill ).can_train() && parts->test( iteminfo_parts::BOOK_SKILLRANGE_MAX ) ) { - info.push_back( iteminfo( "BOOK", "", - string_format( _( "Can bring your %s skill to " ), - book.skill.obj().name().c_str() ), book.level ) ); + auto fmt = string_format( + _( "Can bring your %s skill to " ), + book.skill.obj().name() ); + info.push_back( iteminfo( "BOOK", "", fmt, iteminfo::no_flags, book.level ) ); } if( book.req != 0 && parts->test( iteminfo_parts::BOOK_SKILLRANGE_MIN ) ) { - info.push_back( iteminfo( "BOOK", "", - string_format( _( "Requires %s level to understand." ), - book.skill.obj().name().c_str() ), - book.req, true, "", true, true ) ); + auto fmt = string_format( + _( "Requires %s level to understand." ), + book.skill.obj().name() ); + info.push_back( iteminfo( "BOOK", "", fmt, + iteminfo::lower_is_better, book.req ) ); } } if( book.intel != 0 && parts->test( iteminfo_parts::BOOK_REQUIREMENTS_INT ) ) { info.push_back( iteminfo( "BOOK", "", _( "Requires intelligence of to easily read." ), - book.intel, true, "", true, true ) ); + iteminfo::lower_is_better, book.intel ) ); } if( g->u.book_fun_for( *this ) != 0 && parts->test( iteminfo_parts::BOOK_MORALECHANGE ) ) { info.push_back( iteminfo( "BOOK", "", _( "Reading this book affects your morale by " ), - g->u.book_fun_for( *this ), true, ( g->u.book_fun_for( *this ) > 0 ? "+" : "" ) ) ); + iteminfo::show_plus, g->u.book_fun_for( *this ) ) ); + } + if( parts->test( iteminfo_parts::BOOK_TIMEPERCHAPTER ) ) { + auto fmt = ngettext( + "A chapter of this book takes minute to read.", + "A chapter of this book takes minutes to read.", + book.time ); + info.push_back( iteminfo( "BOOK", "", fmt, + iteminfo::lower_is_better, book.time ) ); } - if( parts->test( iteminfo_parts::BOOK_TIMEPERCHAPTER ) ) - info.push_back( iteminfo( "BOOK", "", - ngettext( "A chapter of this book takes minute to read.", - "A chapter of this book takes minutes to read.", - book.time ), - book.time, true, "", true, true ) ); if( book.chapters > 0 && parts->test( iteminfo_parts::BOOK_NUMUNREADCHAPTERS ) ) { const int unread = get_remaining_chapters( g->u ); - info.push_back( iteminfo( "BOOK", "", ngettext( "This book has unread chapter.", - "This book has unread chapters.", - unread ), - unread ) ); + auto fmt = ngettext( "This book has unread chapter.", + "This book has unread chapters.", + unread ); + info.push_back( iteminfo( "BOOK", "", fmt, iteminfo::no_flags, unread ) ); } std::vector recipe_list; @@ -1722,10 +1784,11 @@ std::string item::info( std::vector &info, const iteminfo_query *parts } if( !recipe_list.empty() && parts->test( iteminfo_parts::DESCRIPTION_BOOK_RECIPES ) ) { - std::string recipe_line = string_format( - ngettext( "This book contains %1$d crafting recipe: %2$s", - "This book contains %1$d crafting recipes: %2$s", recipe_list.size() ), - recipe_list.size(), enumerate_as_string( recipe_list ).c_str() ); + std::string recipe_line = + string_format( ngettext( "This book contains %1$d crafting recipe: %2$s", + "This book contains %1$d crafting recipes: %2$s", + recipe_list.size() ), + recipe_list.size(), enumerate_as_string( recipe_list ) ); insert_separation_line(); info.push_back( iteminfo( "DESCRIPTION", recipe_line ) ); @@ -1733,18 +1796,21 @@ std::string item::info( std::vector &info, const iteminfo_query *parts if( recipe_list.size() != book.recipes.size() && parts->test( iteminfo_parts::DESCRIPTION_BOOK_ADDITIONAL_RECIPES ) ) { - info.push_back( iteminfo( "DESCRIPTION", - _( "It might help you figuring out some more recipes." ) ) ); + info.push_back( iteminfo( + "DESCRIPTION", + _( "It might help you figuring out some more recipes." ) ) ); } } else { if( parts->test( iteminfo_parts::BOOK_UNREAD ) ) - info.push_back( iteminfo( "BOOK", - _( "You need to read this book to see its contents." ) ) ); + info.push_back( iteminfo( + "BOOK", + _( "You need to read this book to see its contents." ) ) ); } } if( is_container() && parts->test( iteminfo_parts::CONTAINER_DETAILS ) ) { + insert_separation_line(); const auto &c = *type->container; temp1.str( "" ); @@ -1768,6 +1834,7 @@ std::string item::info( std::vector &info, const iteminfo_query *parts } if( is_tool() ) { + insert_separation_line(); if( ammo_capacity() != 0 && parts->test( iteminfo_parts::TOOL_CHARGES ) ) { info.emplace_back( "TOOL", string_format( _( "Charges: %d" ), ammo_remaining() ) ); } @@ -1795,7 +1862,7 @@ std::string item::info( std::vector &info, const iteminfo_query *parts } else { tmp = ngettext( "Maximum charge.", "Maximum charges.", ammo_capacity() ); } - info.emplace_back( "TOOL", "", tmp, ammo_capacity() ); + info.emplace_back( "TOOL", "", tmp, iteminfo::no_flags, ammo_capacity() ); } } @@ -1824,7 +1891,8 @@ std::string item::info( std::vector &info, const iteminfo_query *parts if( q.first == quality_jack || q.first == quality_lift ) { str = string_format( _( "Has level %1$d %2$s quality and is rated at %3$d %4$s" ), - q.second, q.first.obj().name.c_str(), ( int )convert_weight( q.second * TOOL_LIFT_FACTOR ), + q.second, q.first.obj().name.c_str(), + static_cast( convert_weight( q.second * TOOL_LIFT_FACTOR ) ), weight_units() ); } else { str = string_format( _( "Has level %1$d %2$s quality." ), @@ -1947,9 +2015,11 @@ std::string item::info( std::vector &info, const iteminfo_query *parts } } - for( const auto &method : type->use_methods ) { - insert_separation_line(); - method.second.dump_info( *this, info ); + if( parts->test( iteminfo_parts::DESCRIPTION_USE_METHODS ) ) { + for( const auto &method : type->use_methods ) { + insert_separation_line(); + method.second.dump_info( *this, info ); + } } if( parts->test( iteminfo_parts::DESCRIPTION_REPAIREDWITH ) ) { @@ -2009,8 +2079,6 @@ std::string item::info( std::vector &info, const iteminfo_query *parts info.push_back( iteminfo( "DESCRIPTION", _( "* This item can be worn with a helmet." ) ) ); } - - const bool little = g->u.has_trait( trait_id( "SMALL2" ) ) || g->u.has_trait( trait_id( "SMALL_OK" ) ); if( has_flag( "FIT" ) && parts->test( iteminfo_parts::DESCRIPTION_FLAGS_FITS ) ) { @@ -2207,7 +2275,7 @@ std::string item::info( std::vector &info, const iteminfo_query *parts if( item_note != item_vars.end() && parts->test( iteminfo_parts::DESCRIPTION_NOTES ) ) { insert_separation_line(); - std::string ntext = ""; + std::string ntext; if( item_note_type != item_vars.end() ) { ntext += string_format( _( "%1$s on the %2$s is: " ), item_note_type->second.c_str(), tname().c_str() ); @@ -2254,9 +2322,13 @@ std::string item::info( std::vector &info, const iteminfo_query *parts round_up( convert_volume( contents_volume.value(), &converted_volume_scale ), 2 ); info.emplace_back( "DESCRIPTION", contents_item.display_name() ); + auto f = iteminfo::no_newline; + if( converted_volume_scale != 0 ) { + f |= iteminfo::is_decimal; + } info.emplace_back( "CONTAINER", description + space, - string_format( " %s", volume_units_abbr() ), - converted_volume, converted_volume_scale == 0, "", false ); + string_format( " %s", volume_units_abbr() ), f, + converted_volume ); } else { info.emplace_back( "DESCRIPTION", contents_item.display_name() ); info.emplace_back( "DESCRIPTION", description ); @@ -2306,31 +2378,7 @@ std::string item::info( std::vector &info, const iteminfo_query *parts info.pop_back(); } - temp1.str( "" ); - for( auto &elem : info ) { - if( elem.sType == "DESCRIPTION" ) { - temp1 << "\n"; - } - - if( elem.bDrawName ) { - temp1 << elem.sName; - } - size_t pos = elem.sFmt.find( "" ); - std::string sPost = ""; - if( pos != std::string::npos ) { - temp1 << elem.sFmt.substr( 0, pos ); - sPost = elem.sFmt.substr( pos + 5 ); - } else { - temp1 << elem.sFmt.c_str(); - } - if( elem.sValue != "-999" ) { - temp1 << elem.sPlus << "" << elem.sValue << ""; - } - temp1 << sPost; - temp1 << ( ( elem.bNewLine ) ? "\n" : "" ); - } - - return replace_colors( temp1.str() ); + return format_item_info( info, {} ); } int item::get_free_mod_locations( const gunmod_location &location ) const @@ -2450,7 +2498,6 @@ nc_color item::color_in_inventory() const } else if( is_magazine() ) { // Magazines are green if you have guns and ammo for them // ltred if you have one but not the other - ammotype amtype = ammo_type(); bool has_gun = u.has_item_with( [this]( const item & it ) { return it.is_gun() && it.magazine_compatible().count( typeId() ) > 0; } ); @@ -2657,7 +2704,7 @@ std::string item::tname( unsigned int quantity, bool with_prefix ) const damtext.insert( 0, _( "faulty " ) ); } - std::string vehtext = ""; + std::string vehtext; if( is_engine() && engine_displacement() > 0 ) { vehtext = string_format( pgettext( "vehicle adjective", "%2.1fL " ), engine_displacement() / 100.0f ); @@ -2758,8 +2805,8 @@ std::string item::tname( unsigned int quantity, bool with_prefix ) const ret << _( " (oversize)" ); } else if( !small && undersize ) { ret << _( " (undersize)" ); - } else if( fits ) { - ret << _( " (fits)" ); + } else if( !fits && has_flag( "VARSIZE" ) ) { + ret << _( " (poor fit)" ); } } @@ -2810,7 +2857,7 @@ std::string item::tname( unsigned int quantity, bool with_prefix ) const } ret.str( "" ); - //~ This is a string to construct the item name as it is displayed. This format string has been added for maximum flexibility. The strings are: %1$s: Damage text (e.g. "bruised"). %2$s: burn adjectives (e.g. "burnt"). %3$s: tool modifier text (e.g. "atomic"). %4$s: vehicle part text (e.g. "3.8-Liter"). $5$s: main item text (e.g. "apple"). %6s: tags (e.g. "(wet) (fits)"). + //~ This is a string to construct the item name as it is displayed. This format string has been added for maximum flexibility. The strings are: %1$s: Damage text (e.g. "bruised"). %2$s: burn adjectives (e.g. "burnt"). %3$s: tool modifier text (e.g. "atomic"). %4$s: vehicle part text (e.g. "3.8-Liter"). $5$s: main item text (e.g. "apple"). %6s: tags (e.g. "(wet) (poor fit)"). ret << string_format( _( "%1$s%2$s%3$s%4$s%5$s%6$s" ), damtext.c_str(), burntext.c_str(), modtext.c_str(), vehtext.c_str(), maintext.c_str(), tagtext.c_str() ); @@ -3115,8 +3162,9 @@ units::volume item::volume( bool integral ) const // consider only the base size of the gun (without mods) int tmpvol = get_var( "volume", ( type->volume - type->gun->barrel_length ) / units::legacy_volume_factor ); - if( tmpvol <= 3 ) ; // intentional NOP - else if( tmpvol <= 5 ) { + if( tmpvol <= 3 ) { + // intentional NOP + } else if( tmpvol <= 5 ) { ret -= 250_ml; } else if( tmpvol <= 6 ) { ret -= 500_ml; @@ -3308,7 +3356,7 @@ long item::get_property_long( const std::string &prop, long def ) const if( it != type->properties.end() ) { char *e = nullptr; long r = std::strtol( it->second.c_str(), &e, 10 ); - if( it->second.size() && *e == '\0' ) { + if( !it->second.empty() && *e == '\0' ) { return r; } debugmsg( "invalid property '%s' for item '%s'", prop.c_str(), tname().c_str() ); @@ -3500,7 +3548,7 @@ units::volume item::get_storage() const return t->storage; } -int item::get_env_resist() const +int item::get_env_resist( int override_base_resist ) const { const auto t = find_armor_data(); if( t == nullptr ) { @@ -3509,12 +3557,12 @@ int item::get_env_resist() const // modify if item is a gas mask and has filter int resist_base = t->env_resist; int resist_filter = get_var( "overwrite_env_resist", 0 ); - int resist = std::max( resist_base, resist_filter ); + int resist = std::max( { resist_base, resist_filter, override_base_resist } ); return lround( resist * get_relative_health() ); } -int item::get_env_resist_w_filter() const +int item::get_base_env_resist_w_filter() const { const auto t = find_armor_data(); if( t == nullptr ) { @@ -3667,7 +3715,7 @@ bool item::ready_to_revive( const tripoint &pos ) const return false; } int age_in_hours = to_hours( age() ); - age_in_hours -= int( ( float )burnt / ( volume() / 250_ml ) ); + age_in_hours -= int( static_cast( burnt ) / ( volume() / 250_ml ) ); if( damage_level( 4 ) > 0 ) { age_in_hours /= ( damage_level( 4 ) + 1 ); } @@ -3799,10 +3847,10 @@ int item::cut_resist( bool to_self ) const int item::stab_resist( bool to_self ) const { // Better than hardcoding it in multiple places - return ( int )( 0.8f * cut_resist( to_self ) ); + return static_cast( 0.8f * cut_resist( to_self ) ); } -int item::acid_resist( bool to_self ) const +int item::acid_resist( bool to_self, int base_env_resist ) const { if( to_self ) { // Currently no items are damaged by acid @@ -3826,7 +3874,7 @@ int item::acid_resist( bool to_self ) const resist /= mat_types.size(); } - const int env = get_env_resist(); + const int env = get_env_resist( base_env_resist ); if( env < 10 ) { // Low env protection means it doesn't prevent acid seeping in. resist *= env / 10.0f; @@ -3835,7 +3883,7 @@ int item::acid_resist( bool to_self ) const return lround( resist ); } -int item::fire_resist( bool to_self ) const +int item::fire_resist( bool to_self, int base_env_resist ) const { if( to_self ) { // Fire damages items in a different way @@ -3856,7 +3904,7 @@ int item::fire_resist( bool to_self ) const resist /= mat_types.size(); } - const int env = get_env_resist(); + const int env = get_env_resist( base_env_resist ); if( env < 10 ) { // Iron resists immersion in magma, iron-clad knight won't. resist *= env / 10.0f; @@ -4047,7 +4095,7 @@ const std::map &item::quality_of() const std::vector item::made_of_types() const { std::vector material_types_composed_of; - for( auto mat_id : made_of() ) { + for( const material_id &mat_id : made_of() ) { material_types_composed_of.push_back( &mat_id.obj() ); } return material_types_composed_of; @@ -4942,7 +4990,7 @@ long item::ammo_consume( long qty, const tripoint &pos ) if( is_magazine() ) { auto need = qty; - while( contents.size() ) { + while( !contents.empty() ) { auto &e = *contents.rbegin(); if( need >= e.charges ) { need -= e.charges; @@ -5215,7 +5263,7 @@ std::map item::gun_all_modes() const res.emplace( gun_mode_id( prefix + m.first.str() ), gun_mode( m.second.name(), const_cast( e ), qty, m.second.flags() ) ); - }; + } // non-auxiliary gunmods may provide additional modes for the base item } else if( e->is_gunmod() ) { @@ -5462,8 +5510,7 @@ bool item::reload( player &u, item_location loc, long qty ) } item *container = nullptr; - if( ammo->is_ammo_container() || ammo->is_watertight_container() || - ammo->is_non_resealable_container() ) { + if( ammo->is_ammo_container() || ammo->is_container() ) { container = ammo; ammo = &ammo->contents.front(); } @@ -5701,7 +5748,7 @@ bool item::getlight( float &luminance, int &width, int &direction ) const width = 0; direction = 0; if( light.luminance > 0 ) { - luminance = ( float )light.luminance; + luminance = static_cast( light.luminance ); if( light.width > 0 ) { // width > 0 is a light arc width = light.width; direction = light.direction; @@ -5710,7 +5757,7 @@ bool item::getlight( float &luminance, int &width, int &direction ) const } else { const int lumint = getlight_emit(); if( lumint > 0 ) { - luminance = ( float )lumint; + luminance = static_cast( lumint ); return true; } } @@ -6071,27 +6118,33 @@ const item_category &item::get_category() const } iteminfo::iteminfo( const std::string &Type, const std::string &Name, const std::string &Fmt, - double Value, bool _is_int, const std::string &Plus, - bool NewLine, bool LowerIsBetter, bool DrawName ) + flags f, double Value ) { sType = Type; sName = replace_colors( Name ); sFmt = replace_colors( Fmt ); - is_int = _is_int; + is_int = !( f & is_decimal ); dValue = Value; + bShowPlus = static_cast( f & show_plus ); std::stringstream convert; - if( _is_int ) { - int dIn0i = int( Value ); - convert << dIn0i; + if( bShowPlus ) { + convert << std::showpos; + } + if( is_int ) { + convert << std::setprecision( 0 ); } else { - convert.precision( 2 ); - convert << std::fixed << Value; + convert << std::setprecision( 2 ); } + convert << std::fixed << Value; sValue = convert.str(); - sPlus = Plus; - bNewLine = NewLine; - bLowerIsBetter = LowerIsBetter; - bDrawName = DrawName; + bNewLine = !( f & no_newline ); + bLowerIsBetter = static_cast( f & lower_is_better ); + bDrawName = !( f & no_name ); +} + +iteminfo::iteminfo( const std::string &Type, const std::string &Name, double Value ) + : iteminfo( Type, Name, "", no_flags, Value ) +{ } bool item::will_explode_in_fire() const @@ -6204,7 +6257,7 @@ bool item::can_holster( const item &obj, bool ignore ) const return false; // item is not a suitable holster for obj } - if( !ignore && ( int ) contents.size() >= ptr->multi ) { + if( !ignore && static_cast( contents.size() ) >= ptr->multi ) { return false; // item is already full } @@ -6460,11 +6513,9 @@ void item::heat_up() item_tags.erase( "COLD" ); item_tags.erase( "FROZEN" ); item_tags.erase( "WARM" ); - if( !item_tags.count( "HOT" ) ) { - item_tags.insert( "HOT" ); - } + item_tags.insert( "HOT" ); // links the amount of heat an item can retain to its mass - item_counter = clamp( to_gram( weight() ), 100, 600 );; + item_counter = clamp( to_gram( weight() ), 100, 600 ); reset_temp_check(); } @@ -7181,7 +7232,6 @@ bool item::on_drop( const tripoint &pos, map &m ) return type->drop_action && type->drop_action.call( g->u, *this, false, pos ); } - time_duration item::age() const { return calendar::turn - birthday(); diff --git a/src/item.h b/src/item.h index bd918ea1e8861..a0154b35cc961 100644 --- a/src/item.h +++ b/src/item.h @@ -2,20 +2,19 @@ #ifndef ITEM_H #define ITEM_H +#include "calendar.h" +#include "cata_utility.h" +#include "debug.h" +#include "item_location.h" +#include "string_id.h" +#include "visitable.h" + #include -#include -#include #include -#include -#include #include - -#include "visitable.h" -#include "string_id.h" -#include "item_location.h" -#include "debug.h" -#include "cata_utility.h" -#include "calendar.h" +#include +#include +#include namespace cata { @@ -126,9 +125,6 @@ struct iteminfo { /** Flag indicating type of sValue. True if integer, false if single decimal */ bool is_int; - /** Used to add a leading character to the printed value, usually '+' or '$'. */ - std::string sPlus; - /** Flag indicating whether a newline should be printed after printing this item */ bool bNewLine; @@ -138,23 +134,41 @@ struct iteminfo { /** Whether to print sName. If false, use for comparisons but don't print for user. */ bool bDrawName; + /** Whether to print a sign on positive values */ + bool bShowPlus; + + enum flags { + no_flags = 0, + is_decimal = 1 << 0, ///< Print as decimal rather than integer + no_newline = 1 << 1, ///< Do not follow with a newline + lower_is_better = 1 << 2, ///< Lower values are better for this stat + no_name = 1 << 3, ///< Do not print the name + show_plus = 1 << 4, ///< Use a + sign for positive values + }; + /** * @param Type The item type of the item this iteminfo belongs to. * @param Name The name of the property this iteminfo describes. * @param Fmt Formatting text desired between item name and value + * @param flags Additional flags to customize this entry * @param Value Numerical value of this property, -999 for none. - * @param _is_int If true then Value is interpreted as an integer - * @param Plus Character to place before value, generally '+' or '$' - * @param NewLine Whether to insert newline at end of output. - * @param LowerIsBetter True if lower values better for red/green coloring - * @param DrawName True if item name should be displayed. */ iteminfo( const std::string &Type, const std::string &Name, const std::string &Fmt = "", - double Value = -999, - bool _is_int = true, const std::string &Plus = "", bool NewLine = true, - bool LowerIsBetter = false, bool DrawName = true ); + flags = no_flags, double Value = -999 ); + iteminfo( const std::string &Type, const std::string &Name, double Value ); }; +inline iteminfo::flags operator|( iteminfo::flags l, iteminfo::flags r ) +{ + using I = std::underlying_type::type; + return static_cast( static_cast( l ) | r ); +} + +inline iteminfo::flags &operator|=( iteminfo::flags &l, iteminfo::flags r ) +{ + return l = l | r; +} + /** * Possible layers that a piece of clothing/armor can occupy * @@ -555,7 +569,7 @@ class item : public visitable * @param map A map object associated with that position. * @return true if the item was destroyed during placement. */ - bool on_drop( const tripoint &pos, map &m ); + bool on_drop( const tripoint &pos, map &map ); /** * Consume a specific amount of items of a specific type. @@ -624,7 +638,7 @@ class item : public visitable /** * Puts the given item into this one, no checks are performed. */ - void put_in( item payload ); + void put_in( const item &payload ); /** Stores a newly constructed item at the end of this item's contents */ template @@ -874,13 +888,15 @@ class item : public visitable * compare them to. The values can be interpreted as chance (@ref one_in) of damaging the item * when exposed to the type of damage. * @param to_self If this is true, it returns item's own resistance, not one it gives to wearer. + * @param base_env_resist Will override the base environmental + * resistance (to allow hypothetical calculations for gas masks). */ /*@{*/ int bash_resist( bool to_self = false ) const; int cut_resist( bool to_self = false ) const; int stab_resist( bool to_self = false ) const; - int acid_resist( bool to_self = false ) const; - int fire_resist( bool to_self = false ) const; + int acid_resist( bool to_self = false, int base_env_resist = 0 ) const; + int fire_resist( bool to_self = false, int base_env_resist = 0 ) const; /*@}*/ /** @@ -1015,10 +1031,6 @@ class item : public visitable * Helper to bring a cable back to its initial state. */ void reset_cable( player *carrier ); - /** - * Helper to attach a cable to cable charger in a vehicle - */ - void set_cable_charger(); /** * Whether the item should be processed (by calling @ref process). @@ -1451,15 +1463,20 @@ class item : public visitable * Returns the resistance to environmental effects (@ref islot_armor::env_resist) that this * item provides when worn. See @ref player::get_env_resist. Higher values are better. * For non-armor it returns 0. + * + * @param override_base_resist Pass this to artifically increase the + * base resistance, so that the function can take care of other + * modifications to resistance for you. Note that this parameter will + * never decrease base resistnace. */ - int get_env_resist() const; + int get_env_resist( int override_base_resist = 0 ) const; /** - * Returns the resistance to environmental effects if an item (for example a gas mask) + * Returns the base resistance to environmental effects if an item (for example a gas mask) * requires a gas filter to operate and this filter is installed. Used in iuse::gasmask to * change protection of a gas mask if it has (or don't has) filters. For other applications * use get_env_resist() above. */ - int get_env_resist_w_filter() const; + int get_base_env_resist_w_filter() const; /** * Whether this is a power armor item. Not necessarily the main armor, it could be a helmet * or similar. diff --git a/src/item_action.cpp b/src/item_action.cpp index 91b17c4e68316..83db797d17110 100644 --- a/src/item_action.cpp +++ b/src/item_action.cpp @@ -1,28 +1,24 @@ #include "item_action.h" + #include "action.h" -#include "output.h" -#include "json.h" -#include "options.h" -#include "path_info.h" #include "debug.h" #include "game.h" -#include "options.h" -#include "messages.h" +#include "input.h" #include "inventory.h" -#include "item_factory.h" -#include "iuse_actor.h" -#include "translations.h" #include "item.h" -#include "input.h" +#include "item_factory.h" #include "itype.h" -#include "ui.h" +#include "iuse_actor.h" +#include "json.h" +#include "output.h" #include "player.h" #include "ret_val.h" +#include "translations.h" +#include "ui.h" #include -#include -#include #include +#include static item_action nullaction; static const std::string errstring( "ERROR" ); @@ -38,7 +34,7 @@ char key_bound_to( const input_context &ctxt, const item_action_id &act ) return keys.empty() ? '\0' : keys[0]; } -class actmenu_cb : public uimenu_callback +class actmenu_cb : public uilist_callback { private: const action_map am; @@ -47,7 +43,7 @@ class actmenu_cb : public uimenu_callback ~actmenu_cb() override = default; bool key( const input_context &ctxt, const input_event &event, int /*idx*/, - uimenu * /*menu*/ ) override { + uilist * /*menu*/ ) override { const std::string action = ctxt.input_to_action( event ); // Don't write a message if unknown command was sent // Only when an inexistent tool was selected @@ -156,7 +152,7 @@ std::string item_action_generator::get_action_name( const item_action_id &id ) c { const auto &act = get_action( id ); if( !act.name.empty() ) { - return _( act.name.c_str() ); + return act.name.translated(); } return id; @@ -183,11 +179,8 @@ void item_action_generator::load_item_action( JsonObject &jo ) item_action ia; ia.id = jo.get_string( "id" ); - ia.name = jo.get_string( "name", "" ); - if( !ia.name.empty() ) { - ia.name = _( ia.name.c_str() ); - } else { - ia.name = ia.id; + if( !jo.read( "name", ia.name ) || ia.name.empty() ) { + ia.name = no_translation( ia.id ); } item_actions[ia.id] = ia; @@ -226,8 +219,8 @@ void game::item_action_menu() kmenu.input_category = "ITEM_ACTIONS"; input_context ctxt( "ITEM_ACTIONS" ); for( const auto &id : item_actions ) { - ctxt.register_action( id.first, id.second.name ); - kmenu.additional_actions.emplace_back( id.first, id.second.name ); + ctxt.register_action( id.first, id.second.name.translated() ); + kmenu.additional_actions.emplace_back( id.first, id.second.name.translated() ); } actmenu_cb callback( item_actions ); kmenu.callback = &callback; @@ -295,7 +288,7 @@ void game::item_action_menu() } kmenu.query(); - if( kmenu.ret < 0 || kmenu.ret >= ( int )iactions.size() ) { + if( kmenu.ret < 0 || kmenu.ret >= static_cast( iactions.size() ) ) { return; } diff --git a/src/item_action.h b/src/item_action.h index 27b58d24e7d88..bd341373e69bf 100644 --- a/src/item_action.h +++ b/src/item_action.h @@ -2,6 +2,8 @@ #ifndef ITEM_ACTION_H #define ITEM_ACTION_H +#include "translations.h" + #include #include #include @@ -18,7 +20,7 @@ typedef std::map< item_action_id, item_action > action_map; class item_action { public: - std::string name; + translation name; item_action_id id; }; diff --git a/src/item_category.cpp b/src/item_category.cpp index 140a7a59624c6..6ecef040c9aee 100644 --- a/src/item_category.cpp +++ b/src/item_category.cpp @@ -23,7 +23,7 @@ bool item_category::operator!=( const item_category &rhs ) const std::string item_category::name() const { - return name_; + return name_.translated(); } std::string item_category::id() const diff --git a/src/item_category.h b/src/item_category.h index 59f73e10a1969..37cccccacfb10 100644 --- a/src/item_category.h +++ b/src/item_category.h @@ -2,6 +2,8 @@ #ifndef ITEM_CATEGORY_H #define ITEM_CATEGORY_H +#include "translations.h" + #include /** @@ -16,8 +18,8 @@ class item_category private: /** Unique ID of this category, used when loading from JSON. */ std::string id_; - /** Name of category for displaying to the user (localized) */ - std::string name_; + /** Name of category for displaying to the user */ + translation name_; /** Used to sort categories when displaying. Lower values are shown first. */ int sort_rank_ = 0; @@ -28,7 +30,7 @@ class item_category * @param name @ref name_ * @param sort_rank @ref sort_rank_ */ - item_category( const std::string &id, const std::string &name, int sort_rank ) : id_( id ), + item_category( const std::string &id, const translation &name, int sort_rank ) : id_( id ), name_( name ), sort_rank_( sort_rank ) { } std::string name() const; diff --git a/src/item_factory.cpp b/src/item_factory.cpp index c1c985ead026e..3e6945619080e 100644 --- a/src/item_factory.cpp +++ b/src/item_factory.cpp @@ -1,37 +1,32 @@ #include "item_factory.h" #include "addiction.h" +#include "ammo.h" #include "artifact.h" +#include "assign.h" #include "catacharset.h" -#include "construction.h" -#include "crafting.h" #include "debug.h" #include "enums.h" -#include "assign.h" -#include "string_formatter.h" -#include "item_category.h" +#include "field.h" #include "init.h" #include "item.h" -#include "ammo.h" +#include "item_category.h" #include "item_group.h" -#include "vitamin.h" #include "iuse_actor.h" #include "json.h" -#include "mapdata.h" #include "material.h" #include "options.h" #include "overmap.h" #include "recipe_dictionary.h" #include "requirements.h" -#include "skill.h" -#include "translations.h" +#include "string_formatter.h" #include "text_snippets.h" +#include "translations.h" #include "ui.h" #include "veh_type.h" -#include "field.h" +#include "vitamin.h" #include -#include #include #include #include @@ -176,9 +171,16 @@ void Item_factory::finalize_pre( itype &obj ) obj.integral_volume = obj.volume; } // for ammo and comestibles stack size defaults to count of initial charges - if( obj.stackable && obj.stack_size == 0 ) { - obj.stack_size = obj.charges_default(); + // Set max stack size to 200 to prevent integer overflow + if( obj.stackable ) { + if( obj.stack_size == 0 ) { + obj.stack_size = obj.charges_default(); + } else if( obj.stack_size > 200 ) { + debugmsg( obj.id + " stack size is too large, reducing to 200" ); + obj.stack_size = 200; + } } + // Items always should have some volume. // TODO: handle possible exception software? // TODO: make items with 0 volume an error during loading? @@ -191,6 +193,12 @@ void Item_factory::finalize_pre( itype &obj ) } } + // Set max volume for containers to prevent integer overflow + if( obj.container && obj.container->contains > 10000000_ml ) { + debugmsg( obj.id + " storage volume is too large, reducing to 10000000" ); + obj.container->contains = 10000000_ml; + } + // for ammo not specifying loudness (or an explicit zero) derive value from other properties if( obj.ammo ) { handle_legacy_ranged( *obj.ammo ); @@ -487,6 +495,23 @@ class iuse_function_wrapper : public iuse_actor void load( JsonObject & ) override {} }; +class iuse_function_wrapper_with_info : public iuse_function_wrapper +{ + private: + std::string info_string; // Untranslated + public: + iuse_function_wrapper_with_info( + const std::string &type, const use_function_pointer f, const std::string &info ) + : iuse_function_wrapper( type, f ), info_string( info ) { } + + void info( const item &, std::vector &info ) const override { + info.emplace_back( "DESCRIPTION", _( info_string.c_str() ) ); + } + iuse_actor *clone() const override { + return new iuse_function_wrapper_with_info( *this ); + } +}; + use_function::use_function( const std::string &type, const use_function_pointer f ) : use_function( new iuse_function_wrapper( type, f ) ) {} @@ -495,6 +520,13 @@ void Item_factory::add_iuse( const std::string &type, const use_function_pointer iuse_function_list[ type ] = use_function( type, f ); } +void Item_factory::add_iuse( const std::string &type, const use_function_pointer f, + const std::string &info ) +{ + iuse_function_list[ type ] = + use_function( new iuse_function_wrapper_with_info( type, f, info ) ); +} + void Item_factory::add_actor( iuse_actor *ptr ) { iuse_function_list[ ptr->type ] = use_function( ptr ); @@ -591,6 +623,12 @@ void Item_factory::init() add_iuse( "FLUSLEEP", &iuse::flusleep ); add_iuse( "FLU_VACCINE", &iuse::flu_vaccine ); add_iuse( "FUNGICIDE", &iuse::fungicide ); + add_iuse( "GASMASK", &iuse::gasmask, + translate_marker( "Can be activated to increase environmental " + "protection. Will consume charges when active, " + "but only when environmental hazards are " + "present." + ) ); add_iuse( "GEIGER", &iuse::geiger ); add_iuse( "GRANADE", &iuse::granade ); add_iuse( "GRANADE_ACT", &iuse::granade_act ); @@ -624,7 +662,6 @@ void Item_factory::init() add_iuse( "MOP", &iuse::mop ); add_iuse( "MP3", &iuse::mp3 ); add_iuse( "MP3_ON", &iuse::mp3_on ); - add_iuse( "GASMASK", &iuse::gasmask ); add_iuse( "MULTICOOKER", &iuse::multicooker ); add_iuse( "MYCUS", &iuse::mycus ); add_iuse( "NOISE_EMITTER_OFF", &iuse::noise_emitter_off ); @@ -779,7 +816,7 @@ void Item_factory::check_definitions() const msg << "empty description" << "\n"; } - for( auto mat_id : type->materials ) { + for( const material_id &mat_id : type->materials ) { if( mat_id.str() == "null" || !mat_id.is_valid() ) { msg << string_format( "invalid material %s", mat_id.c_str() ) << "\n"; } @@ -2001,8 +2038,9 @@ void Item_factory::load_item_category( JsonObject &jo ) debugmsg( "Item category %s already exists", id ); return; } - categories.emplace( id, item_category( id, _( jo.get_string( "name" ).c_str() ), - jo.get_int( "sort_rank" ) ) ); + translation name; + jo.read( "name", name ); + categories.emplace( id, item_category( id, name, jo.get_int( "sort_rank" ) ) ); } void Item_factory::load_migration( JsonObject &jo ) @@ -2525,7 +2563,7 @@ bool Item_factory::add_item_to_group( const Group_tag group_id, const Item_tag i } Item_group *ig = dynamic_cast( &group_to_access ); - if( chance != 0 && ig != NULL ) { + if( chance != 0 && ig != nullptr ) { // Only re-add if chance != 0 ig->add_item_entry( item_id, chance ); } @@ -2539,7 +2577,7 @@ void item_group::debug_spawn() uilist menu; menu.text = _( "Test which group?" ); for( size_t i = 0; i < groups.size(); i++ ) { - menu.entries.push_back( uimenu_entry( i, true, -2, groups[i] ) ); + menu.entries.emplace_back( i, true, -2, groups[i] ); } while( true ) { menu.query(); @@ -2565,7 +2603,7 @@ void item_group::debug_spawn() for( const auto &e : itemnames2 ) { std::ostringstream buffer; buffer << e.first << " x " << e.second << "\n"; - menu2.entries.push_back( uimenu_entry( menu2.entries.size(), true, -2, buffer.str() ) ); + menu2.entries.emplace_back( menu2.entries.size(), true, -2, buffer.str() ); } menu2.query(); } diff --git a/src/item_factory.h b/src/item_factory.h index 07c793faec2a4..4ef9755fa5e3e 100644 --- a/src/item_factory.h +++ b/src/item_factory.h @@ -2,16 +2,15 @@ #ifndef ITEM_FACTORY_H #define ITEM_FACTORY_H -#include -#include -#include +#include "itype.h" + +#include +#include #include -#include #include -#include -#include - -#include "itype.h" +#include +#include +#include bool item_is_blacklisted( const std::string &id ); @@ -331,7 +330,6 @@ class Item_factory void add_entry( Item_group &sg, JsonObject &obj ); void load_basic_info( JsonObject &jo, itype &def, const std::string &src ); - void tags_from_json( JsonObject &jo, std::string member, std::set &tags ); void set_qualities_from_json( JsonObject &jo, const std::string &member, itype &def ); void set_properties_from_json( JsonObject &jo, const std::string &member, itype &def ); @@ -351,6 +349,8 @@ class Item_factory std::map iuse_function_list; void add_iuse( const std::string &type, const use_function_pointer f ); + void add_iuse( const std::string &type, const use_function_pointer f, + const std::string &info ); void add_actor( iuse_actor *ptr ); std::map migrations; diff --git a/src/item_group.cpp b/src/item_group.cpp index 456e9dab26285..b1b8c6e27dcb5 100644 --- a/src/item_group.cpp +++ b/src/item_group.cpp @@ -1,16 +1,16 @@ #include "item_group.h" -#include "item_factory.h" -#include "rng.h" -#include "item.h" -#include "debug.h" + #include "ammo.h" +#include "debug.h" +#include "item.h" +#include "item_factory.h" #include "itype.h" -#include "game_constants.h" #include "json.h" +#include "rng.h" -#include #include #include +#include static const std::string null_item_id( "null" ); @@ -30,7 +30,6 @@ Single_item_creator::Single_item_creator( const std::string &_id, Type _type, in : Item_spawn_data( _probability ) , id( _id ) , type( _type ) - , modifier() { } @@ -50,7 +49,7 @@ item Single_item_creator::create_single( const time_point &birthday, RecursionLi } rec.push_back( id ); Item_spawn_data *isd = item_controller->get_group( id ); - if( isd == NULL ) { + if( isd == nullptr ) { debugmsg( "unknown item spawn list %s", id.c_str() ); return item( null_item_id, birthday ); } @@ -93,7 +92,7 @@ Item_spawn_data::ItemList Single_item_creator::create( const time_point &birthda } rec.push_back( id ); Item_spawn_data *isd = item_controller->get_group( id ); - if( isd == NULL ) { + if( isd == nullptr ) { debugmsg( "unknown item spawn list %s", id.c_str() ); return result; } @@ -145,7 +144,7 @@ bool Single_item_creator::remove_item( const Item_tag &itemid ) } } else if( type == S_ITEM_GROUP ) { Item_spawn_data *isd = item_controller->get_group( id ); - if( isd != NULL ) { + if( isd != nullptr ) { isd->remove_item( itemid ); } } @@ -172,8 +171,6 @@ Item_modifier::Item_modifier() : damage( 0, 0 ) , count( 1, 1 ) , charges( -1, -1 ) - , ammo() - , container() , with_ammo( 0 ) , with_magazine( 0 ) { @@ -247,7 +244,7 @@ void Item_modifier::modify( item &new_item ) const } } - if( container.get() != NULL ) { + if( container.get() != nullptr ) { item cont = container->create_single( new_item.birthday() ); if( !cont.is_null() ) { if( new_item.made_of( LIQUID ) ) { @@ -263,7 +260,7 @@ void Item_modifier::modify( item &new_item ) const } } - if( contents.get() != NULL ) { + if( contents.get() != nullptr ) { Item_spawn_data::ItemList contentitems = contents->create( new_item.birthday() ); new_item.contents.insert( new_item.contents.end(), contentitems.begin(), contentitems.end() ); } @@ -275,10 +272,10 @@ void Item_modifier::modify( item &new_item ) const void Item_modifier::check_consistency() const { - if( ammo.get() != NULL ) { + if( ammo.get() != nullptr ) { ammo->check_consistency(); } - if( container.get() != NULL ) { + if( container.get() != nullptr ) { container->check_consistency(); } if( with_ammo < 0 || with_ammo > 100 ) { @@ -291,12 +288,12 @@ void Item_modifier::check_consistency() const bool Item_modifier::remove_item( const Item_tag &itemid ) { - if( ammo.get() != NULL ) { + if( ammo.get() != nullptr ) { if( ammo->remove_item( itemid ) ) { ammo.reset(); } } - if( container.get() != NULL ) { + if( container.get() != nullptr ) { if( container->remove_item( itemid ) ) { container.reset(); return true; @@ -311,7 +308,6 @@ Item_group::Item_group( Type t, int probability, int ammo_chance, int magazine_c , with_ammo( ammo_chance ) , with_magazine( magazine_chance ) , sum_prob( 0 ) - , items() { if( probability <= 0 || ( t != Type::G_DISTRIBUTION && probability > 100 ) ) { debugmsg( "Probability %d out of range", probability ); @@ -340,7 +336,7 @@ void Item_group::add_group_entry( const Group_tag &groupid, int probability ) void Item_group::add_entry( std::unique_ptr ptr ) { - assert( ptr.get() != NULL ); + assert( ptr.get() != nullptr ); if( ptr->probability <= 0 ) { return; } diff --git a/src/item_group.h b/src/item_group.h index ce9336a1a72af..82e9fab84374c 100644 --- a/src/item_group.h +++ b/src/item_group.h @@ -4,10 +4,9 @@ #include "optional.h" -#include -#include -#include #include +#include +#include typedef std::string Item_tag; typedef std::string Group_tag; @@ -130,10 +129,6 @@ class Item_spawn_data /** probability, used by the parent object. */ int probability; - private: - // not implemented - Item_spawn_data( const Item_spawn_data & ); - Item_spawn_data &operator=( const Item_spawn_data & ); }; /** * Creates a single item, but can change various aspects diff --git a/src/item_location.cpp b/src/item_location.cpp index 72b59da0d61a1..e7dee1c3ae8fb 100644 --- a/src/item_location.cpp +++ b/src/item_location.cpp @@ -1,21 +1,22 @@ #include "item_location.h" -#include "game_constants.h" -#include "enums.h" +#include "character.h" #include "debug.h" +#include "enums.h" #include "game.h" +#include "game_constants.h" +#include "itype.h" +#include "iuse_actor.h" +#include "json.h" #include "map.h" #include "map_selector.h" -#include "json.h" -#include "character.h" +#include "output.h" #include "player.h" +#include "translations.h" #include "vehicle.h" #include "vehicle_selector.h" -#include "veh_type.h" -#include "itype.h" -#include "iuse_actor.h" #include "vpart_position.h" -#include "translations.h" +#include "vpart_reference.h" #include #include @@ -402,9 +403,18 @@ class item_location::impl::item_on_vehicle : public item_location::impl } std::string describe( const Character *ch ) const override { - std::string res = cur.veh.parts[ cur.part ].name(); + vpart_position part_pos( cur.veh, cur.part ); + std::string res; + if( auto label = part_pos.get_label() ) { + res = tag_colored_string( *label, c_light_blue ) + " "; + } + if( auto cargo_part = part_pos.part_with_feature( "CARGO", true ) ) { + res += cargo_part->part().name(); + } else { + debugmsg( "item in vehicle part without cargo storage" ); + } if( ch ) { - res += std::string( " " ) += direction_suffix( ch->pos(), cur.veh.global_part_pos3( cur.part ) ); + res += " " + direction_suffix( ch->pos(), part_pos.pos() ); } return res; } diff --git a/src/item_location.h b/src/item_location.h index 0098457d1994e..4347361f421b7 100644 --- a/src/item_location.h +++ b/src/item_location.h @@ -2,8 +2,8 @@ #ifndef ITEM_LOCATION_H #define ITEM_LOCATION_H -#include #include +#include struct tripoint; class item; diff --git a/src/item_search.cpp b/src/item_search.cpp index f09654bb31bb9..0b1f235bbef39 100644 --- a/src/item_search.cpp +++ b/src/item_search.cpp @@ -1,8 +1,9 @@ #include "item_search.h" -#include "item.h" -#include "material.h" + #include "cata_utility.h" +#include "item.h" #include "item_category.h" +#include "material.h" #include "recipe_dictionary.h" std::pair get_both( const std::string &a ); diff --git a/src/item_search.h b/src/item_search.h index 174a47d0ee174..2c6ab84c53d35 100644 --- a/src/item_search.h +++ b/src/item_search.h @@ -4,9 +4,9 @@ #include "output.h" -#include -#include #include +#include +#include /** * Get a function that returns true if the value matches the query. diff --git a/src/item_stack.cpp b/src/item_stack.cpp index 68588977d4319..4279f9d11398e 100644 --- a/src/item_stack.cpp +++ b/src/item_stack.cpp @@ -1,10 +1,10 @@ #include "item_stack.h" -#include "units.h" #include "item.h" +#include "units.h" -#include #include +#include size_t item_stack::size() const { diff --git a/src/item_stack.h b/src/item_stack.h index 010fce6860e67..0cebdcc611905 100644 --- a/src/item_stack.h +++ b/src/item_stack.h @@ -2,8 +2,8 @@ #ifndef ITEM_STACK_H #define ITEM_STACK_H -#include #include +#include class item; namespace units diff --git a/src/iteminfo_query.cpp b/src/iteminfo_query.cpp index 7a9e9550a6ad3..2351dee1c21c1 100644 --- a/src/iteminfo_query.cpp +++ b/src/iteminfo_query.cpp @@ -1,7 +1,7 @@ #include "iteminfo_query.h" -#include #include +#include iteminfo_query::iteminfo_query() = default; diff --git a/src/iteminfo_query.h b/src/iteminfo_query.h index 79ea8cca63fa1..7db42428d99a9 100644 --- a/src/iteminfo_query.h +++ b/src/iteminfo_query.h @@ -1,9 +1,9 @@ #pragma once -#ifndef ITEMINFOQUERY_H -#define ITEMINFOQUERY_H +#ifndef ITEMINFO_QUERY_H +#define ITEMINFO_QUERY_H -#include #include +#include #include enum class iteminfo_parts : size_t { @@ -148,6 +148,7 @@ enum class iteminfo_parts : size_t { DESCRIPTION_MELEEDMG_PIERCE, DESCRIPTION_MELEEDMG_MOVES, DESCRIPTION_APPLICABLEMARTIALARTS, + DESCRIPTION_USE_METHODS, DESCRIPTION_REPAIREDWITH, DESCRIPTION_CONDUCTIVITY, diff --git a/src/itype.cpp b/src/itype.cpp index 8721c3668dcf1..6771289d91cf2 100644 --- a/src/itype.cpp +++ b/src/itype.cpp @@ -1,12 +1,11 @@ #include "itype.h" + #include "debug.h" -#include "player.h" #include "output.h" +#include "player.h" #include "translations.h" #include -#include -#include std::string gunmod_location::name() const { diff --git a/src/itype.h b/src/itype.h index 1e81f0921ffc1..4cbb4722b4a58 100644 --- a/src/itype.h +++ b/src/itype.h @@ -2,26 +2,24 @@ #ifndef ITYPE_H #define ITYPE_H -#include "optional.h" +#include "bodypart.h" // body_part::num_bp +#include "calendar.h" #include "color.h" // nc_color +#include "damage.h" #include "enums.h" // point +#include "explosion.h" +#include "game_constants.h" #include "iuse.h" // use_function +#include "optional.h" #include "pldata.h" // add_type -#include "bodypart.h" // body_part::num_bp #include "string_id.h" -#include "explosion.h" -#include "units.h" -#include "damage.h" #include "translations.h" -#include "calendar.h" -#include "game_constants.h" +#include "units.h" +#include +#include #include #include -#include -#include -#include -#include // see item.h class item_category; diff --git a/src/iuse.cpp b/src/iuse.cpp index 226265420f9b5..f9c874d73e553 100644 --- a/src/iuse.cpp +++ b/src/iuse.cpp @@ -1,66 +1,63 @@ #include "iuse.h" +#include "action.h" +#include "artifact.h" +#include "calendar.h" +#include "cata_utility.h" #include "coordinate_conversions.h" +#include "crafting.h" +#include "debug.h" +#include "effect.h" // for weed_msg +#include "event.h" +#include "field.h" +#include "fungal_effects.h" #include "game.h" #include "game_inventory.h" -#include "map.h" -#include "fungal_effects.h" -#include "mapdata.h" -#include "output.h" -#include "effect.h" // for weed_msg -#include "debug.h" -#include "options.h" #include "iexamine.h" -#include "requirements.h" -#include "rng.h" -#include "calendar.h" -#include "vpart_range.h" -#include "string_formatter.h" +#include "inventory.h" +#include "iuse_actor.h" // For firestarter +#include "json.h" #include "line.h" -#include "mutation.h" -#include "player.h" -#include "vehicle.h" -#include "uistate.h" -#include "vpart_position.h" -#include "action.h" -#include "monstergenerator.h" -#include "speech.h" -#include "overmapbuffer.h" +#include "map.h" +#include "map_iterator.h" +#include "mapdata.h" +#include "martialarts.h" #include "messages.h" -#include "crafting.h" -#include "recipe_dictionary.h" -#include "sounds.h" #include "monattack.h" -#include "trap.h" -#include "iuse_actor.h" // For firestarter #include "mongroup.h" -#include "translations.h" #include "morale_types.h" -#include "input.h" +#include "mtype.h" +#include "mutation.h" #include "npc.h" -#include "event.h" -#include "artifact.h" +#include "output.h" #include "overmap.h" +#include "overmapbuffer.h" +#include "player.h" +#include "recipe_dictionary.h" +#include "requirements.h" +#include "rng.h" +#include "sounds.h" +#include "speech.h" +#include "string_formatter.h" +#include "string_input_popup.h" +#include "text_snippets.h" +#include "translations.h" +#include "trap.h" #include "ui.h" -#include "mtype.h" -#include "field.h" +#include "uistate.h" +#include "vehicle.h" +#include "vpart_position.h" +#include "vpart_range.h" +#include "veh_type.h" #include "weather.h" -#include "cata_utility.h" -#include "map_iterator.h" -#include "string_input_popup.h" -#include "inventory.h" -#include "json.h" -#include "martialarts.h" -#include -#include -#include #include #include -#include -#include #include -#include +#include +#include +#include +#include #define RADIO_PER_TURN 25 // how many characters per turn of radio @@ -161,14 +158,12 @@ const efftype_id effect_weed_high( "weed_high" ); const efftype_id effect_winded( "winded" ); const efftype_id effect_magnesium_supplements( "magnesium" ); - static const trait_id trait_ACIDBLOOD( "ACIDBLOOD" ); static const trait_id trait_ACIDPROOF( "ACIDPROOF" ); static const trait_id trait_ALCMET( "ALCMET" ); static const trait_id trait_CENOBITE( "CENOBITE" ); static const trait_id trait_CHLOROMORPH( "CHLOROMORPH" ); static const trait_id trait_EATDEAD( "EATDEAD" ); -static const trait_id trait_EATHEALTH( "EATHEALTH" ); static const trait_id trait_EATPOISON( "EATPOISON" ); static const trait_id trait_GILLS( "GILLS" ); static const trait_id trait_HYPEROPIC( "HYPEROPIC" ); @@ -183,7 +178,6 @@ static const trait_id trait_MASOCHIST_MED( "MASOCHIST_MED" ); static const trait_id trait_M_DEPENDENT( "M_DEPENDENT" ); static const trait_id trait_MYOPIC( "MYOPIC" ); static const trait_id trait_NOPAIN( "NOPAIN" ); -static const trait_id trait_PARAIMMUNE( "PARAIMMUNE" ); static const trait_id trait_PSYCHOPATH( "PSYCHOPATH" ); static const trait_id trait_SPIRITUAL( "SPIRITUAL" ); static const trait_id trait_THRESH_MARLOSS( "THRESH_MARLOSS" ); @@ -1391,7 +1385,7 @@ int petfood( player &p, const item &it, Petfood animal_food_type ) p.moves -= 15; // First a check to see if we are trying to feed a NPC dog food. - if( animal_food_type == DOGFOOD && g->critter_at( dirp ) != NULL ) { + if( animal_food_type == DOGFOOD && g->critter_at( dirp ) != nullptr ) { if( npc *const person_ = g->critter_at( dirp ) ) { npc &person = *person_; if( query_yn( _( "Are you sure you want to feed a person the dog food?" ) ) ) { @@ -1440,15 +1434,12 @@ int petfood( player &p, const item &it, Petfood animal_food_type ) case CATFOOD: return feedpet( p, mon, MF_CATFOOD, _( "The %s seems to like you! Or maybe it just tolerates your presence better. It's hard to tell with felines." ) ); - break; case CATTLEFODDER: return feedpet( p, mon, MF_CATTLEFODDER, _( "The %s seems to like you! It lets you pat its head and seems friendly." ) ); - break; case BIRDFOOD: return feedpet( p, mon, MF_BIRDFOOD, _( "The %s seems to like you! It runs around your legs and seems friendly." ) ); - break; } } else { @@ -2654,7 +2645,6 @@ int iuse::e_combatsaw_off( player *p, item *it, bool, const tripoint & ) _( "You flip the switch, but nothing happens." ) ); } - int iuse::chainsaw_off( player *p, item *it, bool, const tripoint & ) { return toolweapon_off( *p, *it, @@ -3548,8 +3538,6 @@ int iuse::shocktonfa_off( player *p, item *it, bool t, const tripoint &pos ) case 0: { return iuse::tazer2( p, it, t, pos ); } - break; - case 1: { if( !it->ammo_sufficient() ) { p->add_msg_if_player( m_info, _( "The batteries are dead." ) ); @@ -3581,8 +3569,6 @@ int iuse::shocktonfa_on( player *p, item *it, bool t, const tripoint &pos ) case 0: { return iuse::tazer2( p, it, t, pos ); } - break; - case 1: { p->add_msg_if_player( _( "You turn off the light." ) ); it->convert( "shocktonfa_off" ).active = false; @@ -3606,7 +3592,7 @@ int iuse::mp3( player *p, item *it, bool, const tripoint & ) return it->type->charges_to_use(); } -const std::string &get_music_description() +std::string get_music_description() { static const std::string no_description; static const std::string rare = _( "some bass-heavy post-glam speed polka." ); @@ -3628,6 +3614,19 @@ const std::string &get_music_description() if( i < descriptions.size() ) { return descriptions[i]; } + // Not one of the hard-coded versions, let's apply a random string made up + // of snippets {a, b, c}, but only a 50% chance + // Actual chance = 24.5% of being selected + if( one_in( 2 ) ) { + const std::string &from_a = SNIPPET.random_from_category( "musicgenre_a" ); + const std::string &from_b = SNIPPET.random_from_category( "musicgenre_b" ); + const std::string &from_c = SNIPPET.random_from_category( "musicgenre_c" ); + + // Require all to be non-empty + if( !( from_a.empty() || from_b.empty() || from_c.empty() ) ) { + return from_a + from_b + from_c; + } + } return no_description; } @@ -3640,7 +3639,7 @@ void iuse::play_music( player &p, const tripoint &source, int const volume, int std::string sound; if( calendar::once_every( 5_minutes ) ) { // Every 5 minutes, describe the music - const std::string &music = get_music_description(); + const std::string music = get_music_description(); if( !music.empty() ) { sound = music; if( p.pos() == source && volume == 0 && p.can_hear( source, volume ) ) { @@ -3768,7 +3767,7 @@ int iuse::gasmask( player *p, item *it, bool t, const tripoint &pos ) } else { p->add_msg_if_player( _( "You prepared your %s." ), it->tname().c_str() ); it->active = true; - it->set_var( "overwrite_env_resist", it->get_env_resist_w_filter() ); + it->set_var( "overwrite_env_resist", it->get_base_env_resist_w_filter() ); } } if( it->charges == 0 ) { @@ -3800,11 +3799,11 @@ int iuse::portable_game( player *p, item *it, bool, const tripoint & ) uilist as_m; as_m.text = _( "What do you want to play?" ); - as_m.entries.push_back( uimenu_entry( 1, true, '1', _( "Robot finds Kitten" ) ) ); - as_m.entries.push_back( uimenu_entry( 2, true, '2', _( "S N A K E" ) ) ); - as_m.entries.push_back( uimenu_entry( 3, true, '3', _( "Sokoban" ) ) ); - as_m.entries.push_back( uimenu_entry( 4, true, '4', _( "Minesweeper" ) ) ); - as_m.entries.push_back( uimenu_entry( 5, true, '5', _( "Lights on!" ) ) ); + as_m.entries.emplace_back( 1, true, '1', _( "Robot finds Kitten" ) ); + as_m.entries.emplace_back( 2, true, '2', _( "S N A K E" ) ); + as_m.entries.emplace_back( 3, true, '3', _( "Sokoban" ) ); + as_m.entries.emplace_back( 4, true, '4', _( "Minesweeper" ) ); + as_m.entries.emplace_back( 5, true, '5', _( "Lights on!" ) ); as_m.query(); switch( as_m.ret ) { @@ -4187,7 +4186,8 @@ int iuse::oxytorch( player *p, item *it, bool, const tripoint & ) } // placing ter here makes resuming tasks work better - p->assign_activity( activity_id( "ACT_OXYTORCH" ), moves, ( int )ter, p->get_item_position( it ) ); + p->assign_activity( activity_id( "ACT_OXYTORCH" ), moves, static_cast( ter ), + p->get_item_position( it ) ); p->activity.placement = dirp; p->activity.values.push_back( charges ); @@ -4229,7 +4229,8 @@ int iuse::hacksaw( player *p, item *it, bool t, const tripoint &pos ) return 0; } - p->assign_activity( activity_id( "ACT_HACKSAW" ), moves, ( int )ter, p->get_item_position( it ) ); + p->assign_activity( activity_id( "ACT_HACKSAW" ), moves, static_cast( ter ), + p->get_item_position( it ) ); p->activity.placement = dirp; return it->type->charges_to_use(); @@ -4327,7 +4328,6 @@ int iuse::torch_lit( player *p, item *it, bool t, const tripoint &pos ) } return 0; } - break; case 1: { tripoint temp = pos; if( firestarter_actor::prep_firestarter_use( *p, temp ) ) { @@ -4371,7 +4371,6 @@ int iuse::battletorch_lit( player *p, item *it, bool t, const tripoint &pos ) } return 0; } - break; case 1: { tripoint temp = pos; if( firestarter_actor::prep_firestarter_use( *p, temp ) ) { @@ -4997,8 +4996,8 @@ int iuse::unfold_generic( player *p, item *it, bool, const tripoint & ) return 0; } vehicle *veh = g->m.add_vehicle( vproto_id( "none" ), p->posx(), p->posy(), 0, 0, 0, false ); - if( veh == NULL ) { - p->add_msg_if_player( m_info, _( "There's no room to unfold the %s." ), it->tname().c_str() ); + if( veh == nullptr ) { + p->add_msg_if_player( m_info, _( "There's no room to unfold the %s." ), it->tname() ); return 0; } veh->name = it->get_var( "vehicle_name" ); @@ -5006,6 +5005,24 @@ int iuse::unfold_generic( player *p, item *it, bool, const tripoint & ) g->m.destroy_vehicle( veh ); return 0; } + const bool can_float = size( veh->get_avail_parts( "FLOATS" ) ) > 2; + + const auto invalid_pos = []( const tripoint & pp, bool can_float ) { + return ( g->m.has_flag_ter( TFLAG_DEEP_WATER, pp ) && !can_float ) || + g->m.veh_at( pp ) || g->m.impassable( pp ); + }; + for( const vpart_reference &vp : veh->get_all_parts() ) { + if( vp.info().location != "STRUCTURE" ) { + continue; + } + const tripoint pp = vp.pos(); + if( invalid_pos( pp, can_float ) ) { + p->add_msg_if_player( m_info, _( "There's no room to unfold the %s." ), it->tname() ); + g->m.destroy_vehicle( veh ); + return 0; + } + } + g->m.add_vehicle_to_cache( veh ); std::string unfold_msg = it->get_var( "unfold_msg" ); @@ -5014,7 +5031,7 @@ int iuse::unfold_generic( player *p, item *it, bool, const tripoint & ) } else { unfold_msg = _( unfold_msg.c_str() ); } - p->add_msg_if_player( unfold_msg.c_str(), veh->name.c_str() ); + p->add_msg_if_player( unfold_msg.c_str(), veh->name ); p->moves -= it->get_var( "moves", 500 ); return 1; @@ -5639,7 +5656,7 @@ bool einkpc_download_memory_card( player &p, item &eink, item &mc ) } - if( candidates.size() > 0 ) { + if( !candidates.empty() ) { const recipe *r = random_entry( candidates ); const recipe_id rident = r->ident(); @@ -6656,7 +6673,7 @@ int iuse::radiocontrol( player *p, item *it, bool t, const tripoint & ) return it->type->charges_to_use(); } - const char *car_action = NULL; + const char *car_action = nullptr; if( !it->active ) { car_action = _( "Take control of RC car" ); @@ -6728,7 +6745,7 @@ static bool hackveh( player &p, item &it, vehicle &veh ) if( !veh.is_locked || !veh.has_security_working() ) { return true; } - const bool advanced = !empty( veh.get_parts( "REMOTE_CONTROLS" ) ); + const bool advanced = !empty( veh.get_avail_parts( "REMOTE_CONTROLS" ) ); if( advanced && veh.is_alarm_on ) { p.add_msg_if_player( m_bad, _( "This vehicle's security system has locked you out!" ) ); return false; @@ -6791,13 +6808,13 @@ vehicle *pickveh( const tripoint ¢er, bool advanced ) auto &v = veh.v; if( rl_dist( center, v->global_pos3() ) < 40 && v->fuel_left( "battery", true ) > 0 && - ( !empty( v->get_parts( advctrl ) ) || - ( !advanced && !empty( v->get_parts( ctrl ) ) ) ) ) { + ( !empty( v->get_avail_parts( advctrl ) ) || + ( !advanced && !empty( v->get_avail_parts( ctrl ) ) ) ) ) { vehs.push_back( v ); } } std::vector locations; - for( int i = 0; i < ( int )vehs.size(); i++ ) { + for( int i = 0; i < static_cast( vehs.size() ); i++ ) { auto veh = vehs[i]; locations.push_back( veh->global_pos3() ); pmenu.addentry( i, true, MENU_AUTOASSIGN, veh->name.c_str() ); @@ -6813,7 +6830,7 @@ vehicle *pickveh( const tripoint ¢er, bool advanced ) pmenu.w_y = 0; pmenu.query(); - if( pmenu.ret < 0 || pmenu.ret >= ( int )vehs.size() ) { + if( pmenu.ret < 0 || pmenu.ret >= static_cast( vehs.size() ) ) { return nullptr; } else { return vehs[pmenu.ret]; @@ -6880,7 +6897,13 @@ int iuse::remoteveh( player *p, item *it, bool t, const tripoint &pos ) veh->start_engines(); } } else if( choice == 1 ) { - veh->use_controls( pos ); + const auto rctrl_parts = veh->get_avail_parts( "REMOTE_CONTROLS" ); + // Revert to original behaviour if we can't find remote controls. + if( empty( rctrl_parts ) ) { + veh->use_controls( pos ); + } else { + veh->use_controls( rctrl_parts.begin()->pos() ); + } } g->u.view_offset.x = px; @@ -7376,19 +7399,19 @@ int iuse::cable_attach( player *p, item *it, bool, const tripoint & ) const vpart_id vpid( it->typeId() ); point vcoords = source_vp->mount(); - vehicle_part source_part( vpid, vcoords.x, vcoords.y, item( *it ) ); + vehicle_part source_part( vpid, vcoords, item( *it ) ); source_part.target.first = target_global; source_part.target.second = g->m.getabs( target_veh->global_pos3() ); - source_veh->install_part( vcoords.x, vcoords.y, source_part ); + source_veh->install_part( vcoords, source_part ); vcoords = target_vp->mount(); - vehicle_part target_part( vpid, vcoords.x, vcoords.y, item( *it ) ); + vehicle_part target_part( vpid, vcoords, item( *it ) ); tripoint source_global( it->get_var( "source_x", 0 ), it->get_var( "source_y", 0 ), it->get_var( "source_z", 0 ) ); target_part.target.first = source_global; target_part.target.second = g->m.getabs( source_veh->global_pos3() ); - target_veh->install_part( vcoords.x, vcoords.y, target_part ); + target_veh->install_part( vcoords, target_part ); if( p != nullptr && p->has_item( *it ) ) { p->add_msg_if_player( m_good, _( "You link up the electric systems of the %1$s and the %2$s." ), @@ -7455,10 +7478,10 @@ int iuse::weather_tool( player *p, item *it, bool, const tripoint & ) if( it->typeId() == "barometer" ) { p->add_msg_if_player( m_neutral, _( "The %1$s reads %2$s." ), it->tname().c_str(), - print_pressure( ( int )weatherPoint.pressure ).c_str() ); + print_pressure( static_cast( weatherPoint.pressure ) ).c_str() ); } else { p->add_msg_if_player( m_neutral, _( "Pressure: %s." ), - print_pressure( ( int )weatherPoint.pressure ).c_str() ); + print_pressure( static_cast( weatherPoint.pressure ) ).c_str() ); } } @@ -7516,7 +7539,7 @@ int iuse::capture_monster_veh( player *p, item *it, bool, const tripoint &pos ) it->tname().c_str() ); return 0; } - capture_monster_act( p, it, 0, pos ); + capture_monster_act( p, it, false, pos ); return 0; } @@ -7706,14 +7729,12 @@ int iuse::washclothes( player *p, item *it, bool, const tripoint & ) inv_s.add_character_items( *p ); inv_s.set_title( _( "Multiclean" ) ); inv_s.set_hint( _( "To clean x items, type a number before selecting." ) ); - std::list> to_clean; if( inv_s.empty() ) { popup( std::string( _( "You have nothing to clean." ) ), PF_GET_KEY ); return 0; } - - to_clean = inv_s.execute(); - if( to_clean.size() == 0 ) { + std::list> to_clean = inv_s.execute(); + if( to_clean.empty() ) { return 0; } int required_water = 0; diff --git a/src/iuse.h b/src/iuse.h index 623870b80fd25..1ab9c83eb116b 100644 --- a/src/iuse.h +++ b/src/iuse.h @@ -4,10 +4,9 @@ #include "enums.h" -#include +#include #include #include -#include class item; class player; @@ -28,8 +27,6 @@ class iuse int sewage( player *, item *, bool, const tripoint & ); int honeycomb( player *, item *, bool, const tripoint & ); int royal_jelly( player *, item *, bool, const tripoint & ); - int completefirstaid( player *, item *, bool, const tripoint & ); - int disinfectant( player *, item *, bool, const tripoint & ); int caff( player *, item *, bool, const tripoint & ); int atomic_caff( player *, item *, bool, const tripoint & ); int alcohol_weak( player *, item *, bool, const tripoint & ); @@ -37,7 +34,6 @@ class iuse int alcohol_strong( player *, item *, bool, const tripoint & ); int xanax( player *, item *, bool, const tripoint & ); int smoking( player *, item *, bool, const tripoint & ); - int smoking_pipe( player *, item *, bool, const tripoint & ); int ecig( player *, item *, bool, const tripoint & ); int antibiotic( player *, item *, bool, const tripoint & ); int eyedrops( player *, item *, bool, const tripoint & ); @@ -62,8 +58,6 @@ class iuse int blech( player *, item *, bool, const tripoint & ); int plantblech( player *, item *, bool, const tripoint & ); int chew( player *, item *, bool, const tripoint & ); - int mutagen( player *, item *, bool, const tripoint & ); - int mut_iv( player *, item *, bool, const tripoint & ); int purifier( player *, item *, bool, const tripoint & ); int purify_iv( player *, item *, bool, const tripoint & ); int purify_smart( player *, item *, bool, const tripoint & ); @@ -77,7 +71,6 @@ class iuse int feedbird( player *, item *, bool, const tripoint & ); // TOOLS int sew_advanced( player *, item *, bool, const tripoint & ); - int scissors( player *, item *, bool, const tripoint & ); int extinguisher( player *, item *, bool, const tripoint & ); int hammer( player *, item *, bool, const tripoint & ); int water_purifier( player *, item *, bool, const tripoint & ); @@ -134,10 +127,6 @@ class iuse int mininuke( player *, item *, bool, const tripoint & ); int pheromone( player *, item *, bool, const tripoint & ); int portal( player *, item *, bool, const tripoint & ); - int UPS_off( player *, item *, bool, const tripoint & ); - int UPS_on( player *, item *, bool, const tripoint & ); - int adv_UPS_off( player *, item *, bool, const tripoint & ); - int adv_UPS_on( player *, item *, bool, const tripoint & ); int tazer( player *, item *, bool, const tripoint & ); int tazer2( player *, item *, bool, const tripoint & ); int shocktonfa_off( player *, item *, bool, const tripoint & ); @@ -157,9 +146,6 @@ class iuse int oxytorch( player *, item *, bool, const tripoint & ); int hacksaw( player *, item *, bool, const tripoint & ); int portable_structure( player *, item *, bool, const tripoint & ); - int tent( player *, item *, bool, const tripoint & ); - int large_tent( player *, item *, bool, const tripoint & ); - int shelter( player *, item *, bool, const tripoint & ); int torch_lit( player *, item *, bool, const tripoint & ); int battletorch_lit( player *, item *, bool, const tripoint & ); int boltcutters( player *, item *, bool, const tripoint & ); @@ -206,7 +192,6 @@ class iuse int break_stick( player *, item *, bool, const tripoint & ); int weak_antibiotic( player *, item *, bool, const tripoint & ); int strong_antibiotic( player *, item *, bool, const tripoint & ); - int instant_antibiotic( player *, item *, bool, const tripoint & ); int panacea( player *, item *, bool, const tripoint & ); int magnesium_tablet( player *, item *, bool, const tripoint & ); int coin_flip( player *, item *, bool, const tripoint & ); @@ -260,7 +245,7 @@ class iuse_actor virtual void load( JsonObject &jo ) = 0; virtual long use( player &, item &, bool, const tripoint & ) const = 0; virtual ret_val can_use( const player &, const item &, bool, const tripoint & ) const; - virtual void info( const item &, std::vector & ) const {}; + virtual void info( const item &, std::vector & ) const {} /** * Returns a deep copy of this object. Example implementation: * \code diff --git a/src/iuse_actor.cpp b/src/iuse_actor.cpp index ae3ef02b28ce0..70c3aa5b4367e 100644 --- a/src/iuse_actor.cpp +++ b/src/iuse_actor.cpp @@ -1,53 +1,53 @@ #include "iuse_actor.h" + #include "action.h" +#include "ammo.h" #include "assign.h" #include "bionics.h" -#include "item.h" +#include "bodypart.h" +#include "calendar.h" +#include "cata_utility.h" +#include "crafting.h" +#include "debug.h" +#include "effect.h" +#include "event.h" +#include "field.h" #include "game.h" #include "game_inventory.h" +#include "generic_factory.h" +#include "item.h" +#include "item_factory.h" +#include "itype.h" #include "map.h" -#include "debug.h" +#include "map_iterator.h" +#include "map_selector.h" +#include "mapdata.h" +#include "material.h" +#include "messages.h" #include "monster.h" +#include "morale_types.h" +#include "mtype.h" #include "mutation.h" +#include "options.h" +#include "output.h" #include "overmapbuffer.h" +#include "player.h" +#include "pldata.h" +#include "recipe_dictionary.h" +#include "requirements.h" +#include "skill.h" #include "sounds.h" +#include "string_formatter.h" +#include "string_input_popup.h" #include "translations.h" -#include "morale_types.h" -#include "vitamin.h" -#include "messages.h" -#include "material.h" -#include "event.h" -#include "crafting.h" +#include "trap.h" #include "ui.h" -#include "output.h" -#include "itype.h" -#include "string_formatter.h" -#include "bodypart.h" #include "vehicle.h" -#include "mtype.h" -#include "mapdata.h" -#include "ammo.h" -#include "field.h" +#include "vitamin.h" #include "weather.h" -#include "trap.h" -#include "calendar.h" -#include "pldata.h" -#include "requirements.h" -#include "recipe_dictionary.h" -#include "player.h" -#include "generic_factory.h" -#include "map_iterator.h" -#include "cata_utility.h" -#include "string_input_popup.h" -#include "options.h" -#include "skill.h" -#include "effect.h" -#include "map_selector.h" -#include "item_factory.h" -#include #include -#include +#include const skill_id skill_mechanics( "mechanics" ); const skill_id skill_survival( "survival" ); @@ -161,7 +161,7 @@ long iuse_transform::use( player &p, item &it, bool t, const tripoint &pos ) con } } - if( p.sees( pos ) && !msg_transform.empty() ) { + if( possess && !msg_transform.empty() ) { p.add_msg_if_player( m_neutral, _( msg_transform.c_str() ), it.tname().c_str() ); } @@ -228,7 +228,7 @@ void iuse_transform::info( const item &it, std::vector &dump ) const dump.emplace_back( "TOOL", string_format( _( "Turns into: %s" ), dummy.tname().c_str() ) ); if( countdown > 0 ) { - dump.emplace_back( "TOOL", _( "Countdown: " ), "", countdown ); + dump.emplace_back( "TOOL", _( "Countdown: " ), countdown ); } const auto *explosion_use = dummy.get_use( "explosion" ); @@ -288,7 +288,7 @@ std::string countdown_actor::get_name() const void countdown_actor::info( const item &it, std::vector &dump ) const { - dump.emplace_back( "TOOL", _( "Countdown: " ), "", + dump.emplace_back( "TOOL", _( "Countdown: " ), interval > 0 ? interval : it.type->countdown_interval ); const auto countdown_actor = it.type->countdown_action.get_actor_ptr(); if( countdown_actor != nullptr ) { @@ -339,11 +339,13 @@ long explosion_iuse::use( player &p, item &it, bool t, const tripoint &pos ) con return 0; } if( it.charges > 0 ) { - if( no_deactivate_msg.empty() ) { - p.add_msg_if_player( m_warning, - _( "You've already set the %s's timer you might want to get away from it." ), it.tname().c_str() ); - } else { - p.add_msg_if_player( m_info, _( no_deactivate_msg.c_str() ), it.tname().c_str() ); + if( p.has_item( it ) ) { + if( no_deactivate_msg.empty() ) { + p.add_msg_if_player( m_warning, + _( "You've already set the %s's timer you might want to get away from it." ), it.tname().c_str() ); + } else { + p.add_msg_if_player( m_info, _( no_deactivate_msg.c_str() ), it.tname().c_str() ); + } } return 0; } @@ -385,11 +387,11 @@ void explosion_iuse::info( const item &, std::vector &dump ) const return; } - dump.emplace_back( "TOOL", _( "Power at epicenter: " ), "", explosion.power ); + dump.emplace_back( "TOOL", _( "Power at epicenter: " ), explosion.power ); const auto &sd = explosion.shrapnel; if( sd.casing_mass > 0 ) { - dump.emplace_back( "TOOL", _( "Casing mass: " ), "", sd.casing_mass ); - dump.emplace_back( "TOOL", _( "Fragment mass: " ), "", sd.fragment_mass ); + dump.emplace_back( "TOOL", _( "Casing mass: " ), sd.casing_mass ); + dump.emplace_back( "TOOL", _( "Fragment mass: " ), sd.fragment_mass ); } } @@ -423,7 +425,7 @@ long unfold_vehicle_iuse::use( player &p, item &it, bool /*t*/, const tripoint & } vehicle *veh = g->m.add_vehicle( vehicle_id, p.posx(), p.posy(), 0, 0, 0, false ); - if( veh == NULL ) { + if( veh == nullptr ) { p.add_msg_if_player( m_info, _( "There's no room to unfold the %s." ), it.tname().c_str() ); return 0; } @@ -595,7 +597,7 @@ long consume_drug_iuse::use( player &p, item &it, bool, const tripoint & ) const for( const auto &v : vitamins ) { // players with mutations that remove the requirement for a vitamin cannot suffer accumulation of it p.vitamin_mod( v.first, rng( v.second.first, v.second.second ), - p.vitamin_rate( v.first ) > 0_turns ? false : true ); + p.vitamin_rate( v.first ) <= 0_turns ); } // Output message. @@ -1317,7 +1319,7 @@ int salvage_actor::cut_up( player &p, item &it, item &cut ) const // Decided to split components evenly. Since salvage will likely change // soon after I write this, I'll go with the one that is cleaner. - for( auto material : cut_material_components ) { + for( const material_id &material : cut_material_components ) { if( const auto id = material->salvaged_into() ) { materials_salvaged[*id] = std::max( 0, count / static_cast( cut_material_components.size() ) ); } @@ -1537,7 +1539,7 @@ bool cauterize_actor::cauterize_effect( player &p, item &it, bool force ) return true; } - return 0; + return false; } long cauterize_actor::use( player &p, item &it, bool t, const tripoint & ) const @@ -1982,7 +1984,7 @@ long musical_instrument_actor::use( player &p, item &it, bool t, const tripoint p.add_effect( effect_playing_instrument, 2_turns, num_bp, false, speed_penalty ); } - std::string desc = ""; + std::string desc; /** @EFFECT_PER increases morale bonus when playing an instrument */ const int morale_effect = fun + fun_bonus * p.per_cur; if( morale_effect >= 0 && calendar::once_every( description_frequency ) ) { @@ -2128,7 +2130,7 @@ long holster_actor::use( player &p, item &it, bool, const tripoint & ) const int pos = 0; std::vector opts; - if( ( int ) it.contents.size() < multi ) { + if( static_cast( it.contents.size() ) < multi ) { opts.push_back( prompt ); pos = -1; } @@ -2179,18 +2181,21 @@ void holster_actor::info( const item &, std::vector &dump ) const std::string message = ngettext( "Can be activated to store a suitable item.", "Can be activated to store suitable items.", multi ); dump.emplace_back( "DESCRIPTION", message ); - dump.emplace_back( "TOOL", _( "Num items: " ), "", multi ); + dump.emplace_back( "TOOL", _( "Num items: " ), "", iteminfo::no_flags, multi ); dump.emplace_back( "TOOL", _( "Item volume: Min: " ), string_format( " %s", volume_units_abbr() ), - convert_volume( min_volume.value() ), false, "", false, true ); + iteminfo::is_decimal | iteminfo::no_newline | iteminfo::lower_is_better, + convert_volume( min_volume.value() ) ); dump.emplace_back( "TOOL", _( " Max: " ), string_format( " %s", volume_units_abbr() ), - convert_volume( max_volume.value() ), false ); + iteminfo::is_decimal, + convert_volume( max_volume.value() ) ); if( max_weight > 0 ) { dump.emplace_back( "TOOL", "Max item weight: ", string_format( _( " %s" ), weight_units() ), - convert_weight( max_weight ), false ); + iteminfo::is_decimal, + convert_weight( max_weight ) ); } } @@ -3149,7 +3154,7 @@ long heal_actor::finish_using( player &healer, player &patient, item &it, hp_par } practice_amount = std::max( 9.0f, practice_amount ); - healer.practice( skill_firstaid, ( int )practice_amount ); + healer.practice( skill_firstaid, static_cast( practice_amount ) ); return it.type->charges_to_use(); } @@ -3200,9 +3205,6 @@ hp_part pick_part_to_heal( return healed_part; } } - - // Won't happen? - return num_hp_parts; } hp_part heal_actor::use_healing_item( player &healer, player &patient, item &it, bool force ) const @@ -3252,7 +3254,7 @@ hp_part heal_actor::use_healing_item( player &healer, player &patient, item &it, return healed; } else if( healer.activity.id() == activity_id( "ACT_FIRSTAID" ) ) { // Completed activity, extract body part from it. - healed = ( hp_part )healer.activity.values[0]; + healed = static_cast( healer.activity.values[0] ); } } else { // Player healing NPC @@ -3274,22 +3276,23 @@ hp_part heal_actor::use_healing_item( player &healer, player &patient, item &it, void heal_actor::info( const item &, std::vector &dump ) const { if( head_power > 0 || torso_power > 0 || limb_power > 0 ) { - dump.emplace_back( "TOOL", _( "Base healing: " ), "", -999, true, "", true ); - dump.emplace_back( "TOOL", _( "Head: " ), "", head_power, true, "", false ); - dump.emplace_back( "TOOL", _( " Torso: " ), "", torso_power, true, "", false ); - dump.emplace_back( "TOOL", _( " Limbs: " ), "", limb_power, true, "", true ); + dump.emplace_back( "TOOL", _( "Base healing: " ) ); + dump.emplace_back( "TOOL", _( "Head: " ), "", iteminfo::no_newline, head_power ); + dump.emplace_back( "TOOL", _( " Torso: " ), "", iteminfo::no_newline, torso_power ); + dump.emplace_back( "TOOL", _( " Limbs: " ), limb_power ); if( g != nullptr ) { - dump.emplace_back( "TOOL", _( "Actual healing: " ), "", -999, true, "", true ); - dump.emplace_back( "TOOL", _( "Head: " ), "", get_heal_value( g->u, hp_head ), true, "", false ); - dump.emplace_back( "TOOL", _( " Torso: " ), "", get_heal_value( g->u, hp_torso ), true, "", - false ); - dump.emplace_back( "TOOL", _( " Limbs: " ), "", get_heal_value( g->u, hp_arm_l ), true, "", true ); + dump.emplace_back( "TOOL", _( "Actual healing: " ) ); + dump.emplace_back( "TOOL", _( "Head: " ), "", iteminfo::no_newline, + get_heal_value( g->u, hp_head ) ); + dump.emplace_back( "TOOL", _( " Torso: " ), "", iteminfo::no_newline, + get_heal_value( g->u, hp_torso ) ); + dump.emplace_back( "TOOL", _( " Limbs: " ), get_heal_value( g->u, hp_arm_l ) ); } } if( bandages_power > 0 ) { dump.emplace_back( "TOOL", _( "Base bandaging quality: " ), - texitify_base_healing_power( ( int )bandages_power ) ); + texitify_base_healing_power( static_cast( bandages_power ) ) ); if( g != nullptr ) { dump.emplace_back( "TOOL", _( "Actual bandaging quality: " ), texitify_healing_power( get_bandaged_level( g->u ) ) ); @@ -3298,7 +3301,7 @@ void heal_actor::info( const item &, std::vector &dump ) const if( disinfectant_power > 0 ) { dump.emplace_back( "TOOL", _( "Base disinfecting quality: " ), - texitify_base_healing_power( ( int )disinfectant_power ) ); + texitify_base_healing_power( static_cast( disinfectant_power ) ) ); if( g != nullptr ) { dump.emplace_back( "TOOL", _( "Actual disinfecting quality: " ), texitify_healing_power( get_disinfected_level( g->u ) ) ); @@ -3306,22 +3309,22 @@ void heal_actor::info( const item &, std::vector &dump ) const } if( bleed > 0.0f || bite > 0.0f || infect > 0.0f ) { - dump.emplace_back( "TOOL", _( "Chance to heal (percent): " ), "", -999, true, "", - true ); + dump.emplace_back( "TOOL", _( "Chance to heal (percent): " ) ); if( bleed > 0.0f ) { - dump.emplace_back( "TOOL", _( "* Bleeding:" ), "", ( int )( bleed * 100 ), true, "", - true ); + dump.emplace_back( "TOOL", _( "* Bleeding:" ), + static_cast( bleed * 100 ) ); } if( bite > 0.0f ) { - dump.emplace_back( "TOOL", _( "* Bite:" ), "", ( int )( bite * 100 ), true, "", true ); + dump.emplace_back( "TOOL", _( "* Bite:" ), + static_cast( bite * 100 ) ); } if( infect > 0.0f ) { - dump.emplace_back( "TOOL", _( "* Infection:" ), "", ( int )( infect * 100 ), true, "", - true ); + dump.emplace_back( "TOOL", _( "* Infection:" ), + static_cast( infect * 100 ) ); } } - dump.emplace_back( "TOOL", _( "Moves to use:" ), "", move_cost ); + dump.emplace_back( "TOOL", _( "Moves to use:" ), move_cost ); } place_trap_actor::place_trap_actor( const std::string &type ) : diff --git a/src/iuse_actor.h b/src/iuse_actor.h index 54e4663050c5f..aee1ffee9000e 100644 --- a/src/iuse_actor.h +++ b/src/iuse_actor.h @@ -2,20 +2,17 @@ #ifndef IUSE_ACTOR_H #define IUSE_ACTOR_H -#include "iuse.h" -#include "game_constants.h" +#include "calendar.h" #include "color.h" +#include "explosion.h" +#include "game_constants.h" +#include "iuse.h" #include "ret_val.h" #include "string_id.h" -#include "int_id.h" -#include "explosion.h" #include "units.h" -#include "calendar.h" -#include -#include #include -#include +#include #include class vitamin; @@ -204,7 +201,7 @@ struct effect_data { bool permanent; effect_data( const efftype_id &nid, const time_duration dur, body_part nbp, bool perm ) : - id( nid ), duration( dur ), bp( nbp ), permanent( perm ) {}; + id( nid ), duration( dur ), bp( nbp ), permanent( perm ) {} }; /** @@ -781,7 +778,7 @@ class repair_item_actor : public iuse_actor enum repair_type : int { RT_NOTHING = 0, RT_REPAIR, // Just repairing damage - RT_REFIT, // Adding (fits) tag + RT_REFIT, // Refitting RT_REINFORCE, // Getting damage below 0 RT_PRACTICE, // Wanted to reinforce, but can't NUM_REPAIR_TYPES @@ -965,7 +962,7 @@ class install_bionic_actor : public iuse_actor public: install_bionic_actor( const std::string &type = "install_bionic" ) : iuse_actor( type ) {} - void load( JsonObject & ) override {}; + void load( JsonObject & ) override {} long use( player &p, item &it, bool t, const tripoint &pnt ) const override; ret_val can_use( const player &, const item &it, bool, const tripoint & ) const override; iuse_actor *clone() const override; @@ -977,7 +974,7 @@ class detach_gunmods_actor : public iuse_actor public: detach_gunmods_actor( const std::string &type = "detach_gunmods" ) : iuse_actor( type ) {} - void load( JsonObject & ) override {}; + void load( JsonObject & ) override {} long use( player &p, item &it, bool t, const tripoint &pnt ) const override; ret_val can_use( const player &, const item &it, bool, const tripoint & ) const override; iuse_actor *clone() const override; diff --git a/src/iuse_software.cpp b/src/iuse_software.cpp index a997c24205d05..9cb0d9bd6978e 100644 --- a/src/iuse_software.cpp +++ b/src/iuse_software.cpp @@ -1,17 +1,17 @@ #include "iuse_software.h" +#include "cursesdef.h" #include "iuse_software_kitten.h" +#include "iuse_software_lightson.h" +#include "iuse_software_minesweeper.h" #include "iuse_software_snake.h" #include "iuse_software_sokoban.h" -#include "iuse_software_minesweeper.h" -#include "iuse_software_lightson.h" -#include "string_formatter.h" -#include "cursesdef.h" #include "output.h" +#include "string_formatter.h" #include "translations.h" -#include #include +#include bool play_videogame( const std::string &function_name, std::map &game_data, @@ -35,8 +35,6 @@ bool play_videogame( const std::string &function_name, } return foundkitten; - - return true; } else if( function_name == "snake_game" ) { snake_game sg; int iScore = sg.start_game(); diff --git a/src/iuse_software.h b/src/iuse_software.h index 67bcc7b616fa1..e8bb46c862b6d 100644 --- a/src/iuse_software.h +++ b/src/iuse_software.h @@ -2,8 +2,9 @@ #ifndef IUSE_SOFTWARE_H #define IUSE_SOFTWARE_H -#include #include +#include + bool play_videogame( const std::string &function_name, std::map &game_data, int &score ); diff --git a/src/iuse_software_kitten.cpp b/src/iuse_software_kitten.cpp index 69f7a7bed6480..45d7bcd4494b4 100644 --- a/src/iuse_software_kitten.cpp +++ b/src/iuse_software_kitten.cpp @@ -1,13 +1,12 @@ #include "iuse_software_kitten.h" -#include "output.h" -#include "translations.h" -#include "posix_time.h" #include "cursesdef.h" #include "input.h" +#include "output.h" +#include "posix_time.h" +#include "translations.h" #include // Needed for rand() -#include #define EMPTY -1 #define ROBOT 0 @@ -444,25 +443,24 @@ void robot_finds_kitten::process_input( int input, const catacurses::window &w ) draw_kitten( w ); } wrefresh( w ); - nanosleep( &ts, NULL ); + refresh_display(); + nanosleep( &ts, nullptr ); } /* They're in love! */ mvwprintz( w, 0, ( ( rfkCOLS - 6 ) / 2 ) - 1, c_light_red, "<3<3<3" ); wrefresh( w ); - nanosleep( &ts, NULL ); + refresh_display(); + nanosleep( &ts, nullptr ); for( int c = 0; c < rfkCOLS; c++ ) { mvwputch( w, 0, c, c_white, ' ' ); mvwputch( w, 1, c, c_white, ' ' ); } mvwprintz( w, 0, 0, c_white, _( "You found kitten! Way to go, robot!" ) ); wrefresh( w ); + refresh_display(); ret = true; - int ech = input; - do { - // TODO: use input context - ech = inp_mngr.get_input_event().get_first_input(); - } while( ech == input ); + inp_mngr.wait_for_any_key(); } break; diff --git a/src/iuse_software_kitten.h b/src/iuse_software_kitten.h index 682fd8a6b14ea..00ba33167ee75 100644 --- a/src/iuse_software_kitten.h +++ b/src/iuse_software_kitten.h @@ -3,6 +3,7 @@ #define SOFTWARE_KITTEN_H #include "color.h" + #include namespace catacurses diff --git a/src/iuse_software_lightson.cpp b/src/iuse_software_lightson.cpp index 2bddcdb2a1ffd..32859b24f414c 100644 --- a/src/iuse_software_lightson.cpp +++ b/src/iuse_software_lightson.cpp @@ -1,16 +1,15 @@ #include "iuse_software_lightson.h" +#include "cursesdef.h" +#include "input.h" #include "output.h" -#include "ui.h" #include "rng.h" -#include "input.h" -#include "cursesdef.h" #include "translations.h" +#include "ui.h" +#include #include #include -#include -#include void lightson_game::new_level() { diff --git a/src/iuse_software_lightson.h b/src/iuse_software_lightson.h index dbd3973640c6c..88df21e5d852a 100644 --- a/src/iuse_software_lightson.h +++ b/src/iuse_software_lightson.h @@ -4,9 +4,7 @@ #include "cursesdef.h" -#include #include -#include namespace catacurses { diff --git a/src/iuse_software_minesweeper.cpp b/src/iuse_software_minesweeper.cpp index b080dd65748bc..894f233562c6c 100644 --- a/src/iuse_software_minesweeper.cpp +++ b/src/iuse_software_minesweeper.cpp @@ -1,17 +1,16 @@ #include "iuse_software_minesweeper.h" +#include "catacharset.h" +#include "input.h" #include "output.h" -#include "ui.h" #include "rng.h" -#include "input.h" -#include "catacharset.h" -#include "translations.h" #include "string_input_popup.h" +#include "translations.h" +#include "ui.h" -#include #include +#include #include -#include std::vector closest_tripoints_first( int radius, const tripoint &p ); @@ -57,10 +56,10 @@ void minesweeper_game::new_level( const catacurses::window &w_minesweeper ) uilist difficulty; difficulty.allow_cancel = false; difficulty.text = _( "Game Difficulty" ); - difficulty.entries.push_back( uimenu_entry( 0, true, 'b', _( "Beginner" ) ) ); - difficulty.entries.push_back( uimenu_entry( 1, true, 'i', _( "Intermediate" ) ) ); - difficulty.entries.push_back( uimenu_entry( 2, true, 'e', _( "Expert" ) ) ); - difficulty.entries.push_back( uimenu_entry( 3, true, 'c', _( "Custom" ) ) ); + difficulty.entries.emplace_back( 0, true, 'b', _( "Beginner" ) ); + difficulty.entries.emplace_back( 1, true, 'i', _( "Intermediate" ) ); + difficulty.entries.emplace_back( 2, true, 'e', _( "Expert" ) ); + difficulty.entries.emplace_back( 3, true, 'c', _( "Custom" ) ); difficulty.query(); switch( difficulty.ret ) { @@ -102,19 +101,19 @@ void minesweeper_game::new_level( const catacurses::window &w_minesweeper ) do { iRandX = rng( 0, iLevelX - 1 ); iRandY = rng( 0, iLevelY - 1 ); - } while( mLevel[iRandY][iRandX] == ( int )bomb ); + } while( mLevel[iRandY][iRandX] == static_cast( bomb ) ); - mLevel[iRandY][iRandX] = ( int )bomb; + mLevel[iRandY][iRandX] = static_cast( bomb ); } for( int y = 0; y < iLevelY; y++ ) { for( int x = 0; x < iLevelX; x++ ) { - if( mLevel[y][x] == ( int )bomb ) { + if( mLevel[y][x] == static_cast( bomb ) ) { const auto circle = closest_tripoints_first( 1, {x, y, 0} ); for( const auto &p : circle ) { if( p.x >= 0 && p.x < iLevelX && p.y >= 0 && p.y < iLevelY ) { - if( mLevel[p.y][p.x] != ( int )bomb ) { + if( mLevel[p.y][p.x] != static_cast( bomb ) ) { mLevel[p.y][p.x]++; } } @@ -138,7 +137,7 @@ bool minesweeper_game::check_win() for( int y = 0; y < iLevelY; y++ ) { for( int x = 0; x < iLevelX; x++ ) { if( ( mLevelReveal[y][x] == flag || mLevelReveal[y][x] == unknown ) && - mLevel[y][x] != ( int )bomb ) { + mLevel[y][x] != static_cast( bomb ) ) { return false; } } @@ -263,10 +262,9 @@ int minesweeper_game::start_game() iPlayerY + iDirY < iLevelY ) { std::string sGlyph; - nc_color cColor; for( int i = 0; i < 2; i++ ) { - cColor = c_white; + nc_color cColor = c_white; if( mLevelReveal[iPlayerY][iPlayerX] == flag ) { sGlyph = "!"; cColor = c_yellow; @@ -283,7 +281,7 @@ int minesweeper_game::start_game() } mvwputch( w_minesweeper, iOffsetY + iPlayerY, iOffsetX + iPlayerX, - ( i == 0 ) ? cColor : hilite( cColor ), sGlyph.c_str() ); + ( i == 0 ) ? cColor : hilite( cColor ), sGlyph ); if( i == 0 ) { iPlayerX += iDirX; @@ -302,10 +300,10 @@ int minesweeper_game::start_game() } } else if( action == "CONFIRM" ) { if( mLevelReveal[iPlayerY][iPlayerX] != seen ) { - if( mLevel[iPlayerY][iPlayerX] == ( int )bomb ) { + if( mLevel[iPlayerY][iPlayerX] == static_cast( bomb ) ) { for( int y = 0; y < iLevelY; y++ ) { for( int x = 0; x < iLevelX; x++ ) { - if( mLevel[y][x] == ( int )bomb ) { + if( mLevel[y][x] == static_cast( bomb ) ) { mvwputch( w_minesweeper, iOffsetY + y, iOffsetX + x, hilite( c_red ), ( mLevelReveal[y][x] == flag ) ? "!" : "*" ); } diff --git a/src/iuse_software_snake.cpp b/src/iuse_software_snake.cpp index d56ff6c02baff..f124735e750f0 100644 --- a/src/iuse_software_snake.cpp +++ b/src/iuse_software_snake.cpp @@ -1,23 +1,15 @@ #include "iuse_software_snake.h" -#include "rng.h" +#include "catacharset.h" // utf8_width() +#include "cursesdef.h" #include "input.h" #include "output.h" -#include "cursesdef.h" -#include "catacharset.h" // utf8_width() -#include "translations.h" +#include "rng.h" #include "string_formatter.h" +#include "translations.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include #include +#include #include snake_game::snake_game() diff --git a/src/iuse_software_sokoban.cpp b/src/iuse_software_sokoban.cpp index 3d23026f09b26..b71a50efd450d 100644 --- a/src/iuse_software_sokoban.cpp +++ b/src/iuse_software_sokoban.cpp @@ -1,17 +1,15 @@ #include "iuse_software_sokoban.h" -#include "output.h" -#include "input.h" -#include "cursesdef.h" +#include "cata_utility.h" #include "catacharset.h" -#include "string_formatter.h" +#include "cursesdef.h" #include "debug.h" +#include "input.h" +#include "output.h" #include "path_info.h" +#include "string_formatter.h" #include "translations.h" -#include "cata_utility.h" -#include -#include #include sokoban_game::sokoban_game() diff --git a/src/iuse_software_sokoban.h b/src/iuse_software_sokoban.h index 521aa64577bce..0aa402831978d 100644 --- a/src/iuse_software_sokoban.h +++ b/src/iuse_software_sokoban.h @@ -2,10 +2,10 @@ #ifndef SOFTWARE_SOKOBAN_H #define SOFTWARE_SOKOBAN_H +#include +#include #include #include -#include -#include namespace catacurses { diff --git a/src/lightmap.cpp b/src/lightmap.cpp index b4e4082aad45b..34f4287b6d6ba 100644 --- a/src/lightmap.cpp +++ b/src/lightmap.cpp @@ -1,21 +1,21 @@ #include "lightmap.h" #include "fragment_cloud.h" -#include "mapdata.h" +#include "game.h" #include "map.h" #include "map_iterator.h" -#include "game.h" -#include "npc.h" +#include "mapdata.h" #include "monster.h" +#include "mtype.h" +#include "npc.h" +#include "shadowcasting.h" +#include "submap.h" #include "veh_type.h" #include "vehicle.h" -#include "submap.h" -#include "mtype.h" -#include "weather.h" +#include "vpart_position.h" #include "vpart_range.h" #include "vpart_reference.h" -#include "vpart_position.h" -#include "shadowcasting.h" +#include "weather.h" #include #include @@ -32,6 +32,13 @@ constexpr double PI = 3.14159265358979323846; constexpr double HALFPI = 1.57079632679489661923; constexpr double SQRT_2 = 1.41421356237309504880; +std::string four_quadrants::to_string() const +{ + return string_format( "(%.2f,%.2f,%.2f,%.2f)", + ( *this )[quadrant::NE], ( *this )[quadrant::SE], + ( *this )[quadrant::SW], ( *this )[quadrant::NW] ); +} + void map::add_light_from_items( const tripoint &p, std::list::iterator begin, std::list::iterator end ) { @@ -86,6 +93,9 @@ void map::build_transparency_cache( const int zlev ) } if( outside_cache[x][y] ) { + // FIXME: Places inside vehicles haven't been marked as + // inside yet so this is incorrectly penalising for + // weather in vehicles. value *= sight_penalty; } @@ -178,6 +188,13 @@ void map::generate_lightmap( const int zlev ) constexpr std::array dir_x = {{ 0, -1, 1, 0 }}; // [0] constexpr std::array dir_y = {{ -1, 0, 0, 1 }}; // [1][X][2] constexpr std::array dir_d = {{ 90, 0, 180, 270 }}; // [3] + constexpr std::array, 4> dir_quadrants = {{ + {{ quadrant::NE, quadrant::NW }}, + {{ quadrant::SW, quadrant::NW }}, + {{ quadrant::SE, quadrant::NE }}, + {{ quadrant::SE, quadrant::SW }}, + } + }; const float natural_light = g->natural_light_level( zlev ); const float inside_light = ( natural_light > LIGHT_SOURCE_BRIGHT ) ? @@ -187,9 +204,9 @@ void map::generate_lightmap( const int zlev ) for( int sy = 0; sy < LIGHTMAP_CACHE_Y; ++sy ) { // In bright light indoor light exists to some degree if( !outside_cache[sx][sy] ) { - lm[sx][sy] = inside_light; + lm[sx][sy].fill( inside_light ); } else { - lm[sx][sy] = natural_light; + lm[sx][sy].fill( natural_light ); } } } @@ -210,15 +227,18 @@ void map::generate_lightmap( const int zlev ) const int y = sy + smy * SEEY; const tripoint p( x, y, zlev ); // Project light into any openings into buildings. - if( natural_light > LIGHT_SOURCE_BRIGHT && !outside_cache[p.x][p.y] ) { + if( !outside_cache[p.x][p.y] ) { // Apply light sources for external/internal divide for( int i = 0; i < 4; ++i ) { if( INBOUNDS( p.x + dir_x[i], p.y + dir_y[i] ) && outside_cache[p.x + dir_x[i]][p.y + dir_y[i]] ) { - lm[p.x][p.y] = natural_light; if( light_transparency( p ) > LIGHT_TRANSPARENCY_SOLID ) { + lm[p.x][p.y][quadrant::default_] = natural_light; apply_directional_light( p, dir_d[i], natural_light ); + } else { + lm[p.x][p.y][dir_quadrants[i][0]] = natural_light; + lm[p.x][p.y][dir_quadrants[i][1]] = natural_light; } } } @@ -358,9 +378,9 @@ void map::generate_lightmap( const int zlev ) } else { add_light_source( src, vp.bonus ); } - }; + } - for( const vpart_reference &vp : v->get_parts() ) { + for( const vpart_reference &vp : v->get_all_parts() ) { const size_t p = vp.part_index(); const tripoint pp = vp.pos(); if( !inbounds( pp ) ) { @@ -388,7 +408,7 @@ void map::generate_lightmap( const int zlev ) if( g->u.has_active_bionic( bionic_id( "bio_night" ) ) ) { for( const tripoint &p : points_in_rectangle( cache_start, cache_end ) ) { if( rl_dist( p, g->u.pos() ) < 15 ) { - lm[p.x][p.y] = LIGHT_AMBIENT_MINIMAL; + lm[p.x][p.y].fill( LIGHT_AMBIENT_MINIMAL ); } } } @@ -415,11 +435,12 @@ lit_level map::light_at( const tripoint &p ) const return LL_BRIGHT; } - if( lm[p.x][p.y] >= LIGHT_AMBIENT_LIT ) { + const float max_light = lm[p.x][p.y].max(); + if( max_light >= LIGHT_AMBIENT_LIT ) { return LL_LIT; } - if( lm[p.x][p.y] >= LIGHT_AMBIENT_LOW ) { + if( max_light >= LIGHT_AMBIENT_LOW ) { return LL_LOW; } @@ -432,7 +453,7 @@ float map::ambient_light_at( const tripoint &p ) const return 0.0f; } - return get_cache_ref( p.z ).lm[p.x][p.y]; + return get_cache_ref( p.z ).lm[p.x][p.y].max(); } bool map::trans( const tripoint &p ) const @@ -447,6 +468,116 @@ float map::light_transparency( const tripoint &p ) const // End of tile light/transparency +map::apparent_light_info map::apparent_light_helper( const level_cache &map_cache, + const tripoint &p ) +{ + const float vis = std::max( map_cache.seen_cache[p.x][p.y], map_cache.camera_cache[p.x][p.y] ); + const bool obstructed = vis <= LIGHT_TRANSPARENCY_SOLID + 0.1; + + auto is_opaque = [&map_cache]( int x, int y ) { + return map_cache.transparency_cache[x][y] <= LIGHT_TRANSPARENCY_SOLID; + }; + + const bool p_opaque = is_opaque( p.x, p.y ); + float apparent_light; + + if( p_opaque && vis > 0 ) { + // This is the complicated case. We want to check which quadrants the + // player can see the tile from, and only count light values from those + // quadrants. + struct offset_and_quadrants { + point offset; + std::array quadrants; + }; + static constexpr std::array adjacent_offsets = {{ + { { 0, 1 }, {{ quadrant::SE, quadrant::SW }} }, + { { 0, -1 }, {{ quadrant::NE, quadrant::NW }} }, + { { 1, 0 }, {{ quadrant::SE, quadrant::NE }} }, + { { 1, 1 }, {{ quadrant::SE, quadrant::SE }} }, + { { 1, -1 }, {{ quadrant::NE, quadrant::NE }} }, + { {-1, 0 }, {{ quadrant::SW, quadrant::NW }} }, + { {-1, 1 }, {{ quadrant::SW, quadrant::SW }} }, + { {-1, -1 }, {{ quadrant::NW, quadrant::NW }} }, + } + }; + + four_quadrants seen_from( 0 ); + for( const offset_and_quadrants &oq : adjacent_offsets ) { + const int neighbour_x = p.x + oq.offset.x; + const int neighbour_y = p.y + oq.offset.y; + + if( !INBOUNDS( neighbour_x, neighbour_y ) ) { + continue; + } + if( is_opaque( neighbour_x, neighbour_y ) ) { + continue; + } + if( map_cache.seen_cache[neighbour_x][neighbour_y] == 0 && + map_cache.camera_cache[neighbour_x][neighbour_y] == 0 ) { + continue; + } + // This is a non-opaque visible neighbour, so count visibility from the relevant + // quadrants + seen_from[oq.quadrants[0]] = vis; + seen_from[oq.quadrants[1]] = vis; + } + apparent_light = ( seen_from * map_cache.lm[p.x][p.y] ).max(); + } else { + // This is the simple case, for a non-opaque tile light from all + // directions is equivalent + apparent_light = vis * map_cache.lm[p.x][p.y][quadrant::default_]; + } + return { obstructed, apparent_light }; +} + +lit_level map::apparent_light_at( const tripoint &p, const visibility_variables &cache ) const +{ + const int dist = rl_dist( g->u.pos(), p ); + + // Clairvoyance overrides everything. + if( dist <= cache.u_clairvoyance ) { + return LL_BRIGHT; + } + const auto &map_cache = get_cache_ref( p.z ); + const apparent_light_info a = apparent_light_helper( map_cache, p ); + + // Unimpaired range is an override to strictly limit vision range based on various conditions, + // but the player can still see light sources. + if( dist > g->u.unimpaired_range() ) { + if( !a.obstructed && map_cache.sm[p.x][p.y] > 0.0 ) { + return LL_BRIGHT_ONLY; + } else { + return LL_DARK; + } + } + if( a.obstructed ) { + if( a.apparent_light > LIGHT_AMBIENT_LIT ) { + if( a.apparent_light > cache.g_light_level ) { + // This represents too hazy to see detail, + // but enough light getting through to illuminate. + return LL_BRIGHT_ONLY; + } else { + // If it's not brighter than the surroundings, it just ends up shadowy. + return LL_LOW; + } + } else { + return LL_BLANK; + } + } + // Then we just search for the light level in descending order. + if( a.apparent_light > LIGHT_SOURCE_BRIGHT || map_cache.sm[p.x][p.y] > 0.0 ) { + return LL_BRIGHT; + } + if( a.apparent_light > LIGHT_AMBIENT_LIT ) { + return LL_LIT; + } + if( a.apparent_light > cache.vision_threshold ) { + return LL_LOW; + } else { + return LL_BLANK; + } +} + bool map::pl_sees( const tripoint &t, const int max_range ) const { if( !inbounds( t ) ) { @@ -458,10 +589,10 @@ bool map::pl_sees( const tripoint &t, const int max_range ) const } const auto &map_cache = get_cache_ref( t.z ); - const float vis = std::max( map_cache.seen_cache[t.x][t.y], map_cache.camera_cache[t.x][t.y] ); - const float point_vis = vis * map_cache.lm[t.x][t.y]; - return vis > LIGHT_TRANSPARENCY_SOLID + 0.1 && - ( point_vis > g->u.get_vision_threshold( map_cache.lm[g->u.posx()][g->u.posy()] ) || + const apparent_light_info a = apparent_light_helper( map_cache, t ); + const float light_at_player = map_cache.lm[g->u.posx()][g->u.posy()].max(); + return !a.obstructed && + ( a.apparent_light > g->u.get_vision_threshold( light_at_player ) || map_cache.sm[t.x][t.y] > 0.0 ); } @@ -482,6 +613,15 @@ bool map::pl_line_of_sight( const tripoint &t, const int max_range ) const map_cache.camera_cache[t.x][t.y] > 0.0f; } +// For a direction vector defined by x, y, return the quadrant that's the +// source of that direction. Assumes x != 0 && y != 0 +static constexpr quadrant quadrant_from_x_y( int x, int y ) +{ + return ( x > 0 ) ? + ( ( y > 0 ) ? quadrant::NW : quadrant::SW ) : + ( ( y > 0 ) ? quadrant::NE : quadrant::SE ); +} + // Add defaults for when method is invoked for the first time. template &floor_caches, const tripoint &origin, const int offset_distance, const fragment_cloud numerator ); -template -void castLight( T( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], +void castLight( Out( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], const T( &input_array )[MAPSIZE * SEEX][MAPSIZE * SEEY], const int offsetX, const int offsetY, const int offsetDistance, const T numerator = 1.0, const int row = 1, float start = 1.0f, const float end = 0.0f, T cumulative_transparency = LIGHT_TRANSPARENCY_OPEN_AIR ); -template -void castLight( T( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], +void castLight( Out( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], const T( &input_array )[MAPSIZE * SEEX][MAPSIZE * SEEY], const int offsetX, const int offsetY, const int offsetDistance, const T numerator, const int row, float start, const float end, T cumulative_transparency ) { + constexpr quadrant quad = quadrant_from_x_y( -xx - xy, -yx - yy ); float newStart = 0.0f; float radius = 60.0f - offsetDistance; if( start < end ) { return; } T last_intensity = 0.0; - // Making this static prevents it from being needlessly constructed/destructed all the time. - static const tripoint origin( 0, 0, 0 ); - // But each instance of the method needs one of these. + static constexpr tripoint origin( 0, 0, 0 ); tripoint delta( 0, 0, 0 ); for( int distance = row; distance <= radius; distance++ ) { delta.y = -distance; @@ -814,18 +953,23 @@ void castLight( T( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], const int dist = rl_dist( origin, delta ) + offsetDistance; last_intensity = calc( numerator, cumulative_transparency, dist ); - output_cache[currentX][currentY] = - std::max( output_cache[currentX][currentY], last_intensity ); T new_transparency = input_array[ currentX ][ currentY ]; + if( check( new_transparency, last_intensity ) ) { + update_output( output_cache[currentX][currentY], last_intensity, + quadrant::default_ ); + } else { + update_output( output_cache[currentX][currentY], last_intensity, quad ); + } + if( new_transparency == current_transparency ) { newStart = leadingEdge; continue; } // Only cast recursively if previous span was not opaque. if( check( current_transparency, last_intensity ) ) { - castLight( + castLight( output_cache, input_array, offsetX, offsetY, offsetDistance, numerator, distance + 1, start, trailingEdge, accumulate( cumulative_transparency, current_transparency, distance ) ); @@ -854,41 +998,45 @@ void castLight( T( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], } } -template -void castLightAll( T( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], +void castLightAll( Out( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], const T( &input_array )[MAPSIZE * SEEX][MAPSIZE * SEEY], const int offsetX, const int offsetY, int offsetDistance, T numerator ) { - castLight<0, 1, 1, 0, T, calc, check, accumulate>( + castLight<0, 1, 1, 0, T, Out, calc, check, update_output, accumulate>( output_cache, input_array, offsetX, offsetY, offsetDistance, numerator ); - castLight<1, 0, 0, 1, T, calc, check, accumulate>( + castLight<1, 0, 0, 1, T, Out, calc, check, update_output, accumulate>( output_cache, input_array, offsetX, offsetY, offsetDistance, numerator ); - castLight < 0, -1, 1, 0, T, calc, check, accumulate > ( + castLight < 0, -1, 1, 0, T, Out, calc, check, update_output, accumulate > ( output_cache, input_array, offsetX, offsetY, offsetDistance, numerator ); - castLight < -1, 0, 0, 1, T, calc, check, accumulate > ( + castLight < -1, 0, 0, 1, T, Out, calc, check, update_output, accumulate > ( output_cache, input_array, offsetX, offsetY, offsetDistance, numerator ); - castLight < 0, 1, -1, 0, T, calc, check, accumulate > ( + castLight < 0, 1, -1, 0, T, Out, calc, check, update_output, accumulate > ( output_cache, input_array, offsetX, offsetY, offsetDistance, numerator ); - castLight < 1, 0, 0, -1, T, calc, check, accumulate > ( + castLight < 1, 0, 0, -1, T, Out, calc, check, update_output, accumulate > ( output_cache, input_array, offsetX, offsetY, offsetDistance, numerator ); - castLight < 0, -1, -1, 0, T, calc, check, accumulate > ( + castLight < 0, -1, -1, 0, T, Out, calc, check, update_output, accumulate > ( output_cache, input_array, offsetX, offsetY, offsetDistance, numerator ); - castLight < -1, 0, 0, -1, T, calc, check, accumulate > ( + castLight < -1, 0, 0, -1, T, Out, calc, check, update_output, accumulate > ( output_cache, input_array, offsetX, offsetY, offsetDistance, numerator ); } -template void castLightAll( - float ( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], - const float ( &input_array )[MAPSIZE * SEEX][MAPSIZE * SEEY], - const int offsetX, const int offsetY, int offsetDistance, float numerator ); +template void castLightAll( + four_quadrants( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], + const float ( &input_array )[MAPSIZE * SEEX][MAPSIZE * SEEY], + const int offsetX, const int offsetY, int offsetDistance, float numerator ); template void -castLightAll( +castLightAll +( fragment_cloud( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], const fragment_cloud( &input_array )[MAPSIZE * SEEX][MAPSIZE * SEEY], const int offsetX, const int offsetY, int offsetDistance, const fragment_cloud numerator ); @@ -922,7 +1070,7 @@ void map::build_seen_cache( const tripoint &origin, const int target_z ) if( !fov_3d ) { seen_cache[origin.x][origin.y] = LIGHT_TRANSPARENCY_CLEAR; - castLightAll( + castLightAll( seen_cache, transparency_cache, origin.x, origin.y, 0 ); } else { if( origin.z == target_z ) { @@ -955,7 +1103,7 @@ void map::build_seen_cache( const tripoint &origin, const int target_z ) // from happening due to mirrors becoming visible due to processing order. // Cameras are also handled here, so that we only need to get through all vehicle parts once int cam_control = -1; - for( const vpart_reference &vp : veh->get_parts( VPFLAG_EXTENDS_VISION ) ) { + for( const vpart_reference &vp : veh->get_avail_parts( VPFLAG_EXTENDS_VISION ) ) { const tripoint mirror_pos = vp.pos(); // We can utilize the current state of the seen cache to determine // if the player can see the mirror from their position. @@ -996,7 +1144,7 @@ void map::build_seen_cache( const tripoint &origin, const int target_z ) // // The naive solution of making the mirrors act like a second player // at an offset appears to give reasonable results though. - castLightAll( + castLightAll( camera_cache, transparency_cache, mirror_pos.x, mirror_pos.y, offsetDistance ); } } @@ -1004,7 +1152,7 @@ void map::build_seen_cache( const tripoint &origin, const int target_z ) static float light_calc( const float &numerator, const float &transparency, const int &distance ) { // Light needs inverse square falloff in addition to attenuation. - return numerator / ( float )( exp( transparency * distance ) * distance ); + return numerator / static_cast( exp( transparency * distance ) * distance ); } static bool light_check( const float &transparency, const float &intensity ) { @@ -1014,7 +1162,7 @@ static bool light_check( const float &transparency, const float &intensity ) void map::apply_light_source( const tripoint &p, float luminance ) { auto &cache = get_cache( p.z ); - float ( &lm )[MAPSIZE * SEEX][MAPSIZE * SEEY] = cache.lm; + four_quadrants( &lm )[MAPSIZE * SEEX][MAPSIZE * SEEY] = cache.lm; float ( &sm )[MAPSIZE * SEEX][MAPSIZE * SEEY] = cache.sm; float ( &transparency_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY] = cache.transparency_cache; float ( &light_source_buffer )[MAPSIZE * SEEX][MAPSIZE * SEEY] = cache.light_source_buffer; @@ -1023,16 +1171,14 @@ void map::apply_light_source( const tripoint &p, float luminance ) const int y = p.y; if( inbounds( p ) ) { - lm[x][y] = std::max( lm[x][y], static_cast( LL_LOW ) ); - lm[x][y] = std::max( lm[x][y], luminance ); + const float min_light = std::max( static_cast( LL_LOW ), luminance ); + lm[x][y] = elementwise_max( lm[x][y], min_light ); sm[x][y] = std::max( sm[x][y], luminance ); } - if( luminance <= 1 ) { + if( luminance <= LL_LOW ) { return; - } else if( luminance <= 2 ) { + } else if( luminance <= LL_BRIGHT_ONLY ) { luminance = 1.49f; - } else if( luminance <= LIGHT_SOURCE_LOCAL ) { - return; } /* If we're a 5 luminance fire , we skip casting rays into ey && sx if we have @@ -1058,31 +1204,39 @@ void map::apply_light_source( const tripoint &p, float luminance ) bool west = ( x != 0 && light_source_buffer[x - 1][y] < luminance ); if( north ) { - castLight < 1, 0, 0, -1, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); - castLight < -1, 0, 0, -1, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); + castLight < 1, 0, 0, -1, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); + castLight < -1, 0, 0, -1, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); } if( east ) { - castLight < 0, -1, 1, 0, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); - castLight < 0, -1, -1, 0, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); + castLight < 0, -1, 1, 0, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); + castLight < 0, -1, -1, 0, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); } if( south ) { - castLight<1, 0, 0, 1, float, light_calc, light_check, accumulate_transparency>( lm, - transparency_cache, x, y, 0, luminance ); - castLight < -1, 0, 0, 1, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); + castLight<1, 0, 0, 1, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency>( + lm, transparency_cache, x, y, 0, luminance ); + castLight < -1, 0, 0, 1, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); } if( west ) { - castLight<0, 1, 1, 0, float, light_calc, light_check, accumulate_transparency>( lm, - transparency_cache, x, y, 0, luminance ); - castLight < 0, 1, -1, 0, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); + castLight<0, 1, 1, 0, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency>( + lm, transparency_cache, x, y, 0, luminance ); + castLight < 0, 1, -1, 0, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); } } @@ -1092,29 +1246,37 @@ void map::apply_directional_light( const tripoint &p, int direction, float lumin const int y = p.y; auto &cache = get_cache( p.z ); - float ( &lm )[MAPSIZE * SEEX][MAPSIZE * SEEY] = cache.lm; + four_quadrants( &lm )[MAPSIZE * SEEX][MAPSIZE * SEEY] = cache.lm; float ( &transparency_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY] = cache.transparency_cache; if( direction == 90 ) { - castLight < 1, 0, 0, -1, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); - castLight < -1, 0, 0, -1, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); + castLight < 1, 0, 0, -1, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); + castLight < -1, 0, 0, -1, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); } else if( direction == 0 ) { - castLight < 0, -1, 1, 0, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); - castLight < 0, -1, -1, 0, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); + castLight < 0, -1, 1, 0, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); + castLight < 0, -1, -1, 0, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); } else if( direction == 270 ) { - castLight<1, 0, 0, 1, float, light_calc, light_check, accumulate_transparency>( lm, - transparency_cache, x, y, 0, luminance ); - castLight < -1, 0, 0, 1, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); + castLight<1, 0, 0, 1, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency>( + lm, transparency_cache, x, y, 0, luminance ); + castLight < -1, 0, 0, 1, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); } else if( direction == 180 ) { - castLight<0, 1, 1, 0, float, light_calc, light_check, accumulate_transparency>( lm, - transparency_cache, x, y, 0, luminance ); - castLight < 0, 1, -1, 0, float, light_calc, light_check, accumulate_transparency > ( lm, - transparency_cache, x, y, 0, luminance ); + castLight<0, 1, 1, 0, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency>( + lm, transparency_cache, x, y, 0, luminance ); + castLight < 0, 1, -1, 0, float, four_quadrants, light_calc, light_check, + update_light_quadrants, accumulate_transparency > ( + lm, transparency_cache, x, y, 0, luminance ); } } @@ -1134,7 +1296,7 @@ void map::apply_light_arc( const tripoint &p, int angle, float luminance, int wi int nangle = angle % 360; tripoint end; - double rad = PI * ( double )nangle / 180; + double rad = PI * static_cast( nangle ) / 180; int range = LIGHT_RANGE( luminance ); calc_ray_end( nangle, range, p, end ); apply_light_ray( lit, p, end, luminance ); @@ -1154,12 +1316,12 @@ void map::apply_light_arc( const tripoint &p, int angle, float luminance, int wi if( trigdist ) { double fdist = ( ao * HALFPI ) / wangle; double orad = ( PI * ao / 180.0 ); - end.x = int( p.x + ( ( double )range - fdist * 2.0 ) * cos( rad + orad ) ); - end.y = int( p.y + ( ( double )range - fdist * 2.0 ) * sin( rad + orad ) ); + end.x = int( p.x + ( static_cast( range ) - fdist * 2.0 ) * cos( rad + orad ) ); + end.y = int( p.y + ( static_cast( range ) - fdist * 2.0 ) * sin( rad + orad ) ); apply_light_ray( lit, p, end, luminance ); - end.x = int( p.x + ( ( double )range - fdist * 2.0 ) * cos( rad - orad ) ); - end.y = int( p.y + ( ( double )range - fdist * 2.0 ) * sin( rad - orad ) ); + end.x = int( p.x + ( static_cast( range ) - fdist * 2.0 ) * cos( rad - orad ) ); + end.y = int( p.y + ( static_cast( range ) - fdist * 2.0 ) * sin( rad - orad ) ); apply_light_ray( lit, p, end, luminance ); } else { calc_ray_end( nangle + ao, range, p, end ); @@ -1180,6 +1342,8 @@ void map::apply_light_ray( bool lit[LIGHTMAP_CACHE_X][LIGHTMAP_CACHE_Y], int x = s.x; int y = s.y; + quadrant quad = quadrant_from_x_y( dx, dy ); + // TODO: Invert that z comparison when it's sane if( s.z != e.z || ( s.x == e.x && s.y == e.y ) ) { return; @@ -1190,8 +1354,8 @@ void map::apply_light_ray( bool lit[LIGHTMAP_CACHE_X][LIGHTMAP_CACHE_Y], float distance = 1.0; float transparency = LIGHT_TRANSPARENCY_OPEN_AIR; - const float scaling_factor = ( float )rl_dist( s, e ) / - ( float )square_dist( s, e ); + const float scaling_factor = static_cast( rl_dist( s, e ) ) / + static_cast( square_dist( s, e ) ); // TODO: [lightmap] Pull out the common code here rather than duplication if( ax > ay ) { int t = ay - ( ax / 2 ); @@ -1206,14 +1370,16 @@ void map::apply_light_ray( bool lit[LIGHTMAP_CACHE_X][LIGHTMAP_CACHE_Y], // TODO: clamp coordinates to map bounds before this method is called. if( INBOUNDS( x, y ) ) { + float current_transparency = transparency_cache[x][y]; + bool is_opaque = ( current_transparency == LIGHT_TRANSPARENCY_SOLID ); if( !lit[x][y] ) { // Multiple rays will pass through the same squares so we need to record that lit[x][y] = true; - lm[x][y] = std::max( lm[x][y], - luminance / ( ( float )exp( transparency * distance ) * distance ) ); + float lm_val = luminance / ( expf( transparency * distance ) * distance ); + quadrant q = is_opaque ? quad : quadrant::default_; + lm[x][y][q] = std::max( lm[x][y][q], lm_val ); } - float current_transparency = transparency_cache[x][y]; - if( current_transparency == LIGHT_TRANSPARENCY_SOLID ) { + if( is_opaque ) { break; } // Cumulative average of the transparency values encountered. @@ -1236,14 +1402,16 @@ void map::apply_light_ray( bool lit[LIGHTMAP_CACHE_X][LIGHTMAP_CACHE_Y], t += ax; if( INBOUNDS( x, y ) ) { + float current_transparency = transparency_cache[x][y]; + bool is_opaque = ( current_transparency == LIGHT_TRANSPARENCY_SOLID ); if( !lit[x][y] ) { // Multiple rays will pass through the same squares so we need to record that lit[x][y] = true; - lm[x][y] = std::max( lm[x][y], - luminance / ( ( float )exp( transparency * distance ) * distance ) ); + float lm_val = luminance / ( expf( transparency * distance ) * distance ); + quadrant q = is_opaque ? quad : quadrant::default_; + lm[x][y][q] = std::max( lm[x][y][q], lm_val ); } - float current_transparency = transparency_cache[x][y]; - if( current_transparency == LIGHT_TRANSPARENCY_SOLID ) { + if( is_opaque ) { break; } // Cumulative average of the transparency values encountered. diff --git a/src/line.h b/src/line.h index 3f46aeeda2a8b..e56c2092f20ed 100644 --- a/src/line.h +++ b/src/line.h @@ -2,14 +2,14 @@ #ifndef LINE_H #define LINE_H -#include -#include #include "enums.h" -#include -#include - #include "game_constants.h" +#include +#include +#include +#include + /** Converts degrees to radians */ constexpr double DEGREES( double v ) { diff --git a/src/live_view.cpp b/src/live_view.cpp index 95059455cd66f..83a718c8cea2d 100644 --- a/src/live_view.cpp +++ b/src/live_view.cpp @@ -1,12 +1,12 @@ #include "live_view.h" -#include "output.h" +#include "catacharset.h" // center_text_pos +#include "color.h" #include "game.h" -#include "string_formatter.h" #include "map.h" +#include "output.h" +#include "string_formatter.h" #include "translations.h" -#include "catacharset.h" // center_text_pos -#include "color.h" #if (defined TILES || defined _WIN32 || defined WINDOWS) #include "cursesport.h" diff --git a/src/live_view.h b/src/live_view.h index 434847a2f4b71..04beb6937dd25 100644 --- a/src/live_view.h +++ b/src/live_view.h @@ -16,7 +16,6 @@ class live_view void init(); int draw( const catacurses::window &win, int max_height ); - void refresh(); void show( const tripoint &mouse_position ); void hide(); diff --git a/src/loading_ui.cpp b/src/loading_ui.cpp index 1ba746358e875..de19ea2ab5ab6 100644 --- a/src/loading_ui.cpp +++ b/src/loading_ui.cpp @@ -1,10 +1,15 @@ #include "loading_ui.h" + +#include "color.h" #include "output.h" #include "ui.h" -#include "color.h" #ifdef TILES -#include "SDL.h" +# if defined(_MSC_VER) && defined(USE_VCPKG) +# include +# else +# include +# endif #endif // TILES extern bool test_mode; @@ -37,7 +42,7 @@ void loading_ui::new_context( const std::string &desc ) void loading_ui::proceed() { if( menu != nullptr && !menu->entries.empty() ) { - if( menu->selected >= 0 && menu->selected < ( int )menu->entries.size() ) { + if( menu->selected >= 0 && menu->selected < static_cast( menu->entries.size() ) ) { // @todo: Color it red if it errored hard, yellow on warnings menu->entries[menu->selected].text_color = c_green; } diff --git a/src/lua_console.cpp b/src/lua_console.cpp index 22f0115252001..57ef18efdb802 100644 --- a/src/lua_console.cpp +++ b/src/lua_console.cpp @@ -1,7 +1,6 @@ #include "lua_console.h" #include "catalua.h" -#include "catacharset.h" #include "input.h" #include "string_input_popup.h" diff --git a/src/lua_console.h b/src/lua_console.h index 37df878e72b1f..075099cc114fc 100644 --- a/src/lua_console.h +++ b/src/lua_console.h @@ -2,12 +2,12 @@ #ifndef LUA_CONSOLE_H #define LUA_CONSOLE_H -#include "output.h" #include "cursesdef.h" +#include "output.h" #include -#include #include +#include class nc_color; @@ -26,7 +26,6 @@ class lua_console std::vector> text_stack; std::string get_input(); - void print( std::string text ); void draw(); bool done = false; diff --git a/src/main.cpp b/src/main.cpp index da88a60f5738e..40e3b2c285eac 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,36 +4,45 @@ * Who knows */ -#include "cursesdef.h" -#include "game.h" -#include "rng.h" #include "color.h" -#include "options.h" +#include "crash.h" +#include "cursesdef.h" #include "debug.h" #include "filesystem.h" -#include "path_info.h" +#include "game.h" +#include "loading_ui.h" +#include "main_menu.h" #include "mapsharing.h" +#include "options.h" #include "output.h" -#include "main_menu.h" -#include "loading_ui.h" -#include "crash.h" +#include "path_info.h" +#include "rng.h" #include #include +#include #include #include -#include -#include +#if (!(defined _WIN32 || defined WINDOWS)) #include +#endif +#include #ifdef LOCALIZE #include #endif #include "translations.h" +#ifdef TILES +# if defined(_MSC_VER) && defined(USE_VCPKG) +# include +# else +# include +# endif +#endif #ifdef __ANDROID__ -#include "SDL_system.h" -#include "SDL_filesystem.h" -#include "SDL_keyboard.h" +#include +#include +#include #include // Taken from: https://codelab.wordpress.com/2014/11/03/how-to-use-standard-output-streams-for-logging-in-android-apps/ @@ -559,6 +568,22 @@ int main( int argc, char *argv[] ) get_options().load(); set_language(); +#ifdef TILES + SDL_version compiled; + SDL_VERSION( &compiled ); + DebugLog( D_INFO, DC_ALL ) << "SDL version used during compile is " + << static_cast( compiled.major ) << "." + << static_cast( compiled.minor ) << "." + << static_cast( compiled.patch ); + + SDL_version linked; + SDL_GetVersion( &linked ); + DebugLog( D_INFO, DC_ALL ) << "SDL version used during linking and in runtime is " + << static_cast( linked.major ) << "." + << static_cast( linked.minor ) << "." + << static_cast( linked.patch ); +#endif + // in test mode don't initialize curses to avoid escape sequences being inserted into output stream if( !test_mode ) { try { @@ -574,7 +599,7 @@ int main( int argc, char *argv[] ) srand( seed ); rng_set_engine_seed( seed ); - g = new game; + g.reset( new game ); // First load and initialize everything that does not // depend on the mods. try { @@ -612,7 +637,7 @@ int main( int argc, char *argv[] ) #endif #ifdef LOCALIZE - std::string lang = ""; + std::string lang; #if (defined _WIN32 || defined WINDOWS) lang = getLangFromLCID( GetUserDefaultLCID() ); #else @@ -647,7 +672,7 @@ int main( int argc, char *argv[] ) } while( !g->do_turn() ); - }; + } exit_handler( -999 ); return 0; @@ -711,9 +736,7 @@ void exit_handler( int s ) deinitDebug(); int exit_status = 0; - if( g != NULL ) { - delete g; - } + g.reset(); catacurses::endwin(); diff --git a/src/main_menu.cpp b/src/main_menu.cpp index 7a29100fc6e55..4f372a0094a87 100644 --- a/src/main_menu.cpp +++ b/src/main_menu.cpp @@ -1,26 +1,29 @@ #include "main_menu.h" +#include "auto_pickup.h" +#include "cata_utility.h" +#include "catacharset.h" +#include "debug.h" +#include "filesystem.h" #include "game.h" -#include "player.h" -#include "output.h" #include "gamemode.h" -#include "debug.h" -#include "mapbuffer.h" -#include "overmapbuffer.h" -#include "translations.h" -#include "catacharset.h" #include "get_version.h" #include "help.h" -#include "worldfactory.h" -#include "filesystem.h" -#include "path_info.h" +#include "loading_ui.h" +#include "mapbuffer.h" #include "mapsharing.h" -#include "sounds.h" -#include "cata_utility.h" -#include "auto_pickup.h" +#include "output.h" +#include "overmapbuffer.h" +#include "path_info.h" +#include "player.h" #include "safemode_ui.h" +#include "sounds.h" #include "text_snippets.h" -#include "loading_ui.h" +#include "translations.h" +#include "worldfactory.h" + +#include +#include #define dbg(x) DebugLog((DebugLevel)(x),D_GAME) << __FILE__ << ":" << __LINE__ << ": " @@ -49,7 +52,7 @@ void main_menu::print_menu_items( const catacurses::window &w_in, const std::vector &vItems, size_t iSel, int iOffsetY, int iOffsetX, int spacing ) { - std::string text = ""; + std::string text; for( size_t i = 0; i < vItems.size(); ++i ) { if( i > 0 ) { text += std::string( spacing, ' ' ); @@ -139,7 +142,7 @@ void main_menu::print_menu( const catacurses::window &w_open, int iSel, const in } } const int free_space = std::max( 0, window_width - menu_length - iMenuOffsetX ); - const int spacing = free_space / ( ( int )vMenuItems.size() + 1 ); + const int spacing = free_space / ( static_cast( vMenuItems.size() ) + 1 ); const int width_of_spacing = spacing * ( vMenuItems.size() + 1 ); const int adj_offset = std::max( 0, ( free_space - width_of_spacing ) / 2 ); const int final_offset = iMenuOffsetX + adj_offset + spacing; @@ -289,7 +292,7 @@ void main_menu::init_strings() vSettingsSubItems.push_back( pgettext( "Main Menu|Settings", "olors" ) ); vSettingsHotkeys.clear(); - for( auto item : vSettingsSubItems ) { + for( const std::string &item : vSettingsSubItems ) { vSettingsHotkeys.push_back( get_hotkeys( item ) ); } @@ -305,8 +308,8 @@ void main_menu::display_text( const std::string &text, const std::string &title, ( TERMX > FULL_SCREEN_WIDTH ) ? ( TERMX - FULL_SCREEN_WIDTH ) / 2 : 0 ); catacurses::window w_text = catacurses::newwin( FULL_SCREEN_HEIGHT - 2, FULL_SCREEN_WIDTH - 2, - 1 + ( int )( ( TERMY > FULL_SCREEN_HEIGHT ) ? ( TERMY - FULL_SCREEN_HEIGHT ) / 2 : 0 ), - 1 + ( int )( ( TERMX > FULL_SCREEN_WIDTH ) ? ( TERMX - FULL_SCREEN_WIDTH ) / 2 : 0 ) ); + 1 + static_cast( ( TERMY > FULL_SCREEN_HEIGHT ) ? ( TERMY - FULL_SCREEN_HEIGHT ) / 2 : 0 ), + 1 + static_cast( ( TERMX > FULL_SCREEN_WIDTH ) ? ( TERMX - FULL_SCREEN_WIDTH ) / 2 : 0 ) ); draw_border( w_border, BORDER_COLOR, title ); @@ -350,7 +353,7 @@ bool main_menu::opening_screen() // Play title music, whoo! play_music( "title" ); - world_generator->set_active_world( NULL ); + world_generator->set_active_world( nullptr ); world_generator->init(); get_help().load(); @@ -415,7 +418,7 @@ bool main_menu::opening_screen() std::string sInput = ctxt.get_raw_input().text; // check automatic menu shortcuts for( size_t i = 0; i < vMenuHotkeys.size(); ++i ) { - for( auto hotkey : vMenuHotkeys[i] ) { + for( const std::string &hotkey : vMenuHotkeys[i] ) { if( sInput == hotkey ) { sel1 = i; action = "CONFIRM"; @@ -525,7 +528,7 @@ bool main_menu::opening_screen() g->gamemode = get_special_game( special_game_id( sel2 + 1 ) ); // check world WORLDPTR world = world_generator->make_new_world( special_game_id( sel2 + 1 ) ); - if( world == NULL ) { + if( world == nullptr ) { continue; } world_generator->set_active_world( world ); @@ -565,7 +568,7 @@ bool main_menu::opening_screen() std::string action = handle_input_timeout( ctxt ); std::string sInput = ctxt.get_raw_input().text; for( int i = 0; i < settings_subs_to_display; ++i ) { - for( auto hotkey : vSettingsHotkeys[i] ) { + for( const std::string &hotkey : vSettingsHotkeys[i] ) { if( sInput == hotkey ) { sel2 = i; action = "CONFIRM"; @@ -629,7 +632,7 @@ bool main_menu::new_character_tab() vSubItems.push_back( pgettext( "Main Menu|New Game", "Play ow!" ) ); } std::vector> vNewGameHotkeys; - for( auto item : vSubItems ) { + for( const std::string &item : vSubItems ) { vNewGameHotkeys.push_back( get_hotkeys( item ) ); } @@ -652,7 +655,7 @@ bool main_menu::new_character_tab() std::string action = handle_input_timeout( ctxt ); std::string sInput = ctxt.get_raw_input().text; for( size_t i = 0; i < vNewGameHotkeys.size(); ++i ) { - for( auto hotkey : vNewGameHotkeys[i] ) { + for( const std::string &hotkey : vNewGameHotkeys[i] ) { if( sInput == hotkey ) { sel2 = i; action = "CONFIRM"; @@ -667,7 +670,7 @@ bool main_menu::new_character_tab() on_move(); } else if( action == "RIGHT" ) { sel2++; - if( sel2 >= ( int )vSubItems.size() ) { + if( sel2 >= static_cast( vSubItems.size() ) ) { sel2 = 0; } on_move(); @@ -681,7 +684,7 @@ bool main_menu::new_character_tab() // loading the world. // Pick a world, suppressing prompts if it's "play now" mode. WORLDPTR world = world_generator->pick_world( sel2 != 3 && sel2 != 4 ); - if( world == NULL ) { + if( world == nullptr ) { continue; } world_generator->set_active_world( world ); @@ -737,7 +740,7 @@ bool main_menu::new_character_tab() } else { mvwprintz( w_open, iMenuOffsetY - 2, iMenuOffsetX + 20 + extra_w / 2, c_white, "%s", _( "Press 'd' to delete a preset." ) ); - for( int i = 0; i < ( int )templates.size(); i++ ) { + for( int i = 0; i < static_cast( templates.size() ); i++ ) { int line = iMenuOffsetY - 4 - i; mvwprintz( w_open, line, 20 + iMenuOffsetX + extra_w / 2, ( sel3 == i ? h_white : c_white ), "%s", templates[i].c_str() ); @@ -758,7 +761,7 @@ bool main_menu::new_character_tab() sel3 = templates.size() - 1; } } else if( action == "UP" ) { - if( sel3 < ( int )templates.size() - 1 ) { + if( sel3 < static_cast( templates.size() ) - 1 ) { sel3++; } else { sel3 = 0; @@ -782,7 +785,7 @@ bool main_menu::new_character_tab() } } else if( action == "RIGHT" || action == "CONFIRM" ) { WORLDPTR world = world_generator->pick_world(); - if( world == NULL ) { + if( world == nullptr ) { g->u = player(); continue; } @@ -826,7 +829,7 @@ bool main_menu::load_character_tab() c_red, "%s", _( "No Worlds found!" ) ); on_error(); } else { - for( int i = 0; i < ( int )all_worldnames.size(); ++i ) { + for( int i = 0; i < static_cast( all_worldnames.size() ); ++i ) { int line = iMenuOffsetY - 2 - i; std::string world_name = all_worldnames[i]; int savegames_count = world_generator->get_world( world_name )->world_saves.size(); @@ -861,7 +864,7 @@ bool main_menu::load_character_tab() sel2 = all_worldnames.size() - 1; } } else if( action == "UP" ) { - if( sel2 < ( int )all_worldnames.size() - 1 ) { + if( sel2 < static_cast( all_worldnames.size() ) - 1 ) { sel2++; } else { sel2 = 0; @@ -869,7 +872,7 @@ bool main_menu::load_character_tab() } else if( action == "LEFT" || action == "QUIT" ) { layer = 1; } else if( action == "RIGHT" || action == "CONFIRM" ) { - if( sel2 >= 0 && sel2 < ( int )all_worldnames.size() ) { + if( sel2 >= 0 && sel2 < static_cast( all_worldnames.size() ) ) { layer = 3; sel3 = 0; } @@ -921,7 +924,7 @@ bool main_menu::load_character_tab() sel3 = savegames.size() - 1; } } else if( action == "UP" ) { - if( sel3 < ( int )savegames.size() - 1 ) { + if( sel3 < static_cast( savegames.size() - 1 ) ) { sel3++; } else { sel3 = 0; @@ -932,7 +935,7 @@ bool main_menu::load_character_tab() print_menu( w_open, sel1, iMenuOffsetX, iMenuOffsetY ); } if( action == "RIGHT" || action == "CONFIRM" ) { - if( sel3 >= 0 && sel3 < ( int )savegames.size() ) { + if( sel3 >= 0 && sel3 < static_cast( savegames.size() ) ) { werase( w_background ); wrefresh( w_background ); WORLDPTR world = world_generator->get_world( all_worldnames[sel2] ); @@ -991,7 +994,7 @@ void main_menu::world_tab() std::string action = handle_input_timeout( ctxt ); std::string sInput = ctxt.get_raw_input().text; for( size_t i = 0; i < vWorldSubItems.size(); ++i ) { - for( auto hotkey : vWorldHotkeys[i] ) { + for( const std::string &hotkey : vWorldHotkeys[i] ) { if( sInput == hotkey ) { sel3 = i; action = "CONFIRM"; @@ -1093,7 +1096,7 @@ void main_menu::world_tab() sel2 = all_worldnames.size(); } } else if( action == "UP" ) { - if( sel2 < ( int )all_worldnames.size() ) { + if( sel2 < static_cast( all_worldnames.size() ) ) { ++sel2; } else { sel2 = 0; diff --git a/src/main_menu.h b/src/main_menu.h index 4ca591bd92a2a..0b0d1999af677 100644 --- a/src/main_menu.h +++ b/src/main_menu.h @@ -4,13 +4,13 @@ class player; -#include -#include - #include "cursesdef.h" #include "input.h" #include "worldfactory.h" +#include +#include + class main_menu { public: @@ -101,7 +101,6 @@ class main_menu * @param iSel which index in vMenuItems is selected * @param iMenuOffsetX Menu location in window, x coordinate * @param iMenuOffsetY Menu location in window, y coordinate - * @param bShowDDA Whether to show "Dark Days Ahead" banner */ void print_menu( const catacurses::window &w_open, int iSel, const int iMenuOffsetX, int iMenuOffsetY ); diff --git a/src/map.cpp b/src/map.cpp index 57fabfb74fd0d..1582bbf9de6bb 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1,56 +1,55 @@ #include "map.h" +#include "ammo.h" +#include "artifact.h" +#include "calendar.h" #include "coordinate_conversions.h" +#include "debug.h" #include "drawing_primitives.h" +#include "event.h" #include "fragment_cloud.h" -#include "lightmap.h" -#include "output.h" -#include "rng.h" -#include "game.h" #include "fungal_effects.h" -#include "line.h" -#include "item_factory.h" -#include "projectile.h" -#include "mapbuffer.h" -#include "translations.h" -#include "vpart_position.h" +#include "game.h" +#include "harvest.h" #include "iexamine.h" -#include "vpart_reference.h" -#include "string_formatter.h" -#include "sounds.h" -#include "debug.h" -#include "trap.h" #include "item.h" -#include "messages.h" -#include "ammo.h" +#include "item_factory.h" +#include "item_group.h" #include "iuse_actor.h" -#include "mongroup.h" -#include "npc.h" -#include "event.h" -#include "monster.h" -#include "vehicle.h" -#include "veh_type.h" -#include "calendar.h" -#include "artifact.h" -#include "submap.h" +#include "lightmap.h" +#include "line.h" #include "map_iterator.h" #include "map_selector.h" +#include "mapbuffer.h" #include "mapdata.h" +#include "messages.h" +#include "mongroup.h" +#include "monster.h" #include "mtype.h" -#include "vpart_range.h" -#include "weather.h" -#include "item_group.h" +#include "npc.h" +#include "options.h" +#include "output.h" #include "pathfinding.h" +#include "projectile.h" +#include "rng.h" #include "scent_map.h" -#include "harvest.h" -#include "input.h" -#include "options.h" +#include "sounds.h" +#include "string_formatter.h" +#include "submap.h" +#include "translations.h" +#include "trap.h" +#include "veh_type.h" +#include "vehicle.h" +#include "vpart_position.h" +#include "vpart_range.h" +#include "vpart_reference.h" +#include "weather.h" -#include -#include -#include #include #include +#include +#include +#include const mtype_id mon_zombie( "mon_zombie" ); @@ -73,9 +72,6 @@ static field nulfield; // Returned when &field_at() is asked static int null_temperature; // Because radiation does it too static level_cache nullcache; // Dummy cache for z-levels outside bounds -// Less for performance and more so that it's visible for when ter_t gets its string_id -static std::string null_ter_t = "t_null"; - // Map stack methods. std::list::iterator map_stack::erase( std::list::iterator it ) { @@ -360,7 +356,6 @@ bool map::vehproceed() VehicleList vehs = get_vehicles(); vehicle *cur_veh = nullptr; float max_of_turn = 0; - tripoint pt; // First horizontal movement for( auto &vehs_v : vehs ) { if( vehs_v.v->of_turn > max_of_turn ) { @@ -384,7 +379,7 @@ bool map::vehproceed() return false; } - return vehact( *cur_veh ); + return cur_veh->act_on_map(); } float map::vehicle_buoyancy( const vehicle &veh ) const @@ -702,7 +697,7 @@ float map::vehicle_vehicle_collision( vehicle &veh, vehicle &veh2, int coll_parts_cnt = 0; //quantity of colliding parts between veh1 and veh2 for( const auto &veh_veh_coll : collisions ) { - if( &veh2 == ( vehicle * )veh_veh_coll.target ) { + if( &veh2 == static_cast( veh_veh_coll.target ) ) { coll_parts_cnt++; } } @@ -712,7 +707,7 @@ float map::vehicle_vehicle_collision( vehicle &veh, vehicle &veh2, //damage colliding parts (only veh1 and veh2 parts) for( const auto &veh_veh_coll : collisions ) { - if( &veh2 != ( vehicle * )veh_veh_coll.target ) { + if( &veh2 != static_cast( veh_veh_coll.target ) ) { continue; } @@ -1078,7 +1073,7 @@ bool map::displace_water( const tripoint &p ) // 2D overloads for furniture // To be removed once not needed -void map::set( const int x, const int y, const ter_id new_terrain, const furn_id new_furniture ) +void map::set( const int x, const int y, const ter_id &new_terrain, const furn_id &new_furniture ) { furn_set( x, y, new_furniture ); ter_set( x, y, new_terrain ); @@ -1107,7 +1102,7 @@ furn_id map::furn( const int x, const int y ) const return current_submap->get_furn( lx, ly ); } -void map::furn_set( const int x, const int y, const furn_id new_furniture ) +void map::furn_set( const int x, const int y, const furn_id &new_furniture ) { furn_set( tripoint( x, y, abs_sub.z ), new_furniture ); } @@ -1118,7 +1113,7 @@ std::string map::furnname( const int x, const int y ) } // End of 2D overloads for furniture -void map::set( const tripoint &p, const ter_id new_terrain, const furn_id new_furniture ) +void map::set( const tripoint &p, const ter_id &new_terrain, const furn_id &new_furniture ) { furn_set( p, new_furniture ); ter_set( p, new_terrain ); @@ -1160,7 +1155,7 @@ furn_id map::furn( const tripoint &p ) const return current_submap->get_furn( lx, ly ); } -void map::furn_set( const tripoint &p, const furn_id new_furniture ) +void map::furn_set( const tripoint &p, const furn_id &new_furniture ) { if( !inbounds( p ) ) { return; @@ -1254,7 +1249,7 @@ ter_id map::ter( const int x, const int y ) const return current_submap->get_ter( lx, ly ); } -bool map::ter_set( const int x, const int y, const ter_id new_terrain ) +bool map::ter_set( const int x, const int y, const ter_id &new_terrain ) { return ter_set( tripoint( x, y, abs_sub.z ), new_terrain ); } @@ -1361,7 +1356,7 @@ bool map::is_harvestable( const tripoint &pos ) const /* * set terrain via string; this works for -any- terrain id */ -bool map::ter_set( const tripoint &p, const ter_id new_terrain ) +bool map::ter_set( const tripoint &p, const ter_id &new_terrain ) { if( !inbounds( p ) ) { return false; @@ -2271,29 +2266,18 @@ bool map::is_bashable( const tripoint &p, const bool allow_floor ) const } const auto &ter_bash = ter( p ).obj().bash; - if( ter_bash.str_max != -1 && ( !ter_bash.bash_below || allow_floor ) ) { - return true; - } - - return false; + return ter_bash.str_max != -1 && ( !ter_bash.bash_below || allow_floor ); } bool map::is_bashable_ter( const tripoint &p, const bool allow_floor ) const { const auto &ter_bash = ter( p ).obj().bash; - if( ter_bash.str_max != -1 && ( !ter_bash.bash_below || allow_floor ) ) { - return true; - } - - return false; + return ter_bash.str_max != -1 && ( !ter_bash.bash_below || allow_floor ); } bool map::is_bashable_furn( const tripoint &p ) const { - if( has_furn( p ) && furn( p ).obj().bash.str_max != -1 ) { - return true; - } - return false; + return has_furn( p ) && furn( p ).obj().bash.str_max != -1; } bool map::is_bashable_ter_furn( const tripoint &p, const bool allow_floor ) const @@ -2356,13 +2340,13 @@ void map::make_rubble( const tripoint &p ) make_rubble( p, f_rubble, false, t_dirt, false ); } -void map::make_rubble( const tripoint &p, const furn_id rubble_type, const bool items ) +void map::make_rubble( const tripoint &p, const furn_id &rubble_type, const bool items ) { make_rubble( p, rubble_type, items, t_dirt, false ); } -void map::make_rubble( const tripoint &p, furn_id rubble_type, bool items, ter_id floor_type, - bool overwrite ) +void map::make_rubble( const tripoint &p, const furn_id &rubble_type, const bool items, + const ter_id &floor_type, bool overwrite ) { if( overwrite ) { ter_set( p, floor_type ); @@ -2838,7 +2822,7 @@ void map::smash_items( const tripoint &p, const int power ) } } - for( auto it : contents ) { + for( const item &it : contents ) { add_item_or_charges( p, it ); } } @@ -3165,7 +3149,7 @@ bash_params map::bash( const tripoint &p, const int str, const vehicle *bashing_vehicle ) { bash_params bsh{ - str, silent, destroy, bash_floor, ( float )rng_float( 0, 1.0f ), false, false, false + str, silent, destroy, bash_floor, static_cast( rng_float( 0, 1.0f ) ), false, false, false }; if( !inbounds( p ) ) { return bsh; @@ -3201,7 +3185,7 @@ void map::bash_items( const tripoint &p, bash_params ¶ms ) if( bashed_item->made_of( material_id( "glass" ) ) && !bashed_item->active && one_in( 2 ) ) { params.did_bash = true; smashed_glass = true; - for( auto bashed_content : bashed_item->contents ) { + for( const item &bashed_content : bashed_item->contents ) { smashed_contents.push_back( bashed_content ); } bashed_item = bashed_items.erase( bashed_item ); @@ -3652,7 +3636,7 @@ bool map::open_door( const tripoint &p, const bool inside, const bool check_only return false; } -void map::translate( const ter_id from, const ter_id to ) +void map::translate( const ter_id &from, const ter_id &to ) { if( from == to ) { debugmsg( "map::translate %s => %s", @@ -3674,7 +3658,7 @@ void map::translate( const ter_id from, const ter_id to ) } //This function performs the translate function within a given radius of the player. -void map::translate_radius( const ter_id from, const ter_id to, float radi, const tripoint &p, +void map::translate_radius( const ter_id &from, const ter_id &to, float radi, const tripoint &p, const bool same_submap ) { if( from == to ) { @@ -3939,7 +3923,7 @@ int map::i_rem( const tripoint &p, const int index ) return index; } - if( index >= ( int )i_at( p ).size() ) { + if( index >= static_cast( i_at( p ).size() ) ) { return index; } @@ -4005,7 +3989,7 @@ std::vector map::spawn_items( const tripoint &p, const std::vector return ret; } const bool swimmable = has_flag( "SWIMMABLE", p ); - for( auto new_item : new_items ) { + for( const item &new_item : new_items ) { if( new_item.made_of( LIQUID ) && swimmable ) { continue; @@ -4461,11 +4445,11 @@ void map::process_items_in_vehicle( vehicle &cur_veh, submap ¤t_submap, co map::map_process_func processor, std::string const &signal ) { const bool engine_heater_is_on = cur_veh.has_part( "E_HEATER", true ) && cur_veh.engine_on; - for( const vpart_reference &vp : cur_veh.get_parts_including_broken( VPFLAG_FLUIDTANK ) ) { + for( const vpart_reference &vp : cur_veh.get_any_parts( VPFLAG_FLUIDTANK ) ) { vp.part().process_contents( vp.pos(), engine_heater_is_on ); } - auto cargo_parts = cur_veh.get_parts( VPFLAG_CARGO ); + auto cargo_parts = cur_veh.get_parts_including_carried( VPFLAG_CARGO ); for( const vpart_reference &vp : cargo_parts ) { process_vehicle_items( cur_veh, vp.part_index() ); } @@ -4527,7 +4511,7 @@ void map::process_items_in_vehicle( vehicle &cur_veh, submap ¤t_submap, co // the list of cargo parts might have changed (imagine a part with // a low index has been removed by an explosion, all the other // parts would move up to fill the gap). - cargo_parts = cur_veh.get_parts_including_broken( VPFLAG_CARGO ); + cargo_parts = cur_veh.get_any_parts( VPFLAG_CARGO ); } } @@ -5285,7 +5269,7 @@ void map::add_splatter( const field_id type, const tripoint &where, int intensit if( const optional_vpart_position vp = veh_at( where ) ) { vehicle *const veh = &vp->vehicle(); // Might be -1 if all the vehicle's parts at where are marked for removal - const int part = veh->part_displayed_at( vp->mount().x, vp->mount().y ); + const int part = veh->part_displayed_at( vp->mount() ); if( part != -1 ) { veh->parts[part].blood += 200 * std::min( intensity, 3 ) / 3; return; @@ -5377,9 +5361,9 @@ void map::add_camp( const tripoint &p, const std::string &name ) void map::update_visibility_cache( const int zlev ) { visibility_variables_cache.variables_set = true; // Not used yet - visibility_variables_cache.g_light_level = ( int )g->light_level( zlev ); + visibility_variables_cache.g_light_level = static_cast( g->light_level( zlev ) ); visibility_variables_cache.vision_threshold = g->u.get_vision_threshold( - get_cache_ref( g->u.posz() ).lm[g->u.posx()][g->u.posy()] ); + get_cache_ref( g->u.posz() ).lm[g->u.posx()][g->u.posy()].max() ); visibility_variables_cache.u_clairvoyance = g->u.clairvoyance(); visibility_variables_cache.u_sight_impaired = g->u.sight_impaired(); @@ -5419,58 +5403,6 @@ const visibility_variables &map::get_visibility_variables_cache() const return visibility_variables_cache; } -lit_level map::apparent_light_at( const tripoint &p, const visibility_variables &cache ) const -{ - const int dist = rl_dist( g->u.pos(), p ); - - // Clairvoyance overrides everything. - if( dist <= cache.u_clairvoyance ) { - return LL_BRIGHT; - } - const auto &map_cache = get_cache_ref( p.z ); - const float vis = std::max( map_cache.seen_cache[p.x][p.y], map_cache.camera_cache[p.x][p.y] ); - const bool obstructed = vis <= LIGHT_TRANSPARENCY_SOLID + 0.1; - const float apparent_light = vis * map_cache.lm[p.x][p.y]; - - // Unimpaired range is an override to strictly limit vision range based on various conditions, - // but the player can still see light sources. - if( dist > g->u.unimpaired_range() ) { - if( !obstructed && map_cache.sm[p.x][p.y] > 0.0 ) { - return LL_BRIGHT_ONLY; - } else { - return LL_DARK; - } - } - if( obstructed ) { - if( apparent_light > LIGHT_AMBIENT_LIT ) { - if( apparent_light > cache.g_light_level ) { - // This represents too hazy to see detail, - // but enough light getting through to illuminate. - return LL_BRIGHT_ONLY; - } else { - // If it's not brighter than the surroundings, it just ends up shadowy. - return LL_LOW; - } - } else { - return LL_BLANK; - } - } - // Then we just search for the light level in descending order. - if( apparent_light > LIGHT_SOURCE_BRIGHT || map_cache.sm[p.x][p.y] > 0.0 ) { - return LL_BRIGHT; - } - if( apparent_light > LIGHT_AMBIENT_LIT ) { - return LL_LIT; - } - if( apparent_light > cache.vision_threshold ) { - return LL_LOW; - } else { - return LL_BLANK; - } - // Is this ever supposed to happen? - return LL_DARK; -} - visibility_type map::get_visibility( const lit_level ll, const visibility_variables &cache ) const { switch( ll ) { @@ -5724,7 +5656,7 @@ bool map::draw_maptile( const catacurses::window &w, player &u, const tripoint & const field_id &fid = curr_field.fieldSymbol(); const field_entry *fe = curr_field.findField( fid ); const field_t &f = fieldlist[fid]; - if( f.sym == '&' || fe == NULL ) { + if( f.sym == '&' || fe == nullptr ) { // Do nothing, a '&' indicates invisible fields. } else if( f.sym == '*' ) { // A random symbol. @@ -6414,8 +6346,8 @@ void map::loadn( const int gridx, const int gridy, const int gridz, const bool u static const oter_id rock( "empty_rock" ); static const oter_id air( "open_air" ); - dbg( D_INFO ) << "map::loadn(game[" << g << "], worldx[" << abs_sub.x << "], worldy[" << abs_sub.y - << "], gridx[" + dbg( D_INFO ) << "map::loadn(game[" << g.get() << "], worldx[" << abs_sub.x + << "], worldy[" << abs_sub.y << "], gridx[" << gridx << "], gridy[" << gridy << "], gridz[" << gridz << "])"; const int absx = abs_sub.x + gridx, @@ -7397,7 +7329,7 @@ void map::build_obstacle_cache( const tripoint &start, const tripoint &end, VehicleList vehs = get_vehicles( start, end ); // Cache all the vehicle stuff in one loop for( auto &v : vehs ) { - for( const vpart_reference &vp : v.v->get_parts() ) { + for( const vpart_reference &vp : v.v->get_all_parts() ) { int px = v.x + vp.part().precalc[0].x; int py = v.y + vp.part().precalc[0].y; if( v.z != sz ) { @@ -7488,7 +7420,7 @@ void map::build_map_cache( const int zlev, bool skip_lightmap ) auto &outside_cache = ch.outside_cache; auto &transparency_cache = ch.transparency_cache; auto &floor_cache = ch.floor_cache; - for( const vpart_reference &vp : v.v->get_parts() ) { + for( const vpart_reference &vp : v.v->get_all_parts() ) { const size_t part = vp.part_index(); int px = v.x + vp.part().precalc[0].x; int py = v.y + vp.part().precalc[0].y; @@ -7496,17 +7428,22 @@ void map::build_map_cache( const int zlev, bool skip_lightmap ) continue; } - if( vp.is_inside() ) { - outside_cache[px][py] = false; - } + bool vehicle_is_opaque = + vp.has_feature( VPFLAG_OPAQUE ) && !vp.part().is_broken(); - if( vp.has_feature( VPFLAG_OPAQUE ) && !vp.part().is_broken() ) { + if( vehicle_is_opaque ) { int dpart = v.v->part_with_feature( part, VPFLAG_OPENABLE, true ); if( dpart < 0 || !v.v->parts[dpart].open ) { transparency_cache[px][py] = LIGHT_TRANSPARENCY_SOLID; + } else { + vehicle_is_opaque = false; } } + if( vehicle_is_opaque || vp.is_inside() ) { + outside_cache[px][py] = false; + } + if( vp.has_feature( VPFLAG_BOARDABLE ) && !vp.part().is_broken() ) { floor_cache[px][py] = true; } @@ -7978,7 +7915,7 @@ void map::scent_blockers( std::array, SEEY *MAPS auto vehs = get_vehicles(); for( auto &wrapped_veh : vehs ) { vehicle &veh = *( wrapped_veh.v ); - for( const vpart_reference &vp : veh.get_parts( VPFLAG_OBSTACLE ) ) { + for( const vpart_reference &vp : veh.get_any_parts( VPFLAG_OBSTACLE ) ) { const tripoint part_pos = vp.pos(); if( local_bounds( part_pos ) ) { reduces_scent[part_pos.x][part_pos.y] = true; @@ -7986,7 +7923,7 @@ void map::scent_blockers( std::array, SEEY *MAPS } // Doors, but only the closed ones - for( const vpart_reference &vp : veh.get_parts( VPFLAG_OPENABLE ) ) { + for( const vpart_reference &vp : veh.get_any_parts( VPFLAG_OPENABLE ) ) { if( vp.part().open ) { continue; } @@ -8078,7 +8015,8 @@ level_cache::level_cache() transparency_cache_dirty = true; outside_cache_dirty = true; floor_cache_dirty = false; - std::fill_n( &lm[0][0], map_dimensions, 0.0f ); + constexpr four_quadrants four_zeros( 0.0f ); + std::fill_n( &lm[0][0], map_dimensions, four_zeros ); std::fill_n( &sm[0][0], map_dimensions, 0.0f ); std::fill_n( &light_source_buffer[0][0], map_dimensions, 0.0f ); std::fill_n( &outside_cache[0][0], map_dimensions, false ); diff --git a/src/map.h b/src/map.h index 4b42a6252d387..0ec848a1ebc69 100644 --- a/src/map.h +++ b/src/map.h @@ -2,22 +2,22 @@ #ifndef MAP_H #define MAP_H -#include -#include -#include -#include -#include -#include -#include -#include - +#include "calendar.h" +#include "enums.h" #include "game_constants.h" -#include "lightmap.h" -#include "item_stack.h" #include "int_id.h" +#include "item_stack.h" +#include "lightmap.h" +#include "shadowcasting.h" #include "string_id.h" -#include "enums.h" -#include "calendar.h" + +#include +#include +#include +#include +#include +#include +#include //TODO: include comments about how these variables work. Where are they used. Are they constant etc. #define CAMPSIZE 1 @@ -121,7 +121,7 @@ class map_stack : public item_stack map *myorigin; public: map_stack( std::list *newstack, tripoint newloc, map *neworigin ) : - item_stack( newstack ), location( newloc ), myorigin( neworigin ) {}; + item_stack( newstack ), location( newloc ), myorigin( neworigin ) {} std::list::iterator erase( std::list::iterator it ) override; void push_back( const item &newitem ) override; void insert_at( std::list::iterator index, const item &newitem ) override; @@ -169,7 +169,7 @@ struct level_cache { bool outside_cache_dirty; bool floor_cache_dirty; - float lm[MAPSIZE * SEEX][MAPSIZE * SEEY]; + four_quadrants lm[MAPSIZE * SEEX][MAPSIZE * SEEY]; float sm[MAPSIZE * SEEX][MAPSIZE * SEEY]; // To prevent redundant ray casting into neighbors: precalculate bulk light source positions. // This is only valid for the duration of generate_lightmap @@ -255,6 +255,14 @@ class map */ void on_vehicle_moved( const int zlev ); + struct apparent_light_info { + bool obstructed; + float apparent_light; + }; + /** Helper function for light claculation; exposed here for map editor + */ + static apparent_light_info apparent_light_helper( const level_cache &map_cache, + const tripoint &p ); /** Determine the visible light level for a tile, based on light_at * for the tile, vision distance, etc * @@ -533,7 +541,7 @@ class map void move_vehicle( vehicle &veh, const tripoint &dp, const tileray &facing ); // Furniture: 2D overloads - void set( const int x, const int y, const ter_id new_terrain, const furn_id new_furniture ); + void set( const int x, const int y, const ter_id &new_terrain, const furn_id &new_furniture ); std::string name( const int x, const int y ); bool has_furn( const int x, const int y ) const; @@ -541,11 +549,11 @@ class map // Furniture at coordinates (x, y); {x|y}=(0, SEE{X|Y}*3] furn_id furn( const int x, const int y ) const; - void furn_set( const int x, const int y, const furn_id new_furniture ); + void furn_set( const int x, const int y, const furn_id &new_furniture ); std::string furnname( const int x, const int y ); // Furniture: 3D - void set( const tripoint &p, const ter_id new_terrain, const furn_id new_furniture ); + void set( const tripoint &p, const ter_id &new_terrain, const furn_id &new_furniture ); std::string name( const tripoint &p ); std::string disp_name( const tripoint &p ); @@ -558,7 +566,7 @@ class map furn_id furn( const tripoint &p ) const; - void furn_set( const tripoint &p, const furn_id new_furniture ); + void furn_set( const tripoint &p, const furn_id &new_furniture ); std::string furnname( const tripoint &p ); bool can_move_furniture( const tripoint &pos, player *p = nullptr ); @@ -566,7 +574,7 @@ class map // Terrain integer id at coordinates (x, y); {x|y}=(0, SEE{X|Y}*3] ter_id ter( const int x, const int y ) const; - bool ter_set( const int x, const int y, const ter_id new_terrain ); + bool ter_set( const int x, const int y, const ter_id &new_terrain ); std::string tername( const int x, const int y ) const; // Name of terrain at (x, y) // Terrain: 3D @@ -581,7 +589,7 @@ class map const std::set &get_harvest_names( const tripoint &p ) const; ter_id get_ter_transforms_into( const tripoint &p ) const; - bool ter_set( const tripoint &p, const ter_id new_terrain ); + bool ter_set( const tripoint &p, const ter_id &new_terrain ); std::string tername( const tripoint &p ) const; @@ -694,10 +702,10 @@ class map /** Generates rubble at the given location, if overwrite is true it just writes on top of what currently exists * floor_type is only used if there is a non-bashable wall at the location or with overwrite = true */ - void make_rubble( const tripoint &p, furn_id rubble_type, bool items, - ter_id floor_type, bool overwrite = false ); + void make_rubble( const tripoint &p, const furn_id &rubble_type, const bool items, + const ter_id &floor_type, bool overwrite = false ); void make_rubble( const tripoint &p ); - void make_rubble( const tripoint &p, furn_id rubble_type, bool items ); + void make_rubble( const tripoint &p, const furn_id &rubble_type, const bool items ); bool is_divable( const int x, const int y ) const; bool is_outside( const int x, const int y ) const; @@ -743,9 +751,10 @@ class map void add_corpse( const tripoint &p ); // Terrain changing functions - void translate( const ter_id from, const ter_id to ); // Change all instances of $from->$to + // Change all instances of $from->$to + void translate( const ter_id &from, const ter_id &to ); // Change all instances $from->$to within this radius, optionally limited to locations in the same submap. - void translate_radius( const ter_id from, const ter_id to, const float radi, const tripoint &p, + void translate_radius( const ter_id &from, const ter_id &to, const float radi, const tripoint &p, const bool same_submap = false ); bool close_door( const tripoint &p, const bool inside, const bool check_only ); bool open_door( const tripoint &p, const bool inside, const bool check_only = false ); @@ -1244,7 +1253,7 @@ class map int getmapsize() const { return my_MAPSIZE; - }; + } bool has_zlevels() const { return zlevels; } @@ -1342,11 +1351,11 @@ class map void shift_traps( const tripoint &shift ); void copy_grid( const tripoint &to, const tripoint &from ); - void draw_map( const oter_id terrain_type, const oter_id t_north, const oter_id t_east, - const oter_id t_south, const oter_id t_west, const oter_id t_neast, - const oter_id t_seast, const oter_id t_swest, const oter_id t_nwest, - const oter_id t_above, const oter_id t_below, const time_point &when, const float density, - const int zlevel, const regional_settings *rsettings ); + void draw_map( const oter_id &terrain_type, const oter_id &t_north, const oter_id &t_east, + const oter_id &t_south, const oter_id &t_west, const oter_id &t_neast, + const oter_id &t_seast, const oter_id &t_swest, const oter_id &t_nwest, + const oter_id &t_above, const oter_id &t_below, const time_point &when, + const float density, const int zlevel, const regional_settings *rsettings ); void build_transparency_cache( int zlev ); public: @@ -1454,7 +1463,6 @@ class map bool low_light, bool bright_light, bool inorder ) const; long determine_wall_corner( const tripoint &p ) const; - void cache_seen( const int fx, const int fy, const int tx, const int ty, const int max_range ); // apply a circular light pattern immediately, however it's best to use... void apply_light_source( const tripoint &p, float luminance ); // ...this, which will apply the light after at the end of generate_lightmap, and prevent redundant diff --git a/src/map_extras.cpp b/src/map_extras.cpp index 6b1f9587579ec..bac196e6ae33d 100644 --- a/src/map_extras.cpp +++ b/src/map_extras.cpp @@ -4,22 +4,18 @@ #include "field.h" #include "fungal_effects.h" #include "game.h" -#include "item_group.h" #include "map.h" -#include "map_iterator.h" #include "mapdata.h" #include "mapgen_functions.h" -#include "mongroup.h" -#include "mtype.h" -#include "vpart_range.h" #include "omdata.h" #include "overmapbuffer.h" #include "rng.h" #include "trap.h" +#include "veh_type.h" #include "vehicle.h" #include "vehicle_group.h" #include "vpart_position.h" -#include "veh_type.h" +#include "vpart_range.h" namespace MapExtras { @@ -129,6 +125,11 @@ void mx_helicopter( map &m, const tripoint &abs_sub ) vehicle *wreckage = m.add_vehicle( crashed_hull, tripoint( x1, y1, abs_sub.z ), dir1, rng( 1, 33 ), 1 ); + const auto controls_at = []( vehicle * wreckage, const tripoint & pos ) { + return !wreckage->get_parts_at( pos, "CONTROLS", part_status_flag::any ).empty() || + !wreckage->get_parts_at( pos, "CTRL_ELECTRONIC", part_status_flag::any ).empty(); + }; + if( wreckage != nullptr ) { const int clowncar_factor = dice( 1, 8 ); @@ -136,11 +137,10 @@ void mx_helicopter( map &m, const tripoint &abs_sub ) case 1: case 2: case 3: // Full clown car - for( const vpart_reference &vp : wreckage->get_parts_including_broken( VPFLAG_SEATBELT ) ) { + for( const vpart_reference &vp : wreckage->get_any_parts( VPFLAG_SEATBELT ) ) { const tripoint pos = vp.pos(); // Spawn pilots in seats with controls.CTRL_ELECTRONIC - if( wreckage->get_parts( pos, "CONTROLS", false, true ).size() > 0 || - wreckage->get_parts( pos, "CTRL_ELECTRONIC", false, true ).size() > 0 ) { + if( controls_at( wreckage, pos ) ) { m.add_spawn( mon_zombie_military_pilot, 1, pos.x, pos.y ); } else { if( one_in( 5 ) ) { @@ -164,11 +164,10 @@ void mx_helicopter( map &m, const tripoint &abs_sub ) break; case 4: case 5: // 2/3rds clown car - for( const vpart_reference &vp : wreckage->get_parts_including_broken( VPFLAG_SEATBELT ) ) { + for( const vpart_reference &vp : wreckage->get_any_parts( VPFLAG_SEATBELT ) ) { const tripoint pos = vp.pos(); // Spawn pilots in seats with controls. - if( wreckage->get_parts( pos, "CONTROLS", false, true ).size() > 0 || - wreckage->get_parts( pos, "CTRL_ELECTRONIC", false, true ).size() > 0 ) { + if( controls_at( wreckage, pos ) ) { m.add_spawn( mon_zombie_military_pilot, 1, pos.x, pos.y ); } else { if( !one_in( 3 ) ) { @@ -187,7 +186,7 @@ void mx_helicopter( map &m, const tripoint &abs_sub ) } break; case 6: // Just pilots - for( const vpart_reference &vp : wreckage->get_parts_including_broken( VPFLAG_CONTROLS ) ) { + for( const vpart_reference &vp : wreckage->get_any_parts( VPFLAG_CONTROLS ) ) { const tripoint pos = vp.pos(); m.add_spawn( mon_zombie_military_pilot, 1, pos.x, pos.y ); @@ -840,9 +839,9 @@ map_special_pointer get_function( const std::string &name ) const auto iter = builtin_functions.find( name ); if( iter == builtin_functions.end() ) { debugmsg( "no map special with name %s", name.c_str() ); - return NULL; + return nullptr; } return iter->second; } -}; +} diff --git a/src/map_extras.h b/src/map_extras.h index 1e4b02e43aa04..728c7ca7f726e 100644 --- a/src/map_extras.h +++ b/src/map_extras.h @@ -7,6 +7,6 @@ namespace MapExtras { map_special_pointer get_function( const std::string &name ); -}; +} #endif diff --git a/src/map_item_stack.h b/src/map_item_stack.h index ad707c6d1c6b8..a2e8fd83acff1 100644 --- a/src/map_item_stack.h +++ b/src/map_item_stack.h @@ -4,8 +4,8 @@ #include "enums.h" -#include #include +#include class item; diff --git a/src/map_iterator.h b/src/map_iterator.h index ee083410ffddb..c4218ef8b05c7 100644 --- a/src/map_iterator.h +++ b/src/map_iterator.h @@ -2,9 +2,10 @@ #ifndef MAP_ITERATOR_H #define MAP_ITERATOR_H -#include #include "enums.h" +#include + class tripoint_range { private: diff --git a/src/map_memory.cpp b/src/map_memory.cpp index f09b3e29d2223..b873111d3f118 100644 --- a/src/map_memory.cpp +++ b/src/map_memory.cpp @@ -1,7 +1,5 @@ #include "map_memory.h" -#include - template T lru_cache::get( const tripoint &pos, const T &default_ ) const { diff --git a/src/map_memory.h b/src/map_memory.h index beb26644b8d15..b5e3fe4fa4cf3 100644 --- a/src/map_memory.h +++ b/src/map_memory.h @@ -52,7 +52,6 @@ class map_memory void memorize_symbol( int limit, const tripoint &pos, const long symbol ); long get_symbol( const tripoint &p ) const; private: - void trim( int limit ); lru_cache tile_cache; lru_cache symbol_cache; }; diff --git a/src/map_selector.cpp b/src/map_selector.cpp index db09ff5a55db6..8951f2d50eb07 100644 --- a/src/map_selector.cpp +++ b/src/map_selector.cpp @@ -2,9 +2,9 @@ #include "game.h" #include "map.h" +#include "map_iterator.h" #include "optional.h" #include "rng.h" -#include "map_iterator.h" #include diff --git a/src/map_selector.h b/src/map_selector.h index b3040d401cf71..d6a1e80893a76 100644 --- a/src/map_selector.h +++ b/src/map_selector.h @@ -2,17 +2,17 @@ #ifndef MAP_SELECTOR_H #define MAP_SELECTOR_H -#include - -#include "visitable.h" #include "enums.h" +#include "visitable.h" + +#include class map; class map_cursor : public tripoint, public visitable { public: - map_cursor( const tripoint &pos ) : tripoint( pos ) {}; + map_cursor( const tripoint &pos ) : tripoint( pos ) {} }; class map_selector : public visitable diff --git a/src/mapbuffer.cpp b/src/mapbuffer.cpp index 52e87d6b5546f..4881b72be55c0 100644 --- a/src/mapbuffer.cpp +++ b/src/mapbuffer.cpp @@ -1,20 +1,19 @@ #include "mapbuffer.h" +#include "cata_utility.h" +#include "computer.h" #include "coordinate_conversions.h" -#include "output.h" #include "debug.h" -#include "translations.h" #include "filesystem.h" -#include "overmapbuffer.h" -#include "cata_utility.h" -#include "mapdata.h" #include "game.h" #include "json.h" #include "map.h" +#include "mapdata.h" +#include "output.h" +#include "submap.h" +#include "translations.h" #include "trap.h" #include "vehicle.h" -#include "submap.h" -#include "computer.h" #include @@ -94,7 +93,7 @@ submap *mapbuffer::lookup_submap( const tripoint &p ) } catch( const std::exception &err ) { debugmsg( "Failed to load submap (%d,%d,%d): %s", p.x, p.y, p.z, err.what() ); } - return NULL; + return nullptr; } return iter->second; @@ -436,12 +435,12 @@ submap *mapbuffer::unserialize_submaps( const tripoint &p ) if( !read_from_file_optional_json( quad_path.str(), std::bind( &mapbuffer::deserialize, this, _1 ) ) ) { // If it doesn't exist, trigger generating it. - return NULL; + return nullptr; } if( submaps.count( p ) == 0 ) { debugmsg( "file %s did not contain the expected submap %d,%d,%d", quad_path.str().c_str(), p.x, p.y, p.z ); - return NULL; + return nullptr; } return submaps[ p ]; } @@ -610,7 +609,7 @@ void mapbuffer::deserialize( JsonIn &jsin ) int type = jsin.get_int(); int density = jsin.get_int(); int age = jsin.get_int(); - if( sm->fld[i][j].findField( field_id( type ) ) == NULL ) { + if( sm->fld[i][j].findField( field_id( type ) ) == nullptr ) { sm->field_count++; } sm->fld[i][j].addField( field_id( type ), density, time_duration::from_turns( age ) ); @@ -679,7 +678,7 @@ void mapbuffer::deserialize( JsonIn &jsin ) std::string computer_data = jsin.get_string(); std::unique_ptr new_comp( new computer( "BUGGED_COMPUTER", -100 ) ); new_comp->load_data( computer_data ); - sm->comp.reset( new_comp.release() ); + sm->comp = std::move( new_comp ); } else if( submap_member_name == "camp" ) { std::string camp_data = jsin.get_string(); sm->camp.load_data( camp_data ); diff --git a/src/mapbuffer.h b/src/mapbuffer.h index 96cab4b46c6bb..24da15215c53a 100644 --- a/src/mapbuffer.h +++ b/src/mapbuffer.h @@ -2,11 +2,13 @@ #ifndef MAPBUFFER_H #define MAPBUFFER_H -#include +#include "enums.h" + #include +#include #include #include -#include "enums.h" + struct point; struct tripoint; struct submap; diff --git a/src/mapdata.cpp b/src/mapdata.cpp index 12870fbd55f8f..41393f369e78d 100644 --- a/src/mapdata.cpp +++ b/src/mapdata.cpp @@ -1,19 +1,17 @@ #include "mapdata.h" +#include "calendar.h" #include "color.h" -#include "init.h" +#include "debug.h" #include "game_constants.h" -#include "string_formatter.h" #include "generic_factory.h" #include "harvest.h" -#include "debug.h" -#include "translations.h" -#include "output.h" -#include "item.h" +#include "iexamine.h" #include "item_group.h" -#include "calendar.h" +#include "output.h" +#include "string_formatter.h" +#include "translations.h" #include "trap.h" -#include "iexamine.h" #include @@ -184,7 +182,7 @@ map_bash_info::map_bash_info() : str_min( -1 ), str_max( -1 ), explosive( 0 ), sound_vol( -1 ), sound_fail_vol( -1 ), collapse_radius( 1 ), destroy_only( false ), bash_below( false ), drop_group( "EMPTY_GROUP" ), - ter_set( ter_str_id::NULL_ID() ), furn_set( furn_str_id::NULL_ID() ) {}; + ter_set( ter_str_id::NULL_ID() ), furn_set( furn_str_id::NULL_ID() ) {} bool map_bash_info::load( JsonObject &jsobj, const std::string &member, bool is_furniture ) { @@ -237,7 +235,7 @@ bool map_bash_info::load( JsonObject &jsobj, const std::string &member, bool is_ } map_deconstruct_info::map_deconstruct_info() : can_do( false ), deconstruct_above( false ), - ter_set( ter_str_id::NULL_ID() ), furn_set( furn_str_id::NULL_ID() ) {}; + ter_set( ter_str_id::NULL_ID() ), furn_set( furn_str_id::NULL_ID() ) {} bool map_deconstruct_info::load( JsonObject &jsobj, const std::string &member, bool is_furniture ) { @@ -275,7 +273,7 @@ furn_t null_furniture_t() ter_t::ter_t() : open( ter_str_id::NULL_ID() ), close( ter_str_id::NULL_ID() ), transforms_into( ter_str_id::NULL_ID() ), - roof( ter_str_id::NULL_ID() ), trap( tr_null ) {}; + roof( ter_str_id::NULL_ID() ), trap( tr_null ) {} ter_t null_terrain_t() { @@ -341,7 +339,7 @@ void map_data_common_t::load_symbol( JsonObject &jo ) } else if( str.length() != 1 ) { jo.throw_error( "Symbol string must be exactly 1 character long.", "symbol" ); } - return ( int ) str[0]; + return static_cast( str[0] ); } ); const bool has_color = jo.has_member( "color" ); @@ -1037,7 +1035,7 @@ void map_data_common_t::load( JsonObject &jo, const std::string &src ) // @todo: A better inline name - can't use id or name here because it's not set yet size_t num = harvest_list::all().size() + 1; hl = harvest_list::load( harvest_jo, src, - string_format( "harvest_inline_%d", ( int )num ) ); + string_format( "harvest_inline_%d", static_cast( num ) ) ); } else if( harvest_jo.has_string( "id" ) ) { hl = harvest_id( harvest_jo.get_string( "id" ) ); } else { @@ -1147,7 +1145,7 @@ void ter_t::check() const } } -furn_t::furn_t() : open( furn_str_id::NULL_ID() ), close( furn_str_id::NULL_ID() ) {}; +furn_t::furn_t() : open( furn_str_id::NULL_ID() ), close( furn_str_id::NULL_ID() ) {} size_t furn_t::count() { diff --git a/src/mapdata.h b/src/mapdata.h index f023c1736c23f..fbe5741e53d95 100644 --- a/src/mapdata.h +++ b/src/mapdata.h @@ -2,16 +2,15 @@ #ifndef MAPDATA_H #define MAPDATA_H +#include "color.h" #include "int_id.h" #include "string_id.h" #include "units.h" -#include "color.h" +#include #include -#include #include -#include -#include +#include class JsonObject; struct itype; diff --git a/src/mapgen.cpp b/src/mapgen.cpp index e62d12015f928..2a08762abaeb5 100644 --- a/src/mapgen.cpp +++ b/src/mapgen.cpp @@ -1,52 +1,47 @@ #include "mapgen.h" +#include "ammo.h" +#include "catalua.h" +#include "computer.h" #include "coordinate_conversions.h" +#include "coordinates.h" +#include "debug.h" #include "drawing_primitives.h" -#include "omdata.h" -#include "output.h" +#include "enums.h" #include "game.h" -#include "fungal_effects.h" -#include "rng.h" -#include "line.h" -#include "debug.h" -#include "options.h" -#include "vpart_range.h" -#include "ammo.h" #include "item_group.h" -#include "mapgen_functions.h" -#include "string_formatter.h" -#include "mapgenformat.h" -#include "mapbuffer.h" -#include "overmapbuffer.h" -#include "enums.h" -#include "monstergenerator.h" -#include "vpart_position.h" -#include "mongroup.h" +#include "json.h" +#include "line.h" #include "map.h" #include "map_extras.h" -#include "translations.h" -#include "trap.h" -#include "submap.h" +#include "map_iterator.h" #include "mapdata.h" -#include "overmap.h" #include "mapgen_functions.h" +#include "mapgenformat.h" +#include "mongroup.h" #include "mtype.h" -#include "itype.h" -#include "computer.h" +#include "npc.h" +#include "omdata.h" #include "optional.h" -#include "map_iterator.h" +#include "options.h" +#include "output.h" +#include "overmap.h" +#include "overmapbuffer.h" +#include "rng.h" +#include "string_formatter.h" +#include "submap.h" +#include "text_snippets.h" +#include "translations.h" +#include "trap.h" +#include "vehicle.h" +#include "vehicle_group.h" +#include "vpart_position.h" +#include "vpart_range.h" #include #include #include #include -#include "json.h" -#include "coordinates.h" -#include "npc.h" -#include "vehicle.h" -#include "vehicle_group.h" -#include "catalua.h" -#include "text_snippets.h" #define dbg(x) DebugLog((DebugLevel)(x),D_MAP_GEN) << __FILE__ << ":" << __LINE__ << ": " @@ -106,7 +101,7 @@ const mtype_id mon_zombie_soldier( "mon_zombie_soldier" ); const mtype_id mon_zombie_spitter( "mon_zombie_spitter" ); const mtype_id mon_zombie_tough( "mon_zombie_tough" ); -bool connects_to( oter_id there, int dir_from_here ); +bool connects_to( const oter_id &there, int dir_from_here ); void science_room( map *m, int x1, int y1, int x2, int y2, int z, int rotate ); void set_science_room( map *m, int x1, int y1, bool faces_right, const time_point &when ); void silo_rooms( map *m ); @@ -119,7 +114,7 @@ void mtrap_set( map *m, int x, int y, trap_id t ); // x%2 and y%2 must be 0! void map::generate( const int x, const int y, const int z, const time_point &when ) { - dbg( D_INFO ) << "map::generate( g[" << g << "], x[" << x << "], " + dbg( D_INFO ) << "map::generate( g[" << g.get() << "], x[" << x << "], " << "y[" << y << "], z[" << z << "], when[" << to_string( when ) << "] )"; set_abs_sub( x, y, z ); @@ -170,11 +165,11 @@ void map::generate( const int x, const int y, const int z, const time_point &whe map_extras ex = region_settings_map["default"].region_extras[terrain_type->get_extras()]; if( ex.chance > 0 && one_in( ex.chance ) ) { std::string *extra = ex.values.pick(); - if( extra == NULL ) { + if( extra == nullptr ) { debugmsg( "failed to pick extra for type %s", terrain_type->get_extras().c_str() ); } else { auto func = MapExtras::get_function( *( ex.values.pick() ) ); - if( func != NULL ) { + if( func != nullptr ) { func( *this, abs_sub ); } } @@ -298,7 +293,7 @@ load_mapgen_function( JsonObject &jio, const std::string &id_base, } } } - return NULL; // nothing + return nullptr; // nothing } else if( jio.has_string( "method" ) ) { const std::string mgtype = jio.get_string( "method" ); if( mgtype == "builtin" ) { // c-function @@ -320,7 +315,7 @@ load_mapgen_function( JsonObject &jio, const std::string &id_base, ret = std::make_shared( mgscript, mgweight ); oter_mapgen[id_base].push_back( ret ); } else if( jio.has_array( "script" ) ) { // or 1 line per entry array - std::string mgscript = ""; + std::string mgscript; JsonArray jascr = jio.get_array( "script" ); while( jascr.has_more() ) { mgscript += jascr.next_string(); @@ -466,8 +461,6 @@ mapgen_function_json_base::mapgen_function_json_base( const std::string &s ) , mapgensize_y( 24 ) , x_offset( 0 ) , y_offset( 0 ) - , format() - , setmap_points() , objects( 0, 0, mapgensize_x, mapgensize_y ) { } @@ -542,7 +535,7 @@ int jmapgen_int::get() const */ void mapgen_function_json_base::setup_setmap( JsonArray &parray ) { - std::string tmpval = ""; + std::string tmpval; std::map setmap_opmap; setmap_opmap[ "terrain" ] = JMAPGEN_SETMAP_TER; setmap_opmap[ "furniture" ] = JMAPGEN_SETMAP_FURN; @@ -840,7 +833,7 @@ class jmapgen_gaspump : public jmapgen_piece jmapgen_int amount; std::string fuel; jmapgen_gaspump( JsonObject &jsi ) : jmapgen_piece() - , amount( jsi, "amount", 0, 0 ), fuel() { + , amount( jsi, "amount", 0, 0 ) { if( jsi.has_string( "fuel" ) ) { fuel = jsi.get_string( "fuel" ); @@ -1351,7 +1344,7 @@ class jmapgen_nested : public jmapgen_piece } bool this_direction_matches = false; - for( oter_str_id allowed_neighbor : allowed_neighbors ) { + for( const oter_str_id &allowed_neighbor : allowed_neighbors ) { this_direction_matches |= is_ot_subtype( allowed_neighbor.c_str(), dat.neighbor_at( dir ).id() ); } all_directions_match &= this_direction_matches; @@ -1359,7 +1352,7 @@ class jmapgen_nested : public jmapgen_piece if( !above.empty() ) { bool above_matches = false; - for( oter_str_id allowed_neighbor : above ) { + for( const oter_str_id &allowed_neighbor : above ) { above_matches |= is_ot_subtype( allowed_neighbor.c_str(), dat.above().id() ); } all_directions_match &= above_matches; @@ -1410,8 +1403,8 @@ jmapgen_objects::jmapgen_objects( int off_x, int off_y, size_t mapsize_x, size_t bool jmapgen_objects::check_bounds( const jmapgen_place place, JsonObject &jso ) { - if( place.x.val < 0 || place.x.val > ( int )mapgensize_x - 1 || - place.y.val < 0 || place.y.val > ( int )mapgensize_y - 1 ) { + if( place.x.val < 0 || place.x.val > static_cast( mapgensize_x ) - 1 || + place.y.val < 0 || place.y.val > static_cast( mapgensize_y ) - 1 ) { return false; } @@ -1878,7 +1871,7 @@ void mapgen_function_json_base::setup_common() } else if( ! qualifies ) { // fill_ter should make this kosher parray.throw_error( string_format( " format: rows: row %d column %d: '%c' is not in 'terrain', and no 'fill_ter' is set!", - c + 1, i + 1, ( char )tmpkey ) ); + c + 1, i + 1, static_cast( tmpkey ) ) ); } auto iter_furn = format_furniture.find( tmpkey ); if( iter_furn != format_furniture.end() ) { @@ -2005,7 +1998,7 @@ bool jmapgen_setmap::apply( const mapgendata &dat, int offset_x, int offset_y ) case JMAPGEN_SETMAP_LINE_RADIATION: { const std::vector line = line_to( x_get(), y_get(), x2_get(), y2_get(), 0 ); for( auto &i : line ) { - m.set_radiation( i.x, i.y, ( int )val.get() ); + m.set_radiation( i.x, i.y, static_cast( val.get() ) ); } } break; @@ -2039,7 +2032,7 @@ bool jmapgen_setmap::apply( const mapgendata &dat, int offset_x, int offset_y ) const int cy2 = y2_get(); for( int tx = cx; tx <= cx2; tx++ ) { for( int ty = cy; ty <= cy2; ty++ ) { - m.set_radiation( tx, ty, ( int )val.get() ); + m.set_radiation( tx, ty, static_cast( val.get() ) ); } } } @@ -2212,16 +2205,14 @@ void mapgen_function_lua::generate( map *m, const oter_id &terrain_type, const m // track down what is and isn't supposed to be carried around between bits of code. // I suggest that we break the function down into smaller parts -void map::draw_map( const oter_id terrain_type, const oter_id t_north, const oter_id t_east, - const oter_id t_south, const oter_id t_west, const oter_id t_neast, - const oter_id t_seast, const oter_id t_swest, const oter_id t_nwest, - const oter_id t_above, const oter_id t_below, const time_point &when, const float density, - const int zlevel, const regional_settings *rsettings ) +void map::draw_map( const oter_id &terrain_type, const oter_id &t_north, const oter_id &t_east, + const oter_id &t_south, const oter_id &t_west, const oter_id &t_neast, + const oter_id &t_seast, const oter_id &t_swest, const oter_id &t_nwest, + const oter_id &t_above, const oter_id &t_below, const time_point &when, + const float density, const int zlevel, const regional_settings *rsettings ) { static const mongroup_id GROUP_ZOMBIE( "GROUP_ZOMBIE" ); static const mongroup_id GROUP_LAB( "GROUP_LAB" ); - static const mongroup_id GROUP_PUBLICWORKERS( "GROUP_PUBLICWORKERS" ); - static const mongroup_id GROUP_DOMESTIC( "GROUP_DOMESTIC" ); // Big old switch statement with a case for each overmap terrain type. // Many of these can be copied from another type, then rotated; for instance, // "house_east" is identical to "house_north", just rotated 90 degrees to @@ -2263,7 +2254,7 @@ void map::draw_map( const oter_id terrain_type, const oter_id t_north, const ote mapgendata dat( t_north, t_east, t_south, t_west, t_neast, t_seast, t_swest, t_nwest, t_above, t_below, zlevel, *rsettings, *this ); - computer *tmpcomp = NULL; + computer *tmpcomp = nullptr; bool terrain_type_found = true; const std::string function_key = terrain_type->get_mapgen_id(); @@ -6957,7 +6948,7 @@ vehicle *map::add_vehicle_to_map( std::unique_ptr veh, const bool merge std::vector frame_indices = veh->all_parts_at_location( "structure" ); //Check for boat type vehicles that should be placeable in deep water - const bool can_float = size( veh->get_parts( "FLOATS" ) ) > 2; + const bool can_float = size( veh->get_avail_parts( "FLOATS" ) ) > 2; //When hitting a wall, only smash the vehicle once (but walls many times) bool needs_smashing = false; @@ -7011,12 +7002,13 @@ vehicle *map::add_vehicle_to_map( std::unique_ptr veh, const bool merge for( auto &part : veh->parts ) { const tripoint part_pos = veh->global_part_pos3( part ) - global_pos; - wreckage->install_part( part_pos.x, part_pos.y, part ); + // @todo change mount points to be tripoint + wreckage->install_part( point( part_pos.x, part_pos.y ), part ); } for( auto &part : other_veh->parts ) { const tripoint part_pos = other_veh->global_part_pos3( part ) - global_pos; - wreckage->install_part( part_pos.x, part_pos.y, part ); + wreckage->install_part( point( part_pos.x, part_pos.y ), part ); } @@ -7336,7 +7328,7 @@ void map::rotate( int turns ) } // Hideous function, I admit... -bool connects_to( oter_id there, int dir ) +bool connects_to( const oter_id &there, int dir ) { switch( dir ) { case 2: diff --git a/src/mapgen.h b/src/mapgen.h index c52c6c6e635b9..f5ed3a1373d4c 100644 --- a/src/mapgen.h +++ b/src/mapgen.h @@ -2,13 +2,13 @@ #ifndef MAPGEN_H #define MAPGEN_H +#include "int_id.h" + #include -#include #include +#include #include -#include "int_id.h" - class time_point; struct ter_t; using ter_id = int_id; @@ -49,7 +49,7 @@ class mapgen_function_builtin : public virtual mapgen_function building_gen_pointer fptr; mapgen_function_builtin( building_gen_pointer ptr, int w = 1000 ) : mapgen_function( w ), fptr( ptr ) { - }; + } void generate( map *m, const oter_id &o, const mapgendata &mgd, const time_point &i, float d ) override; }; @@ -275,7 +275,7 @@ class mapgen_function_json_base void setup_setmap( JsonArray &parray ); // Returns true if the mapgen qualifies at this point already virtual bool setup_internal( JsonObject &jo ) = 0; - virtual void setup_setmap_internal() { }; + virtual void setup_setmap_internal() { } void formatted_set_incredibly_simple( map &m, int offset_x, int offset_y ) const; @@ -391,7 +391,7 @@ enum room_type { void house_room( map *m, room_type type, int x1, int y1, int x2, int y2, mapgendata &dat ); // helpful functions -bool connects_to( oter_id there, int dir ); +bool connects_to( const oter_id &there, int dir ); void mapgen_rotate( map *m, oter_id terrain_type, bool north_is_down = false ); // wrappers for map:: functions void line( map *m, const ter_id type, int x1, int y1, int x2, int y2 ); diff --git a/src/mapgen_functions.cpp b/src/mapgen_functions.cpp index 6c268a868008a..a0540f17e40b8 100644 --- a/src/mapgen_functions.cpp +++ b/src/mapgen_functions.cpp @@ -1,29 +1,28 @@ #include "mapgen_functions.h" -#include "mapgen.h" -#include "map_iterator.h" -#include "output.h" +#include "computer.h" +#include "debug.h" +#include "field.h" +#include "item.h" #include "line.h" +#include "map.h" +#include "map_iterator.h" +#include "mapdata.h" +#include "mapgen.h" #include "mapgenformat.h" -#include "overmap.h" +#include "omdata.h" #include "options.h" -#include "debug.h" -#include "scenario.h" -#include "item.h" +#include "overmap.h" #include "translations.h" -#include "vpart_position.h" #include "trap.h" -#include #include "vehicle_group.h" -#include "computer.h" -#include "mapdata.h" -#include "map.h" -#include "omdata.h" -#include "field.h" +#include "vpart_position.h" + #include +#include +#include #include #include -#include #define dbg(x) DebugLog((DebugLevel)(x),D_MAP_GEN) << __FILE__ << ":" << __LINE__ << ": " @@ -99,6 +98,12 @@ building_gen_pointer get_mapgen_cfunction( const std::string &ident ) { "field", &mapgen_field }, { "dirtlot", &mapgen_dirtlot }, { "forest", &mapgen_forest }, + { "forest_trail_straight", &mapgen_forest_trail_straight }, + { "forest_trail_curved", &mapgen_forest_trail_curved }, + // @todo: Add a dedicated dead-end function. For now it copies the straight section above. + { "forest_trail_end", &mapgen_forest_trail_straight }, + { "forest_trail_tee", &mapgen_forest_trail_tee }, + { "forest_trail_four_way", &mapgen_forest_trail_four_way }, { "hive", &mapgen_hive }, { "spider_pit", &mapgen_spider_pit }, { "fungal_bloom", &mapgen_fungal_bloom }, @@ -216,33 +221,24 @@ int &mapgendata::dir( int dir_in ) switch( dir_in ) { case 0: return n_fac; - break; case 1: return e_fac; - break; case 2: return s_fac; - break; case 3: return w_fac; - break; case 4: return ne_fac; - break; case 5: return se_fac; - break; case 6: return sw_fac; - break; case 7: return nw_fac; - break; default: debugmsg( "Invalid direction for mapgendata::set_dir. dir_in = %d", dir_in ); //return something just so the compiler doesn't freak out. Not really correct, though. return n_fac; - break; } } @@ -3621,7 +3617,7 @@ void mapgen_forest( map *m, oter_id terrain_type, mapgendata dat, const time_poi // The max sparseness is calculated across all the possible biomes, not just the adjacent ones. const auto get_max_sparseness_adjacency_factor = [&dat]() { - if( dat.region.forest_composition.biomes.size() == 0 ) { + if( dat.region.forest_composition.biomes.empty() ) { return 0; } std::vector factors; @@ -3773,7 +3769,7 @@ void mapgen_forest( map *m, oter_id terrain_type, mapgendata dat, const time_poi // If this biome does not define its own groundcover, then fill with the region's ground // cover. Otherwise, fill with the biome defs groundcover. - if( current_biome_def.groundcover.size() == 0 ) { + if( current_biome_def.groundcover.empty() ) { dat.fill_groundcover(); } else { m->draw_fill_background( current_biome_def.groundcover ); @@ -3819,6 +3815,164 @@ void mapgen_forest( map *m, oter_id terrain_type, mapgendata dat, const time_poi } } +void mapgen_forest_trail_straight( map *m, oter_id terrain_type, mapgendata dat, + const time_point &turn, + float density ) +{ + mapgen_forest( m, oter_str_id( "forest_thick" ).id(), dat, turn, density ); + + const auto center_offset = [&dat]() { + return rng( -dat.region.forest_trail.trail_center_variance, + dat.region.forest_trail.trail_center_variance ); + }; + + const auto width_offset = [&dat]() { + return rng( dat.region.forest_trail.trail_width_offset_min, + dat.region.forest_trail.trail_width_offset_max ); + }; + + int center_x = SEEX + center_offset(); + int center_y = SEEY + center_offset(); + + for( int i = 0; i < SEEX * 2; i++ ) { + for( int j = 0; j < SEEY * 2; j++ ) { + if( i > center_x - width_offset() && i < center_x + width_offset() ) { + m->furn_set( i, j, f_null ); + m->ter_set( i, j, *dat.region.forest_trail.trail_terrain.pick() ); + } + } + } + + if( terrain_type == "forest_trail_ew" || terrain_type == "forest_trail_end_east" || + terrain_type == "forest_trail_end_west" ) { + m->rotate( 1 ); + } + + m->place_items( "forest_trail", 75, center_x - 2, center_y - 2, center_x + 2, center_y + 2, true, + turn ); +} + +void mapgen_forest_trail_curved( map *m, oter_id terrain_type, mapgendata dat, + const time_point &turn, + float density ) +{ + mapgen_forest( m, oter_str_id( "forest_thick" ).id(), dat, turn, density ); + + const auto center_offset = [&dat]() { + return rng( -dat.region.forest_trail.trail_center_variance, + dat.region.forest_trail.trail_center_variance ); + }; + + const auto width_offset = [&dat]() { + return rng( dat.region.forest_trail.trail_width_offset_min, + dat.region.forest_trail.trail_width_offset_max ); + }; + + int center_x = SEEX + center_offset(); + int center_y = SEEY + center_offset(); + + for( int i = 0; i < SEEX * 2; i++ ) { + for( int j = 0; j < SEEY * 2; j++ ) { + if( ( i > center_x - width_offset() && i < center_x + width_offset() && + j < center_y + width_offset() ) || + ( j > center_y - width_offset() && j < center_y + width_offset() && + i > center_x - width_offset() ) ) { + m->furn_set( i, j, f_null ); + m->ter_set( i, j, *dat.region.forest_trail.trail_terrain.pick() ); + } + } + } + + if( terrain_type == "forest_trail_es" ) { + m->rotate( 1 ); + } + if( terrain_type == "forest_trail_sw" ) { + m->rotate( 2 ); + } + if( terrain_type == "forest_trail_wn" ) { + m->rotate( 3 ); + } + + m->place_items( "forest_trail", 75, center_x - 2, center_y - 2, center_x + 2, center_y + 2, true, + turn ); +} + +void mapgen_forest_trail_tee( map *m, oter_id terrain_type, mapgendata dat, const time_point &turn, + float density ) +{ + mapgen_forest( m, oter_str_id( "forest_thick" ).id(), dat, turn, density ); + + const auto center_offset = [&dat]() { + return rng( -dat.region.forest_trail.trail_center_variance, + dat.region.forest_trail.trail_center_variance ); + }; + + const auto width_offset = [&dat]() { + return rng( dat.region.forest_trail.trail_width_offset_min, + dat.region.forest_trail.trail_width_offset_max ); + }; + + int center_x = SEEX + center_offset(); + int center_y = SEEY + center_offset(); + + for( int i = 0; i < SEEX * 2; i++ ) { + for( int j = 0; j < SEEY * 2; j++ ) { + if( ( i > center_x - width_offset() && i < center_x + width_offset() ) || + ( j > center_y - width_offset() && + j < center_y + width_offset() && i > center_x - width_offset() ) ) { + m->furn_set( i, j, f_null ); + m->ter_set( i, j, *dat.region.forest_trail.trail_terrain.pick() ); + } + } + } + + if( terrain_type == "forest_trail_esw" ) { + m->rotate( 1 ); + } + if( terrain_type == "forest_trail_nsw" ) { + m->rotate( 2 ); + } + if( terrain_type == "forest_trail_new" ) { + m->rotate( 3 ); + } + + m->place_items( "forest_trail", 75, center_x - 2, center_y - 2, center_x + 2, center_y + 2, true, + turn ); +} + +void mapgen_forest_trail_four_way( map *m, oter_id, mapgendata dat, const time_point &turn, + float density ) +{ + mapgen_forest( m, oter_str_id( "forest_thick" ).id(), dat, turn, density ); + + const auto center_offset = [&dat]() { + return rng( -dat.region.forest_trail.trail_center_variance, + dat.region.forest_trail.trail_center_variance ); + }; + + const auto width_offset = [&dat]() { + return rng( dat.region.forest_trail.trail_width_offset_min, + dat.region.forest_trail.trail_width_offset_max ); + }; + + int center_x = SEEX + center_offset(); + int center_y = SEEY + center_offset(); + + for( int i = 0; i < SEEX * 2; i++ ) { + for( int j = 0; j < SEEY * 2; j++ ) { + if( ( i > center_x - width_offset() && i < center_x + width_offset() ) || + ( j > center_y - width_offset() && + j < center_y + width_offset() ) ) { + m->furn_set( i, j, f_null ); + m->ter_set( i, j, *dat.region.forest_trail.trail_terrain.pick() ); + } + } + } + + m->place_items( "forest_trail", 75, center_x - 2, center_y - 2, center_x + 2, center_y + 2, true, + turn ); +} + void mremove_trap( map *m, int x, int y ) { tripoint actual_location( x, y, m->get_abs_sub().z ); @@ -3884,7 +4038,7 @@ void place_stairs( map *m, oter_id terrain_type, mapgendata dat ) std::vector tripoints; // Find the basement's stairs first. - for( auto &&p : tr ) { + for( auto &&p : tr ) { // *NOPAD* if( basement.has_flag( TFLAG_GOES_UP, p + down ) ) { const tripoint rotated = om_direction::rotate( p, terrain_type->get_dir() ); stairs.emplace_back( rotated ); @@ -3912,7 +4066,7 @@ void place_stairs( map *m, oter_id terrain_type, mapgendata dat ) // Find a tripoint where all the underground tripoints for stairs are on // suitable locations aboveground. - for( auto &&p : tripoints ) { + for( auto &&p : tripoints ) { // *NOPAD* int count = 1; all_can_be_placed = true; stairs_debug_log( m, "ok first:", p ); @@ -3956,7 +4110,7 @@ void place_stairs( map *m, oter_id terrain_type, mapgendata dat ) << "and the rest may end up in odd locations."; } - for( auto &&p : stairs ) { + for( auto &&p : stairs ) { // *NOPAD* tripoint stair = p + shift; if( m->ter_set( stair, t_stairs_down ) ) { diff --git a/src/mapgen_functions.h b/src/mapgen_functions.h index e84cbd2f226bb..1f8973fc1bba0 100644 --- a/src/mapgen_functions.h +++ b/src/mapgen_functions.h @@ -1,13 +1,12 @@ #pragma once -#ifndef BUILDING_GENERATION_H -#define BUILDING_GENERATION_H +#ifndef MAPGEN_FUNCTIONS_H +#define MAPGEN_FUNCTIONS_H +#include "enums.h" #include "int_id.h" #include "weighted_list.h" -#include "game_constants.h" #include -#include class time_point; struct ter_t; @@ -112,6 +111,14 @@ void mapgen_dirtlot( map *m, oter_id terrain_type, mapgendata dat, const time_po float density ); void mapgen_forest( map *m, oter_id terrain_type, mapgendata dat, const time_point &time, float density ); +void mapgen_forest_trail_straight( map *m, oter_id terrain_type, mapgendata dat, + const time_point &time, float density ); +void mapgen_forest_trail_curved( map *m, oter_id terrain_type, mapgendata dat, + const time_point &time, float density ); +void mapgen_forest_trail_tee( map *m, oter_id terrain_type, mapgendata dat, const time_point &time, + float density ); +void mapgen_forest_trail_four_way( map *m, oter_id terrain_type, mapgendata dat, + const time_point &time, float density ); void mapgen_hive( map *m, oter_id terrain_type, mapgendata dat, const time_point &time, float density ); void mapgen_spider_pit( map *m, oter_id terrain_type, mapgendata dat, const time_point &time, diff --git a/src/mapgenformat.cpp b/src/mapgenformat.cpp index eba6c08d29659..8f1a85d22ae43 100644 --- a/src/mapgenformat.cpp +++ b/src/mapgenformat.cpp @@ -1,15 +1,11 @@ #include "mapgenformat.h" -#include -#include +#include "map.h" +#include "mapdata.h" +#include "output.h" -#include -#include #include - -#include "output.h" -#include "mapdata.h" -#include "map.h" +#include namespace mapf { diff --git a/src/mapgenformat.h b/src/mapgenformat.h index 4378ff8ca1613..e8d6a4e60c29f 100644 --- a/src/mapgenformat.h +++ b/src/mapgenformat.h @@ -4,8 +4,8 @@ #include "int_id.h" -#include #include +#include struct ter_t; using ter_id = int_id; diff --git a/src/mapsharing.cpp b/src/mapsharing.cpp index 73a98af6567e9..8b300325fa70f 100644 --- a/src/mapsharing.cpp +++ b/src/mapsharing.cpp @@ -45,10 +45,7 @@ bool MAP_SHARING::isWorldmenu() bool MAP_SHARING::isAdmin() { - if( admins.find( getUsername() ) != admins.end() ) { - return true; - } - return false; + return admins.find( getUsername() ) != admins.end(); } void MAP_SHARING::setAdmins( const std::set &names ) @@ -64,10 +61,7 @@ void MAP_SHARING::addAdmin( const std::string &name ) bool MAP_SHARING::isDebugger() { - if( debuggers.find( getUsername() ) != debuggers.end() ) { - return true; - } - return false; + return debuggers.find( getUsername() ) != debuggers.end(); } void MAP_SHARING::setDebuggers( const std::set &names ) @@ -140,16 +134,6 @@ void fopen_exclusive( std::ofstream &fout, const char *filename, fout.open( filename, mode ); } } -/* -std::ofstream fopen_exclusive(const char* filename) { - std::string lockfile = std::string(filename)+".lock"; - std::ofstream fout; - lockFiles[lockfile] = getLock(lockfile); - if(lockFiles[lockfile] != -1) { - fout.open(filename, std::fstream::ios_base::out); - } - return fout; -} */ void fclose_exclusive( std::ofstream &fout, const char *filename ) { diff --git a/src/mapsharing.h b/src/mapsharing.h index 5b8d40814f762..d4b6273897b5c 100644 --- a/src/mapsharing.h +++ b/src/mapsharing.h @@ -3,19 +3,19 @@ #define MAPSHARING_H #ifdef __linux__ -#include -#include #include +#include +#include +#include #include #include -#include #endif // __linux__ -#include -#include -#include -#include +#include #include +#include +#include +#include namespace MAP_SHARING { diff --git a/src/martialarts.cpp b/src/martialarts.cpp index 1c5a91c6cb60c..c40ca458c293a 100644 --- a/src/martialarts.cpp +++ b/src/martialarts.cpp @@ -1,20 +1,21 @@ #include "martialarts.h" -#include "player.h" + +#include "damage.h" #include "debug.h" #include "effect.h" -#include "json.h" -#include "translations.h" +#include "generic_factory.h" +#include "input.h" #include "itype.h" -#include "damage.h" +#include "json.h" #include "output.h" -#include "input.h" +#include "player.h" #include "skill.h" +#include "string_formatter.h" +#include "translations.h" +#include #include #include -#include -#include "generic_factory.h" -#include "string_formatter.h" const skill_id skill_melee( "melee" ); const skill_id skill_bashing( "bashing" ); @@ -317,7 +318,6 @@ void clear_techniques_and_martial_arts() ma_techniques.reset(); } -#include "messages.h" bool ma_requirements::is_valid_player( const player &u ) const { for( const auto &buff_id : req_buffs ) { @@ -353,7 +353,7 @@ bool ma_requirements::is_valid_player( const player &u ) const bool ma_requirements::is_valid_weapon( const item &i ) const { - for( auto flag : req_flags ) { + for( const std::string &flag : req_flags ) { if( !i.has_flag( flag ) ) { return false; } @@ -383,7 +383,7 @@ std::string ma_requirements::get_description( bool buff ) const }, enumeration_conjunction::none ) << std::endl; } - if( req_buffs.size() ) { + if( !req_buffs.empty() ) { dump << string_format( _( "Requires: " ) ); dump << enumerate_as_string( req_buffs.begin(), req_buffs.end(), []( const mabuff_id & bid ) { @@ -543,18 +543,18 @@ std::string ma_buff::get_description( bool passive ) const if( dodges_bonus > 0 ) { dump << string_format( _( "* Will give a +%s bonus to dodge%s" ), - dodges_bonus, ngettext( "", " per stack", max_stacks ) ) << std::endl; + dodges_bonus, ngettext( " for the stack", " per stack", max_stacks ) ) << std::endl; } else if( dodges_bonus < 0 ) { dump << string_format( _( "* Will give a %s penalty to dodge%s" ), - dodges_bonus, ngettext( "", " per stack", max_stacks ) ) << std::endl; + dodges_bonus, ngettext( " for the stack", " per stack", max_stacks ) ) << std::endl; } if( blocks_bonus > 0 ) { dump << string_format( _( "* Will give a +%s bonus to block%s" ), - blocks_bonus, ngettext( "", " per stack", max_stacks ) ) << std::endl; + blocks_bonus, ngettext( " for the stack", " per stack", max_stacks ) ) << std::endl; } else if( blocks_bonus < 0 ) { dump << string_format( _( "* Will give a %s penalty to block%s" ), - blocks_bonus, ngettext( "", " per stack", max_stacks ) ) << std::endl; + blocks_bonus, ngettext( " for the stack", " per stack", max_stacks ) ) << std::endl; } if( quiet ) { @@ -886,7 +886,7 @@ bool player::can_melee() const } ); } -bool player::has_mabuff( mabuff_id id ) const +bool player::has_mabuff( const mabuff_id &id ) const { return search_ma_buff_effect( *effects, [&id]( const ma_buff & b, const effect & ) { return b.id == id; @@ -999,7 +999,7 @@ std::string ma_technique::get_description() const } bool ma_style_callback::key( const input_context &ctxt, const input_event &event, int entnum, - uimenu *menu ) + uilist *menu ) { const std::string action = ctxt.input_to_action( event ); if( action != "SHOW_DESCRIPTION" ) { diff --git a/src/martialarts.h b/src/martialarts.h index 81e7fb7500b1f..8efeaf56a7c8b 100644 --- a/src/martialarts.h +++ b/src/martialarts.h @@ -2,15 +2,15 @@ #ifndef MARTIALARTS_H #define MARTIALARTS_H -#include "string_id.h" #include "bonuses.h" #include "calendar.h" +#include "string_id.h" #include "ui.h" -#include -#include #include #include +#include +#include enum damage_type : int; class JsonObject; @@ -238,7 +238,7 @@ class martialart std::vector ongethit_buffs; }; -class ma_style_callback : public uimenu_callback +class ma_style_callback : public uilist_callback { private: size_t offset; @@ -250,7 +250,7 @@ class ma_style_callback : public uimenu_callback , styles( selectable_styles ) {} - bool key( const input_context &ctxt, const input_event &event, int entnum, uimenu *menu ) override; + bool key( const input_context &ctxt, const input_event &event, int entnum, uilist *menu ) override; ~ma_style_callback() override = default; }; diff --git a/src/material.cpp b/src/material.cpp index a1aadbe33ae8b..85c268b4259e0 100644 --- a/src/material.cpp +++ b/src/material.cpp @@ -1,15 +1,15 @@ #include "material.h" -#include "debug.h" +#include "assign.h" #include "damage.h" // damage_type -#include "json.h" -#include "translations.h" +#include "debug.h" #include "generic_factory.h" #include "item.h" -#include "assign.h" +#include "json.h" +#include "translations.h" -#include #include +#include namespace { @@ -145,22 +145,16 @@ int material_type::dam_resist( damage_type damtype ) const switch( damtype ) { case DT_BASH: return _bash_resist; - break; case DT_CUT: return _cut_resist; - break; case DT_ACID: return _acid_resist; - break; case DT_ELECTRIC: return _elec_resist; - break; case DT_HEAT: return _fire_resist; - break; default: return 0; - break; } } diff --git a/src/material.h b/src/material.h index 25e9c05f1d78c..78e1ea2cc94b0 100644 --- a/src/material.h +++ b/src/material.h @@ -1,17 +1,17 @@ #pragma once -#ifndef MATERIALS_H -#define MATERIALS_H +#ifndef MATERIAL_H +#define MATERIAL_H + +#include "fire.h" +#include "game_constants.h" +#include "optional.h" +#include "string_id.h" -#include #include #include +#include #include -#include "optional.h" -#include "game_constants.h" -#include "string_id.h" -#include "fire.h" - enum damage_type : int; class material_type; using material_id = string_id; diff --git a/src/mattack_actors.cpp b/src/mattack_actors.cpp index 567c59c91c641..aaf0aceae4fd6 100644 --- a/src/mattack_actors.cpp +++ b/src/mattack_actors.cpp @@ -1,20 +1,18 @@ #include "mattack_actors.h" -#include #include "game.h" +#include "generic_factory.h" +#include "gun_mode.h" +#include "itype.h" +#include "line.h" #include "map.h" #include "map_iterator.h" -#include "itype.h" -#include "monster.h" #include "messages.h" -#include "translations.h" -#include "sounds.h" -#include "gun_mode.h" +#include "monster.h" #include "npc.h" #include "output.h" -#include "debug.h" -#include "generic_factory.h" -#include "line.h" +#include "sounds.h" +#include "translations.h" const efftype_id effect_grabbed( "grabbed" ); const efftype_id effect_bite( "bite" ); @@ -40,11 +38,7 @@ bool dodge_check( float max_accuracy, Creature &target ) { ///\EFFECT_DODGE increases chance of dodging special attacks of monsters float dodge = std::max( target.get_dodge() - rng( 0, max_accuracy ), 0.0f ); - if( rng( 0, 10000 ) < 10000 / ( 1 + ( 99 * exp( -0.6f * dodge ) ) ) ) { - return true; - } - - return false; + return rng( 0, 10000 ) < 10000 / ( 1 + 99 * exp( -0.6f * dodge ) ); } void leap_actor::load_internal( JsonObject &obj, const std::string & ) @@ -264,7 +258,7 @@ void melee_actor::on_damage( monster &z, Creature &target, dealt_damage_instance if( target.is_player() ) { sfx::play_variant_sound( "mon_bite", "bite_hit", sfx::get_heard_volume( z.pos() ), sfx::get_heard_angle( z.pos() ) ); - sfx::do_player_death_hurt( dynamic_cast( target ), 0 ); + sfx::do_player_death_hurt( dynamic_cast( target ), false ); } auto msg_type = target.attitude_to( g->u ) == Creature::A_FRIENDLY ? m_bad : m_neutral; const body_part bp = dealt.bp_hit; diff --git a/src/mattack_actors.h b/src/mattack_actors.h index 4c0765776be8d..f03b1114f5572 100644 --- a/src/mattack_actors.h +++ b/src/mattack_actors.h @@ -2,15 +2,14 @@ #ifndef MATTACK_ACTORS_H #define MATTACK_ACTORS_H -#include "mtype.h" #include "damage.h" -#include "weighted_list.h" #include "mattack_common.h" +#include "mtype.h" #include "string_id.h" +#include "weighted_list.h" -#include -#include #include +#include class JsonObject; class monster; diff --git a/src/mattack_common.h b/src/mattack_common.h index 9ca662cc68241..35ddec8355303 100644 --- a/src/mattack_common.h +++ b/src/mattack_common.h @@ -39,9 +39,9 @@ struct mtype_special_attack { public: mtype_special_attack( const mattack_id &id, mon_action_attack f ); - mtype_special_attack( mattack_actor *f ) : actor( f ) { }; + mtype_special_attack( mattack_actor *f ) : actor( f ) { } mtype_special_attack( const mtype_special_attack &other ) : - mtype_special_attack( other.actor->clone() ) { }; + mtype_special_attack( other.actor->clone() ) { } ~mtype_special_attack() = default; diff --git a/src/melee.cpp b/src/melee.cpp index 002d6721bb621..2707c2a7c72a1 100644 --- a/src/melee.cpp +++ b/src/melee.cpp @@ -1,32 +1,30 @@ #include "melee.h" -#include "player.h" + +#include "cata_utility.h" #include "debug.h" +#include "field.h" #include "game.h" #include "game_inventory.h" +#include "itype.h" +#include "line.h" #include "map.h" -#include "debug.h" -#include "rng.h" +#include "map_iterator.h" #include "martialarts.h" #include "messages.h" -#include "mutation.h" -#include "sounds.h" -#include "translations.h" -#include "map_iterator.h" #include "monster.h" +#include "mtype.h" +#include "mutation.h" #include "npc.h" -#include "itype.h" #include "output.h" +#include "player.h" +#include "rng.h" +#include "sounds.h" #include "string_formatter.h" -#include "line.h" -#include "mtype.h" -#include "field.h" -#include "cata_utility.h" +#include "translations.h" -#include -#include #include - -#include "cursesdef.h" +#include +#include static const bionic_id bio_cqb( "bio_cqb" ); @@ -40,7 +38,6 @@ static const skill_id skill_cutting( "cutting" ); static const skill_id skill_unarmed( "unarmed" ); static const skill_id skill_bashing( "bashing" ); static const skill_id skill_melee( "melee" ); -static const skill_id skill_dodge( "dodge" ); const efftype_id effect_badpoison( "badpoison" ); const efftype_id effect_beartrap( "beartrap" ); @@ -315,7 +312,7 @@ std::string player::get_miss_reason() farsightedness ); const std::string *const reason = melee_miss_reasons.pick(); - if( reason == NULL ) { + if( reason == nullptr ) { return std::string(); } return *reason; @@ -370,7 +367,7 @@ void player::melee_attack( Creature &t, bool allow_special, const matec_id &forc if( hit_spread < 0 ) { int stumble_pen = stumble( *this, cur_weapon ); - sfx::generate_melee_sound( pos(), t.pos(), 0, 0 ); + sfx::generate_melee_sound( pos(), t.pos(), false, false ); if( is_player() ) { // Only display messages if this is the player if( one_in( 2 ) ) { @@ -460,7 +457,7 @@ void player::melee_attack( Creature &t, bool allow_special, const matec_id &forc material = "steel"; } } - sfx::generate_melee_sound( pos(), t.pos(), 1, t.is_monster(), material ); + sfx::generate_melee_sound( pos(), t.pos(), true, t.is_monster(), material ); int dam = dealt_dam.total_damage(); // Practice melee and relevant weapon skill (if any) except when using CQB bionic @@ -1836,9 +1833,8 @@ void player_hit_message( player *attacker, const std::string &message, Creature &t, int dam, bool crit ) { std::string msg; - game_message_type msgtype; - msgtype = m_good; - std::string sSCTmod = ""; + game_message_type msgtype = m_good; + std::string sSCTmod; game_message_type gmtSCTcolor = m_good; if( dam <= 0 ) { @@ -1911,7 +1907,7 @@ int player::attack_speed( const item &weap ) const const int encumbrance_penalty = encumb( bp_torso ) + ( encumb( bp_hand_l ) + encumb( bp_hand_r ) ) / 2; const int ma_move_cost = mabuff_attack_cost_penalty(); - const float stamina_ratio = ( float )stamina / ( float )get_stamina_max(); + const float stamina_ratio = static_cast( stamina ) / static_cast( get_stamina_max() ); // Increase cost multiplier linearly from 1.0 to 2.0 as stamina goes from 25% to 0%. const float stamina_penalty = 1.0 + std::max( ( 0.25f - stamina_ratio ) * 4.0f, 0.0f ); const float ma_mult = mabuff_attack_cost_mult(); diff --git a/src/messages.cpp b/src/messages.cpp index 0be67c94d4741..5203e2146f08f 100644 --- a/src/messages.cpp +++ b/src/messages.cpp @@ -1,18 +1,19 @@ #include "messages.h" -#include "input.h" -#include "game.h" + +#include "calendar.h" +#include "compatibility.h" // needed for the workaround for the std::to_string bug in some compilers #include "debug.h" -#include "compatibility.h" //to_string +#include "game.h" +#include "input.h" #include "json.h" -#include "options.h" #include "output.h" -#include "calendar.h" -#include "translations.h" #include "string_formatter.h" #include "string_input_popup.h" +#include "translations.h" #ifdef __ANDROID__ -#include "SDL_keyboard.h" +#include "options.h" +#include #endif #include @@ -166,9 +167,8 @@ class messages_impl std::transform( begin( messages ) + offset, end( messages ), back_inserter( result ), []( game_message const & msg ) { return std::make_pair( to_string_time_of_day( msg.timestamp_in_turns ), - msg.count ? msg.message + to_string( msg.count ) : msg.message ); - } - ); + msg.get_with_count() ); + } ); return result; } diff --git a/src/messages.h b/src/messages.h index 5442b6c56f1d0..fa38ede16f95f 100644 --- a/src/messages.h +++ b/src/messages.h @@ -3,11 +3,10 @@ #define MESSAGES_H #include "string_formatter.h" -#include "pimpl.h" #include -#include #include +#include class JsonOut; class JsonObject; diff --git a/src/mission.cpp b/src/mission.cpp index 782a1576ff7ef..f314d1a657867 100644 --- a/src/mission.cpp +++ b/src/mission.cpp @@ -1,21 +1,21 @@ #include "mission.h" -#include "game.h" + #include "debug.h" -#include "overmapbuffer.h" -#include "translations.h" -#include "requirements.h" -#include "string_formatter.h" -#include "overmap.h" -#include "line.h" +#include "game.h" #include "io.h" +#include "line.h" #include "npc.h" #include "npc_class.h" +#include "overmap.h" +#include "overmapbuffer.h" +#include "requirements.h" #include "skill.h" +#include "string_formatter.h" +#include "translations.h" -#include +#include #include #include -#include #define dbg(x) DebugLog((DebugLevel)(x),D_GAME) << __FILE__ << ":" << __LINE__ << ": " @@ -270,13 +270,11 @@ bool mission::is_complete( const int _npc_id ) const const tripoint cur_pos = g->u.global_omt_location(); return ( rl_dist( cur_pos, target ) <= 1 ); } - break; case MGOAL_GO_TO_TYPE: { const auto cur_ter = overmap_buffer.ter( g->u.global_omt_location() ); return is_ot_type( type->target_id.str(), cur_ter ); } - break; case MGOAL_FIND_ITEM: { inventory tmp_inv = u.crafting_inventory(); @@ -338,7 +336,6 @@ bool mission::is_complete( const int _npc_id ) const default: return false; } - return false; } bool mission::has_deadline() const @@ -456,7 +453,7 @@ void mission::set_player_id_legacy_0c( int id ) std::string mission::name() { - if( type == NULL ) { + if( type == nullptr ) { return "NULL"; } return _( type->name.c_str() ); @@ -464,7 +461,7 @@ std::string mission::name() mission_type_id mission::mission_id() { - if( type == NULL ) { + if( type == nullptr ) { return mission_type_id( "NULL" ); } return type->id; @@ -537,7 +534,7 @@ std::string mission::dialogue_for_topic( const std::string &in_topic ) const mission::mission() : deadline( 0 ) { - type = NULL; + type = nullptr; status = mission_status::yet_to_start; value = 0; uid = -1; @@ -566,7 +563,7 @@ mission_type::mission_type( mission_type_id ID, const std::string &NAME, mission id( ID ), name( NAME ), goal( GOAL ), difficulty( DIF ), value( VAL ), urgent( URGENT ), place( PLACE ), start( START ), end( END ), fail( FAIL ) { -}; +} namespace io { diff --git a/src/mission.h b/src/mission.h index f9b8119be791f..449b6e6f4567e 100644 --- a/src/mission.h +++ b/src/mission.h @@ -2,15 +2,15 @@ #ifndef MISSION_H #define MISSION_H -#include -#include +#include "calendar.h" +#include "enums.h" +#include "npc_favor.h" + #include #include #include - -#include "enums.h" -#include "calendar.h" -#include "npc_favor.h" +#include +#include class player; class mission; @@ -159,7 +159,7 @@ struct mission_start { }; struct mission_end { // These functions are run when a mission ends - static void standard( mission * ) {}; // Nothing special happens + static void standard( mission * ) {} // Nothing special happens static void leave( mission * ); // NPC leaves after the mission is complete static void thankful( mission * ); // NPC defaults to being a friendly stranger static void deposit_box( mission * ); // random valuable reward @@ -167,7 +167,7 @@ struct mission_end { // These functions are run when a mission ends }; struct mission_fail { - static void standard( mission * ) {}; // Nothing special happens + static void standard( mission * ) {} // Nothing special happens static void kill_npc( mission * ); // Kill the NPC who assigned it! }; @@ -363,8 +363,6 @@ class mission static void on_creature_death( Creature &poor_dead_dude ); /*@}*/ - // Don't use this, it's only for loading legacy saves. - static void unserialize_legacy( std::istream &fin ); // Serializes and unserializes all missions static void serialize_all( JsonOut &json ); static void unserialize_all( JsonIn &jsin ); diff --git a/src/mission_companion.cpp b/src/mission_companion.cpp index 0b629f307abe0..4f3154f631086 100644 --- a/src/mission_companion.cpp +++ b/src/mission_companion.cpp @@ -1,55 +1,31 @@ -#include "npc.h" -#include "output.h" -#include "game.h" -#include "map.h" -#include "mapbuffer.h" +#include "mission_companion.h" + +#include "bionics.h" +#include "compatibility.h" // needed for the workaround for the std::to_string bug in some compilers +#include "coordinate_conversions.h" +#include "craft_command.h" #include "dialogue.h" -#include "rng.h" +#include "editmap.h" +#include "faction_camp.h" +#include "input.h" +#include "item_group.h" #include "itype.h" #include "line.h" -#include "bionics.h" -#include "debug.h" -#include "catacharset.h" +#include "mapbuffer.h" +#include "mapdata.h" #include "messages.h" -#include "mission.h" -#include "ammo.h" -#include "output.h" -#include "vpart_range.h" +#include "mtype.h" #include "overmap.h" -#include "overmap_ui.h" #include "overmapbuffer.h" -#include "skill.h" +#include "rng.h" +#include "string_input_popup.h" #include "translations.h" -#include "martialarts.h" -#include "input.h" -#include "item_group.h" -#include "compatibility.h" -#include "mapdata.h" -#include "recipe.h" -#include "requirements.h" -#include "map_iterator.h" -#include "mongroup.h" -#include "mtype.h" -#include "editmap.h" -#include "construction.h" -#include "coordinate_conversions.h" -#include "craft_command.h" -#include "iexamine.h" #include "vehicle.h" -#include "veh_type.h" -#include "requirements.h" -#include "string_input_popup.h" -#include "line.h" -#include "recipe_groups.h" -#include "faction_camp.h" -#include "mission_companion.h" -#include "npctalk.h" +#include "vpart_range.h" -#include -#include -#include #include #include +#include const skill_id skill_dodge( "dodge" ); const skill_id skill_gun( "gun" ); @@ -106,7 +82,7 @@ bool display_and_choose_opts( mission_data &mission_key, npc &p, const std::stri const std::string &title ); bool handle_outpost_mission( mission_entry &cur_key, npc &p ); bool handle_camp_mission( mission_entry &cur_key, npc &p ); -}; +} void talk_function::companion_mission( npc &p ) { @@ -160,7 +136,7 @@ void talk_function::scavenger_patrol( mission_data &mission_key, npc &p ) "creatures." ); mission_key.push( "Assign Scavenging Patrol", _( "Assign Scavenging Patrol" ) ); npc_list = companion_list( p, "_scavenging_patrol" ); - if( npc_list.size() > 0 ) { + if( !npc_list.empty() ) { entry = _( "Profit: $25-$500\nDanger: Low\nTime: 10 hour missions\n \nPatrol Roster:\n" ); for( auto &elem : npc_list ) { entry = entry + " " + elem->name + " [" + to_string( to_hours( calendar::turn - @@ -183,7 +159,7 @@ void talk_function::scavenger_raid( mission_data &mission_key, npc &p ) "can't be guaranteed. The rewards are greater and there is a chance of the companion bringing back items." ); mission_key.push( "Assign Scavenging Raid", _( "Assign Scavenging Raid" ) ); npc_list = companion_list( p, "_scavenging_raid" ); - if( npc_list.size() > 0 ) { + if( !npc_list.empty() ) { entry = _( "Profit: $200-$1000\nDanger: Medium\nTime: 10 hour missions\n \nRaid Roster:\n" ); for( auto &elem : npc_list ) { entry = entry + " " + elem->name + " [" + to_string( to_hours( calendar::turn - @@ -205,7 +181,7 @@ void talk_function::commune_menial( mission_data &mission_key, npc &p ) "reputation with the outpost. Don't expect much of a reward though." ); mission_key.push( "Assign Ally to Menial Labor", _( "Assign Ally to Menial Labor" ) ); npc_list = companion_list( p, "_labor" ); - if( npc_list.size() > 0 ) { + if( !npc_list.empty() ) { entry = _( "Profit: $8/hour\nDanger: Minimal\nTime: 1 hour minimum\n \nLabor Roster:\n" ); for( auto &elem : npc_list ) { entry = entry + " " + elem->name + " [" + to_string( to_hours( calendar::turn - @@ -227,7 +203,7 @@ void talk_function::commune_carpentry( mission_data &mission_key, npc &p ) "unlikely that your companions will face combat but there are hazards working on makeshift buildings." ); mission_key.push( "Assign Ally to Carpentry Work", _( "Assign Ally to Carpentry Work" ) ); npc_list = companion_list( p, "_carpenter" ); - if( npc_list.size() > 0 ) { + if( !npc_list.empty() ) { entry = _( "Profit: $12/hour\nDanger: Minimal\nTime: 1 hour minimum\n \nLabor Roster:\n" ); for( auto &elem : npc_list ) { entry = entry + " " + elem->name + " [" + to_string( to_hours( calendar::turn - @@ -290,7 +266,7 @@ void talk_function::commune_forage( mission_data &mission_key, npc &p ) "supplemented with the odd item as a reward for particularly large hauls." ); mission_key.push( "Assign Ally to Forage for Food", _( "Assign Ally to Forage for Food" ) ); npc_list = companion_list( p, "_forage" ); - if( npc_list.size() > 0 ) { + if( !npc_list.empty() ) { entry = _( "Profit: $10/hour\nDanger: Low\nTime: 4 hour minimum\n \nLabor Roster:\n" ); for( auto &elem : npc_list ) { entry = entry + " " + elem->name + " [" + to_string( to_hours( calendar::turn - @@ -316,7 +292,7 @@ void talk_function::commune_refuge_caravan( mission_data &mission_key, npc &p ) mission_key.push( "Caravan Commune-Refugee Center", _( "Caravan Commune-Refugee Center" ) ); npc_list = companion_list( p, "_commune_refugee_caravan" ); std::vector> npc_list_aux; - if( npc_list.size() > 0 ) { + if( !npc_list.empty() ) { entry = _( "Profit: $18/hour\nDanger: High\nTime: UNKNOWN\n \n" " \nRoster:\n" ); for( auto &elem : npc_list ) { @@ -330,7 +306,7 @@ void talk_function::commune_refuge_caravan( mission_data &mission_key, npc &p ) ( calendar::turn - elem->companion_mission_time ) ) ) + _( " Hours] \n" ); } } - if( npc_list_aux.size() > 0 ) { + if( !npc_list_aux.empty() ) { std::string entry_aux = _( "Profit: $18/hour\nDanger: High\nTime: UNKNOWN\n \n" " \nRoster:\n" ); for( auto &elem : npc_list_aux ) { @@ -420,7 +396,7 @@ bool talk_function::display_and_choose_opts( mission_data &mission_key, npc &p, calcStartPos( offset, sel, FULL_SCREEN_HEIGHT - 3, cur_key_list.size() ); - for( size_t i = 0; ( int )i < FULL_SCREEN_HEIGHT - 3 && + for( size_t i = 0; static_cast( i ) < FULL_SCREEN_HEIGHT - 3 && ( i + offset ) < cur_key_list.size(); i++ ) { size_t current = i + offset; nc_color col = ( current == sel ? h_white : c_white ); @@ -983,14 +959,14 @@ void talk_function::field_harvest( npc &p, const std::string &place ) const islot_seed &seed_data = *seed.type->seed; tmp = item( seed_data.fruit_id, calendar::turn ); check = false; - for( auto elem : plant_names ) { - if( elem == tmp.type_name( 3 ).c_str() ) { + for( const std::string &elem : plant_names ) { + if( elem == tmp.type_name( 3 ) ) { check = true; } } if( !check ) { plant_types.push_back( tmp.typeId() ); - plant_names.push_back( tmp.type_name( 3 ).c_str() ); + plant_names.push_back( tmp.type_name( 3 ) ); seed_types.push_back( seed.typeId() ); } } @@ -1423,7 +1399,7 @@ bool talk_function::companion_om_combat_check( const std::vectorget_skill_level( skill_survival ); } avg_survival = avg_survival / group.size(); @@ -1489,7 +1465,7 @@ bool talk_function::force_on_force( const std::vector> &def const std::string &def_desc, const std::vector< monster * > &monsters_fighting, const std::string &att_desc, int advantage ) { - std::string adv = ""; + std::string adv; if( advantage < 0 ) { adv = ", attacker advantage"; } else if( advantage > 0 ) { @@ -1556,7 +1532,7 @@ void talk_function::force_on_force( const std::vector> &def const std::string &def_desc, const std::vector> &attacker, const std::string &att_desc, int advantage ) { - std::string adv = ""; + std::string adv; if( advantage < 0 ) { adv = ", attacker advantage"; } else if( advantage > 0 ) { @@ -1749,16 +1725,13 @@ std::vector talk_function::companion_sort( std::vector available, } struct companion_sort_skill { - companion_sort_skill( std::string skill_tested ) { + companion_sort_skill( const std::string &skill_tested ) { this->skill_tested = skill_tested; } bool operator()( npc *first, npc *second ) { - if( first->get_skill_level( skill_id( skill_tested ) ) > second->get_skill_level( skill_id( - skill_tested ) ) ) { - return true; - } - return false; + return first->get_skill_level( skill_id( skill_tested ) ) > second->get_skill_level( + skill_id( skill_tested ) ); } std::string skill_tested; diff --git a/src/mission_companion.h b/src/mission_companion.h index 7ca7b21267975..c252414b8821c 100644 --- a/src/mission_companion.h +++ b/src/mission_companion.h @@ -2,10 +2,14 @@ #ifndef MISSION_COMPANION_H #define MISSION_COMPANION_H +#include "game.h" +#include "map.h" +#include "npc.h" +#include "output.h" + #include -#include #include -#include +#include class martialart; class JsonObject; @@ -20,7 +24,6 @@ class npc_template; template class string_id; - struct mission_entry { std::string id; std::string name_display; @@ -70,7 +73,7 @@ void companion_mission( npc & ); * @param id is the value stored with the NPC when it is offloaded * @param group is whether the NPC is waiting for additional members before departing together * @param equipment is placed in the NPC's special inventory and dropped when they return - * @param skill_tests is the main skill for the quest + * @param skill_tested is the main skill for the quest * @param skill_level is checked to prevent lower level NPCs from going on missions */ ///Send a companion on an individual mission or attaches them to a group to depart later @@ -133,5 +136,5 @@ npc *companion_choose_return( const npc &p, const std::string &id, const time_po void companion_return( npc &comp ); //Return NPC to your party std::vector loot_building( const tripoint site ); //Smash stuff, steal valuables, and change map maker -}; +} #endif diff --git a/src/mission_end.cpp b/src/mission_end.cpp index 789e77ff60249..9623df05e2408 100644 --- a/src/mission_end.cpp +++ b/src/mission_end.cpp @@ -1,18 +1,19 @@ #include "mission.h" -#include "game.h" + #include "debug.h" -#include "rng.h" -#include "translations.h" -#include "output.h" +#include "game.h" #include "messages.h" #include "npc.h" +#include "output.h" +#include "rng.h" +#include "translations.h" const efftype_id effect_infection( "infection" ); void mission_end::heal_infection( mission *miss ) { npc *p = g->find_npc( miss->get_npc_id() ); - if( p == NULL ) { + if( p == nullptr ) { debugmsg( "could not find mission NPC %d", miss->get_npc_id() ); return; } @@ -22,7 +23,7 @@ void mission_end::heal_infection( mission *miss ) void mission_end::leave( mission *miss ) { npc *p = g->find_npc( miss->get_npc_id() ); - if( p == NULL ) { + if( p == nullptr ) { debugmsg( "could not find mission NPC %d", miss->get_npc_id() ); return; } @@ -32,7 +33,7 @@ void mission_end::leave( mission *miss ) void mission_end::thankful( mission *miss ) { npc *p = g->find_npc( miss->get_npc_id() ); - if( p == NULL ) { + if( p == nullptr ) { debugmsg( "could not find mission NPC %d", miss->get_npc_id() ); return; } @@ -49,7 +50,7 @@ void mission_end::thankful( mission *miss ) void mission_end::deposit_box( mission *miss ) { npc *p = g->find_npc( miss->get_npc_id() ); - if( p == NULL ) { + if( p == nullptr ) { debugmsg( "could not find mission NPC %d", miss->get_npc_id() ); return; } diff --git a/src/mission_fail.cpp b/src/mission_fail.cpp index b0274bd8a266a..50c1a298a0201 100644 --- a/src/mission_fail.cpp +++ b/src/mission_fail.cpp @@ -1,7 +1,8 @@ #include "mission.h" + #include "game.h" -#include "overmapbuffer.h" #include "npc.h" +#include "overmapbuffer.h" void mission_fail::kill_npc( mission *miss ) { diff --git a/src/mission_start.cpp b/src/mission_start.cpp index 057ff9bb09650..4a2c8ac7cf3e4 100644 --- a/src/mission_start.cpp +++ b/src/mission_start.cpp @@ -1,28 +1,27 @@ #include "mission.h" +#include "computer.h" #include "coordinate_conversions.h" +#include "debug.h" +#include "field.h" #include "game.h" +#include "line.h" #include "map.h" #include "map_iterator.h" -#include "output.h" -#include "debug.h" -#include "name.h" -#include -#include "string_formatter.h" -#include "omdata.h" -#include "overmapbuffer.h" #include "mapdata.h" -#include "messages.h" -#include "translations.h" -#include "overmap.h" -#include "trap.h" -#include "line.h" -#include "computer.h" // TODO: Remove this include once 2D wrappers are no longer needed #include "mapgen_functions.h" -#include "field.h" +#include "messages.h" +#include "name.h" #include "npc.h" #include "npc_class.h" +#include "omdata.h" +#include "output.h" +#include "overmap.h" +#include "overmapbuffer.h" +#include "string_formatter.h" +#include "translations.h" +#include "trap.h" const mtype_id mon_charred_nightmare( "mon_charred_nightmare" ); const mtype_id mon_dog( "mon_dog" ); @@ -201,11 +200,11 @@ void mission_start::join( mission *miss ) void mission_start::infect_npc( mission *miss ) { npc *p = g->find_npc( miss->npc_id ); - if( p == NULL ) { + if( p == nullptr ) { debugmsg( "mission_start::infect_npc() couldn't find an NPC!" ); return; } - p->add_effect( effect_infection, 1_turns, num_bp, 1, true ); + p->add_effect( effect_infection, 1_turns, num_bp, true, true ); // make sure they don't have any antibiotics p->remove_items_with( []( const item & it ) { return it.typeId() == "antibiotics"; @@ -217,7 +216,7 @@ void mission_start::infect_npc( mission *miss ) void mission_start::need_drugs_npc( mission *miss ) { npc *p = g->find_npc( miss->npc_id ); - if( p == NULL ) { + if( p == nullptr ) { debugmsg( "mission_start::need_drugs_npc() couldn't find an NPC!" ); return; } @@ -233,7 +232,7 @@ void mission_start::place_dog( mission *miss ) { const tripoint house = random_house_in_closest_city(); npc *dev = g->find_npc( miss->npc_id ); - if( dev == NULL ) { + if( dev == nullptr ) { debugmsg( "Couldn't find NPC! %d", miss->npc_id ); return; } @@ -495,7 +494,7 @@ static tripoint find_potential_computer_point( tinymap &compmap, int z ) void mission_start::place_npc_software( mission *miss ) { npc *dev = g->find_npc( miss->npc_id ); - if( dev == NULL ) { + if( dev == nullptr ) { debugmsg( "Couldn't find NPC! %d", miss->npc_id ); return; } @@ -609,7 +608,7 @@ void mission_start::place_deposit_box( mission *miss ) void mission_start::reveal_lab_black_box( mission *miss ) { npc *dev = g->find_npc( miss->npc_id ); - if( dev != NULL ) { + if( dev != nullptr ) { g->u.i_add( item( "black_box", 0 ) ); add_msg( _( "%s gave you back the black box." ), dev->name.c_str() ); } @@ -619,7 +618,7 @@ void mission_start::reveal_lab_black_box( mission *miss ) void mission_start::open_sarcophagus( mission *miss ) { npc *p = g->find_npc( miss->npc_id ); - if( p != NULL ) { + if( p != nullptr ) { p->set_attitude( NPCATT_FOLLOW ); g->u.i_add( item( "sarcophagus_access_code", 0 ) ); add_msg( m_good, _( "%s gave you sarcophagus access code." ), p->name.c_str() ); @@ -632,7 +631,7 @@ void mission_start::open_sarcophagus( mission *miss ) void mission_start::reveal_hospital( mission *miss ) { npc *dev = g->find_npc( miss->npc_id ); - if( dev != NULL ) { + if( dev != nullptr ) { g->u.i_add( item( "vacutainer", 0 ) ); add_msg( _( "%s gave you a blood draw kit." ), dev->name.c_str() ); g->u.i_add( item( "usb_drive", 0 ) ); @@ -1675,7 +1674,7 @@ void mission_start::ranch_bartender_2( mission *miss ) bay.draw_square_ter( t_wall_half, 14, 10, 19, 15 ); bay.draw_square_ter( t_dirt, 15, 11, 18, 14 ); bay.draw_square_ter( t_wall_half, 14, 15, 17, 18 ); - bay.draw_square_ter( t_dirt, 15, 15, 16, 18 );; + bay.draw_square_ter( t_dirt, 15, 15, 16, 18 ); bay.translate( t_door_frame, t_door_c ); bay.translate( t_wall_half, t_wall_wood ); bay.draw_square_ter( t_window_frame, 0, 13, 0, 13 ); @@ -1786,7 +1785,7 @@ void reveal_target( mission *miss, const std::string &omter_id ) void reveal_any_target( mission *miss, const std::vector &omter_ids ) { - reveal_target( miss, random_entry( omter_ids ).c_str() ); + reveal_target( miss, random_entry( omter_ids ) ); } void mission_start::reveal_weather_station( mission *miss ) diff --git a/src/mission_ui.cpp b/src/mission_ui.cpp index 4a63fbcc2b6cb..2e54e7752e86c 100644 --- a/src/mission_ui.cpp +++ b/src/mission_ui.cpp @@ -1,16 +1,15 @@ -#include "game.h" -#include "player.h" -#include "output.h" -#include "input.h" #include "mission.h" -#include "weather.h" + #include "calendar.h" #include "compatibility.h" // needed for the workaround for the std::to_string bug in some compilers -#include "string_formatter.h" +#include "game.h" +#include "input.h" +#include "output.h" +#include "player.h" -#include -#include #include +#include +#include void game::list_missions() { @@ -63,7 +62,7 @@ void game::list_missions() // entries_per_page * page number const int top_of_page = entries_per_page * ( selection / entries_per_page ); const int bottom_of_page = - std::min( top_of_page + entries_per_page - 1, ( int )umissions.size() - 1 ); + std::min( top_of_page + entries_per_page - 1, static_cast( umissions.size() ) - 1 ); for( int i = 1; i < FULL_SCREEN_WIDTH - 1; i++ ) { mvwputch( w_missions, 2, i, BORDER_COLOR, LINE_OXOX ); @@ -96,15 +95,14 @@ void game::list_missions() const auto miss = umissions[i]; const nc_color col = u.get_active_mission() == miss ? c_light_green : c_white; const int y = i - top_of_page + 3; - trim_and_print( w_missions, y, 1, 28, ( int )selection == i ? hilite( col ) : col, + trim_and_print( w_missions, y, 1, 28, static_cast( selection ) == i ? hilite( col ) : col, miss->name() ); } if( selection < umissions.size() ) { - int lines; const auto miss = umissions[selection]; const nc_color col = u.get_active_mission() == miss ? c_light_green : c_white; - lines = fold_and_print( w_missions, 3, 31, getmaxx( w_missions ) - 33, col, miss->name() ); + int lines = fold_and_print( w_missions, 3, 31, getmaxx( w_missions ) - 33, col, miss->name() ); int y = 3 + lines; if( !miss->get_description().empty() ) { @@ -149,13 +147,13 @@ void game::list_missions() wrefresh( w_missions ); const std::string action = ctxt.handle_input(); if( action == "RIGHT" ) { - tab = ( tab_mode )( ( int )tab + 1 ); + tab = static_cast( static_cast( tab ) + 1 ); if( tab >= tab_mode::NUM_TABS ) { tab = tab_mode::FIRST_TAB; } selection = 0; } else if( action == "LEFT" ) { - tab = ( tab_mode )( ( int )tab - 1 ); + tab = static_cast( static_cast( tab ) - 1 ); if( tab < tab_mode::FIRST_TAB ) { tab = tab_mode::LAST_TAB; } diff --git a/src/missiondef.cpp b/src/missiondef.cpp index f427696591112..4081971070024 100644 --- a/src/missiondef.cpp +++ b/src/missiondef.cpp @@ -1,10 +1,10 @@ #include "mission.h" -#include "translations.h" -#include "rng.h" -#include "generic_factory.h" + +#include "assign.h" #include "calendar.h" +#include "generic_factory.h" #include "item.h" -#include "assign.h" +#include "rng.h" #include diff --git a/src/mod_manager.cpp b/src/mod_manager.cpp index 7a2a06f75b909..712676a4c22ba 100644 --- a/src/mod_manager.cpp +++ b/src/mod_manager.cpp @@ -1,21 +1,18 @@ #include "mod_manager.h" -#include "filesystem.h" + +#include "cata_utility.h" #include "debug.h" -#include "output.h" -#include "json.h" +#include "dependency_tree.h" +#include "filesystem.h" #include "generic_factory.h" -#include "string_formatter.h" -#include "worldfactory.h" -#include "cata_utility.h" +#include "json.h" +#include "output.h" #include "path_info.h" +#include "string_formatter.h" #include "translations.h" -#include "dependency_tree.h" +#include "worldfactory.h" -#include #include -#include -#include -#include static const std::string MOD_SEARCH_FILE( "modinfo.json" ); @@ -389,7 +386,7 @@ std::string mod_manager::get_mods_list_file( const WORLDPTR world ) void mod_manager::save_mods_list( WORLDPTR world ) const { - if( world == NULL ) { + if( world == nullptr ) { return; } const std::string path = get_mods_list_file( world ); @@ -407,7 +404,7 @@ void mod_manager::save_mods_list( WORLDPTR world ) const void mod_manager::load_mods_list( WORLDPTR world ) const { - if( world == NULL ) { + if( world == nullptr ) { return; } std::vector &amo = world->active_mod_order; diff --git a/src/mod_manager.h b/src/mod_manager.h index 72eddec109624..c8fd40f4dc485 100644 --- a/src/mod_manager.h +++ b/src/mod_manager.h @@ -2,14 +2,13 @@ #ifndef MOD_MANAGER_H #define MOD_MANAGER_H -#include "string_id.h" #include "pimpl.h" +#include "string_id.h" -#include -#include #include #include -#include +#include +#include const std::vector > &get_mod_list_categories(); @@ -124,7 +123,6 @@ class mod_manager return usable_mods; } - protected: private: // Make this accessible for now friend class mod_ui; diff --git a/src/mod_manager_ui.cpp b/src/mod_manager_ui.cpp index 98e7b9ddea38c..8492fe50ed1e0 100644 --- a/src/mod_manager_ui.cpp +++ b/src/mod_manager_ui.cpp @@ -1,10 +1,10 @@ #include "mod_manager.h" -#include "input.h" -#include "output.h" + #include "debug.h" -#include "translations.h" -#include "string_formatter.h" #include "dependency_tree.h" +#include "output.h" +#include "string_formatter.h" +#include "translations.h" #include @@ -16,7 +16,7 @@ mod_ui::mod_ui( mod_manager &mman ) std::string mod_ui::get_information( const MOD_INFORMATION *mod ) { - if( mod == NULL ) { + if( mod == nullptr ) { return ""; } @@ -214,7 +214,7 @@ void mod_ui::try_shift( char direction, size_t &selection, std::vector & bool mod_ui::can_shift_up( long selection, const std::vector &active_list ) { // error catch for out of bounds - if( selection < 0 || selection >= ( int )active_list.size() ) { + if( selection < 0 || selection >= static_cast( active_list.size() ) ) { return false; } // dependencies of this active element @@ -247,27 +247,22 @@ bool mod_ui::can_shift_up( long selection, const std::vector &active_lis bool mod_ui::can_shift_down( long selection, const std::vector &active_list ) { // error catch for out of bounds - if( selection < 0 || selection >= ( int )active_list.size() ) { + if( selection < 0 || selection >= static_cast( active_list.size() ) ) { return false; } std::vector dependents = mm_tree.get_dependents_of_X_as_strings( active_list[selection] ); - int newsel; - int oldsel; - mod_id selstring; - mod_id modstring; - // figure out if we can move down! - if( selection == ( int )active_list.size() - 1 ) { + if( selection == static_cast( active_list.size() ) - 1 ) { // can't move down, don't bother trying return false; } - newsel = selection; - oldsel = selection + 1; + int newsel = selection; + int oldsel = selection + 1; - modstring = active_list[newsel]; - selstring = active_list[oldsel]; + mod_id modstring = active_list[newsel]; + mod_id selstring = active_list[oldsel]; if( modstring->core || std::find( dependents.begin(), dependents.end(), selstring ) != dependents.end() ) { diff --git a/src/mod_tileset.cpp b/src/mod_tileset.cpp index a317fc0759c0b..b0b0063d105e2 100644 --- a/src/mod_tileset.cpp +++ b/src/mod_tileset.cpp @@ -1,54 +1,36 @@ #include "mod_tileset.h" + #include "json.h" #include #include -std::vector all_mod_tilesets; +std::vector all_mod_tilesets; void load_mod_tileset( JsonObject &jsobj, const std::string &, const std::string &base_path, const std::string &full_path ) { // This function didn't loads image data actually, loads when tileset loading. - load_mod_tileset_into_array( jsobj, base_path, full_path, all_mod_tilesets ); -} - -void load_mod_tileset_into_array( JsonObject &jsobj, const std::string &base_path, - const std::string &full_path, - std::vector &mod_tileset_array ) -{ int new_num_in_file = 1; // Check mod tileset num in file - for( auto mts : mod_tileset_array ) { - if( mts->get_full_path() == full_path ) { + for( const mod_tileset &mts : all_mod_tilesets ) { + if( mts.get_full_path() == full_path ) { new_num_in_file++; } } - mod_tileset *new_mts = new mod_tileset( base_path, full_path, new_num_in_file ); + all_mod_tilesets.emplace_back( base_path, full_path, new_num_in_file ); std::vector compatibility = jsobj.get_string_array( "compatibility" ); - for( auto compatible_tileset_id : compatibility ) { - new_mts->add_compatible_tileset( compatible_tileset_id ); + for( const std::string &compatible_tileset_id : compatibility ) { + all_mod_tilesets.back().add_compatible_tileset( compatible_tileset_id ); } - mod_tileset_array.push_back( new_mts ); } void reset_mod_tileset() { - for( mod_tileset *mts : all_mod_tilesets ) { - delete mts; - } all_mod_tilesets.clear(); } -mod_tileset::mod_tileset( const mod_tileset &obj ) -{ - base_path_ = obj.base_path_; - full_path_ = obj.full_path_; - num_in_file_ = obj.num_in_file_; - copy( obj.compatibility.begin(), obj.compatibility.end(), back_inserter( compatibility ) ); -} - bool mod_tileset::is_compatible( const std::string &tileset_id ) const { auto iter = std::find( compatibility.begin(), compatibility.end(), tileset_id ); diff --git a/src/mod_tileset.h b/src/mod_tileset.h index 11542a8e38b0b..72102684a352f 100644 --- a/src/mod_tileset.h +++ b/src/mod_tileset.h @@ -8,31 +8,21 @@ class mod_tileset; class JsonObject; -extern std::vector all_mod_tilesets; +extern std::vector all_mod_tilesets; void load_mod_tileset( JsonObject &jsobj, const std::string &, const std::string &base_path, const std::string &full_path ); -void load_mod_tileset_into_array( JsonObject &jsobj, const std::string &base_path, - const std::string &full_path, - std::vector &mod_tileset_array ); void reset_mod_tileset(); class mod_tileset { public: - mod_tileset() { } - mod_tileset( const std::string &new_base_path, const std::string &new_full_path, int new_num_in_file ) : base_path_( new_base_path ), full_path_( new_full_path ), num_in_file_( new_num_in_file ) { } - mod_tileset( const mod_tileset &obj ); - ~mod_tileset() { - compatibility.clear(); - } - const std::string &get_base_path() const { return base_path_; } diff --git a/src/monattack.cpp b/src/monattack.cpp index 898a361942ad0..2f4879625f66e 100644 --- a/src/monattack.cpp +++ b/src/monattack.cpp @@ -1,52 +1,42 @@ #include "monattack.h" -#include "monster.h" #include "ballistics.h" -#include "dispersion.h" -#include "game.h" +#include "bodypart.h" #include "debug.h" -#include "map.h" -#include "output.h" +#include "dispersion.h" +#include "effect.h" +#include "event.h" +#include "field.h" #include "fungal_effects.h" -#include "rng.h" +#include "game.h" +#include "gun_mode.h" +#include "itype.h" +#include "iuse_actor.h" #include "line.h" -#include "bodypart.h" -#include "material.h" -#include "speech.h" +#include "map.h" +#include "map_iterator.h" +#include "mapdata.h" #include "messages.h" -#include "sounds.h" -#include "effect.h" #include "mondefense.h" -#include "projectile.h" -#include "iuse_actor.h" -#include "gun_mode.h" -#include "weighted_list.h" -#include "vpart_position.h" -#include "mongroup.h" -#include "translations.h" +#include "monster.h" #include "morale_types.h" +#include "mtype.h" #include "npc.h" -#include "event.h" +#include "output.h" +#include "projectile.h" +#include "rng.h" +#include "sounds.h" +#include "speech.h" +#include "text_snippets.h" +#include "translations.h" #include "ui.h" -#include "itype.h" #include "vehicle.h" -#include "mapdata.h" -#include "mtype.h" -#include "field.h" -#include "map_iterator.h" -#include "text_snippets.h" -#include +#include "vpart_position.h" +#include "weighted_list.h" #include - -//Used for e^(x) functions -#include -#include - -// for loading monster dialogue: -#include - -#include // std::numeric_limits +#include +#include const mtype_id mon_ant( "mon_ant" ); const mtype_id mon_ant_acid( "mon_ant_acid" ); @@ -127,9 +117,7 @@ static const trait_id trait_THRESH_MYCUS( "THRESH_MYCUS" ); // shared utility functions int within_visual_range( monster *z, int max_range ) { - int dist; - - dist = rl_dist( z->pos(), g->u.pos() ); + int dist = rl_dist( z->pos(), g->u.pos() ); if( dist > max_range || !z->sees( g->u ) ) { return -1; // Out of range } @@ -570,7 +558,7 @@ bool mattack::acid_accurate( monster *z ) proj.proj_effects.insert( "NO_DAMAGE_SCALING" ); proj.impact.add_damage( DT_ACID, rng( 3, 5 ) ); // Make it arbitrarily less accurate at close ranges - projectile_attack( proj, z->pos(), target->pos(), { 8000.0 * ( double )range }, z ); + projectile_attack( proj, z->pos(), target->pos(), { 8000.0 * static_cast( range ) }, z ); return true; } @@ -2923,9 +2911,8 @@ void mattack::tankgun( monster *z, Creature *target ) z->ammo[ammo_type] = 40; } - tripoint aim_point; int dist = rl_dist( z->pos(), target->pos() ); - aim_point = target->pos(); + tripoint aim_point = target->pos(); if( dist > 50 ) { return; } @@ -3169,7 +3156,7 @@ bool mattack::flamethrower( monster *z ) // Attacking monsters, not the player! int boo_hoo; Creature *target = z->auto_find_hostile_target( 5, boo_hoo ); - if( target == NULL ) { // Couldn't find any targets! + if( target == nullptr ) { // Couldn't find any targets! if( boo_hoo > 0 && g->u.sees( *z ) ) { // because that stupid oaf was in the way! add_msg( m_warning, ngettext( "Pointed in your direction, the %s emits an IFF warning beep.", "Pointed in your direction, the %s emits %d annoyed sounding beeps.", @@ -4508,7 +4495,7 @@ bool mattack::kamikaze( monster *z ) } struct grenade_helper_struct { - std::string message = ""; + std::string message; int chance = 1; float ammo_percentage = 1; }; @@ -4761,8 +4748,5 @@ bool mattack::dodge_check( monster *z, Creature *target ) { ///\EFFECT_DODGE increases chance of dodging, vs their melee skill float dodge = std::max( target->get_dodge() - rng( 0, z->get_hit() ), 0.0f ); - if( rng( 0, 10000 ) < 10000 / ( 1 + ( 99 * exp( -.6 * dodge ) ) ) ) { - return true; - } - return false; + return rng( 0, 10000 ) < 10000 / ( 1 + 99 * exp( -.6 * dodge ) ); } diff --git a/src/mondeath.cpp b/src/mondeath.cpp index 30665a0fc825b..6b70803c64bc5 100644 --- a/src/mondeath.cpp +++ b/src/mondeath.cpp @@ -1,27 +1,27 @@ #include "mondeath.h" -#include "monster.h" + +#include "event.h" +#include "field.h" +#include "fungal_effects.h" #include "game.h" +#include "itype.h" +#include "iuse_actor.h" +#include "line.h" #include "map.h" -#include "fungal_effects.h" #include "map_iterator.h" -#include "rng.h" -#include "line.h" #include "messages.h" +#include "monster.h" +#include "morale_types.h" +#include "mtype.h" #include "output.h" +#include "player.h" +#include "rng.h" #include "sounds.h" #include "string_formatter.h" -#include "iuse_actor.h" #include "translations.h" -#include "morale_types.h" -#include "event.h" -#include "itype.h" -#include "mtype.h" -#include "field.h" -#include "player.h" -#include // rounding -#include #include +#include #include const mtype_id mon_blob( "mon_blob" ); @@ -197,7 +197,7 @@ void mdeath::boomer( monster &z ) { std::string explode = string_format( _( "a %s explode!" ), z.name().c_str() ); sounds::sound( z.pos(), 24, explode ); - for( auto &&dest : g->m.points_in_radius( z.pos(), 1 ) ) { + for( auto &&dest : g->m.points_in_radius( z.pos(), 1 ) ) { // *NOPAD* g->m.bash( dest, 10 ); if( monster *const z = g->critter_at( dest ) ) { z->stumble(); @@ -217,7 +217,7 @@ void mdeath::boomer_glow( monster &z ) std::string explode = string_format( _( "a %s explode!" ), z.name().c_str() ); sounds::sound( z.pos(), 24, explode ); - for( auto &&dest : g->m.points_in_radius( z.pos(), 1 ) ) { + for( auto &&dest : g->m.points_in_radius( z.pos(), 1 ) ) { // *NOPAD* g->m.bash( dest, 10 ); if( monster *const z = g->critter_at( dest ) ) { z->stumble(); @@ -319,7 +319,7 @@ void mdeath::fungus( monster &z ) sounds::sound( z.pos(), 10, _( "Pouf!" ) ); fungal_effects fe( *g, g->m ); - for( auto &&sporep : g->m.points_in_radius( z.pos(), 1 ) ) { + for( auto &&sporep : g->m.points_in_radius( z.pos(), 1 ) ) { // *NOPAD* if( g->m.impassable( sporep ) ) { continue; } @@ -347,7 +347,7 @@ void mdeath::worm( monster &z ) } std::vector wormspots; - for( auto &&wormp : g->m.points_in_radius( z.pos(), 1 ) ) { + for( auto &&wormp : g->m.points_in_radius( z.pos(), 1 ) ) { // *NOPAD* if( g->m.has_flag( "DIGGABLE", wormp ) && g->is_empty( wormp ) ) { wormspots.push_back( wormp ); } @@ -418,10 +418,10 @@ void mdeath::guilt( monster &z ) add_msg( msgtype, msg.c_str(), z.name().c_str() ); - int moraleMalus = -50 * ( 1.0 - ( ( float ) kill_count / maxKills ) ); - int maxMalus = -250 * ( 1.0 - ( ( float ) kill_count / maxKills ) ); - time_duration duration = 30_minutes * ( 1.0 - ( ( float ) kill_count / maxKills ) ); - time_duration decayDelay = 3_minutes * ( 1.0 - ( ( float ) kill_count / maxKills ) ); + int moraleMalus = -50 * ( 1.0 - ( static_cast( kill_count ) / maxKills ) ); + int maxMalus = -250 * ( 1.0 - ( static_cast( kill_count ) / maxKills ) ); + time_duration duration = 30_minutes * ( 1.0 - ( static_cast( kill_count ) / maxKills ) ); + time_duration decayDelay = 3_minutes * ( 1.0 - ( static_cast( kill_count ) / maxKills ) ); if( z.type->in_species( ZOMBIE ) ) { moraleMalus /= 10; if( g->u.has_trait( trait_PACIFIST ) ) { @@ -456,7 +456,7 @@ void mdeath::blobsplit( monster &z ) } std::vector valid; - for( auto &&dest : g->m.points_in_radius( z.pos(), 1 ) ) { + for( auto &&dest : g->m.points_in_radius( z.pos(), 1 ) ) { // *NOPAD* if( g->is_empty( dest ) && z.can_move_to( dest ) ) { valid.push_back( dest ); } @@ -560,7 +560,7 @@ void mdeath::focused_beam( monster &z ) } } - if( z.inv.size() > 0 ) { + if( !z.inv.empty() ) { if( g->u.sees( z ) ) { add_msg( m_warning, _( "As the final light is destroyed, it erupts in a blinding flare!" ) ); @@ -612,7 +612,7 @@ void mdeath::ratking( monster &z ) } std::vector ratspots; - for( auto &&ratp : g->m.points_in_radius( z.pos(), 1 ) ) { + for( auto &&ratp : g->m.points_in_radius( z.pos(), 1 ) ) { // *NOPAD* if( g->is_empty( ratp ) ) { ratspots.push_back( ratp ); } @@ -705,7 +705,7 @@ void mdeath::detonate( monster &z ) // Update any hardcoded explosion equivalencies std::vector> dets; - for( auto bomb_id : pre_dets ) { + for( const std::string &bomb_id : pre_dets ) { if( bomb_id == "bot_grenade_hack" ) { dets.push_back( std::make_pair( "grenade_act", 5 ) ); } else if( bomb_id == "bot_flashbang_hack" ) { diff --git a/src/mondefense.cpp b/src/mondefense.cpp index fd08e408e2023..377f41d67aa1f 100644 --- a/src/mondefense.cpp +++ b/src/mondefense.cpp @@ -1,21 +1,18 @@ #include "mondefense.h" #include "ballistics.h" +#include "bodypart.h" +#include "creature.h" #include "damage.h" #include "dispersion.h" -#include "gun_mode.h" -#include "monster.h" -#include "creature.h" #include "game.h" +#include "messages.h" +#include "monster.h" #include "output.h" +#include "player.h" #include "projectile.h" #include "rng.h" -#include "line.h" -#include "bodypart.h" -#include "messages.h" #include "translations.h" -#include "field.h" -#include "player.h" #include diff --git a/src/monexamine.cpp b/src/monexamine.cpp index a469f270047a8..87835d65c987e 100644 --- a/src/monexamine.cpp +++ b/src/monexamine.cpp @@ -1,12 +1,13 @@ #include "monexamine.h" -#include "monster.h" -#include "item.h" + +#include "calendar.h" #include "game.h" -#include "translations.h" +#include "item.h" #include "messages.h" +#include "monster.h" #include "mtype.h" -#include "calendar.h" #include "player.h" +#include "translations.h" #include const efftype_id effect_milked( "milked" ); diff --git a/src/monfaction.cpp b/src/monfaction.cpp index 2e0d65787071f..6e26ab2e48721 100644 --- a/src/monfaction.cpp +++ b/src/monfaction.cpp @@ -1,8 +1,10 @@ #include "monfaction.h" + #include "debug.h" #include "json.h" -#include + #include +#include std::unordered_map< mfaction_str_id, mfaction_id > faction_map; std::vector< monfaction > faction_list; @@ -222,10 +224,9 @@ void add_to_attitude_map( const std::set< std::string > &keys, mfaction_att_map void monfactions::load_monster_faction( JsonObject &jo ) { // Factions inherit values from their parent factions - this is set during finalization - std::set< std::string > by_mood, neutral, friendly; - by_mood = jo.get_tags( "by_mood" ); - neutral = jo.get_tags( "neutral" ); - friendly = jo.get_tags( "friendly" ); + std::set< std::string > by_mood = jo.get_tags( "by_mood" ); + std::set< std::string > neutral = jo.get_tags( "neutral" ); + std::set< std::string > friendly = jo.get_tags( "friendly" ); // Need to make sure adding new factions won't invalidate our current faction's reference // That +1 is for base faction faction_list.reserve( faction_list.size() + by_mood.size() + neutral.size() + friendly.size() + 1 ); diff --git a/src/monfaction.h b/src/monfaction.h index a88d2ced17940..64cceb50b7d3d 100644 --- a/src/monfaction.h +++ b/src/monfaction.h @@ -2,8 +2,9 @@ #ifndef MONFACTION_H #define MONFACTION_H -#include "string_id.h" #include "int_id.h" +#include "string_id.h" + #include class monfaction; diff --git a/src/mongroup.cpp b/src/mongroup.cpp index f63c60c173c7d..9feac839a1ded 100644 --- a/src/mongroup.cpp +++ b/src/mongroup.cpp @@ -1,14 +1,12 @@ #include "mongroup.h" -#include -#include "rng.h" +#include "assign.h" +#include "calendar.h" #include "debug.h" -#include "options.h" -#include "monstergenerator.h" #include "json.h" #include "mtype.h" -#include "calendar.h" -#include "assign.h" +#include "options.h" +#include "rng.h" // Frequency: If you don't use the whole 1000 points of frequency for each of // the monsters, the remaining points will go to the defaultMonster. diff --git a/src/mongroup.h b/src/mongroup.h index 897490ad4187f..32647aefcd8e2 100644 --- a/src/mongroup.h +++ b/src/mongroup.h @@ -2,14 +2,14 @@ #ifndef MONGROUP_H #define MONGROUP_H -#include -#include -#include -#include -#include "enums.h" -#include "string_id.h" #include "calendar.h" +#include "enums.h" #include "monster.h" +#include "string_id.h" + +#include +#include +#include // from overmap.h class overmap; @@ -105,7 +105,7 @@ struct mongroup { * And "roam", who roam around the map randomly, not taking care to return * anywhere. */ - std::string horde_behaviour = ""; + std::string horde_behaviour; bool diffuse = false; // group size ind. of dist. from center and radius invariant mongroup( const mongroup_id &ptype, int pposx, int pposy, int pposz, unsigned int prad, unsigned int ppop ) @@ -113,17 +113,13 @@ struct mongroup { , pos( pposx, pposy, pposz ) , radius( prad ) , population( ppop ) - , target() - , interest( 0 ) - , dying( false ) - , horde( false ) - , diffuse( false ) { + , target() { } mongroup( std::string ptype, tripoint ppos, unsigned int prad, unsigned int ppop, tripoint ptarget, int pint, bool pdie, bool phorde, bool pdiff ) : type( ptype ), pos( ppos ), radius( prad ), population( ppop ), target( ptarget ), interest( pint ), dying( pdie ), horde( phorde ), diffuse( pdiff ) { } - mongroup() { } + mongroup() = default; bool is_safe() const; bool empty() const; void clear(); diff --git a/src/monmove.cpp b/src/monmove.cpp index 8acaabcbdf9c9..163dc5bc6351a 100644 --- a/src/monmove.cpp +++ b/src/monmove.cpp @@ -1,31 +1,26 @@ // Monster movement code; essentially, the AI -#include "monster.h" -#include "map.h" -#include "map_iterator.h" +#include "cursesdef.h" #include "debug.h" +#include "field.h" #include "game.h" -#include "output.h" #include "line.h" -#include "rng.h" -#include "pldata.h" +#include "map.h" +#include "map_iterator.h" +#include "mapdata.h" #include "messages.h" -#include "cursesdef.h" -#include "trap.h" -#include "sounds.h" -#include "monattack.h" #include "monfaction.h" -#include "translations.h" -#include "npc.h" -#include "mapdata.h" +#include "monster.h" #include "mtype.h" -#include "field.h" +#include "npc.h" +#include "output.h" +#include "rng.h" #include "scent_map.h" +#include "sounds.h" +#include "translations.h" +#include "trap.h" -#include -//Used for e^(x) functions -#include -#include +#include #define MONSTER_FOLLOW_DIST 8 @@ -77,7 +72,7 @@ bool monster::can_move_to( const tripoint &p ) const return false; } - if( !can_submerge() && g->m.has_flag( TFLAG_DEEP_WATER, p ) ) { + if( ( !can_submerge() && !has_flag( MF_FLIES ) ) && g->m.has_flag( TFLAG_DEEP_WATER, p ) ) { return false; } if( has_flag( MF_DIGS ) && !g->m.has_flag( "DIGGABLE", p ) ) { @@ -1046,8 +1041,7 @@ bool monster::move_to( const tripoint &p, bool force, const float stagger_adjust // and the same regardless of the distance measurement mode. // Note: Keep this as float here or else it will cancel valid moves const float cost = stagger_adjustment * - ( float )( climbs ? calc_climb_cost( pos(), p ) : - calc_movecost( pos(), p ) ); + static_cast( climbs ? calc_climb_cost( pos(), p ) : calc_movecost( pos(), p ) ); if( cost > 0.0f ) { moves -= static_cast( ceil( cost ) ); } else { @@ -1059,7 +1053,13 @@ bool monster::move_to( const tripoint &p, bool force, const float stagger_adjust bool was_water = g->m.is_divable( pos() ); bool will_be_water = on_ground && can_submerge() && g->m.is_divable( p ); - if( was_water && !will_be_water && g->u.sees( p ) ) { + //Birds and other flying creatures flying over the deep water terrain + if( was_water && flies && g->u.sees( p ) ) { + if( one_in( 4 ) ) { + add_msg( m_warning, _( "A %1$s flies over the %2$s!" ), name().c_str(), + g->m.tername( pos() ).c_str() ); + } + } else if( was_water && !will_be_water && g->u.sees( p ) ) { //Use more dramatic messages for swimming monsters add_msg( m_warning, _( "A %1$s %2$s from the %3$s!" ), name().c_str(), has_flag( MF_SWIMS ) || has_flag( MF_AQUATIC ) ? _( "leaps" ) : _( "emerges" ), @@ -1340,7 +1340,7 @@ void monster::knock_back_from( const tripoint &p ) die( nullptr ); return; } - tripoint to = pos();; + tripoint to = pos(); if( p.x < posx() ) { to.x++; } diff --git a/src/monster.cpp b/src/monster.cpp index 8cd9fcdc3e2a0..2b207fa8fa4c1 100644 --- a/src/monster.cpp +++ b/src/monster.cpp @@ -1,38 +1,38 @@ #include "monster.h" #include "coordinate_conversions.h" -#include "map.h" -#include "map_iterator.h" -#include "mondeath.h" -#include "output.h" -#include "game.h" -#include "projectile.h" -#include "debug.h" -#include "rng.h" -#include "item.h" -#include "translations.h" -#include "overmapbuffer.h" -#include -#include -#include -#include #include "cursesdef.h" +#include "debug.h" #include "effect.h" +#include "field.h" +#include "game.h" +#include "item.h" +#include "line.h" +#include "map.h" +#include "map_iterator.h" +#include "mapdata.h" #include "melee.h" #include "messages.h" -#include "mondefense.h" #include "mission.h" -#include "mongroup.h" +#include "mondeath.h" +#include "mondefense.h" #include "monfaction.h" -#include "string_formatter.h" -#include "options.h" -#include "trap.h" -#include "line.h" -#include "mapdata.h" +#include "mongroup.h" #include "mtype.h" -#include "field.h" -#include "sounds.h" #include "npc.h" +#include "options.h" +#include "output.h" +#include "overmapbuffer.h" +#include "projectile.h" +#include "rng.h" +#include "sounds.h" +#include "string_formatter.h" +#include "translations.h" +#include "trap.h" + +#include +#include +#include // Limit the number of iterations for next upgrade_time calculations. // This also sets the percentage of monsters that will never upgrade. @@ -128,9 +128,6 @@ static const trait_id trait_ANIMALEMPATH( "ANIMALEMPATH" ); static const trait_id trait_BEE( "BEE" ); static const trait_id trait_FLOWERS( "FLOWERS" ); static const trait_id trait_PACIFIST( "PACIFIST" ); -static const trait_id trait_PHEROMONE_INSECT( "PHEROMONE_INSECT" ); -static const trait_id trait_PHEROMONE_MAMMAL( "PHEROMONE_MAMMAL" ); -static const trait_id trait_TERRIFYING( "TERRIFYING" ); static const std::map size_names { {m_size::MS_TINY, translate_marker( "tiny" )}, @@ -1185,8 +1182,6 @@ void monster::melee_attack( Creature &target, float accuracy ) const bool u_see_me = g->u.sees( *this ); - body_part bp_hit; - damage_instance damage = !is_hallucination() ? type->melee_damage : damage_instance(); if( !is_hallucination() && type->melee_dice > 0 ) { damage.add_damage( DT_BASH, dice( type->melee_dice, type->melee_sides ) ); @@ -1197,7 +1192,7 @@ void monster::melee_attack( Creature &target, float accuracy ) if( hitspread >= 0 ) { target.deal_melee_hit( this, hitspread, false, damage, dealt_dam ); } - bp_hit = dealt_dam.bp_hit; + body_part bp_hit = dealt_dam.bp_hit; const int total_dealt = dealt_dam.total_damage(); if( hitspread < 0 ) { @@ -1222,7 +1217,7 @@ void monster::melee_attack( Creature &target, float accuracy ) //~ 1$s is attacker name, 2$s is bodypart name in accusative. sfx::play_variant_sound( "melee_attack", "monster_melee_hit", sfx::get_heard_volume( target.pos() ) ); - sfx::do_player_death_hurt( dynamic_cast( target ), 0 ); + sfx::do_player_death_hurt( dynamic_cast( target ), false ); add_msg( m_bad, _( "The %1$s hits your %2$s." ), name().c_str(), body_part_name_accusative( bp_hit ).c_str() ); } else if( target.is_npc() ) { @@ -2197,7 +2192,7 @@ void monster::make_ally( const monster &z ) faction = z.faction; } -void monster::add_item( item it ) +void monster::add_item( const item &it ) { inv.push_back( it ); } @@ -2343,7 +2338,7 @@ void monster::on_hit( Creature *source, body_part, return; } - if( rng( 0, 100 ) <= ( long )type->def_chance ) { + if( rng( 0, 100 ) <= static_cast( type->def_chance ) ) { type->sp_defense( *this, source, proj ); } diff --git a/src/monster.h b/src/monster.h index 82f46e5540232..6881cbd1c51aa 100644 --- a/src/monster.h +++ b/src/monster.h @@ -2,17 +2,17 @@ #ifndef MONSTER_H #define MONSTER_H +#include "calendar.h" #include "creature.h" #include "enums.h" #include "int_id.h" -#include "calendar.h" -#include +#include #include #include -#include -#include #include +#include +#include class JsonObject; class JsonIn; @@ -369,7 +369,8 @@ class monster : public Creature void make_friendly(); /** Makes this monster an ally of the given monster. */ void make_ally( const monster &z ); - void add_item( item it ); // Add an item to inventory + // Add an item to inventory + void add_item( const item &it ); /** * Makes monster react to heard sound diff --git a/src/monstergenerator.cpp b/src/monstergenerator.cpp index 05813501bb72c..419e7e1a34843 100644 --- a/src/monstergenerator.cpp +++ b/src/monstergenerator.cpp @@ -5,22 +5,21 @@ #include "creature.h" #include "debug.h" #include "generic_factory.h" +#include "harvest.h" #include "item.h" #include "item_group.h" +#include "json.h" #include "mattack_actors.h" #include "monattack.h" #include "mondeath.h" -#include "json.h" #include "mondefense.h" #include "monfaction.h" #include "mongroup.h" #include "mtype.h" +#include "options.h" #include "output.h" #include "rng.h" #include "translations.h" -#include "material.h" -#include "options.h" -#include "harvest.h" #include @@ -181,9 +180,8 @@ void MonsterGenerator::set_mtype_flags( mtype &mon ) { // The flag vectors are slow, given how often has_flags() is called, // so instead we'll use bitsets and initialize them here. - m_flag nflag; for( std::set::iterator flag = mon.flags.begin(); flag != mon.flags.end(); ++flag ) { - nflag = m_flag( *flag ); + m_flag nflag = m_flag( *flag ); mon.bitflags[nflag] = true; } monster_trigger ntrig; diff --git a/src/monstergenerator.h b/src/monstergenerator.h index d29f9e7ab225b..f3580e290aeba 100644 --- a/src/monstergenerator.h +++ b/src/monstergenerator.h @@ -1,16 +1,15 @@ #pragma once -#ifndef MONSTER_GENERATOR_H -#define MONSTER_GENERATOR_H +#ifndef MONSTERGENERATOR_H +#define MONSTERGENERATOR_H #include "enums.h" -#include "string_id.h" #include "mattack_common.h" #include "pimpl.h" +#include "string_id.h" #include -#include -#include #include +#include class JsonObject; class Creature; @@ -93,7 +92,6 @@ class MonsterGenerator void init_defense(); void init_trigger(); void init_flags(); - void init_mf_attitude(); void add_hardcoded_attack( const std::string &type, const mon_action_attack f ); void add_attack( mattack_actor *ptr ); diff --git a/src/morale.cpp b/src/morale.cpp index 1e9ffc5dc808c..c411fd93edeb2 100644 --- a/src/morale.cpp +++ b/src/morale.cpp @@ -1,18 +1,17 @@ #include "morale.h" -#include "morale_types.h" +#include "bodypart.h" #include "cata_utility.h" +#include "catacharset.h" +#include "cursesdef.h" #include "debug.h" +#include "input.h" #include "item.h" #include "itype.h" -#include "output.h" -#include "cursesdef.h" +#include "morale_types.h" #include "options.h" -#include "bodypart.h" +#include "output.h" #include "translations.h" -#include "catacharset.h" -#include "weather.h" -#include "input.h" #include #include @@ -24,9 +23,8 @@ static const efftype_id effect_took_prozac_bad( "took_prozac_bad" ); namespace { -static const std::string item_name_placeholder = "%s"; // Used to address an item name -bool is_permanent_morale( const morale_type id ) +bool is_permanent_morale( const morale_type &id ) { static const std::set permanent_morale = {{ MORALE_PERM_OPTIMIST, diff --git a/src/morale.h b/src/morale.h index c5ab1a7e5095e..c9353bc52038c 100644 --- a/src/morale.h +++ b/src/morale.h @@ -2,16 +2,13 @@ #ifndef MORALE_H #define MORALE_H -#include "string_id.h" -#include "calendar.h" #include "bodypart.h" +#include "calendar.h" #include "morale_types.h" -#include -#include -#include -#include #include +#include +#include class item; class JsonIn; @@ -71,7 +68,7 @@ class player_morale { public: morale_point( - morale_type type = MORALE_NULL, + const morale_type &type = MORALE_NULL, const itype *item_type = nullptr, int bonus = 0, int max_bonus = 0, @@ -155,7 +152,7 @@ class player_morale fancy( 0 ), filthy( 0 ), hot( 0 ), - cold( 0 ) {}; + cold( 0 ) {} }; std::array body_parts; body_part_data no_body_part; @@ -167,11 +164,11 @@ class player_morale mutation_data( mutation_handler on_gain_and_loss ) : on_gain( on_gain_and_loss ), on_loss( on_gain_and_loss ), - active( false ) {}; + active( false ) {} mutation_data( mutation_handler on_gain, mutation_handler on_loss ) : on_gain( on_gain ), on_loss( on_loss ), - active( false ) {}; + active( false ) {} void set_active( player_morale *sender, bool new_active ); bool get_active() const; void clear(); diff --git a/src/morale_types.cpp b/src/morale_types.cpp index dae68efaaaeff..01abcc91d9c63 100644 --- a/src/morale_types.cpp +++ b/src/morale_types.cpp @@ -1,7 +1,8 @@ #include "morale_types.h" + #include "generic_factory.h" -#include "json.h" #include "itype.h" +#include "json.h" #include "string_formatter.h" const morale_type &morale_type_data::convert_legacy( int lmt ) diff --git a/src/mtype.cpp b/src/mtype.cpp index 7e284f5272cc8..f950b3bebaa19 100644 --- a/src/mtype.cpp +++ b/src/mtype.cpp @@ -1,14 +1,15 @@ #include "mtype.h" -#include "itype.h" -#include "debug.h" -#include "item.h" + #include "creature.h" -#include "translations.h" -#include "monstergenerator.h" -#include "mondeath.h" #include "field.h" +#include "item.h" +#include "itype.h" +#include "mondeath.h" +#include "monstergenerator.h" +#include "translations.h" #include +#include const species_id MOLLUSK( "MOLLUSK" ); diff --git a/src/mtype.h b/src/mtype.h index aa7c496f42bbf..260d50df7c049 100644 --- a/src/mtype.h +++ b/src/mtype.h @@ -1,24 +1,20 @@ #pragma once #ifndef MTYPE_H #define MTYPE_H -// SEE ALSO: monitemsdef.cpp, which defines data on which items any given -// monster may carry. -#include "enums.h" #include "color.h" -#include "int_id.h" -#include "string_id.h" #include "damage.h" -#include "pathfinding.h" +#include "enums.h" +#include "int_id.h" #include "mattack_common.h" +#include "pathfinding.h" +#include "string_id.h" #include "units.h" #include -#include -#include -#include #include -#include +#include +#include class Creature; class monster; @@ -185,7 +181,7 @@ struct mon_effect_data { mon_effect_data( const efftype_id &nid, int dur, bool ahbp, body_part nbp, bool perm, int nchance ) : id( nid ), duration( dur ), affect_hit_bp( ahbp ), bp( nbp ), permanent( perm ), - chance( nchance ) {}; + chance( nchance ) {} }; struct mtype { diff --git a/src/mutation.cpp b/src/mutation.cpp index ba9a509976e15..61a8981bd723c 100644 --- a/src/mutation.cpp +++ b/src/mutation.cpp @@ -1,23 +1,17 @@ #include "mutation.h" -#include "player.h" + #include "action.h" +#include "field.h" #include "game.h" -#include "map.h" #include "item.h" #include "itype.h" -#include "translations.h" -#include "messages.h" -#include "monster.h" -#include "overmapbuffer.h" +#include "map.h" #include "map_iterator.h" -#include "sounds.h" -#include "options.h" #include "mapdata.h" -#include "string_formatter.h" -#include "debug.h" -#include "field.h" -#include "vitamin.h" +#include "monster.h" #include "output.h" +#include "player.h" +#include "translations.h" #include "ui.h" #include @@ -25,8 +19,6 @@ const efftype_id effect_stunned( "stunned" ); static const trait_id trait_ROBUST( "ROBUST" ); -static const trait_id trait_GLASSJAW( "GLASSJAW" ); -static const trait_id trait_BURROW( "BURROW" ); static const trait_id trait_SLIMESPAWNER( "SLIMESPAWNER" ); static const trait_id trait_NAUSEA( "NAUSEA" ); static const trait_id trait_VOMITOUS( "VOMITOUS" ); @@ -44,7 +36,6 @@ static const trait_id trait_MUTAGEN_AVOID( "MUTAGEN_AVOID" ); static const trait_id trait_THRESH_MARLOSS( "THRESH_MARLOSS" ); static const trait_id trait_THRESH_MYCUS( "THRESH_MYCUS" ); static const trait_id trait_M_BLOSSOMS( "M_BLOSSOMS" ); -static const trait_id trait_M_DEPENDENT( "M_DEPENDENT" ); static const trait_id trait_M_SPORES( "M_SPORES" ); static const trait_id trait_NOPAIN( "NOPAIN" ); static const trait_id trait_CARNIVORE( "CARNIVORE" ); @@ -128,13 +119,6 @@ int Character::get_mod( const trait_id &mut, std::string arg ) const if( found != mod_data.end() ) { ret += found->second; } - /* Deactivated due to inability to store active mutation state - if (has_active_mutation(mut)) { - found = mod_data.find(std::make_pair(true, arg)); - if (found != mod_data.end()) { - ret += found->second; - } - } */ return ret; } @@ -349,7 +333,7 @@ void player::activate_mutation( const trait_id &mut ) _( "Churn up ground" ) } ); tripoint dirp; - if( choice == UIMENU_CANCEL ) { + if( choice == UILIST_CANCEL ) { tdata.powered = false; } else if( choice != 0 ) { tdata.powered = false; @@ -705,8 +689,7 @@ void player::mutate_category( const std::string &cat ) } // Pull the category's list for valid mutations - std::vector valid; - valid = mutations_category[cat]; + std::vector valid = mutations_category[cat]; // Remove anything we already have, that we have a child of, or that // goes against our intention of a good/bad mutation @@ -733,12 +716,12 @@ void player::mutate_category( const std::string &cat ) static std::vector get_all_mutation_prereqs( const trait_id &id ) { std::vector ret; - for( auto it : id->prereqs ) { + for( const trait_id &it : id->prereqs ) { ret.push_back( it ); std::vector these_prereqs = get_all_mutation_prereqs( it ); ret.insert( ret.end(), these_prereqs.begin(), these_prereqs.end() ); } - for( auto it : id->prereqs2 ) { + for( const trait_id &it : id->prereqs2 ) { ret.push_back( it ); std::vector these_prereqs = get_all_mutation_prereqs( it ); ret.insert( ret.end(), these_prereqs.begin(), these_prereqs.end() ); diff --git a/src/mutation.h b/src/mutation.h index c3b6dc29da3bf..a63cd400a17f4 100644 --- a/src/mutation.h +++ b/src/mutation.h @@ -2,18 +2,18 @@ #ifndef MUTATION_H #define MUTATION_H -#include "character.h" -#include "enums.h" // tripoint #include "bodypart.h" -#include "damage.h" #include "calendar.h" +#include "character.h" +#include "damage.h" +#include "enums.h" // tripoint #include "string_id.h" -#include -#include -#include + #include #include #include +#include +#include class nc_color; class JsonObject; @@ -129,6 +129,9 @@ struct mutation_branch { // Flat bonus/penalty to hp. float hp_adjustment = 0.0f; + // Subtracted from the range at which monsters see player, corresponding to percentage of change. Clamped to +/- 60 for effectiveness + float stealth_modifier = 0.0f; + // Extra metabolism rate multiplier. 1.0 doubles usage, -0.5 halves. float metabolism_modifier = 0.0f; // As above but for thirst. diff --git a/src/mutation_data.cpp b/src/mutation_data.cpp index 07e1abc056b0d..280e88f295638 100644 --- a/src/mutation_data.cpp +++ b/src/mutation_data.cpp @@ -1,17 +1,17 @@ #include "mutation.h" -#include "json.h" -#include "pldata.h" // traits -#include "enums.h" // tripoint + #include "bodypart.h" +#include "color.h" #include "debug.h" -#include "translations.h" +#include "enums.h" // tripoint +#include "json.h" +#include "pldata.h" // traits #include "trait_group.h" - -#include "color.h" +#include "translations.h" #include -#include #include +#include #include typedef std::map> TraitGroupMap; @@ -295,6 +295,7 @@ void mutation_branch::load( JsonObject &jsobj ) new_mut.hp_modifier = jsobj.get_float( "hp_modifier", 0.0f ); new_mut.hp_modifier_secondary = jsobj.get_float( "hp_modifier_secondary", 0.0f ); new_mut.hp_adjustment = jsobj.get_float( "hp_adjustment", 0.0f ); + new_mut.stealth_modifier = jsobj.get_float( "stealth_modifier", 0.0f ); new_mut.metabolism_modifier = jsobj.get_float( "metabolism_modifier", 0.0f ); new_mut.thirst_modifier = jsobj.get_float( "thirst_modifier", 0.0f ); @@ -445,7 +446,7 @@ void mutation_branch::check_consistency() debugmsg( "mutation %s refers to undefined martial art style %s", mid.c_str(), style.c_str() ); } } - for( const std::string type : mdata.types ) { + for( const std::string &type : mdata.types ) { if( !mutation_type_exists( type ) ) { debugmsg( "mutation %s refers to undefined mutation type %s", mid.c_str(), type ); } diff --git a/src/mutation_type.cpp b/src/mutation_type.cpp index 05e4f86cdb250..d976fd09254c4 100644 --- a/src/mutation_type.cpp +++ b/src/mutation_type.cpp @@ -1,6 +1,7 @@ -#include "json.h" #include "mutation.h" +#include "json.h" + struct mutation_type { std::string id; }; @@ -34,7 +35,7 @@ std::vector get_mutations_in_type( const std::string &id ) std::vector get_mutations_in_types( const std::set &ids ) { std::vector ret; - for( auto it : ids ) { + for( const std::string &it : ids ) { std::vector this_id = get_mutations_in_type( it ); ret.insert( ret.end(), this_id.begin(), this_id.end() ); } diff --git a/src/mutation_ui.cpp b/src/mutation_ui.cpp index 0f3a1ddb92941..3c1841a8f39cf 100644 --- a/src/mutation_ui.cpp +++ b/src/mutation_ui.cpp @@ -6,8 +6,8 @@ #include "input.h" #include "output.h" #include "player.h" -#include "translations.h" #include "string_formatter.h" +#include "translations.h" #include //std::min #include diff --git a/src/name.cpp b/src/name.cpp index bec7704686a4a..3679cc5b900c7 100644 --- a/src/name.cpp +++ b/src/name.cpp @@ -1,12 +1,13 @@ #include "name.h" -#include -#include +#include "cata_utility.h" #include "json.h" +#include "rng.h" #include "string_formatter.h" #include "translations.h" -#include "rng.h" -#include "cata_utility.h" + +#include +#include namespace Name { diff --git a/src/name.h b/src/name.h index 96e6c8a7f28c2..8db45aa699598 100644 --- a/src/name.h +++ b/src/name.h @@ -28,7 +28,7 @@ std::string generate( bool is_male ); /// Clear names used for generation void clear(); -}; +} inline nameFlags operator|( nameFlags l, nameFlags r ) { diff --git a/src/ncurses_def.cpp b/src/ncurses_def.cpp index aec3537802e2a..be1fc43e3857e 100644 --- a/src/ncurses_def.cpp +++ b/src/ncurses_def.cpp @@ -8,7 +8,7 @@ // to be unchanged by the preprocessor, as we use them as function names. #define NCURSES_NOMACROS #if (defined __CYGWIN__) -#include "ncurses/curses.h" +#include #else #include #endif @@ -17,8 +17,8 @@ #include "catacharset.h" #include "color.h" - #include "game_ui.h" + #include extern int VIEW_OFFSET_X; // X position of terrain window diff --git a/src/newcharacter.cpp b/src/newcharacter.cpp index 59df02ed6c8c8..a244d2e4ec235 100644 --- a/src/newcharacter.cpp +++ b/src/newcharacter.cpp @@ -1,43 +1,40 @@ +#include "addiction.h" +#include "bionics.h" #include "cata_utility.h" +#include "catacharset.h" +#include "crafting.h" +#include "debug.h" +#include "game.h" +#include "input.h" +#include "json.h" +#include "mapsharing.h" +#include "martialarts.h" +#include "mutation.h" +#include "name.h" +#include "options.h" +#include "output.h" +#include "path_info.h" #include "player.h" #include "profession.h" #include "recipe_dictionary.h" +#include "rng.h" #include "scenario.h" +#include "skill.h" #include "start_location.h" -#include "input.h" -#include "output.h" -#include "bionics.h" -#include "units.h" -#include "rng.h" -#include "game.h" -#include "name.h" #include "string_formatter.h" -#include "options.h" -#include "skill.h" -#include "catacharset.h" -#include "debug.h" -#include "char_validity_check.h" -#include "path_info.h" -#include "mapsharing.h" +#include "string_input_popup.h" #include "translations.h" -#include "martialarts.h" -#include "addiction.h" #include "ui.h" -#include "mutation.h" -#include "crafting.h" -#include "string_input_popup.h" #include "worldfactory.h" -#include "json.h" -#include "martialarts.h" #ifndef _MSC_VER #include #endif -#include -#include -#include + #include #include +#include +#include // Colors used in this file: (Most else defaults to c_light_gray) #define COL_STAT_ACT c_white // Selected stat @@ -656,7 +653,7 @@ void draw_tabs( const catacurses::window &w, const std::string &sTab ) size_t temp_len = 0; size_t tabs_length = 0; std::vector tab_len; - for( auto tab_name : tab_captions ) { + for( const std::string &tab_name : tab_captions ) { // String length + borders temp_len = utf8_width( tab_name ) + 2; tabs_length += temp_len; @@ -668,7 +665,7 @@ void draw_tabs( const catacurses::window &w, const std::string &sTab ) // Initial value of next_pos is free space too. // '1' is used for SDL/curses screen column reference. int free_space = ( TERMX - tabs_length - 1 - next_pos ); - int spaces = free_space / ( ( int )tab_captions.size() - 1 ); + int spaces = free_space / ( static_cast( tab_captions.size() ) - 1 ); if( spaces < 0 ) { spaces = 0; } @@ -702,7 +699,7 @@ void draw_points( const catacurses::window &w, points_left &points, int netPoint } template -void draw_sorting_indicator( const catacurses::window &w_sorting, input_context ctxt, +void draw_sorting_indicator( const catacurses::window &w_sorting, const input_context &ctxt, Compare sorter ) { auto const sort_order = sorter.sort_by_points ? _( "points" ) : _( "name" ); @@ -760,7 +757,7 @@ Scenarios and professions affect skill point pool" ) ); do { if( highlighted < 0 ) { highlighted = opts.size() - 1; - } else if( highlighted >= ( int )opts.size() ) { + } else if( highlighted >= static_cast( opts.size() ) ) { highlighted = 0; } @@ -771,7 +768,7 @@ Scenarios and professions affect skill point pool" ) ); // Clear the bottom of the screen. werase( w_description ); - for( int i = 0; i < ( int )opts.size(); i++ ) { + for( int i = 0; i < static_cast( opts.size() ); i++ ) { nc_color color = ( points.limit == std::get<0>( opts[i] ) ? COL_SKILL_USED : c_light_gray ); if( highlighted == i ) { color = hilite( color ); @@ -1133,9 +1130,9 @@ tab_direction set_traits( const catacurses::window &w, player &u, points_left &p traits_size[iCurrentPage] ); //Draw Traits - for( int i = start_y; i < ( int )traits_size[iCurrentPage]; i++ ) { + for( int i = start_y; i < static_cast( traits_size[iCurrentPage] ); i++ ) { if( i < start_y || - i >= start_y + ( int )std::min( traits_size[iCurrentPage], iContentHeight ) ) { + i >= start_y + static_cast( std::min( traits_size[iCurrentPage], iContentHeight ) ) ) { continue; } auto &cur_trait = vStartingTraits[iCurrentPage][i]; @@ -1545,7 +1542,7 @@ tab_direction set_profession( const catacurses::window &w, player &u, points_lef const std::string action = ctxt.handle_input(); if( action == "DOWN" ) { cur_id++; - if( cur_id > ( int )profs_length - 1 ) { + if( cur_id > static_cast( profs_length ) - 1 ) { cur_id = 0; } desc_offset = 0; @@ -1688,7 +1685,7 @@ tab_direction set_skills( const catacurses::window &w, player &u, points_left &p } } - std::string rec_disp = ""; + std::string rec_disp; for( auto &elem : recipes ) { std::sort( elem.second.begin(), elem.second.end(), @@ -2170,7 +2167,7 @@ tab_direction set_description( const catacurses::window &w, player &u, const boo int offset = 0; for( const auto &loc : start_location::get_all() ) { if( g->scen->allowed_start( loc.ident() ) ) { - select_location.entries.push_back( uimenu_entry( loc.name() ) ); + select_location.entries.emplace_back( loc.name() ); if( loc.ident() == u.start_location ) { select_location.selected = offset; } @@ -2257,7 +2254,7 @@ tab_direction set_description( const catacurses::window &w, player &u, const boo if( level > 0 ) { mvwprintz( w_skills, line, 0, c_light_gray, elem->name() + ":" ); - mvwprintz( w_skills, line, 23, c_light_gray, "%-2d", ( int )level ); + mvwprintz( w_skills, line, 23, c_light_gray, "%-2d", static_cast( level ) ); line++; has_skills = true; } diff --git a/src/npc.cpp b/src/npc.cpp index 32e58276ab3f6..cdf5d1119362c 100644 --- a/src/npc.cpp +++ b/src/npc.cpp @@ -1,33 +1,33 @@ #include "npc.h" +#include "ammo.h" #include "auto_pickup.h" #include "coordinate_conversions.h" -#include "map.h" #include "game.h" #include "item_group.h" -#include "string_formatter.h" #include "itype.h" +#include "iuse_actor.h" +#include "json.h" +#include "map.h" #include "mapdata.h" -#include "overmapbuffer.h" #include "messages.h" -#include "skill.h" #include "mission.h" -#include "output.h" #include "monfaction.h" +#include "morale_types.h" +#include "mtype.h" #include "mutation.h" #include "npc_class.h" -#include "ammo.h" -#include "sounds.h" -#include "morale_types.h" +#include "output.h" #include "overmap.h" -#include "vehicle.h" +#include "overmapbuffer.h" +#include "skill.h" +#include "sounds.h" +#include "string_formatter.h" +#include "trait_group.h" #include "veh_type.h" +#include "vehicle.h" #include "vpart_position.h" #include "vpart_reference.h" -#include "mtype.h" -#include "iuse_actor.h" -#include "trait_group.h" -#include "json.h" const skill_id skill_mechanics( "mechanics" ); const skill_id skill_electronics( "electronics" ); @@ -100,7 +100,7 @@ npc::npc() dex_max = 0; int_max = 0; per_max = 0; - my_fac = NULL; + my_fac = nullptr; miss_id = mission_type_id::NULL_ID(); marked_for_death = false; death_drops = true; @@ -160,11 +160,10 @@ void npc_template::load( JsonObject &jsobj ) guy.idz = jsobj.get_string( "id" ); guy.name.clear(); if( jsobj.has_string( "name_unique" ) ) { - guy.name = ( std::string )_( jsobj.get_string( "name_unique" ).c_str() ); + guy.name = static_cast( _( jsobj.get_string( "name_unique" ).c_str() ) ); } if( jsobj.has_string( "name_suffix" ) ) { - guy.name += ", " + ( std::string ) - _( jsobj.get_string( "name_suffix" ).c_str() ); + guy.name += ", " + static_cast( _( jsobj.get_string( "name_suffix" ).c_str() ) ); } if( jsobj.has_string( "gender" ) ) { if( jsobj.get_string( "gender" ) == "male" ) { @@ -301,7 +300,6 @@ void npc::randomize( const npc_class_id &type ) debugmsg( "Invalid NPC class %s", type.c_str() ); myclass = npc_class_id::NULL_ID(); } else if( type.is_null() && !one_in( 5 ) ) { - npc_class_id typetmp; myclass = npc_class::random_common(); } else { myclass = type; @@ -1205,7 +1203,7 @@ float npc::vehicle_danger( int radius ) const vehicle_part last_part = wrapped_veh.v->parts.back(); int size = std::max( last_part.mount.x, last_part.mount.y ); - double normal = sqrt( ( float )( ( bx - ax ) * ( bx - ax ) + ( by - ay ) * ( by - ay ) ) ); + double normal = sqrt( static_cast( ( bx - ax ) * ( bx - ax ) + ( by - ay ) * ( by - ay ) ) ); int closest = int( abs( ( posx() - ax ) * ( by - ay ) - ( posy() - ay ) * ( bx - ax ) ) / normal ); if( size > closest ) { @@ -1633,6 +1631,7 @@ bool npc::is_guarding() const { return mission == NPC_MISSION_SHELTER || mission == NPC_MISSION_BASE || mission == NPC_MISSION_SHOPKEEP || mission == NPC_MISSION_GUARD || + mission == NPC_MISSION_GUARD_ALLY || has_effect( effect_infection ); } @@ -2194,7 +2193,7 @@ void epilogue::random_by_group( std::string group ) text = epi.text; } -const tripoint npc::no_goal_point( INT_MIN, INT_MIN, INT_MIN ); +constexpr tripoint npc::no_goal_point; bool npc::query_yn( const std::string &/*msg*/ ) const { @@ -2299,7 +2298,7 @@ std::array, npc_need::num_needs> std::string npc::get_need_str_id( const npc_need &need ) { return need_data[static_cast( need )].first; -}; +} overmap_location_str_id npc::get_location_for( const npc_need &need ) { diff --git a/src/npc.h b/src/npc.h index f8d4f7e08f398..4a46c412203e0 100644 --- a/src/npc.h +++ b/src/npc.h @@ -2,17 +2,17 @@ #ifndef NPC_H #define NPC_H -#include "player.h" -#include "faction.h" -#include "pimpl.h" #include "calendar.h" +#include "faction.h" #include "optional.h" +#include "pimpl.h" +#include "player.h" -#include -#include -#include #include #include +#include +#include +#include class JsonObject; class JsonIn; @@ -87,7 +87,8 @@ enum npc_mission : int { NPC_MISSION_LEGACY_3, NPC_MISSION_BASE, // Base Mission: unassigned (Might be used for assigning a npc to stay in a location). - NPC_MISSION_GUARD, // Similar to Base Mission, for use outside of camps + NPC_MISSION_GUARD, // Assigns an non-allied NPC to guard a position + NPC_MISSION_GUARD_ALLY, // Assigns an allied NPC to guard a position }; struct npc_companion_mission { @@ -128,7 +129,7 @@ struct npc_personality { bravery = 0; collector = 0; altruism = 0; - }; + } void serialize( JsonOut &jsout ) const; void deserialize( JsonIn &jsin ); @@ -218,11 +219,13 @@ struct npc_short_term_cache { float danger; float total_danger; float danger_assessment; - std::shared_ptr target; + // Use weak_ptr to avoid circular references between Creatures + std::weak_ptr target; double my_weapon_value; - std::vector> friends; + // Use weak_ptr to avoid circular references between Creatures + std::vector> friends; std::vector dangerous_explosives; }; @@ -501,7 +504,6 @@ class npc : public player std::string opinion_text() const; // Goal / mission functions - void pick_long_term_goal(); bool fac_has_value( faction_value value ) const; bool fac_has_job( faction_job job ) const; @@ -850,7 +852,7 @@ class npc : public player bool hit_by_player; std::vector needs; // Dummy point that indicates that the goal is invalid. - static const tripoint no_goal_point; + static constexpr tripoint no_goal_point = tripoint_min; time_point last_updated; /** diff --git a/src/npc_class.cpp b/src/npc_class.cpp index c41603348a400..74e2fc3fc856f 100644 --- a/src/npc_class.cpp +++ b/src/npc_class.cpp @@ -1,10 +1,11 @@ #include "npc_class.h" -#include "skill.h" + #include "debug.h" -#include "rng.h" #include "generic_factory.h" #include "item_group.h" #include "mutation.h" +#include "rng.h" +#include "skill.h" #include "trait_group.h" #include diff --git a/src/npc_class.h b/src/npc_class.h index 1bcbacd0032f1..1ba9faceeb584 100644 --- a/src/npc_class.h +++ b/src/npc_class.h @@ -2,14 +2,12 @@ #ifndef NPC_CLASS_H #define NPC_CLASS_H -#include -#include -#include -#include -#include - #include "string_id.h" +#include +#include +#include + class JsonObject; class npc_class; diff --git a/src/npc_favor.h b/src/npc_favor.h index b9003f4ed9afb..27962e06f7ff5 100644 --- a/src/npc_favor.h +++ b/src/npc_favor.h @@ -4,8 +4,6 @@ #include "string_id.h" -#include - using itype_id = std::string; class Skill; using skill_id = string_id; @@ -32,7 +30,7 @@ struct npc_favor { value = 0; item_id = "null"; skill = skill_id::NULL_ID(); - }; + } void serialize( JsonOut &jsout ) const; void deserialize( JsonIn &jsin ); diff --git a/src/npcmove.cpp b/src/npcmove.cpp index 0bfe487ea5b08..9ce396b8ca5dc 100644 --- a/src/npcmove.cpp +++ b/src/npcmove.cpp @@ -1,36 +1,36 @@ #include "npc.h" +#include "ammo.h" +#include "cata_algo.h" +#include "debug.h" #include "dispersion.h" -#include "rng.h" +#include "effect.h" +#include "field.h" #include "game.h" +#include "gates.h" +#include "gun_mode.h" +#include "itype.h" +#include "iuse_actor.h" +#include "line.h" #include "map.h" #include "map_iterator.h" +#include "messages.h" +#include "monster.h" +#include "mtype.h" #include "output.h" -#include "projectile.h" -#include "line.h" -#include "debug.h" -#include "vpart_range.h" +#include "overmap_location.h" #include "overmapbuffer.h" +#include "projectile.h" #include "ranged.h" -#include "messages.h" -#include "ammo.h" +#include "rng.h" +#include "sounds.h" #include "translations.h" #include "veh_type.h" -#include "monster.h" -#include "vpart_position.h" -#include "itype.h" -#include "iuse_actor.h" -#include "effect.h" #include "vehicle.h" -#include "mtype.h" -#include "field.h" -#include "vpart_reference.h" -#include "sounds.h" -#include "gates.h" -#include "overmap_location.h" -#include "gun_mode.h" #include "visitable.h" -#include "cata_algo.h" +#include "vpart_position.h" +#include "vpart_range.h" +#include "vpart_reference.h" #include #include @@ -95,7 +95,7 @@ hp_part most_damaged_hp_part( const Character &c ); struct ratio_index { double ratio; int index; - ratio_index( double R, int I ) : ratio( R ), index( I ) {}; + ratio_index( double R, int I ) : ratio( R ), index( I ) {} }; bool clear_shot_reach( const tripoint &from, const tripoint &to ) @@ -520,7 +520,7 @@ void npc::execute_action( npc_action action ) for( size_t i = 0; i < slice.size(); i++ ) { item &it = slice[i]->front(); bool am = ( it.is_gun() && - get_ammo( it.type->gun->ammo ).size() > 0 ); + !get_ammo( it.type->gun->ammo ).empty() ); if( it.is_gun() && ( !ammo_found || am ) ) { index = i; ammo_found = ( ammo_found || am ); @@ -647,7 +647,7 @@ void npc::execute_action( npc_action action ) // Don't change spots if ours is nice int my_spot = -1; std::vector > seats; - for( const vpart_reference &vp : veh->get_parts( VPFLAG_BOARDABLE ) ) { + for( const vpart_reference &vp : veh->get_avail_parts( VPFLAG_BOARDABLE ) ) { const player *passenger = veh->get_passenger( vp.part_index() ); if( passenger != this && passenger != nullptr ) { continue; @@ -820,7 +820,7 @@ void npc::choose_target() int dist = rl_dist( pos(), mon.pos() ); // @todo: This should include ranged attacks in calculation float scaled_distance = std::max( 1.0f, dist / mon.speed_rating() ); - float hp_percent = ( float )( mon.get_hp_max() - mon.get_hp() ) / mon.get_hp_max(); + float hp_percent = static_cast( mon.get_hp_max() - mon.get_hp() ) / mon.get_hp_max(); float critter_danger = mon.type->difficulty * ( hp_percent / 2.0f + 0.5f ); auto att = mon.attitude( this ); @@ -1073,11 +1073,7 @@ bool wants_to_reload( const npc &who, const item &it ) bool wants_to_reload_with( const item &weap, const item &ammo ) { - if( ammo.is_magazine() && ( ammo.ammo_remaining() <= weap.ammo_remaining() ) ) { - return false; - } - - return true; + return !ammo.is_magazine() || ammo.ammo_remaining() > weap.ammo_remaining(); } item &npc::find_reloadable() @@ -1305,16 +1301,12 @@ double npc::confidence_mult() const switch( rules.aim ) { case AIM_WHEN_CONVENIENT: return emergency() ? 1.5f : 1.0f; - break; case AIM_SPRAY: return 2.0f; - break; case AIM_PRECISE: return emergency() ? 1.0f : 0.75f; - break; case AIM_STRICTLY_PRECISE: return 0.5f; - break; } return 1.0f; @@ -1379,7 +1371,11 @@ bool npc::wont_hit_friend( const tripoint &tar, const item &it, bool throwing ) int safe_angle = 30; for( const auto &fr : ai_cache.friends ) { - const Creature &ally = *fr.get(); + const std::shared_ptr ally_p = fr.lock(); + if( !ally_p ) { + continue; + } + const Creature &ally = *ally_p; // @todo: Extract common functions with turret target selection int safe_angle_ally = safe_angle; @@ -1404,7 +1400,7 @@ bool npc::enough_time_to_reload( const item &gun ) const { int rltime = item_reload_cost( gun, item( gun.ammo_type()->default_ammotype() ), gun.ammo_capacity() ); - const float turns_til_reloaded = ( float )rltime / get_speed(); + const float turns_til_reloaded = static_cast( rltime ) / get_speed(); const Creature *target = current_target(); if( target == nullptr ) { @@ -1688,8 +1684,9 @@ void npc::avoid_friendly_fire() // Calculate center of weight of friends and move away from that tripoint center; for( const auto &fr : ai_cache.friends ) { - const Creature &ally = *fr.get(); - center += ally.pos(); + if( std::shared_ptr fr_p = fr.lock() ) { + center += fr_p->pos(); + } } float friend_count = ai_cache.friends.size(); @@ -3162,12 +3159,15 @@ void print_action( const char *prepend, npc_action action ) const Creature *npc::current_target() const { - return ai_cache.target.get(); + // TODO: Arguably we should return a shared_ptr to ensure that the returned + // object stays alive while the caller uses it. Not doing that for now. + return ai_cache.target.lock().get(); } Creature *npc::current_target() { - return const_cast( const_cast( this )->current_target() ); + // TODO: As above. + return ai_cache.target.lock().get(); } // Maybe TODO: Move to Character method and use map methods diff --git a/src/npctalk.cpp b/src/npctalk.cpp index 75531edd8c13d..a8728bceafaa2 100644 --- a/src/npctalk.cpp +++ b/src/npctalk.cpp @@ -1,50 +1,52 @@ -#include "npc.h" -#include "npc_class.h" +#include "npctrade.h" + +#include "ammo.h" #include "auto_pickup.h" -#include "output.h" -#include "game.h" -#include "map.h" +#include "basecamp.h" +#include "cata_utility.h" +#include "catacharset.h" +#include "compatibility.h" // needed for the workaround for the std::to_string bug in some compilers +#include "coordinate_conversions.h" +#include "debug.h" #include "dialogue.h" -#include "rng.h" +#include "editmap.h" +#include "faction_camp.h" +#include "game.h" +#include "help.h" +#include "input.h" +#include "item_group.h" +#include "itype.h" +#include "json.h" #include "line.h" -#include "debug.h" -#include "catacharset.h" +#include "map.h" +#include "map_selector.h" +#include "martialarts.h" #include "messages.h" #include "mission.h" +#include "mission_companion.h" #include "morale_types.h" -#include "ammo.h" -#include "units.h" +#include "npc.h" +#include "npc_class.h" +#include "npctalk.h" +#include "output.h" +#include "overmap.h" #include "overmapbuffer.h" -#include "json.h" -#include "vpart_position.h" -#include "translations.h" -#include "martialarts.h" -#include "input.h" -#include "item_group.h" -#include "compatibility.h" -#include "basecamp.h" -#include "cata_utility.h" -#include "itype.h" +#include "rng.h" +#include "skill.h" +#include "string_formatter.h" +#include "string_input_popup.h" #include "text_snippets.h" -#include "map_selector.h" +#include "translations.h" +#include "ui.h" +#include "units.h" #include "vehicle.h" #include "vehicle_selector.h" -#include "skill.h" -#include "ui.h" -#include "help.h" -#include "coordinate_conversions.h" -#include "overmap.h" -#include "editmap.h" -#include "npctalk.h" -#include "npctrade.h" -#include "faction_camp.h" -#include "mission_companion.h" +#include "vpart_position.h" -#include "string_formatter.h" -#include -#include -#include #include +#include +#include +#include const skill_id skill_speech( "speech" ); const skill_id skill_barter( "barter" ); @@ -66,7 +68,6 @@ const efftype_id effect_narcosis( "narcosis" ); const efftype_id effect_sleep( "sleep" ); static const trait_id trait_DEBUG_MIND_CONTROL( "DEBUG_MIND_CONTROL" ); -static const trait_id trait_PROF_FED( "PROF_FED" ); static std::map json_talk_topics; @@ -158,6 +159,83 @@ int cash_to_favor( const npc &, int cash ) return roll_remainder( scaled_mission_val ); } +void game::chat() +{ + const std::vector available = get_npcs_if( [&]( const npc & guy ) { + // @todo: Get rid of the z-level check when z-level vision gets "better" + return u.posz() == guy.posz() && + u.sees( guy.pos() ) && + rl_dist( u.pos(), guy.pos() ) <= 24; + } ); + const std::vector followers = get_npcs_if( [&]( const npc &guy ) { + return guy.is_friend() && guy.is_following() && u.posz() == guy.posz() && + u.sees( guy.pos() ) && rl_dist( u.pos(), guy.pos() ) <= 24; + } ); + const std::vector guards = get_npcs_if( [&]( const npc &guy ) { + return guy.mission == NPC_MISSION_GUARD_ALLY && + guy.companion_mission_role_id != "FACTION_CAMP" && u.posz() == guy.posz() && + u.sees( guy.pos() ) && rl_dist( u.pos(), guy.pos() ) <= 24; + } ); + + uilist nmenu; + nmenu.text = std::string( _( "Who do you want to talk to or yell at?" ) ); + + int i = 0; + + for( auto &elem : available ) { + nmenu.addentry( i++, true, MENU_AUTOASSIGN, ( elem )->name ); + } + + int yell = 0; + int yell_sentence = 0; + int yell_guard = -1; + int yell_follow = -1; + + nmenu.addentry( yell = i++, true, 'a', _( "Yell" ) ); + nmenu.addentry( yell_sentence = i++, true, 'b', _( "Yell a sentence" ) ); + if( !followers.empty() ) { + nmenu.addentry( yell_guard = i++, true, 'c', _( "Tell all your allies to guard" ) ); + } + if( !guards.empty() ) { + nmenu.addentry( yell_follow = i++, true, 'd', _( "Tell all your allies to follow" ) ); + } + + nmenu.query(); + if( nmenu.ret < 0 ) { + return; + } else if( nmenu.ret == yell ) { + u.shout(); + } else if( nmenu.ret == yell_sentence ) { + std::string popupdesc = string_format( _( "Enter a sentence to yell" ) ); + string_input_popup popup; + popup.title( string_format( _( "Yell a sentence" ) ) ) + .width( 64 ) + .description( popupdesc ) + .identifier( "sentence" ) + .max_length( 128 ) + .query(); + + std::string sentence = popup.text(); + add_msg( _( "You yell, \"%s\"" ), sentence.c_str() ); + u.shout(); + } else if( nmenu.ret == yell_guard ) { + for( npc *p: followers ) { + talk_function::assign_guard( *p ); + } + } else if( nmenu.ret == yell_follow ) { + for( npc *p: guards ) { + talk_function::stop_guard( *p ); + } + } else if( nmenu.ret <= static_cast( available.size() ) ) { + available[nmenu.ret]->talk_to_u(); + } else { + return; + } + + u.moves -= 100; + refresh_all(); +} + void npc_chatbin::check_missions() { // TODO: or simply fail them? Some missions might only need to be reported. @@ -372,8 +450,6 @@ std::string dialogue::dynamic_line( const talk_topic &the_topic ) const return _( "You just asked me for stuff; ask later." ); } return _( "Why should I share my equipment with you?" ); - - } else if( topic == "TALK_DENY_EQUIPMENT" ) { if( p->op_of_u.anger >= p->hostile_anger_level() - 4 ) { return _( ", and if you ask again, !" ); @@ -477,6 +553,7 @@ std::string dialogue::dynamic_line( const talk_topic &the_topic ) const case NPC_MISSION_BASE: return _( "I'm guarding this location." ); case NPC_MISSION_GUARD: + case NPC_MISSION_GUARD_ALLY: return _( "I'm guarding this location." ); case NPC_MISSION_NULL: return p->myclass.obj().get_job_description(); @@ -1441,7 +1518,6 @@ void talk_function::recover_camp( npc &p ) become_overseer( p ); } - void talk_function::become_overseer( npc &p ) { add_msg( _( "%s has become a camp manager." ), p.name ); @@ -1450,7 +1526,7 @@ void talk_function::become_overseer( npc &p ) } p.companion_mission_role_id = "FACTION_CAMP"; p.set_attitude( NPCATT_NULL ); - p.mission = NPC_MISSION_GUARD; + p.mission = NPC_MISSION_GUARD_ALLY; p.chatbin.first_topic = "TALK_CAMP_OVERSEER"; p.set_destination(); } @@ -1871,7 +1947,7 @@ void talk_response::effect_fun_t::set_change_faction_rep( int rep_change ) }; } -void talk_response::effect_t::set_effect_consequence( effect_fun_t fun, dialogue_consequence con ) +void talk_response::effect_t::set_effect_consequence( const effect_fun_t &fun, dialogue_consequence con ) { effects.push_back( fun ); guaranteed_consequence = std::max( guaranteed_consequence, con ); @@ -1906,7 +1982,7 @@ void talk_response::effect_t::set_effect( talkfunction_ptr ptr ) talk_topic talk_response::effect_t::apply( dialogue &d ) const { - for( auto effect: effects ) { + for( const effect_fun_t &effect: effects ) { effect( d ); } d.beta->op_of_u += opinion; @@ -2060,7 +2136,6 @@ void talk_response::effect_t::parse_string_effect( const std::string &type, Json jo.throw_error( "unknown effect string", type ); } - void talk_response::effect_t::load_effect( JsonObject &jo ) { static const std::string member_name( "effect" ); @@ -2172,7 +2247,7 @@ conditional_t::conditional_t( JsonObject jo ) }; } else if( jo.has_member( "u_has_any_trait" ) ) { std::vector traits_to_check; - for( auto &&f : jo.get_string_array( "u_has_any_trait" ) ) { + for( auto &&f : jo.get_string_array( "u_has_any_trait" ) ) { // *NOPAD* traits_to_check.emplace_back( f ); } condition = [traits_to_check]( const dialogue & d ) { @@ -2183,6 +2258,34 @@ conditional_t::conditional_t( JsonObject jo ) } return false; }; + } else if( jo.has_member( "npc_has_any_trait" ) ) { + std::vector traits_to_check; + for( auto &&f : jo.get_string_array( "npc_has_any_trait" ) ) { // *NOPAD* + traits_to_check.emplace_back( f ); + } + condition = [traits_to_check]( const dialogue & d ) { + for( const auto &trait : traits_to_check ) { + if( d.beta->has_trait( trait ) ) { + return true; + } + } + return false; + }; + } else if( jo.has_member( "u_has_trait" ) ) { + std::string trait_to_check = jo.get_string( "u_has_trait" ); + condition = [trait_to_check]( const dialogue & d ) { + return d.alpha->has_trait( trait_id( trait_to_check ) ); + }; + } else if( jo.has_member( "npc_has_trait" ) ) { + std::string trait_to_check = jo.get_string( "npc_has_trait" ); + condition = [trait_to_check]( const dialogue & d ) { + return d.beta->has_trait( trait_id( trait_to_check ) ); + }; + } else if( jo.has_member( "npc_has_class" ) ) { + std::string class_to_check = jo.get_string( "npc_has_class" ); + condition = [class_to_check]( const dialogue & d ) { + return d.beta->myclass == npc_class_id( class_to_check ); + }; } else if( jo.has_string( "u_has_mission" ) ) { const std::string &mission = jo.get_string( "u_has_mission" ); condition = [mission]( const dialogue & ) { @@ -2271,7 +2374,7 @@ conditional_t::conditional_t( JsonObject jo ) } }; bool found_sub_member = false; - for( auto sub_member: sub_condition_strs ) { + for( const std::string &sub_member: sub_condition_strs ) { if( jo.has_string( sub_member ) ) { const conditional_t sub_condition( jo.get_string( sub_member ) ); condition = [sub_condition]( const dialogue & d ) { @@ -2440,9 +2543,17 @@ dynamic_line_t::dynamic_line_t( JsonObject jo ) const bool in_effect = d.beta->has_effect( efftype_id( effect_id ) ); return ( in_effect ? yes : no )( d ); }; + } else if( jo.has_member( "u_has_effect" ) ) { + const std::string effect_id = jo.get_string( "u_has_effect" ); + const dynamic_line_t yes = from_member( jo, "yes" ); + const dynamic_line_t no = from_member( jo, "no" ); + function = [effect_id, yes, no]( const dialogue & d ) { + const bool in_effect = d.alpha->has_effect( efftype_id( effect_id ) ); + return ( in_effect ? yes : no )( d ); + }; } else if( jo.has_member( "u_has_any_trait" ) ) { std::vector traits_to_check; - for( auto &&f : jo.get_string_array( "u_has_any_trait" ) ) { + for( auto &&f : jo.get_string_array( "u_has_any_trait" ) ) { // *NOPAD* traits_to_check.emplace_back( f ); } const dynamic_line_t yes = from_member( jo, "yes" ); @@ -2455,6 +2566,51 @@ dynamic_line_t::dynamic_line_t( JsonObject jo ) } return no( d ); }; + } else if( jo.has_member( "npc_has_any_trait" ) ) { + std::vector traits_to_check; + for( auto &&f : jo.get_string_array( "npc_has_any_trait" ) ) { // *NOPAD* + traits_to_check.emplace_back( f ); + } + const dynamic_line_t yes = from_member( jo, "yes" ); + const dynamic_line_t no = from_member( jo, "no" ); + function = [traits_to_check, yes, no]( const dialogue & d ) { + for( const auto &trait : traits_to_check ) { + if( d.beta->has_trait( trait ) ) { + return yes( d ); + } + } + return no( d ); + }; + } else if( jo.has_member( "u_has_trait" ) ) { + std::string trait_to_check = jo.get_string( "u_has_trait" ); + const dynamic_line_t yes = from_member( jo, "yes" ); + const dynamic_line_t no = from_member( jo, "no" ); + function = [trait_to_check, yes, no]( const dialogue & d ) { + if( d.alpha->has_trait( trait_id( trait_to_check ) ) ) { + return yes( d ); + } + return no( d ); + }; + } else if( jo.has_member( "npc_has_trait" ) ) { + std::string trait_to_check = jo.get_string( "npc_has_trait" ); + const dynamic_line_t yes = from_member( jo, "yes" ); + const dynamic_line_t no = from_member( jo, "no" ); + function = [trait_to_check, yes, no]( const dialogue & d ) { + if( d.beta->has_trait( trait_id( trait_to_check ) ) ) { + return yes( d ); + } + return no( d ); + }; + } else if( jo.has_member( "npc_has_class" ) ) { + std::string class_to_check = jo.get_string( "npc_has_class" ); + const dynamic_line_t yes = from_member( jo, "yes" ); + const dynamic_line_t no = from_member( jo, "no" ); + function = [class_to_check, yes, no]( const dialogue & d ) { + if( d.beta->myclass == npc_class_id( class_to_check ) ) { + return yes( d ); + } + return no( d ); + }; } else if( jo.has_member( "npc_has_mission" ) ) { const dynamic_line_t none = from_member( jo, "none" ); const dynamic_line_t one = from_member( jo, "one" ); @@ -2823,7 +2979,7 @@ npc_follower_rules::npc_follower_rules() allow_pulp = true; close_doors = false; -}; +} npc *pick_follower() { diff --git a/src/npctalk.h b/src/npctalk.h index 96f3efa1ce42d..5d04b21536ea5 100644 --- a/src/npctalk.h +++ b/src/npctalk.h @@ -2,10 +2,7 @@ #ifndef NPCTALK_H #define NPCTALK_H -#include -#include #include -#include namespace talk_function { @@ -61,7 +58,7 @@ void start_training( npc & ); void wake_up( npc & ); -}; +} bool trade( npc &p, int cost, const std::string &deal ); time_duration calc_skill_training_time( const npc &p, const skill_id &skill ); diff --git a/src/npctalk_funcs.cpp b/src/npctalk_funcs.cpp index d096863f2abdf..30d67ef3177e2 100644 --- a/src/npctalk_funcs.cpp +++ b/src/npctalk_funcs.cpp @@ -1,33 +1,30 @@ #include "npc.h" -#include "output.h" + +#include "basecamp.h" +#include "bionics.h" +#include "debug.h" #include "game.h" -#include "map.h" -#include "rng.h" +#include "itype.h" #include "line.h" -#include "debug.h" -#include "catacharset.h" +#include "map.h" #include "messages.h" #include "mission.h" #include "morale_types.h" -#include "units.h" -#include "overmapbuffer.h" -#include "translations.h" -#include "basecamp.h" -#include "itype.h" -#include "skill.h" -#include "overmap.h" #include "npctalk.h" -#include "mission_companion.h" #include "npctrade.h" -#include "bionics.h" +#include "output.h" +#include "overmap.h" +#include "overmapbuffer.h" #include "requirements.h" +#include "rng.h" +#include "string_formatter.h" +#include "translations.h" #include "ui.h" +#include "units.h" -#include "string_formatter.h" -#include -#include -#include #include +#include +#include #define dbg(x) DebugLog((DebugLevel)(x), D_NPC) << __FILE__ << ":" << __LINE__ << ": " @@ -174,7 +171,7 @@ void talk_function::assign_guard( npc &p ) { add_msg( _( "%s is posted as a guard." ), p.name ); p.set_attitude( NPCATT_NULL ); - p.mission = NPC_MISSION_GUARD; + p.mission = NPC_MISSION_GUARD_ALLY; p.chatbin.first_topic = "TALK_FRIEND_GUARD"; p.set_destination(); } @@ -234,7 +231,7 @@ void talk_function::bionic_install( npc &p ) bio->typeId() == "bio_power_storage_mkII" ) { bionic_types.push_back( bio->typeId() ); - bionic_names.push_back( bio->tname() + " - $" + to_string( bio->price( true ) * 2 / 100 ) ); + bionic_names.push_back( bio->tname() + " - " + format_money( bio->price( true ) * 2 ) ); } } } @@ -285,9 +282,9 @@ void talk_function::bionic_remove( npc &p ) bionic_types.push_back( bio.id.str() ); if( item::type_is_defined( bio.id.str() ) ) { tmp = item( bio.id.str(), 0 ); - bionic_names.push_back( tmp.tname() + " - $" + to_string( 500 + ( tmp.price( true ) / 400 ) ) ); + bionic_names.push_back( tmp.tname() + " - " + format_money( 50000 + ( tmp.price( true ) / 4 ) ) ); } else { - bionic_names.push_back( bio.id.str() + " - $" + to_string( 500 ) ); + bionic_names.push_back( bio.id.str() + " - " + format_money( 50000 ) ); } } } @@ -572,7 +569,8 @@ bool pay_npc( npc &np, int cost ) return true; } - if( g->u.cash + ( unsigned long )np.op_of_u.owed >= ( unsigned long )cost ) { + if( g->u.cash + static_cast( np.op_of_u.owed ) >= static_cast + ( cost ) ) { g->u.cash -= cost - np.op_of_u.owed; np.op_of_u.owed = 0; return true; @@ -610,5 +608,3 @@ void talk_function::start_training( npc &p ) g->u.assign_activity( activity_id( "ACT_TRAIN" ), to_moves( time ), p.getID(), 0, name ); p.add_effect( effect_asked_to_train, 6_hours ); } - - diff --git a/src/npctrade.cpp b/src/npctrade.cpp index f2357e9d30493..58b00d50127e7 100644 --- a/src/npctrade.cpp +++ b/src/npctrade.cpp @@ -1,32 +1,24 @@ -#include "npc.h" -#include "output.h" -#include "game.h" -#include "map.h" -#include "dialogue.h" -#include "rng.h" -#include "line.h" +#include "npctrade.h" + +#include "cata_utility.h" #include "debug.h" -#include "catacharset.h" -#include "overmapbuffer.h" -#include "translations.h" +#include "game.h" +#include "help.h" #include "input.h" #include "item_group.h" -#include "compatibility.h" -#include "cata_utility.h" -#include "itype.h" +#include "map.h" #include "map_selector.h" +#include "npc.h" +#include "output.h" +#include "skill.h" +#include "string_formatter.h" +#include "translations.h" #include "vehicle.h" #include "vehicle_selector.h" -#include "skill.h" -#include "help.h" -#include "overmap.h" -#include "npctrade.h" -#include "string_formatter.h" -#include -#include -#include #include +#include +#include const skill_id skill_barter( "barter" ); @@ -241,8 +233,8 @@ TAB key to switch lists, letters to pick items, Enter to finalize, Esc to quit,\ std::string cost_string = ex ? _( "Exchange" ) : ( cash >= 0 ? _( "Profit %s" ) : _( "Cost %s" ) ); mvwprintz( w_head, 3, TERMX / 2 + ( TERMX / 2 - cost_string.length() ) / 2, - ( cash < 0 && ( int )g->u.cash >= cash * -1 ) || ( cash >= 0 && - ( int )p.cash >= cash ) ? c_green : c_red, + ( cash < 0 && static_cast( g->u.cash ) >= cash * -1 ) || ( cash >= 0 && + static_cast( p.cash ) >= cash ) ? c_green : c_red, cost_string.c_str(), format_money( std::abs( cash ) ) ); if( !deal.empty() ) { @@ -252,9 +244,10 @@ TAB key to switch lists, letters to pick items, Enter to finalize, Esc to quit,\ draw_border( w_them, ( focus_them ? c_yellow : BORDER_COLOR ) ); draw_border( w_you, ( !focus_them ? c_yellow : BORDER_COLOR ) ); - mvwprintz( w_them, 0, 2, ( cash < 0 || ( int )p.cash >= cash ? c_green : c_red ), + mvwprintz( w_them, 0, 2, ( cash < 0 || static_cast( p.cash ) >= cash ? c_green : c_red ), _( "%s: %s" ), p.name.c_str(), format_money( p.cash ) ); - mvwprintz( w_you, 0, 2, ( cash > 0 || ( int )g->u.cash >= cash * -1 ? c_green : c_red ), + mvwprintz( w_you, 0, 2, ( cash > 0 || + static_cast( g->u.cash ) >= cash * -1 ? c_green : c_red ), _( "You: %s" ), format_money( g->u.cash ) ); // Draw lists of items, starting from offset for( size_t whose = 0; whose <= 1; whose++ ) { @@ -287,7 +280,7 @@ TAB key to switch lists, letters to pick items, Enter to finalize, Esc to quit,\ keychar = keychar - 'z' - 1 + 'A'; } trim_and_print( w_whose, i - offset + 1, 1, win_w, color, "%c %c %s", - ( char )keychar, ip.selected ? '+' : '-', itname.c_str() ); + static_cast( keychar ), ip.selected ? '+' : '-', itname.c_str() ); #ifdef __ANDROID__ ctxt.register_manual_key( keychar, itname.c_str() ); #endif @@ -345,7 +338,7 @@ TAB key to switch lists, letters to pick items, Enter to finalize, Esc to quit,\ break; case '\n': // Check if we have enough cash... // The player must pay cash, and it should not put the player negative. - if( cash < 0 && ( int )g->u.cash < cash * -1 ) { + if( cash < 0 && static_cast( g->u.cash ) < cash * -1 ) { popup( _( "Not enough cash! You have %s, price is %s." ), format_money( g->u.cash ), format_money( -cash ) ); update = true; @@ -437,7 +430,7 @@ TAB key to switch lists, letters to pick items, Enter to finalize, Esc to quit,\ loc_ptr->remove_item(); } - if( !ex && cash > ( int )p.cash ) { + if( !ex && cash > static_cast( p.cash ) ) { // Trade was forced, give the NPC's cash to the player. p.op_of_u.owed = ( cash - p.cash ); g->u.cash += p.cash; diff --git a/src/npctrade.h b/src/npctrade.h index d98e3c0bbab5e..cec4d73c9e53c 100644 --- a/src/npctrade.h +++ b/src/npctrade.h @@ -1,9 +1,13 @@ -#include "npc.h" -#include "itype.h" +#pragma once +#ifndef NPCTRADE_H +#define NPCTRADE_H + #include "game.h" +#include "itype.h" +#include "npc.h" -#include #include +#include struct item_pricing { item_pricing( Character &c, item *it, int v, bool s ) : loc( c, it ), price( v ), selected( s ) { @@ -27,3 +31,5 @@ inventory inventory_exchange( inventory &inv, std::vector init_selling( npc &p ); std::vector init_buying( npc &p, player &u ); bool trade( npc &p, int cost, const std::string &deal ); + +#endif diff --git a/src/omdata.h b/src/omdata.h index 8031773d2a9bb..e1f4d168a6e96 100644 --- a/src/omdata.h +++ b/src/omdata.h @@ -9,12 +9,10 @@ #include "string_id.h" #include "translations.h" -#include -#include -#include -#include #include +#include #include +#include struct MonsterGroup; using mongroup_id = string_id; @@ -84,7 +82,7 @@ type random(); /** Whether these directions are parallel. */ bool are_parallel( type dir1, type dir2 ); -}; +} struct overmap_spawns { overmap_spawns() : group( mongroup_id::NULL_ID() ) {} @@ -300,7 +298,7 @@ struct overmap_special_spawns : public overmap_spawns { }; struct overmap_special_terrain { - overmap_special_terrain() { }; + overmap_special_terrain() {} tripoint p; oter_str_id terrain; std::set flags; @@ -326,6 +324,7 @@ struct overmap_special_connection { jo.read( "point", p ); jo.read( "terrain", terrain ); jo.read( "existing", existing ); + jo.read( "connection", connection ); } }; diff --git a/src/optional.h b/src/optional.h index 6c6109bba0d65..deb3159321f87 100644 --- a/src/optional.h +++ b/src/optional.h @@ -2,10 +2,10 @@ #ifndef OPTIONAL_H #define OPTIONAL_H -#include -#include #include #include +#include +#include namespace cata { diff --git a/src/options.cpp b/src/options.cpp index 3d475ebf80ea4..21e01b165a62b 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -1,21 +1,22 @@ #include "options.h" -#include "game.h" -#include "output.h" + +#include "cata_utility.h" +#include "catacharset.h" +#include "cursesdef.h" #include "debug.h" -#include "translations.h" #include "filesystem.h" -#include "string_formatter.h" -#include "cursesdef.h" -#include "path_info.h" -#include "mapsharing.h" +#include "game.h" +#include "game_constants.h" +#include "input.h" #include "json.h" +#include "mapsharing.h" +#include "output.h" +#include "path_info.h" #include "sounds.h" -#include "cata_utility.h" -#include "input.h" -#include "worldfactory.h" -#include "catacharset.h" -#include "game_constants.h" +#include "string_formatter.h" #include "string_input_popup.h" +#include "translations.h" +#include "worldfactory.h" #ifdef TILES #include "cata_tiles.h" @@ -29,13 +30,12 @@ #include #endif -#include -#include -#include -#include #include -#include +#include +#include #include +#include +#include bool trigdist; bool use_tiles; @@ -86,7 +86,7 @@ void options_manager::add_retry( const std::string &lvar, const::std::string &lv } void options_manager::add_value( const std::string &lvar, const std::string &lval, - const std::string &lvalname ) + const translation &lvalname ) { std::map::const_iterator it = post_json_verify.find( lvar ); if( it != post_json_verify.end() ) { @@ -98,7 +98,7 @@ void options_manager::add_value( const std::string &lvar, const std::string &lva return; } } - ot->second.vItems.emplace_back( lval, lvalname.empty() ? lval : lvalname ); + ot->second.vItems.emplace_back( lval, lvalname ); // our value was saved, then set to default, so set it again. if( it->second == lval ) { options[ lvar ].setValue( lval ); @@ -142,7 +142,7 @@ void options_manager::add_external( const std::string &sNameIn, const std::strin //add string select option void options_manager::add( const std::string &sNameIn, const std::string &sPageIn, const std::string &sMenuTextIn, const std::string &sTooltipIn, - const std::vector> &sItemsIn, std::string sDefaultIn, + const std::vector &sItemsIn, std::string sDefaultIn, copt_hide_t opt_hide ) { cOpt thisOpt; @@ -349,11 +349,7 @@ std::string options_manager::cOpt::getPrerequisite() const bool options_manager::cOpt::hasPrerequisite() const { - if( !sPrerequisite.empty() ) { - return true; - } - - return false; + return !sPrerequisite.empty(); } //helper functions @@ -523,11 +519,11 @@ std::string options_manager::cOpt::getValueName() const { if( sType == "string_select" ) { const auto iter = std::find_if( vItems.begin(), - vItems.end(), [&]( const std::pair &e ) { + vItems.end(), [&]( const id_and_option & e ) { return e.first == sSet; } ); if( iter != vItems.end() ) { - return _( iter->second.c_str() ); + return iter->second.translated(); } } else if( sType == "bool" ) { @@ -544,14 +540,14 @@ std::string options_manager::cOpt::getDefaultText( const bool bTranslated ) cons { if( sType == "string_select" ) { const auto iter = std::find_if( vItems.begin(), vItems.end(), - [this]( const std::pair &elem ) { + [this]( const id_and_option & elem ) { return elem.first == sDefault; } ); const std::string defaultName = iter == vItems.end() ? std::string() : - ( bTranslated ? _( iter->second.c_str() ) : iter->first ); + ( bTranslated ? iter->second.translated() : iter->first ); const std::string &sItems = enumerate_as_string( vItems.begin(), vItems.end(), - [bTranslated]( const std::pair &elem ) { - return bTranslated ? _( elem.second.c_str() ) : elem.first; + [bTranslated]( const id_and_option & elem ) { + return bTranslated ? elem.second.translated() : elem.first; }, enumeration_conjunction::none ); return string_format( _( "Default: %s - Values: %s" ), defaultName.c_str(), sItems.c_str() ); @@ -589,7 +585,7 @@ int options_manager::cOpt::getItemPos( const std::string &sSearch ) const return -1; } -std::vector> options_manager::cOpt::getItems() const +std::vector options_manager::cOpt::getItems() const { return vItems; } @@ -608,7 +604,7 @@ void options_manager::cOpt::setNext() { if( sType == "string_select" ) { int iNext = getItemPos( sSet ) + 1; - if( iNext >= ( int )vItems.size() ) { + if( iNext >= static_cast( vItems.size() ) ) { iNext = 0; } @@ -763,11 +759,11 @@ void options_manager::cOpt::setValue( std::string sSetIn ) * All found values added to resource_option as name, resource_dir. * Furthermore, it builds possible values list for cOpt class. */ -static std::vector> build_resource_list( - std::map &resource_option, const std::string &operation_name, - const std::string &dirname_label, const std::string &filename_label ) +static std::vector build_resource_list( + std::map &resource_option, const std::string &operation_name, + const std::string &dirname_label, const std::string &filename_label ) { - std::vector> resource_names; + std::vector resource_names; resource_option.clear(); auto const resource_dirs = get_directories_with( FILENAMES[filename_label], @@ -799,7 +795,8 @@ static std::vector> build_resource_list( } } } - resource_names.emplace_back( resource_name, view_name.empty() ? resource_name : view_name ); + resource_names.emplace_back( resource_name, + view_name.empty() ? no_translation( resource_name ) : translation( view_name ) ); if( resource_option.count( resource_name ) != 0 ) { DebugLog( D_ERROR, DC_ALL ) << "Found " << operation_name << " duplicate with name " << resource_name; @@ -812,20 +809,20 @@ static std::vector> build_resource_list( return resource_names; } -std::vector> options_manager::build_tilesets_list() +std::vector options_manager::build_tilesets_list() { auto tileset_names = build_resource_list( TILESETS, "tileset", "gfxdir", "tileset-conf" ); if( tileset_names.empty() ) { - tileset_names.emplace_back( "hoder", translate_marker( "Hoder's" ) ); - tileset_names.emplace_back( "deon", translate_marker( "Deon's" ) ); + tileset_names.emplace_back( "hoder", translation( "Hoder's" ) ); + tileset_names.emplace_back( "deon", translation( "Deon's" ) ); } return tileset_names; } -std::vector> options_manager::load_soundpack_from( - const std::string &path ) +std::vector options_manager::load_soundpack_from( + const std::string &path ) { // build_resource_list will clear &resource_option - first param std::map local_soundpacks; @@ -838,11 +835,11 @@ std::vector> options_manager::load_soundpack return soundpack_names; } -std::vector> options_manager::build_soundpacks_list() +std::vector options_manager::build_soundpacks_list() { // Clear soundpacks before loading SOUNDPACKS.clear(); - std::vector> result; + std::vector result; // Search data directory for sound packs auto data_soundpacks = load_soundpack_from( "data_sound" ); @@ -854,7 +851,7 @@ std::vector> options_manager::build_soundpac // Select default built-in sound pack if( result.empty() ) { - result.emplace_back( "basic", translate_marker( "Basic" ) ); + result.emplace_back( "basic", translation( "Basic" ) ); } return result; } @@ -898,6 +895,55 @@ void options_manager::init() vPages.emplace_back( "android", translate_marker( "Android" ) ); #endif + add_options_general(); + add_options_interface(); + add_options_graphics(); + add_options_debug(); + add_options_world_default(); + add_options_android(); + + for( unsigned i = 0; i < vPages.size(); ++i ) { + mPageItems[i].resize( mOptionsSort[vPages[i].first] ); + } + + for( auto &elem : options ) { + for( unsigned i = 0; i < vPages.size(); ++i ) { + if( vPages[i].first == ( elem.second ).getPage() && + ( elem.second ).getSortPos() > -1 ) { + mPageItems[i][( elem.second ).getSortPos()] = elem.first; + break; + } + } + } + + //Sort out possible double empty lines after options are hidden + for( unsigned i = 0; i < vPages.size(); ++i ) { + bool bLastLineEmpty = false; + while( mPageItems[i][0].empty() ) { + //delete empty lines at the beginning + mPageItems[i].erase( mPageItems[i].begin() ); + } + + while( mPageItems[i][mPageItems[i].size() - 1].empty() ) { + //delete empty lines at the end + mPageItems[i].erase( mPageItems[i].end() - 1 ); + } + + for( unsigned j = mPageItems[i].size() - 1; j > 0; --j ) { + bool bThisLineEmpty = mPageItems[i][j].empty(); + + if( bLastLineEmpty && bThisLineEmpty ) { + //delete empty lines in between + mPageItems[i].erase( mPageItems[i].begin() + j ); + } + + bLastLineEmpty = bThisLineEmpty; + } + } +} + +void options_manager::add_options_general() +{ ////////////////////////////GENERAL////////////////////////// add( "DEF_CHAR_NAME", "general", translate_marker( "Default character name" ), translate_marker( "Set a default character name that will be used instead of a random name on character creation." ), @@ -956,7 +1002,7 @@ void options_manager::init() add( "AUTO_PULP_BUTCHER", "general", translate_marker( "Auto pulp or butcher" ), translate_marker( "Action to perform when 'Auto pulp or butcher' is enabled. Pulp: Pulp corpses you stand on. - Pulp Adjacent: Also pulp corpses adjacent from you. - Butcher: Butcher corpses you stand on." ), - { { "off", translate_marker( "Disabled" ) }, { "pulp", translate_marker( "Pulp" ) }, { "pulp_adjacent", translate_marker( "Pulp Adjacent" ) }, { "butcher", translate_marker( "Butcher" ) } }, + { { "off", translation( "options", "Disabled" ) }, { "pulp", translate_marker( "Pulp" ) }, { "pulp_adjacent", translate_marker( "Pulp Adjacent" ) }, { "butcher", translate_marker( "Butcher" ) } }, "off" ); @@ -971,7 +1017,7 @@ void options_manager::init() add( "AUTO_FORAGING", "general", translate_marker( "Auto foraging" ), translate_marker( "Action to perform when 'Auto foraging' is enabled. Bushes: Only forage bushes. - Trees: Only forage trees. - Both: Forage bushes and trees." ), - { { "off", translate_marker( "Disabled" ) }, { "bushes", translate_marker( "Bushes" ) }, { "trees", translate_marker( "Trees" ) }, { "both", translate_marker( "Both" ) } }, + { { "off", translation( "options", "Disabled" ) }, { "bushes", translate_marker( "Bushes" ) }, { "trees", translate_marker( "Trees" ) }, { "both", translate_marker( "Both" ) } }, "off" ); @@ -1090,7 +1136,10 @@ void options_manager::init() ); get_option( "SOUND_EFFECT_VOLUME" ).setPrerequisite( "SOUND_ENABLED" ); +} +void options_manager::add_options_interface() +{ ////////////////////////////INTERFACE//////////////////////// // TODO: scan for languages like we do for tilesets. add( "USE_LANG", "interface", translate_marker( "Language" ), @@ -1099,18 +1148,18 @@ void options_manager::init() // Note: language names are in their own language and are *not* translated at all. // Note: Somewhere in Github PR was better link to msdn.microsoft.com with language names. // http://en.wikipedia.org/wiki/List_of_language_names - { "en", R"( English )" }, - { "de", R"( Deutsch )" }, - { "es_AR", R"( Español ( Argentina ) )" }, - { "es_ES", R"( Español ( España ) )" }, - { "fr", R"( Français )" }, - { "hu", R"( Magyar )"}, - { "ja", R"( 日本語 )" }, - { "ko", R"( 한국어 )" }, - { "pl", R"( Polski )" }, - { "ru", R"( Русский )" }, - { "zh_CN", R"( 中文( 天朝 ) )" }, - { "zh_TW", R"( 中文( 台灣 ) )" }, + { "en", no_translation( R"(English)" ) }, + { "de", no_translation( R"(Deutsch)" ) }, + { "es_AR", no_translation( R"(Español (Argentina))" ) }, + { "es_ES", no_translation( R"(Español (España))" ) }, + { "fr", no_translation( R"(Français)" ) }, + { "hu", no_translation( R"(Magyar)" ) }, + { "ja", no_translation( R"(日本語)" ) }, + { "ko", no_translation( R"(한국어)" ) }, + { "pl", no_translation( R"(Polski)" ) }, + { "ru", no_translation( R"(Русский)" ) }, + { "zh_CN", no_translation( R"(中文 (天朝))" ) }, + { "zh_TW", no_translation( R"(中文 (台灣))" ) }, }, "" ); mOptionsSort["interface"]++; @@ -1307,7 +1356,10 @@ void options_manager::init() { "hidekb", translate_marker( "HideKB" ) } }, "show", COPT_CURSES_HIDE ); +} +void options_manager::add_options_graphics() +{ ////////////////////////////GRAPHICS///////////////////////// add( "ANIMATIONS", "graphics", translate_marker( "Animations" ), translate_marker( "If true, will display enabled animations." ), @@ -1458,7 +1510,10 @@ void options_manager::init() { "linear", translate_marker( "Linear filtering" ) } }, "none", COPT_CURSES_HIDE ); +} +void options_manager::add_options_debug() +{ ////////////////////////////DEBUG//////////////////////////// add( "DISTANCE_INITIAL_VISIBILITY", "debug", translate_marker( "Distance initial visibility" ), translate_marker( "Determines the scope, which is known in the beginning of the game." ), @@ -1521,7 +1576,10 @@ void options_manager::init() translate_marker( "If true, file path names are going to be transcoded from system encoding to UTF-8 when reading and will be transcoded back when writing. Mainly for CJK Windows users." ), true ); +} +void options_manager::add_options_world_default() +{ ////////////////////////////WORLD DEFAULT//////////////////// add( "CORE_VERSION", "world_default", translate_marker( "Core version data" ), translate_marker( "Controls what migrations are applied for legacy worlds" ), @@ -1687,7 +1745,10 @@ void options_manager::init() { { "any", translate_marker( "Any" ) }, { "multi_pool", translate_marker( "Multi-pool only" ) }, { "no_freeform", translate_marker( "No freeform" ) } }, "any" ); +} +void options_manager::add_options_android() +{ #ifdef __ANDROID__ add( "ANDROID_QUICKSAVE", "android", translate_marker( "Quicksave on app lose focus" ), translate_marker( "If true, quicksave whenever the app loses focus (screen locked, app moved into background etc.) WARNING: Experimental. This may result in corrupt save games." ), @@ -1929,45 +1990,6 @@ void options_manager::init() ); #endif - - for( unsigned i = 0; i < vPages.size(); ++i ) { - mPageItems[i].resize( mOptionsSort[vPages[i].first] ); - } - - for( auto &elem : options ) { - for( unsigned i = 0; i < vPages.size(); ++i ) { - if( vPages[i].first == ( elem.second ).getPage() && - ( elem.second ).getSortPos() > -1 ) { - mPageItems[i][( elem.second ).getSortPos()] = elem.first; - break; - } - } - } - - //Sort out possible double empty lines after options are hidden - for( unsigned i = 0; i < vPages.size(); ++i ) { - bool bLastLineEmpty = false; - while( mPageItems[i][0].empty() ) { - //delete empty lines at the beginning - mPageItems[i].erase( mPageItems[i].begin() ); - } - - while( mPageItems[i][mPageItems[i].size() - 1].empty() ) { - //delete empty lines at the end - mPageItems[i].erase( mPageItems[i].end() - 1 ); - } - - for( unsigned j = mPageItems[i].size() - 1; j > 0; --j ) { - bool bThisLineEmpty = mPageItems[i][j].empty(); - - if( bLastLineEmpty && bThisLineEmpty ) { - //delete empty lines in between - mPageItems[i].erase( mPageItems[i].begin() + j ); - } - - bLastLineEmpty = bThisLineEmpty; - } - } } #ifdef TILES @@ -2044,7 +2066,7 @@ std::string options_manager::show( bool ingame, const bool world_options_only ) auto OPTIONS_OLD = OPTIONS; auto WOPTIONS_OLD = ACTIVE_WORLD_OPTIONS; - if( world_generator->active_world == NULL ) { + if( world_generator->active_world == nullptr ) { ingame = false; } @@ -2124,17 +2146,16 @@ std::string options_manager::show( bool ingame, const bool world_options_only ) //Draw options size_t iBlankOffset = 0; // Offset when blank line is printed. for( int i = iStartPos; - i < iStartPos + ( ( iContentHeight > ( int )mPageItems[iCurrentPage].size() ) ? - ( int )mPageItems[iCurrentPage].size() : iContentHeight ); i++ ) { + i < iStartPos + ( ( iContentHeight > static_cast( mPageItems[iCurrentPage].size() ) ) ? + static_cast( mPageItems[iCurrentPage].size() ) : iContentHeight ); i++ ) { - int line_pos; // Current line position in window. nc_color cLineColor = c_light_green; const cOpt ¤t_opt = cOPTIONS[mPageItems[iCurrentPage][i]]; bool hasPrerequisite = current_opt.hasPrerequisite(); bool prerequisiteEnabled = !hasPrerequisite || cOPTIONS[ current_opt.getPrerequisite() ].value_as(); - line_pos = i - iStartPos; + int line_pos = i - iStartPos; // Current line position in window. sTemp.str( "" ); sTemp << i + 1 - iBlankOffset; @@ -2169,7 +2190,7 @@ std::string options_manager::show( bool ingame, const bool world_options_only ) //Draw Tabs if( !world_options_only ) { mvwprintz( w_options_header, 0, 7, c_white, "" ); - for( int i = 0; i < ( int )vPages.size(); i++ ) { + for( int i = 0; i < static_cast( vPages.size() ); i++ ) { if( mPageItems[i].empty() ) { continue; } @@ -2262,7 +2283,7 @@ std::string options_manager::show( bool ingame, const bool world_options_only ) if( action == "DOWN" ) { do { iCurrentLine++; - if( iCurrentLine >= ( int )mPageItems[iCurrentPage].size() ) { + if( iCurrentLine >= static_cast( mPageItems[iCurrentPage].size() ) ) { iCurrentLine = 0; } } while( cOPTIONS[mPageItems[iCurrentPage][iCurrentLine]].getMenuText().empty() ); @@ -2281,7 +2302,7 @@ std::string options_manager::show( bool ingame, const bool world_options_only ) iCurrentLine = 0; iStartPos = 0; iCurrentPage++; - if( iCurrentPage >= ( int )vPages.size() ) { + if( iCurrentPage >= static_cast( vPages.size() ) ) { iCurrentPage = 0; } sfx::play_variant_sound( "menu_move", "default", 100 ); @@ -2384,7 +2405,7 @@ std::string options_manager::show( bool ingame, const bool world_options_only ) save(); if( ingame && world_options_changed ) { world_generator->active_world->WORLD_OPTIONS = ACTIVE_WORLD_OPTIONS; - world_generator->save_world( world_generator->active_world, false ); + world_generator->active_world->save(); } } else { used_tiles_changed = false; diff --git a/src/options.h b/src/options.h index cc97d2b13c178..523192898bef3 100644 --- a/src/options.h +++ b/src/options.h @@ -2,10 +2,12 @@ #ifndef OPTIONS_H #define OPTIONS_H -#include +#include "translations.h" + #include -#include +#include #include +#include #include class JsonIn; @@ -13,11 +15,22 @@ class JsonOut; class options_manager { + public: + class id_and_option : public std::pair + { + public: + id_and_option( const std::string &first, const std::string &second ) + : std::pair( first, second ) { + } + id_and_option( const std::string &first, const translation &second ) + : std::pair( first, second ) { + } + }; private: - static std::vector> build_tilesets_list(); - static std::vector> build_soundpacks_list(); - static std::vector> load_soundpack_from( - const std::string &path ); + static std::vector build_tilesets_list(); + static std::vector build_soundpacks_list(); + static std::vector load_soundpack_from( + const std::string &path ); bool load_legacy(); @@ -78,7 +91,7 @@ class options_manager std::string getDefaultText( const bool bTranslated = true ) const; int getItemPos( const std::string &sSearch ) const; - std::vector> getItems() const; + std::vector getItems() const; int getMaxLength() const; @@ -122,7 +135,7 @@ class options_manager //sType == "string" std::string sSet; // first is internal value, second is untranslated text - std::vector> vItems; + std::vector vItems; std::string sDefault; int iMaxLength; @@ -149,12 +162,18 @@ class options_manager typedef std::unordered_map options_container; void init(); + void add_options_general(); + void add_options_interface(); + void add_options_graphics(); + void add_options_debug(); + void add_options_world_default(); + void add_options_android(); void load(); bool save(); std::string show( const bool ingame = false, const bool world_options_only = false ); void add_value( const std::string &myoption, const std::string &myval, - const std::string &myvaltxt = "" ); + const translation &myvaltxt ); void serialize( JsonOut &json ) const; void deserialize( JsonIn &jsin ); @@ -184,7 +203,7 @@ class options_manager void add( const std::string &sNameIn, const std::string &sPageIn, const std::string &sMenuTextIn, const std::string &sTooltipIn, // first is option value, second is display name of that value - const std::vector> &sItemsIn, std::string sDefaultIn, + const std::vector &sItemsIn, std::string sDefaultIn, copt_hide_t opt_hide = COPT_NO_HIDE ); //add string input option diff --git a/src/output.cpp b/src/output.cpp index 9d26c014746e4..1ab5a813a21a2 100644 --- a/src/output.cpp +++ b/src/output.cpp @@ -1,39 +1,35 @@ #include "output.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "cata_utility.h" +#include "catacharset.h" #include "color.h" -#include "input.h" -#include "rng.h" -#include "options.h" #include "cursesdef.h" -#include "string_formatter.h" -#include "catacharset.h" -#include "units.h" -#include "debug.h" -#include "path_info.h" -#include "ui.h" +#include "input.h" #include "item.h" #include "line.h" #include "name.h" -#include "cata_utility.h" +#include "options.h" #include "popup.h" +#include "rng.h" +#include "string_formatter.h" #include "string_input_popup.h" +#include "units.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include #if (defined TILES || defined _WIN32 || defined WINDOWS) #include "cursesport.h" #endif #ifdef __ANDROID__ -#include "SDL_keyboard.h" +#include #endif // Display data @@ -73,53 +69,58 @@ std::vector foldstring( std::string str, int width, const char spli std::string strline; std::vector tags; while( std::getline( sstr, strline, '\n' ) ) { - std::string wrapped = word_rewrap( strline, width, split ); - std::stringstream swrapped( wrapped ); - std::string wline; - while( std::getline( swrapped, wline, '\n' ) ) { - // Ensure that each line is independently color-tagged - // Re-add tags closed in the previous line - const std::string rawwline = wline; - if( !tags.empty() ) { - std::stringstream swline; - for( const std::string &tag : tags ) { - swline << tag; - } - swline << wline; - wline = swline.str(); - } - // Process the additional tags in the current line - const std::vector tags_pos = get_tag_positions( rawwline ); - for( const size_t tag_pos : tags_pos ) { - if( tag_pos + 1 < rawwline.size() && rawwline[tag_pos + 1] == '/' ) { - if( !tags.empty() ) { - tags.pop_back(); + if( strline.empty() ) { + // Special case empty lines as std::getline() sets failbit immediately + // if the line is empty. + lines.emplace_back(); + } else { + std::string wrapped = word_rewrap( strline, width, split ); + std::stringstream swrapped( wrapped ); + std::string wline; + while( std::getline( swrapped, wline, '\n' ) ) { + // Ensure that each line is independently color-tagged + // Re-add tags closed in the previous line + const std::string rawwline = wline; + if( !tags.empty() ) { + std::stringstream swline; + for( const std::string &tag : tags ) { + swline << tag; } - } else { - auto tag_end = rawwline.find( '>', tag_pos ); - if( tag_end != std::string::npos ) { - tags.emplace_back( rawwline.substr( tag_pos, tag_end + 1 - tag_pos ) ); + swline << wline; + wline = swline.str(); + } + // Process the additional tags in the current line + const std::vector tags_pos = get_tag_positions( rawwline ); + for( const size_t tag_pos : tags_pos ) { + if( tag_pos + 1 < rawwline.size() && rawwline[tag_pos + 1] == '/' ) { + if( !tags.empty() ) { + tags.pop_back(); + } + } else { + auto tag_end = rawwline.find( '>', tag_pos ); + if( tag_end != std::string::npos ) { + tags.emplace_back( rawwline.substr( tag_pos, tag_end + 1 - tag_pos ) ); + } } } - } - // Close any unclosed tags - if( !tags.empty() ) { - std::stringstream swline; - swline << wline; - for( auto it = tags.rbegin(); it != tags.rend(); ++it ) { - // currently the only closing tag is - swline << ""; + // Close any unclosed tags + if( !tags.empty() ) { + std::stringstream swline; + swline << wline; + for( auto it = tags.rbegin(); it != tags.rend(); ++it ) { + // currently the only closing tag is + swline << ""; + } + wline = swline.str(); } - wline = swline.str(); + // The resulting line can be printed independently and have the correct color + lines.emplace_back( wline ); } - // The resulting line can be printed independently and have the correct color - lines.emplace_back( wline ); } } return lines; } - std::string tag_colored_string( const std::string &s, nc_color color ) { // @todo: Make this tag generation a function, put it in good place @@ -194,14 +195,14 @@ void trim_and_print( const catacurses::window &w, int begin_y, int begin_x, int std::string sColor; const auto color_segments = split_by_color( text ); - for( auto seg : color_segments ) { + for( const std::string &seg : color_segments ) { sColor.clear(); if( !seg.empty() && ( seg.substr( 0, 7 ) == "" ) + 1 ); + sColor = seg.substr( 0, seg.find( '>' ) + 1 ); } } else { sTempText = seg; @@ -324,12 +325,13 @@ void multipage( const catacurses::window &w, const std::vector &tex issue: # of lines in the paragraph > height -> inf. loop; solution: split this paragraph in two pieces; */ - for( int i = 0; i < ( int )text.size(); i++ ) { + for( int i = 0; i < static_cast( text.size() ); i++ ) { if( begin_y == 0 && !caption.empty() ) { begin_y = fold_and_print( w, 0, 1, width - 2, c_white, caption ) + 1; } std::vector next_paragraph = foldstring( text[i], width - 2 ); - if( begin_y + ( int )next_paragraph.size() > height - ( ( i + 1 ) < ( int )text.size() ? 1 : 0 ) ) { + if( begin_y + static_cast( next_paragraph.size() ) > height - ( ( i + 1 ) < static_cast + ( text.size() ) ? 1 : 0 ) ) { // Next page i--; center_print( w, height - 1, c_light_gray, _( "Press any key for more..." ) ); @@ -552,7 +554,7 @@ void draw_tabs( const catacurses::window &w, int active_tab, ... ) mvwputch( w, 1, xpos, c_white, LINE_XOXO ); mvwputch( w, 0, xpos + length + 1, c_white, LINE_OOXX ); mvwputch( w, 1, xpos + length + 1, c_white, LINE_XOXO ); - if( ( int )i == active_tab ) { + if( static_cast( i ) == active_tab ) { mvwputch( w, 1, xpos - 2, h_white, '<' ); mvwputch( w, 1, xpos + length + 3, h_white, '>' ); mvwputch( w, 2, xpos, c_white, LINE_XOOX ); @@ -628,33 +630,6 @@ std::vector get_hotkeys( const std::string &s ) return hotkeys; } -// compatibility stub for uimenu(cancelable, mes, options) -int menu_vec( bool cancelable, const char *mes, - const std::vector options ) -{ - return ( int )uimenu( cancelable, mes, options ); -} - -int menu_vec( bool cancelable, const char *mes, - const std::vector &options, - const std::string &hotkeys_override ) -{ - return ( int )uimenu( cancelable, mes, options, hotkeys_override ); -} - -// compatibility stub for uimenu(cancelable, mes, ...) -int menu( bool const cancelable, const char *const mes, ... ) -{ - va_list ap; - va_start( ap, mes ); - std::vector options; - while( char const *const tmp = va_arg( ap, char * ) ) { - options.push_back( tmp ); - } - va_end( ap ); - return ( uimenu( cancelable, mes, options ) ); -} - long popup( const std::string &text, PopupFlags flags ) { query_popup pop; @@ -804,29 +779,27 @@ std::string format_item_info( const std::vector &vItemDisplay, const std::vector &vItemCompare ) { std::ostringstream buffer; - bool bStartNewLine = true; + bool bIsNewLine = true; for( size_t i = 0; i < vItemDisplay.size(); i++ ) { if( vItemDisplay[i].sType == "DESCRIPTION" ) { - buffer << "\n"; + // Always start a new line for sType == "DESCRIPTION" + if( !bIsNewLine ) { + buffer << "\n"; + } if( vItemDisplay[i].bDrawName ) { buffer << vItemDisplay[i].sName; } + // Always end with a linebreak for sType == "DESCRIPTION" + buffer << "\n"; + bIsNewLine = true; } else { - if( bStartNewLine ) { - if( vItemDisplay[i].bDrawName ) { - buffer << "\n" << vItemDisplay[i].sName; - } - bStartNewLine = false; - } else { - if( vItemDisplay[i].bDrawName ) { - buffer << vItemDisplay[i].sName; - } + if( vItemDisplay[i].bDrawName ) { + buffer << vItemDisplay[i].sName; } - std::string sPlus = vItemDisplay[i].sPlus; std::string sFmt = vItemDisplay[i].sFmt; - std::string sPost = ""; + std::string sPost; //A bit tricky, find %d and split the string size_t pos = sFmt.find( "" ); @@ -862,19 +835,15 @@ std::string format_item_info( const std::vector &vItemDisplay, } } } - buffer << sPlus << ""; - if( vItemDisplay[i].is_int ) { - buffer << string_format( "%.0f", vItemDisplay[i].dValue ); - } else { - buffer << string_format( "%.2f", vItemDisplay[i].dValue ); - } - buffer << ""; + buffer << "" + << vItemDisplay[i].sValue + << ""; } buffer << sPost; - if( vItemDisplay[i].bNewLine ) { + // Set bIsNewLine in case the next line should always start in a new line + if( ( bIsNewLine = vItemDisplay[i].bNewLine ) ) { buffer << "\n"; - bStartNewLine = true; } } } @@ -898,7 +867,7 @@ input_event draw_item_info( const catacurses::window &win, const std::string &sI buffer << sTypeName << "\n"; } for( unsigned int i = 0; i < padding; i++ ) { - buffer << " \n"; //This space is required, otherwise it won't make an empty line. + buffer << "\n"; } buffer << format_item_info( vItemDisplay, vItemCompare ); @@ -939,7 +908,7 @@ input_event draw_item_info( const catacurses::window &win, const std::string &sI // TODO: use input context result = inp_mngr.get_input_event(); - const int ch = ( int )result.get_first_input(); + const int ch = static_cast( result.get_first_input() ); if( handle_scrolling && ch == KEY_PPAGE ) { selected--; werase( win ); @@ -1079,7 +1048,7 @@ std::string word_rewrap( const std::string &in, int width, const uint32_t split bool skipping_tag = false; bool just_wrapped = false; - for( int j = 0, x = 0; j < ( int )in.size(); ) { + for( int j = 0, x = 0; j < static_cast( in.size() ); ) { const char *ins = instr + j; int len = ANY_LENGTH; uint32_t uc = UTF8_getch( &ins, &len ); @@ -1087,7 +1056,7 @@ std::string word_rewrap( const std::string &in, int width, const uint32_t split if( uc == '<' ) { // maybe skip non-printing tag std::vector::iterator it; for( it = tag_positions.begin(); it != tag_positions.end(); ++it ) { - if( ( int )*it == j ) { + if( static_cast( *it ) == j ) { skipping_tag = true; break; } @@ -1138,7 +1107,7 @@ std::string word_rewrap( const std::string &in, int width, const uint32_t split just_wrapped = false; } } - for( int k = lastout; k < ( int )in.size(); k++ ) { + for( int k = lastout; k < static_cast( in.size() ); k++ ) { o << in[k]; } @@ -1504,7 +1473,7 @@ std::string rewrite_vsnprintf( const char *msg ) return rewritten_msg.str(); } -std::string cata::string_formatter::raw_string_format( char const *const format, ... ) +std::string cata::string_formatter::raw_string_format( char const *format, ... ) { va_list args; va_start( args, format ); @@ -1735,7 +1704,7 @@ void display_table( const catacurses::window &w, const std::string &title, int c werase( w ); draw_border( w, BORDER_COLOR, title, c_white ); for( int i = 0; i < rows * columns; i++ ) { - if( i + offset * columns >= ( int )data.size() ) { + if( i + offset * columns >= static_cast( data.size() ) ) { break; } const int x = 2 + ( i % columns ) * col_width; @@ -1746,7 +1715,7 @@ void display_table( const catacurses::window &w, const std::string &title, int c wrefresh( w ); // TODO: use input context int ch = inp_mngr.get_input_event().get_first_input(); - if( ch == KEY_DOWN && ( ( offset + 1 ) * columns ) < ( int )data.size() ) { + if( ch == KEY_DOWN && ( ( offset + 1 ) * columns ) < static_cast( data.size() ) ) { offset++; } else if( ch == KEY_UP && offset > 0 ) { offset--; @@ -2062,7 +2031,8 @@ bool wildcard_match( const std::string &text_in, const std::string &pattern_in ) return false; } - text = text.substr( pos + ( int )it->length(), ( int )text.length() - pos ); + text = text.substr( pos + static_cast( it->length() ), + static_cast( text.length() ) - pos ); } } } @@ -2145,7 +2115,7 @@ std::string format_volume( const units::volume &volume, int width, bool *out_tru } // round up value = round_up( value, scale ); - if( out_value != NULL ) { + if( out_value != nullptr ) { *out_value = value; } // format diff --git a/src/output.h b/src/output.h index 1c47e0d7da57c..e1917e598e901 100644 --- a/src/output.h +++ b/src/output.h @@ -2,19 +2,15 @@ #ifndef OUTPUT_H #define OUTPUT_H -#include "color.h" #include "catacharset.h" -#include "translations.h" -#include "string_formatter.h" +#include "color.h" #include "player.h" +#include "string_formatter.h" +#include "translations.h" -#include #include #include #include -#include -#include -#include struct input_event; struct iteminfo; @@ -339,13 +335,6 @@ inline bool query_int( int &result, const char *const msg, Args &&... args ) std::vector get_hotkeys( const std::string &s ); -// for the next two functions, if cancelable is true, Esc returns the last option -// These are legacy functions, use uilist instead! -int menu_vec( bool cancelable, const char *mes, const std::vector options ); -int menu_vec( bool cancelable, const char *mes, const std::vector &options, - const std::string &hotkeys_override ); -int menu( bool cancelable, const char *mes, ... ); - /** * @name Popup windows * @@ -426,6 +415,8 @@ inline void popup_player_or_npc( player &p, const char *player_mes, const char * } /*@}*/ +std::string format_item_info( const std::vector &vItemDisplay, + const std::vector &vItemCompare ); input_event draw_item_info( const catacurses::window &win, const std::string &sItemName, const std::string &sTypeName, @@ -549,7 +540,7 @@ enum class enumeration_conjunction { /** * @return String containing enumerated elements in format: "a, b, c, ..., and z". Uses the Oxford comma. * @param values A vector of strings - * @param enumeration_conjunction Choose how to separate the last elements. + * @param conj Choose how to separate the last elements. */ template std::string enumerate_as_string( const _Container &values, @@ -588,7 +579,7 @@ std::string enumerate_as_string( const _Container &values, * @param last Iterator pointing to the last element. * @param pred Predicate that accepts an element and returns a representing string. * May return an empty string to omit the element. - * @param enumeration_conjunction Choose how to separate the last elements. + * @param conj Choose how to separate the last elements. */ template std::string enumerate_as_string( _FIter first, _FIter last, _Predicate pred, diff --git a/src/overlay_ordering.h b/src/overlay_ordering.h index 234a48668e649..1f53fa3a38239 100644 --- a/src/overlay_ordering.h +++ b/src/overlay_ordering.h @@ -2,10 +2,10 @@ #ifndef OVERLAY_ORDERING_H #define OVERLAY_ORDERING_H -#include - #include "string_id.h" +#include + class JsonObject; struct mutation_branch; using trait_id = string_id; diff --git a/src/overmap.cpp b/src/overmap.cpp index 05fece7988dec..2cf58706f7c8d 100644 --- a/src/overmap.cpp +++ b/src/overmap.cpp @@ -1,47 +1,44 @@ #include "overmap.h" +#include "cata_utility.h" #include "coordinate_conversions.h" +#include "debug.h" +#include "game.h" #include "generic_factory.h" -#include "overmap_types.h" -#include "overmap_connection.h" -#include "overmap_location.h" -#include "rng.h" +#include "json.h" #include "line.h" -#include "game.h" -#include "npc.h" #include "map.h" -#include "output.h" -#include "debug.h" -#include "options.h" -#include "overmapbuffer.h" -#include "json.h" -#include "mapdata.h" +#include "map_iterator.h" #include "mapgen.h" -#include "map_extras.h" -#include "cata_utility.h" +#include "mapgen_functions.h" +#include "messages.h" #include "mongroup.h" #include "mtype.h" #include "name.h" +#include "npc.h" +#include "options.h" +#include "output.h" +#include "overmap_connection.h" +#include "overmap_location.h" +#include "overmap_types.h" +#include "overmapbuffer.h" +#include "regional_settings.h" +#include "rng.h" +#include "rotatable_symbols.h" #include "simple_pathfinding.h" #include "translations.h" -#include "mapgen_functions.h" -#include "weather_gen.h" -#include "mapbuffer.h" -#include "map_iterator.h" -#include "messages.h" -#include "rotatable_symbols.h" -#include "regional_settings.h" +#include #include -#include -#include -#include -#include -#include +#include +#include +#include #include -#include -#include #include +#include +#include +#include +#include #define dbg(x) DebugLog((DebugLevel)(x),D_MAP_GEN) << __FILE__ << ":" << __LINE__ << ": " @@ -171,7 +168,7 @@ static const std::map oter_flags_map = { { "SIDEWALK", has_sidewalk }, { "NO_ROTATE", no_rotate }, { "LINEAR", line_drawing }, - { "SUBWAY", subway_connection } + { "SUBWAY", subway_connection } }; template<> @@ -719,8 +716,6 @@ const std::vector &overmap_terrains::get_all() return terrains.get_all(); } - - const overmap_special_terrain &overmap_special::get_terrain_at( const tripoint &p ) const { const auto iter = std::find_if( terrains.begin(), @@ -790,7 +785,14 @@ void overmap_special::finalize() if( !elem.terrain && oter.terrain ) { elem.terrain = oter.terrain->get_type_id(); // Defaulted. } - elem.connection = overmap_connections::guess_for( elem.terrain ); + + // If the connection type hasn't been specified, we'll guess for them. + // The guess isn't always right (hence guessing) in the case where + // multiple connections types can be made on a single location type, + // e.g. both roads and forest trails can be placed on "forest" locations. + if( elem.connection.is_null() ) { + elem.connection = overmap_connections::guess_for( elem.terrain ); + } } } @@ -1122,7 +1124,7 @@ void overmap::generate( const overmap *north, const overmap *east, // Determine points where rivers & roads should connect w/ adjacent maps const oter_id river_center( "river_center" ); // optimized comparison. - if( north != NULL ) { + if( north != nullptr ) { for( int i = 2; i < OMAPX - 2; i++ ) { if( is_river( north->get_ter( i, OMAPY - 1, 0 ) ) ) { ter( i, 0, 0 ) = river_center; @@ -1143,7 +1145,7 @@ void overmap::generate( const overmap *north, const overmap *east, } } size_t rivers_from_north = river_start.size(); - if( west != NULL ) { + if( west != nullptr ) { for( int i = 2; i < OMAPY - 2; i++ ) { if( is_river( west->get_ter( OMAPX - 1, i, 0 ) ) ) { ter( 0, i, 0 ) = river_center; @@ -1163,7 +1165,7 @@ void overmap::generate( const overmap *north, const overmap *east, } } } - if( south != NULL ) { + if( south != nullptr ) { for( int i = 2; i < OMAPX - 2; i++ ) { if( is_river( south->get_ter( i, 0, 0 ) ) ) { ter( i, OMAPY - 1, 0 ) = river_center; @@ -1184,7 +1186,7 @@ void overmap::generate( const overmap *north, const overmap *east, } } size_t rivers_to_south = river_end.size(); - if( east != NULL ) { + if( east != nullptr ) { for( int i = 2; i < OMAPY - 2; i++ ) { if( is_river( east->get_ter( 0, i, 0 ) ) ) { ter( OMAPX - 1, i, 0 ) = river_center; @@ -1208,25 +1210,25 @@ void overmap::generate( const overmap *north, const overmap *east, // Even up the start and end points of rivers. (difference of 1 is acceptable) // Also ensure there's at least one of each. std::vector new_rivers; - if( north == NULL || west == NULL ) { + if( north == nullptr || west == nullptr ) { while( river_start.empty() || river_start.size() + 1 < river_end.size() ) { new_rivers.clear(); - if( north == NULL ) { + if( north == nullptr ) { new_rivers.push_back( point( rng( 10, OMAPX - 11 ), 0 ) ); } - if( west == NULL ) { + if( west == nullptr ) { new_rivers.push_back( point( 0, rng( 10, OMAPY - 11 ) ) ); } river_start.push_back( random_entry( new_rivers ) ); } } - if( south == NULL || east == NULL ) { + if( south == nullptr || east == nullptr ) { while( river_end.empty() || river_end.size() + 1 < river_start.size() ) { new_rivers.clear(); - if( south == NULL ) { + if( south == nullptr ) { new_rivers.push_back( point( rng( 10, OMAPX - 11 ), OMAPY - 1 ) ); } - if( east == NULL ) { + if( east == nullptr ) { new_rivers.push_back( point( OMAPX - 1, rng( 10, OMAPY - 11 ) ) ); } river_end.push_back( random_entry( new_rivers ) ); @@ -1270,6 +1272,8 @@ void overmap::generate( const overmap *north, const overmap *east, place_cities(); place_forest(); + place_forest_trails(); + // Ideally we should have at least two exit points for roads, on different sides if( roads_out.size() < 2 ) { std::vector viable_roads; @@ -1277,28 +1281,28 @@ void overmap::generate( const overmap *north, const overmap *east, // Populate viable_roads with one point for each neighborless side. // Make sure these points don't conflict with rivers. // @todo: In theory this is a potential infinite loop... - if( north == NULL ) { + if( north == nullptr ) { do { tmp = rng( 10, OMAPX - 11 ); } while( is_river( ter( tmp, 0, 0 ) ) || is_river( ter( tmp - 1, 0, 0 ) ) || is_river( ter( tmp + 1, 0, 0 ) ) ); viable_roads.push_back( city( tmp, 0, 0 ) ); } - if( east == NULL ) { + if( east == nullptr ) { do { tmp = rng( 10, OMAPY - 11 ); } while( is_river( ter( OMAPX - 1, tmp, 0 ) ) || is_river( ter( OMAPX - 1, tmp - 1, 0 ) ) || is_river( ter( OMAPX - 1, tmp + 1, 0 ) ) ); viable_roads.push_back( city( OMAPX - 1, tmp, 0 ) ); } - if( south == NULL ) { + if( south == nullptr ) { do { tmp = rng( 10, OMAPX - 11 ); } while( is_river( ter( tmp, OMAPY - 1, 0 ) ) || is_river( ter( tmp - 1, OMAPY - 1, 0 ) ) || is_river( ter( tmp + 1, OMAPY - 1, 0 ) ) ); viable_roads.push_back( city( tmp, OMAPY - 1, 0 ) ); } - if( west == NULL ) { + if( west == nullptr ) { do { tmp = rng( 10, OMAPY - 11 ); } while( is_river( ter( 0, tmp, 0 ) ) || is_river( ter( 0, tmp - 1, 0 ) ) || @@ -1325,6 +1329,11 @@ void overmap::generate( const overmap *north, const overmap *east, connect_closest_points( road_points, 0, *local_road ); place_specials( enabled_specials ); + + // After we've placed all the specials and connected everything else via roads, + // try and place some trailheads. + place_forest_trailheads(); + polish_river(); // @todo: there is no reason we can't generate the sublevels in one pass @@ -1767,7 +1776,7 @@ void overmap::move_hordes() } // Scan for compatible hordes in this area, selecting the largest. - mongroup *add_to_group = NULL; + mongroup *add_to_group = nullptr; auto group_bucket = zg.equal_range( p ); std::vector::size_type add_to_horde_size = 0; std::for_each( group_bucket.first, group_bucket.second, @@ -1785,7 +1794,7 @@ void overmap::move_hordes() // Check again if the zombie will join the largest horde, now that we know the accurate size. if( this_monster.will_join_horde( add_to_horde_size ) ) { // If there is no horde to add the monster to, create one. - if( add_to_group == NULL ) { + if( add_to_group == nullptr ) { mongroup m( GROUP_ZOMBIE, p.x, p.y, p.z, 1, 0 ); m.horde = true; m.monsters.push_back( this_monster ); @@ -1949,6 +1958,227 @@ void overmap::place_forest() } } +void overmap::place_forest_trails() +{ + std::unordered_set visited; + + const auto get_forest = [&]( point starting_point, std::vector &forest_points ) { + std::queue to_check; + to_check.push( starting_point ); + while( !to_check.empty() ) { + const point current_point = to_check.front(); + to_check.pop(); + + // We've been here before, so bail. + if( visited.find( current_point ) != visited.end() ) { + continue; + } + + // This point is out of bounds, so bail. + bool in_bounds = current_point.x >= 0 && current_point.x < OMAPX && current_point.y >= 0 && + current_point.y < OMAPY; + if( !in_bounds ) { + continue; + } + + // Mark this point as visited. + visited.emplace( current_point ); + + // If this point is a valid forest type, then add it to our collection + // of forest points. + const auto current_terrain = ter( current_point.x, current_point.y, 0 ); + if( current_terrain == "forest" || current_terrain == "forest_thick" || + current_terrain == "forest_water" ) { + forest_points.emplace_back( current_point ); + to_check.push( point( current_point.x, current_point.y + 1 ) ); + to_check.push( point( current_point.x, current_point.y - 1 ) ); + to_check.push( point( current_point.x + 1, current_point.y ) ); + to_check.push( point( current_point.x - 1, current_point.y ) ); + } + } + + return; + }; + + for( int i = 0; i < OMAPX; i++ ) { + for( int j = 0; j < OMAPY; j++ ) { + oter_id oter = ter( i, j, 0 ); + if( !is_ot_type( "forest", oter ) ) { + continue; + } + + point seed_point( i, j ); + + // If we've already visited this point, we don't need to + // process it since it's already part of another forest. + if( visited.find( seed_point ) != visited.end() ) { + continue; + } + + // Get the contiguous forest from this point. + std::vector forest_points; + get_forest( seed_point, forest_points ); + + // If we don't have enough points to build a trail, move on. + if( forest_points.empty() || + forest_points.size() < static_cast::size_type> + ( settings.forest_trail.minimum_forest_size ) ) { + continue; + } + + // If we don't rng a forest based on our settings, move on. + if( !one_in( settings.forest_trail.chance ) ) { + continue; + } + + // Get the north and south most points in the forest. + auto north_south_most = std::minmax_element( forest_points.begin(), + forest_points.end(), []( const point & lhs, const point & rhs ) { + return lhs.y < rhs.y; + } ); + + // Get the west and east most points in the forest. + auto west_east_most = std::minmax_element( forest_points.begin(), + forest_points.end(), []( const point & lhs, const point & rhs ) { + return lhs.x < rhs.x; + } ); + + // We'll use these points later as points that are guaranteed to be + // at a boundary and will form a good foundation for the trail system. + point northmost = *north_south_most.first; + point southmost = *north_south_most.second; + point westmost = *west_east_most.first; + point eastmost = *west_east_most.second; + + // Do a simplistic calculation of the center of the forest (rather than + // calculating the actual centroid--it's not that important) to have another + // good point to form the foundation of the trail system. + int center_x = westmost.x + ( eastmost.x - westmost.x ) / 2; + int center_y = northmost.y + ( southmost.y - northmost.y ) / 2; + + point center_point = point( center_x, center_y ); + + // Because we didn't do the centroid of a concave polygon, there's no + // guarantee that our center point is actually within the bounds of the + // forest. Just find the point within our set that is closest to our + // center point and use that. + point actual_center_point = *std::min_element( forest_points.begin(), + forest_points.end(), [¢er_point]( const point & lhs, const point & rhs ) { + return square_dist( lhs.x, lhs.y, center_point.x, center_point.y ) < square_dist( rhs.x, rhs.y, + center_point.x, center_point.y ); + } ); + + // Figure out how many random points we'll add to our trail system, based on the forest + // size and our configuration. + int max_random_points = settings.forest_trail.random_point_min + forest_points.size() / + settings.forest_trail.random_point_size_scalar; + max_random_points = std::min( max_random_points, settings.forest_trail.random_point_max ); + + // Start with the center... + std::vector chosen_points = { actual_center_point }; + + // ...and then add our random points. + int random_point_count = 0; + static std::default_random_engine eng( + std::chrono::system_clock::now().time_since_epoch().count() ); + std::shuffle( forest_points.begin(), forest_points.end(), eng ); + for( auto &random_point : forest_points ) { + if( random_point_count >= max_random_points ) { + break; + } + random_point_count++; + chosen_points.emplace_back( random_point ); + } + + // Add our north/south/west/east-most points based on our configuration. + if( one_in( settings.forest_trail.border_point_chance ) ) { + chosen_points.emplace_back( northmost ); + } + if( one_in( settings.forest_trail.border_point_chance ) ) { + chosen_points.emplace_back( southmost ); + } + if( one_in( settings.forest_trail.border_point_chance ) ) { + chosen_points.emplace_back( westmost ); + } + if( one_in( settings.forest_trail.border_point_chance ) ) { + chosen_points.emplace_back( eastmost ); + } + + // Finally, connect all the points and make a forest trail out of them. + const string_id forest_trail( "forest_trail" ); + connect_closest_points( chosen_points, 0, *forest_trail ); + } + } +} + +void overmap::place_forest_trailheads() +{ + // No trailheads if there are no cities. + const int city_size = get_option( "CITY_SIZE" ); + if( city_size <= 0 ) { + return; + } + + // Add the roads out of the overmap to our collection, which + // we'll then use to connect our trailheads to the rest of the + // road network. + std::vector road_points; + for( const auto &elem : roads_out ) { + road_points.emplace_back( elem.x, elem.y ); + } + + // Trailheads may be placed if all of the following are true: + // 1. we're at a forest_trail_end_north/south/west/east, + // 2. the next two overmap terrains continuing in the direction + // of the trail are fields + // 3. rng rolls a success for our trailhead_chance from the configuration + + for( int i = 2; i < OMAPX - 2; i++ ) { + for( int j = 2; j < OMAPY - 2; j++ ) { + oter_id oter = ter( i, j, 0 ); + if( oter == "forest_trail_end_north" ) { + oter_id &oter_potential_trailhead = ter( i, j - 1, 0 ); + oter_id &oter_potential_road = ter( i, j - 2, 0 ); + if( oter_potential_trailhead == "field" && oter_potential_road == "field" && + one_in( settings.forest_trail.trailhead_chance ) ) { + oter_potential_trailhead = oter_id( "trailhead_north" ); + road_points.emplace_back( i, j - 2 ); + } + } else if( oter == "forest_trail_end_south" ) { + oter_id &oter_potential_trailhead = ter( i, j + 1, 0 ); + oter_id &oter_potential_road = ter( i, j + 2, 0 ); + if( oter_potential_trailhead == "field" && oter_potential_road == "field" && + one_in( settings.forest_trail.trailhead_chance ) ) { + oter_potential_trailhead = oter_id( "trailhead_south" ); + road_points.emplace_back( i, j + 2 ); + } + } else if( oter == "forest_trail_end_west" ) { + oter_id &oter_potential_trailhead = ter( i - 1, j, 0 ); + oter_id &oter_potential_road = ter( i - 2, j, 0 ); + if( oter_potential_trailhead == "field" && oter_potential_road == "field" && + one_in( settings.forest_trail.trailhead_chance ) ) { + oter_potential_trailhead = oter_id( "trailhead_west" ); + road_points.emplace_back( i, j - 2 ); + } + } else if( oter == "forest_trail_end_east" ) { + oter_id &oter_potential_trailhead = ter( i + 1, j, 0 ); + oter_id &oter_potential_road = ter( i + 2, j, 0 ); + if( oter_potential_trailhead == "field" && oter_potential_road == "field" && + one_in( settings.forest_trail.trailhead_chance ) ) { + oter_potential_trailhead = oter_id( "trailhead_east" ); + road_points.emplace_back( i, j + 2 ); + } + } else { + continue; + } + } + } + + // Connect our road points with local_road connections. + const string_id local_road( "local_road" ); + connect_closest_points( road_points, 0, *local_road ); +} + void overmap::place_river( point pa, point pb ) { int x = pa.x; @@ -2210,7 +2440,7 @@ bool overmap::build_lab( int x, int y, int z, int s, std::vector *lab_tra // grows outwards from previously placed lab maps std::set candidates; candidates.insert( {point( x - 1, y ), point( x + 1, y ), point( x, y - 1 ), point( x, y + 1 )} ); - while( candidates.size() ) { + while( !candidates.empty() ) { auto cand = candidates.begin(); const int &cx = cand->x; const int &cy = cand->y; @@ -3550,4 +3780,4 @@ overmap_special_id overmap_specials::create_building_from( const string_id #include +#include +#include #include -#include #include +#include #include #include #include -#include -#include class input_context; class JsonObject; @@ -210,7 +207,7 @@ class overmap /** * Dummy value, used to indicate that a point returned by a function is invalid. */ - static const tripoint invalid_tripoint; + static constexpr tripoint invalid_tripoint = tripoint_min; /** * Return a vector containing the absolute coordinates of * every matching note on the current z level of the current overmap. @@ -227,9 +224,6 @@ class overmap return settings; } - // Returns a batch of the default enabled specials. - overmap_special_batch get_enabled_specials() const; - void clear_mon_groups(); private: std::multimap zg; @@ -319,6 +313,9 @@ class overmap void place_river( point pa, point pb ); void place_forest(); + void place_forest_trails(); + void place_forest_trailheads(); + // City Building overmap_special_id pick_random_building_to_place( int town_dist ) const; @@ -330,7 +327,6 @@ class overmap bool build_lab( int x, int y, int z, int s, std::vector *lab_train_points, const std::string &prefix, int train_odds ); void build_anthill( int x, int y, int z, int s ); - void build_acid_anthill( int x, int y, int z, int s ); void build_tunnel( int x, int y, int z, int s, om_direction::type dir ); bool build_slimepit( int x, int y, int z, int s ); void build_mine( int x, int y, int z, int s ); diff --git a/src/overmap_connection.cpp b/src/overmap_connection.cpp index 4621a167168c8..96c6f54ab3ee8 100644 --- a/src/overmap_connection.cpp +++ b/src/overmap_connection.cpp @@ -1,8 +1,8 @@ #include "overmap_connection.h" #include "generic_factory.h" -#include "overmap_location.h" #include "json.h" +#include "overmap_location.h" #include #include diff --git a/src/overmap_connection.h b/src/overmap_connection.h index c8e3cb58188f3..eb5b2514da8e4 100644 --- a/src/overmap_connection.h +++ b/src/overmap_connection.h @@ -1,6 +1,6 @@ #pragma once -#ifndef OVERMAP_CONNECTIONS_H -#define OVERMAP_CONNECTIONS_H +#ifndef OVERMAP_CONNECTION_H +#define OVERMAP_CONNECTION_H #include "enums.h" #include "int_id.h" @@ -83,4 +83,4 @@ string_id guess_for( const int_id &oter_id ); } -#endif // OVERMAP_CONNECTIONS_H +#endif // OVERMAP_CONNECTION_H diff --git a/src/overmap_location.cpp b/src/overmap_location.cpp index 465af0f934cc9..ac79d7f3e0a0c 100644 --- a/src/overmap_location.cpp +++ b/src/overmap_location.cpp @@ -5,7 +5,6 @@ #include "rng.h" #include -#include namespace { diff --git a/src/overmap_location.h b/src/overmap_location.h index 2cf6b0ca618b2..df299d8f67143 100644 --- a/src/overmap_location.h +++ b/src/overmap_location.h @@ -5,7 +5,6 @@ #include "int_id.h" #include "string_id.h" -#include #include class JsonObject; diff --git a/src/overmap_types.h b/src/overmap_types.h index d7836e8eee0d5..f5ad07cf7dc6d 100644 --- a/src/overmap_types.h +++ b/src/overmap_types.h @@ -8,7 +8,7 @@ class scent_trace { public: // Default constructor makes an invalid trace. - scent_trace() : creation_time( calendar::before_time_starts ), initial_strength( 0 ) {}; + scent_trace() : creation_time( calendar::before_time_starts ), initial_strength( 0 ) {} scent_trace( const time_point &ct, int strength ) : creation_time( ct ), initial_strength( strength ) {} // TODO: give these accessors so they can become private and immutable. diff --git a/src/overmap_ui.cpp b/src/overmap_ui.cpp index 4bbd5452af5e9..4a06665bff763 100644 --- a/src/overmap_ui.cpp +++ b/src/overmap_ui.cpp @@ -1,5 +1,6 @@ #include "overmap_ui.h" +#include "cata_utility.h" #include "clzones.h" #include "coordinate_conversions.h" #include "cursesdef.h" @@ -10,9 +11,9 @@ #include "mongroup.h" #include "npc.h" #include "options.h" +#include "output.h" #include "overmap.h" #include "overmapbuffer.h" -#include "output.h" #include "player.h" #include "sounds.h" #include "string_input_popup.h" @@ -20,10 +21,9 @@ #include "uistate.h" #include "weather.h" #include "weather_gen.h" -#include "cata_utility.h" #ifdef __ANDROID__ -#include "SDL_keyboard.h" +#include #endif namespace @@ -148,7 +148,7 @@ bool get_scent_glyph( const tripoint &pos, nc_color &ter_color, long &ter_sym ) i++; scent_age /= 10; } - ter_color = color_list.get( ( color_id )i ); + ter_color = color_list.get( static_cast( i ) ); int scent_strength = possible_scent.initial_strength; char c = '0'; while( c <= '9' && scent_strength > 0 ) { @@ -285,7 +285,7 @@ point draw_notes( int z ) } void draw( const catacurses::window &w, const catacurses::window &wbar, const tripoint ¢er, - const tripoint &orig, bool blink, bool show_explored, input_context *inp_ctxt, + const tripoint &orig, bool blink, bool show_explored, bool fast_scroll, input_context *inp_ctxt, const draw_data_t &data ) { const int z = center.z; @@ -734,6 +734,7 @@ void draw( const catacurses::window &w, const catacurses::window &wbar, const tr print_hint( "TOGGLE_CITY_LABELS", uistate.overmap_show_city_labels ? c_pink : c_magenta ); print_hint( "TOGGLE_HORDES", uistate.overmap_show_hordes ? c_pink : c_magenta ); print_hint( "TOGGLE_EXPLORED", is_explored ? c_pink : c_magenta ); + print_hint( "TOGGLE_FAST_SCROLL", fast_scroll ? c_pink : c_magenta ); print_hint( "HELP_KEYBINDINGS" ); print_hint( "QUIT" ); } @@ -794,6 +795,8 @@ tripoint display( const tripoint &orig, const draw_data_t &data = draw_data_t() ictxt.register_action( "TOGGLE_HORDES" ); ictxt.register_action( "TOGGLE_CITY_LABELS" ); ictxt.register_action( "TOGGLE_EXPLORED" ); + ictxt.register_action( "TOGGLE_FAST_SCROLL" ); + if( data.debug_editor ) { ictxt.register_action( "PLACE_TERRAIN" ); ictxt.register_action( "PLACE_SPECIAL" ); @@ -801,16 +804,20 @@ tripoint display( const tripoint &orig, const draw_data_t &data = draw_data_t() ictxt.register_action( "QUIT" ); std::string action; bool show_explored = true; + bool fast_scroll = false; /* fast scroll state should reset every time overmap UI is opened */ + int fast_scroll_offset = get_option( "MOVE_VIEW_OFFSET" ); + do { - draw( g->w_overmap, g->w_omlegend, curs, orig, uistate.overmap_show_overlays, show_explored, &ictxt, - data ); + draw( g->w_overmap, g->w_omlegend, curs, orig, uistate.overmap_show_overlays, show_explored, + fast_scroll, &ictxt, data ); action = ictxt.handle_input( BLINK_SPEED ); int dirx = 0; int diry = 0; if( ictxt.get_direction( dirx, diry, action ) ) { - curs.x += dirx; - curs.y += diry; + int scroll_d = fast_scroll ? fast_scroll_offset : 1; + curs.x += dirx * scroll_d; + curs.y += diry * scroll_d; } else if( action == "CENTER" ) { curs = orig; } else if( action == "LEVEL_DOWN" && curs.z > -OVERMAP_DEPTH ) { @@ -829,7 +836,7 @@ tripoint display( const tripoint &orig, const draw_data_t &data = draw_data_t() _( color_pair.second.c_str() ), string_replace( color_pair.second, " ", "_" ).c_str() ); } - std::string helper_text = string_format( ".\r\n \n%s\r\n%s\r\n%s\r\n ", + std::string helper_text = string_format( ".\n\n%s\n%s\n%s\n", _( "Type GLYPH:TEXT to set a custom glyph." ), _( "Type COLOR;TEXT to set a custom color." ), _( "Examples: B:Base | g;Loot | !:R;Minefield" ) ); @@ -876,7 +883,7 @@ tripoint display( const tripoint &orig, const draw_data_t &data = draw_data_t() .text( new_note ) .description( string_format( "%s%s%s\n", color_notes, - std::string( title.length() - 2, ' ' ), + std::string( title.length() - 1, ' ' ), tmp_note ) ) .title_color( c_white ) .desc_color( c_light_gray ) @@ -933,6 +940,8 @@ tripoint display( const tripoint &orig, const draw_data_t &data = draw_data_t() uistate.overmap_show_city_labels = !uistate.overmap_show_city_labels; } else if( action == "TOGGLE_EXPLORED" ) { overmap_buffer.toggle_explored( curs.x, curs.y, curs.z ); + } else if( action == "TOGGLE_FAST_SCROLL" ) { + fast_scroll = !fast_scroll; } else if( action == "SEARCH" ) { std::string term = string_input_popup() .title( _( "Search term:" ) ) @@ -1000,7 +1009,8 @@ tripoint display( const tripoint &orig, const draw_data_t &data = draw_data_t() do { tmp.x = locations[i].x; tmp.y = locations[i].y; - draw( g->w_overmap, g->w_omlegend, tmp, orig, uistate.overmap_show_overlays, show_explored, NULL, + draw( g->w_overmap, g->w_omlegend, tmp, orig, uistate.overmap_show_overlays, show_explored, + fast_scroll, nullptr, draw_data_t() ); //Draw search box mvwprintz( w_search, 1, 1, c_light_blue, _( "Search:" ) ); @@ -1084,8 +1094,8 @@ tripoint display( const tripoint &orig, const draw_data_t &data = draw_data_t() do { // overmap::draw will handle actually showing the preview - draw( g->w_overmap, g->w_omlegend, curs, orig, uistate.overmap_show_overlays, - show_explored, NULL, draw_data_t() ); + draw( g->w_overmap, g->w_omlegend, curs, orig, uistate.overmap_show_overlays, show_explored, + fast_scroll, NULL, draw_data_t() ); draw_border( w_editor ); if( terrain ) { diff --git a/src/overmap_ui.h b/src/overmap_ui.h index d36e756ce98b1..80475e5ec23d5 100644 --- a/src/overmap_ui.h +++ b/src/overmap_ui.h @@ -1,5 +1,6 @@ -#ifndef SRC_OVERMAP_UI_H_ -#define SRC_OVERMAP_UI_H_ +#pragma once +#ifndef OVERMAP_UI_H +#define OVERMAP_UI_H #include "enums.h" @@ -59,4 +60,4 @@ tripoint choose_point( const tripoint &origin ); } // namespace ui -#endif /* SRC_OVERMAP_UI_H_ */ +#endif /* OVERMAP_UI_H */ diff --git a/src/overmapbuffer.cpp b/src/overmapbuffer.cpp index 6ece9b3814ff2..73bec49d4c871 100644 --- a/src/overmapbuffer.cpp +++ b/src/overmapbuffer.cpp @@ -1,25 +1,26 @@ #include "overmapbuffer.h" + +#include "cata_utility.h" #include "coordinate_conversions.h" -#include "overmap_connection.h" -#include "overmap_types.h" -#include "overmap.h" +#include "debug.h" +#include "filesystem.h" #include "game.h" #include "line.h" #include "map.h" -#include "debug.h" -#include "monster.h" #include "mongroup.h" +#include "monster.h" +#include "npc.h" +#include "overmap.h" +#include "overmap_connection.h" +#include "overmap_types.h" #include "simple_pathfinding.h" #include "string_formatter.h" -#include "npc.h" #include "vehicle.h" -#include "filesystem.h" -#include "cata_utility.h" #include #include +#include #include -#include overmapbuffer overmap_buffer; @@ -329,7 +330,7 @@ int overmapbuffer::get_horde_size( int const x, int const y, int const z ) int horde_size = 0; for( auto const &m : overmap_buffer.monsters_at( x, y, z ) ) { if( m->horde ) { - if( m->monsters.size() > 0 ) { + if( !m->monsters.empty() ) { horde_size += m->monsters.size(); } else { // We don't know how large this will actually be, because @@ -361,7 +362,7 @@ bool overmapbuffer::has_vehicle( int x, int y, int z ) } } - return false;; + return false; } std::vector overmapbuffer::get_vehicle( int x, int y, int z ) @@ -419,8 +420,7 @@ std::vector overmapbuffer::monsters_at( int x, int y, int z ) // (x,y) are overmap terrain coordinates, they spawn 2x2 submaps, // but monster groups are defined with submap coordinates. std::vector result; - std::vector tmp; - tmp = groups_at( x * 2, y * 2, z ); + std::vector tmp = groups_at( x * 2, y * 2, z ); result.insert( result.end(), tmp.begin(), tmp.end() ); tmp = groups_at( x * 2, y * 2 + 1, z ); result.insert( result.end(), tmp.begin(), tmp.end() ); diff --git a/src/overmapbuffer.h b/src/overmapbuffer.h index 6c631810fe075..f20c740f8f7c0 100644 --- a/src/overmapbuffer.h +++ b/src/overmapbuffer.h @@ -6,11 +6,10 @@ #include "int_id.h" #include "overmap_types.h" -#include -#include #include -#include +#include #include +#include struct mongroup; class monster; @@ -291,7 +290,7 @@ class overmapbuffer typedef std::pair t_point_with_note; typedef std::vector t_notes_vector; t_notes_vector get_all_notes( int z ) { - return get_notes( z, NULL ); // NULL => don't filter notes + return get_notes( z, nullptr ); // NULL => don't filter notes } t_notes_vector find_notes( int z, const std::string &pattern ) { return get_notes( z, &pattern ); // filter with pattern diff --git a/src/path_info.cpp b/src/path_info.cpp index 3694994c92cff..b680d27a4cb14 100644 --- a/src/path_info.cpp +++ b/src/path_info.cpp @@ -1,12 +1,14 @@ #include "path_info.h" -#include "options.h" + #include "filesystem.h" +#include "options.h" #include "translations.h" + +#include #include -#include #if (defined _WIN32 || defined WINDOW) -#include "windows.h" +#include #endif /** Map where we store filenames */ @@ -56,9 +58,7 @@ void PATH_INFO::init_user_dir( const char *ud ) void PATH_INFO::update_pathname( const std::string &name, const std::string &path ) { - std::map::iterator iter; - - iter = FILENAMES.find( name ); + std::map::iterator iter = FILENAMES.find( name ); if( iter != FILENAMES.end() ) { FILENAMES[name] = path; } else { @@ -241,7 +241,7 @@ std::string PATH_INFO::find_translated_file( const std::string &pathid, #endif const char *v = setlocale( LC_ALL, NULL ); - if( v != NULL ) { + if( v != nullptr ) { loc_name = v; } } else { diff --git a/src/path_info.h b/src/path_info.h index 2d3a8cca1f282..33ad902908069 100644 --- a/src/path_info.h +++ b/src/path_info.h @@ -2,8 +2,8 @@ #ifndef PATH_INFO_H #define PATH_INFO_H -#include #include +#include extern std::map FILENAMES; diff --git a/src/pathfinding.cpp b/src/pathfinding.cpp index b16de2701037a..df7e2dbf61547 100644 --- a/src/pathfinding.cpp +++ b/src/pathfinding.cpp @@ -1,17 +1,16 @@ #include "pathfinding.h" + +#include "cata_utility.h" #include "coordinates.h" #include "debug.h" #include "enums.h" -#include "player.h" #include "map.h" -#include "trap.h" -#include "map_iterator.h" -#include "vehicle.h" -#include "veh_type.h" -#include "submap.h" #include "mapdata.h" #include "optional.h" -#include "cata_utility.h" +#include "submap.h" +#include "trap.h" +#include "veh_type.h" +#include "vehicle.h" #include "vpart_position.h" #include "vpart_reference.h" @@ -19,8 +18,6 @@ #include #include -#include "messages.h" - enum astar_state { ASL_NONE, ASL_OPEN, @@ -31,7 +28,7 @@ enum astar_state { constexpr int flat_index( const int x, const int y ) { return ( x * MAPSIZE * SEEY ) + y; -}; +} // Flattened 2D array representing a single z-level worth of pathfinding data struct path_data_layer { @@ -48,7 +45,7 @@ struct path_data_layer { state[ind] = ASL_NONE; // Mark as unvisited } } - }; + } }; struct pathfinder { diff --git a/src/pickup.cpp b/src/pickup.cpp index d5813d0f89c01..7674df186f8e7 100644 --- a/src/pickup.cpp +++ b/src/pickup.cpp @@ -1,33 +1,31 @@ #include "pickup.h" #include "auto_pickup.h" +#include "cata_utility.h" +#include "debug.h" #include "game.h" -#include "player.h" +#include "input.h" +#include "item_location.h" +#include "item_search.h" +#include "itype.h" #include "map.h" +#include "mapdata.h" #include "messages.h" -#include "translations.h" -#include "input.h" -#include "output.h" #include "options.h" +#include "output.h" +#include "player.h" +#include "string_formatter.h" +#include "string_input_popup.h" +#include "translations.h" #include "ui.h" -#include "itype.h" -#include "vpart_position.h" +#include "veh_interact.h" #include "vehicle.h" +#include "vpart_position.h" #include "vpart_reference.h" -#include "mapdata.h" -#include "cata_utility.h" -#include "string_formatter.h" -#include "debug.h" -#include "vehicle_selector.h" -#include "veh_interact.h" -#include "item_search.h" -#include "item_location.h" -#include "string_input_popup.h" #include -#include #include -#include +#include typedef std::pair ItemCount; typedef std::map PickupMap; @@ -69,7 +67,7 @@ interact_results interact_with_vehicle( vehicle *veh, const tripoint &pos, } std::vector menu_items; - std::vector options_message; + std::vector options_message; const bool has_items_on_ground = g->m.sees_some_items( pos, g->u ); const bool items_are_sealed = g->m.has_flag( "SEALED", pos ); @@ -101,7 +99,6 @@ interact_results interact_with_vehicle( vehicle *veh, const tripoint &pos, const int bike_rack_part = veh->avail_part_with_feature( veh_root_part, "BIKE_RACK_VEH", true ); const bool has_bike_rack = ( bike_rack_part >= 0 ); - enum { EXAMINE, TRACK, CONTROL, CONTROL_ELECTRONICS, GET_ITEMS, GET_ITEMS_ON_GROUND, FOLD_VEHICLE, UNLOAD_TURRET, RELOAD_TURRET, USE_HOTPLATE, FILL_CONTAINER, DRINK, USE_WELDER, USE_PURIFIER, PURIFY_TANK, USE_WASHMACHINE, USE_MONSTER_CAPTURE, @@ -340,7 +337,7 @@ static bool select_autopickup_items( std::vector> &here, for( size_t i = 0; i < here.size(); i++ ) { bPickup = false; std::list::iterator begin_iterator = here[i].begin(); - if( begin_iterator->_item.volume() / units::legacy_volume_factor == ( int )iVol ) { + if( begin_iterator->_item.volume() / units::legacy_volume_factor == static_cast( iVol ) ) { iNumChecked++; const std::string sItemName = begin_iterator->_item.tname( 1, false ); @@ -349,7 +346,7 @@ static bool select_autopickup_items( std::vector> &here, bPickup = true; } else if( get_auto_pickup().check_item( sItemName ) != RULE_BLACKLISTED ) { //No prematched pickup rule found - //items with damage, (fits) or a container + //check rules in more detail get_auto_pickup().create_rule( &begin_iterator->_item ); if( get_auto_pickup().check_item( sItemName ) == RULE_WHITELISTED ) { @@ -656,7 +653,7 @@ void Pickup::pick_up( const tripoint &pos, int min ) // but water. if( ( !isEmpty ) && g->m.furn( pos ) == f_toilet ) { isEmpty = true; - for( auto maybe_water : g->m.i_at( pos ) ) { + for( const item &maybe_water : g->m.i_at( pos ) ) { if( maybe_water.typeId() != "water" ) { isEmpty = false; break; @@ -704,7 +701,7 @@ void Pickup::pick_up( const tripoint &pos, int min ) } // Not many items, just grab them - if( ( int )here.size() <= min && min != -1 ) { + if( static_cast( here.size() ) <= min && min != -1 ) { g->u.assign_activity( activity_id( "ACT_PICKUP" ) ); g->u.activity.placement = pos - g->u.pos(); g->u.activity.values.push_back( from_vehicle ); @@ -828,7 +825,7 @@ void Pickup::pick_up( const tripoint &pos, int min ) } if( action == "ANY_INPUT" && raw_input_char >= '0' && raw_input_char <= '9' ) { - int raw_input_char_value = ( char )raw_input_char - '0'; + int raw_input_char_value = static_cast( raw_input_char ) - '0'; itemcount *= 10; itemcount += raw_input_char_value; if( itemcount < 0 ) { @@ -842,12 +839,12 @@ void Pickup::pick_up( const tripoint &pos, int min ) if( start > 0 ) { start -= maxitems; } else { - start = ( int )( ( matches.size() - 1 ) / maxitems ) * maxitems; + start = static_cast( ( matches.size() - 1 ) / maxitems ) * maxitems; } selected = start; mvwprintw( w_pickup, maxitems + 2, 0, " " ); } else if( action == "NEXT_TAB" ) { - if( start + maxitems < ( int )matches.size() ) { + if( start + maxitems < static_cast( matches.size() ) ) { start += maxitems; } else { start = 0; @@ -860,8 +857,8 @@ void Pickup::pick_up( const tripoint &pos, int min ) iScrollPos = 0; if( selected < 0 ) { selected = matches.size() - 1; - start = ( int )( matches.size() / maxitems ) * maxitems; - if( start >= ( int )matches.size() ) { + start = static_cast( matches.size() / maxitems ) * maxitems; + if( start >= static_cast( matches.size() ) ) { start -= maxitems; } } else if( selected < start ) { @@ -870,7 +867,7 @@ void Pickup::pick_up( const tripoint &pos, int min ) } else if( action == "DOWN" ) { selected++; iScrollPos = 0; - if( selected >= ( int )matches.size() ) { + if( selected >= static_cast( matches.size() ) ) { selected = 0; start = 0; } else if( selected >= start + maxitems ) { @@ -910,7 +907,7 @@ void Pickup::pick_up( const tripoint &pos, int min ) iScrollPos = 0; } - if( idx >= 0 && idx < ( int )matches.size() ) { + if( idx >= 0 && idx < static_cast( matches.size() ) ) { size_t true_idx = matches[idx]; if( itemcount != 0 || getitem[true_idx].count == 0 ) { item &temp = stacked_here[true_idx].begin()->_item; @@ -928,7 +925,7 @@ void Pickup::pick_up( const tripoint &pos, int min ) !getitem[true_idx].pick ) ); if( action != "RIGHT" && action != "LEFT" ) { selected = idx; - start = ( int )( idx / maxitems ) * maxitems; + start = static_cast( idx / maxitems ) * maxitems; } if( !getitem[true_idx].pick ) { @@ -974,7 +971,7 @@ void Pickup::pick_up( const tripoint &pos, int min ) item &selected_item = stacked_here[matches[selected]].begin()->_item; werase( w_item_info ); - if( selected >= 0 && selected <= ( int )stacked_here.size() - 1 ) { + if( selected >= 0 && selected <= static_cast( stacked_here.size() ) - 1 ) { std::vector vThisItem; std::vector vDummy; selected_item.info( true, vThisItem ); @@ -995,7 +992,7 @@ void Pickup::pick_up( const tripoint &pos, int min ) } getitem[i].pick = true; } - if( count == ( int )stacked_here.size() ) { + if( count == static_cast( stacked_here.size() ) ) { for( size_t i = 0; i < stacked_here.size(); i++ ) { getitem[i].pick = false; } @@ -1005,7 +1002,7 @@ void Pickup::pick_up( const tripoint &pos, int min ) for( cur_it = start; cur_it < start + maxitems; cur_it++ ) { mvwprintw( w_pickup, 1 + ( cur_it % maxitems ), 0, " " ); - if( cur_it < ( int )matches.size() ) { + if( cur_it < static_cast( matches.size() ) ) { int true_it = matches[cur_it]; item &this_item = stacked_here[ true_it ].begin()->_item; nc_color icolor = this_item.color_in_inventory(); @@ -1013,11 +1010,12 @@ void Pickup::pick_up( const tripoint &pos, int min ) icolor = hilite( icolor ); } - if( cur_it < ( int )pickup_chars.size() ) { + if( cur_it < static_cast( pickup_chars.size() ) ) { mvwputch( w_pickup, 1 + ( cur_it % maxitems ), 0, icolor, char( pickup_chars[cur_it] ) ); - } else if( cur_it < ( int )pickup_chars.size() + ( int )pickup_chars.size() * - ( int )pickup_chars.size() ) { + } else if( cur_it < static_cast( pickup_chars.size() ) + static_cast + ( pickup_chars.size() ) * + static_cast( pickup_chars.size() ) ) { int p = cur_it - pickup_chars.size(); int p1 = p / pickup_chars.size(); int p2 = p % pickup_chars.size(); @@ -1125,7 +1123,7 @@ void Pickup::pick_up( const tripoint &pos, int min ) std::string fmted_volume_capacity = format_volume( g->u.volume_capacity() ); wprintz( w_pickup, c_white, "/%s", fmted_volume_capacity.c_str() ); - }; + } wrefresh( w_pickup ); diff --git a/src/pickup.h b/src/pickup.h index d4f7eb87d9614..c46e9ad056db6 100644 --- a/src/pickup.h +++ b/src/pickup.h @@ -37,6 +37,6 @@ int cost_to_move_item( const Character &who, const item &it ); * @param m map they are on */ bool handle_spillable_contents( Character &c, item &it, map &m ); -}; +} #endif diff --git a/src/player.cpp b/src/player.cpp index 446c71dd13c75..c7cf01ab731d6 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -1,92 +1,86 @@ #include "player.h" #include "action.h" -#include "coordinate_conversions.h" -#include "profession.h" -#include "itype.h" -#include "string_formatter.h" +#include "addiction.h" +#include "ammo.h" #include "bionics.h" -#include "mapdata.h" -#include "mission.h" -#include "game.h" -#include "map.h" +#include "cata_utility.h" +#include "catacharset.h" +#include "catalua.h" +#include "coordinate_conversions.h" +#include "craft_command.h" +#include "cursesdef.h" +#include "debug.h" +#include "effect.h" +#include "fault.h" #include "filesystem.h" #include "fungal_effects.h" -#include "debug.h" -#include "addiction.h" -#include "inventory.h" -#include "skill.h" -#include "options.h" -#include "weather.h" -#include "item.h" -#include "material.h" -#include "vpart_position.h" -#include "translations.h" -#include "vpart_reference.h" -#include "cursesdef.h" -#include "catacharset.h" +#include "game.h" #include "get_version.h" -#include "crafting.h" -#include "craft_command.h" -#include "requirements.h" -#include "melee.h" -#include "monstergenerator.h" #include "help.h" // get_hint +#include "input.h" +#include "inventory.h" +#include "item.h" +#include "itype.h" +#include "iuse_actor.h" +#include "map.h" +#include "map_iterator.h" +#include "mapdata.h" #include "martialarts.h" -#include "output.h" -#include "overmapbuffer.h" +#include "material.h" #include "messages.h" -#include "sounds.h" -#include "item_action.h" -#include "vpart_range.h" -#include "mongroup.h" +#include "mission.h" +#include "monstergenerator.h" #include "morale.h" #include "morale_types.h" -#include "input.h" -#include "effect.h" -#include "veh_type.h" +#include "mtype.h" +#include "mutation.h" +#include "name.h" +#include "npc.h" +#include "options.h" +#include "output.h" +#include "overlay_ordering.h" #include "overmap.h" -#include "vehicle.h" -#include "trap.h" +#include "overmapbuffer.h" +#include "pickup.h" +#include "profession.h" +#include "ranged.h" +#include "recipe_dictionary.h" +#include "requirements.h" +#include "skill.h" +#include "sounds.h" +#include "string_formatter.h" +#include "submap.h" #include "text_snippets.h" -#include "mutation.h" +#include "translations.h" +#include "trap.h" #include "ui.h" #include "uistate.h" -#include "trap.h" -#include "map_iterator.h" -#include "submap.h" -#include "mtype.h" -#include "weather_gen.h" -#include "cata_utility.h" -#include "iuse_actor.h" -#include "catalua.h" -#include "npc.h" -#include "overlay_ordering.h" +#include "veh_type.h" +#include "vehicle.h" #include "vitamin.h" -#include "fault.h" -#include "recipe_dictionary.h" -#include "ranged.h" -#include "ammo.h" -#include "name.h" -#include "pickup.h" +#include "vpart_position.h" +#include "vpart_range.h" +#include "vpart_reference.h" +#include "weather.h" +#include "weather_gen.h" -#include #include +#include #ifdef TILES -#include "SDL.h" +# if defined(_MSC_VER) && defined(USE_VCPKG) +# include +# else +# include +# endif #endif // TILES -//Used for e^(x) functions -#include -#include - -#include #include -#include +#include +#include #include #include -#include #include const double MAX_RECOIL = 3000; @@ -210,7 +204,6 @@ static const bionic_id bio_membrane( "bio_membrane" ); static const bionic_id bio_memory( "bio_memory" ); static const bionic_id bio_metabolics( "bio_metabolics" ); static const bionic_id bio_noise( "bio_noise" ); -static const bionic_id bio_ods( "bio_ods" ); static const bionic_id bio_plut_filter( "bio_plut_filter" ); static const bionic_id bio_power_weakness( "bio_power_weakness" ); static const bionic_id bio_purifier( "bio_purifier" ); @@ -256,7 +249,6 @@ static const trait_id trait_CEPH_EYES( "CEPH_EYES" ); static const trait_id trait_CF_HAIR( "CF_HAIR" ); static const trait_id trait_CHAOTIC( "CHAOTIC" ); static const trait_id trait_CHEMIMBALANCE( "CHEMIMBALANCE" ); -static const trait_id trait_CHITIN( "CHITIN" ); static const trait_id trait_CHITIN2( "CHITIN2" ); static const trait_id trait_CHITIN3( "CHITIN3" ); static const trait_id trait_CHITIN_FUR( "CHITIN_FUR" ); @@ -761,7 +753,7 @@ void player::process_turn() // If we're actively handling something we can't just drop it on the ground // in the middle of handling it - if ( !activity.targets.size() ) { + if ( activity.targets.empty() ) { drop_invalid_inventory(); } @@ -1099,7 +1091,7 @@ void player::update_bodytemp() int clothing_warmth_adjusted_bonus = int( homeostasis_adjustement * bonus_item_warmth( bp ) ); // WINDCHILL - bp_windpower = int( ( float )bp_windpower * ( 1 - get_wind_resistance( bp ) / 100.0 ) ); + bp_windpower = static_cast( static_cast( bp_windpower ) * ( 1 - get_wind_resistance( bp ) / 100.0 ) ); // Calculate windchill int windchill = get_local_windchill( player_local_temp, get_local_humidity( weather.humidity, g->weather, @@ -1133,7 +1125,7 @@ void player::update_bodytemp() frostbite_timer[bp] -= std::max( 5, h_radiation ); } // 111F (44C) is a temperature in which proteins break down: https://en.wikipedia.org/wiki/Burn - blister_count += h_radiation - 111 > 0 ? std::max( (int)sqrt( h_radiation - 111 ), 0 ) : 0; + blister_count += h_radiation - 111 > 0 ? std::max( static_cast( sqrt( h_radiation - 111 ) ), 0 ) : 0; const bool pyromania = has_trait( trait_PYROMANIA ); // BLISTERS : Skin gets blisters from intense heat exposure. @@ -1650,7 +1642,7 @@ int player::hunger_speed_penalty( int hunger ) std::make_pair( 6000.0f, -75.0f ) } }; - return ( int )multi_lerp( hunger_thresholds, hunger ); + return static_cast( multi_lerp( hunger_thresholds, hunger ) ); } int player::thirst_speed_penalty( int thirst ) @@ -1664,7 +1656,7 @@ int player::thirst_speed_penalty( int thirst ) std::make_pair( 1200.0f, -75.0f ) } }; - return ( int )multi_lerp( thirst_thresholds, thirst ); + return static_cast( multi_lerp( thirst_thresholds, thirst ) ); } void player::recalc_speed_bonus() @@ -2492,7 +2484,7 @@ void player::set_highest_cat_level() const auto &mdata = i.first.obj(); for( auto &cat : mdata.category ) { // Decay category strength based on how far it is from the current mutation - mutation_category_level[cat] += 8 / (int) std::pow( 2, i.second ); + mutation_category_level[cat] += 8 / static_cast( std::pow( 2, i.second ) ); } } } @@ -2559,7 +2551,7 @@ bool player::in_climate_control() if( const optional_vpart_position vp = g->m.veh_at( pos() ) ) { regulated_area = ( vp->is_inside() && // Already checks for opened doors - vp->vehicle().total_power( true ) > 0 // Out of gas? No AC for you! + vp->vehicle().total_power_w( true ) > 0 // Out of gas? No AC for you! ); // TODO: (?) Force player to scrounge together an AC unit } // TODO: AC check for when building power is implemented @@ -2656,7 +2648,7 @@ float player::active_light() const return false; // continue search, otherwise has_item_with would cancel the search } ); - lumination = ( float )maxlum; + lumination = static_cast( maxlum ); if( lumination < 60 && has_active_bionic( bio_flashlight ) ) { lumination = 60; @@ -2702,7 +2694,7 @@ int player::sight_range( int light_level ) const * log(LIGHT_AMBIENT_LOW / light_level) * (1 / LIGHT_TRANSPARENCY_OPEN_AIR) <= distance */ int range = int( -log( get_vision_threshold( int( g->m.ambient_light_at( pos() ) ) ) / - ( float )light_level ) * + static_cast( light_level ) ) * ( 1.0 / LIGHT_TRANSPARENCY_OPEN_AIR ) ); // int range = log(light_level * LIGHT_AMBIENT_LOW) / LIGHT_TRANSPARENCY_OPEN_AIR; @@ -2748,7 +2740,7 @@ int player::overmap_sight_range( int light_level ) const sight = has_trait( trait_BIRD_EYE ) ? 15 : 10; /** @EFFECT_PER determines overmap sight range */ - sight += ( -4 + (int)( get_per() / 2 ) ); + sight += ( -4 + static_cast( get_per() / 2 ) ); bool has_optic = ( has_item_with_flag( "ZOOM" ) || has_bionic( bio_eye_optic ) ); if( has_trait( trait_EAGLEEYED ) && has_optic ) { //optic AND scout = +15 @@ -2831,23 +2823,17 @@ bool player::avoid_trap( const tripoint &pos, const trap &tr ) const bool player::has_alarm_clock() const { return ( has_item_with_flag( "ALARMCLOCK" ) || - ( - g->m.veh_at( pos() ) && - !empty( g->m.veh_at( pos() )->vehicle().get_parts( "ALARMCLOCK" ) ) - ) || - has_bionic( bio_watch ) - ); + ( g->m.veh_at( pos() ) && + !empty( g->m.veh_at( pos() )->vehicle().get_avail_parts( "ALARMCLOCK" ) ) ) || + has_bionic( bio_watch ) ); } bool player::has_watch() const { return ( has_item_with_flag( "WATCH" ) || - ( - g->m.veh_at( pos() ) && - !empty( g->m.veh_at( pos() )->vehicle().get_parts( "WATCH" ) ) - ) || - has_bionic( bio_watch ) - ); + ( g->m.veh_at( pos() ) && + !empty( g->m.veh_at( pos() )->vehicle().get_avail_parts( "WATCH" ) ) ) || + has_bionic( bio_watch ) ); } void player::pause() @@ -3744,7 +3730,7 @@ void player::heal(hp_part healed, int dam) void player::healall(int dam) { for( int healed_part = 0; healed_part < num_hp_parts; healed_part++) { - heal( (hp_part)healed_part, dam ); + heal( static_cast( healed_part ), dam ); } } @@ -4130,7 +4116,7 @@ void player::get_sick() // Diseases are half as common for every 50 health you gain. float health_factor = std::pow(2.0f, get_healthy() / 50.0f); - int disease_rarity = (int) (checks_per_year * health_factor / base_diseases_per_year); + int disease_rarity = static_cast( checks_per_year * health_factor / base_diseases_per_year ); add_msg( m_debug, "disease_rarity = %d", disease_rarity); if (one_in(disease_rarity)) { if (one_in(6)) { @@ -4284,7 +4270,7 @@ void player::check_needs_extremes() // Microsleeps are slightly worse if you're sleep deprived, but not by much. (chance: 1 in (75 + int_cur) at lethal sleep deprivation) // Note: these can coexist with fatigue-related microsleeps /** @EFFECT_INT slightly decreases occurrence of short naps when sleep deprived */ - if( one_in( (int)( sleep_deprivation_pct * 75 ) + int_cur ) ) { + if( one_in( static_cast( sleep_deprivation_pct * 75 ) + int_cur ) ) { fall_asleep( 5_turns ); } @@ -4293,7 +4279,7 @@ void player::check_needs_extremes() if( can_pass_out && calendar::once_every( 10_minutes ) ) { /** @EFFECT_PER slightly increases resilience against passing out from sleep deprivation */ - if( one_in( (int)( ( 1 - sleep_deprivation_pct ) * 100 ) + per_cur ) || sleep_deprivation >= SLEEP_DEPRIVATION_MASSIVE ) { + if( one_in( static_cast( ( 1 - sleep_deprivation_pct ) * 100 ) + per_cur ) || sleep_deprivation >= SLEEP_DEPRIVATION_MASSIVE ) { add_msg( m_bad, _( "Your body collapses to sleep deprivation, your neglected fatigue rushing back all at once, and you pass out on the spot." ) ); if( get_fatigue() < EXHAUSTED ) { set_fatigue( EXHAUSTED ); @@ -5458,7 +5444,7 @@ void player::suffer() _( "That %1$s doesn't deserve to live!" ) }; std::string talk_w = random_entry_ref( mon_near ); std::vector seen_mons; - for( auto n : mons ) { + for( auto &n : mons ) { if( sees( *n.lock() ) ) { seen_mons.emplace_back( n.lock()->get_name() ); } @@ -5995,8 +5981,7 @@ void player::suffer() slow_rad += ((tank_plut * 0.1) + (reactor_plut * 0.01)); //begin power generation if (reactor_plut > 0) { - int power_gen; - power_gen = 0; + int power_gen = 0; if (has_bionic( bio_advreactor ) ) { if ((reactor_plut * 0.05) > 2000){ power_gen = 2000; @@ -7071,7 +7056,7 @@ std::list player::use_charges( const itype_id& what, long qty ) qty -= std::min( qty, bio ); } - auto adv = charges_of( "adv_UPS_off", ( long )ceil( qty * 0.6 ) ); + auto adv = charges_of( "adv_UPS_off", static_cast( ceil( qty * 0.6 ) ) ); if( adv > 0 ) { auto found = use_charges( "adv_UPS_off", adv ); res.splice( res.end(), found ); @@ -7398,7 +7383,7 @@ item::reload_option player::select_ammo( const item &base, std::vector& vec, int n, int t ) -> int { for( const auto& e : vec ) { n = std::max( n, utf8_width( e, true ) + t ); - }; + } for( auto& e : vec ) { e += std::string( n - utf8_width( e, true ), ' ' ); } @@ -7456,7 +7441,7 @@ item::reload_option player::select_ammo( const item &base, std::vector( opts.size() ); ++i ) { const item& ammo = opts[ i ].ammo->is_ammo_container() ? opts[ i ].ammo->contents.front() : *opts[ i ].ammo; char hotkey = -1; @@ -7495,7 +7480,7 @@ item::reload_option player::select_ammo( const item &base, std::vector &opts; const std::function draw_row; @@ -7511,14 +7496,14 @@ item::reload_option player::select_ammo( const item &base, std::vectorret = default_to; return true; } - if( idx < 0 || idx >= (int)opts.size() ) { + if( idx < 0 || idx >= static_cast( opts.size() ) ) { return false; } auto &sel = opts[ idx ]; @@ -7578,7 +7563,7 @@ item::reload_option player::select_ammo( const item& base, bool prompt ) const if( ammo->is_watertight_container() && ammo->contents_made_of( SOLID ) ) { continue; } - auto id = ( ammo->is_ammo_container() || ammo->is_watertight_container() ) + auto id = ( ammo->is_ammo_container() || ammo->is_container() ) ? ammo->contents.front().typeId() : ammo->typeId(); if( e->can_reload_with( id ) ) { @@ -7811,7 +7796,7 @@ bool player::wield( item& target ) } // Query whether to draw an item from a holster when attempting to wield the holster - if( target.get_use( "holster" ) && ( target.contents.size() > 0 ) ) { + if( target.get_use( "holster" ) && !target.contents.empty() ) { if( query_yn( string_format( _( "Draw %s from %s?" ), target.get_contained().tname().c_str(), target.tname().c_str() ) ) ) { @@ -7909,10 +7894,13 @@ bool player::pick_style() // Style selection menu for( size_t i = 0; i < selectable_styles.size(); i++ ) { auto &style = selectable_styles[i].obj(); //Check if this style is currently selected - if( selectable_styles[i] == style_selected ) { + const bool selected = selectable_styles[i] == style_selected; + std::string entry_text = _( style.name.c_str() ); + if( selected ) { kmenu.selected = i + STYLE_OFFSET; + entry_text = get_tag_from_color( c_pink ) + entry_text + ""; } - kmenu.addentry_desc( i + STYLE_OFFSET, true, -1, _( style.name.c_str() ), _( style.description.c_str() ) ); + kmenu.addentry_desc( i + STYLE_OFFSET, true, -1, entry_text, _( style.description.c_str() ) ); } kmenu.query(); @@ -8039,7 +8027,7 @@ bool player::dispose_item( item_location &&obj, const std::string& prompt ) int w = utf8_width( menu.text, true ) + 4; for( const auto& e : opts ) { w = std::max( w, utf8_width( e.prompt, true ) + 4 ); - }; + } for( auto& e : opts ) { e.prompt += std::string( w - utf8_width( e.prompt, true ), ' ' ); } @@ -8108,7 +8096,7 @@ void player::mend_item( item_location&& obj, bool interactive ) uilist menu; menu.text = _( "Mend which fault?" ); menu.desc_enabled = true; - menu.desc_lines = 0; // Let uimenu handle description height + menu.desc_lines = 0; // Let uilist handle description height int w = 80; @@ -8201,7 +8189,7 @@ int player::item_reload_cost( const item& it, const item& ammo, long qty ) const { if( ammo.is_ammo() ) { qty = std::max( std::min( ammo.charges, qty ), 1L ); - } else if( ammo.is_ammo_container() || ammo.is_watertight_container() || ammo.is_non_resealable_container() ) { + } else if( ammo.is_ammo_container() || ammo.is_container() ) { qty = std::max( std::min( ammo.contents.front().charges, qty ), 1L ); } else if( ammo.is_magazine() ) { qty = 1; @@ -8823,7 +8811,7 @@ bool player::invoke_item( item* used, const tripoint &pt ) umenu.addentry_desc( MENU_AUTOASSIGN, res.success(), MENU_AUTOASSIGN, e.second.get_name(), res.str() ); } - umenu.desc_enabled = std::any_of( umenu.entries.begin(), umenu.entries.end(), []( const uimenu_entry &elem ) { + umenu.desc_enabled = std::any_of( umenu.entries.begin(), umenu.entries.end(), []( const uilist_entry &elem ) { return !elem.desc.empty(); }); @@ -9296,7 +9284,7 @@ bool player::read( int inventory_position, const bool continuous ) } else if( !morale_req ) { nonlearners.insert( { elem, _( " (too sad)" ) } ); } else if( skill && lvl < type->level ) { - const double penalty = ( double )time_taken / time_to_read( it, *reader, elem ); + const double penalty = static_cast( time_taken ) / time_to_read( it, *reader, elem ); learners.insert( {elem, elem == reader ? _( " (reading aloud to you)" ) : ""} ); act.values.push_back( elem->getID() ); act.str_values.push_back( to_string( penalty ) ); @@ -9337,7 +9325,7 @@ bool player::read( int inventory_position, const bool continuous ) auto add_header = [&menu]( const std::string & str ) { menu.addentry( -1, false, -1, "" ); - uimenu_entry header( -1, false, -1, str , c_yellow, c_yellow ); + uilist_entry header( -1, false, -1, str , c_yellow, c_yellow ); header.force_color = true; menu.entries.push_back( header ); }; @@ -9375,7 +9363,7 @@ bool player::read( int inventory_position, const bool continuous ) } menu.query( true ); - if( menu.ret == UIMENU_CANCEL ) { + if( menu.ret == UILIST_CANCEL ) { add_msg( m_info, _( "Never mind." ) ); return false; } @@ -9921,15 +9909,15 @@ comfort_level player::base_comfort_value( const tripoint &p ) const // Some mutants have different comfort needs if( !plantsleep && !webforce ) { if( in_shell ) { - comfort += 1 + (int)comfort_level::slightly_comfortable; + comfort += 1 + static_cast( comfort_level::slightly_comfortable ); // Note: shelled individuals can still use sleeping aids! } else if( vp ) { if( vp.part_with_feature( "BED", true ) ) { - comfort += 1 + (int)comfort_level::slightly_comfortable; + comfort += 1 + static_cast( comfort_level::slightly_comfortable ); } else if( vp.part_with_feature( "SEAT", true ) ) { - comfort += 0 + (int)comfort_level::slightly_comfortable; + comfort += 0 + static_cast( comfort_level::slightly_comfortable ); } else { // Sleeping elsewhere is uncomfortable @@ -9938,28 +9926,28 @@ comfort_level player::base_comfort_value( const tripoint &p ) const } // Not in a vehicle, start checking furniture/terrain/traps at this point in decreasing order else if( furn_at_pos == f_bed ) { - comfort += 0 + (int)comfort_level::comfortable; + comfort += 0 + static_cast( comfort_level::comfortable ); } else if( furn_at_pos == f_makeshift_bed || trap_at_pos.loadid == tr_cot || furn_at_pos == f_sofa || furn_at_pos == f_autodoc_couch ) { - comfort += 1 + (int)comfort_level::slightly_comfortable; + comfort += 1 + static_cast( comfort_level::slightly_comfortable ); } // Web sleepers can use their webs if better furniture isn't available else if( websleep && web >= 3 ) { - comfort += 1 + (int)comfort_level::slightly_comfortable; + comfort += 1 + static_cast( comfort_level::slightly_comfortable ); } else if( trap_at_pos.loadid == tr_rollmat || trap_at_pos.loadid == tr_fur_rollmat || furn_at_pos == f_armchair || ter_at_pos == t_improvised_shelter ) { - comfort += 0 + (int)comfort_level::slightly_comfortable; + comfort += 0 + static_cast( comfort_level::slightly_comfortable ); } else if( furn_at_pos == f_straw_bed || furn_at_pos == f_hay || furn_at_pos == f_tatami ) { - comfort += 2 + (int)comfort_level::neutral; + comfort += 2 + static_cast( comfort_level::neutral ); } else if( furn_at_pos == f_chair || furn_at_pos == f_bench || ter_at_pos == t_floor || ter_at_pos == t_floor_waxed || ter_at_pos == t_carpet_red || ter_at_pos == t_carpet_yellow || ter_at_pos == t_carpet_green || ter_at_pos == t_carpet_purple ) { - comfort += 1 + (int)comfort_level::neutral; + comfort += 1 + static_cast( comfort_level::neutral ); } else { // Not a comfortable sleeping spot @@ -9970,61 +9958,61 @@ comfort_level player::base_comfort_value( const tripoint &p ) const for( auto &items_it : items ) { if( items_it.has_flag( "SLEEP_AID" ) ) { // Note: BED + SLEEP_AID = 9 pts, or 1 pt below very_comfortable - comfort += 1 + (int)comfort_level::slightly_comfortable; + comfort += 1 + static_cast( comfort_level::slightly_comfortable ); break; // prevents using more than 1 sleep aid } } if( fungaloid_cosplay && g->m.has_flag_ter_or_furn( "FUNGUS", pos() ) ) { - comfort += (int)comfort_level::very_comfortable; + comfort += static_cast( comfort_level::very_comfortable ); } } else if( plantsleep ) { if( vp || furn_at_pos != f_null ) { // Sleep ain't happening in a vehicle or on furniture - comfort = (int)comfort_level::uncomfortable; + comfort = static_cast( comfort_level::uncomfortable ); } else { // It's very easy for Chloromorphs to get to sleep on soil! if( ter_at_pos == t_dirt || ter_at_pos == t_pit || ter_at_pos == t_dirtmound || ter_at_pos == t_pit_shallow ) { - comfort += (int)comfort_level::very_comfortable; + comfort += static_cast( comfort_level::very_comfortable ); } // Not as much if you have to dig through stuff first else if( ter_at_pos == t_grass ) { - comfort += (int)comfort_level::comfortable; + comfort += static_cast( comfort_level::comfortable ); } // Sleep ain't happening else { - comfort = (int)comfort_level::uncomfortable; + comfort = static_cast( comfort_level::uncomfortable ); } } //Has watersleep } else if( watersleep ) { if( g->m.has_flag_ter( "SWIMMABLE", pos() ) ) { - comfort += (int)comfort_level::very_comfortable; + comfort += static_cast( comfort_level::very_comfortable ); } // Has webforce } else { if( web >= 3 ) { // Thick Web and you're good to go - comfort += (int)comfort_level::very_comfortable; + comfort += static_cast( comfort_level::very_comfortable ); } else { - comfort = (int)comfort_level::uncomfortable; + comfort = static_cast( comfort_level::uncomfortable ); } } - if( comfort >= (int)comfort_level::very_comfortable ) { + if( comfort >= static_cast( comfort_level::very_comfortable ) ) { return comfort_level::very_comfortable; } - else if( comfort >= (int)comfort_level::comfortable ) { + else if( comfort >= static_cast( comfort_level::comfortable ) ) { return comfort_level::comfortable; } - else if( comfort >= (int)comfort_level::slightly_comfortable ) { + else if( comfort >= static_cast( comfort_level::slightly_comfortable ) ) { return comfort_level::slightly_comfortable; } - else if( comfort >= (int)comfort_level::neutral ) { + else if( comfort >= static_cast( comfort_level::neutral ) ) { return comfort_level::neutral; } else return comfort_level::uncomfortable; @@ -10033,7 +10021,7 @@ comfort_level player::base_comfort_value( const tripoint &p ) const int player::sleep_spot( const tripoint &p ) const { comfort_level base_level = base_comfort_value( p ); - int sleepy = (int)base_level; + int sleepy = static_cast( base_level ); if (has_addiction(ADD_SLEEP)) { sleepy -= 4; @@ -10737,7 +10725,7 @@ bool player::is_wearing_shoes( const side &which_side ) const bool player::is_wearing_helmet() const { - for( auto i : worn ) { + for( const item &i : worn ) { if( i.covers( bp_head ) && !i.has_flag( "HELMET_COMPAT" ) && !i.has_flag( "SKINTIGHT" ) && @@ -11216,7 +11204,7 @@ bool player::uncanny_dodge() tripoint player::adjacent_tile() const { std::vector ret; - int dangerous_fields; + int dangerous_fields = 0; for( const tripoint &p : g->m.points_in_radius( pos(), 1 ) ) { if( p == pos() ) { // Don't consider player position @@ -11301,12 +11289,10 @@ int player::visibility( bool, int ) const if ( is_invisible() ) { return 0; } - if( has_trait( trait_CRAFTY ) ) { - return 60; - } // @todo: // if ( dark_clothing() && light check ... - return 100; + int stealth_modifier = std::floor( mutation_value( "stealth_modifier" ) ); + return clamp( 100 - stealth_modifier, 40, 160 ); } void player::set_destination(const std::vector &route, const player_activity &destination_activity) @@ -12016,7 +12002,7 @@ float player::speed_rating() const ret *= 100.0f / run_cost( 100, false ); // Adjustment for player being able to run, but not doing so at the moment if( move_mode != "run" ) { - ret *= 1.0f + ((float)stamina / (float)get_stamina_max()); + ret *= 1.0f + (static_cast( stamina ) / static_cast( get_stamina_max() )); } return ret; diff --git a/src/player.h b/src/player.h index 1126bc4bef14f..2c120d03103e6 100644 --- a/src/player.h +++ b/src/player.h @@ -2,22 +2,22 @@ #ifndef PLAYER_H #define PLAYER_H +#include "calendar.h" #include "character.h" +#include "damage.h" +#include "game_constants.h" +#include "item.h" #include "map_memory.h" +#include "mapdata.h" +#include "optional.h" #include "pimpl.h" -#include "item.h" #include "player_activity.h" -#include "weighted_list.h" -#include "game_constants.h" #include "ret_val.h" -#include "damage.h" -#include "calendar.h" -#include "mapdata.h" -#include "optional.h" +#include "weighted_list.h" -#include -#include #include +#include +#include static const std::string DEFAULT_HOTKEYS( "1234567890abcdefghijklmnopqrstuvwxyz" ); @@ -444,7 +444,7 @@ class player : public Character void ma_ongethit_effects(); /** Returns true if the player has any martial arts buffs attached */ - bool has_mabuff( mabuff_id buff_id ) const; + bool has_mabuff( const mabuff_id &buff_id ) const; /** Returns true if the player has access to the entered martial art */ bool has_martialart( const matype_id &ma_id ) const; /** Adds the entered martial art to the player's list */ diff --git a/src/player_activity.cpp b/src/player_activity.cpp index f16a96230d53e..6ff8ce2efbbc0 100644 --- a/src/player_activity.cpp +++ b/src/player_activity.cpp @@ -1,14 +1,9 @@ #include "player_activity.h" +#include "activity_handlers.h" #include "activity_type.h" -#include "construction.h" #include "craft_command.h" #include "player.h" -#include "requirements.h" -#include "translations.h" -#include "activity_handlers.h" -#include "messages.h" -#include "mapdata.h" #include diff --git a/src/player_display.cpp b/src/player_display.cpp index 5a9b6283e03d9..c5f01eb480b85 100644 --- a/src/player_display.cpp +++ b/src/player_display.cpp @@ -1,18 +1,18 @@ #include "player.h" + +#include "addiction.h" +#include "bionics.h" +#include "effect.h" #include "game.h" +#include "input.h" #include "mutation.h" -#include "output.h" #include "options.h" -#include "weather.h" -#include "string_formatter.h" -#include "units.h" +#include "output.h" #include "profession.h" -#include "effect.h" -#include "input.h" -#include "addiction.h" #include "skill.h" -#include "bionics.h" -#include "messages.h" +#include "string_formatter.h" +#include "units.h" +#include "weather.h" #include @@ -49,9 +49,10 @@ void player::print_encumbrance( const catacurses::window &win, int line, do { if( !skip[off > 0] && line + off >= 0 && line + off < num_bp ) { // line+off is in bounds parts.insert( line + off ); - if( line + off != ( int )bp_aiOther[line + off] && + if( line + off != static_cast( bp_aiOther[line + off] ) && should_combine_bps( *this, line + off, bp_aiOther[line + off] ) ) { // part of a pair - skip[( int )bp_aiOther[line + off] > line + off ] = 1; // skip the next candidate in this direction + skip[static_cast( bp_aiOther[line + off] ) > line + off ] = + 1; // skip the next candidate in this direction } } else { skip[off > 0] = 0; @@ -61,7 +62,7 @@ void player::print_encumbrance( const catacurses::window &win, int line, } else { off = -off - 1; } - } while( off > -num_bp && ( int )parts.size() < height - 1 ); + } while( off > -num_bp && static_cast( parts.size() ) < height - 1 ); std::string out; /*** I chose to instead only display X+Y instead of X+Y=Z. More room was needed *** @@ -157,7 +158,7 @@ int get_encumbrance( const player &p, body_part bp, bool combine ) { // Body parts that can't combine with anything shouldn't print double values on combine // This shouldn't happen, but handle this, just in case - bool combines_with_other = ( int )bp_aiOther[bp] != bp; + bool combines_with_other = static_cast( bp_aiOther[bp] ) != bp; return p.encumb( bp ) * ( ( combine && combines_with_other ) ? 2 : 1 ); } @@ -224,7 +225,7 @@ void player::disp_info() unsigned line; std::vector effect_name; std::vector effect_text; - std::string tmp = ""; + std::string tmp; for( auto &elem : *effects ) { for( auto &_effect_it : elem.second ) { tmp = _effect_it.second.disp_name(); @@ -340,7 +341,7 @@ Strength - 4; Dexterity - 4; Intelligence - 4; Perception - 4" ) ); if( std::min( bionics_win_size_y, trait_win_size_y ) > max_shared_y ) { bionics_win_size_y = max_shared_y; // trait window is less than the shared size, so give space to bionics - } else if( trait_win_size_y < max_shared_y ) { + } else if( trait_win_size_y <= max_shared_y ) { bionics_win_size_y = maxy - infooffsetybottom - trait_win_size_y; } // fall through if bionics is smaller @@ -501,7 +502,7 @@ Strength - 4; Dexterity - 4; Intelligence - 4; Perception - 4" ) ); //~ player info window: 1s - name, 2s - gender, 3s - Prof or Mutation name mvwprintw( w_tip, 0, 0, _( "%1$s | %2$s | %3$s" ), name.c_str(), male ? _( "Male" ) : _( "Female" ), race.c_str() ); - } else if( prof == NULL || prof == prof->generic() ) { + } else if( prof == nullptr || prof == prof->generic() ) { // Regular person. Nothing interesting. //~ player info window: 1s - name, 2s - gender, '|' - field separator. mvwprintw( w_tip, 0, 0, _( "%1$s | %2$s" ), name.c_str(), @@ -716,14 +717,13 @@ Strength - 4; Dexterity - 4; Intelligence - 4; Perception - 4" ) ); } std::map speed_effects; - std::string dis_text = ""; for( auto &elem : *effects ) { for( auto &_effect_it : elem.second ) { auto &it = _effect_it.second; bool reduced = resists_effect( it ); int move_adjust = it.get_mod( "SPEED", reduced ); if( move_adjust != 0 ) { - dis_text = it.get_speed_name(); + const std::string dis_text = it.get_speed_name(); speed_effects[dis_text] += move_adjust; } } @@ -731,7 +731,7 @@ Strength - 4; Dexterity - 4; Intelligence - 4; Perception - 4" ) ); for( auto &speed_effect : speed_effects ) { nc_color col = ( speed_effect.second > 0 ? c_green : c_red ); - mvwprintz( w_speed, line, 1, col, "%s", _( speed_effect.first.c_str() ) ); + mvwprintz( w_speed, line, 1, col, "%s", speed_effect.first ); mvwprintz( w_speed, line, 21, col, ( speed_effect.second > 0 ? "+" : "-" ) ); mvwprintz( w_speed, line, ( abs( speed_effect.second ) >= 10 ? 22 : 23 ), col, "%d%%", abs( speed_effect.second ) ); @@ -1114,7 +1114,7 @@ Strength - 4; Dexterity - 4; Intelligence - 4; Perception - 4" ) ); } } - const Skill *selectedSkill = NULL; + const Skill *selectedSkill = nullptr; for( size_t i = min; i < max; i++ ) { const Skill *aSkill = skillslist[i]; diff --git a/src/player_hardcoded_effects.cpp b/src/player_hardcoded_effects.cpp index 0b17d5b0499f2..1f2b195f45961 100644 --- a/src/player_hardcoded_effects.cpp +++ b/src/player_hardcoded_effects.cpp @@ -1,22 +1,26 @@ #include "player.h" + #include "effect.h" +#include "field.h" +#include "fungal_effects.h" #include "game.h" #include "map.h" #include "map_iterator.h" -#include "fungal_effects.h" -#include "sounds.h" +#include "mapdata.h" #include "martialarts.h" -#include "weather.h" #include "messages.h" -#include "output.h" -#include "mapdata.h" -#include "monster.h" -#include "vitamin.h" #include "mongroup.h" -#include "field.h" +#include "monster.h" +#include "output.h" +#include "sounds.h" +#include "weather.h" #ifdef TILES -#include "SDL.h" +# if defined(_MSC_VER) && defined(USE_VCPKG) +# include +# else +# include +# endif #endif // TILES #include @@ -370,6 +374,7 @@ static void eff_fun_hot( player &u, effect &it ) { { bp_foot_r, 2 }, { 0, 0, 0, 0, "", 0, "" } }, } }; + const body_part bp = it.get_bp(); const int intense = it.get_intensity(); const auto iter = effs.find( { it.get_bp(), it.get_intensity() } ); @@ -378,7 +383,7 @@ static void eff_fun_hot( player &u, effect &it ) } // Hothead effects are a special snowflake if( bp == bp_head && intense >= 2 ) { - if( one_in( std::min( 14500, 15000 - u.temp_cur[bp_head] ) ) ) { + if( one_in( std::max( 25, std::min( 14500, 15000 - u.temp_cur[bp_head] ) ) ) ) { u.vomit(); } if( !u.has_effect( effect_sleep ) && one_in( 400 ) ) { diff --git a/src/pldata.h b/src/pldata.h index 80d2b29c19b62..48b7598e79546 100644 --- a/src/pldata.h +++ b/src/pldata.h @@ -2,12 +2,8 @@ #ifndef PLDATA_H #define PLDATA_H -#include "bodypart.h" -#include "string_id.h" #include "calendar.h" - -#include -#include +#include "string_id.h" class JsonIn; class JsonOut; diff --git a/src/popup.h b/src/popup.h index ce6ad776e5ff4..2e35925499249 100644 --- a/src/popup.h +++ b/src/popup.h @@ -2,13 +2,13 @@ #ifndef POPUP_H #define POPUP_H +#include "cursesdef.h" +#include "input.h" + #include #include #include -#include "cursesdef.h" -#include "input.h" - class nc_color; /** diff --git a/src/posix_time.h b/src/posix_time.h index 6a8d414c774e4..dded0235e0bb8 100644 --- a/src/posix_time.h +++ b/src/posix_time.h @@ -4,8 +4,8 @@ /* Windows lacks the nanosleep() function. The following code was stuffed together from GNUlib (http://www.gnu.org/software/gnulib/), which is licensed under the GPLv3. */ -#include -#include +#include +#include enum { BILLION = 1000 * 1000 * 1000 }; diff --git a/src/profession.cpp b/src/profession.cpp index f2c8efde9a42f..7e495cec5cf26 100644 --- a/src/profession.cpp +++ b/src/profession.cpp @@ -1,20 +1,19 @@ #include "profession.h" -#include -#include -#include -#include +#include "addiction.h" #include "debug.h" +#include "generic_factory.h" +#include "item_group.h" +#include "itype.h" #include "json.h" #include "player.h" +#include "pldata.h" #include "text_snippets.h" -#include "rng.h" #include "translations.h" -#include "addiction.h" -#include "item_group.h" -#include "pldata.h" -#include "itype.h" -#include "generic_factory.h" + +#include +#include +#include namespace { @@ -68,7 +67,7 @@ bool string_id::is_valid() const } profession::profession() - : id(), _name_male( "null" ), _name_female( "null" ), + : _name_male( "null" ), _name_female( "null" ), _description_male( "null" ), _description_female( "null" ), _point_cost( 0 ) { } @@ -407,11 +406,7 @@ bool profession::has_flag( const std::string &flag ) const bool profession::can_pick( const player &u, const int points ) const { - if( point_cost() - u.prof->point_cost() > points ) { - return false; - } - - return true; + return point_cost() - u.prof->point_cost() <= points; } bool profession::is_locked_trait( const trait_id &trait ) const @@ -584,7 +579,7 @@ std::vector json_item_substitution::get_substitution( const item &it, const long old_amt = it.count(); for( const substitution::info &inf : sub->infos ) { item result( inf.new_item ); - const long new_amt = std::max( 1l, ( long )std::round( inf.ratio * old_amt ) ); + const long new_amt = std::max( 1l, static_cast( std::round( inf.ratio * old_amt ) ) ); if( !result.count_by_charges() ) { for( long i = 0; i < new_amt; i++ ) { diff --git a/src/profession.h b/src/profession.h index 918bb0d29b5a1..c7ab215a087f0 100644 --- a/src/profession.h +++ b/src/profession.h @@ -4,10 +4,9 @@ #include "string_id.h" -#include -#include -#include #include +#include +#include template class generic_factory; @@ -38,7 +37,7 @@ class profession /** Snippet id, @see snippet_library. */ std::string snippet_id; // compatible with when this was just a std::string - itypedec( const char *t ) : type_id( t ), snippet_id() { + itypedec( const char *t ) : type_id( t ) { } itypedec( const std::string &t, const std::string &d ) : type_id( t ), snippet_id( d ) { } diff --git a/src/projectile.cpp b/src/projectile.cpp index 0b00b4664aa7d..c3547de83b3b5 100644 --- a/src/projectile.cpp +++ b/src/projectile.cpp @@ -1,12 +1,12 @@ #include "projectile.h" +#include "explosion.h" +#include "field.h" #include "game.h" +#include "item.h" #include "map.h" #include "map_iterator.h" -#include "explosion.h" -#include "field.h" #include "rng.h" -#include "item.h" projectile::projectile() : speed( 0 ), range( 0 ), drop( nullptr ), custom_explosion( nullptr ) diff --git a/src/projectile.h b/src/projectile.h index e68011e57a321..2d7099a11a789 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -6,10 +6,9 @@ #include "enums.h" #include "explosion.h" -#include -#include -#include #include +#include +#include class Creature; class dispersion_sources; diff --git a/src/ranged.cpp b/src/ranged.cpp index edf858520eca0..3a06b95c3a113 100644 --- a/src/ranged.cpp +++ b/src/ranged.cpp @@ -2,37 +2,34 @@ #include "ballistics.h" #include "cata_utility.h" -#include "gun_mode.h" +#include "debug.h" #include "dispersion.h" #include "game.h" -#include "map.h" -#include "debug.h" -#include "output.h" -#include "line.h" -#include "string_formatter.h" -#include "rng.h" -#include "item.h" -#include "options.h" -#include "action.h" +#include "gun_mode.h" #include "input.h" -#include "vpart_position.h" +#include "item.h" +#include "itype.h" +#include "line.h" +#include "map.h" #include "messages.h" +#include "monster.h" +#include "morale_types.h" +#include "mtype.h" +#include "npc.h" +#include "options.h" +#include "output.h" #include "projectile.h" +#include "rng.h" #include "sounds.h" +#include "string_formatter.h" #include "translations.h" -#include "monster.h" -#include "npc.h" -#include "trap.h" -#include "itype.h" #include "vehicle.h" -#include "field.h" -#include "mtype.h" -#include "morale_types.h" +#include "vpart_position.h" #include -#include -#include #include +#include +#include const skill_id skill_throw( "throw" ); const skill_id skill_gun( "gun" ); @@ -43,7 +40,6 @@ const skill_id skill_launcher( "launcher" ); const efftype_id effect_on_roof( "on_roof" ); const efftype_id effect_hit_by_player( "hit_by_player" ); -static const trait_id trait_TRIGGERHAPPY( "TRIGGERHAPPY" ); static const trait_id trait_HOLLOW_BONES( "HOLLOW_BONES" ); static const trait_id trait_LIGHT_BONES( "LIGHT_BONES" ); static const trait_id trait_PYROMANIA( "PYROMANIA" ); @@ -327,7 +323,7 @@ int throw_cost( const player &c, const item &to_throw ) const int dexbonus = c.get_dex(); const int encumbrance_penalty = c.encumb( bp_torso ) + ( c.encumb( bp_hand_l ) + c.encumb( bp_hand_r ) ) / 2; - const float stamina_ratio = ( float )c.stamina / c.get_stamina_max(); + const float stamina_ratio = static_cast( c.stamina ) / c.get_stamina_max(); const float stamina_penalty = 1.0 + std::max( ( 0.25f - stamina_ratio ) * 4.0f, 0.0f ); int move_cost = base_move_cost; @@ -1467,7 +1463,7 @@ static void cycle_action( item &weap, const tripoint &pos ) const optional_vpart_position vp = g->m.veh_at( pos ); std::vector cargo; if( vp && weap.has_flag( "VEHICLE" ) ) { - cargo = vp->vehicle().get_parts( pos, "CARGO", false, false ); + cargo = vp->vehicle().get_parts_at( pos, "CARGO", part_status_flag::any ); } if( weap.ammo_data() && weap.ammo_data()->ammo->casing ) { diff --git a/src/recipe.cpp b/src/recipe.cpp index 345b1b0247303..08fab0807c20e 100644 --- a/src/recipe.cpp +++ b/src/recipe.cpp @@ -1,17 +1,18 @@ #include "recipe.h" #include "calendar.h" +#include "game_constants.h" #include "generic_factory.h" -#include "itype.h" #include "item.h" -#include "string_formatter.h" +#include "itype.h" #include "output.h" #include "skill.h" -#include "game_constants.h" +#include "uistate.h" +#include "string_formatter.h" #include +#include #include -#include struct oter_t; using oter_str_id = string_id; @@ -80,6 +81,10 @@ void recipe::load( JsonObject &jo, const std::string &src ) ident_ = recipe_id( result_ ); } + if( jo.has_bool( "obsolete" ) ) { + assign( jo, "obsolete", obsolete ); + } + assign( jo, "time", time, strict, 0 ); assign( jo, "difficulty", difficulty, strict, 0, MAX_SKILL ); assign( jo, "flags", flags ); @@ -385,5 +390,10 @@ std::string recipe::required_skills_string( const Character *c ) const std::string recipe::result_name() const { - return item::nname( result_ ); + std::string name = item::nname( result_ ); + if( uistate.favorite_recipes.find( this->ident() ) != uistate.favorite_recipes.end() ) { + name = "* " + name; + } + + return name; } diff --git a/src/recipe.h b/src/recipe.h index 5f3127f9b09e1..89e8100cb9203 100644 --- a/src/recipe.h +++ b/src/recipe.h @@ -2,12 +2,11 @@ #ifndef RECIPE_H #define RECIPE_H -#include "string_id.h" #include "requirements.h" +#include "string_id.h" #include #include -#include #include class recipe_dictionary; @@ -38,6 +37,8 @@ class recipe return result_; } + bool obsolete = false; + std::string category; std::string subcategory; diff --git a/src/recipe_dictionary.cpp b/src/recipe_dictionary.cpp index b874ceb8ea51b..dbd99195ea765 100644 --- a/src/recipe_dictionary.cpp +++ b/src/recipe_dictionary.cpp @@ -1,16 +1,17 @@ #include "recipe_dictionary.h" -#include "itype.h" -#include "generic_factory.h" -#include "item_factory.h" -#include "item.h" -#include "init.h" #include "cata_utility.h" #include "crafting.h" +#include "generic_factory.h" +#include "init.h" +#include "item.h" +#include "item_factory.h" +#include "itype.h" +#include "output.h" #include "skill.h" +#include "uistate.h" #include -#include recipe_dictionary recipe_dict; @@ -41,6 +42,9 @@ const recipe &string_id::obj() const { const auto iter = recipe_dict.recipes.find( *this ); if( iter != recipe_dict.recipes.end() ) { + if( iter->second.obsolete ) { + return null_recipe; + } return iter->second; } if( *this != NULL_ID() ) { @@ -84,6 +88,39 @@ bool search_reqs( std::vector > gp, } ); } +std::vector recipe_subset::favorite() const +{ + std::vector res; + + std::copy_if( recipes.begin(), recipes.end(), std::back_inserter( res ), [&]( const recipe * r ) { + if( !*r ) { + return false; + } + return uistate.favorite_recipes.find( r->ident() ) != uistate.favorite_recipes.end(); + } ); + + return res; +} + +std::vector recipe_subset::recent() const +{ + std::vector res; + + for( auto rec_id = uistate.recent_recipes.rbegin(); rec_id != uistate.recent_recipes.rend(); + ++rec_id ) { + std::find_if( recipes.begin(), recipes.end(), [&rec_id, &res]( const recipe * r ) { + if( !*r || *rec_id != r->ident() ) { + return false; + } + + res.push_back( r ); + return true; + } ); + } + + return res; +} + std::vector recipe_subset::search( const std::string &txt, const search_type key ) const { @@ -101,6 +138,9 @@ std::vector recipe_subset::search( const std::string &txt, return lcmatch( r->required_skills_string( nullptr ), txt ) || lcmatch( r->skill_used->name(), txt ); + case search_type::primary_skill: + return lcmatch( r->skill_used->name(), txt ); + case search_type::component: return search_reqs( r->requirements().get_components(), txt ); @@ -117,6 +157,11 @@ std::vector recipe_subset::search( const std::string &txt, } ); } + case search_type::description_result: { + const item result = r->create_result(); + return lcmatch( remove_color_tags( result.info( true ) ), txt ); + } + default: return false; } @@ -137,9 +182,14 @@ std::vector recipe_subset::search_result( const itype_id &item ) return res; } -bool recipe_subset::empty_category( const std::string &cat, - const std::string &subcat ) const +bool recipe_subset::empty_category( const std::string &cat, const std::string &subcat ) const { + if( subcat == "CSC_*_FAVORITE" ) { + return uistate.favorite_recipes.empty(); + } else if( subcat == "CSC_*_RECENT" ) { + return uistate.recent_recipes.empty(); + } + auto iter = category.find( cat ); if( iter != category.end() ) { if( subcat.empty() ) { @@ -233,7 +283,7 @@ void recipe_dictionary::finalize_internal( std::map &obj ) } // remove any blacklisted or invalid recipes... delete_if( []( const recipe & elem ) { - if( elem.is_blacklisted() ) { + if( elem.is_blacklisted() || elem.obsolete ) { return true; } diff --git a/src/recipe_dictionary.h b/src/recipe_dictionary.h index cad1c6700e5dd..03524d878f213 100644 --- a/src/recipe_dictionary.h +++ b/src/recipe_dictionary.h @@ -5,12 +5,12 @@ #include "recipe.h" #include "string_id.h" -#include -#include +#include #include +#include #include +#include #include -#include class JsonIn; class JsonOut; @@ -116,12 +116,20 @@ class recipe_subset enum class search_type { name, skill, + primary_skill, component, tool, quality, - quality_result + quality_result, + description_result }; + /** Find marked favorite recipes */ + std::vector favorite() const; + + /** Find recently used recipes */ + std::vector recent() const; + /** Find recipes matching query (left anchored partial matches are supported) */ std::vector search( const std::string &txt, const search_type key = search_type::name ) const; diff --git a/src/recipe_groups.cpp b/src/recipe_groups.cpp index 9670d52c8aa78..ea0c8bcdfb4ff 100644 --- a/src/recipe_groups.cpp +++ b/src/recipe_groups.cpp @@ -1,13 +1,12 @@ #include "recipe_groups.h" + #include "game.h" // TODO: This is a circular dependency #include "generic_factory.h" -#include "player.h" -#include "output.h" -#include "messages.h" #include "json.h" +#include "messages.h" +#include "player.h" #include -#include #include // recipe_groups namespace @@ -36,8 +35,7 @@ generic_factory recipe_groups_data( "recipe group type", "nam void recipe_group_data::load( JsonObject &jo, const std::string & ) { building_type = jo.get_string( "building_type" ); - JsonArray jsarr; - jsarr = jo.get_array( "recipes" ); + JsonArray jsarr = jo.get_array( "recipes" ); while( jsarr.has_more() ) { JsonObject ordering = jsarr.next_object(); std::string name_id = ordering.get_string( "id" ); diff --git a/src/recipe_groups.h b/src/recipe_groups.h index f23b6dd54cf20..a4845048e043d 100644 --- a/src/recipe_groups.h +++ b/src/recipe_groups.h @@ -1,8 +1,9 @@ -#include "map.h" #pragma once #ifndef RECIPE_GROUPS_H #define RECIPE_GROUPS_H +#include "map.h" + #include class JsonObject; @@ -16,6 +17,6 @@ void reset(); std::map get_recipes( std::string id ); -}; +} #endif diff --git a/src/regional_settings.cpp b/src/regional_settings.cpp index 55e5a100609bd..82f20c537fc15 100644 --- a/src/regional_settings.cpp +++ b/src/regional_settings.cpp @@ -1,8 +1,10 @@ #include "regional_settings.h" + +#include "debug.h" #include "json.h" #include "options.h" +#include "rng.h" #include "string_formatter.h" -#include "debug.h" #include #include @@ -180,6 +182,61 @@ void load_forest_mapgen_settings( JsonObject &jo, forest_mapgen_settings &forest } } +void load_forest_trail_settings( JsonObject &jo, forest_trail_settings &forest_trail_settings, + const bool strict, const bool overlay ) +{ + if( !jo.has_object( "forest_trail_settings" ) ) { + if( strict ) { + jo.throw_error( "\"forest_trail_settings\": { ... } required for default" ); + } + } else { + JsonObject forest_trail_settings_jo = jo.get_object( "forest_trail_settings" ); + read_and_set_or_throw( forest_trail_settings_jo, "chance", forest_trail_settings.chance, + !overlay ); + read_and_set_or_throw( forest_trail_settings_jo, "border_point_chance", + forest_trail_settings.border_point_chance, !overlay ); + read_and_set_or_throw( forest_trail_settings_jo, "minimum_forest_size", + forest_trail_settings.minimum_forest_size, !overlay ); + read_and_set_or_throw( forest_trail_settings_jo, "random_point_min", + forest_trail_settings.random_point_min, !overlay ); + read_and_set_or_throw( forest_trail_settings_jo, "random_point_max", + forest_trail_settings.random_point_max, !overlay ); + read_and_set_or_throw( forest_trail_settings_jo, "random_point_size_scalar", + forest_trail_settings.random_point_size_scalar, !overlay ); + read_and_set_or_throw( forest_trail_settings_jo, "trailhead_chance", + forest_trail_settings.trailhead_chance, !overlay ); + read_and_set_or_throw( forest_trail_settings_jo, "trail_center_variance", + forest_trail_settings.trail_center_variance, !overlay ); + read_and_set_or_throw( forest_trail_settings_jo, "trail_width_offset_min", + forest_trail_settings.trail_width_offset_min, !overlay ); + read_and_set_or_throw( forest_trail_settings_jo, "trail_width_offset_max", + forest_trail_settings.trail_width_offset_max, !overlay ); + read_and_set_or_throw( forest_trail_settings_jo, "clear_trail_terrain", + forest_trail_settings.clear_trail_terrain, !overlay ); + + if( forest_trail_settings.clear_trail_terrain ) { + forest_trail_settings.unfinalized_trail_terrain.clear(); + } + + if( !forest_trail_settings_jo.has_object( "trail_terrain" ) ) { + if( !overlay ) { + forest_trail_settings_jo.throw_error( "trail_terrain required" ); + } + } else { + JsonObject trail_terrain_jo = forest_trail_settings_jo.get_object( "trail_terrain" ); + std::set keys = trail_terrain_jo.get_member_names(); + for( const auto &key : keys ) { + int weight = 0; + if( key != "//" ) { + if( trail_terrain_jo.read( key, weight ) ) { + forest_trail_settings.unfinalized_trail_terrain[key] = weight; + } + } + } + } + } +} + void load_region_settings( JsonObject &jo ) { regional_settings new_region; @@ -232,7 +289,7 @@ void load_region_settings( JsonObject &jo ) if( ! pjo.read( "percent_coverage", tmpval ) ) { pjo.throw_error( "field_coverage: percent_coverage required" ); } - new_region.field_coverage.mpercent_coverage = ( int )( tmpval * 10000.0 ); + new_region.field_coverage.mpercent_coverage = static_cast( tmpval * 10000.0 ); if( ! pjo.read( "default_ter", new_region.field_coverage.default_ter_str ) ) { pjo.throw_error( "field_coverage: default_ter required" ); } @@ -250,15 +307,15 @@ void load_region_settings( JsonObject &jo ) } } if( pjo.read( "boost_chance", tmpval ) && tmpval != 0.0f ) { - new_region.field_coverage.boost_chance = ( int )( tmpval * 10000.0 ); + new_region.field_coverage.boost_chance = static_cast( tmpval * 10000.0 ); if( ! pjo.read( "boosted_percent_coverage", tmpval ) ) { pjo.throw_error( "boost_chance > 0 requires boosted_percent_coverage" ); } - new_region.field_coverage.boosted_mpercent_coverage = ( int )( tmpval * 10000.0 ); + new_region.field_coverage.boosted_mpercent_coverage = static_cast( tmpval * 10000.0 ); if( ! pjo.read( "boosted_other_percent", tmpval ) ) { pjo.throw_error( "boost_chance > 0 requires boosted_other_percent" ); } - new_region.field_coverage.boosted_other_mpercent = ( int )( tmpval * 10000.0 ); + new_region.field_coverage.boosted_other_mpercent = static_cast( tmpval * 10000.0 ); if( pjo.has_object( "boosted_other" ) ) { JsonObject opjo = pjo.get_object( "boosted_other" ); std::set keys = opjo.get_member_names(); @@ -278,6 +335,8 @@ void load_region_settings( JsonObject &jo ) load_forest_mapgen_settings( jo, new_region.forest_composition, strict, false ); + load_forest_trail_settings( jo, new_region.forest_trail, strict, false ); + if( ! jo.has_object( "map_extras" ) ) { if( strict ) { jo.throw_error( "\"map_extras\": { ... } required for default" ); @@ -433,7 +492,7 @@ void apply_region_overlay( JsonObject &jo, regional_settings ®ion ) JsonObject fieldjo = jo.get_object( "field_coverage" ); double tmpval = 0.0f; if( fieldjo.read( "percent_coverage", tmpval ) ) { - region.field_coverage.mpercent_coverage = ( int )( tmpval * 10000.0 ); + region.field_coverage.mpercent_coverage = static_cast( tmpval * 10000.0 ); } fieldjo.read( "default_ter", region.field_coverage.default_ter_str ); @@ -449,14 +508,14 @@ void apply_region_overlay( JsonObject &jo, regional_settings ®ion ) } if( fieldjo.read( "boost_chance", tmpval ) ) { - region.field_coverage.boost_chance = ( int )( tmpval * 10000.0 ); + region.field_coverage.boost_chance = static_cast( tmpval * 10000.0 ); } if( fieldjo.read( "boosted_percent_coverage", tmpval ) ) { if( region.field_coverage.boost_chance > 0.0f && tmpval == 0.0f ) { fieldjo.throw_error( "boost_chance > 0 requires boosted_percent_coverage" ); } - region.field_coverage.boosted_mpercent_coverage = ( int )( tmpval * 10000.0 ); + region.field_coverage.boosted_mpercent_coverage = static_cast( tmpval * 10000.0 ); } if( fieldjo.read( "boosted_other_percent", tmpval ) ) { @@ -464,7 +523,7 @@ void apply_region_overlay( JsonObject &jo, regional_settings ®ion ) fieldjo.throw_error( "boost_chance > 0 requires boosted_other_percent" ); } - region.field_coverage.boosted_other_mpercent = ( int )( tmpval * 10000.0 ); + region.field_coverage.boosted_other_mpercent = static_cast( tmpval * 10000.0 ); } JsonObject boostedjo = fieldjo.get_object( "boosted_other" ); @@ -484,6 +543,8 @@ void apply_region_overlay( JsonObject &jo, regional_settings ®ion ) load_forest_mapgen_settings( jo, region.forest_composition, false, true ); + load_forest_trail_settings( jo, region.forest_trail, false, true ); + JsonObject mapextrajo = jo.get_object( "map_extras" ); std::set extrazones = mapextrajo.get_member_names(); for( const auto &zone : extrazones ) { @@ -555,7 +616,7 @@ void groundcover_extra::finalize() // @todo: fixme return bool for failure debugmsg( "No clue what '%s' is! No such terrain or furniture", it->first.c_str() ); continue; } - wtotal += ( int )( it->second * 10000.0 ); + wtotal += static_cast( it->second * 10000.0 ); weightlist[ wtotal ] = tf_id; } @@ -577,7 +638,7 @@ void groundcover_extra::finalize() // @todo: fixme return bool for failure debugmsg( "No clue what '%s' is! No such terrain or furniture", it->first.c_str() ); continue; } - btotal += ( int )( it->second * 10000.0 ); + btotal += static_cast( it->second * 10000.0 ); boosted_weightlist[ btotal ] = tf_id; } @@ -692,6 +753,18 @@ void forest_mapgen_settings::finalize() } } +void forest_trail_settings::finalize() +{ + for( const std::pair &pr : unfinalized_trail_terrain ) { + const ter_str_id tid( pr.first ); + if( !tid.is_valid() ) { + debugmsg( "Tried to add invalid terrain %s to forest_trail_settings trail_terrain.", tid.c_str() ); + continue; + } + trail_terrain.add( tid.id(), pr.second ); + } +} + void regional_settings::finalize() { if( default_groundcover_str != nullptr ) { @@ -703,7 +776,8 @@ void regional_settings::finalize() default_groundcover_str.reset(); city_spec.finalize(); forest_composition.finalize(); - get_options().add_value( "DEFAULT_REGION", id ); + forest_trail.finalize(); + get_options().add_value( "DEFAULT_REGION", id, no_translation( id ) ); } } diff --git a/src/regional_settings.h b/src/regional_settings.h index 861a9201e95a3..6ef6089b50756 100644 --- a/src/regional_settings.h +++ b/src/regional_settings.h @@ -2,16 +2,16 @@ #ifndef REGIONAL_SETTINGS_H #define REGIONAL_SETTINGS_H -#include "weighted_list.h" -#include "omdata.h" #include "mapdata.h" +#include "omdata.h" #include "weather_gen.h" +#include "weighted_list.h" #include +#include #include #include #include -#include class JsonObject; @@ -22,7 +22,7 @@ class building_bin weighted_int_list buildings; std::map unfinalized_buildings; public: - building_bin() {}; + building_bin() = default; void add( const overmap_special_id &building, int weight ); overmap_special_id pick() const; std::vector all; @@ -139,12 +139,31 @@ struct forest_mapgen_settings { forest_mapgen_settings() = default; }; +struct forest_trail_settings { + int chance = 1; + int border_point_chance = 2; + int minimum_forest_size = 50; + int random_point_min = 4; + int random_point_max = 50; + int random_point_size_scalar = 100; + int trailhead_chance = 1; + int trail_center_variance = 3; + int trail_width_offset_min = 1; + int trail_width_offset_max = 3; + bool clear_trail_terrain = false; + std::map unfinalized_trail_terrain; + weighted_int_list trail_terrain; + + void finalize(); + forest_trail_settings() = default; +}; + struct map_extras { unsigned int chance; weighted_int_list values; - map_extras() : chance( 0 ), values() {} - map_extras( const unsigned int embellished ) : chance( embellished ), values() {} + map_extras() : chance( 0 ) {} + map_extras( const unsigned int embellished ) : chance( embellished ) {} }; struct sid_or_sid; @@ -170,6 +189,7 @@ struct regional_settings { city_settings city_spec; // put what where in a city of what kind groundcover_extra field_coverage; forest_mapgen_settings forest_composition; + forest_trail_settings forest_trail; weather_generator weather; diff --git a/src/requirements.cpp b/src/requirements.cpp index 9ad0772118c0d..446d3d37e7563 100644 --- a/src/requirements.cpp +++ b/src/requirements.cpp @@ -1,17 +1,17 @@ #include "requirements.h" +#include "calendar.h" +#include "debug.h" +#include "game.h" +#include "generic_factory.h" +#include "inventory.h" +#include "item_factory.h" +#include "itype.h" #include "json.h" -#include "translations.h" #include "output.h" -#include "game.h" #include "player.h" -#include "debug.h" -#include "inventory.h" #include "string_formatter.h" -#include "itype.h" -#include "item_factory.h" -#include "calendar.h" -#include "generic_factory.h" +#include "translations.h" #include #include diff --git a/src/requirements.h b/src/requirements.h index fd47dbe8d7858..86c9372150b06 100644 --- a/src/requirements.h +++ b/src/requirements.h @@ -2,13 +2,11 @@ #ifndef REQUIREMENTS_H #define REQUIREMENTS_H +#include "string_id.h" + #include -#include -#include #include -#include - -#include "string_id.h" +#include class nc_color; class JsonObject; diff --git a/src/rng.cpp b/src/rng.cpp index b80da6e2e76fb..e5c27ddcc17ee 100644 --- a/src/rng.cpp +++ b/src/rng.cpp @@ -1,12 +1,11 @@ -#include "rng.h" #include "output.h" -#include "game_constants.h" -#include -#include -#include +#include "rng.h" +#include #define _USE_MATH_DEFINES #include +#include +#include long rng( long val1, long val2 ) { @@ -35,7 +34,7 @@ bool one_in_improved( double chance ) bool x_in_y( double x, double y ) { - return ( ( double )rand() / RAND_MAX ) <= ( ( double )x / y ); + return ( static_cast( rand() ) / RAND_MAX ) <= ( static_cast( x ) / y ); } int dice( int number, int sides ) diff --git a/src/rng.h b/src/rng.h index 3b84902dfb3a5..22ae0ddc3b4e4 100644 --- a/src/rng.h +++ b/src/rng.h @@ -2,11 +2,10 @@ #ifndef RNG_H #define RNG_H -#include "compatibility.h" #include "optional.h" -#include #include +#include // Some of the RNG functions are based on an engine. // By default, that engine is seeded by time on first call to such a function. diff --git a/src/rotatable_symbols.cpp b/src/rotatable_symbols.cpp index cfcfe95e78628..949fab1f08fac 100644 --- a/src/rotatable_symbols.cpp +++ b/src/rotatable_symbols.cpp @@ -1,9 +1,7 @@ #include "rotatable_symbols.h" -#include "debug.h" -#include "json.h" #include "generic_factory.h" -#include "output.h" +#include "json.h" #include "string_formatter.h" #include diff --git a/src/safemode_ui.cpp b/src/safemode_ui.cpp index d2c015a4288f7..9c03b0808a077 100644 --- a/src/safemode_ui.cpp +++ b/src/safemode_ui.cpp @@ -1,26 +1,25 @@ #include "safemode_ui.h" -#include "game.h" -#include "player.h" -#include "output.h" -#include "debug.h" -#include "translations.h" -#include "string_formatter.h" #include "cata_utility.h" -#include "path_info.h" +#include "debug.h" #include "filesystem.h" +#include "game.h" #include "input.h" -#include "mtype.h" #include "json.h" -#include "options.h" #include "monstergenerator.h" +#include "mtype.h" +#include "options.h" +#include "output.h" +#include "path_info.h" +#include "player.h" +#include "string_formatter.h" #include "string_input_popup.h" +#include "translations.h" -#include +#include #include #include #include -#include safemode &get_safemode() { @@ -192,7 +191,7 @@ void safemode::show( const std::string &custom_name_in, bool is_safemode_in ) calcStartPos( start_pos, line, content_height, current_tab.size() ); // display safe mode - for( int i = start_pos; i < ( int )current_tab.size(); i++ ) { + for( int i = start_pos; i < static_cast( current_tab.size() ); i++ ) { if( i >= start_pos && i < start_pos + std::min( content_height, static_cast( current_tab.size() ) ) ) { @@ -239,7 +238,7 @@ void safemode::show( const std::string &custom_name_in, bool is_safemode_in ) //Only allow loaded games to use the char sheet } else if( action == "DOWN" ) { line++; - if( line >= ( int )current_tab.size() ) { + if( line >= static_cast( current_tab.size() ) ) { line = 0; } } else if( action == "UP" ) { @@ -259,7 +258,7 @@ void safemode::show( const std::string &custom_name_in, bool is_safemode_in ) } else if( action == "REMOVE_RULE" && !current_tab.empty() ) { changes_made = true; current_tab.erase( current_tab.begin() + line ); - if( line > ( int )current_tab.size() - 1 ) { + if( line > static_cast( current_tab.size() ) - 1 ) { line--; } if( line < 0 ) { @@ -359,7 +358,7 @@ void safemode::show( const std::string &custom_name_in, bool is_safemode_in ) } } else if( action == "MOVE_RULE_UP" && !current_tab.empty() ) { changes_made = true; - if( line < ( int )current_tab.size() - 1 ) { + if( line < static_cast( current_tab.size() ) - 1 ) { std::swap( current_tab[line], current_tab[line + 1] ); line++; column = 0; @@ -401,7 +400,6 @@ void safemode::show( const std::string &custom_name_in, bool is_safemode_in ) void safemode::test_pattern( const int tab_in, const int row_in ) { std::vector creature_list; - std::string creature_name; auto &temp_rules = ( tab_in == GLOBAL_TAB ) ? global_rules : character_rules; @@ -416,7 +414,7 @@ void safemode::test_pattern( const int tab_in, const int row_in ) //Loop through all monster mtypes for( const auto &mtype : MonsterGenerator::generator().get_all_mtypes() ) { - creature_name = mtype.nname(); + std::string creature_name = mtype.nname(); if( wildcard_match( creature_name, temp_rules[row_in].rule ) ) { creature_list.push_back( creature_name ); } @@ -462,7 +460,7 @@ void safemode::test_pattern( const int tab_in, const int row_in ) calcStartPos( start_pos, line, content_height, creature_list.size() ); // display safe mode - for( int i = start_pos; i < ( int )creature_list.size(); i++ ) { + for( int i = start_pos; i < static_cast( creature_list.size() ); i++ ) { if( i >= start_pos && i < start_pos + std::min( content_height, static_cast( creature_list.size() ) ) ) { nc_color line_color = c_white; @@ -482,7 +480,7 @@ void safemode::test_pattern( const int tab_in, const int row_in ) const std::string action = ctxt.handle_input(); if( action == "DOWN" ) { line++; - if( line >= ( int )creature_list.size() ) { + if( line >= static_cast( creature_list.size() ) ) { line = 0; } } else if( action == "UP" ) { @@ -591,7 +589,7 @@ rule_state safemode::check_monster( const std::string &creature_name_in, { const auto iter = safemode_rules.find( creature_name_in ); if( iter != safemode_rules.end() ) { - const auto &tmp = ( iter->second )[( int )attitude_in]; + const auto &tmp = ( iter->second )[static_cast( attitude_in )]; if( tmp.state == RULE_BLACKLISTED ) { if( tmp.proximity == 0 || proximity <= tmp.proximity ) { return RULE_BLACKLISTED; @@ -709,7 +707,7 @@ void safemode::deserialize( JsonIn &jsin ) const std::string rule = jo.get_string( "rule" ); const bool active = jo.get_bool( "active" ); const bool whitelist = jo.get_bool( "whitelist" ); - const Creature::Attitude attitude = ( Creature::Attitude ) jo.get_int( "attitude" ); + const Creature::Attitude attitude = static_cast( jo.get_int( "attitude" ) ); const int proximity = jo.get_int( "proximity" ); temp_rules.push_back( diff --git a/src/safemode_ui.h b/src/safemode_ui.h index e8913c3a9755b..d5e012e1cc697 100644 --- a/src/safemode_ui.h +++ b/src/safemode_ui.h @@ -1,14 +1,13 @@ #pragma once -#ifndef SEFEMODE_UI_H -#define SEFEMODE_UI_H +#ifndef SAFEMODE_UI_H +#define SAFEMODE_UI_H + +#include "creature.h" +#include "enums.h" -#include #include +#include #include -#include -#include -#include "enums.h" -#include "creature.h" class JsonIn; class JsonOut; @@ -31,7 +30,7 @@ class safemode Creature::Attitude attitude; int proximity; - rules_class() : rule(), active( false ), whitelist( false ), attitude( Creature::A_HOSTILE ), + rules_class() : active( false ), whitelist( false ), attitude( Creature::A_HOSTILE ), proximity( 0 ) {} rules_class( std::string rule_in, bool active_in, bool whitelist_in, Creature::Attitude attitude_in, int proximity_in ) : rule( rule_in ), active( active_in ), whitelist( whitelist_in ), diff --git a/src/savegame.cpp b/src/savegame.cpp index c5770db07106c..47055cea56c67 100644 --- a/src/savegame.cpp +++ b/src/savegame.cpp @@ -1,43 +1,35 @@ #include "game.h" +#include "artifact.h" +#include "auto_pickup.h" +#include "computer.h" #include "coordinate_conversions.h" #include "creature_tracker.h" -#include "output.h" -#include "skill.h" -#include "line.h" -#include "computer.h" -#include "options.h" -#include "auto_pickup.h" -#include "mapbuffer.h" #include "debug.h" -#include "map.h" -#include "output.h" -#include "artifact.h" -#include "mission.h" #include "faction.h" -#include "overmapbuffer.h" -#include "trap.h" -#include "messages.h" +#include "io.h" +#include "line.h" +#include "map.h" #include "mapdata.h" -#include "translations.h" +#include "messages.h" +#include "mission.h" #include "mongroup.h" +#include "monster.h" +#include "npc.h" +#include "options.h" +#include "output.h" +#include "overmap.h" +#include "overmapbuffer.h" #include "scent_map.h" -#include "io.h" +#include "translations.h" +#include +#include #include #include -#include -#include #include -#include +#include #include -#include "debug.h" -#include "weather.h" -#include "mapsharing.h" -#include "monster.h" -#include "overmap.h" -#include "weather_gen.h" -#include "npc.h" #ifdef __ANDROID__ #include "input.h" @@ -198,8 +190,8 @@ void game::unserialize( std::istream &fin ) data.read( "turn", tmpturn ); data.read( "calendar_start", tmpcalstart ); - calendar::initial_season = ( season_type )data.get_int( "initial_season", - static_cast( SPRING ) ); + calendar::initial_season = static_cast( data.get_int( "initial_season", + static_cast( SPRING ) ) ); data.read( "last_target", tmptar ); data.read( "last_target_type", tmptartyp ); data.read( "run_mode", tmprun ); @@ -1097,7 +1089,7 @@ static void serialize_array_to_compacted_sequence( JsonOut &json, } lastval = value; json.start_array(); - json.write( ( bool )value ); + json.write( static_cast( value ) ); count = 1; } else { count++; diff --git a/src/savegame_json.cpp b/src/savegame_json.cpp index 724388bd4af24..db41dba5a2dcb 100644 --- a/src/savegame_json.cpp +++ b/src/savegame_json.cpp @@ -1,55 +1,43 @@ -#include "player.h" -#include "npc.h" -#include "npc_class.h" -#include "profession.h" +#include "ammo.h" +#include "auto_pickup.h" #include "bionics.h" -#include "mission.h" +#include "calendar.h" +#include "crafting.h" +#include "cursesdef.h" +#include "debug.h" +#include "effect.h" #include "game.h" -#include "rng.h" -#include "addiction.h" -#include "auto_pickup.h" #include "inventory.h" -#include "ammo.h" -#include "artifact.h" -#include "options.h" -#include -#include -#include -#include "weather.h" +#include "io.h" #include "item.h" -#include "material.h" -#include "translations.h" -#include "vitamin.h" -#include "skill.h" -#include "name.h" -#include "vpart_reference.h" -#include "cursesdef.h" -#include "catacharset.h" -#include "effect.h" -#include "crafting.h" -#include "get_version.h" -#include "scenario.h" -#include "calendar.h" -#include "monster.h" +#include "item_factory.h" +#include "json.h" +#include "mission.h" #include "monfaction.h" +#include "monster.h" #include "morale.h" -#include "veh_type.h" -#include "vpart_range.h" -#include "vehicle.h" -#include "mutation.h" -#include "io.h" #include "mtype.h" -#include "item_factory.h" -#include "recipe_dictionary.h" +#include "npc.h" +#include "npc_class.h" +#include "options.h" +#include "player.h" #include "player_activity.h" +#include "profession.h" +#include "recipe_dictionary.h" +#include "rng.h" +#include "scenario.h" +#include "skill.h" +#include "veh_type.h" +#include "vehicle.h" +#include "vitamin.h" +#include "vpart_range.h" +#include "vpart_reference.h" -#include -#include +#include #include +#include +#include -#include "json.h" - -#include "debug.h" #define dbg(x) DebugLog((DebugLevel)(x),D_GAME) << __FILE__ << ":" << __LINE__ << ": " static const trait_id trait_HYPEROPIC( "HYPEROPIC" ); @@ -174,16 +162,19 @@ void player_activity::serialize( JsonOut &json ) const { json.start_object(); json.member( "type", type ); - json.member( "moves_left", moves_left ); - json.member( "index", index ); - json.member( "position", position ); - json.member( "coords", coords ); - json.member( "name", name ); - json.member( "targets", targets ); - json.member( "placement", placement ); - json.member( "values", values ); - json.member( "str_values", str_values ); - json.member( "auto_resume", auto_resume ); + + if( !type.is_null() ) { + json.member( "moves_left", moves_left ); + json.member( "index", index ); + json.member( "position", position ); + json.member( "coords", coords ); + json.member( "name", name ); + json.member( "targets", targets ); + json.member( "placement", placement ); + json.member( "values", values ); + json.member( "str_values", str_values ); + json.member( "auto_resume", auto_resume ); + } json.end_object(); } @@ -201,6 +192,10 @@ void player_activity::deserialize( JsonIn &jsin ) type = activity_id( tmptype ); } + if( type.is_null() ) { + return; + } + if( !data.read( "position", tmppos ) ) { tmppos = INT_MIN; // If loading a save before position existed, hope. } @@ -642,10 +637,10 @@ void player::serialize( JsonOut &json ) const // contain start_object(), store(), end_object(). // player-specific specifics - if( prof != NULL ) { + if( prof != nullptr ) { json.member( "profession", prof->ident() ); } - if( g->scen != NULL ) { + if( g->scen != nullptr ) { json.member( "scenario", g->scen->ident() ); } // someday, npcs may drive @@ -653,7 +648,7 @@ void player::serialize( JsonOut &json ) const // shopping carts, furniture etc json.member( "grab_point", grab_point ); - json.member( "grab_type", obj_type_name[( int )grab_type ] ); + json.member( "grab_type", obj_type_name[static_cast( grab_type ) ] ); // misc player specific stuff json.member( "focus_pool", focus_pool ); @@ -875,7 +870,7 @@ void player::deserialize( JsonIn &jsin ) parray = data.get_array( "assigned_invlet" ); while( parray.has_more() ) { JsonArray pair = parray.next_array(); - inv.assigned_invlet[( char )pair.get_int( 0 )] = pair.get_string( 1 ); + inv.assigned_invlet[static_cast( pair.get_int( 0 ) )] = pair.get_string( 1 ); } if( data.has_member( "invcache" ) ) { @@ -890,8 +885,8 @@ void player::deserialize( JsonIn &jsin ) void npc_follower_rules::serialize( JsonOut &json ) const { json.start_object(); - json.member( "engagement", ( int )engagement ); - json.member( "aim", ( int )aim ); + json.member( "engagement", static_cast( engagement ) ); + json.member( "aim", static_cast( aim ) ); json.member( "use_guns", use_guns ); json.member( "use_grenades", use_grenades ); json.member( "use_silent", use_silent ); @@ -914,10 +909,10 @@ void npc_follower_rules::deserialize( JsonIn &jsin ) JsonObject data = jsin.get_object(); int tmpeng = 0; data.read( "engagement", tmpeng ); - engagement = ( combat_engagement )tmpeng; + engagement = static_cast( tmpeng ); int tmpaim = 0; data.read( "aim", tmpaim ); - aim = ( aim_rule )tmpaim; + aim = static_cast( tmpaim ); data.read( "use_guns", use_guns ); data.read( "use_grenades", use_grenades ); data.read( "use_silent", use_silent ); @@ -996,10 +991,10 @@ void npc_personality::deserialize( JsonIn &jsin ) data.read( "bravery", tmpbrav ) && data.read( "collector", tmpcol ) && data.read( "altruism", tmpalt ) ) { - aggression = ( signed char )tmpagg; - bravery = ( signed char )tmpbrav; - collector = ( signed char )tmpcol; - altruism = ( signed char )tmpalt; + aggression = static_cast( tmpagg ); + bravery = static_cast( tmpbrav ); + collector = static_cast( tmpcol ); + altruism = static_cast( tmpalt ); } else { debugmsg( "npc_personality: bad data" ); } @@ -1008,10 +1003,10 @@ void npc_personality::deserialize( JsonIn &jsin ) void npc_personality::serialize( JsonOut &json ) const { json.start_object(); - json.member( "aggression", ( int )aggression ); - json.member( "bravery", ( int )bravery ); - json.member( "collector", ( int )collector ); - json.member( "altruism", ( int )altruism ); + json.member( "aggression", static_cast( aggression ) ); + json.member( "bravery", static_cast( bravery ) ); + json.member( "collector", static_cast( collector ) ); + json.member( "altruism", static_cast( altruism ) ); json.end_object(); } @@ -1054,9 +1049,9 @@ void npc_favor::deserialize( JsonIn &jsin ) void npc_favor::serialize( JsonOut &json ) const { json.start_object(); - json.member( "type", ( int )type ); + json.member( "type", static_cast( type ) ); json.member( "value", value ); - json.member( "itype_id", ( std::string )item_id ); + json.member( "itype_id", static_cast( item_id ) ); json.member( "skill_id", skill ); json.end_object(); } @@ -1306,7 +1301,7 @@ void npc::store( JsonOut &json ) const if( !fac_id.str().empty() ) { // set in constructor json.member( "my_fac", my_fac->id.c_str() ); } - json.member( "attitude", ( int )attitude ); + json.member( "attitude", static_cast( attitude ) ); json.member( "op_of_u", op_of_u ); json.member( "chatbin", chatbin ); json.member( "rules", rules ); @@ -1435,7 +1430,7 @@ void monster::load( JsonObject &data ) if( !parray.empty() ) { int index = 0; int ptimeout = 0; - while( parray.has_more() && index < ( int )( type->special_attacks_names.size() ) ) { + while( parray.has_more() && index < static_cast( type->special_attacks_names.size() ) ) { if( parray.read_next( ptimeout ) ) { // assume timeouts saved in same order as current monsters.json listing const std::string &aname = type->special_attacks_names[index++]; @@ -2090,20 +2085,20 @@ void vehicle_part::serialize( JsonOut &json ) const /* * label */ -void label::deserialize( JsonIn &jsin ) +void deserialize( label &val, JsonIn &jsin ) { JsonObject data = jsin.get_object(); - data.read( "x", x ); - data.read( "y", y ); - data.read( "text", text ); + data.read( "x", val.x ); + data.read( "y", val.y ); + data.read( "text", val.text ); } -void label::serialize( JsonOut &json ) const +void serialize( const label &val, JsonOut &json ) { json.start_object(); - json.member( "x", x ); - json.member( "y", y ); - json.member( "text", text ); + json.member( "x", val.x ); + json.member( "y", val.y ); + json.member( "text", val.text ); json.end_object(); } @@ -2156,7 +2151,7 @@ void vehicle::deserialize( JsonIn &jsin ) pivot_rotation[1] = pivot_rotation[0] = fdir; // Need to manually backfill the active item cache since the part loader can't call its vehicle. - for( const vpart_reference &vp : get_parts( VPFLAG_CARGO ) ) { + for( const vpart_reference &vp : get_any_parts( VPFLAG_CARGO ) ) { auto it = vp.part().items.begin(); auto end = vp.part().items.end(); for( ; it != end; ++it ) { @@ -2166,8 +2161,8 @@ void vehicle::deserialize( JsonIn &jsin ) } } - for( const vpart_reference &vp : get_parts( "TURRET" ) ) { - install_part( vp.mount().x, vp.mount().y, vpart_id( "turret_mount" ), false ); + for( const vpart_reference &vp : get_any_parts( "TURRET" ) ) { + install_part( vp.mount(), vpart_id( "turret_mount" ), false ); } /* After loading, check if the vehicle is from the old rules and is missing @@ -2204,7 +2199,7 @@ void vehicle::deserialize( JsonIn &jsin ) /** Legacy saved games did not store part enabled status within parts */ auto set_legacy_state = [&]( const std::string & var, const std::string & flag ) { if( data.get_bool( var, false ) ) { - for( const vpart_reference &vp : get_parts( flag ) ) { + for( const vpart_reference &vp : get_any_parts( flag ) ) { vp.part().enabled = true; } } @@ -2588,7 +2583,7 @@ void player_morale::morale_point::serialize( JsonOut &json ) const { json.start_object(); json.member( "type", type ); - if( item_type != NULL ) { + if( item_type != nullptr ) { // @todo: refactor player_morale to not require this hack json.member( "item_type", item_type->get_id() ); } diff --git a/src/savegame_legacy.cpp b/src/savegame_legacy.cpp index 90966db2ed244..10c7bc2da7b05 100644 --- a/src/savegame_legacy.cpp +++ b/src/savegame_legacy.cpp @@ -1,18 +1,18 @@ #include "debug.h" // for legacy classdata loaders #include "item.h" +#include "calendar.h" #include "itype.h" +#include "json.h" #include "mongroup.h" #include "npc.h" #include "options.h" #include "overmap.h" -#include "json.h" #include "player_activity.h" -#include "calendar.h" -#include -#include #include +#include +#include #include namespace std @@ -222,7 +222,7 @@ void item::load_info( const std::string &data ) dump >> burnt >> poison >> ammotmp >> owned >> bday_ >> mode >> acttmp >> corp >> mission_id >> player_id; bday = time_point::from_turn( bday_ ); - corpse = NULL; + corpse = nullptr; getline( dump, corpse_name ); if( corpse_name == " ''" ) { corpse_name.clear(); @@ -370,7 +370,7 @@ void overmap::unserialize_legacy( std::istream &fin ) radio_tower tmp; int tmp_type; fin >> tmp.x >> tmp.y >> tmp.strength >> tmp_type; - tmp.type = ( radio_type )tmp_type; + tmp.type = static_cast( tmp_type ); getline( fin, tmp.message ); // Chomp endl getline( fin, tmp.message ); radios.push_back( tmp ); diff --git a/src/scenario.cpp b/src/scenario.cpp index 772ef01d6111e..fb428a6d609c7 100644 --- a/src/scenario.cpp +++ b/src/scenario.cpp @@ -1,20 +1,17 @@ #include "scenario.h" -#include -#include -#include -#include +#include "addiction.h" #include "debug.h" +#include "generic_factory.h" #include "json.h" +#include "map_extras.h" +#include "mutation.h" #include "player.h" -#include "translations.h" -#include "pldata.h" -#include "addiction.h" #include "profession.h" -#include "mutation.h" -#include "mapgen.h" -#include "map_extras.h" -#include "generic_factory.h" +#include "translations.h" + +#include +#include namespace { @@ -299,11 +296,7 @@ bool scenario::allowed_start( const start_location_id &loc ) const bool scenario::can_pick( const scenario ¤t_scenario, const int points ) const { - if( point_cost() - current_scenario.point_cost() > points ) { - return false; - } - - return true; + return point_cost() - current_scenario.point_cost() <= points; } bool scenario::has_map_special() const { diff --git a/src/scenario.h b/src/scenario.h index 5001758d5b843..4e581b46cff12 100644 --- a/src/scenario.h +++ b/src/scenario.h @@ -4,10 +4,8 @@ #include "string_id.h" -#include -#include -#include #include +#include class scenario; class profession; diff --git a/src/scent_map.cpp b/src/scent_map.cpp index e9a6c768ed421..054c4ca75c0ef 100644 --- a/src/scent_map.cpp +++ b/src/scent_map.cpp @@ -1,9 +1,10 @@ #include "scent_map.h" + #include "calendar.h" #include "color.h" +#include "game.h" #include "map.h" #include "output.h" -#include "game.h" #include #include @@ -193,9 +194,8 @@ void scent_map::update( const tripoint ¢er, map &m ) } else { this_diffusivity = diffusivity / 5; //less air movement for REDUCE_SCENT square } - int temp_scent; // take the old scent and subtract what diffuses out - temp_scent = scent_here * ( 10 * 1000 - squares_used * this_diffusivity ); + int temp_scent = scent_here * ( 10 * 1000 - squares_used * this_diffusivity ); // neighboring walls and reduce_scent squares absorb some scent temp_scent -= scent_here * this_diffusivity * ( 90 - squares_used ) / 5; // we've already summed neighboring scent values in the y direction in the previous diff --git a/src/scent_map.h b/src/scent_map.h index 477c70f2e2aa9..ae805b962bb58 100644 --- a/src/scent_map.h +++ b/src/scent_map.h @@ -29,7 +29,7 @@ class scent_map const game &gm; public: - scent_map( const game &g ) : gm( g ) { }; + scent_map( const game &g ) : gm( g ) { } void deserialize( const std::string &data ); std::string serialize() const; diff --git a/src/sdl_wrappers.cpp b/src/sdl_wrappers.cpp new file mode 100644 index 0000000000000..70019a71511b0 --- /dev/null +++ b/src/sdl_wrappers.cpp @@ -0,0 +1,136 @@ +#ifdef TILES + +#include "sdl_wrappers.h" + +#include "debug.h" + +#include + +#ifdef TILES +# if defined(_MSC_VER) && defined(USE_VCPKG) +# include +# else +# include +# endif +#endif // TILES + +#define dbg(x) DebugLog((DebugLevel)(x),D_SDL) << __FILE__ << ":" << __LINE__ << ": " + +bool printErrorIf( const bool condition, const char *const message ) +{ + if( !condition ) { + return false; + } + dbg( D_ERROR ) << message << ": " << SDL_GetError(); + return true; +} + +void throwErrorIf( const bool condition, const char *const message ) +{ + if( !condition ) { + return; + } + throw std::runtime_error( std::string( message ) + ": " + SDL_GetError() ); +} + +void RenderCopy( const SDL_Renderer_Ptr &renderer, const SDL_Texture_Ptr &texture, + const SDL_Rect *srcrect, const SDL_Rect *dstrect ) +{ + if( !renderer ) { + dbg( D_ERROR ) << "Tried to render to a null renderer"; + return; + } + if( !texture ) { + dbg( D_ERROR ) << "Tried to render a null texture"; + return; + } + printErrorIf( SDL_RenderCopy( renderer.get(), texture.get(), srcrect, dstrect ) != 0, + "SDL_RenderCopy failed" ); +} + +SDL_Texture_Ptr CreateTextureFromSurface( const SDL_Renderer_Ptr &renderer, + const SDL_Surface_Ptr &surface ) +{ + if( !renderer ) { + dbg( D_ERROR ) << "Tried to create texture with a null renderer"; + return SDL_Texture_Ptr(); + } + if( !surface ) { + dbg( D_ERROR ) << "Tried to create texture from a null surface"; + return SDL_Texture_Ptr(); + } + SDL_Texture_Ptr result( SDL_CreateTextureFromSurface( renderer.get(), surface.get() ) ); + printErrorIf( !result, "SDL_CreateTextureFromSurface failed" ); + return result; +} + +void SetRenderDrawColor( const SDL_Renderer_Ptr &renderer, const Uint8 r, const Uint8 g, + const Uint8 b, const Uint8 a ) +{ + if( !renderer ) { + dbg( D_ERROR ) << "Tried to use a null renderer"; + return; + } + printErrorIf( SDL_SetRenderDrawColor( renderer.get(), r, g, b, a ) != 0, + "SDL_SetRenderDrawColor failed" ); +} + +void RenderFillRect( const SDL_Renderer_Ptr &renderer, const SDL_Rect *const rect ) +{ + if( !renderer ) { + dbg( D_ERROR ) << "Tried to use a null renderer"; + return; + } + printErrorIf( SDL_RenderFillRect( renderer.get(), rect ) != 0, "SDL_RenderFillRect failed" ); +} + +void SetRenderDrawBlendMode( const SDL_Renderer_Ptr &renderer, const SDL_BlendMode blendMode ) +{ + if( !renderer ) { + dbg( D_ERROR ) << "Tried to use a null renderer"; + return; + } + printErrorIf( SDL_SetRenderDrawBlendMode( renderer.get(), blendMode ) != 0, + "SDL_SetRenderDrawBlendMode failed" ); +} + +SDL_Surface_Ptr load_image( const char *const path ) +{ + assert( path ); + SDL_Surface_Ptr result( IMG_Load( path ) ); + if( !result ) { + throw std::runtime_error( "Could not load image \"" + std::string( path ) + "\": " + + IMG_GetError() ); + } + return result; +} + +void SetRenderTarget( const SDL_Renderer_Ptr &renderer, const SDL_Texture_Ptr &texture ) +{ + if( !renderer ) { + dbg( D_ERROR ) << "Tried to use a null renderer"; + return; + } + // a null texture is fine for SDL + printErrorIf( SDL_SetRenderTarget( renderer.get(), texture.get() ) != 0, + "SDL_SetRenderTarget failed" ); +} + +void RenderClear( const SDL_Renderer_Ptr &renderer ) +{ + if( !renderer ) { + dbg( D_ERROR ) << "Tried to use a null renderer"; + return; + } + printErrorIf( SDL_RenderClear( renderer.get() ) != 0, "SDL_RenderCopy failed" ); +} + +SDL_Surface_Ptr CreateRGBSurface( const Uint32 flags, const int width, const int height, + const int depth, const Uint32 Rmask, const Uint32 Gmask, const Uint32 Bmask, const Uint32 Amask ) +{ + SDL_Surface_Ptr surface( SDL_CreateRGBSurface( flags, width, height, depth, Rmask, Gmask, Bmask, + Amask ) ); + throwErrorIf( !surface, "Failed to create surface" ); + return surface; +} +#endif diff --git a/src/sdl_wrappers.h b/src/sdl_wrappers.h new file mode 100644 index 0000000000000..2cb0c55244562 --- /dev/null +++ b/src/sdl_wrappers.h @@ -0,0 +1,91 @@ +#pragma once +#ifndef SDL_WRAPPERS_H +#define SDL_WRAPPERS_H + +#if defined(_MSC_VER) && defined(USE_VCPKG) +# include +# include +#else +# include +# include +#endif + +#include + +struct SDL_Renderer_deleter { + void operator()( SDL_Renderer *const renderer ) { + SDL_DestroyRenderer( renderer ); + } +}; +using SDL_Renderer_Ptr = std::unique_ptr; + +struct SDL_Window_deleter { + void operator()( SDL_Window *const window ) { + SDL_DestroyWindow( window ); + } +}; +using SDL_Window_Ptr = std::unique_ptr; + +struct SDL_PixelFormat_deleter { + void operator()( SDL_PixelFormat *const format ) { + SDL_FreeFormat( format ); + } +}; +using SDL_PixelFormat_Ptr = std::unique_ptr; + +struct SDL_Texture_deleter { + void operator()( SDL_Texture *const ptr ) { + SDL_DestroyTexture( ptr ); + } +}; +using SDL_Texture_Ptr = std::unique_ptr; + +struct SDL_Surface_deleter { + void operator()( SDL_Surface *const ptr ) { + SDL_FreeSurface( ptr ); + } +}; +using SDL_Surface_Ptr = std::unique_ptr; + +struct TTF_Font_deleter { + void operator()( TTF_Font *const font ) { + TTF_CloseFont( font ); + } +}; +using TTF_Font_Ptr = std::unique_ptr; +/** + * If the @p condition is `true`, an error (including the given @p message + * and the output of @ref SDL_GetError) is logged to the debug log. + * @returns \p condition, in other words: return whether an error was logged. + */ +bool printErrorIf( bool condition, const char *message ); +/** + * If the @p condition is `true`, an exception (including the given @p message + * and the output of @ref SDL_GetError) is thrown. + */ +void throwErrorIf( bool condition, const char *message ); +/** + * Wrappers for SDL functions that does error reporting and that accept our + * wrapped pointers. + * Errors are reported via the usual debug log stream (exceptions are noted below). + * + * @ref CreateTextureFromSurface returns an empty `SDL_Texture_Ptr` if the function + * fails (the failure is also logged by the function). + * @ref load_image throws if the loading fails. Its input must be a valid C-String. + */ +/**@{*/ +void RenderCopy( const SDL_Renderer_Ptr &renderer, const SDL_Texture_Ptr &texture, + const SDL_Rect *srcrect, const SDL_Rect *dstrect ); +SDL_Texture_Ptr CreateTextureFromSurface( const SDL_Renderer_Ptr &renderer, + const SDL_Surface_Ptr &surface ); +void SetRenderDrawColor( const SDL_Renderer_Ptr &renderer, Uint8 r, Uint8 g, Uint8 b, Uint8 a ); +void RenderFillRect( const SDL_Renderer_Ptr &renderer, const SDL_Rect *rect ); +void SetRenderDrawBlendMode( const SDL_Renderer_Ptr &renderer, SDL_BlendMode blendMode ); +SDL_Surface_Ptr load_image( const char *path ); +void SetRenderTarget( const SDL_Renderer_Ptr &renderer, const SDL_Texture_Ptr &texture ); +void RenderClear( const SDL_Renderer_Ptr &renderer ); +SDL_Surface_Ptr CreateRGBSurface( Uint32 flags, int width, int height, int depth, Uint32 Rmask, + Uint32 Gmask, Uint32 Bmask, Uint32 Amask ); +/**@}*/ + +#endif diff --git a/src/sdltiles.cpp b/src/sdltiles.cpp index 29eca10b97707..964fd3a3aad70 100644 --- a/src/sdltiles.cpp +++ b/src/sdltiles.cpp @@ -1,37 +1,43 @@ #if (defined TILES) -#include "game.h" +#include "cata_tiles.h" #include "cata_utility.h" +#include "catacharset.h" +#include "color.h" #include "color_loader.h" +#include "cursesdef.h" #include "cursesport.h" +#include "debug.h" +#include "filesystem.h" #include "font_loader.h" +#include "game.h" #include "game_ui.h" +#include "get_version.h" +#include "init.h" +#include "input.h" #include "loading_ui.h" #include "options.h" #include "output.h" -#include "input.h" -#include "color.h" -#include "catacharset.h" -#include "cursesdef.h" -#include "debug.h" -#include "player.h" -#include "translations.h" -#include "cata_tiles.h" -#include "get_version.h" -#include "init.h" #include "path_info.h" -#include "string_formatter.h" -#include "filesystem.h" -#include "lightmap.h" +#include "player.h" #include "rng.h" +#include "sdl_wrappers.h" +#include "string_formatter.h" +#include "translations.h" + +#if defined(_MSC_VER) && defined(USE_VCPKG) +# include +#else +# include +#endif + #include +#include #include -#include #include -#include -#include +#include #include #include -#include +#include #ifdef __linux__ # include // getenv()/setenv() @@ -45,12 +51,12 @@ # endif #endif -#include -#include -#include - #ifdef SDL_SOUND -# include +# if defined(_MSC_VER) && defined(USE_VCPKG) +# include +# else +# include +# endif # include "sounds.h" #endif @@ -79,7 +85,7 @@ extern bool tile_iso; #ifdef SDL_SOUND /** The music we're currently playing. */ Mix_Music *current_music = NULL; -std::string current_playlist = ""; +std::string current_playlist; size_t current_playlist_at = 0; size_t absolute_playlist_at = 0; std::vector playlist_indexes; @@ -93,7 +99,7 @@ struct sound_effect { // Operator overloaded to leverage deletion API. void operator()( Mix_Chunk* const c ) const { Mix_FreeChunk( c ); - }; + } }; std::unique_ptr chunk; }; @@ -116,34 +122,9 @@ struct music_playlist { std::map playlists; -std::string current_soundpack_path = ""; +std::string current_soundpack_path; #endif -struct SDL_Renderer_deleter { - void operator()( SDL_Renderer * const renderer ) { - SDL_DestroyRenderer( renderer ); - } -}; -using SDL_Renderer_Ptr = std::unique_ptr; -struct SDL_Window_deleter { - void operator()( SDL_Window * const window ) { - SDL_DestroyWindow( window ); - } -}; -using SDL_Window_Ptr = std::unique_ptr; -struct SDL_PixelFormat_deleter { - void operator()( SDL_PixelFormat * const format ) { - SDL_FreeFormat( format ); - } -}; -using SDL_PixelFormat_Ptr = std::unique_ptr; -struct TTF_Font_deleter { - void operator()( TTF_Font * const font ) { - TTF_CloseFont( font ); - } -}; -using TTF_Font_Ptr = std::unique_ptr; - /** * A class that draws a single character on screen. */ @@ -159,7 +140,7 @@ class Font { * Draw character t at (x,y) on the screen, * using (curses) color. */ - virtual void OutputChar(std::string ch, int x, int y, unsigned char color) = 0; + virtual void OutputChar(const std::string &ch, int x, int y, unsigned char color) = 0; virtual void draw_ascii_lines(unsigned char line_id, int drawx, int drawy, int FG) const; bool draw_window( const catacurses::window &win ); bool draw_window( const catacurses::window &win, int offsetx, int offsety ); @@ -183,7 +164,7 @@ class CachedTTFFont : public Font { CachedTTFFont( int w, int h, std::string typeface, int fontsize, bool fontblending ); ~CachedTTFFont() override = default; - virtual void OutputChar(std::string ch, int x, int y, unsigned char color) override; + virtual void OutputChar(const std::string &ch, int x, int y, unsigned char color) override; protected: SDL_Texture_Ptr create_glyph( const std::string &ch, int color ); @@ -219,7 +200,7 @@ class BitmapFont : public Font { BitmapFont( int w, int h, const std::string &path ); ~BitmapFont() override = default; - virtual void OutputChar(std::string ch, int x, int y, unsigned char color) override; + virtual void OutputChar(const std::string &ch, int x, int y, unsigned char color) override; void OutputChar(long t, int x, int y, unsigned char color); virtual void draw_ascii_lines(unsigned char line_id, int drawx, int drawy, int FG) const override; protected: @@ -237,7 +218,7 @@ static SDL_Renderer_Ptr renderer; static SDL_PixelFormat_Ptr format; static SDL_Texture_Ptr display_buffer; #ifdef __ANDROID__ -static SDL_Texture *touch_joystick; +static SDL_Texture_Ptr touch_joystick; #endif static int WindowWidth; //Width of the actual window, not the curses window static int WindowHeight; //Height of the actual window, not the curses window @@ -323,11 +304,11 @@ static bool operator==( const cata_cursesport::WINDOW *const lhs, const catacurs void ClearScreen() { - SDL_SetRenderDrawColor(renderer.get(), 0, 0, 0, 255); - SDL_RenderClear( renderer.get() ); + SetRenderDrawColor( renderer, 0, 0, 0, 255); + RenderClear( renderer ); } -bool InitSDL() +void InitSDL() { int init_flags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER; int ret; @@ -347,49 +328,33 @@ bool InitSDL() #endif ret = SDL_Init( init_flags ); - if( ret != 0 ) { - dbg( D_ERROR ) << "SDL_Init failed with " << ret << ", error: " << SDL_GetError(); - return false; - } + throwErrorIf( ret != 0, "SDL_Init failed" ); + ret = TTF_Init(); - if( ret != 0 ) { - dbg( D_ERROR ) << "TTF_Init failed with " << ret << ", error: " << TTF_GetError(); - return false; - } + throwErrorIf( ret != 0, "TTF_Init failed" ); + + // cata_tiles won't be able to load the tiles, but the normal SDL + // code will display fine. ret = IMG_Init( IMG_INIT_PNG ); - if( (ret & IMG_INIT_PNG) != IMG_INIT_PNG ) { - dbg( D_ERROR ) << "IMG_Init failed to initialize PNG support, tiles won't work, error: " << IMG_GetError(); - // cata_tiles won't be able to load the tiles, but the normal SDL - // code will display fine. - } + printErrorIf( ( ret & IMG_INIT_PNG ) != IMG_INIT_PNG, "IMG_Init failed to initialize PNG support, tiles won't work" ); ret = SDL_InitSubSystem( SDL_INIT_JOYSTICK ); - if( ret != 0 ) { - dbg( D_WARNING ) << "Initializing joystick subsystem failed with " << ret << ", error: " << - SDL_GetError() << "\nIf you don't have a joystick plugged in, this is probably fine."; - } + printErrorIf( ret != 0, "Initializing joystick subsystem failed" ); //SDL2 has no functionality for INPUT_DELAY, we would have to query it manually, which is expensive //SDL2 instead uses the OS's Input Delay. atexit(SDL_Quit); - - return true; } bool SetupRenderTarget() { - if( SDL_SetRenderDrawBlendMode( renderer.get(), SDL_BLENDMODE_NONE ) != 0 ) { - dbg( D_ERROR ) << "SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE) failed: " << SDL_GetError(); - // Ignored for now, rendering could still work - } + SetRenderDrawBlendMode( renderer, SDL_BLENDMODE_NONE ); display_buffer.reset( SDL_CreateTexture( renderer.get(), SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, WindowWidth, WindowHeight ) ); - if( !display_buffer ) { - dbg( D_ERROR ) << "Failed to create window buffer: " << SDL_GetError(); + if( printErrorIf( !display_buffer, "Failed to create window buffer" ) ) { return false; } - if( SDL_SetRenderTarget( renderer.get(), display_buffer.get() ) != 0 ) { - dbg( D_ERROR ) << "Failed to select render target: " << SDL_GetError(); + if( printErrorIf( SDL_SetRenderTarget( renderer.get(), display_buffer.get() ) != 0, "SDL_SetRenderTarget failed" ) ) { return false; } ClearScreen(); @@ -398,7 +363,7 @@ bool SetupRenderTarget() } //Registers, creates, and shows the Window!! -bool WinCreate() +void WinCreate() { std::string version = string_format("Cataclysm: Dark Days Ahead - %s", getVersionString()); @@ -445,11 +410,8 @@ bool WinCreate() WindowHeight, window_flags ) ); + throwErrorIf( !::window, "SDL_CreateWindow failed" ); - if( !::window ) { - dbg(D_ERROR) << "SDL_CreateWindow failed: " << SDL_GetError(); - return false; - } #ifndef __ANDROID__ // On Android SDL seems janky in windowed mode so we're fullscreen all the time. // Fullscreen mode is now modified so it obeys terminal width/height, rather than @@ -474,10 +436,7 @@ bool WinCreate() const Uint32 wformat = SDL_GetWindowPixelFormat( ::window.get() ); format.reset( SDL_AllocFormat( wformat ) ); - if( !format ) { - dbg(D_ERROR) << "SDL_AllocFormat(" << wformat << ") failed: " << SDL_GetError(); - return false; - } + throwErrorIf( !format, "SDL_AllocFormat failed" ); bool software_renderer = get_option( "SOFTWARE_RENDERING" ); if( !software_renderer ) { @@ -485,8 +444,7 @@ bool WinCreate() renderer.reset( SDL_CreateRenderer( ::window.get(), -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_TARGETTEXTURE ) ); - if( !renderer ) { - dbg( D_ERROR ) << "Failed to initialize accelerated renderer, falling back to software rendering: " << SDL_GetError(); + if( printErrorIf( !renderer, "Failed to initialize accelerated renderer, falling back to software rendering" ) ) { software_renderer = true; } else if( !SetupRenderTarget() ) { dbg( D_ERROR ) << "Failed to initialize display buffer under accelerated rendering, falling back to software rendering."; @@ -500,13 +458,8 @@ bool WinCreate() SDL_SetHint( SDL_HINT_FRAMEBUFFER_ACCELERATION, "1" ); } renderer.reset( SDL_CreateRenderer( ::window.get(), -1, SDL_RENDERER_SOFTWARE | SDL_RENDERER_TARGETTEXTURE ) ); - if( !renderer ) { - dbg( D_ERROR ) << "Failed to initialize software renderer: " << SDL_GetError(); - return false; - } else if( !SetupRenderTarget() ) { - dbg( D_ERROR ) << "Failed to initialize display buffer under software rendering, unable to continue."; - return false; - } + throwErrorIf( !renderer, "Failed to initialize software renderer" ); + throwErrorIf( !SetupRenderTarget(), "Failed to initialize display buffer under software rendering, unable to continue." ); } SDL_SetWindowMinimumSize( ::window.get(), fontwidth * 80, fontheight * 24 ); @@ -518,15 +471,7 @@ bool WinCreate() } // Load virtual joystick texture - SDL_Surface* touch_joystick_surface = IMG_Load( "android/joystick.png" ); - if ( !touch_joystick_surface ) { - throw std::runtime_error(IMG_GetError()); - } - touch_joystick = SDL_CreateTextureFromSurface( renderer.get(), touch_joystick_surface ); - if( !touch_joystick ) { - dbg( D_ERROR) << "failed to create texture: " << SDL_GetError(); - } - SDL_FreeSurface( touch_joystick_surface ); + touch_joystick = CreateTextureFromSurface( renderer, load_image( "android/joystick.png" ) ); #endif ClearScreen(); @@ -547,13 +492,9 @@ bool WinCreate() dbg( D_WARNING ) << "You have more than one gamepads/joysticks plugged in, only the first will be used."; } joystick = SDL_JoystickOpen(0); - if( joystick == nullptr ) { - dbg( D_ERROR ) << "Opening the first joystick failed: " << SDL_GetError(); - } else { - const int ret = SDL_JoystickEventState(SDL_ENABLE); - if( ret < 0 ) { - dbg( D_ERROR ) << "SDL_JoystickEventState(SDL_ENABLE) failed: " << SDL_GetError(); - } + printErrorIf( joystick == nullptr, "SDL_JoystickOpen failed" ); + if( joystick ) { + printErrorIf( SDL_JoystickEventState(SDL_ENABLE) < 0, "SDL_JoystickEventState(SDL_ENABLE) failed" ); } } else { joystick = NULL; @@ -561,26 +502,21 @@ bool WinCreate() // Set up audio mixer. init_sound(); - - return true; } // forward declaration void load_soundset(); -void cleanup_sound(); void WinDestroy() { #ifdef __ANDROID__ - if ( touch_joystick ) { - SDL_DestroyTexture( touch_joystick ); - touch_joystick = NULL; - } + touch_joystick.reset(); #endif #ifdef SDL_SOUND // De-allocate all loaded sound. - cleanup_sound(); + sound_effects_p.clear(); + playlists.clear(); Mix_CloseAudio(); #endif tilecontext.reset(); @@ -596,13 +532,8 @@ void WinDestroy() } inline void FillRectDIB(SDL_Rect &rect, unsigned char color) { - if( SDL_SetRenderDrawColor( renderer.get(), windowsPalette[color].r, windowsPalette[color].g, - windowsPalette[color].b, 255 ) != 0 ) { - dbg(D_ERROR) << "SDL_SetRenderDrawColor failed: " << SDL_GetError(); - } - if( SDL_RenderFillRect( renderer.get(), &rect ) != 0 ) { - dbg(D_ERROR) << "SDL_RenderFillRect failed: " << SDL_GetError(); - } + SetRenderDrawColor( renderer, windowsPalette[color].r, windowsPalette[color].g, windowsPalette[color].b, 255 ); + RenderFillRect( renderer, &rect ); } //The following 3 methods use mem functions for fast drawing @@ -658,12 +589,7 @@ SDL_Texture_Ptr CachedTTFFont::create_glyph( const std::string &ch, const int co const int wf = utf8_wrapper( ch ).display_width(); // Note: bits per pixel must be 8 to be synchronized with the surface // that TTF_RenderGlyph above returns. This is important for SDL_BlitScaled - SDL_Surface_Ptr surface( SDL_CreateRGBSurface( 0, fontwidth * wf, fontheight, 32, - rmask, gmask, bmask, amask ) ); - if( !surface ) { - dbg( D_ERROR ) << "CreateRGBSurface failed: " << SDL_GetError(); - return SDL_Texture_Ptr( SDL_CreateTextureFromSurface( renderer.get(), sglyph.get() ) ); - } + SDL_Surface_Ptr surface = CreateRGBSurface( 0, fontwidth * wf, fontheight, 32, rmask, gmask, bmask, amask ); SDL_Rect src_rect = { 0, 0, sglyph->w, sglyph->h }; SDL_Rect dst_rect = { 0, 0, fontwidth * wf, fontheight }; if (src_rect.w < dst_rect.w) { @@ -681,16 +607,14 @@ SDL_Texture_Ptr CachedTTFFont::create_glyph( const std::string &ch, const int co src_rect.h = dst_rect.h; } - if ( SDL_BlitSurface( sglyph.get(), &src_rect, surface.get(), &dst_rect ) != 0 ) { - dbg( D_ERROR ) << "SDL_BlitSurface failed: " << SDL_GetError(); - } else { + if( !printErrorIf( SDL_BlitSurface( sglyph.get(), &src_rect, surface.get(), &dst_rect ) != 0, "SDL_BlitSurface failed" ) ) { sglyph = std::move( surface ); } - return SDL_Texture_Ptr( SDL_CreateTextureFromSurface( renderer.get(), sglyph.get() ) ); + return CreateTextureFromSurface( renderer, sglyph ); } -void CachedTTFFont::OutputChar(std::string ch, int const x, int const y, unsigned char const color) +void CachedTTFFont::OutputChar(const std::string &ch, int const x, int const y, unsigned char const color) { key_t key {std::move(ch), static_cast(color & 0xf)}; @@ -713,16 +637,14 @@ void CachedTTFFont::OutputChar(std::string ch, int const x, int const y, unsigne if (opacity != 1.0f) SDL_SetTextureAlphaMod(value.texture.get(), opacity * 255.0f); #endif - if( SDL_RenderCopy( renderer.get(), value.texture.get(), nullptr, &rect ) ) { - dbg(D_ERROR) << "SDL_RenderCopy failed: " << SDL_GetError(); - } + RenderCopy( renderer, value.texture, nullptr, &rect); #ifdef __ANDROID__ if (opacity != 1.0f) SDL_SetTextureAlphaMod(value.texture.get(), 255); #endif } -void BitmapFont::OutputChar(std::string ch, int x, int y, unsigned char color) +void BitmapFont::OutputChar(const std::string &ch, int x, int y, unsigned char color) { int len = ch.length(); const char *s = ch.c_str(); @@ -746,9 +668,7 @@ void BitmapFont::OutputChar(long t, int x, int y, unsigned char color) if (opacity != 1.0f) SDL_SetTextureAlphaMod(ascii[color].get(), opacity * 255); #endif - if( SDL_RenderCopy( renderer.get(), ascii[color].get(), &src, &rect ) != 0 ) { - dbg(D_ERROR) << "SDL_RenderCopy failed: " << SDL_GetError(); - } + RenderCopy( renderer, ascii[color], &src, &rect ); #ifdef __ANDROID__ if (opacity != 1.0f) SDL_SetTextureAlphaMod(ascii[color].get(), 255); @@ -834,28 +754,22 @@ void refresh_display() // Select default target (the window), copy rendered buffer // there, present it, select the buffer as target again. - if( SDL_SetRenderTarget( renderer.get(), NULL ) != 0 ) { - dbg(D_ERROR) << "SDL_SetRenderTarget failed: " << SDL_GetError(); - } + SetRenderTarget( renderer, NULL ); #ifdef __ANDROID__ SDL_Rect dstrect = get_android_render_rect( TERMINAL_WIDTH * fontwidth, TERMINAL_HEIGHT * fontheight ); - SDL_SetRenderDrawColor(renderer.get(), 0, 0, 0, 255); - SDL_RenderClear( renderer.get() ); - if( SDL_RenderCopy( renderer.get(), display_buffer.get(), NULL, &dstrect ) != 0 ) { + SetRenderDrawColor( renderer, 0, 0, 0, 255 ); + RenderClear( renderer ); + RenderCopy( renderer, display_buffer, NULL, &dstrect ); #else - if( SDL_RenderCopy( renderer.get(), display_buffer.get(), NULL, NULL ) != 0 ) { + RenderCopy( renderer, display_buffer, NULL, NULL ); #endif - dbg(D_ERROR) << "SDL_RenderCopy failed: " << SDL_GetError(); - } #ifdef __ANDROID__ draw_terminal_size_preview(); draw_quick_shortcuts(); draw_virtual_joystick(); #endif SDL_RenderPresent( renderer.get() ); - if( SDL_SetRenderTarget( renderer.get(), display_buffer.get() ) != 0 ) { - dbg(D_ERROR) << "SDL_SetRenderTarget failed: " << SDL_GetError(); - } + SetRenderTarget( renderer, display_buffer ); } // only update if the set interval has elapsed @@ -872,9 +786,7 @@ static void try_sdl_update() //for resetting the render target after updating texture caches in cata_tiles.cpp void set_displaybuffer_rendertarget() { - if( SDL_SetRenderTarget( renderer.get(), display_buffer.get() ) != 0 ) { - dbg(D_ERROR) << "SDL_SetRenderTarget failed: " << SDL_GetError(); - } + SetRenderTarget( renderer, display_buffer ); } // Populate a map with the available video displays and their name @@ -1408,7 +1320,7 @@ int HandleDPad() * -1 when a ALT+number sequence has been started, * or something that a call to ncurses getch would return. */ -long sdl_keysym_to_curses( SDL_Keysym keysym ) +long sdl_keysym_to_curses( const SDL_Keysym &keysym ) { if( get_option( "DIAG_MOVE_WITH_MODIFIERS" ) ) { @@ -1538,8 +1450,7 @@ void toggle_fullscreen_window() static int restore_win_h = get_option( "TERMINAL_Y" ) * fontheight; if ( fullscreen ) { - if( SDL_SetWindowFullscreen( window.get(), 0 ) != 0 ) { - dbg(D_ERROR) << "SDL_SetWinodwFullscreen failed: " << SDL_GetError(); + if( printErrorIf( SDL_SetWindowFullscreen( window.get(), 0 ) != 0, "SDL_SetWindowFullscreen failed" ) ) { return; } SDL_RestoreWindow( window.get() ); @@ -1548,8 +1459,7 @@ void toggle_fullscreen_window() } else { restore_win_w = WindowWidth; restore_win_h = WindowHeight; - if( SDL_SetWindowFullscreen( window.get(), SDL_WINDOW_FULLSCREEN_DESKTOP ) != 0 ) { - dbg(D_ERROR) << "SDL_SetWinodwFullscreen failed: " << SDL_GetError(); + if( printErrorIf( SDL_SetWindowFullscreen( window.get(), SDL_WINDOW_FULLSCREEN_DESKTOP ) != 0, "SDL_SetWindowFullscreen failed" ) ) { return; } } @@ -1856,10 +1766,10 @@ void draw_terminal_size_preview() preview_terminal_height = get_option("TERMINAL_Y") * fontheight; preview_terminal_change_time = SDL_GetTicks(); } - SDL_SetRenderDrawColor(renderer.get(), 255, 255, 255, 255); + SetRenderDrawColor( renderer, 255, 255, 255, 255 ); SDL_Rect previewrect = get_android_render_rect(preview_terminal_width, preview_terminal_height); SDL_RenderDrawRect(renderer.get(), &previewrect); - SDL_SetRenderDrawColor(renderer.get(), 0, 0, 0, 255); + SetRenderDrawColor( renderer, 0, 0, 0, 255 ); } } @@ -1875,7 +1785,7 @@ void draw_quick_shortcuts() { std::string& category = touch_input_context.get_category(); bool is_default_mode = category == "DEFAULTMODE"; quick_shortcuts_t& qsl = quick_shortcuts_map[get_quick_shortcut_name(category)]; - if (qsl.size() == 0 || touch_input_context.get_registered_manual_keys().size() > 0) { + if (qsl.empty() || !touch_input_context.get_registered_manual_keys().empty() ) { if (category == "DEFAULTMODE") { const std::string default_gameplay_shortcuts = get_option("ANDROID_SHORTCUT_DEFAULTS"); for (const auto& c : default_gameplay_shortcuts) @@ -1885,7 +1795,7 @@ void draw_quick_shortcuts() { // This is an empty quick-shortcuts list, let's pre-populate it as best we can from the input context // For manual key lists, force-clear them each time since there's no point allowing custom bindings anyway - if (touch_input_context.get_registered_manual_keys().size() > 0) + if (!touch_input_context.get_registered_manual_keys().empty()) qsl.clear(); // First process registered actions @@ -1966,28 +1876,28 @@ void draw_quick_shortcuts() { else rect = { (int)(i * width + border), (int)(WindowHeight - height), (int)(width - border*2), (int)(height) }; if (hovered) - SDL_SetRenderDrawColor( renderer.get(), 0, 0, 0, 255 ); + SetRenderDrawColor( renderer, 0, 0, 0, 255 ); else - SDL_SetRenderDrawColor( renderer.get(), 0, 0, 0, get_option("ANDROID_SHORTCUT_OPACITY_BG")*0.01f*255.0f ); - SDL_SetRenderDrawBlendMode( renderer.get(), SDL_BLENDMODE_BLEND ); - SDL_RenderFillRect( renderer.get(), &rect ); + SetRenderDrawColor( renderer, 0, 0, 0, get_option( "ANDROID_SHORTCUT_OPACITY_BG" ) * 0.01f * 255.0f ); + SetRenderDrawBlendMode( renderer, SDL_BLENDMODE_BLEND ); + RenderFillRect( renderer, &rect ); if (hovered) { // draw a second button hovering above the first one if (shortcut_right) rect = { WindowWidth - (int)((i+1) * width + border), (int)(WindowHeight - height * 2.2f), (int)(width - border*2), (int)(height) }; else rect = { (int)(i * width + border), (int)(WindowHeight - height * 2.2f), (int)(width - border*2), (int)(height) }; - SDL_SetRenderDrawColor( renderer.get(), 0, 0, 196, 255 ); - SDL_RenderFillRect( renderer.get(), &rect ); + SetRenderDrawColor( renderer, 0, 0, 196, 255 ); + RenderFillRect( renderer, &rect ); if (show_hint) { // draw a backdrop for the hint text rect = { 0, (int)((WindowHeight - height)*0.5f), (int)WindowWidth, (int)height }; - SDL_SetRenderDrawColor( renderer.get(), 0, 0, 0, get_option("ANDROID_SHORTCUT_OPACITY_BG")*0.01f*255.0f ); - SDL_RenderFillRect( renderer.get(), &rect ); + SetRenderDrawColor( renderer, 0, 0, 0, get_option( "ANDROID_SHORTCUT_OPACITY_BG" ) * 0.01f * 255.0f ); + RenderFillRect( renderer, &rect ); } } - SDL_SetRenderDrawBlendMode( renderer.get(), SDL_BLENDMODE_NONE ); + SetRenderDrawBlendMode( renderer, SDL_BLENDMODE_NONE ); SDL_RenderSetScale( renderer.get(), text_scale, text_scale); int text_x, text_y; if (shortcut_right) @@ -2028,7 +1938,6 @@ void draw_quick_shortcuts() { } } - void draw_virtual_joystick() { // Bail out if we don't need to draw the joystick @@ -2039,7 +1948,7 @@ void draw_virtual_joystick() { is_two_finger_touch) return; - SDL_SetTextureAlphaMod( touch_joystick, get_option("ANDROID_VIRTUAL_JOYSTICK_OPACITY")*0.01f*255.0f ); + SDL_SetTextureAlphaMod( touch_joystick.get(), get_option("ANDROID_VIRTUAL_JOYSTICK_OPACITY")*0.01f*255.0f ); float longest_window_edge = std::max(WindowWidth, WindowHeight); @@ -2049,19 +1958,19 @@ void draw_virtual_joystick() { dstrect.w = dstrect.h = ( get_option("ANDROID_DEADZONE_RANGE") ) * longest_window_edge * 2; dstrect.x = finger_down_x - dstrect.w/2; dstrect.y = finger_down_y - dstrect.h/2; - SDL_RenderCopy( renderer.get(), touch_joystick, NULL, &dstrect ); + RenderCopy( renderer, touch_joystick, NULL, &dstrect ); // Draw repeat delay range dstrect.w = dstrect.h = ( get_option("ANDROID_DEADZONE_RANGE") + get_option("ANDROID_REPEAT_DELAY_RANGE") ) * longest_window_edge * 2; dstrect.x = finger_down_x - dstrect.w/2; dstrect.y = finger_down_y - dstrect.h/2; - SDL_RenderCopy( renderer.get(), touch_joystick, NULL, &dstrect ); + RenderCopy( renderer, touch_joystick, NULL, &dstrect ); // Draw current touch position (50% size of repeat delay range) dstrect.w = dstrect.h = dstrect.w/2; dstrect.x = finger_down_x + (finger_curr_x - finger_down_x)/2 - dstrect.w/2; dstrect.y = finger_down_y + (finger_curr_y - finger_down_y)/2 - dstrect.h/2; - SDL_RenderCopy( renderer.get(), touch_joystick, NULL, &dstrect ); + RenderCopy( renderer, touch_joystick, NULL, &dstrect ); } @@ -2255,7 +2164,7 @@ void CheckMessages() } // Copy the current input context - if (input_context::input_context_stack.size() > 0) { + if (!input_context::input_context_stack.empty() ) { input_context* new_input_context = *--input_context::input_context_stack.end(); if (new_input_context && *new_input_context != touch_input_context) { @@ -2910,7 +2819,7 @@ static void font_folder_list(std::ofstream& fout, const std::string &path, std:: bitmap_fonts.insert(fami); } else { // Font in set. Add filename to family string size_t start = f.find_last_of("/\\"); - size_t end = f.find_last_of("."); + size_t end = f.find_last_of('.'); if (start != std::string::npos && end != std::string::npos) { fout << " [" << f.substr(start + 1, end - start - 1) + "]"; } else { @@ -2966,7 +2875,7 @@ static void save_font_list() #endif } -static std::string find_system_font( const std::string &name, int& faceIndex ) +static cata::optional find_system_font( const std::string &name, int& faceIndex ) { const std::string fontlist_path = FILENAMES["fontlist"]; std::ifstream fin(fontlist_path.c_str()); @@ -2980,7 +2889,7 @@ static std::string find_system_font( const std::string &name, int& faceIndex ) fin.open(fontlist_path.c_str()); if( !fin ) { dbg( D_ERROR ) << "Can't open or create fontlist file " << fontlist_path; - return ""; + return cata::nullopt; } } else { // Write out fontlist to the new location. @@ -2999,7 +2908,7 @@ static std::string find_system_font( const std::string &name, int& faceIndex ) } } - return ""; + return cata::nullopt; } // bitmap font size test @@ -3051,21 +2960,17 @@ void catacurses::init_interface() ::fontwidth = fl.fontwidth; ::fontheight = fl.fontheight; - if(!InitSDL()) { - throw std::runtime_error( "InitSDL failed" ); - } + InitSDL(); find_videodisplays(); TERMINAL_WIDTH = get_option( "TERMINAL_X" ); TERMINAL_HEIGHT = get_option( "TERMINAL_Y" ); - if(!WinCreate()) { - throw std::runtime_error( "WinCreate failed" ); //@todo: throw from WinCreate - } + WinCreate(); dbg( D_INFO ) << "Initializing SDL Tiles context"; - tilecontext.reset( new cata_tiles( renderer.get() ) ); + tilecontext.reset( new cata_tiles( renderer ) ); try { tilecontext->load_tileset( get_option( "TILES" ), true ); } catch( const std::exception &err ) { @@ -3180,7 +3085,7 @@ input_event input_manager::get_input_event() { else if (inputdelay > 0) { unsigned long starttime=SDL_GetTicks(); - unsigned long endtime; + unsigned long endtime = 0; bool timedout = false; do { @@ -3266,8 +3171,8 @@ cata::optional input_context::get_coordinates( const catacurses::windo int x, y; if ( tile_iso && use_tiles ) { - const int screen_column = round( (float) ( coordinate_x - win_left - (( win_right - win_left ) / 2 + win_left ) ) / ( fw / 2 ) ); - const int screen_row = round( (float) ( coordinate_y - win_top - ( win_bottom - win_top ) / 2 + win_top ) / ( fw / 4 ) ); + const int screen_column = round( static_cast( coordinate_x - win_left - ( ( win_right - win_left ) / 2 + win_left ) ) / ( fw / 2 ) ); + const int screen_row = round( static_cast( coordinate_y - win_top - ( win_bottom - win_top ) / 2 + win_top ) / ( fw / 4 ) ); const int selected_x = ( screen_column - screen_row ) / 2; const int selected_y = ( screen_row + screen_column ) / 2; x = g->ter_view_x + selected_x; @@ -3295,10 +3200,8 @@ BitmapFont::BitmapFont( const int w, const int h, const std::string &typeface ) : Font( w, h ) { dbg( D_INFO ) << "Loading bitmap font [" + typeface + "]." ; - SDL_Surface_Ptr asciiload( IMG_Load( typeface.c_str() ) ); - if( !asciiload ) { - throw std::runtime_error(IMG_GetError()); - } + SDL_Surface_Ptr asciiload = load_image( typeface.c_str() ); + assert( asciiload ); if (asciiload->w * asciiload->h < (fontwidth * fontheight * 256)) { throw std::runtime_error("bitmap for font is to small"); } @@ -3317,7 +3220,7 @@ BitmapFont::BitmapFont( const int w, const int h, const std::string &typeface ) for (size_t a = 0; a < std::tuple_size::value - 1; ++a) { SDL_LockSurface( ascii_surf[a].get() ); int size = ascii_surf[a]->h * ascii_surf[a]->w; - Uint32 *pixels = (Uint32 *)ascii_surf[a]->pixels; + Uint32 *pixels = static_cast( ascii_surf[a]->pixels ); Uint32 color = (windowsPalette[a].r << 16) | (windowsPalette[a].g << 8) | windowsPalette[a].b; for(int i = 0; i < size; i++) { if(pixels[i] == 0xFFFFFF) { @@ -3330,7 +3233,7 @@ BitmapFont::BitmapFont( const int w, const int h, const std::string &typeface ) //convert ascii_surf to SDL_Texture for( size_t a = 0; a < std::tuple_size::value; ++a) { - ascii[a].reset( SDL_CreateTextureFromSurface( renderer.get(), ascii_surf[a].get() ) ); + ascii[a] = CreateTextureFromSurface( renderer, ascii_surf[a] ); } } @@ -3381,9 +3284,8 @@ CachedTTFFont::CachedTTFFont( const int w, const int h, std::string typeface, in , fontblending( fontblending ) { int faceIndex = 0; - const std::string sysfnt = find_system_font(typeface, faceIndex); - if (!sysfnt.empty()) { - typeface = sysfnt; + if( const cata::optional sysfnt = find_system_font( typeface, faceIndex ) ) { + typeface = *sysfnt; dbg( D_INFO ) << "Using font [" + typeface + "]." ; } //make fontdata compatible with wincurse @@ -3574,7 +3476,7 @@ static std::unordered_map unique_chunks; static Mix_Chunk* copy_chunk(const Mix_Chunk* ref){ // SDL_malloc to match up with Mix_FreeChunk's SDL_free call // to free the Mix_Chunk object memory - Mix_Chunk *nchunk = (Mix_Chunk*)SDL_malloc(sizeof(Mix_Chunk)); + Mix_Chunk *nchunk = static_cast( SDL_malloc( sizeof( Mix_Chunk ) ) ); // Assign as copy of ref (*nchunk) = *ref; @@ -3678,7 +3580,7 @@ const sound_effect* find_random_effect( const std::string &id, const std::string // Deletes the dynamically created chunk (if such a chunk had been played). void cleanup_when_channel_finished( int /* channel */, void *udata ) { - Mix_Chunk *chunk = ( Mix_Chunk * )udata; + Mix_Chunk *chunk = static_cast( udata ); free( chunk->abuf ); free( chunk ); } @@ -3693,23 +3595,23 @@ Mix_Chunk *do_pitch_shift( Mix_Chunk *s, float pitch ) { Mix_Chunk *result; Uint32 s_in = s->alen / 4; - Uint32 s_out = ( Uint32 )( ( float )s_in * pitch ); - float pitch_real = ( float )s_out / ( float )s_in; + Uint32 s_out = static_cast( static_cast( s_in ) * pitch ); + float pitch_real = static_cast( s_out ) / static_cast( s_in ); Uint32 i, j; - result = ( Mix_Chunk * )malloc( sizeof( Mix_Chunk ) ); + result = static_cast( malloc( sizeof( Mix_Chunk ) ) ); result->allocated = 1; result->alen = s_out * 4; - result->abuf = ( Uint8 * )malloc( result->alen * sizeof( Uint8 ) ); + result->abuf = static_cast( malloc( result->alen * sizeof( Uint8 ) ) ); result->volume = s->volume; for( i = 0; i < s_out; i++ ) { - Sint16 lt; - Sint16 rt; - Sint16 lt_out; - Sint16 rt_out; + Sint16 lt = 0; + Sint16 rt = 0; + Sint16 lt_out = 0; + Sint16 rt_out = 0; Sint64 lt_avg = 0; Sint64 rt_avg = 0; - Uint32 begin = ( Uint32 )( ( float )i / pitch_real ); - Uint32 end = ( Uint32 )( ( float )( i + 1 ) / pitch_real ); + Uint32 begin = static_cast( static_cast( i ) / pitch_real ); + Uint32 end = static_cast( static_cast( i + 1 ) / pitch_real ); // check for boundary case if( end > 0 && ( end >= ( s->alen / 4 ) ) ) { @@ -3722,12 +3624,12 @@ Mix_Chunk *do_pitch_shift( Mix_Chunk *s, float pitch ) lt_avg += lt; rt_avg += rt; } - lt_out = ( Sint16 )( ( float )lt_avg / ( float )( end - begin + 1 ) ); - rt_out = ( Sint16 )( ( float )rt_avg / ( float )( end - begin + 1 ) ); - result->abuf[( 4 * i ) + 1] = ( Uint8 )( ( lt_out >> 8 ) & 0xFF ); - result->abuf[( 4 * i ) + 0] = ( Uint8 )( lt_out & 0xFF ); - result->abuf[( 4 * i ) + 3] = ( Uint8 )( ( rt_out >> 8 ) & 0xFF ); - result->abuf[( 4 * i ) + 2] = ( Uint8 )( rt_out & 0xFF ); + lt_out = static_cast( static_cast( lt_avg ) / static_cast( end - begin + 1 ) ); + rt_out = static_cast( static_cast( rt_avg ) / static_cast( end - begin + 1 ) ); + result->abuf[( 4 * i ) + 1] = static_cast( ( lt_out >> 8 ) & 0xFF ); + result->abuf[( 4 * i ) + 0] = static_cast( lt_out & 0xFF ); + result->abuf[( 4 * i ) + 3] = static_cast( ( rt_out >> 8 ) & 0xFF ); + result->abuf[( 4 * i ) + 2] = static_cast( rt_out & 0xFF ); } return result; } @@ -3840,11 +3742,4 @@ void load_soundset() { #endif } -void cleanup_sound() { -#ifdef SDL_SOUND - sound_effects_p.clear(); - playlists.clear(); -#endif -} - #endif // TILES diff --git a/src/shadowcasting.h b/src/shadowcasting.h index 6034a2bfaae8d..2d74f3b92b5e3 100644 --- a/src/shadowcasting.h +++ b/src/shadowcasting.h @@ -5,8 +5,70 @@ #include "enums.h" #include "game_constants.h" +#include +#include #include +// For light we store four values, depending on the direction that the light +// comes from. This allows us to determine whether the side of the wall the +// player is looking at is lit. +// For non-opaque tiles direction doesn't matter so we just use the single +// default_ value. +enum class quadrant { + NE, SE, SW, NW, + default_ = NE +}; + +struct four_quadrants { + four_quadrants() = default; + explicit constexpr four_quadrants( float v ) : values{{v, v, v, v}} {} + + std::array values; + + float &operator[]( quadrant q ) { + return values[static_cast( q )]; + } + float operator[]( quadrant q ) const { + return values[static_cast( q )]; + } + void fill( float v ) { + std::fill( values.begin(), values.end(), v ); + } + float max() const { + return *std::max_element( values.begin(), values.end() ); + } + std::string to_string() const; + + friend four_quadrants operator*( const four_quadrants &l, const four_quadrants &r ) { + four_quadrants result; + std::transform( l.values.begin(), l.values.end(), r.values.begin(), + result.values.begin(), std::multiplies() ); + return result; + } + + friend four_quadrants elementwise_max( const four_quadrants &l, const four_quadrants &r ) { + four_quadrants result; + std::transform( l.values.begin(), l.values.end(), r.values.begin(), + result.values.begin(), []( float l, float r ) { + return std::max( l, r ); + } ); + return result; + } + + friend four_quadrants elementwise_max( const four_quadrants &l, const float r ) { + four_quadrants result( l ); + for( float &v : result.values ) { + // This looks like it should be v = std::max( v, r ) doesn't it? + // It turns out this is one simple trick that mingw-w64 HATES, + // triggering constant crashes when the above code was used. + if( v < r ) { + v = r; + } + } + return result; + } +}; + // Hoisted to header and inlined so the test in tests/shadowcasting_test.cpp can use it. // Beer-Lambert law says attenuation is going to be equal to // 1 / (e^al) where a = coefficient of absorption and l = length. @@ -14,22 +76,31 @@ // We merge all of the absorption values by taking their cumulative average. inline float sight_calc( const float &numerator, const float &transparency, const int &distance ) { - return numerator / ( float )exp( transparency * distance ); + return numerator / static_cast( exp( transparency * distance ) ); } inline bool sight_check( const float &transparency, const float &/*intensity*/ ) { return transparency > LIGHT_TRANSPARENCY_SOLID; } +inline void update_light( float &update, const float &new_value, quadrant ) +{ + update = std::max( update, new_value ); +} +inline void update_light_quadrants( four_quadrants &update, const float &new_value, quadrant q ) +{ + update[q] = std::max( update[q], new_value ); +} inline float accumulate_transparency( const float &cumulative_transparency, const float ¤t_transparency, const int &distance ) { return ( ( distance - 1 ) * cumulative_transparency + current_transparency ) / distance; } -template -void castLightAll( T( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], +void castLightAll( Out( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], const T( &input_array )[MAPSIZE * SEEX][MAPSIZE * SEEY], const int offsetX, const int offsetY, int offsetDistance = 0, T numerator = 1.0 ); diff --git a/src/sidebar.cpp b/src/sidebar.cpp index be7af6e19c813..2853c77f7f546 100644 --- a/src/sidebar.cpp +++ b/src/sidebar.cpp @@ -1,37 +1,26 @@ #include "sidebar.h" -#include "player.h" -#include "string_formatter.h" +#include "cata_utility.h" +#include "color.h" +#include "cursesdef.h" #include "effect.h" #include "game.h" -#include "map.h" -#include "options.h" #include "gun_mode.h" -#include "weather.h" #include "item.h" -#include "translations.h" -#include "vpart_position.h" -#include "color.h" -#include "cursesdef.h" +#include "map.h" #include "martialarts.h" +#include "options.h" #include "output.h" -#include "input.h" +#include "player.h" +#include "string_formatter.h" +#include "translations.h" #include "vehicle.h" -#include "cata_utility.h" - -#include - -//Used for e^(x) functions -#include -#include +#include "vpart_position.h" +#include "weather.h" -#include -#include -#include +#include +#include #include -#include -#include -#include static const trait_id trait_SELFAWARE( "SELFAWARE" ); static const trait_id trait_THRESH_FELINE( "THRESH_FELINE" ); diff --git a/src/simple_pathfinding.h b/src/simple_pathfinding.h index d869070e8cdcd..74ed6625dd61d 100644 --- a/src/simple_pathfinding.h +++ b/src/simple_pathfinding.h @@ -1,8 +1,7 @@ #pragma once -#ifndef PATHFINDIND_H -#define PATHFINDIND_H +#ifndef SIMPLE_PATHFINDINDING_H +#define SIMPLE_PATHFINDINDING_H -#include "debug.h" #include "enums.h" #include diff --git a/src/simplexnoise.cpp b/src/simplexnoise.cpp index 1163abb4f9c1b..a07dfc54a476e 100644 --- a/src/simplexnoise.cpp +++ b/src/simplexnoise.cpp @@ -15,10 +15,10 @@ * */ -#include - #include "simplexnoise.h" +#include + /* 2D, 3D and 4D Simplex Noise functions return 'random' values in (-1, 1). This algorithm was originally designed by Ken Perlin, but my code has been @@ -534,7 +534,7 @@ float raw_noise_4d( const float x, const float y, const float z, const float w ) int fastfloor( const float x ) { - return x > 0 ? ( int ) x : ( int ) x - 1; + return x > 0 ? static_cast( x ) : static_cast( x ) - 1; } float dot( const int *g, const float x, const float y ) diff --git a/src/skill.cpp b/src/skill.cpp index e0ba7d50846e1..88f1137ad7379 100644 --- a/src/skill.cpp +++ b/src/skill.cpp @@ -1,11 +1,12 @@ #include "skill.h" -#include "rng.h" -#include "options.h" + #include "debug.h" -#include "json.h" -#include "translations.h" #include "item.h" +#include "json.h" +#include "options.h" #include "recipe.h" +#include "rng.h" +#include "translations.h" #include #include diff --git a/src/skill.h b/src/skill.h index d3fc287f5ef4f..934a1b6680f04 100644 --- a/src/skill.h +++ b/src/skill.h @@ -6,10 +6,9 @@ #include "string_id.h" #include -#include #include -#include #include +#include class JsonObject; class JsonIn; diff --git a/src/sounds.cpp b/src/sounds.cpp index 55e8746b81142..b16ae731d646c 100644 --- a/src/sounds.cpp +++ b/src/sounds.cpp @@ -1,36 +1,35 @@ #include "sounds.h" #include "coordinate_conversions.h" -#include "game.h" -#include "map.h" #include "debug.h" -#include "enums.h" -#include "output.h" -#include "overmapbuffer.h" #include "effect.h" -#include "translations.h" +#include "enums.h" +#include "game.h" +#include "item.h" +#include "itype.h" +#include "line.h" +#include "map.h" +#include "map_iterator.h" #include "messages.h" #include "monster.h" -#include "line.h" -#include "string_formatter.h" -#include "mtype.h" -#include "weather.h" #include "npc.h" -#include "item.h" +#include "output.h" +#include "overmapbuffer.h" #include "player.h" -#include "path_info.h" -#include "options.h" -#include "time.h" -#include "mapdata.h" -#include "itype.h" -#include "map_iterator.h" +#include "string_formatter.h" +#include "translations.h" +#include "weather.h" -#include #include +#include #include #ifdef SDL_SOUND -# include +# if defined(_MSC_VER) && defined(USE_VCPKG) +# include +# else +# include +# endif # include # if ((defined _WIN32 || defined WINDOWS) && !defined _MSC_VER) # include "mingw.thread.h" @@ -135,9 +134,9 @@ static std::vector cluster_sounds( std::vectorfloat conversions are safe. { - ( float ) recent_sounds[index].first.x, ( float ) recent_sounds[index].first.y, - ( float ) recent_sounds[index].first.z, - ( float ) recent_sounds[index].second, ( float ) recent_sounds[index].second + static_cast( recent_sounds[index].first.x ), static_cast( recent_sounds[index].first.y ), + static_cast( recent_sounds[index].first.z ), + static_cast( recent_sounds[index].second ), static_cast( recent_sounds[index].second ) } ); vector_quick_remove( recent_sounds, index ); } @@ -148,23 +147,24 @@ static std::vector cluster_sounds( std::vectorx, ( int ) centroid_iter->y, ( int ) centroid_iter->z }; + tripoint centroid_pos { static_cast( centroid_iter->x ), static_cast( centroid_iter->y ), static_cast( centroid_iter->z ) }; const int dist = rl_dist( sound_event_pair.first, centroid_pos ); if( dist * dist < dist_factor ) { found_centroid = centroid_iter; dist_factor = dist * dist; } } - const float volume_sum = ( float ) sound_event_pair.second + found_centroid->weight; + const float volume_sum = static_cast( sound_event_pair.second ) + found_centroid->weight; // Set the centroid location to the average of the two locations, weighted by volume. - found_centroid->x = ( float )( ( sound_event_pair.first.x * sound_event_pair.second ) + - ( found_centroid->x * found_centroid->weight ) ) / volume_sum; - found_centroid->y = ( float )( ( sound_event_pair.first.y * sound_event_pair.second ) + - ( found_centroid->y * found_centroid->weight ) ) / volume_sum; - found_centroid->z = ( float )( ( sound_event_pair.first.z * sound_event_pair.second ) + - ( found_centroid->z * found_centroid->weight ) ) / volume_sum; + found_centroid->x = static_cast( ( sound_event_pair.first.x * sound_event_pair.second ) + + ( found_centroid->x * found_centroid->weight ) ) / volume_sum; + found_centroid->y = static_cast( ( sound_event_pair.first.y * sound_event_pair.second ) + + ( found_centroid->y * found_centroid->weight ) ) / volume_sum; + found_centroid->z = static_cast( ( sound_event_pair.first.z * sound_event_pair.second ) + + ( found_centroid->z * found_centroid->weight ) ) / volume_sum; // Set the centroid volume to the larger of the volumes. - found_centroid->volume = std::max( found_centroid->volume, ( float ) sound_event_pair.second ); + found_centroid->volume = std::max( found_centroid->volume, + static_cast( sound_event_pair.second ) ); // Set the centroid weight to the sum of the weights. found_centroid->weight = volume_sum; } @@ -185,7 +185,7 @@ int get_signal_for_hordes( const centroid ¢r ) int vol_hordes = ( ( centr.z < 0 ) ? vol / ( underground_div * std::abs( centr.z ) ) : vol ); if( vol_hordes > min_vol_cap ) { //Calculating horde hearing signal - int sig_power = std::ceil( ( float ) vol_hordes / hordes_sig_div ); + int sig_power = std::ceil( static_cast( vol_hordes ) / hordes_sig_div ); //Capping minimum horde hearing signal sig_power = std::max( sig_power, min_sig_cap ); //Capping extremely high signal to hordes @@ -245,8 +245,8 @@ void sounds::process_sound_markers( player *p ) // The felt volume of a sound is not affected by negative multipliers, such as already // deafened players or players with sub-par hearing to begin with. - const int felt_volume = ( int )( raw_volume * std::min( 1.0f, - volume_multiplier ) ) - distance_to_sound; + const int felt_volume = static_cast( raw_volume * std::min( 1.0f, + volume_multiplier ) ) - distance_to_sound; // Deafening is based on the felt volume, as a player may be too deaf to // hear the deafening sound but still suffer additional hearing loss. @@ -278,7 +278,7 @@ void sounds::process_sound_markers( player *p ) } // The heard volume of a sound is the player heard volume, regardless of true volume level. - const int heard_volume = ( int )( ( raw_volume - weather_vol ) * volume_multiplier ) - + const int heard_volume = static_cast( ( raw_volume - weather_vol ) * volume_multiplier ) - distance_to_sound; if( heard_volume <= 0 && pos != p->pos() ) { @@ -425,7 +425,8 @@ std::pair, std::vector> sounds::get_monster_soun std::vector cluster_centroids; cluster_centroids.reserve( sound_clusters.size() ); for( const auto &sound : sound_clusters ) { - cluster_centroids.emplace_back( ( int )sound.x, ( int )sound.y, ( int )sound.z ); + cluster_centroids.emplace_back( static_cast( sound.x ), static_cast( sound.y ), + static_cast( sound.z ) ); } return { sound_locations, cluster_centroids }; } diff --git a/src/sounds.h b/src/sounds.h index 923b42744e65c..c65396e28342f 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -4,8 +4,8 @@ #include "enums.h" // For point -#include #include +#include class monster; class player; @@ -69,7 +69,7 @@ void play_ambient_variant_sound( const std::string &id, const std::string &varia int duration ); void generate_gun_sound( const player &source, const item &firing ); void generate_melee_sound( const tripoint &source, const tripoint &target, bool hit, - bool targ_mon = 0, const std::string &material = "flesh" ); + bool targ_mon = false, const std::string &material = "flesh" ); void do_hearing_loss( int turns = -1 ); void remove_hearing_loss(); void do_projectile_hit( const Creature &target ); diff --git a/src/speech.cpp b/src/speech.cpp index f2b6657f74633..2546e640642a3 100644 --- a/src/speech.cpp +++ b/src/speech.cpp @@ -1,7 +1,9 @@ #include "speech.h" + #include "json.h" -#include "translations.h" #include "rng.h" +#include "translations.h" + #include #include diff --git a/src/start_location.cpp b/src/start_location.cpp index 4495fdcfb7088..ebf8a7d5fc92e 100644 --- a/src/start_location.cpp +++ b/src/start_location.cpp @@ -3,14 +3,13 @@ #include "coordinate_conversions.h" #include "debug.h" #include "enums.h" -#include "mapdata.h" #include "field.h" #include "game.h" #include "generic_factory.h" #include "json.h" #include "map.h" -#include "mapgen.h" #include "map_extras.h" +#include "mapdata.h" #include "output.h" #include "overmap.h" #include "overmapbuffer.h" @@ -180,7 +179,7 @@ void board_up( map &m, const tripoint &start, const tripoint &end ) m.furn_set( bp, m.furn( fp ) ); m.furn_set( fp, f_null ); auto destination_items = m.i_at( bp ); - for( auto moved_item : m.i_at( fp ) ) { + for( const item &moved_item : m.i_at( fp ) ) { destination_items.push_back( moved_item ); } m.i_clear( fp ); diff --git a/src/start_location.h b/src/start_location.h index 194ae2114c12a..dbdf1966e5bd3 100644 --- a/src/start_location.h +++ b/src/start_location.h @@ -4,10 +4,8 @@ #include "string_id.h" -#include -#include -#include #include +#include class overmap; class tinymap; @@ -69,7 +67,7 @@ class start_location /** * Adds surround start monsters. - * @param expected_count Expected value of "monster points" (map tiles times density from @ref map::place_spawns). + * @param expected_points Expected value of "monster points" (map tiles times density from @ref map::place_spawns). */ void surround_with_monsters( const tripoint &omtstart, const mongroup_id &type, float expected_points ) const; diff --git a/src/string_formatter.cpp b/src/string_formatter.cpp index 85b85bc926b9e..fb8fedfe109b6 100644 --- a/src/string_formatter.cpp +++ b/src/string_formatter.cpp @@ -1,7 +1,6 @@ #include "string_formatter.h" #include -#include char cata::string_formatter::consume_next_input() { diff --git a/src/string_formatter.h b/src/string_formatter.h index 4ad0fef38239b..537428964f151 100644 --- a/src/string_formatter.h +++ b/src/string_formatter.h @@ -2,13 +2,13 @@ #ifndef STRING_FORMATTER_H #define STRING_FORMATTER_H +#include "compatibility.h" // needed for the workaround for the std::to_string bug in some compilers //@todo: replace with std::optional #include "optional.h" -#include "compatibility.h" #include -#include #include +#include #include namespace cata @@ -20,7 +20,7 @@ class string_formatter; [[noreturn]] void throw_error( const string_formatter &, const std::string & ); // wrapper to access string_formatter::temp_buffer before the definition of string_formatter -const char *string_formatter_set_temp_buffer( const string_formatter &, std::string ); +const char *string_formatter_set_temp_buffer( const string_formatter &, const std::string & ); // Handle currently active exception from string_formatter and return it as string std::string handle_string_format_error(); @@ -210,7 +210,7 @@ class string_formatter /// for printing non-strings through "%s". It *only* works because this prints each format /// specifier separately, so the content of @ref temp_buffer is only used once. friend const char *string_formatter_set_temp_buffer( const string_formatter &sf, - std::string text ) { + const std::string &text ) { sf.temp_buffer = text; return sf.temp_buffer.c_str(); } @@ -287,7 +287,6 @@ class string_formatter std::forward( args )... ) ); default: throw_error( "Unsupported format conversion: " + std::string( 1, c ) ); - break; } } diff --git a/src/string_id_null_ids.cpp b/src/string_id_null_ids.cpp index 526214de3bf75..cf7a6925cceab 100644 --- a/src/string_id_null_ids.cpp +++ b/src/string_id_null_ids.cpp @@ -10,21 +10,21 @@ return id; \ } -MAKE_NULL_ID( activity_type, "ACT_NULL", -1 ); -MAKE_NULL_ID( harvest_list, "null" ); -MAKE_NULL_ID( effect_type, "null" ); -MAKE_NULL_ID( material_type, "null", 0 ); +MAKE_NULL_ID( activity_type, "ACT_NULL", -1 ) +MAKE_NULL_ID( harvest_list, "null" ) +MAKE_NULL_ID( effect_type, "null" ) +MAKE_NULL_ID( material_type, "null", 0 ) -MAKE_NULL_ID( overmap_special, "", 0 ); -MAKE_NULL_ID( overmap_connection, "", 0 ); -MAKE_NULL_ID( Skill, "none" ); -MAKE_NULL_ID( npc_class, "NC_NONE" ); -MAKE_NULL_ID( ammunition_type, "NULL" ); -MAKE_NULL_ID( vpart_info, "null" ); -MAKE_NULL_ID( emit, "null" ); -MAKE_NULL_ID( anatomy, "null_anatomy" ); -MAKE_NULL_ID( martialart, "style_none" ); -MAKE_NULL_ID( recipe, "null" ); +MAKE_NULL_ID( overmap_special, "", 0 ) +MAKE_NULL_ID( overmap_connection, "", 0 ) +MAKE_NULL_ID( Skill, "none" ) +MAKE_NULL_ID( npc_class, "NC_NONE" ) +MAKE_NULL_ID( ammunition_type, "NULL" ) +MAKE_NULL_ID( vpart_info, "null" ) +MAKE_NULL_ID( emit, "null" ) +MAKE_NULL_ID( anatomy, "null_anatomy" ) +MAKE_NULL_ID( martialart, "style_none" ) +MAKE_NULL_ID( recipe, "null" ) #define MAKE_NULL_ID2( type, ... ) \ struct type; \ @@ -33,16 +33,16 @@ MAKE_NULL_ID( recipe, "null" ); return id; \ } -MAKE_NULL_ID2( mtype, "mon_null" ); -MAKE_NULL_ID2( oter_t, "", 0 ); -MAKE_NULL_ID2( oter_type_t, "", 0 ); -MAKE_NULL_ID2( ter_t, "t_null", 0 ); -MAKE_NULL_ID2( trap, "tr_null" ); -MAKE_NULL_ID2( furn_t, "f_null", 0 ); -MAKE_NULL_ID2( MonsterGroup, "GROUP_NULL" ); -MAKE_NULL_ID2( mission_type, "MISSION_NULL" ); -MAKE_NULL_ID2( species_type, "spec_null" ); -MAKE_NULL_ID2( mutation_branch ); -MAKE_NULL_ID2( requirement_data, "null" ); -MAKE_NULL_ID2( body_part_struct, "NUM_BP" ); -MAKE_NULL_ID2( bionic_data, "" ); +MAKE_NULL_ID2( mtype, "mon_null" ) +MAKE_NULL_ID2( oter_t, "", 0 ) +MAKE_NULL_ID2( oter_type_t, "", 0 ) +MAKE_NULL_ID2( ter_t, "t_null", 0 ) +MAKE_NULL_ID2( trap, "tr_null" ) +MAKE_NULL_ID2( furn_t, "f_null", 0 ) +MAKE_NULL_ID2( MonsterGroup, "GROUP_NULL" ) +MAKE_NULL_ID2( mission_type, "MISSION_NULL" ) +MAKE_NULL_ID2( species_type, "spec_null" ) +MAKE_NULL_ID2( mutation_branch ) +MAKE_NULL_ID2( requirement_data, "null" ) +MAKE_NULL_ID2( body_part_struct, "NUM_BP" ) +MAKE_NULL_ID2( bionic_data, "" ) diff --git a/src/string_input_popup.cpp b/src/string_input_popup.cpp index bcf0c0f7c257b..5f3ec573c7134 100644 --- a/src/string_input_popup.cpp +++ b/src/string_input_popup.cpp @@ -1,17 +1,17 @@ #include "string_input_popup.h" -#include "uistate.h" -#include "input.h" #include "catacharset.h" +#include "compatibility.h" // needed for the workaround for the std::to_string bug in some compilers +#include "input.h" #include "output.h" #include "ui.h" -#include "compatibility.h" +#include "uistate.h" + #ifdef __ANDROID__ -#include "SDL_keyboard.h" #include "options.h" +#include #endif - #include string_input_popup::string_input_popup() = default; @@ -131,10 +131,10 @@ void string_input_popup::show_history( utf8_wrapper &ret ) } _position = ret.size(); finished = true; - } else if( hmenu.ret == UIMENU_UNBOUND && hmenu.keypress == 'd' ) { + } else if( hmenu.ret == UILIST_UNBOUND && hmenu.keypress == 'd' ) { hist.clear(); finished = true; - } else if( hmenu.ret != UIMENU_UNBOUND ) { + } else if( hmenu.ret != UILIST_UNBOUND ) { finished = true; } } while( !finished ); @@ -166,7 +166,7 @@ void string_input_popup::draw( const utf8_wrapper &ret, const utf8_wrapper &edit mvwprintz( w, _starty, _startx, _string_color, "%s", ds.c_str() ); size_t sx = ds.display_width(); // Print the cursor in its own color - if( _position < ( int )ret.length() ) { + if( _position < static_cast( ret.length() ) ) { utf8_wrapper cursor = ret.substr( _position, 1 ); size_t a = _position; while( a > 0 && cursor.display_width() == 0 ) { @@ -187,13 +187,13 @@ void string_input_popup::draw( const utf8_wrapper &ret, const utf8_wrapper &edit start_x_edit = _startx + sx; sx++; // don't override trailing '_' } - if( ( int )sx < scrmax ) { + if( static_cast( sx ) < scrmax ) { // could be scrolled out of view when the cursor is at the start of the input size_t l = scrmax - sx; if( _max_length > 0 ) { - if( ( int )ret.length() >= _max_length ) { + if( static_cast( ret.length() ) >= _max_length ) { l = 0; // no more input possible! - } else if( _position == ( int )ret.length() ) { + } else if( _position == static_cast( ret.length() ) ) { // one '_' is already printed, formatted as cursor l = std::min( l, _max_length - ret.length() - 1 ); } else { @@ -258,14 +258,16 @@ const std::string &string_input_popup::query_string( const bool loop, const bool } const size_t left_shift = ret.substr( 0, _position ).display_width(); - if( ( int )left_shift < shift ) { + if( static_cast( left_shift ) < shift ) { shift = 0; - } else if( _position < ( int )ret.length() && ( int )left_shift + 1 >= shift + scrmax ) { + } else if( _position < static_cast( ret.length() ) && + static_cast( left_shift ) + 1 >= shift + scrmax ) { // if the cursor is inside the input string, keep one cell right of // the cursor visible, because the cursor might be on a multi-cell // character. shift = left_shift - scrmax + 2; - } else if( _position == ( int )ret.length() && ( int )left_shift >= shift + scrmax ) { + } else if( _position == static_cast( ret.length() ) && + static_cast( left_shift ) >= shift + scrmax ) { // cursor is behind the end of the input string, keep the // trailing '_' visible (always a single cell character) shift = left_shift - scrmax + 1; @@ -273,7 +275,7 @@ const std::string &string_input_popup::query_string( const bool loop, const bool shift = 0; } const size_t xleft_shift = ret.substr_display( 0, shift ).display_width(); - if( ( int )xleft_shift != shift ) { + if( static_cast( xleft_shift ) != shift ) { // This prevents a multi-cell character from been split, which is not possible // instead scroll a cell further to make that character disappear completely shift++; @@ -329,7 +331,7 @@ const std::string &string_input_popup::query_string( const bool loop, const bool } else if( ch == KEY_DOWN || ch == KEY_NPAGE || ch == KEY_PPAGE || ch == KEY_BTAB || ch == 9 ) { /* absolutely nothing */ } else if( ch == KEY_RIGHT ) { - if( _position + 1 <= ( int )ret.size() ) { + if( _position + 1 <= static_cast( ret.size() ) ) { _position++; } redraw = true; @@ -345,7 +347,7 @@ const std::string &string_input_popup::query_string( const bool loop, const bool // Move the cursor back and re-draw it } else if( ch == KEY_BACKSPACE ) { // but silently drop input if we're at 0, instead of adding '^' - if( _position > 0 && _position <= ( int )ret.size() ) { + if( _position > 0 && _position <= static_cast( ret.size() ) ) { //TODO: it is safe now since you only input ASCII chars _position--; ret.erase( _position, 1 ); @@ -358,7 +360,7 @@ const std::string &string_input_popup::query_string( const bool loop, const bool _position = ret.size(); redraw = true; } else if( ch == KEY_DC ) { - if( _position < ( int )ret.size() ) { + if( _position < static_cast( ret.size() ) ) { ret.erase( _position, 1 ); redraw = true; } @@ -370,7 +372,7 @@ const std::string &string_input_popup::query_string( const bool loop, const bool } } else if( !ev.text.empty() && _only_digits && !( isdigit( ev.text[0] ) || ev.text[0] == '-' ) ) { // ignore non-digit (and '-' is a digit as well) - } else if( _max_length > 0 && ( int )ret.length() >= _max_length ) { + } else if( _max_length > 0 && static_cast( ret.length() ) >= _max_length ) { // no further input possible, ignore key } else if( !ev.text.empty() ) { const utf8_wrapper t( ev.text ); @@ -442,7 +444,7 @@ void string_input_popup::edit( int &value ) } } -string_input_popup &string_input_popup::text( std::string value ) +string_input_popup &string_input_popup::text( const std::string &value ) { _text = value; auto u8size = utf8_wrapper( _text ).size(); diff --git a/src/string_input_popup.h b/src/string_input_popup.h index a1906b7ab6557..e0f0bdde99588 100644 --- a/src/string_input_popup.h +++ b/src/string_input_popup.h @@ -1,14 +1,14 @@ +#pragma once #ifndef STRING_INPUT_POPUP_H #define STRING_INPUT_POPUP_H -#include "cursesdef.h" #include "color.h" +#include "cursesdef.h" -#include -#include -#include -#include #include +#include +#include +#include class input_context; struct input_event; @@ -92,7 +92,7 @@ class string_input_popup * It's optional default is an empty string. */ /**@{*/ - string_input_popup &text( std::string value ); + string_input_popup &text( const std::string &value ); const std::string &text() const { return _text; } diff --git a/src/submap.cpp b/src/submap.cpp index 5363ee5c56c9c..d98fe0b46d0cb 100644 --- a/src/submap.cpp +++ b/src/submap.cpp @@ -1,8 +1,8 @@ #include "submap.h" + #include "mapdata.h" #include "trap.h" #include "vehicle.h" -#include "computer.h" #include @@ -35,7 +35,7 @@ void submap::delete_vehicles() static const std::string COSMETICS_GRAFFITI( "GRAFFITI" ); static const std::string COSMETICS_SIGNAGE( "SIGNAGE" ); // Handle GCC warning: 'warning: returning reference to temporary' -static const std::string STRING_EMPTY( "" ); +static const std::string STRING_EMPTY; struct cosmetic_find_result { bool result; diff --git a/src/submap.h b/src/submap.h index 47691ad862985..bd59678577780 100644 --- a/src/submap.h +++ b/src/submap.h @@ -1,21 +1,20 @@ #pragma once -#if !defined(SUBMAP_H) +#ifndef SUBMAP_H #define SUBMAP_H -#include "game_constants.h" +#include "active_item_cache.h" #include "basecamp.h" -#include "item.h" +#include "calendar.h" +#include "computer.h" #include "field.h" +#include "game_constants.h" #include "int_id.h" +#include "item.h" #include "string_id.h" -#include "active_item_cache.h" -#include "calendar.h" -#include #include -#include -#include #include +#include class map; class vehicle; diff --git a/src/text_snippets.cpp b/src/text_snippets.cpp index 0a7e70964303a..478ebd7ddadc7 100644 --- a/src/text_snippets.cpp +++ b/src/text_snippets.cpp @@ -1,12 +1,13 @@ #include "text_snippets.h" + #include "json.h" #include "rng.h" #include "translations.h" -#include #include +#include -static const std::string null_string( "" ); +static const std::string null_string; snippet_library SNIPPET; diff --git a/src/text_snippets.h b/src/text_snippets.h index 512ee04bf687b..9555a41705d1c 100644 --- a/src/text_snippets.h +++ b/src/text_snippets.h @@ -1,10 +1,10 @@ #pragma once -#ifndef TEXT_SNIPPET_H -#define TEXT_SNIPPET_H +#ifndef TEXT_SNIPPETS_H +#define TEXT_SNIPPETS_H #include -#include #include +#include #include class JsonObject; diff --git a/src/tileray.cpp b/src/tileray.cpp index ec099b126b655..3a7254176652d 100644 --- a/src/tileray.cpp +++ b/src/tileray.cpp @@ -1,7 +1,9 @@ #include "tileray.h" + #include "game_constants.h" -#include -#include + +#include +#include static const int sx[4] = { 1, -1, -1, 1 }; static const int sy[4] = { 1, 1, -1, -1 }; @@ -30,7 +32,8 @@ void tileray::init( int adx, int ady ) if( !adx && !ady ) { direction = 0; } else { - direction = static_cast( atan2( ( double )deltay, ( double )deltax ) * 180.0 / M_PI ); + direction = static_cast( atan2( static_cast( deltay ), + static_cast( deltax ) ) * 180.0 / M_PI ); if( direction < 0 ) { direction += 360; } @@ -48,8 +51,8 @@ void tileray::init( int adir ) direction = ( adir < 0 ? 360 - ( ( -adir ) % 360 ) : adir % 360 ); last_dx = 0; last_dy = 0; - deltax = static_cast( cos( ( float ) direction * M_PI / 180.0 ) * 100 ); - deltay = static_cast( sin( ( float ) direction * M_PI / 180.0 ) * 100 ); + deltax = static_cast( cos( static_cast( direction ) * M_PI / 180.0 ) * 100 ); + deltay = static_cast( sin( static_cast( direction ) * M_PI / 180.0 ) * 100 ); ax = abs( deltax ); ay = abs( deltay ); steps = 0; diff --git a/src/trait_group.cpp b/src/trait_group.cpp index 12280a333be6a..0196c905f28dc 100644 --- a/src/trait_group.cpp +++ b/src/trait_group.cpp @@ -1,13 +1,14 @@ +#include "trait_group.h" + #include "debug.h" #include "json.h" #include "rng.h" -#include "trait_group.h" #include "translations.h" #include "ui.h" #include -#include #include +#include using namespace trait_group; @@ -81,7 +82,7 @@ void trait_group::debug_spawn() uilist menu; menu.text = _( "Test which group?" ); for( size_t i = 0; i < groups.size(); i++ ) { - menu.entries.push_back( uimenu_entry( i, true, -2, groups[i].c_str() ) ); + menu.entries.emplace_back( i, true, -2, groups[i].str() ); } while( true ) { menu.query(); @@ -107,7 +108,7 @@ void trait_group::debug_spawn() for( const auto &e : traitnames2 ) { std::ostringstream buffer; buffer << e.first << " x " << e.second << "\n"; - menu2.entries.push_back( uimenu_entry( menu2.entries.size(), true, -2, buffer.str() ) ); + menu2.entries.emplace_back( menu2.entries.size(), true, -2, buffer.str() ); } menu2.query(); } @@ -247,7 +248,7 @@ Trait_group_collection::Trait_group_collection( int probability ) if( probability <= 0 || probability > 100 ) { debugmsg( "Probability %d out of range", probability ); } -}; +} Trait_list Trait_group_collection::create( RecursionList &rec ) const { diff --git a/src/trait_group.h b/src/trait_group.h index d8b5e88eee325..4040e40e2c887 100644 --- a/src/trait_group.h +++ b/src/trait_group.h @@ -6,7 +6,6 @@ #include "string_id.h" #include -#include #include class JsonObject; @@ -194,7 +193,7 @@ class Trait_group_distribution : public Trait_group { public: Trait_group_distribution( int probability ) : - Trait_group( probability ) {}; + Trait_group( probability ) {} ~Trait_group_distribution() override = default; virtual trait_group::Trait_list create( RecursionList &rec ) const override; diff --git a/src/translations.cpp b/src/translations.cpp index b816dabebb2ad..ef70a783e6e79 100644 --- a/src/translations.cpp +++ b/src/translations.cpp @@ -1,16 +1,19 @@ #if defined(LOCALIZE) && defined(__STRICT_ANSI__) #undef __STRICT_ANSI__ // _putenv in minGW need that -#include +#include #define __STRICT_ANSI__ #endif #include "translations.h" -#include "path_info.h" + +#include "cata_utility.h" +#include "json.h" #include "name.h" +#include "path_info.h" -#include -#include #include +#include +#include // Names depend on the language settings. They are loaded from different files // based on the currently used language. If that changes, we have to reload the @@ -22,7 +25,7 @@ static void reload_names() } #ifdef LOCALIZE -#include // for getenv()/setenv()/putenv() +#include // for getenv()/setenv()/putenv() #include "options.h" #include "debug.h" #include "ui.h" @@ -81,7 +84,7 @@ bool isValidLanguage( const std::string &lang ) { const auto languages = get_options().get_option( "USE_LANG" ).getItems(); return std::find_if( languages.begin(), - languages.end(), [&lang]( const std::pair &pair ) { + languages.end(), [&lang]( const options_manager::id_and_option & pair ) { return pair.first == lang || pair.first == lang.substr( 0, pair.first.length() ); } ) != languages.end(); } @@ -123,7 +126,7 @@ void select_language() auto languages = get_options().get_option( "USE_LANG" ).getItems(); languages.erase( std::remove_if( languages.begin(), - languages.end(), []( const std::pair &lang ) { + languages.end(), []( const options_manager::id_and_option & lang ) { return lang.first.empty() || lang.second.empty(); } ), languages.end() ); @@ -133,7 +136,7 @@ void select_language() sm.allow_cancel = false; sm.text = _( "Select your language" ); for( size_t i = 0; i < languages.size(); i++ ) { - sm.addentry( i, true, MENU_AUTOASSIGN, languages[i].second ); + sm.addentry( i, true, MENU_AUTOASSIGN, languages[i].second.translated() ); } sm.query(); @@ -143,7 +146,7 @@ void select_language() void set_language() { - std::string win_or_mac_lang = ""; + std::string win_or_mac_lang; #if (defined _WIN32 || defined WINDOWS) win_or_mac_lang = getLangFromLCID( GetUserDefaultLCID() ); #endif @@ -209,11 +212,6 @@ void set_language() } #if (defined MACOSX) -bool string_starts_with( std::string s, std::string prefix ) -{ - return s.compare( 0, prefix.length(), prefix ) == 0; -} - std::string getOSXSystemLang() { // Get the user's language list (in order of preference) @@ -276,3 +274,82 @@ void set_language() } #endif // LOCALIZE + +translation::translation() + : ctxt( cata::nullopt ) +{ +} + +translation::translation( const std::string &ctxt, const std::string &raw ) + : ctxt( ctxt ), raw( raw ), needs_translation( true ) +{ +} + +translation::translation( const std::string &raw ) + : ctxt( cata::nullopt ), raw( raw ), needs_translation( true ) +{ +} + +translation::translation( const std::string &str, const no_translation_tag ) + : ctxt( cata::nullopt ), raw( str ) +{ +} + +translation translation::no_translation( const std::string &str ) +{ + return { str, no_translation_tag() }; +} + +void translation::deserialize( JsonIn &jsin ) +{ + if( jsin.test_string() ) { + ctxt = cata::nullopt; + raw = jsin.get_string(); + needs_translation = true; + } else { + JsonObject jsobj = jsin.get_object(); + if( jsobj.has_string( "ctxt" ) ) { + ctxt = jsobj.get_string( "ctxt" ); + } else { + ctxt = cata::nullopt; + } + raw = jsobj.get_string( "str" ); + needs_translation = true; + } +} + +std::string translation::translated() const +{ + if( !needs_translation || raw.empty() ) { + return raw; + } else if( !ctxt ) { + return _( raw.c_str() ); + } else { + return pgettext( ctxt->c_str(), raw.c_str() ); + } +} + +bool translation::empty() const +{ + return raw.empty(); +} + +bool translation::operator<( const translation &that ) const +{ + return translated() < that.translated(); +} + +bool translation::operator==( const translation &that ) const +{ + return translated() == that.translated(); +} + +bool translation::operator!=( const translation &that ) const +{ + return !operator==( that ); +} + +translation no_translation( const std::string &str ) +{ + return translation::no_translation( str ); +} diff --git a/src/translations.h b/src/translations.h index e49dc4ea15076..6306204e0d0a2 100644 --- a/src/translations.h +++ b/src/translations.h @@ -2,6 +2,10 @@ #ifndef TRANSLATIONS_H #define TRANSLATIONS_H +#include "optional.h" + +#include + #ifndef translate_marker /** * Marks a string literal to be extracted for translation. This is only for running `xgettext` via @@ -29,10 +33,7 @@ #endif #endif -#include -#include #include -#include #if defined(__GNUC__) # define ATTRIBUTE_FORMAT_ARG(a) __attribute__((format_arg(a))) @@ -70,4 +71,71 @@ std::string getLangFromLCID( const int &lcid ); void select_language(); void set_language(); +class JsonIn; + +/** + * Class for storing translation context and raw string for deferred translation + **/ +class translation +{ + public: + translation(); + /** + * Create a deferred translation with context + **/ + translation( const std::string &ctxt, const std::string &raw ); + + /** + * Create a deferred translation without context + **/ + translation( const std::string &raw ); + + /** + * Store a string that needs no translation. + **/ + static translation no_translation( const std::string &str ); + + /** + * Deserialize from json. Json format is: + * "text" + * or + * { "ctxt": "foo", "str": "bar" } + **/ + void deserialize( JsonIn &jsin ); + + /** + * Returns raw string if no translation is needed, otherwise returns + * the translated string. + **/ + std::string translated() const; + + /** + * Whether the underlying string is empty, not matter what the context + * is or whether translation is needed. + **/ + bool empty() const; + + /** + * Compare translations by their translated strings. + * + * Be especially careful when using these to sort translations, as the + * translated result will change when switching the language. + **/ + bool operator<( const translation &that ) const; + bool operator==( const translation &that ) const; + bool operator!=( const translation &that ) const; + private: + struct no_translation_tag {}; + translation( const std::string &str, const no_translation_tag ); + + cata::optional ctxt; + std::string raw; + bool needs_translation = false; +}; + +/** + * Shorthand for translation::no_translation + **/ +translation no_translation( const std::string &str ); + #endif // _TRANSLATIONS_H_ diff --git a/src/trap.cpp b/src/trap.cpp index ff48ae7238eef..b2bc5dcdfbd08 100644 --- a/src/trap.cpp +++ b/src/trap.cpp @@ -1,18 +1,17 @@ #include "trap.h" -#include "string_id.h" -#include "int_id.h" -#include "generic_factory.h" + #include "debug.h" -#include "line.h" +#include "generic_factory.h" +#include "int_id.h" #include "json.h" -#include "map_iterator.h" +#include "line.h" #include "map.h" -#include "debug.h" -#include "translations.h" +#include "map_iterator.h" #include "player.h" +#include "string_id.h" +#include "translations.h" #include -#include namespace { diff --git a/src/trap.h b/src/trap.h index 59459b8f6169e..0117acf35c33b 100644 --- a/src/trap.h +++ b/src/trap.h @@ -3,10 +3,10 @@ #define TRAP_H #include "color.h" -#include "string_id.h" #include "int_id.h" +#include "string_id.h" #include "units.h" -#include + #include #include @@ -56,7 +56,7 @@ void hum( Creature *creature, const tripoint &p ); void shadow( Creature *creature, const tripoint &p ); void drain( Creature *creature, const tripoint &p ); void snake( Creature *creature, const tripoint &p ); -}; +} using trap_function = std::function; diff --git a/src/trapfunc.cpp b/src/trapfunc.cpp index 1337add240e82..1c9679a8d73e4 100644 --- a/src/trapfunc.cpp +++ b/src/trapfunc.cpp @@ -1,19 +1,18 @@ +#include "trap.h" + +#include "debug.h" +#include "event.h" #include "game.h" #include "map.h" #include "map_iterator.h" -#include "debug.h" -#include "trap.h" +#include "mapdata.h" +#include "messages.h" +#include "monster.h" +#include "mtype.h" #include "output.h" #include "rng.h" -#include "messages.h" #include "sounds.h" #include "translations.h" -#include "event.h" -#include "npc.h" -#include "monster.h" -#include "mapdata.h" -#include "mtype.h" -#include "morale_types.h" const mtype_id mon_blob( "mon_blob" ); const mtype_id mon_shadow( "mon_shadow" ); @@ -32,7 +31,6 @@ const efftype_id effect_tetanus( "tetanus" ); static const trait_id trait_INFIMMUNE( "INFIMMUNE" ); static const trait_id trait_INFRESIST( "INFRESIST" ); -static const trait_id trait_PYROMANIA( "PYROMANIA" ); static const trait_id trait_WINGS_BIRD( "WINGS_BIRD" ); static const trait_id trait_WINGS_BUTTERFLY( "WINGS_BUTTERFLY" ); diff --git a/src/turret.cpp b/src/turret.cpp index c78b9844585e5..f5ffe36631e14 100644 --- a/src/turret.cpp +++ b/src/turret.cpp @@ -1,20 +1,20 @@ #include "vehicle.h" #include "game.h" -#include "player.h" +#include "gun_mode.h" #include "item.h" -#include "output.h" #include "itype.h" -#include "string_formatter.h" -#include "veh_type.h" -#include "gun_mode.h" -#include "vehicle_selector.h" +#include "messages.h" #include "npc.h" -#include "ranged.h" +#include "output.h" +#include "player.h" #include "projectile.h" -#include "messages.h" +#include "ranged.h" +#include "string_formatter.h" #include "translations.h" #include "ui.h" +#include "veh_type.h" +#include "vehicle_selector.h" #include #include @@ -60,7 +60,7 @@ const turret_data vehicle::turret_query( const vehicle_part &pt ) const turret_data vehicle::turret_query( const tripoint &pos ) { - auto res = get_parts( pos, "TURRET", false, false ); + auto res = get_parts_at( pos, "TURRET", part_status_flag::any ); return !res.empty() ? turret_query( *res.front() ) : turret_data(); } @@ -404,8 +404,8 @@ bool vehicle::turrets_aim( bool manual, bool automatic, vehicle_part *tur_part ) return std::max( lhs, res ); } ); - std::vector trajectory; - trajectory = target_handler().target_ui( g->u, TARGET_MODE_TURRET, nullptr, range ); + std::vector trajectory = target_handler().target_ui( g->u, TARGET_MODE_TURRET, nullptr, + range ); bool got_target = !trajectory.empty(); if( got_target ) { diff --git a/src/tutorial.cpp b/src/tutorial.cpp index ff1753ad558fe..8aeb1f22becb2 100644 --- a/src/tutorial.cpp +++ b/src/tutorial.cpp @@ -1,21 +1,21 @@ #include "tutorial.h" +#include "action.h" #include "coordinate_conversions.h" -#include "gamemode.h" #include "game.h" +#include "gamemode.h" +#include "json.h" #include "map.h" -#include "output.h" -#include "action.h" -#include "overmapbuffer.h" -#include "translations.h" #include "map_iterator.h" -#include "profession.h" #include "mapdata.h" +#include "output.h" #include "overmap.h" -#include "trap.h" +#include "overmapbuffer.h" #include "player.h" +#include "profession.h" #include "scent_map.h" -#include "json.h" +#include "translations.h" +#include "trap.h" const mtype_id mon_zombie( "mon_zombie" ); diff --git a/src/ui.cpp b/src/ui.cpp index 4c5faa8db00f6..cd374504db250 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -1,22 +1,20 @@ #include "ui.h" + +#include "cata_utility.h" #include "catacharset.h" -#include "output.h" #include "debug.h" -#include -#include -#include -#include -#include "input.h" -#include "cursesdef.h" -#include "uistate.h" -#include "options.h" #include "game.h" +#include "input.h" +#include "output.h" #include "player.h" -#include "cata_utility.h" #include "string_input_popup.h" +#include +#include + #ifdef __ANDROID__ -#include "SDL_keyboard.h" +#include "options.h" +#include #endif /** @@ -37,100 +35,6 @@ int getfoldedwidth (const std::vector &foldedstring) return ret; } -//////////////////////////////////// -uimenu::uimenu( const std::string &hotkeys_override ) -{ - init(); - if( !hotkeys_override.empty() ) { - hotkeys = hotkeys_override; - } -} - -/** - * here we emulate the old int ret=menu(bool, "header", "option1", "option2", ...); - */ -uimenu::uimenu(bool, const char * const mes, ...) -{ - init(); - va_list ap; - va_start(ap, mes); - int i = 0; - while (char const *const tmp = va_arg(ap, char *)) { - entries.push_back(uimenu_entry(i++, true, MENU_AUTOASSIGN, tmp )); - } - va_end(ap); - query(); -} -/** - * exact usage as menu_vec - */ -uimenu::uimenu(bool cancelable, const char *mes, - const std::vector options) -{ - init(); - if (options.empty()) { - debugmsg("0-length menu (\"%s\")", mes); - ret = -1; - } else { - text = mes; - shift_retval = 1; - return_invalid = cancelable; - - for (size_t i = 0; i < options.size(); i++) { - entries.push_back(uimenu_entry(i, true, MENU_AUTOASSIGN, options[i] )); - } - query(); - } -} - -uimenu::uimenu(bool cancelable, const char *mes, - const std::vector &options, - const std::string &hotkeys_override) -{ - init(); - hotkeys = hotkeys_override; - if (options.empty()) { - debugmsg("0-length menu (\"%s\")", mes); - ret = -1; - } else { - text = mes; - shift_retval = 1; - return_invalid = cancelable; - - for (size_t i = 0; i < options.size(); i++) { - entries.push_back(uimenu_entry(i, true, MENU_AUTOASSIGN, options[i] )); - } - query(); - } -} - -uimenu::uimenu(int startx, int width, int starty, std::string title, - std::vector ents) -{ - // another quick convenience constructor - init(); - w_x = startx; - w_y = starty; - w_width = width; - text = title; - entries = ents; - query(); -} - -uimenu::uimenu(bool cancelable, int startx, int width, int starty, std::string title, - std::vector ents) -{ - // another quick convenience constructor - init(); - return_invalid = cancelable; - w_x = startx; - w_y = starty; - w_width = width; - text = title; - entries = ents; - query(); -} - uilist::uilist() { init(); @@ -144,7 +48,7 @@ uilist::uilist( const std::string &hotkeys_override ) } } -uilist::uilist( const std::string &msg, const std::vector &opts ) +uilist::uilist( const std::string &msg, const std::vector &opts ) : uilist( MENU_AUTOASSIGN, MENU_AUTOASSIGN, MENU_AUTOASSIGN, msg, opts ) { } @@ -160,7 +64,7 @@ uilist::uilist( const std::string &msg, std::initializer_list } uilist::uilist( int startx, int width, int starty, const std::string &msg, - const std::vector &opts ) + const std::vector &opts ) { init(); w_x = startx; @@ -202,23 +106,22 @@ uilist::uilist( int startx, int width, int starty, const std::string &msg, /* * Enables oneshot construction -> running -> exit */ -uimenu::operator int() const +uilist::operator int() const { - int r = ret + shift_retval; - return r; + return ret; } /** * Sane defaults on initialization */ -void uimenu::init() +void uilist::init() { w_x = MENU_AUTOASSIGN; // starting position w_y = MENU_AUTOASSIGN; // -1 = auto center w_width = MENU_AUTOASSIGN; // MENU_AUTOASSIGN = based on text width or max entry width, -2 = based on max entry, folds text w_height = MENU_AUTOASSIGN; // -1 = autocalculate based on number of entries + number of lines in text // @todo: fixme: scrolling list with offset - ret = dynamic_cast( this ) ? UIMENU_WAIT_INPUT : UIMENU_INVALID; + ret = UILIST_WAIT_INPUT; text.clear(); // header text, after (maybe) folding, populates: textformatted.clear(); // folded to textwidth textwidth = MENU_AUTOASSIGN; // if unset, folds according to w_width @@ -228,7 +131,7 @@ void uimenu::init() window = catacurses::window(); // our window keymap.clear(); // keymap[int] == index, for entries[index] selected = 0; // current highlight, for entries[index] - entries.clear(); // uimenu_entry(int returnval, bool enabled, int keycode, std::string text, ...@todo: submenu stuff) + entries.clear(); // uilist_entry(int returnval, bool enabled, int keycode, std::string text, ...@todo: submenu stuff) started = false; // set to true when width and key calculations are done, and window is generated. pad_left = 0; // make a blank space to the left pad_right = 0; // or right @@ -244,14 +147,12 @@ void uimenu::init() allow_disabled = false; // disallow selecting disabled options allow_anykey = false; // do not return on unbound keys allow_cancel = true; // allow cancelling with "QUIT" action - return_invalid = false; // legacy flag hilight_full = true; // render hilight_color background over the entire line (minus padding) hilight_disabled = false; // if false, hitting 'down' onto a disabled entry will advance downward to the first enabled entry - shift_retval = 0; // for legacy menu/vec_menu vshift = 0; // scrolling menu offset vmax = 0; // max entries area rows - callback = NULL; // * uimenu_callback + callback = nullptr; // * uilist_callback filter.clear(); // filter string. If "", show everything fentries.clear(); // fentries is the actual display after filtering, and maps displayed entry number to actual entry number fselected = 0; // fentries[selected] @@ -268,19 +169,19 @@ void uimenu::init() scrollbar_side = -1; // -1 == choose left unless taken, then choose right hotkeys = DEFAULT_HOTKEYS; - input_category = "UIMENU"; + input_category = "UILIST"; additional_actions.clear(); } /** * repopulate filtered entries list (fentries) and set fselected accordingly */ -void uimenu::filterlist() +void uilist::filterlist() { bool notfiltering = ( ! filtering || filter.empty() ); int num_entries = entries.size(); bool nocase = filtering_nocase; // @todo: && is_all_lc( filter ) - std::string fstr = ""; + std::string fstr; fstr.reserve(filter.size()); if ( nocase ) { transform( filter.begin(), filter.end(), std::back_inserter(fstr), tolower ); @@ -291,7 +192,7 @@ void uimenu::filterlist() fselected = -1; int f = 0; for( int i = 0; i < num_entries; i++ ) { - if( notfiltering || ( !nocase && (int)entries[ i ].txt.find(filter) != -1 ) || + if( notfiltering || ( !nocase && static_cast( entries[i].txt.find( filter ) ) != -1 ) || lcmatch(entries[i].txt, fstr ) ) { fentries.push_back( i ); if ( i == selected ) { @@ -312,13 +213,13 @@ void uimenu::filterlist() } else { selected = fentries [ 0 ]; } - } else if (fselected < (int)fentries.size()) { + } else if (fselected < static_cast( fentries.size() )) { selected = fentries[fselected]; } else { fselected = selected = -1; } // scroll to top of screen if all remaining entries fit the screen. - if ((int)fentries.size() <= vmax) { + if (static_cast( fentries.size() ) <= vmax) { vshift = 0; } } @@ -326,9 +227,9 @@ void uimenu::filterlist() /** * Call string_input_win / ui_element_input::input_filter and filter the entries list interactively */ -std::string uimenu::inputfilter() +std::string uilist::inputfilter() { - std::string identifier = ""; // @todo: uimenu.filter_identifier ? + std::string identifier; // @todo: uilist.filter_identifier ? mvwprintz(window, w_height - 1, 2, border_color, "< "); mvwprintz(window, w_height - 1, w_width - 3, border_color, " >"); /* @@ -419,12 +320,12 @@ static int find_minimum_fold_width( const std::string &str, int max_lines, } } return min_width; -}; +} /** * Calculate sizes, populate arrays, initialize window */ -void uimenu::setup() +void uilist::setup() { bool w_auto = (w_width == -1 || w_width == -2 ); bool w_autofold = ( w_width == -2); @@ -560,7 +461,7 @@ void uimenu::setup() // shrink-to-fit if( desc_enabled ) { desc_lines = 0; - for( const uimenu_entry &ent : entries ) { + for( const uilist_entry &ent : entries ) { // -2 for borders, -2 for padding desc_lines = std::max( desc_lines, foldstring( ent.desc, w_width - 4 ).size() ); } @@ -612,7 +513,7 @@ void uimenu::setup() if ( scrollbar_side == -1 ) { scrollbar_side = ( pad_left > 0 ? 1 : 0 ); } - if ( (int)entries.size() <= vmax ) { + if ( static_cast( entries.size() ) <= vmax ) { scrollbar_auto = false; } window = catacurses::newwin( w_height, w_width, w_y, w_x ); @@ -634,7 +535,7 @@ void uimenu::setup() started = true; } -void uimenu::apply_scrollbar() +void uilist::apply_scrollbar() { if ( !scrollbar_auto ) { return; @@ -665,7 +566,7 @@ void uimenu::apply_scrollbar() /** * Generate and refresh output */ -void uimenu::show() +void uilist::show() { if (!started) { setup(); @@ -698,7 +599,7 @@ void uimenu::show() calcStartPos( vshift, fselected, vmax, fentries.size() ); for ( int fei = vshift, si = 0; si < vmax; fei++, si++ ) { - if ( fei < (int)fentries.size() ) { + if ( fei < static_cast( fentries.size() ) ) { int ei = fentries [ fei ]; nc_color co = ( ei == selected ? hilight_color : @@ -739,7 +640,7 @@ void uimenu::show() mvwputch ( window, estart + si, pad_left + 1 + menu_entry_extra_text.left, menu_entry_extra_text.color, menu_entry_extra_text.sym ); } - if ( callback != NULL && ei == selected ) { + if ( callback != nullptr && ei == selected ) { callback->select(ei, this); } } else { @@ -780,10 +681,10 @@ void uimenu::show() /** * wrefresh + wrefresh callback's window */ -void uimenu::refresh( bool refresh_callback ) +void uilist::refresh( bool refresh_callback ) { wrefresh(window); - if ( refresh_callback && callback != NULL ) { + if ( refresh_callback && callback != nullptr ) { callback->refresh(this); } } @@ -791,7 +692,7 @@ void uimenu::refresh( bool refresh_callback ) /** * redraw borders, which is required in some cases ( look_around() ) */ -void uimenu::redraw( bool redraw_callback ) +void uilist::redraw( bool redraw_callback ) { draw_border(window, border_color); if( !title.empty() ) { @@ -812,7 +713,7 @@ void uimenu::redraw( bool redraw_callback ) */ } -int uimenu::scroll_amount_from_key( const int key ) +int uilist::scroll_amount_from_key( const int key ) { if( key == KEY_UP ) { return -1; @@ -827,7 +728,7 @@ int uimenu::scroll_amount_from_key( const int key ) } } -int uimenu::scroll_amount_from_action( const std::string &action ) +int uilist::scroll_amount_from_action( const std::string &action ) { if( action == "UP" ) { return -1; @@ -849,7 +750,7 @@ int uimenu::scroll_amount_from_action( const std::string &action ) /** * check for valid scrolling keypress and handle. return false if invalid keypress */ -bool uimenu::scrollby( const int scrollby ) +bool uilist::scrollby( const int scrollby ) { if ( scrollby == 0 ) { return false; @@ -862,7 +763,7 @@ bool uimenu::scrollby( const int scrollby ) if ( ! looparound ) { if ( backwards && fselected < 0 ) { fselected = 0; - } else if ( fselected >= (int)fentries.size() ) { + } else if ( fselected >= static_cast( fentries.size() ) ) { fselected = fentries.size() - 1; } } @@ -881,7 +782,7 @@ bool uimenu::scrollby( const int scrollby ) } } } else { - if( fselected >= ( int )fentries.size() ) { + if( fselected >= static_cast( fentries.size() ) ) { fselected = 0; } for( size_t i = 0; i < fentries.size(); ++i ) { @@ -889,7 +790,7 @@ bool uimenu::scrollby( const int scrollby ) break; } ++fselected; - if( fselected >= ( int )fentries.size() ) { + if( fselected >= static_cast( fentries.size() ) ) { fselected = 0; } } @@ -904,17 +805,14 @@ bool uimenu::scrollby( const int scrollby ) * Handle input and update display * */ -void uimenu::query( bool loop, int timeout ) +void uilist::query( bool loop, int timeout ) { - bool new_interface = dynamic_cast( this ) != nullptr; keypress = 0; if ( entries.empty() ) { - if( new_interface ) { - ret = UIMENU_ERROR; - } + ret = UILIST_ERROR; return; } - ret = ( new_interface ? UIMENU_WAIT_INPUT : UIMENU_INVALID ); + ret = UILIST_WAIT_INPUT; input_context ctxt( input_category ); ctxt.register_updown(); @@ -922,7 +820,7 @@ void uimenu::query( bool loop, int timeout ) ctxt.register_action( "PAGE_DOWN" ); ctxt.register_action( "SCROLL_UP" ); ctxt.register_action( "SCROLL_DOWN" ); - if( new_interface ? allow_cancel : return_invalid ) { + if( allow_cancel ) { ctxt.register_action( "QUIT" ); } ctxt.register_action( "CONFIRM" ); @@ -959,74 +857,66 @@ void uimenu::query( bool loop, int timeout ) selected = iter->second; if( entries[ selected ].enabled ) { ret = entries[ selected ].retval; // valid - } else if( !new_interface && return_invalid ) { - ret = 0 - entries[ selected ].retval; // disabled - } else if( new_interface && allow_disabled ) { + } else if( allow_disabled ) { ret = entries[selected].retval; // disabled } } else if ( !fentries.empty() && action == "CONFIRM" ) { if( entries[ selected ].enabled ) { ret = entries[ selected ].retval; // valid - } else if ( !new_interface && return_invalid ) { - ret = 0 - entries[ selected ].retval; // disabled - } else if( new_interface && allow_disabled ) { + } else if( allow_disabled ) { ret = entries[selected].retval; // disabled } - } else if( ( !new_interface || allow_cancel ) && action == "QUIT" ) { - if( new_interface ) { - ret = UIMENU_CANCEL; - } else { - break; - } + } else if( allow_cancel && action == "QUIT" ) { + ret = UILIST_CANCEL; } else if( action == "TIMEOUT" ) { - ret = UIMENU_TIMEOUT; + ret = UILIST_TIMEOUT; } else { bool unhandled = callback == nullptr || !callback->key( ctxt, event, selected, this ); - if( unhandled && ( new_interface ? allow_anykey : return_invalid ) ) { - ret = new_interface ? UIMENU_UNBOUND : -1; + if( unhandled && allow_anykey ) { + ret = UILIST_UNBOUND; } } show(); - } while( loop && ret == ( new_interface ? UIMENU_WAIT_INPUT : UIMENU_INVALID ) ); + } while( loop && ret == UILIST_WAIT_INPUT ); } ///@} /** * cleanup */ -void uimenu::reset() +void uilist::reset() { window = catacurses::window(); init(); } -void uimenu::addentry(const std::string &str) +void uilist::addentry( const std::string &str ) { - entries.push_back(str); + entries.emplace_back( str ); } -void uimenu::addentry(int r, bool e, int k, const std::string &str) +void uilist::addentry( int r, bool e, int k, const std::string &str ) { - entries.push_back(uimenu_entry(r, e, k, str)); + entries.emplace_back( r, e, k, str ); } -void uimenu::addentry_desc(const std::string &str, const std::string &desc) +void uilist::addentry_desc( const std::string &str, const std::string &desc ) { - entries.push_back(uimenu_entry(str, desc)); + entries.emplace_back( str, desc ); } -void uimenu::addentry_desc(int r, bool e, int k, const std::string &str, const std::string &desc) +void uilist::addentry_desc( int r, bool e, int k, const std::string &str, const std::string &desc ) { - entries.push_back(uimenu_entry(r, e, k, str, desc)); + entries.emplace_back( r, e, k, str, desc ); } -void uimenu::addentry_col(int r, bool e, int k, const std::string &str, const std::string &column, const std::string &desc) +void uilist::addentry_col( int r, bool e, int k, const std::string &str, const std::string &column, const std::string &desc ) { - entries.push_back(uimenu_entry(r, e, k, str, desc, column)); + entries.emplace_back( r, e, k, str, desc, column ); } -void uimenu::settext(const std::string &str) +void uilist::settext( const std::string &str ) { text = str; } @@ -1037,15 +927,15 @@ pointmenu_cb::pointmenu_cb( const std::vector< tripoint > &pts ) : points( pts ) last_view = g->u.view_offset; } -void pointmenu_cb::select( int /*num*/, uimenu * /*menu*/ ) { +void pointmenu_cb::select( int /*num*/, uilist * /*menu*/ ) { g->u.view_offset = last_view; } -void pointmenu_cb::refresh( uimenu *menu ) { +void pointmenu_cb::refresh( uilist *menu ) { if( last == menu->selected ) { return; } - if( menu->selected < 0 || menu->selected >= (int)points.size() ) { + if( menu->selected < 0 || menu->selected >= static_cast( points.size() ) ) { last = menu->selected; g->u.view_offset = {0, 0, 0}; g->draw_ter(); diff --git a/src/ui.h b/src/ui.h index 47fe945fbb532..e5d1d9f5ed802 100644 --- a/src/ui.h +++ b/src/ui.h @@ -2,27 +2,25 @@ #ifndef UI_H #define UI_H -#include "enums.h" -#include #include "color.h" #include "cursesdef.h" +#include "enums.h" #include "string_formatter.h" -#include -#include #include +#include #include +#include //////////////////////////////////////////////////////////////////////////////////// /** - * uimenu constants + * uilist constants */ -const int UIMENU_INVALID = -1024; // legacy constant -const int UIMENU_ERROR = -1024; -const int UIMENU_WAIT_INPUT = -1025; -const int UIMENU_UNBOUND = -1026; -const int UIMENU_CANCEL = -1027; -const int UIMENU_TIMEOUT = -1028; +const int UILIST_ERROR = -1024; +const int UILIST_WAIT_INPUT = -1025; +const int UILIST_UNBOUND = -1026; +const int UILIST_CANCEL = -1027; +const int UILIST_TIMEOUT = -1028; const int MENU_ALIGN_LEFT = -1; const int MENU_ALIGN_CENTER = 0; const int MENU_ALIGN_RIGHT = 1; @@ -44,9 +42,9 @@ struct mvwzstr { }; /** - * uimenu_entry: entry line for uimenu + * uilist_entry: entry line for uilist */ -struct uimenu_entry { +struct uilist_entry { int retval; // return this int bool enabled; // darken, and forbid scrolling if hilight_disabled is false bool force_color = false; // Never darken this option @@ -59,36 +57,36 @@ struct uimenu_entry { mvwzstr extratxt; //std::string filtertxt; // possibly useful - uimenu_entry( std::string T ) : retval( -1 ), enabled( true ), hotkey( -1 ), txt( T ) { + uilist_entry( std::string T ) : retval( -1 ), enabled( true ), hotkey( -1 ), txt( T ) { text_color = c_red_red; - }; - uimenu_entry( std::string T, std::string D ) : retval( -1 ), enabled( true ), hotkey( -1 ), + } + uilist_entry( std::string T, std::string D ) : retval( -1 ), enabled( true ), hotkey( -1 ), txt( T ), desc( D ) { text_color = c_red_red; - }; - uimenu_entry( std::string T, int K ) : retval( -1 ), enabled( true ), hotkey( K ), txt( T ) { + } + uilist_entry( std::string T, int K ) : retval( -1 ), enabled( true ), hotkey( K ), txt( T ) { text_color = c_red_red; - }; - uimenu_entry( int R, bool E, int K, std::string T ) : retval( R ), enabled( E ), hotkey( K ), + } + uilist_entry( int R, bool E, int K, std::string T ) : retval( R ), enabled( E ), hotkey( K ), txt( T ) { text_color = c_red_red; - }; - uimenu_entry( int R, bool E, int K, std::string T, std::string D ) : retval( R ), enabled( E ), + } + uilist_entry( int R, bool E, int K, std::string T, std::string D ) : retval( R ), enabled( E ), hotkey( K ), txt( T ), desc( D ) { text_color = c_red_red; - }; - uimenu_entry( int R, bool E, int K, std::string T, std::string D, std::string C ) : retval( R ), + } + uilist_entry( int R, bool E, int K, std::string T, std::string D, std::string C ) : retval( R ), enabled( E ), hotkey( K ), txt( T ), desc( D ), ctxt( C ) { text_color = c_red_red; - }; - uimenu_entry( int R, bool E, int K, std::string T, nc_color H, nc_color C ) : retval( R ), + } + uilist_entry( int R, bool E, int K, std::string T, nc_color H, nc_color C ) : retval( R ), enabled( E ), hotkey( K ), txt( T ), - hotkey_color( H ), text_color( C ) {}; + hotkey_color( H ), text_color( C ) {} }; /** - * Virtual base class for windowed ui stuff (like uimenu) + * Virtual base class for windowed ui stuff (like uilist) */ class ui_container { @@ -107,19 +105,19 @@ class ui_container /** * Generic multi-function callback for highlighted items, key presses, and window control. Example: * - * class monmenu_cb: public uimenu_callback { + * class monmenu_cb: public uilist_callback { * public: - * bool key(int ch, int num, uimenu * menu) { + * bool key(int ch, int num, uilist * menu) { * if ( ch == 'k' && num > 0 ) { * std::vector * game_z=static_cast*>(myptr); * game_z[num]->dead = true; * } * } - * void select(int num, uimenu * menu) { + * void select(int num, uilist * menu) { * mvwprintz(menu->window, 0, 0, c_red, "( %s )",game_z[num]->name().c_str() ); * } * } - * uimenu monmenu; + * uilist monmenu; * for( size_t i = 0; i < z.size(); ++i ) { * monmenu.addentry( z[i].name ); * } @@ -129,36 +127,35 @@ class ui_container * monmenu.query(); * */ -class uimenu; +class uilist; /** -* uimenu::query() handles most input events first, +* uilist::query() handles most input events first, * and then passes the event to the callback if it can't handle it. * * The callback returninig a boolean false signifies that the callback can't "handle the * event completely". This is unchanged before or after the PR. * @{ */ -class uimenu_callback +class uilist_callback { public: - virtual void select( int /*entnum*/, uimenu * ) {}; + virtual void select( int /*entnum*/, uilist * ) {} virtual bool key( const input_context &, const input_event &/*key*/, int /*entnum*/, - uimenu * ) { + uilist * ) { return false; - }; - virtual void refresh( uimenu * ) {}; - virtual void redraw( uimenu * ) {}; - virtual ~uimenu_callback() = default; + } + virtual void refresh( uilist * ) {} + virtual void redraw( uilist * ) {} + virtual ~uilist_callback() = default; }; /*@}*/ /** - * uimenu: scrolling vertical list menu + * uilist: scrolling vertical list menu */ class ui_element; class ui_element_input; -// This class should be migrated out, use uilist instead! -class uimenu: public ui_container +class uilist: public ui_container { public: int ret; @@ -173,7 +170,7 @@ class uimenu: public ui_container int max_entry_len; int max_column_len; std::string title; - std::vector entries; + std::vector entries; std::map keymap; bool desc_enabled; int desc_lines; @@ -189,12 +186,10 @@ class uimenu: public ui_container int pad_left; int pad_right; bool allow_disabled; // return on selecting disabled entry, default false - bool allow_anykey; // return UIMENU_UNBOUND on keys unbound & unhandled by callback, default false - bool allow_cancel; // return UIMENU_CANCEL on "QUIT" action, default true - bool return_invalid; // legacy flag + bool allow_anykey; // return UILIST_UNBOUND on keys unbound & unhandled by callback, default false + bool allow_cancel; // return UILIST_CANCEL on "QUIT" action, default true bool hilight_disabled; bool hilight_full; - int shift_retval; int vshift; int vmax; std::string filter; @@ -207,18 +202,20 @@ class uimenu: public ui_container nc_color scrollbar_page_color; int scrollbar_side; - uimenu_callback *callback; - - uimenu( const std::string &hotkeys = "" ); // bare init + uilist_callback *callback; - uimenu( bool cancancel, const char *message, ... ); // legacy menu() - uimenu( bool cancelable, const char *mes, - const std::vector options ); // legacy menu_vec - uimenu( bool cancelable, const char *mes, const std::vector &options, - const std::string &hotkeys ); - uimenu( bool cancelable, int startx, int width, int starty, std::string title, - std::vector ents ); - uimenu( int startx, int width, int starty, std::string title, std::vector ents ); + uilist(); + uilist( const std::string &hotkeys_override ); + // query() will be called at the end of these convenience constructors + uilist( const std::string &msg, const std::vector &opts ); + uilist( const std::string &msg, const std::vector &opts ); + uilist( const std::string &msg, std::initializer_list opts ); + uilist( int startx, int width, int starty, const std::string &msg, + const std::vector &opts ); + uilist( int startx, int width, int starty, const std::string &msg, + const std::vector &opts ); + uilist( int startx, int width, int starty, const std::string &msg, + std::initializer_list opts ); void init(); void setup(); @@ -260,28 +257,11 @@ class uimenu: public ui_container std::string hotkeys; }; -class uilist : virtual public uimenu -{ - public: - uilist(); - uilist( const std::string &hotkeys_override ); - // query() will be called at the end of these convenience constructors - uilist( const std::string &msg, const std::vector &opts ); - uilist( const std::string &msg, const std::vector &opts ); - uilist( const std::string &msg, std::initializer_list opts ); - uilist( int startx, int width, int starty, const std::string &msg, - const std::vector &opts ); - uilist( int startx, int width, int starty, const std::string &msg, - const std::vector &opts ); - uilist( int startx, int width, int starty, const std::string &msg, - std::initializer_list opts ); -}; - /** - * Callback for uimenu that pairs menu entries with points + * Callback for uilist that pairs menu entries with points * When an entry is selected, view will be centered on the paired point */ -class pointmenu_cb : public uimenu_callback +class pointmenu_cb : public uilist_callback { private: const std::vector< tripoint > &points; @@ -290,8 +270,8 @@ class pointmenu_cb : public uimenu_callback public: pointmenu_cb( const std::vector< tripoint > &pts ); ~pointmenu_cb() override = default; - void select( int num, uimenu *menu ) override; - void refresh( uimenu *menu ) override; + void select( int num, uilist *menu ) override; + void refresh( uilist *menu ) override; }; #endif diff --git a/src/uistate.h b/src/uistate.h index e195419624730..706d84ccd508e 100644 --- a/src/uistate.h +++ b/src/uistate.h @@ -2,16 +2,13 @@ #ifndef UISTATE_H #define UISTATE_H -#include -#include - #include "enums.h" #include "omdata.h" -#include "recipe.h" +#include #include -#include #include +#include class ammunition_type; using ammotype = string_id; @@ -46,7 +43,7 @@ class uistatedata int adv_inv_last_popup_dest = 0; int adv_inv_container_location = -1; int adv_inv_container_index = 0; - bool adv_inv_container_in_vehicle = 0; + bool adv_inv_container_in_vehicle = false; int adv_inv_exit_code = 0; itype_id adv_inv_container_type = "null"; itype_id adv_inv_container_content_type = "null"; @@ -88,6 +85,8 @@ class uistatedata om_direction::type omedit_rotation = om_direction::type::none; std::set hidden_recipes; + std::set favorite_recipes; + std::vector recent_recipes; /* to save input history and make accessible via 'up', you don't need to edit this file, just run: output = string_input_popup(str, int, str, str, std::string("set_a_unique_identifier_here") ); @@ -148,6 +147,8 @@ class uistatedata json.member( "list_item_downvote_active", list_item_downvote_active ); json.member( "list_item_priority_active", list_item_priority_active ); json.member( "hidden_recipes", hidden_recipes ); + json.member( "favorite_recipes", favorite_recipes ); + json.member( "recent_recipes", recent_recipes ); json.member( "input_history" ); json.start_object(); @@ -168,7 +169,7 @@ class uistatedata json.end_object(); // input_history json.end_object(); - }; + } template void deserialize( JsonStream &jsin ) { @@ -231,6 +232,8 @@ class uistatedata jo.read( "overmap_show_city_labels", overmap_show_city_labels ); jo.read( "overmap_show_hordes", overmap_show_hordes ); jo.read( "hidden_recipes", hidden_recipes ); + jo.read( "favorite_recipes", favorite_recipes ); + jo.read( "recent_recipes", recent_recipes ); if( !jo.read( "vmenu_show_items", vmenu_show_items ) ) { // This is an old save: 1 means view items, 2 means view monsters, @@ -264,7 +267,7 @@ class uistatedata if( !gethistory( "list_item_priority" ).empty() ) { list_item_priority = gethistory( "list_item_priority" ).back(); } - }; + } }; extern uistatedata uistate; diff --git a/src/units.h b/src/units.h index b69c1ba0587ad..c22094b31cd8d 100644 --- a/src/units.h +++ b/src/units.h @@ -1,11 +1,11 @@ #pragma once -#ifndef QUANTITY_CATA_H -#define QUANTITY_CATA_H +#ifndef UNITS_H +#define UNITS_H -#include #include #include #include +#include namespace units { diff --git a/src/veh_interact.cpp b/src/veh_interact.cpp index 1a10577f8aad6..628527c47e0bb 100644 --- a/src/veh_interact.cpp +++ b/src/veh_interact.cpp @@ -1,42 +1,42 @@ #include "veh_interact.h" -#include -#include "vehicle.h" -#include "overmapbuffer.h" -#include "game.h" -#include "player.h" + #include "action.h" -#include "map.h" -#include "output.h" +#include "activity_handlers.h" +#include "cata_utility.h" #include "catacharset.h" -#include "string_formatter.h" -#include "map_selector.h" #include "crafting.h" -#include "options.h" #include "debug.h" -#include "skill.h" +#include "fault.h" +#include "game.h" +#include "itype.h" +#include "map.h" +#include "map_selector.h" #include "messages.h" +#include "npc.h" +#include "output.h" +#include "overmapbuffer.h" +#include "player.h" +#include "skill.h" +#include "string_formatter.h" +#include "string_input_popup.h" #include "translations.h" +#include "ui.h" #include "veh_type.h" +#include "veh_utils.h" +#include "vehicle.h" +#include "vehicle_selector.h" #include "vpart_position.h" -#include "ui.h" #include "vpart_range.h" #include "vpart_reference.h" -#include "itype.h" -#include "cata_utility.h" -#include "vehicle_selector.h" -#include "fault.h" -#include "npc.h" -#include "string_input_popup.h" -#include "veh_utils.h" -#include "activity_handlers.h" +#include +#include #include -#include #include #include -#include +#include #include -#include +#include static inline const char *status_color( bool status ) { @@ -61,7 +61,6 @@ static auto can_refill = []( const vehicle_part &pt ) namespace { -const std::string repair_hotkeys( "r1234567890" ); const quality_id LIFT( "LIFT" ); const quality_id JACK( "JACK" ); const quality_id SELF_JACK( "SELF_JACK" ); @@ -466,7 +465,7 @@ task_reason veh_interact::cant_do (char mode) break; case 's': // siphon mode valid_target = false; - for( const vpart_reference &vp : veh->get_parts_including_broken( VPFLAG_FLUIDTANK ) ) { + for( const vpart_reference &vp : veh->get_any_parts( VPFLAG_FLUIDTANK ) ) { if( vp.part().base.contents_made_of( LIQUID ) ) { valid_target = true; break; @@ -485,7 +484,7 @@ task_reason veh_interact::cant_do (char mode) } break; case 'c': // change tire - valid_target = wheel != NULL; + valid_target = wheel != nullptr; ///\EFFECT_STR allows changing tires on heavier vehicles without a jack has_tools = has_wrench && has_wheel && ( g->u.can_lift( *veh ) || has_jack ); break; @@ -547,7 +546,7 @@ bool veh_interact::can_self_jack() { int lvl = jack_quality( *veh ); - for( const vpart_reference &vp : veh->get_parts( "SELF_JACK" ) ) { + for( const vpart_reference &vp : veh->get_avail_parts( "SELF_JACK" ) ) { if( vp.part().base.has_quality( SELF_JACK, lvl ) ) { return true; } @@ -556,7 +555,7 @@ bool veh_interact::can_self_jack() } bool veh_interact::can_install_part() { - if( sel_vpart_info == NULL ) { + if( sel_vpart_info == nullptr ) { werase (w_msg); wrefresh (w_msg); return false; @@ -595,8 +594,8 @@ bool veh_interact::can_install_part() { int engines = 0; int dif_eng = 0; if( is_engine && sel_vpart_info->has_flag( "E_HIGHER_SKILL" ) ) { - for( const vpart_reference &vp : veh->get_parts() ) { - if( vp.has_feature( "ENGINE" ) && vp.has_feature( "E_HIGHER_SKILL" ) ) { + for( const vpart_reference &vp : veh->get_avail_parts( "ENGINE" ) ) { + if( vp.has_feature( "E_HIGHER_SKILL" ) ) { engines++; dif_eng = dif_eng / 2 + 8; } @@ -613,7 +612,7 @@ bool veh_interact::can_install_part() { } } - if (axles.size() > 0 && axles.count(-ddx) == 0) { + if (! axles.empty() && axles.count(-ddx) == 0) { // Installing more than one steerable axle is hard // (but adding a wheel to an existing axle isn't) dif_steering = axles.size() + 5; @@ -850,10 +849,9 @@ bool veh_interact::do_install( std::string &msg ) const auto &shapes = vpart_shapes[ sel_vpart_info->name() + sel_vpart_info->item ]; int selected_shape = -1; if ( shapes.size() > 1 ) { // more than one shape available, display selection - std::vector shape_ui_entries; + std::vector shape_ui_entries; for ( size_t i = 0; i < shapes.size(); i++ ) { - uimenu_entry entry = uimenu_entry( i, true, UIMENU_INVALID, - shapes[i]->name() ); + uilist_entry entry( i, true, 0, shapes[i]->name() ); entry.extratxt.left = 1; entry.extratxt.sym = special_symbol( shapes[i]->sym ); entry.extratxt.color = shapes[i]->color; @@ -871,7 +869,7 @@ bool veh_interact::do_install( std::string &msg ) } } } else if (action == "QUIT") { - sel_vpart_info = NULL; + sel_vpart_info = nullptr; werase (w_list); wrefresh (w_list); werase (w_msg); @@ -1726,7 +1724,7 @@ int veh_interact::part_at( int dx, int dy ) { int vdx = -ddx - dy; int vdy = dx - ddy; - return veh->part_displayed_at( vdx, vdy ); + return veh->part_displayed_at( point( vdx, vdy ) ); } /** @@ -1792,7 +1790,7 @@ void veh_interact::move_cursor( int dx, int dy, int dstart_at ) if( has_critter && vp.has_flag( VPFLAG_OBSTACLE ) ) { continue; } - if( veh->can_mount( vdx, vdy, vp.get_id() ) ) { + if( veh->can_mount( point( vdx, vdy ), vp.get_id() ) ) { if( vp.get_id() != vpart_shapes[ vp.name() + vp.item ][ 0 ]->get_id() ) { continue; // only add first shape to install list } @@ -1807,7 +1805,7 @@ void veh_interact::move_cursor( int dx, int dy, int dstart_at ) need_repair.clear(); parts_here.clear(); - wheel = NULL; + wheel = nullptr; if( cpart >= 0 ) { parts_here = veh->parts_at_relative( veh->parts[cpart].mount, true ); for( size_t i = 0; i < parts_here.size(); i++ ) { @@ -1928,8 +1926,8 @@ void veh_interact::display_veh () static std::string wheel_state_description( const vehicle &veh ) { - bool is_boat = !empty( veh.get_parts( VPFLAG_FLOATS ) ); - bool is_land = !empty( veh.get_parts( VPFLAG_WHEEL ) ); + bool is_boat = !veh.floating.empty(); + bool is_land = !veh.wheelcache.empty(); bool suf_land = veh.sufficient_wheel_config( false ); bool bal_land = veh.balanced_wheel_config( false ); @@ -1987,7 +1985,7 @@ void veh_interact::display_stats() units::volume total_cargo = 0; units::volume free_cargo = 0; - for( const vpart_reference &vp : veh->get_parts( "CARGO" ) ) { + for( const vpart_reference &vp : veh->get_any_parts( "CARGO" ) ) { const size_t p = vp.part_index(); total_cargo += veh->max_volume(p); free_cargo += veh->free_volume(p); @@ -2072,7 +2070,7 @@ void veh_interact::display_stats() print_part( needsRepair, 7, most_repairable ); } - bool is_boat = !empty( veh->get_parts( VPFLAG_FLOATS ) ); + bool is_boat = !veh->floating.empty(); fold_and_print(w_stats, y[8], x[8], w[8], c_light_gray, _("K aerodynamics: %3d%%"), @@ -2223,7 +2221,7 @@ void veh_interact::display_details( const vpart_info *part ) wborder(w_details, LINE_XOXO, LINE_XOXO, LINE_OXOX, LINE_OXOX, LINE_OXXO, LINE_OOXX, LINE_XXOO, LINE_XOOX); - if ( part == NULL ) { + if ( part == nullptr ) { wrefresh(w_details); return; } @@ -2232,7 +2230,7 @@ void veh_interact::display_details( const vpart_info *part ) int col_1 = 2; int col_2 = col_1 + column_width; int line = 0; - bool small_mode = column_width < 20 ? true : false; + bool small_mode = column_width < 20; // line 0: part name fold_and_print( w_details, line, col_1, details_w, c_light_green, part->name() ); @@ -2264,8 +2262,8 @@ void veh_interact::display_details( const vpart_info *part ) // line 3: (column 1) size, bonus, wheel diameter (if applicable) (column 2) epower, wheel width (if applicable) if( part->size > 0 && part->has_flag( VPFLAG_CARGO ) ) { fold_and_print( w_details, line+3, col_1, column_width, c_white, - "%s: %d", small_mode ? _( "Cap" ) : _( "Capacity" ), - to_milliliter( part->size ) ); + "%s: %s %s", small_mode ? _( "Cap" ) : _( "Capacity" ), + format_volume( part->size ).c_str(), volume_units_abbr() ); } if( part->bonus > 0 ) { @@ -2455,7 +2453,7 @@ item consume_vpart_item( const vpart_id &vpid ) void act_vehicle_siphon( vehicle *veh ) { std::vector fuels; bool has_liquid = false; - for( const vpart_reference &vp : veh->get_parts_including_broken( VPFLAG_FLUIDTANK ) ) { + for( const vpart_reference &vp : veh->get_any_parts( VPFLAG_FLUIDTANK ) ) { if( vp.part().get_base().contents_made_of( LIQUID ) ) { has_liquid = true; break; @@ -2556,7 +2554,7 @@ void veh_interact::complete_vehicle() const vpart_info &vpinfo = part_id.obj(); // cmd = Install Repair reFill remOve Siphon Unload Changetire reName relAbel - switch( (char) g->u.activity.index ) { + switch( static_cast( g->u.activity.index ) ) { case 'i': { auto inv = g->u.crafting_inventory(); @@ -2590,7 +2588,7 @@ void veh_interact::complete_vehicle() g->u.invalidate_crafting_inventory(); - int partnum = !base.is_null() ? veh->install_part( dx, dy, part_id, std::move( base ) ) : -1; + int partnum = !base.is_null() ? veh->install_part( point( dx, dy ), part_id, std::move( base ) ) : -1; if(partnum < 0) { debugmsg( "complete_vehicle install part fails dx=%d dy=%d id=%s", dx, dy, part_id.c_str() ); break; @@ -2747,7 +2745,7 @@ void veh_interact::complete_vehicle() } } else { - auto pieces = veh->pieces_for_broken_part( vehicle_part ); + auto pieces = veh->parts[vehicle_part].pieces_for_broken_part(); resulting_items.insert(resulting_items.end(), pieces.begin(), pieces.end()); } @@ -2769,18 +2767,17 @@ void veh_interact::complete_vehicle() case 'c': std::vector parts = veh->parts_at_relative( point( dx, dy ), true ); - if( parts.size() ) { - item removed_wheel; + if( !parts.empty() ) { int replaced_wheel = veh->part_with_feature( parts[0], "WHEEL", false ); if( replaced_wheel == -1 ) { debugmsg( "no wheel to remove when changing wheels." ); return; } bool broken = veh->parts[ replaced_wheel ].is_broken(); - removed_wheel = veh->parts[replaced_wheel].properties_to_item(); + item removed_wheel = veh->parts[replaced_wheel].properties_to_item(); veh->remove_part( replaced_wheel ); veh->part_removal_cleanup(); - int partnum = veh->install_part( dx, dy, part_id, consume_vpart_item( part_id ) ); + int partnum = veh->install_part( point( dx, dy ), part_id, consume_vpart_item( part_id ) ); if( partnum < 0 ) { debugmsg( "complete_vehicle tire change fails dx=%d dy=%d id=%s", dx, dy, part_id.c_str() ); } diff --git a/src/veh_interact.h b/src/veh_interact.h index 412f324621379..66b0b5af118bc 100644 --- a/src/veh_interact.h +++ b/src/veh_interact.h @@ -2,19 +2,17 @@ #ifndef VEH_INTERACT_H #define VEH_INTERACT_H -#include "inventory.h" -#include "input.h" -#include "cursesdef.h" -#include "string_id.h" #include "color.h" -#include "int_id.h" -#include "requirements.h" +#include "cursesdef.h" +#include "input.h" +#include "inventory.h" #include "player_activity.h" +#include "requirements.h" +#include "string_id.h" -#include -#include #include #include +#include class vpart_info; using vpart_id = string_id; diff --git a/src/veh_type.cpp b/src/veh_type.cpp index aa89037eb3ac7..0071ae0a2c573 100644 --- a/src/veh_type.cpp +++ b/src/veh_type.cpp @@ -1,25 +1,26 @@ #include "veh_type.h" -#include "requirements.h" -#include "vehicle.h" + +#include "ammo.h" +#include "character.h" +#include "color.h" #include "debug.h" +#include "flag.h" +#include "generic_factory.h" +#include "init.h" #include "item_group.h" +#include "itype.h" #include "json.h" -#include "translations.h" +#include "output.h" +#include "requirements.h" #include "string_formatter.h" -#include "color.h" -#include "itype.h" -#include "ammo.h" +#include "translations.h" +#include "vehicle.h" #include "vehicle_group.h" -#include "init.h" -#include "output.h" -#include "generic_factory.h" -#include "character.h" -#include "flag.h" +#include +#include #include #include -#include -#include const skill_id skill_mechanics( "mechanics" ); @@ -143,7 +144,7 @@ static void parse_vp_reqs( JsonObject &obj, const std::string &id, const std::st requirement_data::load_requirement( src, req_id ); reqs = { { req_id, 1 } }; } -}; +} /** * Reads engine info from a JsonObject. @@ -877,7 +878,7 @@ void vehicle_prototype::finalize() continue; } - if( blueprint.install_part( pt.pos.x, pt.pos.y, pt.part ) < 0 ) { + if( blueprint.install_part( pt.pos, pt.part ) < 0 ) { debugmsg( "init_vehicles: '%s' part '%s'(%d) can't be installed to %d,%d", blueprint.name.c_str(), pt.part.c_str(), blueprint.parts.size(), pt.pos.x, pt.pos.y ); diff --git a/src/veh_type.h b/src/veh_type.h index b87eb55a7f2f4..adff647f6450d 100644 --- a/src/veh_type.h +++ b/src/veh_type.h @@ -2,21 +2,22 @@ #ifndef VEH_TYPE_H #define VEH_TYPE_H -#include "string_id.h" -#include "enums.h" +#include "calendar.h" #include "color.h" #include "damage.h" -#include "calendar.h" -#include "units.h" +#include "enums.h" #include "optional.h" +#include "string_id.h" +#include "units.h" -#include +#include #include -#include -#include #include +#include +#include +#include #include -#include +#include using itype_id = std::string; diff --git a/src/veh_utils.cpp b/src/veh_utils.cpp index 315ebf1844f53..b37ca48e806d2 100644 --- a/src/veh_utils.cpp +++ b/src/veh_utils.cpp @@ -1,15 +1,17 @@ #include "veh_utils.h" -#include -#include #include "calendar.h" #include "craft_command.h" -#include "vehicle.h" +#include "game.h" +#include "messages.h" +#include "map.h" #include "output.h" -#include "veh_type.h" #include "player.h" -#include "messages.h" -#include "game.h" +#include "veh_type.h" +#include "vehicle.h" + +#include +#include namespace veh_utils { @@ -139,9 +141,9 @@ bool repair_part( vehicle &veh, vehicle_part &pt, Character &who_c ) const int dir = pt.direction; point loc = pt.mount; auto replacement_id = pt.info().get_id(); - veh.break_part_into_pieces( part_index, who.posx(), who.posy() ); + g->m.spawn_items( who.pos(), pt.pieces_for_broken_part() ); veh.remove_part( part_index ); - const int partnum = veh.install_part( loc.x, loc.y, replacement_id, std::move( base ) ); + const int partnum = veh.install_part( loc, replacement_id, std::move( base ) ); veh.parts[partnum].direction = dir; veh.part_removal_cleanup(); } else { diff --git a/src/veh_utils.h b/src/veh_utils.h index 7f5435f1629d3..0a2d2bb9ddfa8 100644 --- a/src/veh_utils.h +++ b/src/veh_utils.h @@ -1,4 +1,7 @@ #pragma once +#ifndef VEH_UTILS_H +#define VEH_UTILS_H + #include "string_id.h" class vehicle; @@ -26,4 +29,6 @@ vehicle_part &most_repairable_part( vehicle &veh, const Character &who, * Awards xp and consumes components. */ bool repair_part( vehicle &veh, vehicle_part &part, Character &who ); -} \ No newline at end of file +} + +#endif diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 75ed4d866c276..b378cfcddd643 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1,73 +1,63 @@ #include "vehicle.h" +#include "ammo.h" +#include "cata_utility.h" #include "coordinate_conversions.h" -#include "map.h" -#include "mapbuffer.h" -#include "output.h" +#include "debug.h" #include "game.h" #include "item.h" #include "item_group.h" -#include "veh_interact.h" -#include "cursesdef.h" -#include "catacharset.h" -#include "overmapbuffer.h" +#include "itype.h" +#include "json.h" +#include "map.h" +#include "map_iterator.h" +#include "mapbuffer.h" +#include "mapdata.h" #include "messages.h" -#include "vpart_position.h" -#include "vpart_reference.h" -#include "string_formatter.h" -#include "ui.h" -#include "debug.h" +#include "output.h" +#include "overmapbuffer.h" #include "sounds.h" +#include "string_formatter.h" +#include "submap.h" #include "translations.h" -#include "ammo.h" -#include "options.h" -#include "monster.h" -#include "npc.h" +#include "veh_interact.h" #include "veh_type.h" +#include "vehicle_selector.h" +#include "vpart_position.h" #include "vpart_range.h" -#include "itype.h" -#include "submap.h" -#include "mapdata.h" +#include "vpart_reference.h" #include "weather.h" -#include "json.h" -#include "map_iterator.h" -#include "vehicle_selector.h" -#include "cata_utility.h" -#include -#include -#include -#include -#include -#include -#include #include +#include #include +#include +#include +#include +#include +#include +#include #include /* * Speed up all those if ( blarg == "structure" ) statements that are used everywhere; * assemble "structure" once here instead of repeatedly later. */ -static const itype_id fuel_type_none( "null" ); -static const itype_id fuel_type_gasoline( "gasoline" ); -static const itype_id fuel_type_diesel( "diesel" ); static const itype_id fuel_type_battery( "battery" ); -static const itype_id fuel_type_water( "water_clean" ); static const itype_id fuel_type_muscle( "muscle" ); +static const itype_id fuel_type_plutonium_cell( "plut_cell" ); static const std::string part_location_structure( "structure" ); static const fault_id fault_belt( "fault_engine_belt_drive" ); -static const fault_id fault_diesel( "fault_engine_pump_diesel" ); -static const fault_id fault_glowplug( "fault_engine_glow_plug" ); static const fault_id fault_immobiliser( "fault_engine_immobiliser" ); -static const fault_id fault_pump( "fault_engine_pump_fuel" ); -static const fault_id fault_starter( "fault_engine_starter" ); static const fault_id fault_filter_air( "fault_engine_filter_air" ); static const fault_id fault_filter_fuel( "fault_engine_filter_fuel" ); const skill_id skill_mechanics( "mechanics" ); +// 1 kJ per battery charge +const int bat_energy_j = 1000; + inline int modulo( int v, int m ); // // Point dxs for the adjacent cardinal tiles. @@ -93,7 +83,8 @@ void vehicle_stack::insert_at( std::list::iterator index, units::volume vehicle_stack::max_volume() const { if( myorigin->part_flag( part_num, "CARGO" ) && myorigin->parts[part_num].is_available() ) { - return myorigin->parts[part_num].info().size; + // Set max volume for vehicle cargo to prevent integer overflow + return std::min( myorigin->parts[part_num].info().size, 10000000_ml ); } return 0; } @@ -152,7 +143,7 @@ bool vehicle::remote_controlled( player const &p ) const return false; } - for( const vpart_reference &vp : get_parts( "REMOTE_CONTROLS" ) ) { + for( const vpart_reference &vp : get_avail_parts( "REMOTE_CONTROLS" ) ) { if( rl_dist( p.pos(), vp.pos() ) <= 40 ) { return true; } @@ -168,30 +159,25 @@ bool vehicle::remote_controlled( player const &p ) const void vehicle::add_missing_frames() { static const vpart_id frame_id( "frame_vertical" ); - const vpart_info &frame_part = frame_id.obj(); // NOT static, could be different each time - //No need to check the same (x, y) spot more than once - std::set< std::pair > locations_checked; + //No need to check the same spot more than once + std::set locations_checked; for( auto &i : parts ) { - int next_x = i.mount.x; - int next_y = i.mount.y; - std::pair mount_location = std::make_pair( next_x, next_y ); - - if( locations_checked.count( mount_location ) == 0 ) { - std::vector parts_here = parts_at_relative( point( next_x, next_y ), false ); - bool found = false; - for( auto &elem : parts_here ) { - if( part_info( elem ).location == part_location_structure ) { - found = true; - break; - } - } - if( !found ) { - // Install missing frame - parts.emplace_back( frame_part.get_id(), next_x, next_y, item( frame_part.item ) ); - } + if( locations_checked.count( i.mount ) != 0 ) { + continue; } + locations_checked.insert( i.mount ); - locations_checked.insert( mount_location ); + bool found = false; + for( auto &elem : parts_at_relative( i.mount, false ) ) { + if( part_info( elem ).location == part_location_structure ) { + found = true; + break; + } + } + if( !found ) { + // Install missing frame + parts.emplace_back( frame_id, i.mount, item( frame_id->item ) ); + } } } @@ -204,7 +190,7 @@ void vehicle::add_steerable_wheels() // Find wheels that have steerable versions. // Convert the wheel(s) with the largest x value. - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { if( vp.has_feature( "STEERABLE" ) || vp.has_feature( "TRACKED" ) ) { // Has a wheel that is inherently steerable // (e.g. unicycle, casters), this vehicle doesn't @@ -315,7 +301,7 @@ void vehicle::init_state( int init_veh_fuel, int init_veh_status ) //Provide some variety to non-mint vehicles if( veh_status != 0 ) { //Leave engine running in some vehicles, if the engine has not been destroyed - if( veh_fuel_mult > 0 && !empty( get_parts( "ENGINE" ) ) && + if( veh_fuel_mult > 0 && !empty( get_avail_parts( "ENGINE" ) ) && one_in( 8 ) && !destroyEngine && !has_no_key && has_engine_type_not( fuel_type_muscle, true ) ) { engine_on = true; } @@ -347,23 +333,21 @@ void vehicle::init_state( int init_veh_fuel, int init_veh_status ) blood_inside = true; } - for( const vpart_reference &vp : get_parts( "FRIDGE" ) ) { + for( const vpart_reference &vp : get_parts_including_carried( "FRIDGE" ) ) { vp.part().enabled = true; } - for( const vpart_reference &vp : get_parts( "FREEZER" ) ) { + for( const vpart_reference &vp : get_parts_including_carried( "FREEZER" ) ) { vp.part().enabled = true; } - for( const vpart_reference &vp : get_parts( "WATER_PURIFIER" ) ) { + for( const vpart_reference &vp : get_parts_including_carried( "WATER_PURIFIER" ) ) { vp.part().enabled = true; } } - bool blood_inside_set = false; - int blood_inside_x = 0; - int blood_inside_y = 0; - for( const vpart_reference &vp : get_parts() ) { + cata::optional blood_inside_pos; + for( const vpart_reference &vp : get_all_parts() ) { const size_t p = vp.part_index(); vehicle_part &pt = vp.part(); @@ -466,19 +450,17 @@ void vehicle::init_state( int init_veh_fuel, int init_veh_status ) } if( blood_inside ) { - // blood is splattered around (blood_inside_x, blood_inside_y), + // blood is splattered around (blood_inside_pos), // coordinates relative to mount point; the center is always a seat - if( blood_inside_set ) { - int distSq = std::pow( ( blood_inside_x - vp.mount().x ), 2 ) + - std::pow( ( blood_inside_y - vp.mount().y ), 2 ); + if( blood_inside_pos ) { + const int distSq = std::pow( blood_inside_pos->x - vp.mount().x, 2 ) + + std::pow( blood_inside_pos->y - vp.mount().y, 2 ); if( distSq <= 1 ) { pt.blood = rng( 200, 400 ) - distSq * 100; } } else if( vp.has_feature( "SEAT" ) ) { // Set the center of the bloody mess inside - blood_inside_x = vp.mount().x; - blood_inside_y = vp.mount().y; - blood_inside_set = true; + blood_inside_pos.emplace( vp.mount() ); } } } @@ -540,8 +522,8 @@ void vehicle::smash( float hp_percent_loss_min, float hp_percent_loss_max, int roll = dice( 1, 1000 ); int pct_af = ( percent_of_parts_to_affect * 1000.0f ); if( roll < pct_af ) { - point line = ( damage_origin - part.precalc[0] ); - float dist = 1.0f - ( std::sqrt( line.x * line.x + line.y * line.y ) / damage_size ); + float dist = 1.0f - trig_dist( damage_origin.x, damage_origin.y, part.precalc[0].x, + part.precalc[0].y ) / damage_size; dist = clamp( dist, 0.0f, 1.0f ); if( damage_size == 0 ) { dist = 1.0f; @@ -686,15 +668,15 @@ bool vehicle::has_security_working() const void vehicle::backfire( const int e ) const { - const int power = part_power( engines[e], true ); + const int power = part_vpower_w( engines[e], true ); const tripoint pos = global_part_pos3( engines[e] ); //~ backfire sound - sounds::ambient_sound( pos, 40 + ( power / 30 ), _( "BANG!" ) ); + sounds::ambient_sound( pos, 40 + power / 10000, _( "BANG!" ) ); } const vpart_info &vehicle::part_info( int index, bool include_removed ) const { - if( index < ( int )parts.size() ) { + if( index < static_cast( parts.size() ) ) { if( !parts[index].removed || include_removed ) { return parts[index].info(); } @@ -704,23 +686,19 @@ const vpart_info &vehicle::part_info( int index, bool include_removed ) const // engines & alternators all have power. // engines provide, whilst alternators consume. -int vehicle::part_power( int const index, bool const at_full_hp ) const +int vehicle::part_vpower_w( int const index, bool const at_full_hp ) const { - if( !part_flag( index, VPFLAG_ENGINE ) && - !part_flag( index, VPFLAG_ALTERNATOR ) ) { - return 0; // not an engine. - } - const vehicle_part &vp = parts[ index ]; int pwr = vp.info().power; - if( pwr == 0 ) { - pwr = vp.base.engine_displacement(); + if( part_flag( index, VPFLAG_ENGINE ) ) { + if( pwr == 0 ) { + pwr = vhp_to_watts( vp.base.engine_displacement() ); + } + ///\EFFECT_STR increases power produced for MUSCLE_* vehicles + pwr += ( g->u.str_cur - 8 ) * part_info( index ).engine_muscle_power_factor(); } - ///\EFFECT_STR increases power produced for MUSCLE_* vehicles - pwr += ( g->u.str_cur - 8 ) * part_info( index ).engine_muscle_power_factor(); - if( pwr < 0 ) { return pwr; // Consumers always draw full power, even if broken } @@ -733,13 +711,13 @@ int vehicle::part_power( int const index, bool const at_full_hp ) const // provides a floor otherwise float dpf = part_info( index ).engine_damaged_power_factor(); double effective_percent = dpf + ( ( 1 - dpf ) * health ); - return ( int )( pwr * effective_percent ); + return static_cast( pwr * effective_percent ); } // alternators, solar panels, reactors, and accessories all have epower. // alternators, solar panels, and reactors provide, whilst accessories consume. // for motor consumption see @ref vpart_info::energy_consumption instead -int vehicle::part_epower( int const index ) const +int vehicle::part_epower_w( int const index ) const { int e = part_info( index ).epower; if( e < 0 ) { @@ -748,34 +726,30 @@ int vehicle::part_epower( int const index ) const return e * parts[ index ].health_percent(); } -int vehicle::epower_to_power( int const epower ) +int vehicle::power_to_energy_bat( const int power_w, const time_duration t ) const { - // Convert epower units (watts) to power units - // Used primarily for calculating battery charge/discharge - // TODO: convert batteries to use energy units based on watts (watt-ticks?) - constexpr int conversion_factor = 373; // 373 epower == 373 watts == 1 power == 0.5 HP - int power = epower / conversion_factor; - // epower remainder results in chance at additional charge/discharge - if( x_in_y( abs( epower % conversion_factor ), conversion_factor ) ) { - power += epower >= 0 ? 1 : -1; - } - return power; + // Integrate constant epower (watts) over time to get units of battery energy + int seconds = static_cast( to_minutes( t ) * 60 ); + int energy_j = power_w * seconds; + int energy_bat = energy_j / bat_energy_j; + int sign = power_w >= 0 ? 1 : -1; + // energy_bat remainder results in chance at additional charge/discharge + energy_bat += x_in_y( abs( energy_j % bat_energy_j ), bat_energy_j ) ? sign : 0; + return energy_bat; } -int vehicle::power_to_epower( int const power ) +int vehicle::vhp_to_watts( int const power_vhp ) { - // Convert power units to epower units (watts) + // Convert vhp units (0.5 HP ) to watts // Used primarily for calculating battery charge/discharge // TODO: convert batteries to use energy units based on watts (watt-ticks?) - constexpr int conversion_factor = 373; // 373 epower == 373 watts == 1 power == 0.5 HP - return power * conversion_factor; + constexpr int conversion_factor = 373; // 373 watts == 1 power_vhp == 0.5 HP + return power_vhp * conversion_factor; } -bool vehicle::has_structural_part( int const dx, int const dy ) const +bool vehicle::has_structural_part( const point dp ) const { - std::vector parts_here = parts_at_relative( point( dx, dy ), false ); - - for( auto &elem : parts_here ) { + for( const int elem : parts_at_relative( dp, false ) ) { if( part_info( elem ).location == part_location_structure && !part_info( elem ).has_flag( "PROTRUSION" ) ) { return true; @@ -790,7 +764,7 @@ bool vehicle::has_structural_part( int const dx, int const dy ) const * */ bool vehicle::is_structural_part_removed() const { - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { if( vp.part().removed && vp.info().location == part_location_structure ) { return true; } @@ -801,12 +775,11 @@ bool vehicle::is_structural_part_removed() const /** * Returns whether or not the vehicle part with the given id can be mounted in * the specified square. - * @param dx The local x-coordinate to mount in. - * @param dy The local y-coordinate to mount in. + * @param dp The local coordinate to mount in. * @param id The id of the part to install. * @return true if the part can be mounted, false if not. */ -bool vehicle::can_mount( int const dx, int const dy, const vpart_id &id ) const +bool vehicle::can_mount( const point dp, const vpart_id &id ) const { //The part has to actually exist. if( !id.is_valid() ) { @@ -819,7 +792,7 @@ bool vehicle::can_mount( int const dx, int const dy, const vpart_id &id ) const return false; } - const std::vector parts_in_square = parts_at_relative( point( dx, dy ), false ); + const std::vector parts_in_square = parts_at_relative( dp, false ); //First part in an empty square MUST be a structural part if( parts_in_square.empty() && part.location != part_location_structure ) { @@ -852,11 +825,11 @@ bool vehicle::can_mount( int const dx, int const dy, const vpart_id &id ) const // the exception is when a single tile only structural object is being repaired if( !parts.empty() ) { if( !is_structural_part_removed() && - !has_structural_part( dx, dy ) && - !has_structural_part( dx + 1, dy ) && - !has_structural_part( dx, dy + 1 ) && - !has_structural_part( dx - 1, dy ) && - !has_structural_part( dx, dy - 1 ) ) { + !has_structural_part( dp ) && + !has_structural_part( dp + point( +1, 0 ) ) && + !has_structural_part( dp + point( 0, +1 ) ) && + !has_structural_part( dp + point( -1, 0 ) ) && + !has_structural_part( dp + point( 0, -1 ) ) ) { return false; } } @@ -1028,13 +1001,10 @@ bool vehicle::can_unmount( int const p ) const bool vehicle::can_unmount( int const p, std::string &reason ) const { - if( p < 0 || p > ( int )parts.size() ) { + if( p < 0 || p > static_cast( parts.size() ) ) { return false; } - int dx = parts[p].mount.x; - int dy = parts[p].mount.y; - // Can't remove an engine if there's still an alternator there if( part_flag( p, VPFLAG_ENGINE ) && part_with_feature( p, VPFLAG_ALTERNATOR, true ) >= 0 ) { reason = _( "Remove attached alternator first." ); @@ -1080,7 +1050,7 @@ bool vehicle::can_unmount( int const p, std::string &reason ) const //Structural parts have extra requirements if( part_info( p ).location == part_location_structure ) { - std::vector parts_in_square = parts_at_relative( point( dx, dy ), false ); + std::vector parts_in_square = parts_at_relative( parts[p].mount, false ); /* To remove a structural part, there can be only structural parts left * in that square (might be more than one in the case of wreckage) */ for( auto &elem : parts_in_square ) { @@ -1103,9 +1073,9 @@ bool vehicle::can_unmount( int const p, std::string &reason ) const std::vector connected_parts; for( int i = 0; i < 4; i++ ) { - int next_x = i < 2 ? ( i == 0 ? -1 : 1 ) : 0; - int next_y = i < 2 ? 0 : ( i == 2 ? -1 : 1 ); - std::vector parts_over_there = parts_at_relative( point( dx + next_x, dy + next_y ), false ); + const point next = parts[p].mount + point( i < 2 ? ( i == 0 ? -1 : 1 ) : 0, + i < 2 ? 0 : ( i == 2 ? -1 : 1 ) ); + std::vector parts_over_there = parts_at_relative( next, false ); //Ignore empty squares if( !parts_over_there.empty() ) { //Just need one part from the square to track the x/y @@ -1214,29 +1184,28 @@ bool vehicle::is_connected( vehicle_part const &to, vehicle_part const &from, /** * Installs a part into this vehicle. - * @param dx The x coordinate of where to install the part. - * @param dy The y coordinate of where to install the part. + * @param dp The coordinate of where to install the part. * @param id The string ID of the part to install. (see vehicle_parts.json) * @param force Skip check of whether we can mount the part here. * @return false if the part could not be installed, true otherwise. */ -int vehicle::install_part( int dx, int dy, const vpart_id &id, bool force ) +int vehicle::install_part( const point dp, const vpart_id &id, bool force ) { - if( !( force || can_mount( dx, dy, id ) ) ) { + if( !( force || can_mount( dp, id ) ) ) { return -1; } - return install_part( dx, dy, vehicle_part( id, dx, dy, item( id.obj().item ) ) ); + return install_part( dp, vehicle_part( id, dp, item( id.obj().item ) ) ); } -int vehicle::install_part( int dx, int dy, const vpart_id &id, item &&obj, bool force ) +int vehicle::install_part( const point dp, const vpart_id &id, item &&obj, bool force ) { - if( !( force || can_mount( dx, dy, id ) ) ) { + if( !( force || can_mount( dp, id ) ) ) { return -1; } - return install_part( dx, dy, vehicle_part( id, dx, dy, std::move( obj ) ) ); + return install_part( dp, vehicle_part( id, dp, std::move( obj ) ) ); } -int vehicle::install_part( int dx, int dy, const vehicle_part &new_part ) +int vehicle::install_part( const point dp, const vehicle_part &new_part ) { // Should be checked before installing the part bool enable = false; @@ -1277,8 +1246,7 @@ int vehicle::install_part( int dx, int dy, const vehicle_part &new_part ) pt.enabled = enable; - pt.mount.x = dx; - pt.mount.y = dy; + pt.mount = dp; refresh(); return parts.size() - 1; @@ -1395,7 +1363,7 @@ bool vehicle::merge_rackable_vehicle( vehicle *carry_veh, const std::vector vehicle_part &carried_part = parts.back(); carried_part.mount = carry_map.carry_mount; carried_part.carry_names.push( unique_id ); - carried_part.enabled = 0; + carried_part.enabled = false; carried_part.set_flag( vehicle_part::carried_flag ); parts[ carry_map.rack_part ].set_flag( vehicle_part::carrying_flag ); } @@ -1419,7 +1387,7 @@ bool vehicle::merge_rackable_vehicle( vehicle *carry_veh, const std::vector */ bool vehicle::remove_part( int p ) { - if( p >= ( int )parts.size() ) { + if( p >= static_cast( parts.size() ) ) { debugmsg( "Tried to remove part %d but only %d parts!", p, parts.size() ); return false; } @@ -1526,7 +1494,7 @@ bool vehicle::remove_part( int p ) } const point &vp_mount = parts[p].mount; - const auto iter = labels.find( label( vp_mount.x, vp_mount.y ) ); + const auto iter = labels.find( label( vp_mount ) ); const bool no_label = iter != labels.end(); const bool grab_found = g->u.get_grab_type() == OBJECT_VEHICLE && g->u.grab_point == part_loc; // Checking these twice to avoid calling the relatively expensive parts_at_relative() unnecessarily. @@ -1670,8 +1638,7 @@ bool vehicle::find_and_split_vehicles( int exclude ) std::vector> all_vehicles; - size_t cnt; - for( cnt = 0 ; cnt < 4 ; cnt++ ) { + for( size_t cnt = 0 ; cnt < 4 ; cnt++ ) { int test_part = -1; for( auto p : valid_parts ) { if( parts[ p ].removed ) { @@ -1711,9 +1678,8 @@ bool vehicle::find_and_split_vehicles( int exclude ) } checked_parts.insert( test_part ); for( size_t i = 0; i < 4; i++ ) { - int dx = parts[ test_part ].mount.x + vehicles::cardinal_d[ i ].x; - int dy = parts[ test_part ].mount.y + vehicles::cardinal_d[ i ].y; - std::vector all_neighbor_parts = parts_at_relative( point( dx, dy ), true ); + const point dp = parts[test_part].mount + vehicles::cardinal_d[ i ]; + std::vector all_neighbor_parts = parts_at_relative( dp, true ); int neighbor_struct_part = -1; for( int p : all_neighbor_parts ) { if( parts[ p ].removed ) { @@ -1748,7 +1714,7 @@ bool vehicle::find_and_split_vehicles( int exclude ) void vehicle::relocate_passengers( const std::vector &passengers ) { - const auto boardables = get_parts( "BOARDABLE" ); + const auto boardables = get_avail_parts( "BOARDABLE" ); for( player *passenger : passengers ) { for( const vpart_reference &vp : boardables ) { if( vp.part().passenger_id == passenger->getID() ) { @@ -1833,8 +1799,6 @@ bool vehicle::split_vehicles( const std::vector> &new_vehs, passengers.push_back( passenger ); } } - - // transfer the vehicle_part to the new vehicle new_vehicle->parts.emplace_back( parts[ mov_part ] ); if( !split_mounts.empty() ) { @@ -1842,12 +1806,11 @@ bool vehicle::split_vehicles( const std::vector> &new_vehs, new_vehicle->parts.back().mount = new_mount; } // remove labels associated with the mov_part - std::string label_str; - const auto iter = labels.find( label( cur_mount.x, cur_mount.y ) ); + const auto iter = labels.find( label( cur_mount ) ); if( iter != labels.end() ) { - label_str = iter->text; + std::string label_str = iter->text; labels.erase( iter ); - new_labels.insert( label( new_mount.x, new_mount.y, label_str ) ); + new_labels.insert( label( new_mount, label_str ) ); } // remove the passenger from the old new vehicle if( passenger ) { @@ -1905,9 +1868,10 @@ int vehicle::find_part( const item &it ) const return idx != parts.end() ? std::distance( parts.begin(), idx ) : INT_MIN; } -item_group::ItemList vehicle::pieces_for_broken_part( int p ) +item_group::ItemList vehicle_part::pieces_for_broken_part() const { - const std::string &group = part_info( p ).breaks_into_group; + const std::string &group = info().breaks_into_group; + // @todo make it optional? Or use id of empty item group? if( group.empty() ) { return {}; } @@ -1915,34 +1879,14 @@ item_group::ItemList vehicle::pieces_for_broken_part( int p ) return item_group::items_from( group, calendar::turn ); } -/** - * Breaks the specified part into the pieces defined by its breaks_into entry. - * @param p The index of the part to break. - * @param x The map x-coordinate to place pieces at (give or take). - * @param y The map y-coordinate to place pieces at (give or take). - * @param scatter If true, pieces are scattered near the target square. - */ -void vehicle::break_part_into_pieces( int p, int x, int y, bool scatter ) -{ - for( item &piece : pieces_for_broken_part( p ) ) { - // TODO: balance audit, ensure that less pieces are generated than one would need - // to build the component (smash a vehicle box that took 10 lumps of steel, - // find 12 steel lumps scattered after atom-smashing it with a tree trunk) - const int actual_x = scatter ? x + rng( -SCATTER_DISTANCE, SCATTER_DISTANCE ) : x; - const int actual_y = scatter ? y + rng( -SCATTER_DISTANCE, SCATTER_DISTANCE ) : y; - tripoint dest( actual_x, actual_y, smz ); - g->m.add_item_or_charges( dest, piece ); - } -} - std::vector vehicle::parts_at_relative( const point &dp, bool const use_cache ) const { if( !use_cache ) { std::vector res; - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { if( vp.mount() == dp && !vp.part().removed ) { - res.push_back( ( int )vp.part_index() ); + res.push_back( static_cast( vp.part_index() ) ); } } return res; @@ -1971,6 +1915,15 @@ cata::optional vpart_position::obstacle_at_part() const return part; } +cata::optional vpart_position::part_displayed() const +{ + int part_id = vehicle().part_displayed_at( mount() ); + if( part_id == -1 ) { + return cata::nullopt; + } + return vpart_reference( vehicle(), part_id ); +} + cata::optional vpart_position::part_with_feature( const std::string &f, const bool unbroken ) const { @@ -2008,6 +1961,11 @@ cata::optional optional_vpart_position::obstacle_at_part() cons return has_value() ? value().obstacle_at_part() : cata::nullopt; } +cata::optional optional_vpart_position::part_displayed() const +{ + return has_value() ? value().part_displayed() : cata::nullopt; +} + int vehicle::part_with_feature( int part, vpart_bitflags const flag, bool unbroken ) const { if( part_flag( part, flag ) && ( !unbroken || !parts[part].is_broken() ) ) { @@ -2087,8 +2045,8 @@ bool vehicle::has_part( const tripoint &pos, const std::string &flag, bool enabl return false; } -std::vector vehicle::get_parts( const tripoint &pos, const std::string &flag, - bool enabled, bool include_broken_parts ) +std::vector vehicle::get_parts_at( const tripoint &pos, const std::string &flag, + const part_status_flag condition ) { const tripoint relative_pos = pos - global_pos3(); std::vector res; @@ -2096,16 +2054,19 @@ std::vector vehicle::get_parts( const tripoint &pos, const std:: if( e.precalc[ 0 ].x != relative_pos.x || e.precalc[ 0 ].y != relative_pos.y ) { continue; } - if( !e.removed && ( !enabled || e.enabled ) && ( !e.is_broken() || include_broken_parts ) && - ( flag.empty() || e.info().has_flag( flag ) ) ) { + if( !e.removed && + ( flag.empty() || e.info().has_flag( flag ) ) && + ( !( condition & part_status_flag::enabled ) || e.enabled ) && + ( !( condition & part_status_flag::working ) || !e.is_broken() ) ) { res.push_back( &e ); } } return res; } -std::vector vehicle::get_parts( const tripoint &pos, const std::string &flag, - bool enabled, bool include_broken_parts ) const +std::vector vehicle::get_parts_at( const tripoint &pos, + const std::string &flag, + const part_status_flag condition ) const { const tripoint relative_pos = pos - global_pos3(); std::vector res; @@ -2113,8 +2074,10 @@ std::vector vehicle::get_parts( const tripoint &pos, const if( e.precalc[ 0 ].x != relative_pos.x || e.precalc[ 0 ].y != relative_pos.y ) { continue; } - if( !e.removed && ( !enabled || e.enabled ) && ( !e.is_broken() || include_broken_parts ) && - ( flag.empty() || e.info().has_flag( flag ) ) ) { + if( !e.removed && + ( flag.empty() || e.info().has_flag( flag ) ) && + ( !( condition & part_status_flag::enabled ) || e.enabled ) && + ( !( condition & part_status_flag::working ) || !e.is_broken() ) ) { res.push_back( &e ); } } @@ -2123,7 +2086,7 @@ std::vector vehicle::get_parts( const tripoint &pos, const cata::optional vpart_position::get_label() const { - const auto it = vehicle().labels.find( label( mount().x, mount().y ) ); + const auto it = vehicle().labels.find( label( mount() ) ); if( it == vehicle().labels.end() ) { return cata::nullopt; } @@ -2137,13 +2100,13 @@ cata::optional vpart_position::get_label() const void vpart_position::set_label( const std::string &text ) const { auto &labels = vehicle().labels; - const auto it = labels.find( label( mount().x, mount().y ) ); + const auto it = labels.find( label( mount() ) ); //@todo empty text should remove the label instead of just storing an empty string, see get_label if( it == labels.end() ) { - labels.insert( label( mount().x, mount().y, text ) ); + labels.insert( label( mount(), text ) ); } else { // labels should really be a map - labels.insert( labels.erase( it ), label( mount().x, mount().y, text ) ); + labels.insert( labels.erase( it ), label( mount(), text ) ); } } @@ -2180,44 +2143,65 @@ int vehicle::next_part_to_open( int p, bool outside ) const return -1; } -vehicle_part_with_feature_range vehicle::get_parts( std::string feature ) const +vehicle_part_with_feature_range vehicle::get_avail_parts( std::string feature ) const { return vehicle_part_with_feature_range( const_cast( *this ), - std::move( feature ), true, false ); + std::move( feature ), + static_cast( part_status_flag::working | + part_status_flag::available ) ); } -vehicle_part_with_feature_range vehicle::get_parts( const vpart_bitflags feature ) -const +vehicle_part_with_feature_range vehicle::get_avail_parts( + const vpart_bitflags feature ) const { return vehicle_part_with_feature_range( const_cast( *this ), feature, - true, false ); + static_cast( part_status_flag::working | + part_status_flag::available ) ); } -vehicle_part_with_feature_range vehicle::get_parts_including_broken( +vehicle_part_with_feature_range vehicle::get_parts_including_carried( std::string feature ) const { return vehicle_part_with_feature_range( const_cast( *this ), - std::move( feature ), false, false ); + std::move( feature ), part_status_flag::working ); +} + +vehicle_part_with_feature_range vehicle::get_parts_including_carried( + const vpart_bitflags feature ) const +{ + return vehicle_part_with_feature_range( const_cast( *this ), feature, + part_status_flag::working ); +} + +vehicle_part_with_feature_range vehicle::get_any_parts( std::string feature ) const +{ + return vehicle_part_with_feature_range( const_cast( *this ), + std::move( feature ), part_status_flag::any ); } -vehicle_part_with_feature_range vehicle::get_parts_including_broken( +vehicle_part_with_feature_range vehicle::get_any_parts( const vpart_bitflags feature ) const { return vehicle_part_with_feature_range( const_cast( *this ), feature, - false, false ); + part_status_flag::any ); } vehicle_part_with_feature_range vehicle::get_enabled_parts( std::string feature ) const { return vehicle_part_with_feature_range( const_cast( *this ), - std::move( feature ), false, true ); + std::move( feature ), + static_cast( part_status_flag::enabled | + part_status_flag::working | + part_status_flag::available ) ); } vehicle_part_with_feature_range vehicle::get_enabled_parts( const vpart_bitflags feature ) const { return vehicle_part_with_feature_range( const_cast( *this ), feature, - false, true ); + static_cast( part_status_flag::enabled | + part_status_flag::working | + part_status_flag::available ) ); } /** @@ -2247,7 +2231,7 @@ std::vector vehicle::all_parts_at_location( const std::string &location ) c */ std::vector> vehicle::find_lines_of_parts( int part, const std::string flag ) { - const auto possible_parts = get_parts( flag ); + const auto possible_parts = get_avail_parts( flag ); std::vector> ret_parts; if( empty( possible_parts ) ) { return ret_parts; @@ -2284,7 +2268,6 @@ std::vector> vehicle::find_lines_of_parts( int part, const std: int i; bool found_part = x_parts[ 0 ] == part; for( i = 1; static_cast( i ) < x_parts.size(); i++ ) { - found_part |= x_parts[ i ] == part; // if the Y difference is > 1, there's a break in the run if( std::abs( parts[ x_parts[ i ] ].mount.y - prev_y ) > 1 ) { // if we found the part, this is the run we wanted @@ -2293,6 +2276,7 @@ std::vector> vehicle::find_lines_of_parts( int part, const std: } first_part = i; } + found_part |= x_parts[ i ] == part; prev_y = parts[ x_parts[ i ] ].mount.y; } for( size_t j = first_part; j < static_cast( i ); j++ ) { @@ -2311,13 +2295,13 @@ std::vector> vehicle::find_lines_of_parts( int part, const std: int i; bool found_part = y_parts[ 0 ] == part; for( i = 1; static_cast( i ) < y_parts.size(); i++ ) { - found_part |= y_parts[ i ] == part; if( std::abs( parts[ y_parts[ i ] ].mount.x - prev_x ) > 1 ) { if( found_part ) { break; } first_part = i; } + found_part |= y_parts[ i ] == part; prev_x = parts[ y_parts[ i ] ].mount.x; } for( size_t j = first_part; j < static_cast( i ); j++ ) { @@ -2333,7 +2317,7 @@ std::vector> vehicle::find_lines_of_parts( int part, const std: bool vehicle::part_flag( int part, const std::string &flag ) const { - if( part < 0 || part >= ( int )parts.size() || parts[part].removed ) { + if( part < 0 || part >= static_cast( parts.size() ) || parts[part].removed ) { return false; } else { return part_info( part ).has_flag( flag ); @@ -2342,28 +2326,23 @@ bool vehicle::part_flag( int part, const std::string &flag ) const bool vehicle::part_flag( int part, const vpart_bitflags flag ) const { - if( part < 0 || part >= ( int )parts.size() || parts[part].removed ) { + if( part < 0 || part >= static_cast( parts.size() ) || parts[part].removed ) { return false; } else { return part_info( part ).has_flag( flag ); } } -int vehicle::part_at( int const dx, int const dy ) const +int vehicle::part_at( const point dp ) const { - for( const vpart_reference &vp : get_parts() ) { - if( vp.part().precalc[0].x == dx && vp.part().precalc[0].y == dy && !vp.part().removed ) { - return ( int )vp.part_index(); + for( const vpart_reference &vp : get_all_parts() ) { + if( vp.part().precalc[0] == dp && !vp.part().removed ) { + return static_cast( vp.part_index() ); } } return -1; } -int vehicle::global_part_at( int const x, int const y ) const -{ - return part_at( x - global_pos3().x, y - global_pos3().y ); -} - /** * Given a vehicle part which is inside of this vehicle, returns the index of * that part. This exists solely because activities relating to vehicle editing @@ -2374,8 +2353,8 @@ int vehicle::global_part_at( int const x, int const y ) const */ int vehicle::index_of_part( const vehicle_part *const part, bool const check_removed ) const { - if( part != NULL ) { - for( const vpart_reference &vp : get_parts() ) { + if( part != nullptr ) { + for( const vpart_reference &vp : get_all_parts() ) { const vehicle_part &next_part = vp.part(); if( !check_removed && next_part.removed ) { continue; @@ -2392,11 +2371,10 @@ int vehicle::index_of_part( const vehicle_part *const part, bool const check_rem * Returns which part (as an index into the parts list) is the one that will be * displayed for the given square. Returns -1 if there are no parts in that * square. - * @param local_x The local x-coordinate. - * @param local_y The local y-coordinate. + * @param dp The local coordinate. * @return The index of the part that will be displayed. */ -int vehicle::part_displayed_at( int const local_x, int const local_y ) const +int vehicle::part_displayed_at( const point dp ) const { // Z-order is implicitly defined in game::load_vehiclepart, but as // numbers directly set on parts rather than constants that can be @@ -2404,7 +2382,7 @@ int vehicle::part_displayed_at( int const local_x, int const local_y ) const // it's clear where the magic number comes from. const int ON_ROOF_Z = 9; - std::vector parts_in_square = parts_at_relative( point( local_x, local_y ), true ); + std::vector parts_in_square = parts_at_relative( dp, true ); if( parts_in_square.empty() ) { return -1; @@ -2519,10 +2497,9 @@ void vehicle::precalc_mounts( int idir, int dir, const point &pivot ) std::vector vehicle::boarded_parts() const { std::vector res; - for( const vpart_reference &vp : get_parts() ) { - if( vp.has_feature( VPFLAG_BOARDABLE ) && - vp.part().has_flag( vehicle_part::passenger_flag ) ) { - res.push_back( ( int )vp.part_index() ); + for( const vpart_reference &vp : get_avail_parts( VPFLAG_BOARDABLE ) ) { + if( vp.part().has_flag( vehicle_part::passenger_flag ) ) { + res.push_back( static_cast( vp.part_index() ) ); } } return res; @@ -2575,7 +2552,7 @@ units::mass vehicle::total_mass() const units::volume vehicle::total_folded_volume() const { units::volume m = 0; - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { if( vp.part().removed ) { continue; } @@ -2648,7 +2625,13 @@ int vehicle::fuel_left( const itype_id &ftype, bool recurse ) const if( vp && &vp->vehicle() == this && player_controlling ) { const int p = part_with_feature( vp->part_index(), VPFLAG_ENGINE, true ); if( p >= 0 && part_info( p ).fuel_type == fuel_type_muscle && is_part_on( p ) ) { - fl += 10; + //Broken limbs prevent muscle engines from working + if( ( part_info( p ).has_flag( "MUSCLE_LEGS" ) && g->u.hp_cur[hp_leg_l] > 0 && + g->u.hp_cur[hp_leg_r] > 0 ) || ( part_info( p ).has_flag( "MUSCLE_ARMS" ) && + g->u.hp_cur[hp_arm_l] > 0 && + g->u.hp_cur[hp_arm_r] > 0 ) ) { + fl += 10; + } } } // As do any other engine flagged as perpetual @@ -2724,12 +2707,12 @@ int vehicle::basic_consumption( const itype_id &ftype ) const for( size_t e = 0; e < engines.size(); ++e ) { if( is_engine_type_on( e, ftype ) ) { if( part_info( engines[e] ).fuel_type == fuel_type_battery && - part_epower( engines[e] ) >= 0 ) { + part_epower_w( engines[e] ) >= 0 ) { // Electric engine - use epower instead - fcon -= epower_to_power( part_epower( engines[e] ) ); + fcon -= part_epower_w( engines[e] ); } else if( !is_perpetual_type( e ) ) { - fcon += part_power( engines[e] ); + fcon += part_vpower_w( engines[e] ); if( parts[ e ].faults().count( fault_filter_air ) ) { fcon *= 2; } @@ -2739,15 +2722,20 @@ int vehicle::basic_consumption( const itype_id &ftype ) const return fcon; } -int vehicle::total_power( bool const fueled ) const +int vehicle::total_power_w( bool const fueled, bool const safe ) const { int pwr = 0; int cnt = 0; for( size_t e = 0; e < engines.size(); e++ ) { int p = engines[e]; - if( is_engine_on( e ) && ( fuel_left( part_info( p ).fuel_type ) || !fueled ) ) { - pwr += part_power( p ); + if( is_engine_on( e ) && + ( !fueled || fuel_left( part_info( p ).fuel_type ) ) ) { + int m2c = safe ? part_info( engines[e] ).engine_m2c() : 100; + if( parts[ engines[e] ].faults().count( fault_filter_fuel ) ) { + m2c *= 0.6; + } + pwr += part_vpower_w( p ) * m2c / 100; cnt++; } } @@ -2755,9 +2743,11 @@ int vehicle::total_power( bool const fueled ) const for( size_t a = 0; a < alternators.size(); a++ ) { int p = alternators[a]; if( is_alternator_on( a ) ) { - pwr += part_power( p ); // alternators have negative power + pwr += part_vpower_w( p ); // alternators have negative power } } + pwr = std::max( 0, pwr ); + if( cnt > 1 ) { pwr = pwr * 4 / ( 4 + cnt - 1 ); } @@ -2775,7 +2765,7 @@ int vehicle::acceleration( bool const fueled ) const ///\EFFECT_STR caps vehicle weight for muscle engines const units::mass move_mass = std::max( g->u.str_cur * 25_gram, 150_gram ) * 1000; if( mass <= move_mass ) { - return ( int )( safe_velocity( fueled ) * k_mass() / ( 1 + strain() ) / 10 ); + return static_cast( safe_velocity( fueled ) * k_mass() / ( 1 + strain() ) / 10 ); } else { return 0; } @@ -2784,16 +2774,23 @@ int vehicle::acceleration( bool const fueled ) const } } +// used to be engine power in 1/2HP * 80 is vmiph, so vmiph = watts / 373 * 80 == watts * 0.214 +static const double watts_to_vmiph = 0.2144772118; int vehicle::max_velocity( bool const fueled ) const { - return total_power( fueled ) * 80; + return total_power_w( fueled ) * watts_to_vmiph; +} + +int vehicle::safe_velocity( bool const fueled ) const +{ + return total_power_w( fueled, true ) * k_dynamics() * k_mass() * watts_to_vmiph; } bool vehicle::do_environmental_effects() { bool needed = false; // check for smoking parts - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { /* Only lower blood level if: * - The part is outside. * - The weather is any effect that would cause the player to be wet. */ @@ -2807,35 +2804,6 @@ bool vehicle::do_environmental_effects() return needed; } -int vehicle::safe_velocity( bool const fueled ) const -{ - int pwrs = 0; - int cnt = 0; - for( size_t e = 0; e < engines.size(); e++ ) { - if( is_engine_on( e ) && - ( !fueled || is_perpetual_type( e ) || - fuel_left( part_info( engines[e] ).fuel_type ) ) ) { - int m2c = part_info( engines[e] ).engine_m2c(); - - if( parts[ engines[e] ].faults().count( fault_filter_fuel ) ) { - m2c *= 0.6; - } - - pwrs += part_power( engines[e] ) * m2c / 100; - cnt++; - } - } - for( int a = 0; a < ( int )alternators.size(); a++ ) { - if( is_alternator_on( a ) ) { - pwrs += part_power( alternators[a] ); // alternator parts have negative power - } - } - if( cnt > 0 ) { - pwrs = pwrs * 4 / ( 4 + cnt - 1 ); - } - return ( int )( pwrs * k_dynamics() * k_mass() ) * 80; -} - void vehicle::spew_smoke( double joules, int part, int density ) { if( rng( 1, 10000 ) > joules ) { @@ -2870,13 +2838,11 @@ void vehicle::noise_and_smoke( double load, double time ) double muffle = 1.0; double m = 0.0; int exhaust_part = -1; - for( const vpart_reference &vp : get_parts() ) { - if( vp.has_feature( "MUFFLER" ) ) { - m = 1.0 - ( 1.0 - vp.info().bonus / 100.0 ) * vp.part().health_percent(); - if( m < muffle ) { - muffle = m; - exhaust_part = int( vp.part_index() ); - } + for( const vpart_reference &vp : get_avail_parts( "MUFFLER" ) ) { + m = 1.0 - ( 1.0 - vp.info().bonus / 100.0 ) * vp.part().health_percent(); + if( m < muffle ) { + muffle = m; + exhaust_part = int( vp.part_index() ); } } @@ -2885,13 +2851,13 @@ void vehicle::noise_and_smoke( double load, double time ) for( size_t e = 0; e < engines.size(); e++ ) { int p = engines[e]; // FIXME: fuel_left should be called with the vehicle_part's fuel_type for flexfuel support - if( is_engine_on( e ) && ( is_perpetual_type( e ) || fuel_left( part_info( p ).fuel_type ) ) ) { + if( is_engine_on( e ) && fuel_left( part_info( p ).fuel_type ) ) { // convert current engine load to units of watts/40K // then spew more smoke and make more noise as the engine load increases - int part_watts = power_to_epower( part_power( p, true ) ); - double max_epwr = double( part_watts / 40000.0 ); - double cur_epwr = load * max_epwr; - double part_noise = cur_epwr * part_info( p ).engine_noise_factor(); + int part_watts = part_vpower_w( p, true ); + double max_stress = static_cast( part_watts / 40000.0 ); + double cur_stress = load * max_stress; + double part_noise = cur_stress * part_info( p ).engine_noise_factor(); if( part_info( p ).has_flag( "E_COMBUSTION" ) ) { double health = parts[p].health_percent(); @@ -2901,7 +2867,7 @@ void vehicle::noise_and_smoke( double load, double time ) if( health < part_info( p ).engine_backfire_threshold() && one_in( 50 + 150 * health ) ) { backfire( e ); } - double j = part_watts * load * time * muffle; + double j = cur_stress * time * muffle; if( parts[ p ].base.faults.count( fault_filter_air ) ) { bad_filter = true; @@ -2913,7 +2879,7 @@ void vehicle::noise_and_smoke( double load, double time ) } else { mufflesmoke += j; } - part_noise = ( part_noise + max_epwr * 3 + 5 ) * muffle; + part_noise = ( part_noise + max_stress * 3 + 5 ) * muffle; } noise = std::max( noise, part_noise ); // Only the loudest engine counts. } @@ -2926,8 +2892,7 @@ void vehicle::noise_and_smoke( double load, double time ) // Even a vehicle with engines off will make noise traveling at high speeds noise = std::max( noise, double( fabs( velocity / 500.0 ) ) ); int lvl = 0; - if( one_in( 4 ) && rng( 0, 30 ) < noise && - has_engine_type_not( fuel_type_muscle, true ) ) { + if( one_in( 4 ) && rng( 0, 30 ) < noise && has_engine_type_not( fuel_type_muscle, true ) ) { while( noise > sound_levels[lvl] ) { lvl++; } @@ -3016,12 +2981,12 @@ float vehicle::k_traction( float wheel_traction_area ) const to_kilogram( total_mass() ); float traction = std::min( 1.0f, wheel_traction_area / mass_penalty ); - add_msg( m_debug, "%s has traction %.2f", name.c_str(), traction ); + add_msg( m_debug, "%s has traction %.2f", name, traction ); // For now make it easy until it gets properly balanced: add a low cap of 0.1 return std::max( 0.1f, traction ); } -float vehicle::drag() const +int vehicle::drag() const { return -extra_drag; } @@ -3036,24 +3001,22 @@ float vehicle::strain() const if( velocity < sv && velocity > -sv ) { return 0; } else { - return ( float )( abs( velocity ) - sv ) / ( float )( mv - sv ); + return static_cast( abs( velocity ) - sv ) / static_cast( mv - sv ); } } bool vehicle::sufficient_wheel_config( bool boat ) const { - const auto floats = get_parts( VPFLAG_FLOATS ); // @todo: Remove the limitations that boats can't move on land - if( boat || !empty( floats ) ) { - return boat && size( floats ) > 2; + if( boat || !floating.empty() ) { + return boat && floating.size() > 2; } - const auto wheels = get_parts( VPFLAG_WHEEL ); - if( empty( wheels ) ) { + if( wheelcache.empty() ) { // No wheels! return false; - } else if( size( wheels ) == 1 ) { + } else if( wheelcache.size() == 1 ) { //Has to be a stable wheel, and one wheel can only support a 1-3 tile vehicle - if( !wheels.begin()->has_feature( "STABLE" ) || + if( !part_info( wheelcache.front() ).has_flag( "STABLE" ) || all_parts_at_location( part_location_structure ).size() > 3 ) { return false; } @@ -3203,7 +3166,7 @@ void vehicle::consume_fuel( double load = 1.0 ) } //do this with chance proportional to current load // But only if the player is actually there! - if( load > 0 && one_in( ( int )( 1 / load ) ) && + if( load > 0 && one_in( static_cast( 1 / load ) ) && fuel_left( fuel_type_muscle ) > 0 ) { //charge bionics when using muscle engine if( g->u.has_bionic( bionic_id( "bio_torsionratchet" ) ) ) { @@ -3253,7 +3216,7 @@ void vehicle::power_parts() if( engine_on ) { for( size_t e = 0; e < engines.size(); ++e ) { if( is_engine_on( e ) ) { - engine_epower += part_epower( engines[e] ); + engine_epower += part_epower_w( engines[e] ); } } @@ -3267,83 +3230,85 @@ void vehicle::power_parts() for( size_t p = 0; p < alternators.size(); ++p ) { if( is_alternator_on( p ) ) { alternators_epower += part_info( alternators[p] ).epower; - alternators_power += part_power( alternators[p] ); + alternators_power += part_vpower_w( alternators[p] ); } } if( alternators_epower > 0 ) { - alternator_load = ( float )abs( alternators_power ); + alternator_load = static_cast( abs( alternators_power ) ); epower += alternators_epower; } } - - int epower_capacity_left = power_to_epower( fuel_capacity( fuel_type_battery ) - fuel_left( - fuel_type_battery ) ); - if( has_part( "REACTOR", true ) && epower_capacity_left - epower > 0 ) { + bool reactor_online = false; + int delta_energy_bat = power_to_energy_bat( epower, 1_turns ); + int storage_deficit_bat = std::max( 0, fuel_capacity( fuel_type_battery ) - + fuel_left( fuel_type_battery ) - delta_energy_bat ); + if( !reactors.empty() && storage_deficit_bat > 0 ) { // Still not enough surplus epower to fully charge battery // Produce additional epower from any reactors bool reactor_working = false; for( auto &elem : reactors ) { + // Check whether the reactor is on. If not, move on. + if( !is_part_on( elem ) ) { + continue; + } + // Keep track whether or not the vehicle has any reactors activated + reactor_online = true; + // the amount of energy the reactor generates each turn + const int gen_energy_bat = power_to_energy_bat( part_epower_w( elem ), 1_turns ); if( parts[ elem ].is_unavailable() ) { continue; } else if( parts[ elem ].info().has_flag( "PERPETUAL" ) ) { reactor_working = true; - epower += part_epower( elem ); + delta_energy_bat += std::min( storage_deficit_bat, gen_energy_bat ); } else if( parts[elem].ammo_remaining() > 0 ) { // Efficiency: one unit of fuel is this many units of battery - // Note: One battery is roughly 373 units of epower + // Note: One battery is 1 kJ const int efficiency = part_info( elem ).power; const int avail_fuel = parts[elem].ammo_remaining() * efficiency; - - const int elem_epower = std::min( part_epower( elem ), power_to_epower( avail_fuel ) ); + const int elem_energy_bat = std::min( gen_energy_bat, avail_fuel ); // Cap output at what we can achieve and utilize - const int reactors_output = std::min( elem_epower, epower_capacity_left - epower ); - // Units of fuel consumed before adjustment for efficiency - const int battery_consumed = epower_to_power( reactors_output ); + const int reactors_output_bat = std::min( elem_energy_bat, storage_deficit_bat ); // Fuel consumed in actual units of the resource - int fuel_consumed = battery_consumed / efficiency; + int fuel_consumed = reactors_output_bat / efficiency; // Remainder has a chance of resulting in more fuel consumption - if( x_in_y( battery_consumed % efficiency, efficiency ) ) { - fuel_consumed++; - } - + fuel_consumed += x_in_y( reactors_output_bat % efficiency, efficiency ) ? 1 : 0; parts[ elem ].ammo_consume( fuel_consumed, global_part_pos3( elem ) ); reactor_working = true; - - epower += reactors_output; + delta_energy_bat += reactors_output_bat; } } - if( !reactor_working ) { + if( !reactor_working && reactor_online ) { // All reactors out of fuel or destroyed - for( const vpart_reference &vp : get_parts( "REACTOR" ) ) { - vp.part().enabled = false; + for( auto &elem : reactors ) { + parts[ elem ].enabled = false; } if( player_in_control( g->u ) || g->u.sees( global_pos3() ) ) { - add_msg( _( "The %s's reactor dies!" ), name.c_str() ); + add_msg( _( "The %s's reactor dies!" ), name ); } } } int battery_deficit = 0; - if( epower > 0 ) { + if( delta_energy_bat > 0 ) { // store epower surplus in battery - charge_battery( epower_to_power( epower ) ); + charge_battery( delta_energy_bat ); } else if( epower < 0 ) { // draw epower deficit from battery - battery_deficit = discharge_battery( abs( epower_to_power( epower ) ) ); + battery_deficit = discharge_battery( abs( delta_energy_bat ) ); } if( battery_deficit != 0 ) { // Scoops need a special case since they consume power during actual use - for( const vpart_reference &vp : get_parts( "SCOOP" ) ) { + for( const vpart_reference &vp : get_enabled_parts( "SCOOP" ) ) { vp.part().enabled = false; } // Rechargers need special case since they consume power on demand - for( const vpart_reference &vp : get_parts( "RECHARGE" ) ) { + for( const vpart_reference &vp : get_enabled_parts( "RECHARGE" ) ) { vp.part().enabled = false; } - for( const vpart_reference &vp : get_parts( VPFLAG_ENABLED_DRAINS_EPOWER ) ) { + for( const vpart_reference &vp : get_enabled_parts( VPFLAG_ENABLED_DRAINS_EPOWER ) ) { vehicle_part &pt = vp.part(); if( pt.info().epower < 0 ) { pt.enabled = false; @@ -3353,13 +3318,13 @@ void vehicle::power_parts() is_alarm_on = false; camera_on = false; if( player_in_control( g->u ) || g->u.sees( global_pos3() ) ) { - add_msg( _( "The %s's battery dies!" ), name.c_str() ); + add_msg( _( "The %s's battery dies!" ), name ); } if( engine_epower < 0 ) { // Not enough epower to run gas engine ignition system engine_on = false; if( player_in_control( g->u ) || g->u.sees( global_pos3() ) ) { - add_msg( _( "The %s's engine dies!" ), name.c_str() ); + add_msg( _( "The %s's engine dies!" ), name ); } } } @@ -3402,7 +3367,7 @@ int vehicle::traverse_vehicle_graph( Vehicle *start_veh, int amount, Func action std::set visited_vehs; connected_vehs.push( std::make_pair( start_veh, 0 ) ); - while( amount > 0 && connected_vehs.size() > 0 ) { + while( amount > 0 && !connected_vehs.empty() ) { auto current_node = connected_vehs.front(); Vehicle *current_veh = current_node.first; int current_loss = current_node.second; @@ -3430,11 +3395,11 @@ int vehicle::traverse_vehicle_graph( Vehicle *start_veh, int amount, Func action int target_loss = current_loss + current_veh->part_info( p ).epower; connected_vehs.push( std::make_pair( target_veh, target_loss ) ); - float loss_amount = ( ( float )amount * ( float )target_loss ) / 100; + float loss_amount = ( static_cast( amount ) * static_cast( target_loss ) ) / 100; g->u.add_msg_if_player( m_debug, "Visiting remote %p with %d power (loss %f, which is %d percent)", ( void * )target_veh, amount, loss_amount, target_loss ); - amount = action( target_veh, amount, ( int )loss_amount ); + amount = action( target_veh, amount, static_cast( loss_amount ) ); g->u.add_msg_if_player( m_debug, "After remote %p, %d power", ( void * )target_veh, amount ); if( amount < 1 ) { @@ -3510,17 +3475,16 @@ void vehicle::do_engine_damage( size_t e, int strain ) void vehicle::idle( bool on_map ) { int engines_power = 0; - float idle_rate; - if( engine_on && total_power() > 0 ) { + if( engine_on && total_power_w() > 0 ) { for( size_t e = 0; e < engines.size(); e++ ) { size_t p = engines[e]; if( fuel_left( part_info( p ).fuel_type ) && is_engine_on( e ) ) { - engines_power += part_power( engines[e] ); + engines_power += part_vpower_w( engines[e] ); } } - idle_rate = ( float )alternator_load / ( float )engines_power; + float idle_rate = static_cast( alternator_load ) / static_cast( engines_power ); if( idle_rate < 0.01 ) { idle_rate = 0.01; // minimum idle is 1% of full throttle } @@ -3532,15 +3496,15 @@ void vehicle::idle( bool on_map ) } else { if( engine_on && g->u.sees( global_pos3() ) && has_engine_type_not( fuel_type_muscle, true ) ) { - add_msg( _( "The %s's engine dies!" ), name.c_str() ); + add_msg( _( "The %s's engine dies!" ), name ); } engine_on = false; } if( !warm_enough_to_plant() ) { - for( const vpart_reference &vp : get_parts( "PLANTER" ) ) { + for( const vpart_reference &vp : get_enabled_parts( "PLANTER" ) ) { if( g->u.sees( global_pos3() ) ) { - add_msg( _( "The %s's planter turns off due to low temperature." ), name.c_str() ); + add_msg( _( "The %s's planter turns off due to low temperature." ), name ); } vp.part().enabled = false; } @@ -3595,16 +3559,25 @@ void vehicle::slow_leak() auto fuel = p.ammo_current(); int qty = std::max( ( 0.5 - health ) * ( 0.5 - health ) * p.ammo_remaining() / 10, 1.0 ); + point q = coord_translate( p.mount ); + const tripoint dest = global_pos3() + tripoint( q.x, q.y, 0 ); - // damaged batteries self-discharge without leaking - if( fuel != fuel_type_battery ) { + // damaged batteries self-discharge without leaking, plutonium leaks slurry + if( fuel != fuel_type_battery && fuel != fuel_type_plutonium_cell ) { item leak( fuel, calendar::turn, qty ); - point q = coord_translate( p.mount ); - const tripoint dest = global_pos3() + tripoint( q.x, q.y, 0 ); g->m.add_item_or_charges( dest, leak ); + p.ammo_consume( qty, global_part_pos3( p ) ); + } else if( fuel == fuel_type_plutonium_cell ) { + item leak( "plut_slurry_dense", calendar::turn, qty ); + if( p.ammo_remaining() >= PLUTONIUM_CHARGES / 10 ) { + g->m.add_item_or_charges( dest, leak ); + p.ammo_consume( qty * PLUTONIUM_CHARGES / 10, global_part_pos3( p ) ); + } else { + p.ammo_consume( p.ammo_remaining(), global_part_pos3( p ) ); + } + } else { + p.ammo_consume( qty, global_part_pos3( p ) ); } - - p.ammo_consume( qty, global_part_pos3( p ) ); } } @@ -3630,7 +3603,7 @@ void vehicle::make_active( item_location &loc ) if( !target->needs_processing() ) { return; } - auto cargo_parts = get_parts( loc.position(), "CARGO", false, false ); + auto cargo_parts = get_parts_at( loc.position(), "CARGO", part_status_flag::any ); if( cargo_parts.empty() ) { return; } @@ -3662,7 +3635,7 @@ long vehicle::add_charges( int part, const item &itm ) bool vehicle::add_item( int part, const item &itm ) { - if( part < 0 || part >= ( int )parts.size() ) { + if( part < 0 || part >= static_cast( parts.size() ) ) { debugmsg( "int part (%d) is out of range", part ); return false; } @@ -3721,7 +3694,7 @@ bool vehicle::add_item_at( int part, std::list::iterator index, item itm ) bool vehicle::remove_item( int part, int itemdex ) { - if( itemdex < 0 || itemdex >= ( int )parts[part].items.size() ) { + if( itemdex < 0 || itemdex >= static_cast( parts[part].items.size() ) ) { return false; } @@ -3839,7 +3812,7 @@ void vehicle::place_spawn_items() void vehicle::gain_moves() { if( velocity != 0 || falling ) { - if( loose_parts.size() > 0 ) { + if( !loose_parts.empty() ) { shed_loose_parts(); } of_turn = 1 + of_turn_carry; @@ -3909,12 +3882,23 @@ void vehicle::refresh() std::vector::iterator vii; // Main loop over all vehicle parts. - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { const size_t p = vp.part_index(); const vpart_info &vpi = vp.info(); if( vp.part().removed ) { continue; } + + // Build map of point -> all parts in that point + const point pt = vp.mount(); + // This will keep the parts at point pt sorted + vii = std::lower_bound( relative_parts[pt].begin(), relative_parts[pt].end(), + static_cast( p ), svpv ); + relative_parts[pt].insert( vii, p ); + + if( vp.part().is_unavailable() ) { + continue; + } if( vpi.has_flag( VPFLAG_ALTERNATOR ) ) { alternators.push_back( p ); } @@ -3954,12 +3938,6 @@ void vehicle::refresh() if( vp.part().enabled && vpi.has_flag( "EXTRA_DRAG" ) ) { extra_drag += vpi.power; } - // Build map of point -> all parts in that point - const point pt = vp.mount(); - // This will keep the parts at point pt sorted - vii = std::lower_bound( relative_parts[pt].begin(), relative_parts[pt].end(), static_cast( p ), - svpv ); - relative_parts[pt].insert( vii, p ); } // NB: using the _old_ pivot point, don't recalc here, we only do that when moving! @@ -4118,8 +4096,11 @@ void vehicle::shed_loose_parts() void vehicle::refresh_insides() { + if( !insides_dirty ) { + return; + } insides_dirty = false; - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { const size_t p = vp.part_index(); if( vp.part().removed ) { continue; @@ -4133,10 +4114,8 @@ void vehicle::refresh_insides() parts[p].inside = true; // inside if not otherwise for( int i = 0; i < 4; i++ ) { // let's check four neighbor parts - int ndx = i < 2 ? ( i == 0 ? -1 : 1 ) : 0; - int ndy = i < 2 ? 0 : ( i == 2 ? - 1 : 1 ); - std::vector parts_n3ar = parts_at_relative( vp.mount() + - point( ndx, ndy ), true ); + point near_mount = parts[ p ].mount + vehicles::cardinal_d[ i ]; + std::vector parts_n3ar = parts_at_relative( near_mount, true ); bool cover = false; // if we aren't covered from sides, the roof at p won't save us for( auto &j : parts_n3ar ) { // another roof -- cover @@ -4163,11 +4142,10 @@ void vehicle::refresh_insides() bool vpart_position::is_inside() const { - if( vehicle().insides_dirty ) { - // TODO: this is a bit of a hack as refresh_insides has side effects - // this should be called elsewhere and not in a function that intends to just query - vehicle().refresh_insides(); - } + // TODO: this is a bit of a hack as refresh_insides has side effects + // this should be called elsewhere and not in a function that intends to just query + // it's also a no-op if the insides are up to date. + vehicle().refresh_insides(); return vehicle().parts[part_index()].inside; } @@ -4268,7 +4246,7 @@ void vehicle::damage_all( int dmg1, int dmg2, damage_type type, const point &imp return; } - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { const size_t p = vp.part_index(); int distance = 1 + square_dist( vp.mount().x, vp.mount().y, impact.x, impact.y ); if( distance > 1 && part_info( p ).location == part_location_structure && @@ -4295,7 +4273,7 @@ void vehicle::shift_parts( const point delta ) decltype( labels ) new_labels; for( auto &l : labels ) { - new_labels.insert( label( l.x - delta.x, l.y - delta.y, l.text ) ); + new_labels.insert( label( l - delta, l.text ) ); } labels = new_labels; @@ -4319,7 +4297,7 @@ bool vehicle::shift_if_needed() return false; } //Find a frame, any frame, to shift to - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { if( vp.info().location == "structure" && !vp.has_feature( "PROTRUSION" ) && !vp.part().removed ) { @@ -4329,7 +4307,7 @@ bool vehicle::shift_if_needed() } } // There are only parts with PROTRUSION left, choose one of them. - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { if( !vp.part().removed ) { shift_parts( vp.mount() ); refresh(); @@ -4349,6 +4327,17 @@ int vehicle::break_off( int p, int dmg ) } const tripoint pos = global_part_pos3( p ); + const auto scatter_parts = [&]( const vehicle_part & pt ) { + for( const item &piece : pt.pieces_for_broken_part() ) { + // inside the loop, so each piece goes to a different place + // @todo this may spawn items behind a wall + const tripoint where = random_entry( g->m.points_in_radius( pos, SCATTER_DISTANCE ) ); + // TODO: balance audit, ensure that less pieces are generated than one would need + // to build the component (smash a vehicle box that took 10 lumps of steel, + // find 12 steel lumps scattered after atom-smashing it with a tree trunk) + g->m.add_item_or_charges( where, piece ); + } + }; if( part_info( p ).location == part_location_structure ) { // For structural parts, remove other parts first std::vector parts_in_square = parts_at_relative( parts[p].mount, true ); @@ -4361,15 +4350,15 @@ int vehicle::break_off( int p, int dmg ) if( parts[ parts_in_square[ index ] ].is_broken() ) { // Tearing off a broken part - break it up if( g->u.sees( pos ) ) { - add_msg( m_bad, _( "The %s's %s breaks into pieces!" ), name.c_str(), - parts[ parts_in_square[ index ] ].name().c_str() ); + add_msg( m_bad, _( "The %s's %s breaks into pieces!" ), name, + parts[ parts_in_square[ index ] ].name() ); } - break_part_into_pieces( parts_in_square[index], pos.x, pos.y, true ); + scatter_parts( parts[parts_in_square[index]] ); } else { // Intact (but possibly damaged) part - remove it in one piece if( g->u.sees( pos ) ) { - add_msg( m_bad, _( "The %1$s's %2$s is torn off!" ), name.c_str(), - parts[ parts_in_square[ index ] ].name().c_str() ); + add_msg( m_bad, _( "The %1$s's %2$s is torn off!" ), name, + parts[ parts_in_square[ index ] ].name() ); } item part_as_item = parts[parts_in_square[index]].properties_to_item(); g->m.add_item_or_charges( pos, part_as_item ); @@ -4378,20 +4367,18 @@ int vehicle::break_off( int p, int dmg ) } // After clearing the frame, remove it. if( g->u.sees( pos ) ) { - add_msg( m_bad, _( "The %1$s's %2$s is destroyed!" ), - name.c_str(), parts[ p ].name().c_str() ); + add_msg( m_bad, _( "The %1$s's %2$s is destroyed!" ), name, parts[ p ].name() ); } - break_part_into_pieces( p, pos.x, pos.y, true ); + scatter_parts( parts[p] ); remove_part( p ); find_and_split_vehicles( p ); } else { //Just break it off if( g->u.sees( pos ) ) { - add_msg( m_bad, _( "The %1$s's %2$s is destroyed!" ), - name.c_str(), parts[ p ].name().c_str() ); + add_msg( m_bad, _( "The %1$s's %2$s is destroyed!" ), name, parts[ p ].name() ); } - break_part_into_pieces( p, pos.x, pos.y, true ); + scatter_parts( parts[p] ); remove_part( p ); } @@ -4513,7 +4500,7 @@ std::map vehicle::fuels_left() const bool vehicle::is_foldable() const { - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { if( !vp.has_feature( "FOLDABLE" ) ) { return false; } @@ -4538,6 +4525,7 @@ bool vehicle::restore( const std::string &data ) turn( 0 ); precalc_mounts( 0, pivot_rotation[0], pivot_anchor[0] ); precalc_mounts( 1, pivot_rotation[1], pivot_anchor[1] ); + last_update = calendar::turn; return true; } @@ -4631,6 +4619,7 @@ void vehicle::update_time( const time_point &update_to ) // We don't need to check every turn return; } + time_duration elapsed = update_to - last_update; last_update = update_to; // Weather stuff, only for z-levels >= 0 @@ -4665,14 +4654,13 @@ void vehicle::update_time( const time_point &update_to ) double area = pow( pt.info().size / units::legacy_volume_factor, 2 ) * M_PI; int qty = divide_roll_remainder( funnel_charges_per_turn( area, accum_weather.rain_amount ), 1.0 ); - double cost_to_purify = epower_to_power( ( qty + ( tank->can_reload( water_clean ) ? - tank->ammo_remaining() : 0 ) ) - * item::find_type( "water_purifier" )->charges_to_use() ); + int c_qty = qty + ( tank->can_reload( water_clean ) ? tank->ammo_remaining() : 0 ); + int cost_to_purify = c_qty * item::find_type( "water_purifier" )->charges_to_use(); if( qty > 0 ) { if( has_part( global_part_pos3( pt ), "WATER_PURIFIER", true ) && ( fuel_left( "battery" ) > cost_to_purify ) ) { - tank->ammo_set( "water_clean", tank->ammo_remaining() + qty ); + tank->ammo_set( "water_clean", c_qty ); discharge_battery( cost_to_purify ); } else { tank->ammo_set( "water", tank->ammo_remaining() + qty ); @@ -4682,7 +4670,7 @@ void vehicle::update_time( const time_point &update_to ) } if( !solar_panels.empty() ) { - int epower = 0; + int epower_w = 0; for( int part : solar_panels ) { if( parts[ part ].is_unavailable() ) { continue; @@ -4692,12 +4680,13 @@ void vehicle::update_time( const time_point &update_to ) continue; } - epower += ( part_epower( part ) * accum_weather.sunlight ) / DAYLIGHT_LEVEL; + epower_w += part_epower_w( part ); } - - if( epower > 0 ) { - add_msg( m_debug, "%s got %d epower from solar panels", name.c_str(), epower ); - charge_battery( epower_to_power( epower ) ); + double intensity = accum_weather.sunlight / DAYLIGHT_LEVEL / to_turns( elapsed ); + int energy_bat = power_to_energy_bat( epower_w * intensity, elapsed ); + if( energy_bat > 0 ) { + add_msg( m_debug, "%s got %d kJ energy from solar panels", name, energy_bat ); + charge_battery( energy_bat ); } } } @@ -4721,7 +4710,7 @@ void vehicle::calc_mass_center( bool use_precalc ) const units::quantity xf = 0; units::quantity yf = 0; units::mass m_total = 0; - for( const vpart_reference &vp : get_parts() ) { + for( const vpart_reference &vp : get_all_parts() ) { const size_t i = vp.part_index(); if( vp.part().removed ) { continue; @@ -4785,9 +4774,8 @@ bounding_box vehicle::get_bounding_box() precalc_mounts( 0, turn_dir, point() ); int i_use = 0; - for( const auto &p : get_points( true ) ) { - point pv = parts[part_at( p.x, p.y )].precalc[i_use]; - point pt = pv;// (p.x + pv.x, p.y + pv.y); + for( const tripoint &p : get_points( true ) ) { + const point pt = parts[part_at( point( p.x, p.y ) )].precalc[i_use]; if( pt.x < min_x ) { min_x = pt.x; } @@ -4807,27 +4795,29 @@ bounding_box vehicle::get_bounding_box() return b; } -vehicle_part_range vehicle::get_parts() const +vehicle_part_range vehicle::get_all_parts() const { return vehicle_part_range( const_cast( *this ) ); } template<> -bool vehicle_part_with_feature_range::contained( const size_t part ) const +bool vehicle_part_with_feature_range::matches( const size_t part ) const { const vehicle_part &vp = this->vehicle().parts[part]; return vp.info().has_flag( feature_ ) && !vp.removed && - ( !unbroken_ || !vp.is_broken() ) && - ( !enabled_ || vp.enabled ); + ( !( part_status_flag::working & required_ ) || !vp.is_broken() ) && + ( !( part_status_flag::available & required_ ) || vp.is_available() ) && + ( !( part_status_flag::enabled & required_ ) || vp.enabled ); } template<> -bool vehicle_part_with_feature_range::contained( const size_t part ) const +bool vehicle_part_with_feature_range::matches( const size_t part ) const { const vehicle_part &vp = this->vehicle().parts[part]; return vp.info().has_flag( feature_ ) && !vp.removed && - ( !unbroken_ || !vp.is_broken() ) && - ( !enabled_ || vp.enabled ); + ( !( part_status_flag::working & required_ ) || !vp.is_broken() ) && + ( !( part_status_flag::available & required_ ) || vp.is_available() ) && + ( !( part_status_flag::enabled & required_ ) || vp.enabled ); } diff --git a/src/vehicle.h b/src/vehicle.h index 6f1d816cce798..37fa7f032cc04 100644 --- a/src/vehicle.h +++ b/src/vehicle.h @@ -2,25 +2,23 @@ #ifndef VEHICLE_H #define VEHICLE_H +#include "active_item_cache.h" #include "calendar.h" -#include "tileray.h" #include "damage.h" #include "item.h" #include "item_group.h" -#include "line.h" #include "item_stack.h" -#include "active_item_cache.h" +#include "line.h" #include "string_id.h" +#include "tileray.h" #include "ui.h" #include "units.h" -#include #include -#include #include -#include -#include +#include #include +#include class nc_color; class map; @@ -51,6 +49,21 @@ constexpr int SCATTER_DISTANCE = 3; //adjust this to balance collision damage constexpr int k_mvel = 200; +enum class part_status_flag : int { + any = 0, + working = 1 << 0, + available = 1 << 1, + enabled = 1 << 2 +}; +part_status_flag inline operator|( const part_status_flag &rhs, const part_status_flag &lhs ) +{ + return static_cast( static_cast( lhs ) | static_cast( rhs ) ); +} +int inline operator&( const part_status_flag &rhs, const part_status_flag &lhs ) +{ + return static_cast( lhs ) & static_cast( rhs ); +} + enum veh_coll_type : int { veh_coll_nothing, // 0 - nothing, veh_coll_body, // 1 - monster/player/npc @@ -80,7 +93,7 @@ class vehicle_stack : public item_stack int part_num; public: vehicle_stack( std::list *newstack, point newloc, vehicle *neworigin, int part ) : - item_stack( newstack ), location( newloc ), myorigin( neworigin ), part_num( part ) {}; + item_stack( newstack ), location( newloc ), myorigin( neworigin ), part_num( part ) {} std::list::iterator erase( std::list::iterator it ) override; void push_back( const item &newitem ) override; void insert_at( std::list::iterator index, const item &newitem ) override; @@ -115,7 +128,7 @@ struct vehicle_part { vehicle_part(); /** DefaultConstructible */ - vehicle_part( const vpart_id &vp, int dx, int dy, item &&it ); + vehicle_part( const vpart_id &vp, point dp, item &&it ); /** Check this instance is non-null (not default constructed) */ explicit operator bool() const; @@ -357,6 +370,11 @@ struct vehicle_part { * the hp (item damage), fuel charges (battery or liquids), aspect, ... */ item properties_to_item() const; + /** + * Returns an ItemList of the pieces that should arise from breaking + * this part. + */ + item_group::ItemList pieces_for_broken_part() const; }; class turret_data @@ -454,22 +472,12 @@ class turret_data * Struct used for storing labels * (easier to json opposed to a std::map) */ -struct label { +struct label : public point { label() = default; - label( int const x, int const y ) : x( x ), y( y ) {} - label( const int x, const int y, std::string text ) : x( x ), y( y ), text( std::move( text ) ) {} + label( const point &p ) : point( p ) {} + label( const point &p, std::string text ) : point( p ), text( std::move( text ) ) {} - int x = 0; - int y = 0; std::string text; - - // these are stored in a set - bool operator<( const label &rhs ) const noexcept { - return ( x != rhs.x ) ? ( x < rhs.x ) : ( y < rhs.y ); - } - - void serialize( JsonOut &jsout ) const; - void deserialize( JsonIn &jsin ); }; /** @@ -547,7 +555,7 @@ struct label { class vehicle { private: - bool has_structural_part( int dx, int dy ) const; + bool has_structural_part( point dp ) const; bool is_structural_part_removed() const; void open_or_close( int part_index, bool opening ); bool is_connected( vehicle_part const &to, vehicle_part const &from, @@ -565,16 +573,16 @@ class vehicle //damages vehicle controls and security system void smash_security_system(); // get vpart powerinfo for part number, accounting for variable-sized parts and hps. - int part_power( int index, bool at_full_hp = false ) const; + int part_vpower_w( int index, bool at_full_hp = false ) const; // get vpart epowerinfo for part number. - int part_epower( int index ) const; + int part_epower_w( int index ) const; - // convert epower (watts) to power. - static int epower_to_power( int epower ); + // convert watts over time to battery energy + int power_to_energy_bat( const int power_w, const time_duration t ) const; - // convert power to epower (watts). - static int power_to_epower( int power ); + // convert vhp to watts. + static int vhp_to_watts( int power ); //Refresh all caches and re-locate all parts void refresh(); @@ -681,20 +689,20 @@ class vehicle const vpart_info &part_info( int index, bool include_removed = false ) const; // check if certain part can be mounted at certain position (not accounting frame direction) - bool can_mount( int dx, int dy, const vpart_id &id ) const; + bool can_mount( point dp, const vpart_id &id ) const; // check if certain part can be unmounted bool can_unmount( int p ) const; bool can_unmount( int p, std::string &reason ) const; // install a new part to vehicle - int install_part( int dx, int dy, const vpart_id &id, bool force = false ); + int install_part( point dp, const vpart_id &id, bool force = false ); // Install a copy of the given part, skips possibility check - int install_part( int dx, int dy, const vehicle_part &part ); + int install_part( point dp, const vehicle_part &part ); /** install item specified item to vehicle as a vehicle part */ - int install_part( int dx, int dy, const vpart_id &id, item &&obj, bool force = false ); + int install_part( point dp, const vpart_id &id, item &&obj, bool force = false ); // find a single tile wide vehicle adjacent to a list of part indices bool find_rackable_vehicle( const std::vector> &list_of_racks ); @@ -732,42 +740,44 @@ class vehicle * a vehicle part on both sides. */ void remove_remote_part( int part_num ); - - /** - * Returns an ItemList of the pieces that should arise from breaking - * this part. - * @param p The index of the part to break. - */ - item_group::ItemList pieces_for_broken_part( int p ); - - void break_part_into_pieces( int p, int x, int y, bool scatter = false ); /** * Yields a range containing all parts (including broken ones) that can be * iterated over. */ // @todo maybe not include broken ones? Have a separate function for that? // @todo rename to just `parts()` and rename the data member to `parts_`. - vehicle_part_range get_parts() const; + vehicle_part_range get_all_parts() const; /** * Yields a range of parts of this vehicle that each have the given feature - * and are not broken. Removed parts are also excluded. The enabled status - * of the part is ignored. + * and are available: not broken, removed, or part of a carried vehicle. + * The enabled status of the part is ignored. */ /**@{*/ - vehicle_part_with_feature_range get_parts( std::string feature ) const; - vehicle_part_with_feature_range get_parts( vpart_bitflags f ) const; + vehicle_part_with_feature_range get_avail_parts( std::string feature ) const; + vehicle_part_with_feature_range get_avail_parts( vpart_bitflags f ) const; /**@}*/ /** - * Like @ref get_parts, but also yields broken parts. + * Yields a range of parts of this vehicle that each have the given feature + * and are not broken or removed. + * The enabled status of the part is ignored. */ /**@{*/ - vehicle_part_with_feature_range get_parts_including_broken( + vehicle_part_with_feature_range get_parts_including_carried( std::string feature ) const; - vehicle_part_with_feature_range get_parts_including_broken( + vehicle_part_with_feature_range get_parts_including_carried( vpart_bitflags f ) const; /**@}*/ /** - * Like @ref get_parts, but only yield enabled parts. They must still be unbroken. + * Yields a range of parts of this vehicle that each have the given feature and not removed. + * The enabled status of the part is ignored. + */ + /**@{*/ + vehicle_part_with_feature_range get_any_parts( std::string feature ) const; + vehicle_part_with_feature_range get_any_parts( vpart_bitflags f ) const; + /**@}*/ + /** + * Yields a range of parts of this vehicle that each have the given feature + * and are enabled and available: not broken, removed, or part of a carried vehicle. */ /**@{*/ vehicle_part_with_feature_range get_enabled_parts( std::string feature ) const; @@ -804,16 +814,15 @@ class vehicle bool has_part( const tripoint &pos, const std::string &flag, bool enabled = false ) const; /** - * Get all unbroken vehicle parts at specified position + * Get all enabled, available, unbroken vehicle parts at specified position * @param pos position to check * @param flag if set only flags with this part will be considered - * @param enabled if set part must also be enabled to be considered - * @param enabled if you want to get broken parts too + * @param conditions enum to include unabled, unavailable, and broken parts */ - std::vector get_parts( const tripoint &pos, const std::string &flag, bool enabled, - bool include_broken_parts ); - std::vector get_parts( const tripoint &pos, const std::string &flag, - bool enabled, bool include_broken_parts ) const; + std::vector get_parts_at( const tripoint &pos, const std::string &flag, + const part_status_flag e ); + std::vector get_parts_at( const tripoint &pos, + const std::string &flag, const part_status_flag e ) const; /** Test if part can be enabled (unbroken, sufficient fuel etc), optionally displaying failures to user */ bool can_enable( const vehicle_part &pt, bool alert = false ) const; @@ -869,9 +878,8 @@ class vehicle tripoint mount_to_tripoint( const point &mount, const point &offset ) const; // Seek a vehicle part which obstructs tile with given coordinates relative to vehicle position - int part_at( int dx, int dy ) const; - int global_part_at( int x, int y ) const; - int part_displayed_at( int local_x, int local_y ) const; + int part_at( point dp ) const; + int part_displayed_at( point dp ) const; int roof_at_part( int p ) const; // Given a part, finds its index in the vehicle @@ -884,10 +892,6 @@ class vehicle // get color for map nc_color part_color( int p, bool exact = false ) const; - // Vehicle parts description - int print_part_desc( const catacurses::window &win, int y1, int max_y, int width, int p, - int hl = -1 ) const; - // Get all printable fuel types std::vector get_printable_fuel_types() const; @@ -993,8 +997,9 @@ class vehicle point pivot_displacement() const; // Get combined power of all engines. If fueled == true, then only engines which - // vehicle have fuel for are accounted - int total_power( bool fueled = true ) const; + // vehicle have fuel for are accounted. If safe == true, then limit engine power to + // their safe power. + int total_power_w( bool fueled = true, bool safe = false ) const; // Get acceleration gained by combined power of all engines. If fueled == true, then only engines which // vehicle have fuel for are accounted @@ -1070,7 +1075,7 @@ class vehicle /*@}*/ // Extra drag on the vehicle from components other than wheels. - float drag() const; + int drag() const; // strain of engine(s) if it works higher that safe speed (0-1.0) float strain() const; @@ -1296,10 +1301,10 @@ class vehicle void operate_reaper(); void operate_plow(); void operate_rockwheel(); - void add_toggle_to_opts( std::vector &options, + void add_toggle_to_opts( std::vector &options, std::vector> &actions, const std::string &name, char key, const std::string &flag ); - void set_electronics_menu_options( std::vector &options, + void set_electronics_menu_options( std::vector &options, std::vector> &actions ); //main method for the control of multiple electronics void control_electronics(); @@ -1342,7 +1347,10 @@ class vehicle rl_vec2d move_vec() const; // As above, but calculated for the actually used variable `dir` rl_vec2d dir_vec() const; + // update vehicle parts as the vehicle moves void on_move(); + // move the vehicle on the map + bool act_on_map(); /** * Update the submap coordinates smx, smy, and update the tracker info in the overmap @@ -1440,6 +1448,7 @@ class vehicle // id of the om_vehicle struct corresponding to this vehicle int om_id; // direction, to which vehicle is turning (player control). will rotate frame on next move + // must be a multiple of 15 degrees int turn_dir = 0; // points used for rotation of mount precalc values diff --git a/src/vehicle_display.cpp b/src/vehicle_display.cpp index cb75a73f60039..0c47b76cf6868 100644 --- a/src/vehicle_display.cpp +++ b/src/vehicle_display.cpp @@ -1,32 +1,22 @@ #include "vehicle.h" +#include "cata_utility.h" +#include "catacharset.h" #include "coordinate_conversions.h" -#include "output.h" -#include "game.h" -#include "veh_interact.h" #include "cursesdef.h" -#include "catacharset.h" -#include "messages.h" -#include "vpart_position.h" -#include "vpart_reference.h" -#include "string_formatter.h" -#include "ui.h" #include "debug.h" -#include "translations.h" +#include "game.h" +#include "itype.h" #include "options.h" +#include "output.h" +#include "string_formatter.h" +#include "translations.h" #include "veh_type.h" -#include "itype.h" -#include "cata_utility.h" +#include "vpart_position.h" -#include -#include -#include -#include -#include -#include -#include #include -#include +#include +#include static const std::string part_location_structure( "structure" ); @@ -37,11 +27,11 @@ const std::string vehicle::disp_name() const char vehicle::part_sym( const int p, const bool exact ) const { - if( p < 0 || p >= ( int )parts.size() || parts[p].removed ) { + if( p < 0 || p >= static_cast( parts.size() ) || parts[p].removed ) { return ' '; } - const int displayed_part = exact ? p : part_displayed_at( parts[p].mount.x, parts[p].mount.y ); + const int displayed_part = exact ? p : part_displayed_at( parts[p].mount ); if( part_flag( displayed_part, VPFLAG_OPENABLE ) && parts[displayed_part].open ) { return '\''; // open door @@ -56,11 +46,11 @@ char vehicle::part_sym( const int p, const bool exact ) const vpart_id vehicle::part_id_string( int const p, char &part_mod ) const { part_mod = 0; - if( p < 0 || p >= ( int )parts.size() || parts[p].removed ) { + if( p < 0 || p >= static_cast( parts.size() ) || parts[p].removed ) { return vpart_id::NULL_ID(); } - int displayed_part = part_displayed_at( parts[p].mount.x, parts[p].mount.y ); + int displayed_part = part_displayed_at( parts[p].mount ); const vpart_id idinfo = parts[displayed_part].id; if( part_flag( displayed_part, VPFLAG_OPENABLE ) && parts[displayed_part].open ) { @@ -74,7 +64,7 @@ vpart_id vehicle::part_id_string( int const p, char &part_mod ) const nc_color vehicle::part_color( const int p, const bool exact ) const { - if( p < 0 || p >= ( int )parts.size() ) { + if( p < 0 || p >= static_cast( parts.size() ) ) { return c_black; } @@ -90,9 +80,9 @@ nc_color vehicle::part_color( const int p, const bool exact ) const if( parm >= 0 ) { col = part_info( parm ).color; } else { - const int displayed_part = exact ? p : part_displayed_at( parts[p].mount.x, parts[p].mount.y ); + const int displayed_part = exact ? p : part_displayed_at( parts[p].mount ); - if( displayed_part < 0 || displayed_part >= ( int )parts.size() ) { + if( displayed_part < 0 || displayed_part >= static_cast( parts.size() ) ) { return c_black; } if( parts[displayed_part].blood > 200 ) { @@ -141,7 +131,7 @@ nc_color vehicle::part_color( const int p, const bool exact ) const int vehicle::print_part_list( const catacurses::window &win, int y1, const int max_y, int width, int p, int hl /*= -1*/ ) const { - if( p < 0 || p >= ( int )parts.size() ) { + if( p < 0 || p >= static_cast( parts.size() ) ) { return y1; } std::vector pl = this->parts_at_relative( parts[p].mount, true ); @@ -183,10 +173,10 @@ int vehicle::print_part_list( const catacurses::window &win, int y1, const int m left_sym = "-"; right_sym = "-"; } - nc_color sym_color = ( int )i == hl ? hilite( c_light_gray ) : c_light_gray; + nc_color sym_color = static_cast( i ) == hl ? hilite( c_light_gray ) : c_light_gray; mvwprintz( win, y, 1, sym_color, left_sym ); trim_and_print( win, y, 2, getmaxx( win ) - 4, - ( int )i == hl ? hilite( col_cond ) : col_cond, partname ); + static_cast( i ) == hl ? hilite( col_cond ) : col_cond, partname ); wprintz( win, sym_color, right_sym ); if( i == 0 && vpart_position( const_cast( *this ), pl[i] ).is_inside() ) { @@ -214,14 +204,14 @@ int vehicle::print_part_list( const catacurses::window &win, int y1, const int m * @param win The window to draw in. * @param max_y Draw no further than this y-coordinate. * @param width The width of the window. - * @param &p The index of the part being examined. + * @param p The index of the part being examined. * @param start_at Which vehicle part to start printing at. * @param start_limit the part index beyond which the display is full */ void vehicle::print_vparts_descs( const catacurses::window &win, int max_y, int width, int &p, int &start_at, int &start_limit ) const { - if( p < 0 || p >= ( int )parts.size() ) { + if( p < 0 || p >= static_cast( parts.size() ) ) { return; } @@ -258,7 +248,8 @@ void vehicle::print_vparts_descs( const catacurses::window &win, int max_y, int possible_msg << name_color << vp.name() << "\n"; std::string desc_color = string_format( "", string_from_color( vp.is_broken() ? c_dark_gray : c_light_gray ) ); - int new_lines = 2 + vp.info().format_description( possible_msg, desc_color, width - 2 ); + // -4 = -2 for left & right padding + -2 for "> " + int new_lines = 2 + vp.info().format_description( possible_msg, desc_color, width - 4 ); if( vp.has_flag( vehicle_part::carrying_flag ) ) { possible_msg << " Carrying a vehicle on a rack.\n"; new_lines += 1; @@ -282,7 +273,8 @@ void vehicle::print_vparts_descs( const catacurses::window &win, int max_y, int } } werase( win ); - fold_and_print( win, 0, 1, width, c_light_gray, msg.str() ); + // -2 for left & right padding + fold_and_print( win, 0, 1, width - 2, c_light_gray, msg.str() ); wrefresh( win ); } @@ -333,7 +325,7 @@ void vehicle::print_fuel_indicators( const catacurses::window &win, int y, int x int yofs = 0; int max_gauge = ( ( isHorizontal ) ? 12 : 5 ) + start_index; - int max_size = std::min( ( int )fuels.size(), max_gauge ); + int max_size = std::min( static_cast( fuels.size() ), max_gauge ); for( int i = start_index; i < max_size; i++ ) { const itype_id &f = fuels[i]; @@ -342,7 +334,7 @@ void vehicle::print_fuel_indicators( const catacurses::window &win, int y, int x } // check if the current index is less than the max size minus 12 or 5, to indicate that there's more - if( ( start_index < ( int )fuels.size() - ( ( isHorizontal ) ? 12 : 5 ) ) ) { + if( ( start_index < static_cast( fuels.size() ) - ( ( isHorizontal ) ? 12 : 5 ) ) ) { mvwprintz( win, y + yofs, x, c_light_green, ">" ); wprintz( win, c_light_gray, " for more" ); } @@ -350,7 +342,7 @@ void vehicle::print_fuel_indicators( const catacurses::window &win, int y, int x /** * Prints a fuel gauge for a vehicle - * @param w Pointer to the window to draw in. + * @param win Pointer to the window to draw in. * @param y Y location to draw at. * @param x X location to draw at. * @param fuel_type ID of the fuel type to draw @@ -378,6 +370,6 @@ void vehicle::print_fuel_indicator( const catacurses::window &win, int y, int x, } } if( desc ) { - wprintz( win, c_light_gray, " - %s", item::nname( fuel_type ).c_str() ); + wprintz( win, c_light_gray, " - %s", item::nname( fuel_type ) ); } } diff --git a/src/vehicle_group.cpp b/src/vehicle_group.cpp index ba10b43889261..53deddf147d74 100644 --- a/src/vehicle_group.cpp +++ b/src/vehicle_group.cpp @@ -1,11 +1,12 @@ #include "vehicle_group.h" + #include "debug.h" -#include "translations.h" -#include "vpart_position.h" -#include "vehicle.h" -#include "map.h" #include "enums.h" #include "json.h" +#include "map.h" +#include "translations.h" +#include "vehicle.h" +#include "vpart_position.h" using vplacement_id = string_id; @@ -182,7 +183,7 @@ void VehicleSpawn::load( JsonObject &jo ) void VehicleSpawn::apply( map &m, const std::string &terrain_name ) const { const std::shared_ptr *func = types.pick(); - if( func == NULL ) { + if( func == nullptr ) { debugmsg( "unable to find valid function for vehicle spawn" ); } else { ( *func )->apply( m, terrain_name ); diff --git a/src/vehicle_group.h b/src/vehicle_group.h index 6fa94760024af..d46997c47e684 100644 --- a/src/vehicle_group.h +++ b/src/vehicle_group.h @@ -3,14 +3,14 @@ #define VEHICLE_GROUP_H #include "mapgen.h" -#include -#include -#include - #include "optional.h" +#include "rng.h" #include "string_id.h" #include "weighted_list.h" +#include +#include + class JsonObject; class VehicleGroup; using vgroup_id = string_id; diff --git a/src/vehicle_move.cpp b/src/vehicle_move.cpp index 32ebd072ffcff..a22b05c25ce94 100644 --- a/src/vehicle_move.cpp +++ b/src/vehicle_move.cpp @@ -1,55 +1,29 @@ #include "vehicle.h" #include "coordinate_conversions.h" -#include "map.h" -#include "mapbuffer.h" -#include "output.h" +#include "debug.h" #include "game.h" #include "item.h" -#include "veh_interact.h" -#include "cursesdef.h" -#include "catacharset.h" -#include "overmapbuffer.h" +#include "itype.h" +#include "map.h" +#include "mapdata.h" +#include "material.h" #include "messages.h" -#include "vpart_position.h" -#include "vpart_reference.h" -#include "string_formatter.h" -#include "ui.h" -#include "debug.h" +#include "output.h" #include "sounds.h" #include "translations.h" -#include "ammo.h" -#include "options.h" -#include "material.h" -#include "monster.h" -#include "npc.h" -#include "veh_type.h" #include "trap.h" -#include "itype.h" -#include "submap.h" -#include "mapdata.h" -#include "mtype.h" -#include "weather.h" -#include "map_iterator.h" -#include "vehicle_selector.h" -#include "cata_utility.h" - -#include -#include -#include -#include -#include -#include -#include +#include "veh_type.h" +#include "vpart_reference.h" + #include +#include #include +#include +#include +#include static const std::string part_location_structure( "structure" ); -static const itype_id fuel_type_none( "null" ); -static const itype_id fuel_type_gasoline( "gasoline" ); -static const itype_id fuel_type_diesel( "diesel" ); -static const itype_id fuel_type_battery( "battery" ); -static const itype_id fuel_type_water( "water_clean" ); static const itype_id fuel_type_muscle( "muscle" ); const efftype_id effect_stunned( "stunned" ); @@ -57,6 +31,8 @@ const skill_id skill_driving( "driving" ); #define dbg(x) DebugLog((DebugLevel)(x),D_MAP) << __FILE__ << ":" << __LINE__ << ": " +// tile height in meters +static const float tile_height = 4; int vehicle::slowdown() const { const double relative_sin = sin( DEGREES( face.dir() - move.dir() ) ); @@ -67,7 +43,7 @@ int vehicle::slowdown() const const float k_slowdown = 20.0f / ( 2.0f + 9 * ( k_dynamics() * k_mass() ) ); // drag is in units of 1/2 HP here, so plows make good emergency brakes. const int slowdown = drag() + static_cast( std::ceil( k_slowdown * base_slowdown ) ); - add_msg( m_debug, "%s vel: %d, slowdown: %d", name.c_str(), velocity, slowdown ); + add_msg( m_debug, "%s vel: %d, slowdown: %d", name, velocity, slowdown ); return slowdown; } @@ -103,9 +79,9 @@ void vehicle::thrust( int thd ) if( !valid_wheel_config( !floating.empty() ) && velocity == 0 ) { if( pl_ctrl ) { if( floating.empty() ) { - add_msg( _( "The %s doesn't have enough wheels to move!" ), name.c_str() ); + add_msg( _( "The %s doesn't have enough wheels to move!" ), name ); } else { - add_msg( _( "The %s is too leaky!" ), name.c_str() ); + add_msg( _( "The %s is too leaky!" ), name ); } } return; @@ -123,7 +99,7 @@ void vehicle::thrust( int thd ) int accel = acceleration() * traction; if( thrusting && accel == 0 ) { if( pl_ctrl ) { - add_msg( _( "The %s is too heavy for its engine(s)!" ), name.c_str() ); + add_msg( _( "The %s is too heavy for its engine(s)!" ), name ); } return; @@ -158,7 +134,7 @@ void vehicle::thrust( int thd ) //find power ratio used of engines max double load; if( cruise_on ) { - load = ( ( float )abs( vel_inc ) ) / std::max( ( thrusting ? accel : brk ), 1 ); + load = static_cast( abs( vel_inc ) ) / std::max( ( thrusting ? accel : brk ), 1 ); } else { load = ( thrusting ? 1.0 : 0.0 ); } @@ -166,18 +142,18 @@ void vehicle::thrust( int thd ) // only consume resources if engine accelerating if( load >= 0.01 && thrusting ) { //abort if engines not operational - if( total_power() <= 0 || !engine_on || accel == 0 ) { + if( total_power_w() <= 0 || !engine_on || accel == 0 ) { if( pl_ctrl ) { - if( total_power( false ) <= 0 ) { - add_msg( m_info, _( "The %s doesn't have an engine!" ), name.c_str() ); + if( total_power_w( false ) <= 0 ) { + add_msg( m_info, _( "The %s doesn't have an engine!" ), name ); } else if( has_engine_type( fuel_type_muscle, true ) ) { - add_msg( m_info, _( "The %s's mechanism is out of reach!" ), name.c_str() ); + add_msg( m_info, _( "The %s's mechanism is out of reach!" ), name ); } else if( !engine_on ) { - add_msg( _( "The %s's engine isn't on!" ), name.c_str() ); + add_msg( _( "The %s's engine isn't on!" ), name ); } else if( traction < 0.01f ) { - add_msg( _( "The %s is stuck." ), name.c_str() ); + add_msg( _( "The %s is stuck." ), name ); } else { - add_msg( _( "The %s's engine emits a sneezing sound." ), name.c_str() ); + add_msg( _( "The %s's engine emits a sneezing sound." ), name ); } } cruise_velocity = 0; @@ -202,8 +178,7 @@ void vehicle::thrust( int thd ) } //change vehicles velocity - if( ( velocity > 0 && velocity + vel_inc < 0 ) || - ( velocity < 0 && velocity + vel_inc > 0 ) ) { + if( ( velocity > 0 && velocity + vel_inc < 0 ) || ( velocity < 0 && velocity + vel_inc > 0 ) ) { //velocity within braking distance of 0 stop(); } else { @@ -273,6 +248,8 @@ void vehicle::turn( int deg ) if( turn_dir >= 360 ) { turn_dir -= 360; } + // quick rounding the turn dir to a multiple of 15 + turn_dir = 15 * ( ( turn_dir * 2 + 15 ) / 30 ); } void vehicle::stop() @@ -320,7 +297,7 @@ bool vehicle::collision( std::vector &colls, const bool vertical = bash_floor || dp.z != 0; const int &coll_velocity = vertical ? vertical_velocity : velocity; if( !just_detect && coll_velocity == 0 ) { - debugmsg( "Collision check on stationary vehicle %s", name.c_str() ); + debugmsg( "Collision check on stationary vehicle %s", name ); just_detect = true; } @@ -365,7 +342,7 @@ bool vehicle::collision( std::vector &colls, colls.push_back( fake_coll ); velocity = 0; vertical_velocity = 0; - add_msg( m_debug, "Collision check on a dirty vehicle %s", name.c_str() ); + add_msg( m_debug, "Collision check on a dirty vehicle %s", name ); return true; } @@ -675,11 +652,11 @@ veh_collision vehicle::part_collision( int part, const tripoint &p, if( time_stunned > 0_turns ) { //~ 1$s - vehicle name, 2$s - part name, 3$s - NPC or monster add_msg( m_warning, _( "Your %1$s's %2$s rams into %3$s and stuns it!" ), - name.c_str(), parts[ ret.part ].name().c_str(), ret.target_name.c_str() ); + name, parts[ ret.part ].name(), ret.target_name ); } else { //~ 1$s - vehicle name, 2$s - part name, 3$s - NPC or monster add_msg( m_warning, _( "Your %1$s's %2$s rams into %3$s!" ), - name.c_str(), parts[ ret.part ].name().c_str(), ret.target_name.c_str() ); + name, parts[ ret.part ].name(), ret.target_name ); } } @@ -694,11 +671,11 @@ veh_collision vehicle::part_collision( int part, const tripoint &p, if( snd.length() > 0 ) { // @todo: that is always false! //~ 1$s - vehicle name, 2$s - part name, 3$s - collision object name, 4$s - sound message add_msg( m_warning, _( "Your %1$s's %2$s rams into %3$s with a %4$s" ), - name.c_str(), parts[ ret.part ].name().c_str(), ret.target_name.c_str(), snd.c_str() ); + name, parts[ ret.part ].name(), ret.target_name, snd ); } else { //~ 1$s - vehicle name, 2$s - part name, 3$s - collision object name add_msg( m_warning, _( "Your %1$s's %2$s rams into %3$s." ), - name.c_str(), parts[ ret.part ].name().c_str(), ret.target_name.c_str() ); + name, parts[ ret.part ].name(), ret.target_name ); } } @@ -706,7 +683,7 @@ veh_collision vehicle::part_collision( int part, const tripoint &p, } if( smashed && !vert_coll ) { - int turn_amount = rng( 1, 3 ) * sqrt( ( double )part_dmg ); + int turn_amount = rng( 1, 3 ) * sqrt( static_cast( part_dmg ) ); turn_amount /= 15; if( turn_amount < 1 ) { turn_amount = 1; @@ -812,11 +789,9 @@ void vehicle::handle_trap( const tripoint &p, int part ) if( g->u.sees( p ) ) { if( g->u.knows_trap( p ) ) { //~ %1$s: name of the vehicle; %2$s: name of the related vehicle part; %3$s: trap name - add_msg( m_bad, _( "The %1$s's %2$s runs over %3$s." ), name.c_str(), - parts[ part ].name().c_str(), tr.name().c_str() ); + add_msg( m_bad, _( "The %1$s's %2$s runs over %3$s." ), name, parts[ part ].name(), tr.name() ); } else { - add_msg( m_bad, _( "The %1$s's %2$s runs over something." ), name.c_str(), - parts[ part ].name().c_str() ); + add_msg( m_bad, _( "The %1$s's %2$s runs over something." ), name, parts[ part ].name() ); } } if( noise > 0 ) { @@ -870,7 +845,7 @@ void vehicle::pldrive( int x, int y ) } if( penalty > skill || cost > 400 ) { - add_msg( m_warning, _( "You fumble with the %s's controls." ), name.c_str() ); + add_msg( m_warning, _( "You fumble with the %s's controls." ), name ); // Anything from a wasted attempt to 2 turns in the intended direction turn_delta *= rng( 0, 2 ); // Also wastes next turn @@ -906,7 +881,7 @@ void vehicle::pldrive( int x, int y ) ///\EFFECT_DRIVING increases chance of regaining control of a vehicle if( handling_diff * rng( 1, 10 ) < u.dex_cur + u.get_skill_level( skill_driving ) * 2 ) { - add_msg( _( "You regain control of the %s." ), name.c_str() ); + add_msg( _( "You regain control of the %s." ), name ); u.practice( skill_driving, velocity / 5 ); velocity = int( forward_velocity() ); skidding = false; @@ -929,7 +904,7 @@ void vehicle::possibly_recover_from_skid() // Threshold of recovery is Gaussianesque. if( fabs( dot ) * 100 > dice( 9, 20 ) ) { - add_msg( _( "The %s recovers from its skid." ), name.c_str() ); + add_msg( _( "The %s recovers from its skid." ), name ); skidding = false; // face_vec takes over. velocity *= dot; // Wheels absorb horizontal velocity. if( dot < -.8 ) { @@ -994,118 +969,111 @@ float get_collision_factor( float const delta_v ) } } -bool map::vehact( vehicle &veh ) +bool vehicle::act_on_map() { - const tripoint pt = veh.global_pos3(); - if( !inbounds( pt ) ) { + const tripoint pt = global_pos3(); + if( !g->m.inbounds( pt ) ) { dbg( D_INFO ) << "stopping out-of-map vehicle. (x,y,z)=(" << pt.x << "," << pt.y << "," << pt.z << ")"; - veh.stop(); - veh.of_turn = 0; - veh.falling = false; + stop(); + of_turn = 0; + falling = false; return true; } // It needs to fall when it has no support OR was falling before // so that vertical collisions happen. - const bool should_fall = veh.falling && - ( veh.vertical_velocity != 0 || vehicle_falling( veh ) ); - const bool pl_ctrl = veh.player_in_control( g->u ); + const bool should_fall = falling || ( vertical_velocity != 0 || g->m.vehicle_falling( *this ) ); + const bool pl_ctrl = player_in_control( g->u ); // TODO: Saner diagonal movement, so that you can jump off cliffs properly // The ratio of vertical to horizontal movement should be vertical_velocity/velocity // for as long as of_turn doesn't run out. if( should_fall ) { - const float tile_height = 4; // 4 meters const float g = 9.8f; // 9.8 m/s^2 // Convert from 100*mph to m/s - const float old_vel = veh.vertical_velocity / 2.23694 / 100; + const float old_vel = vertical_velocity / 2.23694 / 100; // Formula is v_2 = sqrt( 2*d*g + v_1^2 ) // Note: That drops the sign - const float new_vel = -sqrt( 2 * tile_height * g + - old_vel * old_vel ); - veh.vertical_velocity = new_vel * 2.23694 * 100; + const float new_vel = -sqrt( 2 * tile_height * g + old_vel * old_vel ); + vertical_velocity = new_vel * 2.23694 * 100; + falling = true; } else { // Not actually falling, was just marked for fall test - veh.falling = false; + falling = false; } - const int slowdown = veh.slowdown(); - //add_msg( m_debug, "%s vel: %d, slowdown: %d", veh.name.c_str(), veh.velocity, slowdown ); - if( slowdown > abs( veh.velocity ) ) { - veh.stop(); - } else if( veh.velocity < 0 ) { - veh.velocity += slowdown; + const int vslowdown = slowdown(); + if( vslowdown > abs( velocity ) ) { + stop(); + } else if( velocity < 0 ) { + velocity += vslowdown; } else { - veh.velocity -= slowdown; + velocity -= vslowdown; } // Low enough for bicycles to go in reverse. - if( !should_fall && abs( veh.velocity ) < 20 ) { - veh.stop(); - } - - if( !should_fall && abs( veh.velocity ) < 20 ) { - veh.of_turn -= .321f; + if( !should_fall && abs( velocity ) < 20 ) { + stop(); + of_turn -= .321f; return true; } - const float wheel_traction_area = vehicle_wheel_traction( veh ); - const float traction = veh.k_traction( wheel_traction_area ); + const float wheel_traction_area = g->m.vehicle_wheel_traction( *this ); + const float traction = k_traction( wheel_traction_area ); // TODO: Remove this hack, have vehicle sink a z-level if( wheel_traction_area < 0 ) { - add_msg( m_bad, _( "Your %s sank." ), veh.name.c_str() ); + add_msg( m_bad, _( "Your %s sank." ), name ); if( pl_ctrl ) { - veh.unboard_all(); + unboard_all(); } - if( g->remoteveh() == &veh ) { + if( g->remoteveh() == this ) { g->setremoteveh( nullptr ); } - on_vehicle_moved( veh.smz ); + g->m.on_vehicle_moved( smz ); // Destroy vehicle (sank to nowhere) - destroy_vehicle( &veh ); + g->m.destroy_vehicle( this ); return true; } else if( traction < 0.001f ) { - veh.of_turn = 0; + of_turn = 0; if( !should_fall ) { - veh.stop(); + stop(); // TODO: Remove this hack // TODO: Amphibious vehicles - if( veh.floating.empty() ) { - add_msg( m_info, _( "Your %s can't move on this terrain." ), veh.name.c_str() ); + if( floating.empty() ) { + add_msg( m_info, _( "Your %s can't move on this terrain." ), name ); } else { - add_msg( m_info, _( "Your %s is beached." ), veh.name.c_str() ); + add_msg( m_info, _( "Your %s is beached." ), name ); } } } - const float turn_cost = 1000.0f / std::max( 0.0001f, abs( veh.velocity ) ); + const float turn_cost = 1000.0f / std::max( 0.0001f, abs( velocity ) ); // Can't afford it this turn? // Low speed shouldn't prevent vehicle from falling, though bool falling_only = false; - if( turn_cost >= veh.of_turn ) { + if( turn_cost >= of_turn ) { if( !should_fall ) { - veh.of_turn_carry = veh.of_turn; - veh.of_turn = 0; + of_turn_carry = of_turn; + of_turn = 0; return true; } - falling_only = true; } // Decrease of_turn if falling+moving, but not when it's lower than move cost if( !falling_only ) { - veh.of_turn -= turn_cost; + of_turn -= turn_cost; } if( one_in( 10 ) ) { bool controlled = false; // It can even be a NPC, but must be at the controls - for( int boarded : veh.boarded_parts() ) { - if( veh.part_with_feature( boarded, VPFLAG_CONTROLS, true ) >= 0 ) { + for( int boarded : boarded_parts() ) { + if( part_with_feature( boarded, VPFLAG_CONTROLS, true ) >= 0 ) { controlled = true; - player *passenger = veh.get_passenger( boarded ); + player *passenger = get_passenger( boarded ); if( passenger != nullptr ) { passenger->practice( skill_driving, 1 ); } @@ -1115,37 +1083,37 @@ bool map::vehact( vehicle &veh ) // Eventually send it skidding if no control // But not if it's remotely controlled if( !controlled && !pl_ctrl ) { - veh.skidding = true; + skidding = true; } } - if( veh.skidding && one_in( 4 ) ) { + if( skidding && one_in( 4 ) ) { // Might turn uncontrollably while skidding - veh.turn( one_in( 2 ) ? -15 : 15 ); + turn( one_in( 2 ) ? -15 : 15 ); } if( should_fall ) { // TODO: Insert a (hard) driving test to stop this from happening - veh.skidding = true; + skidding = true; } // Where do we go tileray mdir; // The direction we're moving - if( veh.skidding || should_fall ) { + if( skidding || should_fall ) { // If skidding, it's the move vector // Same for falling - no air control - mdir = veh.move; - } else if( veh.turn_dir != veh.face.dir() ) { + mdir = move; + } else if( turn_dir != face.dir() ) { // Driver turned vehicle, get turn_dir - mdir.init( veh.turn_dir ); + mdir.init( turn_dir ); } else { // Not turning, keep face.dir - mdir = veh.face; + mdir = face; } tripoint dp; - if( abs( veh.velocity ) >= 20 && !falling_only ) { - mdir.advance( veh.velocity < 0 ? -1 : 1 ); + if( abs( velocity ) >= 20 && !falling_only ) { + mdir.advance( velocity < 0 ? -1 : 1 ); dp.x = mdir.dx(); dp.y = mdir.dy(); } @@ -1156,11 +1124,11 @@ bool map::vehact( vehicle &veh ) // Split the movement into horizontal and vertical for easier processing if( dp.x != 0 || dp.y != 0 ) { - move_vehicle( veh, tripoint( dp.x, dp.y, 0 ), mdir ); + g->m.move_vehicle( *this, tripoint( dp.x, dp.y, 0 ), mdir ); } if( dp.z != 0 ) { - move_vehicle( veh, tripoint( 0, 0, dp.z ), mdir ); + g->m.move_vehicle( *this, tripoint( 0, 0, dp.z ), mdir ); } return true; @@ -1175,6 +1143,11 @@ bool map::vehicle_falling( vehicle &veh ) // TODO: Make the vehicle "slide" towards its center of weight // when it's not properly supported const auto &pts = veh.get_points( true ); + if( pts.empty() ) { + // Dirty vehicle with no parts + return false; + } + for( const tripoint &p : pts ) { if( has_floor( p ) ) { return false; @@ -1186,11 +1159,6 @@ bool map::vehicle_falling( vehicle &veh ) } } - if( pts.empty() ) { - // Dirty vehicle with no parts - return false; - } - return true; } @@ -1301,9 +1269,8 @@ int map::shake_vehicle( vehicle &veh, const int velocity_before, const int direc if( lose_ctrl_roll > psg->dex_cur * 2 + psg->get_skill_level( skill_driving ) * 3 ) { psg->add_msg_player_or_npc( m_warning, _( "You lose control of the %s." ), - _( " loses control of the %s." ), - veh.name.c_str() ); - int turn_amount = ( rng( 1, 3 ) * sqrt( ( double )abs( veh.velocity ) ) / 2 ) / 15; + _( " loses control of the %s." ), veh.name ); + int turn_amount = ( rng( 1, 3 ) * sqrt( static_cast( abs( veh.velocity ) ) ) / 2 ) / 15; if( turn_amount < 1 ) { turn_amount = 1; } @@ -1319,7 +1286,7 @@ int map::shake_vehicle( vehicle &veh, const int velocity_before, const int direc psg->add_msg_player_or_npc( m_bad, _( "You are hurled from the %s's seat by the power of the impact!" ), _( " is hurled from the %s's seat by the power of the impact!" ), - veh.name.c_str() ); + veh.name ); unboard_vehicle( part_pos ); ///\EFFECT_STR reduces distance thrown from seat in a vehicle impact g->fling_creature( psg, direction + rng( 0, 60 ) - 30, diff --git a/src/vehicle_part.cpp b/src/vehicle_part.cpp index 1685f2ac76776..009370e3bdd4e 100644 --- a/src/vehicle_part.cpp +++ b/src/vehicle_part.cpp @@ -1,56 +1,35 @@ #include "vehicle.h" #include "coordinate_conversions.h" -#include "map.h" -#include "output.h" +#include "debug.h" #include "game.h" #include "item.h" -#include "veh_interact.h" -#include "cursesdef.h" -#include "catacharset.h" +#include "itype.h" +#include "map.h" #include "messages.h" -#include "iexamine.h" -#include "vpart_position.h" -#include "vpart_reference.h" +#include "npc.h" +#include "output.h" #include "string_formatter.h" -#include "ui.h" -#include "debug.h" -#include "sounds.h" #include "translations.h" -#include "ammo.h" -#include "options.h" -#include "monster.h" -#include "npc.h" #include "veh_type.h" -#include "itype.h" +#include "vpart_position.h" #include "weather.h" -#include "cata_utility.h" -#include -#include -#include -#include -#include -#include -#include #include #include +#include +#include static const itype_id fuel_type_none( "null" ); -static const itype_id fuel_type_gasoline( "gasoline" ); -static const itype_id fuel_type_diesel( "diesel" ); static const itype_id fuel_type_battery( "battery" ); -static const itype_id fuel_type_water( "water_clean" ); -static const itype_id fuel_type_muscle( "muscle" ); - /*----------------------------------------------------------------------------- * VEHICLE_PART *-----------------------------------------------------------------------------*/ vehicle_part::vehicle_part() : mount( 0, 0 ), id( vpart_id::NULL_ID() ) {} -vehicle_part::vehicle_part( const vpart_id &vp, int const dx, int const dy, item &&obj ) - : mount( dx, dy ), id( vp ), base( std::move( obj ) ) +vehicle_part::vehicle_part( const vpart_id &vp, const point dp, item &&obj ) + : mount( dp ), id( vp ), base( std::move( obj ) ) { // Mark base item as being installed as a vehicle part base.item_tags.insert( "VEHICLE" ); @@ -142,12 +121,12 @@ int vehicle_part::damage_level( int max ) const double vehicle_part::health_percent() const { - return ( 1.0 - ( double )base.damage() / base.max_damage() ); + return ( 1.0 - static_cast( base.damage() ) / base.max_damage() ); } double vehicle_part::damage_percent() const { - return ( double )base.damage() / base.max_damage(); + return static_cast( base.damage() ) / base.max_damage(); } /** parts are considered broken at zero health */ @@ -516,7 +495,7 @@ bool vehicle::can_enable( const vehicle_part &pt, bool alert ) const if( pt.info().epower < 0 && fuel_left( fuel_type_battery, true ) <= 0 ) { if( alert ) { - add_msg( m_bad, _( "Insufficient power to enable %s" ), pt.name().c_str() ); + add_msg( m_bad, _( "Insufficient power to enable %s" ), pt.name() ); } return false; } @@ -546,4 +525,3 @@ bool vehicle::assign_seat( vehicle_part &pt, const npc &who ) return true; } - diff --git a/src/vehicle_selector.cpp b/src/vehicle_selector.cpp index 146a8112a421d..91eddddbc910e 100644 --- a/src/vehicle_selector.cpp +++ b/src/vehicle_selector.cpp @@ -1,8 +1,8 @@ #include "vehicle_selector.h" #include "game.h" -#include "vpart_position.h" #include "map.h" +#include "vpart_position.h" vehicle_selector::vehicle_selector( const tripoint &pos, int radius, bool accessible, bool visibility_only ) diff --git a/src/vehicle_selector.h b/src/vehicle_selector.h index a889cc18407e6..f6e9025cb4b64 100644 --- a/src/vehicle_selector.h +++ b/src/vehicle_selector.h @@ -2,17 +2,17 @@ #ifndef VEHICLE_SELECTOR_H #define VEHICLE_SELECTOR_H -#include - #include "visitable.h" +#include + class vehicle; struct tripoint; class vehicle_cursor : public visitable { public: - vehicle_cursor( vehicle &veh, std::ptrdiff_t part ) : veh( veh ), part( part ) {}; + vehicle_cursor( vehicle &veh, std::ptrdiff_t part ) : veh( veh ), part( part ) {} vehicle &veh; std::ptrdiff_t part; }; @@ -34,7 +34,7 @@ class vehicle_selector : public visitable * @param pos map position at which to start each query which may or may not contain vehicle * @param radius number of adjacent tiles to include (searching from pos outwards) * @param accessible whether found items must be accessible from pos to be considered - * @param check accessibility based on line of sight, not walkability + * @param visibility_only accessibility based on line of sight, not walkability */ vehicle_selector( const tripoint &pos, int radius = 0, bool accessible = true, bool visibility_only = false ); diff --git a/src/vehicle_use.cpp b/src/vehicle_use.cpp index 5ed06d084decd..a280068866b2e 100644 --- a/src/vehicle_use.cpp +++ b/src/vehicle_use.cpp @@ -1,63 +1,46 @@ #include "vehicle.h" #include "coordinate_conversions.h" -#include "map.h" -#include "output.h" +#include "debug.h" #include "game.h" +#include "iexamine.h" #include "item.h" -#include "veh_interact.h" -#include "cursesdef.h" -#include "catacharset.h" -#include "overmapbuffer.h" +#include "itype.h" +#include "json.h" +#include "map.h" +#include "map_iterator.h" +#include "mapdata.h" #include "messages.h" -#include "iexamine.h" -#include "vpart_range.h" -#include "vpart_position.h" -#include "vpart_reference.h" -#include "string_formatter.h" -#include "ui.h" -#include "debug.h" +#include "mtype.h" +#include "output.h" +#include "overmapbuffer.h" #include "sounds.h" +#include "string_formatter.h" #include "translations.h" -#include "ammo.h" -#include "options.h" -#include "monster.h" -#include "npc.h" +#include "ui.h" +#include "veh_interact.h" #include "veh_type.h" -#include "itype.h" -#include "submap.h" -#include "mapdata.h" -#include "mtype.h" -#include "json.h" -#include "map_iterator.h" #include "vehicle_selector.h" -#include "cata_utility.h" +#include "vpart_position.h" +#include "vpart_range.h" +#include "vpart_reference.h" -#include -#include -#include -#include -#include -#include -#include #include +#include #include +#include +#include +#include static const itype_id fuel_type_none( "null" ); -static const itype_id fuel_type_gasoline( "gasoline" ); -static const itype_id fuel_type_diesel( "diesel" ); static const itype_id fuel_type_battery( "battery" ); -static const itype_id fuel_type_water( "water_clean" ); static const itype_id fuel_type_muscle( "muscle" ); -static const fault_id fault_belt( "fault_engine_belt_drive" ); static const fault_id fault_diesel( "fault_engine_pump_diesel" ); static const fault_id fault_glowplug( "fault_engine_glow_plug" ); static const fault_id fault_immobiliser( "fault_engine_immobiliser" ); static const fault_id fault_pump( "fault_engine_pump_fuel" ); static const fault_id fault_starter( "fault_engine_starter" ); -static const fault_id fault_filter_air( "fault_engine_filter_air" ); -static const fault_id fault_filter_fuel( "fault_engine_filter_fuel" ); const skill_id skill_mechanics( "mechanics" ); @@ -75,12 +58,12 @@ char keybind( const std::string &opt, const std::string &context ) return keys.empty() ? ' ' : keys.front(); } -void vehicle::add_toggle_to_opts( std::vector &options, +void vehicle::add_toggle_to_opts( std::vector &options, std::vector> &actions, const std::string &name, char key, const std::string &flag ) { // fetch matching parts and abort early if none found - const auto found = get_parts( flag ); + const auto found = get_avail_parts( flag ); if( empty( found ) ) { return; } @@ -100,7 +83,10 @@ void vehicle::add_toggle_to_opts( std::vector &options, } ); } - auto msg = string_format( state ? _( "Turn on %s" ) : _( "Turn off %s" ), name.c_str() ); + auto msg = string_format( state ? + _( "Turn on %s" ) : + get_tag_from_color( c_pink ) + _( "Turn off %s" ) + "", + name ); options.emplace_back( -1, allow, key, msg ); actions.push_back( [ = ] { @@ -108,7 +94,7 @@ void vehicle::add_toggle_to_opts( std::vector &options, { vehicle_part &e = vp.part(); if( e.enabled != state ) { - add_msg( state ? _( "Turned on %s" ) : _( "Turned off %s." ), e.name().c_str() ); + add_msg( state ? _( "Turned on %s" ) : _( "Turned off %s." ), e.name() ); e.enabled = state; } } @@ -118,7 +104,7 @@ void vehicle::add_toggle_to_opts( std::vector &options, void vehicle::control_doors() { - const auto door_motors = get_parts( "DOOR_MOTOR" ); + const auto door_motors = get_avail_parts( "DOOR_MOTOR" ); std::vector< int > doors_with_motors; // Indices of doors std::vector< tripoint > locations; // Locations used to display the doors // it is possible to have one door to open and one to close for single motor @@ -163,11 +149,11 @@ void vehicle::control_doors() pmenu.query(); if( pmenu.ret >= 0 ) { - if( pmenu.ret < ( int )doors_with_motors.size() ) { + if( pmenu.ret < static_cast( doors_with_motors.size() ) ) { int part = doors_with_motors[pmenu.ret]; open_or_close( part, !( parts[part].open ) ); - } else if( pmenu.ret < ( ( int )doors_with_motors.size() + CANCEL ) ) { - int option = pmenu.ret - ( int )doors_with_motors.size(); + } else if( pmenu.ret < ( static_cast( doors_with_motors.size() ) + CANCEL ) ) { + int option = pmenu.ret - static_cast( doors_with_motors.size() ); bool open = option == OPENBOTH || option == OPENCURTAINS; for( const vpart_reference &vp : door_motors ) { const size_t motor = vp.part_index(); @@ -206,7 +192,7 @@ void vehicle::control_doors() } } -void vehicle::set_electronics_menu_options( std::vector &options, +void vehicle::set_electronics_menu_options( std::vector &options, std::vector> &actions ) { auto add_toggle = [&]( const std::string & name, char key, const std::string & flag ) { @@ -236,7 +222,9 @@ void vehicle::set_electronics_menu_options( std::vector &options, } if( camera_on || ( has_part( "CAMERA" ) && has_part( "CAMERA_CONTROL" ) ) ) { - options.emplace_back( camera_on ? _( "Turn off camera system" ) : _( "Turn on camera system" ), + options.emplace_back( camera_on ? + get_tag_from_color( c_pink ) + _( "Turn off camera system" ) + "" : + _( "Turn on camera system" ), keybind( "TOGGLE_CAMERA" ) ); actions.push_back( [&] { if( camera_on ) @@ -265,7 +253,7 @@ void vehicle::control_electronics() bool valid_option = false; do { - std::vector options; + std::vector options; std::vector> actions; set_electronics_menu_options( options, actions ); @@ -294,9 +282,9 @@ void vehicle::control_engines() } //show menu until user finishes - while( e_toggle >= 0 && e_toggle < ( int )engines.size() ) { + while( e_toggle >= 0 && e_toggle < static_cast( engines.size() ) ) { e_toggle = select_engine(); - if( e_toggle >= 0 && e_toggle < ( int )engines.size() && + if( e_toggle >= 0 && e_toggle < static_cast( engines.size() ) && ( active_count > 1 || !is_part_on( engines[e_toggle] ) ) ) { active_count += ( !is_part_on( engines[e_toggle] ) ) ? 1 : -1; toggle_specific_engine( e_toggle, !is_part_on( engines[e_toggle] ) ); @@ -316,10 +304,10 @@ void vehicle::control_engines() } if( engine_on ) { - add_msg( _( "You turn off the %s's engines to change their configurations." ), name.c_str() ); + add_msg( _( "You turn off the %s's engines to change their configurations." ), name ); engine_on = false; } else if( !g->u.controlling_vehicle ) { - add_msg( _( "You change the %s's engine configuration." ), name.c_str() ); + add_msg( _( "You change the %s's engine configuration." ), name ); return; } @@ -348,10 +336,10 @@ bool vehicle::interact_vehicle_locked() { if( is_locked ) { const inventory &crafting_inv = g->u.crafting_inventory(); - add_msg( _( "You don't find any keys in the %s." ), name.c_str() ); + add_msg( _( "You don't find any keys in the %s." ), name ); if( crafting_inv.has_quality( quality_id( "SCREW" ) ) ) { if( query_yn( _( "You don't find any keys in the %s. Attempt to hotwire vehicle?" ), - name.c_str() ) ) { + name ) ) { ///\EFFECT_MECHANICS speeds up vehicle hotwiring int mechanics_skill = g->u.get_skill_level( skill_mechanics ); int hotwire_time = 6000 / ( ( mechanics_skill > 0 ) ? mechanics_skill : 1 ); @@ -363,7 +351,7 @@ bool vehicle::interact_vehicle_locked() g->u.activity.values.push_back( global_pos3().y + q.y ); //[1] g->u.activity.values.push_back( g->u.get_skill_level( skill_mechanics ) ); //[2] } else { - if( has_security_working() && query_yn( _( "Trigger the %s's Alarm?" ), name.c_str() ) ) { + if( has_security_working() && query_yn( _( "Trigger the %s's Alarm?" ), name ) ) { is_alarm_on = true; } else { add_msg( _( "You leave the controls alone." ) ); @@ -443,7 +431,7 @@ void vehicle::toggle_tracking() void vehicle::use_controls( const tripoint &pos ) { - std::vector options; + std::vector options; std::vector> actions; bool remote = g->remoteveh() == this; @@ -469,10 +457,11 @@ void vehicle::use_controls( const tripoint &pos ) refresh(); } ); } - has_electronic_controls = !get_parts( pos, "CTRL_ELECTRONIC", false, false ).empty(); + has_electronic_controls = !get_parts_at( pos, "CTRL_ELECTRONIC", + part_status_flag::any ).empty(); } - if( get_parts( pos, "CONTROLS", false, false ).empty() && !has_electronic_controls ) { + if( get_parts_at( pos, "CONTROLS", part_status_flag::any ).empty() && !has_electronic_controls ) { add_msg( m_info, _( "No controls there" ) ); return; } @@ -607,16 +596,16 @@ bool vehicle::fold_up() if( g->u.controlling_vehicle ) { add_msg( m_warning, _( "As the pitiless metal bars close on your nether regions, you reconsider trying to fold the %s while riding it." ), - name.c_str() ); + name ); return false; } if( velocity > 0 ) { - add_msg( m_warning, _( "You can't fold the %s while it's in motion." ), name.c_str() ); + add_msg( m_warning, _( "You can't fold the %s while it's in motion." ), name ); return false; } - add_msg( _( "You painstakingly pack the %s into a portable configuration." ), name.c_str() ); + add_msg( _( "You painstakingly pack the %s into a portable configuration." ), name ); std::string itype_id = "folding_bicycle"; for( const auto &elem : tags ) { @@ -630,7 +619,7 @@ bool vehicle::fold_up() item bicycle( can_be_folded ? "generic_folded_vehicle" : "folding_bicycle", calendar::turn ); // Drop stuff in containers on ground - for( const vpart_reference &vp : get_parts( "CARGO" ) ) { + for( const vpart_reference &vp : get_any_parts( "CARGO" ) ) { const size_t p = vp.part_index(); for( auto &elem : get_items( p ) ) { g->m.add_item_or_charges( g->u.pos(), elem ); @@ -701,7 +690,10 @@ int vehicle::engine_start_time( const int e ) const // diesel engines with working glow plugs always start with f = 0.6 (or better) const int cold = ( 1 / tanh( 1 - std::min( engine_cold_factor( e ), 0.9 ) ) ) * 100; - return ( part_power( engines[ e ], true ) / 16 ) + ( 100 * dmg ) + cold; + // watts to old vhp = watts / 373 + // divided by magic 16 = watts / 6000 + const int watts_per_time = 6000; + return part_vpower_w( engines[ e ], true ) / watts_per_time + ( 100 * dmg ) + cold; } bool vehicle::start_engine( const int e ) @@ -715,16 +707,25 @@ bool vehicle::start_engine( const int e ) if( fuel_left( einfo.fuel_type ) <= 0 && einfo.fuel_type != fuel_type_none ) { if( einfo.fuel_type == fuel_type_muscle ) { - add_msg( _( "The %s's mechanism is out of reach!" ), name.c_str() ); + // Muscle engines cannot start with broken limbs + if( einfo.has_flag( "MUSCLE_ARMS" ) && ( g->u.hp_cur[hp_arm_l] == 0 || + g->u.hp_cur[hp_arm_r] == 0 ) ) { + add_msg( _( "You cannot use %s with a broken arm." ), eng.name() ); + } else if( einfo.has_flag( "MUSCLE_LEGS" ) && ( g->u.hp_cur[hp_leg_l] == 0 || + g->u.hp_cur[hp_leg_r] == 0 ) ) { + add_msg( _( "You cannot use %s with a broken leg." ), eng.name() ); + } else { + add_msg( _( "The %s's mechanism is out of reach!" ), name ); + } } else { - add_msg( _( "Looks like the %1$s is out of %2$s." ), eng.name().c_str(), - item::nname( einfo.fuel_type ).c_str() ); + add_msg( _( "Looks like the %1$s is out of %2$s." ), eng.name(), + item::nname( einfo.fuel_type ) ); } return false; } const double dmg = parts[engines[e]].damage_percent(); - const int engine_power = part_power( engines[e], true ); + const int engine_power = part_vpower_w( engines[e], true ); const double cold_factor = engine_cold_factor( e ); if( einfo.engine_backfire_threshold() ) { @@ -738,32 +739,33 @@ bool vehicle::start_engine( const int e ) // Immobilizers need removing before the vehicle can be started if( eng.faults().count( fault_immobiliser ) ) { - add_msg( _( "The %s makes a long beeping sound." ), eng.name().c_str() ); + add_msg( _( "The %s makes a long beeping sound." ), eng.name() ); return false; } // Engine with starter motors can fail on both battery and starter motor if( eng.faults_potential().count( fault_starter ) ) { if( eng.faults().count( fault_starter ) ) { - add_msg( _( "The %s makes a single clicking sound." ), eng.name().c_str() ); + add_msg( _( "The %s makes a single clicking sound." ), eng.name() ); return false; } - const int penalty = ( engine_power * dmg / 2 ) + ( engine_power * cold_factor / 5 ); - if( discharge_battery( ( engine_power + penalty ) / 10, true ) != 0 ) { - add_msg( _( "The %s makes a rapid clicking sound." ), eng.name().c_str() ); + const int start_draw_bat = power_to_energy_bat( engine_power * ( 1.0 + dmg / 2 + cold_factor / 5 ) / + 3, 1_turns ); + if( discharge_battery( start_draw_bat, true ) != 0 ) { + add_msg( _( "The %s makes a rapid clicking sound." ), eng.name() ); return false; } } // Engines always fail to start with faulty fuel pumps if( eng.faults().count( fault_pump ) || eng.faults().count( fault_diesel ) ) { - add_msg( _( "The %s quickly stutters out." ), eng.name().c_str() ); + add_msg( _( "The %s quickly stutters out." ), eng.name() ); return false; } // Damaged engines have a chance of failing to start if( x_in_y( dmg * 100, 120 ) ) { - add_msg( _( "The %s makes a terrible clanking sound." ), eng.name().c_str() ); + add_msg( _( "The %s makes a terrible clanking sound." ), eng.name() ); return false; } @@ -804,13 +806,13 @@ void vehicle::start_engines( const bool take_control ) } if( !has_engine ) { - add_msg( m_info, _( "The %s doesn't have an engine!" ), name.c_str() ); + add_msg( m_info, _( "The %s doesn't have an engine!" ), name ); return; } if( take_control && !g->u.controlling_vehicle ) { g->u.controlling_vehicle = true; - add_msg( _( "You take control of the %s." ), name.c_str() ); + add_msg( _( "You take control of the %s." ), name ); } g->u.assign_activity( activity_id( "ACT_START_ENGINES" ), start_time ); @@ -823,7 +825,7 @@ void vehicle::honk_horn() const bool no_power = ! fuel_left( fuel_type_battery, true ); bool honked = false; - for( const vpart_reference &vp : get_parts( "HORN" ) ) { + for( const vpart_reference &vp : get_avail_parts( "HORN" ) ) { //Only bicycle horn doesn't need electricity to work const vpart_info &horn_type = vp.info(); if( ( horn_type.get_id() != vpart_id( "horn_bicycle" ) ) && no_power ) { @@ -861,7 +863,7 @@ void vehicle::beeper_sound() } const bool odd_turn = calendar::once_every( 2_turns ); - for( const vpart_reference &vp : get_parts( "BEEPER" ) ) { + for( const vpart_reference &vp : get_avail_parts( "BEEPER" ) ) { if( ( odd_turn && vp.has_feature( VPFLAG_EVENTURN ) ) || ( !odd_turn && vp.has_feature( VPFLAG_ODDTURN ) ) ) { continue; @@ -893,7 +895,7 @@ void vehicle::play_chimes() void vehicle::operate_plow() { - for( const vpart_reference &vp : get_parts( "PLOW" ) ) { + for( const vpart_reference &vp : get_enabled_parts( "PLOW" ) ) { const tripoint start_plow = vp.pos(); if( g->m.has_flag( "DIGGABLE", start_plow ) ) { g->m.ter_set( start_plow, t_dirtmound ); @@ -908,7 +910,7 @@ void vehicle::operate_plow() void vehicle::operate_rockwheel() { - for( const vpart_reference &vp : get_parts( "ROCKWHEEL" ) ) { + for( const vpart_reference &vp : get_enabled_parts( "ROCKWHEEL" ) ) { const tripoint start_dig = vp.pos(); if( g->m.has_flag( "DIGGABLE", start_dig ) ) { g->m.ter_set( start_dig, t_pit_shallow ); @@ -923,7 +925,7 @@ void vehicle::operate_rockwheel() void vehicle::operate_reaper() { - for( const vpart_reference &vp : get_parts( "REAPER" ) ) { + for( const vpart_reference &vp : get_enabled_parts( "REAPER" ) ) { const size_t reaper_id = vp.part_index(); const tripoint reaper_pos = vp.pos(); const int plant_produced = rng( 1, vp.info().bonus ); @@ -962,7 +964,7 @@ void vehicle::operate_reaper() void vehicle::operate_planter() { - for( const vpart_reference &vp : get_parts( "PLANTER" ) ) { + for( const vpart_reference &vp : get_enabled_parts( "PLANTER" ) ) { const size_t planter_id = vp.part_index(); const tripoint loc = vp.pos(); vehicle_stack v = get_items( planter_id ); @@ -998,7 +1000,7 @@ void vehicle::operate_planter() void vehicle::operate_scoop() { - for( const vpart_reference &vp : get_parts( "SCOOP" ) ) { + for( const vpart_reference &vp : get_enabled_parts( "SCOOP" ) ) { const size_t scoop = vp.part_index(); const int chance_to_damage_item = 9; const units::volume max_pickup_volume = vp.info().size / 10; @@ -1023,7 +1025,7 @@ void vehicle::operate_scoop() continue;//ignore it. Street sweepers are not known for their ability to harvest crops. } size_t itemdex = 0; - for( auto it : q ) { + for( const item &it : q ) { if( it.volume() < max_pickup_volume ) { that_item_there = g->m.item_from( position, itemdex ); break; @@ -1042,7 +1044,7 @@ void vehicle::operate_scoop() _( "BEEEThump" ) ); } const int battery_deficit = discharge_battery( that_item_there->weight() / 1_gram * - -part_epower( scoop ) / rng( 8, 15 ) ); + -part_epower_w( scoop ) / rng( 8, 15 ) ); if( battery_deficit == 0 && add_item( scoop, *that_item_there ) ) { g->m.i_rem( position, itemdex ); } else { @@ -1064,7 +1066,7 @@ void vehicle::alarm() _( "WHOOP WHOOP" ), _( "NEEeu NEEeu NEEeu" ), _( "BLEEEEEEP" ), _( "WREEP" ) } }; - sounds::sound( global_pos3(), ( int ) rng( 45, 80 ), random_entry_ref( sound_msgs ) ); + sounds::sound( global_pos3(), static_cast( rng( 45, 80 ) ), random_entry_ref( sound_msgs ) ); if( one_in( 1000 ) ) { is_alarm_on = false; } @@ -1124,7 +1126,7 @@ void vehicle::open_all_at( int p ) void vehicle::open_or_close( int const part_index, bool const opening ) { - parts[part_index].open = opening ? 1 : 0; + parts[part_index].open = opening; insides_dirty = true; g->m.set_transparency_cache_dirty( smz ); @@ -1132,18 +1134,20 @@ void vehicle::open_or_close( int const part_index, bool const opening ) return; } + const point origin = parts[part_index].mount; /* Find all other closed parts with the same ID in adjacent squares. * This is a tighter restriction than just looking for other Multisquare * Openable parts, and stops trunks from opening side doors and the like. */ - for( const vpart_reference &vp : get_parts() ) { + // FIXME let's not recursively call get_all_parts + for( const vpart_reference &vp : get_all_parts() ) { const size_t next_index = vp.part_index(); if( vp.part().removed ) { continue; } //Look for parts 1 square off in any cardinal direction - const int dx = vp.mount().x - vp.mount().x; - const int dy = vp.mount().y - vp.mount().y; + const int dx = vp.mount().x - origin.x; + const int dy = vp.mount().y - origin.y; const int delta = dx * dx + dy * dy; const bool is_near = ( delta == 1 ); @@ -1171,7 +1175,7 @@ void vehicle::use_washing_machine( int p ) _( "You turn the washing machine off before it's finished the program, and open its lid." ) ); } else if( fuel_left( "water" ) < 24 && fuel_left( "water_clean" ) < 24 ) { add_msg( m_bad, _( "You need 24 charges of water in tanks of the %s to fill the washing machine." ), - name.c_str() ); + name ); } else if( !detergent_is_enough ) { add_msg( m_bad, _( "You need 5 charges of detergent for the washing machine." ) ); } else if( !filthy_items ) { diff --git a/src/visitable.cpp b/src/visitable.cpp index 37e2e362652aa..7d0869d6af161 100644 --- a/src/visitable.cpp +++ b/src/visitable.cpp @@ -1,20 +1,19 @@ #include "visitable.h" -#include "string_id.h" +#include "bionics.h" +#include "character.h" #include "debug.h" -#include "item.h" +#include "game.h" #include "inventory.h" -#include "character.h" -#include "map_selector.h" -#include "vehicle_selector.h" -#include "bionics.h" +#include "item.h" #include "map.h" +#include "map_selector.h" +#include "player.h" +#include "string_id.h" #include "submap.h" -#include "vehicle.h" #include "veh_type.h" -#include "game.h" -#include "itype.h" -#include "player.h" +#include "vehicle.h" +#include "vehicle_selector.h" /** @relates visitable */ template @@ -823,7 +822,7 @@ long visitable::charges_of( const std::string &what, long limit ) con if( what == "toolset" ) { if( p && p->has_active_bionic( bionic_id( "bio_tools" ) ) ) { - return std::min( ( long )p->power_level, limit ); + return std::min( static_cast( p->power_level ), limit ); } else { return 0; } diff --git a/src/vitamin.cpp b/src/vitamin.cpp index ee4b9ca6131eb..78dfae8aca582 100644 --- a/src/vitamin.cpp +++ b/src/vitamin.cpp @@ -1,12 +1,12 @@ #include "vitamin.h" -#include - +#include "assign.h" +#include "calendar.h" #include "debug.h" #include "json.h" #include "translations.h" -#include "calendar.h" -#include "assign.h" + +#include static std::map vitamins_all; diff --git a/src/vitamin.h b/src/vitamin.h index 06e1e89eef38c..3f02b8626e116 100644 --- a/src/vitamin.h +++ b/src/vitamin.h @@ -2,10 +2,9 @@ #ifndef VITAMIN_H #define VITAMIN_H -#include "string_id.h" #include "calendar.h" +#include "string_id.h" -#include #include #include #include diff --git a/src/vpart_position.h b/src/vpart_position.h index e64dbe9fc5e7d..54831854681f0 100644 --- a/src/vpart_position.h +++ b/src/vpart_position.h @@ -11,6 +11,7 @@ class vehicle; enum vpart_bitflags : int; class vpart_reference; struct tripoint; +struct point; /** * Reference to a position (a point) of the @ref vehicle. @@ -64,6 +65,10 @@ class vpart_position * Broken parts are also never obstacles. */ cata::optional obstacle_at_part() const; + /** + * Returns the part displayed at this point of the vehicle. + */ + cata::optional part_displayed() const; /** * Returns the position of this part in the coordinates system that @ref game::m uses. * Postcondition (if the vehicle cache of the map is correct and if there are un-removed @@ -98,6 +103,7 @@ class optional_vpart_position : public cata::optional cata::optional part_with_feature( const std::string &f, bool unbroken ) const; cata::optional part_with_feature( vpart_bitflags f, bool unbroken ) const; cata::optional obstacle_at_part() const; + cata::optional part_displayed() const; }; // For legacy code, phase out, don't use in new code. diff --git a/src/vpart_range.h b/src/vpart_range.h index 30551633af54c..5d9de46bd6046 100644 --- a/src/vpart_range.h +++ b/src/vpart_range.h @@ -2,12 +2,12 @@ #ifndef VPART_RANGE_H #define VPART_RANGE_H -#include "vpart_reference.h" #include "optional.h" +#include "vpart_reference.h" -#include -#include #include +#include +#include // Some functions have templates with default values that may seem pointless, // but they allow to use the type in question without including the header @@ -16,6 +16,7 @@ // "vpart_reference.h", but `*some_range.begin()` requires it. class vpart_reference; +enum class part_status_flag : int; /** * Exposes (multiple) parts of one vehicle as @ref vpart_reference. @@ -35,7 +36,8 @@ class vehicle_part_iterator return range_.get(); } void skip_to_next_valid( size_t i ) { - while( i < range().part_count() && !range().contained( i ) ) { + while( i < range().part_count() && + !range().matches( i ) ) { ++i; } if( i < range().part_count() ) { @@ -46,7 +48,7 @@ class vehicle_part_iterator } public: - vehicle_part_iterator( const range_type &r, size_t i ) : range_( r ), vp_() { + vehicle_part_iterator( const range_type &r, size_t i ) : range_( r ) { assert( i <= range().part_count() ); skip_to_next_valid( i ); } @@ -147,7 +149,7 @@ class vehicle_part_range : public generic_vehicle_part_range public: vehicle_part_range( ::vehicle &v ) : generic_vehicle_part_range( v ) { } - bool contained( const size_t /*part*/ ) const { + bool matches( const size_t /*part*/ ) const { return true; } }; @@ -161,15 +163,14 @@ class vehicle_part_with_feature_range : public { private: feature_type feature_; - bool unbroken_; - bool enabled_; + part_status_flag required_; public: - vehicle_part_with_feature_range( ::vehicle &v, feature_type f, const bool u, - const bool e ) : generic_vehicle_part_range>( v ), - feature_( std::move( f ) ), unbroken_( u ), enabled_( e ) { } + vehicle_part_with_feature_range( ::vehicle &v, feature_type f, part_status_flag r ) : + generic_vehicle_part_range>( v ), + feature_( std::move( f ) ), required_( r ) { } - bool contained( const size_t part ) const; + bool matches( const size_t part ) const; }; #endif diff --git a/src/vpart_reference.h b/src/vpart_reference.h index 1f0171ac68f13..23e8650734a0d 100644 --- a/src/vpart_reference.h +++ b/src/vpart_reference.h @@ -21,8 +21,6 @@ enum vpart_bitflags : int; */ class vpart_reference : public vpart_position { - private: - public: vpart_reference( ::vehicle &v, const size_t part ) : vpart_position( v, part ) { } vpart_reference( const vpart_reference & ) = default; diff --git a/src/wcwidth.h b/src/wcwidth.h index f384e3feca3c7..bf874dafb945d 100644 --- a/src/wcwidth.h +++ b/src/wcwidth.h @@ -60,9 +60,8 @@ * Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c */ -#include -#include -#include +#include +#include struct interval { uint32_t first; @@ -73,7 +72,7 @@ struct interval { static uint32_t bisearch( uint32_t ucs, const struct interval *table, uint32_t max ) { uint32_t min = 0; - uint32_t mid; + uint32_t mid = 0; if( ucs < table[0].first || ucs > table[max].last ) { return 0; diff --git a/src/wdirent.h b/src/wdirent.h index 31c7318a53f58..12f10cb707794 100644 --- a/src/wdirent.h +++ b/src/wdirent.h @@ -98,17 +98,17 @@ #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_IX86) # define _X86_ #endif -#include -#include +#include +#include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include -#include +#include #if defined(_WIN32) || defined(WINDOWS) // needed by MultiByteToWideChar diff --git a/src/weather.cpp b/src/weather.cpp index 5bb6a73dfa0ae..dcf9461edebe6 100644 --- a/src/weather.cpp +++ b/src/weather.cpp @@ -1,26 +1,26 @@ #include "weather.h" -#include "coordinate_conversions.h" -#include "options.h" -#include "output.h" #include "calendar.h" +#include "cata_utility.h" +#include "coordinate_conversions.h" #include "game.h" +#include "game_constants.h" #include "map.h" #include "messages.h" +#include "options.h" +#include "output.h" #include "overmap.h" #include "overmapbuffer.h" -#include "trap.h" -#include "math.h" +#include "player.h" +#include "sounds.h" #include "string_formatter.h" #include "translations.h" +#include "trap.h" #include "weather_gen.h" -#include "sounds.h" -#include "cata_utility.h" -#include "player.h" -#include "game_constants.h" -#include +#include #include +#include const efftype_id effect_glare( "glare" ); const efftype_id effect_blind( "blind" ); @@ -146,7 +146,12 @@ weather_sum sum_conditions( const time_point &start, const time_point &end, tick_size = 1_minutes; } - const auto wtype = wgen.get_weather_conditions( location, to_turn( t ), g->get_seed() ); + weather_type wtype; + if( g->weather_override == WEATHER_NULL ) { + wtype = wgen.get_weather_conditions( location, t, g->get_seed() ); + } else { + wtype = g->weather_override; + } proc_weather_sum( wtype, data, t, tick_size ); } @@ -253,7 +258,8 @@ double funnel_charges_per_turn( const double surface_area_mm2, const double rain // Calculate once, because that part is expensive static const item water( "water", 0 ); - static const double charge_ml = ( double ) to_gram( water.weight() ) / water.charges; // 250ml + static const double charge_ml = static_cast( to_gram( water.weight() ) ) / + water.charges; // 250ml const double vol_mm3_per_hour = surface_area_mm2 * rain_depth_mm_per_hour; const double vol_mm3_per_turn = vol_mm3_per_hour / HOURS( 1 ); @@ -387,10 +393,10 @@ void generic_very_wet( bool acid ) wet_player( 60 ); } -void weather_effect::none() {}; -void weather_effect::flurry() {}; -void weather_effect::snow() {}; -void weather_effect::snowstorm() {}; +void weather_effect::none() {} +void weather_effect::flurry() {} +void weather_effect::snow() {} +void weather_effect::snowstorm() {} /** * Wet. diff --git a/src/weather_data.cpp b/src/weather_data.cpp index 0ac1f750eb84a..90537fac0851c 100644 --- a/src/weather_data.cpp +++ b/src/weather_data.cpp @@ -1,14 +1,13 @@ #include "weather.h" -#include "translations.h" + #include "color.h" -#include "catacharset.h" #include "game_constants.h" +#include "translations.h" -#include -#include -#include #include #include +#include +#include /** * @ingroup Weather @@ -131,7 +130,7 @@ int calc_hourly_rotpoints_at_temp( const int temp ) const int cutoffrot = 3540; // ..almost 6 times the base rate. bacteria hate the heat too const int dsteps = dropoff - temperatures::freezing; - const int dstep = ( 35.91 * std::pow( 2.0, ( float )dropoff / 16.0 ) / dsteps ); + const int dstep = ( 35.91 * std::pow( 2.0, static_cast( dropoff ) / 16.0 ) / dsteps ); if( temp < temperatures::freezing ) { return 0; @@ -140,7 +139,7 @@ int calc_hourly_rotpoints_at_temp( const int temp ) } else if( temp < dropoff ) { return ( ( temp - temperatures::freezing ) * dstep ); } else { - return int( ( 35.91 * std::pow( 2.0, ( float )temp / 16.0 ) ) + 0.5 ); + return lround( 35.91 * std::pow( 2.0, static_cast( temp ) / 16.0 ) ); } } diff --git a/src/weather_gen.cpp b/src/weather_gen.cpp index fa6f638594b7b..80b78516e4987 100644 --- a/src/weather_gen.cpp +++ b/src/weather_gen.cpp @@ -1,13 +1,14 @@ #include "weather_gen.h" -#include "weather.h" -#include "enums.h" + #include "calendar.h" -#include "simplexnoise.h" +#include "enums.h" #include "json.h" +#include "simplexnoise.h" +#include "weather.h" #include -#include #include +#include namespace { diff --git a/src/weighted_list.h b/src/weighted_list.h index 50095b04b3fac..787adcf7deb59 100644 --- a/src/weighted_list.h +++ b/src/weighted_list.h @@ -2,11 +2,9 @@ #ifndef WEIGHTED_LIST_H #define WEIGHTED_LIST_H -#include "rng.h" -#include -#include #include -#include +#include +#include template struct weighted_object { weighted_object( const T &obj, const W &weight ) : obj( obj ), weight( weight ) {} @@ -16,7 +14,7 @@ template struct weighted_object { }; template struct weighted_list { - weighted_list() : total_weight( 0 ) { }; + weighted_list() : total_weight( 0 ) { } virtual ~weighted_list() = default; @@ -33,7 +31,7 @@ template struct weighted_list { invalidate_precalc(); return &( objects[objects.size() - 1].obj ); } - return NULL; + return nullptr; } /** @@ -58,7 +56,7 @@ template struct weighted_list { // if not found, add to end of list return add( obj, weight ); } - return NULL; + return nullptr; } /** @@ -91,7 +89,7 @@ template struct weighted_list { if( total_weight > 0 ) { return &( objects[pick_ent( randi )].obj ); } else { - return NULL; + return nullptr; } } const T *pick() const { @@ -108,7 +106,7 @@ template struct weighted_list { if( total_weight > 0 ) { return &( objects[pick_ent( randi )].obj ); } else { - return NULL; + return nullptr; } } T *pick() { @@ -161,7 +159,7 @@ template struct weighted_list { typename std::vector >::iterator last ) { invalidate_precalc(); return objects.erase( first, last ); - }; + } size_t size() const noexcept { return objects.size(); } @@ -185,9 +183,8 @@ template struct weighted_int_list : public weighted_list { void precalc() { precalc_array.clear(); precalc_array.reserve( this->total_weight ); // to avoid additional reallocations - size_t i; // weights [3,1,5] will produce vector of indices [0,0,0,1,2,2,2,2,2] - for( i = 0; i < this->objects.size(); i++ ) { + for( size_t i = 0; i < this->objects.size(); i++ ) { precalc_array.resize( precalc_array.size() + this->objects[i].weight, i ); } } @@ -200,7 +197,7 @@ template struct weighted_int_list : public weighted_list { } size_t i; int picked = ( randi % ( this->total_weight ) ) + 1; - if( precalc_array.size() ) { + if( !precalc_array.empty() ) { // if the precalc_array is populated, use it for O(1) lookup i = precalc_array[picked - 1]; } else { @@ -230,7 +227,8 @@ template struct weighted_float_list : public weighted_listtotal_weight ); + double picked = static_cast( randi % RAND_MAX ) / static_cast( RAND_MAX ) * + ( this->total_weight ); double accumulated_weight = 0; size_t i; for( i = 0; i < this->objects.size(); i++ ) { diff --git a/src/wish.cpp b/src/wish.cpp index 1eedb4dca571e..eda2ec52e2d9e 100644 --- a/src/wish.cpp +++ b/src/wish.cpp @@ -1,31 +1,28 @@ -#include "game.h" -#include "map.h" #include "debug.h" -#include "string_formatter.h" -#include "item_factory.h" -#include "uistate.h" -#include "output.h" -#include "monstergenerator.h" -#include "compatibility.h" -#include "translations.h" +#include "debug_menu.h" +#include "game.h" #include "input.h" +#include "item_factory.h" +#include "map.h" #include "monster.h" -#include "ui.h" -#include "skill.h" -#include "mutation.h" +#include "monstergenerator.h" #include "mtype.h" +#include "mutation.h" +#include "output.h" #include "player.h" -#include "debug_menu.h" +#include "skill.h" +#include "string_formatter.h" #include "string_input_popup.h" +#include "translations.h" +#include "ui.h" +#include "uistate.h" -#include - -class wish_mutate_callback: public uimenu_callback +class wish_mutate_callback: public uilist_callback { public: - int lastlen; // last menu entry + int lastlen = 0; // last menu entry std::string msg; // feedback message - bool started; + bool started = false; std::vector vTraits; std::map pTraits; player *p; @@ -38,13 +35,8 @@ class wish_mutate_callback: public uimenu_callback return c_light_gray; } - wish_mutate_callback() : msg() { - lastlen = 0; - started = false; - vTraits.clear(); - pTraits.clear(); - } - bool key( const input_context &, const input_event &event, int entnum, uimenu *menu ) override { + wish_mutate_callback() = default; + bool key( const input_context &, const input_event &event, int entnum, uilist *menu ) override { if( event.get_first_input() == 't' && p->has_trait( vTraits[ entnum ] ) ) { if( p->has_base_trait( vTraits[ entnum ] ) ) { p->toggle_trait( vTraits[ entnum ] ); @@ -62,7 +54,7 @@ class wish_mutate_callback: public uimenu_callback return false; } - void select( int entnum, uimenu *menu ) override { + void select( int entnum, uilist *menu ) override { if( ! started ) { started = true; padding = std::string( menu->pad_right - 1, ' ' ); @@ -179,12 +171,12 @@ class wish_mutate_callback: public uimenu_callback mvwprintz( menu->window, menu->w_height - 3, startx, c_green, msg ); msg = padding; - input_context ctxt( "UIMENU" ); + input_context ctxt( menu->input_category ); mvwprintw( menu->window, menu->w_height - 2, startx, _( "[%s] find, [%s] quit, [t] toggle base trait" ), ctxt.get_desc( "FILTER" ).c_str(), ctxt.get_desc( "QUIT" ).c_str() ); - }; + } ~wish_mutate_callback() override = default; }; @@ -268,7 +260,7 @@ void debug_menu::wishmutate( player *p ) } while( wmenu.ret >= 0 ); } -class wish_monster_callback: public uimenu_callback +class wish_monster_callback: public uilist_callback { public: int lastent; // last menu entry @@ -283,7 +275,7 @@ class wish_monster_callback: public uimenu_callback const std::vector &mtypes; wish_monster_callback( const std::vector &mtypes ) - : msg(), padding(), mtypes( mtypes ) { + : mtypes( mtypes ) { started = false; friendly = false; hallucination = false; @@ -291,7 +283,7 @@ class wish_monster_callback: public uimenu_callback lastent = -2; } - void setup( uimenu *menu ) { + void setup( uilist *menu ) { w_info = catacurses::newwin( menu->w_height - 2, menu->pad_right, 1, menu->w_x + menu->w_width - 1 - menu->pad_right ); padding = std::string( getmaxx( w_info ), ' ' ); @@ -299,7 +291,7 @@ class wish_monster_callback: public uimenu_callback wrefresh( w_info ); } - bool key( const input_context &, const input_event &event, int entnum, uimenu *menu ) override { + bool key( const input_context &, const input_event &event, int entnum, uilist *menu ) override { ( void )entnum; // unused ( void )menu; // unused if( event.get_first_input() == 'f' ) { @@ -319,7 +311,7 @@ class wish_monster_callback: public uimenu_callback return false; } - void select( int entnum, uimenu *menu ) override { + void select( int entnum, uilist *menu ) override { if( ! started ) { started = true; setup( menu ); @@ -342,13 +334,13 @@ class wish_monster_callback: public uimenu_callback mvwprintz( w_info, getmaxy( w_info ) - 3, 0, c_green, msg ); msg = padding; - input_context ctxt( "UIMENU" ); + input_context ctxt( menu->input_category ); mvwprintw( w_info, getmaxy( w_info ) - 2, 0, _( "[%s] find, [f]riendly, [h]allucination, [i]ncrease group, [d]ecrease group, [%s] quit" ), ctxt.get_desc( "FILTER" ).c_str(), ctxt.get_desc( "QUIT" ).c_str() ); } - void refresh( uimenu *menu ) override { + void refresh( uilist *menu ) override { ( void )menu; // unused wrefresh( w_info ); } @@ -402,7 +394,7 @@ void debug_menu::wishmonster( const cata::optional p ) g->add_zombie( mon, true ); } } - input_context ctxt( "UIMENU" ); + input_context ctxt( wmenu.input_category ); cb.msg = string_format( _( "Spawned %d/%d monsters, choose another or [%s] to quit." ), num_spawned, int( spawn_points.size() ), ctxt.get_desc( "QUIT" ).c_str() ); uistate.wishmonster_selected = wmenu.selected; @@ -412,7 +404,7 @@ void debug_menu::wishmonster( const cata::optional p ) } while( wmenu.ret >= 0 ); } -class wish_item_callback: public uimenu_callback +class wish_item_callback: public uilist_callback { public: bool incontainer; @@ -421,10 +413,10 @@ class wish_item_callback: public uimenu_callback std::string flag; const std::vector &standard_itype_ids; wish_item_callback( const std::vector &ids ) : - incontainer( false ), has_flag( false ), msg(), standard_itype_ids( ids ) { + incontainer( false ), has_flag( false ), standard_itype_ids( ids ) { } bool key( const input_context &, const input_event &event, int /*entnum*/, - uimenu * /*menu*/ ) override { + uilist * /*menu*/ ) override { if( event.get_first_input() == 'f' ) { incontainer = !incontainer; return true; @@ -441,7 +433,7 @@ class wish_item_callback: public uimenu_callback return false; } - void select( int entnum, uimenu *menu ) override { + void select( int entnum, uilist *menu ) override { const int starty = 3; const int startx = menu->w_width - menu->pad_right; const std::string padding( menu->pad_right, ' ' ); @@ -462,7 +454,7 @@ class wish_item_callback: public uimenu_callback mvwprintz( menu->window, menu->w_height - 3, startx, c_green, msg ); msg.erase(); - input_context ctxt( "UIMENU" ); + input_context ctxt( menu->input_category ); mvwprintw( menu->window, menu->w_height - 2, startx, _( "[%s] find, [f] container, [F] flag, [%s] quit" ), ctxt.get_desc( "FILTER" ).c_str(), ctxt.get_desc( "QUIT" ).c_str() ); @@ -471,7 +463,7 @@ class wish_item_callback: public uimenu_callback void debug_menu::wishitem( player *p, int x, int y, int z ) { - if( p == NULL && x <= 0 ) { + if( p == nullptr && x <= 0 ) { debugmsg( "game::wishitem(): invalid parameters" ); return; } @@ -508,7 +500,7 @@ void debug_menu::wishitem( player *p, int x, int y, int z ) } prev_amount = amount; bool canceled = false; - if( p != NULL ) { + if( p != nullptr ) { string_input_popup popup; popup .title( _( "How many?" ) ) @@ -518,7 +510,7 @@ void debug_menu::wishitem( player *p, int x, int y, int z ) canceled = popup.canceled(); } if( !canceled ) { - if( p != NULL ) { + if( p != nullptr ) { if( granted.count_by_charges() ) { if( amount > 0 ) { granted.charges = amount; @@ -535,7 +527,7 @@ void debug_menu::wishitem( player *p, int x, int y, int z ) wmenu.ret = -1; } if( amount > 0 ) { - input_context ctxt( "UIMENU" ); + input_context ctxt( wmenu.input_category ); cb.msg = string_format( _( "Wish granted. Wish for more or hit [%s] to quit." ), ctxt.get_desc( "QUIT" ).c_str() ); } @@ -574,7 +566,7 @@ void debug_menu::wishskill( player *p ) int skill_id = -1; int skset = -1; int sksel = skmenu.selected - skoffset; - if( skmenu.ret == UIMENU_UNBOUND && ( skmenu.keypress == KEY_LEFT || + if( skmenu.ret == UILIST_UNBOUND && ( skmenu.keypress == KEY_LEFT || skmenu.keypress == KEY_RIGHT ) ) { if( sksel >= 0 && sksel < static_cast( Skill::skills.size() ) ) { skill_id = sksel; @@ -642,5 +634,5 @@ void debug_menu::wishskill( player *p ) } } } - } while( skmenu.ret != UIMENU_CANCEL ); + } while( skmenu.ret != UILIST_CANCEL ); } diff --git a/src/worldfactory.cpp b/src/worldfactory.cpp index 028934082f7ad..f8eb1cad18deb 100644 --- a/src/worldfactory.cpp +++ b/src/worldfactory.cpp @@ -1,22 +1,22 @@ #include "worldfactory.h" -#include "filesystem.h" + +#include "cata_utility.h" +#include "catacharset.h" #include "char_validity_check.h" -#include "mod_manager.h" -#include "path_info.h" -#include "debug.h" -#include "mapsharing.h" #include "cursesdef.h" +#include "debug.h" +#include "enums.h" +#include "filesystem.h" #include "gamemode.h" -#include "translations.h" #include "input.h" +#include "json.h" +#include "mapsharing.h" +#include "mod_manager.h" +#include "name.h" #include "output.h" +#include "path_info.h" #include "string_formatter.h" -#include "enums.h" -#include "catacharset.h" -#include "cata_utility.h" -#include "calendar.h" -#include "name.h" -#include "json.h" +#include "translations.h" #include @@ -105,41 +105,27 @@ worldfactory::worldfactory() tabs.push_back( std::bind( &worldfactory::show_worldgen_tab_confirm, this, _1, _2 ) ); } -worldfactory::~worldfactory() -{ - for( auto &wp : all_worlds ) { - delete wp.second; - } -} +worldfactory::~worldfactory() = default; -WORLDPTR worldfactory::add_world( WORLDPTR retworld ) +WORLDPTR worldfactory::add_world( std::unique_ptr retworld ) { - // add world to world list - all_worlds[ retworld->world_name ] = retworld; - - if( !save_world( retworld ) ) { - std::string worldname = retworld->world_name; - if( all_worlds[ worldname ] != retworld ) { - delete retworld; - } - delete all_worlds[ worldname ]; - all_worlds.erase( worldname ); + if( !retworld->save() ) { return nullptr; } - return retworld; + return ( all_worlds[ retworld->world_name ] = std::move( retworld ) ).get(); } WORLDPTR worldfactory::make_new_world( const std::vector &mods ) { - WORLDPTR retworld = new WORLD(); + std::unique_ptr retworld( new WORLD() ); retworld->active_mod_order = mods; - return add_world( retworld ); + return add_world( std::move( retworld ) ); } WORLDPTR worldfactory::make_new_world( bool show_prompt, const std::string &world_to_copy ) { // World to return after generating - WORLDPTR retworld = new WORLD(); + std::unique_ptr retworld( new WORLD() ); if( !world_to_copy.empty() ) { retworld->COPY_WORLD( world_generator->get_world( world_to_copy ) ); @@ -154,12 +140,12 @@ WORLDPTR worldfactory::make_new_world( bool show_prompt, const std::string &worl iOffsetX ); int curtab = 0; - int lasttab; // give placement memory to menus, sorta. + int lasttab = 0; // give placement memory to menus, sorta. const size_t numtabs = tabs.size(); while( static_cast( curtab ) < numtabs ) { lasttab = curtab; draw_worldgen_tabs( wf_win, static_cast( curtab ) ); - curtab += tabs[curtab]( wf_win, retworld ); + curtab += tabs[curtab]( wf_win, retworld.get() ); // If it is -1, or for unsigned size_t, it would be max. if( curtab < 0 ) { @@ -169,7 +155,6 @@ WORLDPTR worldfactory::make_new_world( bool show_prompt, const std::string &worl } } if( curtab < 0 ) { - delete retworld; return nullptr; } } else { // 'Play NOW' @@ -187,7 +172,7 @@ WORLDPTR worldfactory::make_new_world( bool show_prompt, const std::string &worl #endif } - return add_world( retworld ); + return add_world( std::move( retworld ) ); } WORLDPTR worldfactory::make_new_world( special_game_id special_type ) @@ -207,54 +192,19 @@ WORLDPTR worldfactory::make_new_world( special_game_id special_type ) // Look through all worlds and see if a world named worldname already exists. If so, then just return it instead of // making a new world. if( has_world( worldname ) ) { - return all_worlds[worldname]; + return all_worlds[worldname].get(); } - WORLDPTR special_world = new WORLD(); + std::unique_ptr special_world( new WORLD() ); special_world->world_name = worldname; special_world->WORLD_OPTIONS["WORLD_END"].setValue( "delete" ); - // add world to world list! - all_worlds[worldname] = special_world; - - if( !save_world( special_world ) ) { - delete all_worlds[worldname]; - delete special_world; - all_worlds.erase( worldname ); + if( !special_world->save() ) { return nullptr; } - return special_world; -} - -WORLDPTR worldfactory::convert_to_world( const std::string &origin_path ) -{ - // prompt for worldname? Nah, just make a worldname... the user can fix it later if they really don't want this as a name... - std::string worldname = get_next_valid_worldname(); - - // check and loop on validity - - // create world informations - WORLDPTR newworld = new WORLD(); - newworld->world_name = worldname; - - // save world as conversion world - if( save_world( newworld, true ) ) { - // move files from origin_path into new world path - for( auto &origin_file : get_files_from_path( ".", origin_path, false ) ) { - std::string filename = origin_file.substr( origin_file.find_last_of( "/\\" ) ); - - rename( origin_file.c_str(), std::string( newworld->folder_path() + filename ).c_str() ); - } - - DebugLog( D_INFO, DC_ALL ) << "worldfactory::convert_to_world -- World Converted Successfully!"; - return newworld; - } else { - // something horribly wrong happened - DebugLog( D_ERROR, DC_ALL ) << "worldfactory::convert_to_world -- World Conversion Failed!"; - return nullptr; - } + return ( all_worlds[worldname] = std::move( special_world ) ).get(); } void worldfactory::set_active_world( WORLDPTR world ) @@ -262,33 +212,24 @@ void worldfactory::set_active_world( WORLDPTR world ) world_generator->active_world = world; } -bool worldfactory::save_world( WORLDPTR world, bool is_conversion ) +bool WORLD::save( const bool is_conversion ) const { - // if world is NULL then change it to the active_world - if( !world ) { - world = active_world; - } - // if the active_world is NULL then return w/o saving - if( !world ) { - return false; - } - - if( !assure_dir_exist( world->folder_path() ) ) { - DebugLog( D_ERROR, DC_ALL ) << "Unable to create or open world[" << world->world_name << + if( !assure_dir_exist( folder_path() ) ) { + DebugLog( D_ERROR, DC_ALL ) << "Unable to create or open world[" << world_name << "] directory for saving"; return false; } if( !is_conversion ) { - const auto savefile = world->folder_path() + "/" + FILENAMES["worldoptions"]; + const auto savefile = folder_path() + "/" + FILENAMES["worldoptions"]; const bool saved = write_to_file( savefile, [&]( std::ostream & fout ) { JsonOut jout( fout ); jout.start_array(); - for( auto &elem : world->WORLD_OPTIONS ) { + for( auto &elem : WORLD_OPTIONS ) { // Skip hidden option because it is set by mod and should not be saved - if( elem.second.getDefaultText() != "" ) { + if( !elem.second.getDefaultText().empty() ) { jout.start_object(); jout.member( "info", elem.second.getTooltip() ); @@ -307,7 +248,7 @@ bool worldfactory::save_world( WORLDPTR world, bool is_conversion ) } } - mman->save_mods_list( world ); + world_generator->get_mod_manager().save_mods_list( const_cast( this ) ); return true; } @@ -318,9 +259,6 @@ void worldfactory::init() qualifiers.push_back( FILENAMES["legacy_worldoptions"] ); qualifiers.push_back( SAVE_MASTER ); - for( auto &elem : all_worlds ) { - delete elem.second; - } all_worlds.clear(); // get the master files. These determine the validity of a world @@ -341,35 +279,48 @@ void worldfactory::init() worldname = native_to_utf8( world_dir.substr( name_index + 1 ) ); // create and store the world - all_worlds[worldname] = new WORLD(); + all_worlds[worldname].reset( new WORLD() ); // give the world a name all_worlds[worldname]->world_name = worldname; // add sav files for( auto &world_sav_file : world_sav_files ) { all_worlds[worldname]->world_saves.push_back( save_t::from_base_path( world_sav_file ) ); } - mman->load_mods_list( all_worlds[worldname] ); + mman->load_mods_list( all_worlds[worldname].get() ); // load options into the world - if( !load_world_options( all_worlds[worldname] ) ) { + if( !all_worlds[worldname]->load_options() ) { all_worlds[worldname]->WORLD_OPTIONS = get_options().get_world_defaults(); all_worlds[worldname]->WORLD_OPTIONS["WORLD_END"].setValue( "delete" ); - save_world( all_worlds[worldname] ); + all_worlds[worldname]->save(); } } // check to see if there exists a worldname "save" which denotes that a world exists in the save // directory and not in a sub-world directory if( has_world( "save" ) ) { - WORLDPTR converted_world = convert_to_world( all_worlds["save"]->folder_path() ); - if( converted_world ) { - converted_world->world_saves = all_worlds["save"]->world_saves; - converted_world->WORLD_OPTIONS = all_worlds["save"]->WORLD_OPTIONS; + const WORLD &old_world = *all_worlds["save"]; + + std::unique_ptr newworld( new WORLD() ); + newworld->world_name = get_next_valid_worldname(); + + // save world as conversion world + if( newworld->save( true ) ) { + const std::string origin_path = old_world.folder_path(); + // move files from origin_path into new world path + for( auto &origin_file : get_files_from_path( ".", origin_path, false ) ) { + std::string filename = origin_file.substr( origin_file.find_last_of( "/\\" ) ); + + rename( origin_file.c_str(), ( newworld->folder_path() + filename ).c_str() ); + } + newworld->world_saves = old_world.world_saves; + newworld->WORLD_OPTIONS = old_world.WORLD_OPTIONS; - delete all_worlds["save"]; all_worlds.erase( "save" ); - all_worlds[converted_world->world_name] = converted_world; + all_worlds[newworld->world_name] = std::move( newworld ); + } else { + debugmsg( "worldfactory::convert_to_world -- World Conversion Failed!" ); } } } @@ -591,11 +542,10 @@ void worldfactory::remove_world( const std::string &worldname ) { auto it = all_worlds.find( worldname ); if( it != all_worlds.end() ) { - WORLDPTR wptr = it->second; + WORLDPTR wptr = it->second.get(); if( active_world == wptr ) { active_world = nullptr; } - delete wptr; all_worlds.erase( it ); } } @@ -639,7 +589,7 @@ void worldfactory::draw_mod_list( const catacurses::window &w, int &start, size_ center_print( w, 0, c_red, text_if_empty ); } else { int iCatSortNum = 0; - std::string sLastCategoryName = ""; + std::string sLastCategoryName; std::map mSortCategory; mSortCategory[0] = sLastCategoryName; @@ -708,7 +658,7 @@ void worldfactory::draw_mod_list( const catacurses::window &w, int &start, size_ if( w_shift ) { // get shift information for the active item - std::string shift_display = ""; + std::string shift_display; const long iPos = std::distance( mods.begin(), iter ); if( mman_ui->can_shift_up( iPos, mods ) ) { @@ -1456,19 +1406,21 @@ void WORLD::load_legacy_options( std::istream &fin ) } } -bool worldfactory::load_world_options( WORLDPTR &world ) +bool WORLD::load_options() { - world->WORLD_OPTIONS = get_options().get_world_defaults(); + WORLD_OPTIONS = get_options().get_world_defaults(); using namespace std::placeholders; - const auto path = world->folder_path() + "/" + FILENAMES["worldoptions"]; - if( read_from_file_optional_json( path, std::bind( &WORLD::load_options, world, _1 ) ) ) { + const auto path = folder_path() + "/" + FILENAMES["worldoptions"]; + if( read_from_file_optional_json( path, [&]( JsonIn & jsin ) { + load_options( jsin ); + } ) ) { return true; } - const auto legacy_path = world->folder_path() + "/" + FILENAMES["legacy_worldoptions"]; - if( read_from_file_optional( legacy_path, std::bind( &WORLD::load_legacy_options, world, _1 ) ) ) { - if( save_world( world ) ) { + const auto legacy_path = folder_path() + "/" + FILENAMES["legacy_worldoptions"]; + if( read_from_file_optional( legacy_path, std::bind( &WORLD::load_legacy_options, this, _1 ) ) ) { + if( save() ) { // Remove old file as the options have been saved to the new file. remove_file( legacy_path ); } @@ -1529,7 +1481,7 @@ WORLDPTR worldfactory::get_world( const std::string &name ) debugmsg( "Requested non-existing world %s, prepare for crash", name.c_str() ); return nullptr; } - return iter->second; + return iter->second.get(); } // Helper predicate to exclude files from deletion when resetting a world directory. diff --git a/src/worldfactory.h b/src/worldfactory.h index 698102be73652..47d42ca4327ec 100644 --- a/src/worldfactory.h +++ b/src/worldfactory.h @@ -7,11 +7,10 @@ #include "string_id.h" #include +#include #include -#include -#include #include -#include +#include class JsonIn; class JsonObject; @@ -70,7 +69,10 @@ struct WORLD { bool save_exists( const save_t &name ) const; void add_save( const save_t &name ); + bool save( bool is_conversion = false ) const; + void load_options( JsonIn &jsin ); + bool load_options(); void load_legacy_options( std::istream &fin ); }; @@ -91,13 +93,11 @@ class worldfactory WORLDPTR make_new_world( special_game_id special_type ); // Used for unit tests - does NOT verify if the mods can be loaded WORLDPTR make_new_world( const std::vector &mods ); - WORLDPTR convert_to_world( const std::string &origin_path ); /// Returns the *existing* world of given name. WORLDPTR get_world( const std::string &name ); bool has_world( const std::string &name ) const; void set_active_world( WORLDPTR world ); - bool save_world( WORLDPTR world = NULL, bool is_conversion = false ); void init(); @@ -128,9 +128,8 @@ class worldfactory static void draw_worldgen_tabs( const catacurses::window &win, size_t current ); void show_active_world_mods( const std::vector &world_mods ); - protected: private: - std::map all_worlds; + std::map> all_worlds; std::string pick_random_name(); int show_worldgen_tab_options( const catacurses::window &win, WORLDPTR world ); @@ -142,9 +141,7 @@ class worldfactory const std::vector &mods, bool is_active_list, const std::string &text_if_empty, const catacurses::window &w_shift ); - bool load_world_options( WORLDPTR &world ); - - WORLDPTR add_world( WORLDPTR world ); + WORLDPTR add_world( std::unique_ptr world ); pimpl mman; pimpl mman_ui; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000000000..5bf2c29e0f7b9 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,26 @@ +IF(BUILD_TESTING) + FILE(GLOB CATACLYSM_DDA_TEST_SOURCES + ${CMAKE_SOURCE_DIR}/tests/*.cpp) + + IF(TILES) + add_executable(cata_test-tiles ${CATACLYSM_DDA_TEST_SOURCES}) + target_link_libraries(cata_test-tiles libcataclysm-tiles) + add_test(NAME test-tiles + COMMAND sh -c + "$ -r cata --rng-seed `shuf -i 0-1000000000 -n 1`" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + ENDIF(TILES) + + IF(CURSES) + add_executable(cata_test ${CATACLYSM_DDA_TEST_SOURCES}) + target_link_libraries(cata_test libcataclysm) + add_test(NAME test + COMMAND sh -c + "$ -r cata --rng-seed `shuf -i 0-1000000000 -n 1`" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + ENDIF(CURSES) +ENDIF(BUILD_TESTING) + +# vim:noet diff --git a/tests/Makefile b/tests/Makefile index 2fd20c9645235..4e6574054d5d1 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -5,7 +5,7 @@ # We're using the fairly typical convention that any file ending in _test.cpp # is a test executable. SOURCES = $(wildcard *.cpp) -OBJS = $(SOURCES:%.cpp=$(ODIR)/%.o) +OBJS = $(sort $(SOURCES:%.cpp=$(ODIR)/%.o)) CATA_LIB=../$(BUILD_PREFIX)cataclysm.a diff --git a/tests/bionics_test.cpp b/tests/bionics_test.cpp index e3ec66f37b187..47254b65670f4 100644 --- a/tests/bionics_test.cpp +++ b/tests/bionics_test.cpp @@ -1,11 +1,9 @@ #include "catch/catch.hpp" -#include "bionics.h" -#include "item.h" #include "ammo.h" -#include "itype.h" -#include "game.h" #include "bionics.h" +#include "game.h" +#include "item.h" #include "player.h" void clear_bionics( player &p ) diff --git a/tests/cata_utility_test.cpp b/tests/cata_utility_test.cpp new file mode 100644 index 0000000000000..9cfbf4c8a3911 --- /dev/null +++ b/tests/cata_utility_test.cpp @@ -0,0 +1,23 @@ +#include "catch/catch.hpp" + +#include "cata_utility.h" + +TEST_CASE( "string_starts_with", "[utility]" ) +{ + CHECK( string_starts_with( "", "" ) ); + CHECK( string_starts_with( "a", "" ) ); + CHECK_FALSE( string_starts_with( "", "a" ) ); + CHECK( string_starts_with( "ab", "a" ) ); + CHECK_FALSE( string_starts_with( "ab", "b" ) ); + CHECK_FALSE( string_starts_with( "a", "ab" ) ); +} + +TEST_CASE( "string_ends_with", "[utility]" ) +{ + CHECK( string_ends_with( "", "" ) ); + CHECK( string_ends_with( "a", "" ) ); + CHECK_FALSE( string_ends_with( "", "a" ) ); + CHECK( string_ends_with( "ba", "a" ) ); + CHECK_FALSE( string_ends_with( "ba", "b" ) ); + CHECK_FALSE( string_ends_with( "a", "ba" ) ); +} diff --git a/tests/catacharset_test.cpp b/tests/catacharset_test.cpp index 8b2b7e5ebf6c5..9c4d217a8e436 100644 --- a/tests/catacharset_test.cpp +++ b/tests/catacharset_test.cpp @@ -1,7 +1,7 @@ #include "catch/catch.hpp" + #include "catacharset.h" #include -#include TEST_CASE( "utf8_width" ) { diff --git a/tests/char_validity_check_test.cpp b/tests/char_validity_check_test.cpp index e8b63149ffe1f..727a81a66a0ea 100644 --- a/tests/char_validity_check_test.cpp +++ b/tests/char_validity_check_test.cpp @@ -1,4 +1,5 @@ #include "catch/catch.hpp" + #include "char_validity_check.h" TEST_CASE( "char_validity_check" ) diff --git a/tests/crafting_test.cpp b/tests/crafting_test.cpp index 5a3f7e9ed0ff3..c38ba4dfccb81 100644 --- a/tests/crafting_test.cpp +++ b/tests/crafting_test.cpp @@ -3,12 +3,11 @@ #include "crafting.h" #include "game.h" #include "itype.h" +#include "map_helpers.h" #include "npc.h" #include "player.h" -#include "recipe_dictionary.h" - -#include "map_helpers.h" #include "player_helpers.h" +#include "recipe_dictionary.h" TEST_CASE( "recipe_subset" ) { diff --git a/tests/explosion_balance.cpp b/tests/explosion_balance.cpp index 918469487ff96..94844478ca2cf 100644 --- a/tests/explosion_balance.cpp +++ b/tests/explosion_balance.cpp @@ -6,13 +6,12 @@ #include "itype.h" #include "line.h" #include "map.h" +#include "map_helpers.h" #include "monster.h" +#include "test_statistics.h" #include "vehicle.h" #include "vpart_position.h" -#include "map_helpers.h" -#include "test_statistics.h" - void check_lethality( std::string explosive_id, int range, float lethality, float epsilon ) { @@ -27,7 +26,7 @@ void check_lethality( std::string explosive_id, int range, float lethality, float lethality_ratio = 0.0; do { // Clear map - clear_map(); + clear_map_and_put_player_underground(); // Spawn some monsters in a circle. tripoint origin( 30, 30, 0 ); for( const tripoint monster_position : closest_tripoints_first( range, origin ) ) { @@ -85,7 +84,7 @@ std::vector get_part_hp( vehicle *veh ) void check_vehicle_damage( std::string explosive_id, std::string vehicle_id, int range ) { // Clear map - clear_map(); + clear_map_and_put_player_underground(); tripoint origin( 30, 30, 0 ); vehicle *target_vehicle = g->m.add_vehicle( vproto_id( vehicle_id ), origin, 0, -1, 0 ); diff --git a/tests/fold_string_test.cpp b/tests/fold_string_test.cpp index 9c8e2795353bf..1d943f6b73fb7 100644 --- a/tests/fold_string_test.cpp +++ b/tests/fold_string_test.cpp @@ -1,9 +1,9 @@ #include "catch/catch.hpp" -#include - #include "output.h" +#include + template static void check_equal( IterResult beg_res, IterResult end_res, IterExpect beg_exp, IterExpect end_exp ) diff --git a/tests/ground_destroy_test.cpp b/tests/ground_destroy_test.cpp index 5cdee7872e034..9e7af17b697c9 100755 --- a/tests/ground_destroy_test.cpp +++ b/tests/ground_destroy_test.cpp @@ -4,14 +4,10 @@ #include "item.h" #include "itype.h" #include "map.h" +#include "map_helpers.h" #include "mapdata.h" -#include "mtype.h" #include "options.h" -#include "player.h" - -#include "map_helpers.h" -#include #include #include @@ -26,7 +22,7 @@ TEST_CASE( "pavement_destroy", "[.]" ) bool zlevels_set = get_option( "ZLEVELS" ); INFO( "ZLEVELS is " << zlevels_set ); - clear_map(); + clear_map_and_put_player_underground(); // Populate the map with pavement. tripoint pt( 0, 0, 0 ); g->m.ter_set( pt, ter_id( "t_pavement" ) ); @@ -53,7 +49,7 @@ TEST_CASE( "explosion_on_ground", "[.]" ) bool zlevels_set = get_option( "ZLEVELS" ); INFO( "ZLEVELS is " << zlevels_set ); - clear_map(); + clear_map_and_put_player_underground(); std::vector test_terrain_id = { ter_id( "t_dirt" ), ter_id( "t_grass" ) }; @@ -86,4 +82,4 @@ TEST_CASE( "explosion_on_ground", "[.]" ) } } -} \ No newline at end of file +} diff --git a/tests/health_test.cpp b/tests/health_test.cpp index 16cc8df56684f..e7a914c12dc8a 100644 --- a/tests/health_test.cpp +++ b/tests/health_test.cpp @@ -1,8 +1,8 @@ #include "catch/catch.hpp" -#include "player.h" -#include "npc.h" #include "item.h" +#include "npc.h" +#include "player.h" #include diff --git a/tests/invlet_test.cpp b/tests/invlet_test.cpp index 4669082fc9e7a..be64df0672d27 100644 --- a/tests/invlet_test.cpp +++ b/tests/invlet_test.cpp @@ -1,12 +1,12 @@ #include "catch/catch.hpp" -#include -#include - -#include "player.h" #include "game.h" #include "map.h" #include "options.h" +#include "player.h" +#include "map_helpers.h" + +#include const trait_id trait_debug_storage( "DEBUG_STORAGE" ); @@ -661,6 +661,7 @@ TEST_CASE( "Inventory letter test", "[invlet]" ) { player &dummy = g->u; const tripoint spot( 60, 60, 0 ); + clear_map(); dummy.setpos( spot ); g->m.ter_set( spot, ter_id( "t_dirt" ) ); g->m.furn_set( spot, furn_id( "f_null" ) ); diff --git a/tests/item_test.cpp b/tests/item_test.cpp index 87a656f4b60e8..51a1fd9f05349 100644 --- a/tests/item_test.cpp +++ b/tests/item_test.cpp @@ -1,8 +1,11 @@ #include "catch/catch.hpp" -#include "item.h" +#include "calendar.h" +#include "itype.h" #include "units.h" +#include "item.h" + TEST_CASE( "item_volume", "[item]" ) { // Need to pick some item here which is count_by_charges and for which each @@ -22,3 +25,118 @@ TEST_CASE( "item_volume", "[item]" ) CHECK( i.volume() > v ); // one more charge should not fit } } + +// second minute hour day week season year + +TEST_CASE( "stacking_over_time", "[item]" ) +{ + item A( "neccowafers" ); + item B( "neccowafers" ); + + GIVEN( "Two items with the same birthday" ) { + REQUIRE( A.stacks_with( B ) ); + WHEN( "the items are aged different numbers of seconds" ) { + A.mod_rot( A.type->comestible->spoils - 1_turns ); + B.mod_rot( B.type->comestible->spoils - 3_turns ); + THEN( "they don't stack" ) { + CHECK( !A.stacks_with( B ) ); + } + } + WHEN( "the items are aged the same to the minute but different numbers of seconds" ) { + A.mod_rot( A.type->comestible->spoils - 5_minutes ); + B.mod_rot( B.type->comestible->spoils - 5_minutes ); + B.mod_rot( -5_turns ); + THEN( "they stack" ) { + CHECK( A.stacks_with( B ) ); + } + } + WHEN( "the items are aged a few seconds different but different minutes" ) { + A.mod_rot( A.type->comestible->spoils - 5_minutes ); + B.mod_rot( B.type->comestible->spoils - 5_minutes ); + B.mod_rot( 5_turns ); + THEN( "they don't stack" ) { + CHECK( !A.stacks_with( B ) ); + } + } + WHEN( "the items are aged the same to the hour but different numbers of minutes" ) { + A.mod_rot( A.type->comestible->spoils - 5_hours ); + B.mod_rot( B.type->comestible->spoils - 5_hours ); + B.mod_rot( -5_minutes ); + THEN( "they stack" ) { + CHECK( A.stacks_with( B ) ); + } + } + WHEN( "the items are aged a few seconds different but different hours" ) { + A.mod_rot( A.type->comestible->spoils - 5_hours ); + B.mod_rot( B.type->comestible->spoils - 5_hours ); + B.mod_rot( 5_turns ); + THEN( "they don't stack" ) { + CHECK( !A.stacks_with( B ) ); + } + } + WHEN( "the items are aged the same to the day but different numbers of seconds" ) { + A.mod_rot( A.type->comestible->spoils - 3_days ); + B.mod_rot( B.type->comestible->spoils - 3_days ); + B.mod_rot( -5_turns ); + THEN( "they stack" ) { + CHECK( A.stacks_with( B ) ); + } + } + WHEN( "the items are aged a few seconds different but different days" ) { + A.mod_rot( A.type->comestible->spoils - 3_days ); + B.mod_rot( B.type->comestible->spoils - 3_days ); + B.mod_rot( 5_turns ); + THEN( "they don't stack" ) { + CHECK( !A.stacks_with( B ) ); + } + } + WHEN( "the items are aged the same to the week but different numbers of seconds" ) { + A.mod_rot( A.type->comestible->spoils - 7_days ); + B.mod_rot( B.type->comestible->spoils - 7_days ); + B.mod_rot( -5_turns ); + THEN( "they stack" ) { + CHECK( A.stacks_with( B ) ); + } + } + WHEN( "the items are aged a few seconds different but different weeks" ) { + A.mod_rot( A.type->comestible->spoils - 7_days ); + B.mod_rot( B.type->comestible->spoils - 7_days ); + B.mod_rot( 5_turns ); + THEN( "they don't stack" ) { + CHECK( !A.stacks_with( B ) ); + } + } + WHEN( "the items are aged the same to the season but different numbers of seconds" ) { + A.mod_rot( A.type->comestible->spoils - calendar::season_length() ); + B.mod_rot( B.type->comestible->spoils - calendar::season_length() ); + B.mod_rot( -5_turns ); + THEN( "they stack" ) { + CHECK( A.stacks_with( B ) ); + } + } + WHEN( "the items are aged a few seconds different but different seasons" ) { + A.mod_rot( A.type->comestible->spoils - calendar::season_length() ); + B.mod_rot( B.type->comestible->spoils - calendar::season_length() ); + B.mod_rot( 5_turns ); + THEN( "they don't stack" ) { + CHECK( !A.stacks_with( B ) ); + } + } + WHEN( "the items are aged the same to the year but different numbers of seconds" ) { + A.mod_rot( A.type->comestible->spoils - calendar::year_length() ); + B.mod_rot( B.type->comestible->spoils - calendar::year_length() ); + B.mod_rot( -5_turns ); + THEN( "they stack" ) { + CHECK( A.stacks_with( B ) ); + } + } + WHEN( "the items are aged a few seconds different but different years" ) { + A.mod_rot( A.type->comestible->spoils - calendar::year_length() ); + B.mod_rot( B.type->comestible->spoils - calendar::year_length() ); + B.mod_rot( 5_turns ); + THEN( "they don't stack" ) { + CHECK( !A.stacks_with( B ) ); + } + } + } +} diff --git a/tests/iuse_test.cpp b/tests/iuse_test.cpp index c02354205ab91..9fb9777715e21 100644 --- a/tests/iuse_test.cpp +++ b/tests/iuse_test.cpp @@ -6,7 +6,6 @@ #include "mtype.h" #include "player.h" - player &get_sanitized_player( ) { player &dummy = g->u; diff --git a/tests/line_test.cpp b/tests/line_test.cpp index d813330a48010..da84bba36d951 100644 --- a/tests/line_test.cpp +++ b/tests/line_test.cpp @@ -3,8 +3,8 @@ #include "line.h" #include "rng.h" -#include "stdio.h" #include +#include #define SGN(a) (((a)<0) ? -1 : 1) // Compare all future line_to implementations to the canonical one. diff --git a/tests/map_helpers.cpp b/tests/map_helpers.cpp index ecf84c7a21cd1..ad6f2752139d3 100644 --- a/tests/map_helpers.cpp +++ b/tests/map_helpers.cpp @@ -4,6 +4,7 @@ #include "mapdata.h" #include "monster.h" #include "player.h" +#include "field.h" void wipe_map_terrain() { @@ -27,10 +28,37 @@ void clear_creatures() g->unload_npcs(); } +void clear_fields( int zlevel ) +{ + const int mapsize = g->m.getmapsize() * SEEX; + for( int x = 0; x < mapsize; ++x ) { + for( int y = 0; y < mapsize; ++y ) { + const tripoint p( x, y, zlevel ); + std::vector fields; + for( auto &pr : g->m.field_at( p ) ) { + fields.push_back( pr.second.getFieldType() ); + } + for( field_id f : fields ) { + g->m.remove_field( p, f ); + } + } + } +} + void clear_map() { + // Clearing all z-levels is rather slow, so just clear the ones I know the + // tests use for now. + for( int z = -2; z <= 0; ++z ) { + clear_fields( z ); + } wipe_map_terrain(); clear_creatures(); +} + +void clear_map_and_put_player_underground() +{ + clear_map(); // Make sure the player doesn't block the path of the monster being tested. g->u.setpos( { 0, 0, -2 } ); } diff --git a/tests/map_helpers.h b/tests/map_helpers.h index d2efdee603d3c..1b872b198f269 100644 --- a/tests/map_helpers.h +++ b/tests/map_helpers.h @@ -1,3 +1,4 @@ +#pragma once #ifndef MAP_HELPERS_H #define MAP_HELPERS_H @@ -9,7 +10,9 @@ class monster; void wipe_map_terrain(); void clear_creatures(); +void clear_fields( int zlevel ); void clear_map(); +void clear_map_and_put_player_underground(); monster &spawn_test_monster( const std::string &monster_type, const tripoint &start ); #endif diff --git a/tests/map_iterator_test.cpp b/tests/map_iterator_test.cpp index 54a36102f2e79..cdde4fd7d82cd 100644 --- a/tests/map_iterator_test.cpp +++ b/tests/map_iterator_test.cpp @@ -2,8 +2,8 @@ #include "map_iterator.h" -#include #include +#include std::array range_1_2d_centered = { { {-1, -1, 0}, { 0, -1, 0}, { 1, -1, 0}, diff --git a/tests/map_memory.cpp b/tests/map_memory.cpp index 77856802c3798..302a656f62272 100644 --- a/tests/map_memory.cpp +++ b/tests/map_memory.cpp @@ -3,16 +3,16 @@ #include "map_memory.h" #include "json.h" -static const tripoint p1{ 0, 0, 1 }; -static const tripoint p2{ 0, 0, 2 }; -static const tripoint p3{ 0, 0, 3 }; +static constexpr tripoint p1{ 0, 0, 1 }; +static constexpr tripoint p2{ 0, 0, 2 }; +static constexpr tripoint p3{ 0, 0, 3 }; TEST_CASE( "map_memory_defaults", "[map_memory]" ) { map_memory memory; CHECK( memory.get_symbol( p1 ) == 0 ); memorized_terrain_tile default_tile = memory.get_tile( p1 ); - CHECK( default_tile.tile == "" ); + CHECK( default_tile.tile.empty() ); CHECK( default_tile.subtile == 0 ); CHECK( default_tile.rotation == 0 ); } diff --git a/tests/map_test.cpp b/tests/map_test.cpp index f59724388367c..79e7783c453b5 100644 --- a/tests/map_test.cpp +++ b/tests/map_test.cpp @@ -2,9 +2,8 @@ #include "game.h" #include "map.h" -#include "player.h" - #include "map_helpers.h" +#include "player.h" TEST_CASE( "destroy_grabbed_furniture" ) { diff --git a/tests/math_functions.cpp b/tests/math_functions.cpp index 349e0369916e2..490dec45b1d16 100644 --- a/tests/math_functions.cpp +++ b/tests/math_functions.cpp @@ -1,10 +1,10 @@ #include "catch/catch.hpp" -#include -#include - #include "cata_utility.h" +#include +#include + TEST_CASE( "fast_floor", "[math]" ) { REQUIRE( fast_floor( -2.0 ) == -2 ); diff --git a/tests/melee_test.cpp b/tests/melee_test.cpp index babc04bb70b43..683a46e0d7d74 100644 --- a/tests/melee_test.cpp +++ b/tests/melee_test.cpp @@ -1,12 +1,12 @@ #include "catch/catch.hpp" -#include "npc.h" -#include "monster.h" -#include "monattack.h" #include "game.h" +#include "monattack.h" +#include "monster.h" +#include "npc.h" -#include #include +#include static float brute_probability( Creature &attacker, Creature &target, size_t iters ) { @@ -19,7 +19,7 @@ static float brute_probability( Creature &attacker, Creature &target, size_t ite } } - return ( float )hits / iters; + return static_cast( hits ) / iters; } static float brute_special_probability( monster &attacker, Creature &target, size_t iters ) @@ -31,7 +31,7 @@ static float brute_special_probability( monster &attacker, Creature &target, siz } } - return ( float )hits / iters; + return static_cast( hits ) / iters; } static std::string full_attack_details( const player &dude ) diff --git a/tests/mondefense_test.cpp b/tests/mondefense_test.cpp index 993aa50fec3b5..812dd83fdb37f 100644 --- a/tests/mondefense_test.cpp +++ b/tests/mondefense_test.cpp @@ -6,8 +6,6 @@ #include "npc.h" #include "projectile.h" -#include "map_helpers.h" - void test_zapback( Creature &attacker, bool expect_damage, const dealt_projectile_attack *proj = nullptr ) { diff --git a/tests/monster_test.cpp b/tests/monster_test.cpp index 9f99e426ac445..dd1393bda113c 100644 --- a/tests/monster_test.cpp +++ b/tests/monster_test.cpp @@ -1,18 +1,14 @@ #include "catch/catch.hpp" #include "creature.h" -#include "creature_tracker.h" #include "game.h" #include "map.h" -#include "mapdata.h" +#include "map_helpers.h" #include "monster.h" -#include "mtype.h" #include "options.h" #include "player.h" -#include "vehicle.h" - -#include "map_helpers.h" #include "test_statistics.h" +#include "vehicle.h" #include #include @@ -299,7 +295,7 @@ static void monster_check() // Write out a map of slope at which monster is moving to time required to reach their destination. TEST_CASE( "write_slope_to_speed_map_trig", "[.]" ) { - clear_map(); + clear_map_and_put_player_underground(); get_options().get_option( "CIRCLEDIST" ).setValue( "true" ); trigdist = true; test_moves_to_squares( "mon_zombie_dog", true ); @@ -308,7 +304,7 @@ TEST_CASE( "write_slope_to_speed_map_trig", "[.]" ) TEST_CASE( "write_slope_to_speed_map_square", "[.]" ) { - clear_map(); + clear_map_and_put_player_underground(); get_options().get_option( "CIRCLEDIST" ).setValue( "false" ); trigdist = false; test_moves_to_squares( "mon_zombie_dog", true ); @@ -319,7 +315,7 @@ TEST_CASE( "write_slope_to_speed_map_square", "[.]" ) // It's not necessarally the one true speed for monsters, we just want notice if it changes. TEST_CASE( "monster_speed_square", "[speed]" ) { - clear_map(); + clear_map_and_put_player_underground(); get_options().get_option( "CIRCLEDIST" ).setValue( "false" ); trigdist = false; monster_check(); @@ -327,7 +323,7 @@ TEST_CASE( "monster_speed_square", "[speed]" ) TEST_CASE( "monster_speed_trig", "[speed]" ) { - clear_map(); + clear_map_and_put_player_underground(); get_options().get_option( "CIRCLEDIST" ).setValue( "true" ); trigdist = true; monster_check(); diff --git a/tests/morale_test.cpp b/tests/morale_test.cpp index 1aad211f39e59..7b4e575df0f95 100644 --- a/tests/morale_test.cpp +++ b/tests/morale_test.cpp @@ -1,13 +1,12 @@ #include "catch/catch.hpp" -#include "morale.h" -#include "morale_types.h" - #include "bodypart.h" #include "effect.h" #include "game.h" -#include "itype.h" #include "item.h" +#include "itype.h" +#include "morale.h" +#include "morale_types.h" #include diff --git a/tests/mutation_test.cpp b/tests/mutation_test.cpp index d6001e35d63cb..d4796e7c699a9 100644 --- a/tests/mutation_test.cpp +++ b/tests/mutation_test.cpp @@ -1,8 +1,7 @@ #include "catch/catch.hpp" -#include "mutation.h" - #include "game.h" +#include "mutation.h" #include "npc.h" #include "player.h" @@ -51,7 +50,7 @@ std::string get_mutations_as_string( const player &p ) { std::ostringstream s; for( auto &m : p.get_mutations() ) { - s << ( std::string ) m << " "; + s << static_cast( m ) << " "; } return s.str(); } @@ -106,7 +105,7 @@ TEST_CASE( "Having all pre-threshold mutations gives a sensible threshold breach int category_strength = dummy.mutation_category_level[cat_id]; int total_strength = get_total_category_strength( dummy ); - float breach_chance = category_strength / ( float ) total_strength; + float breach_chance = category_strength / static_cast( total_strength ); THEN( "Threshold breach chance is at least 0.2" ) { INFO( "MUTATIONS: " << get_mutations_as_string( dummy ) ); diff --git a/tests/name_test.cpp b/tests/name_test.cpp index e1df672c55715..195b904a1bb1d 100644 --- a/tests/name_test.cpp +++ b/tests/name_test.cpp @@ -1,13 +1,15 @@ #include "catch/catch.hpp" + #include "name.h" -#include + #include +#include class IsOneOf : public Catch::MatcherBase { std::set< std::string > values; public: - IsOneOf( std::set< std::string > v ): values{v} {}; + IsOneOf( std::set< std::string > v ): values{v} {} virtual bool match( std::string const &s ) const override { return values.count( s ) > 0; } diff --git a/tests/new_character_test.cpp b/tests/new_character_test.cpp index 511031860b105..3a7ef22dcb6c0 100644 --- a/tests/new_character_test.cpp +++ b/tests/new_character_test.cpp @@ -2,14 +2,13 @@ #include "game.h" #include "item.h" +#include "itype.h" +#include "mutation.h" #include "player.h" #include "profession.h" #include "scenario.h" -#include "mutation.h" #include "string_id.h" -#include "itype.h" -#include #include #include #include diff --git a/tests/npc_talk_test.cpp b/tests/npc_talk_test.cpp index e501917056cba..e0701a0d080c3 100644 --- a/tests/npc_talk_test.cpp +++ b/tests/npc_talk_test.cpp @@ -1,20 +1,15 @@ #include "catch/catch.hpp" -#include "common_types.h" -#include "player.h" -#include "npc.h" -#include "npc_class.h" +#include "calendar.h" +#include "coordinate_conversions.h" +#include "dialogue.h" +#include "effect.h" +#include "faction.h" #include "game.h" #include "map.h" -#include "text_snippets.h" -#include "field.h" +#include "npc.h" #include "overmapbuffer.h" -#include "dialogue.h" -#include "faction.h" #include "player.h" -#include "effect.h" -#include "calendar.h" -#include "coordinate_conversions.h" #include @@ -116,15 +111,26 @@ TEST_CASE( "npc_talk_test" ) CHECK( d.responses[0].text == "This is a basic test response." ); g->u.toggle_trait( trait_id( "ELFA_EARS" ) ); d.gen_responses( d.topic_stack.back() ); - REQUIRE( d.responses.size() == 2 ); + REQUIRE( d.responses.size() == 3 ); CHECK( d.responses[0].text == "This is a basic test response." ); CHECK( d.responses[1].text == "This is a trait test response." ); + CHECK( d.responses[2].text == "This is a short trait test response." ); g->u.wear_item( item( "badge_marshal" ) ); d.gen_responses( d.topic_stack.back() ); - REQUIRE( d.responses.size() == 3 ); + REQUIRE( d.responses.size() == 4 ); CHECK( d.responses[0].text == "This is a basic test response." ); CHECK( d.responses[1].text == "This is a trait test response." ); - CHECK( d.responses[2].text == "This is a wearing test response." ); + CHECK( d.responses[2].text == "This is a short trait test response." ); + CHECK( d.responses[3].text == "This is a wearing test response." ); + talker_npc.toggle_trait( trait_id( "ELFA_EARS" ) ); + d.gen_responses( d.topic_stack.back() ); + REQUIRE( d.responses.size() == 6 ); + CHECK( d.responses[0].text == "This is a basic test response." ); + CHECK( d.responses[1].text == "This is a trait test response." ); + CHECK( d.responses[2].text == "This is a short trait test response." ); + CHECK( d.responses[3].text == "This is a wearing test response." ); + CHECK( d.responses[4].text == "This is a npc trait test response." ); + CHECK( d.responses[5].text == "This is a npc short trait test response." ); d.add_topic( "TALK_TEST_EFFECT" ); d.gen_responses( d.topic_stack.back() ); @@ -188,6 +194,17 @@ TEST_CASE( "npc_talk_test" ) CHECK( d.responses[0].text == "This is a basic test response." ); CHECK( d.responses[1].text == "This is a nearby role test response." ); + d.add_topic( "TALK_TEST_NPC_CLASS" ); + talker_npc.myclass = npc_class_id( "NC_NONE" ); + d.gen_responses( d.topic_stack.back() ); + REQUIRE( d.responses.size() == 1 ); + CHECK( d.responses[0].text == "This is a basic test response." ); + talker_npc.myclass = npc_class_id( "NC_TEST_CLASS" ); + d.gen_responses( d.topic_stack.back() ); + REQUIRE( d.responses.size() == 2 ); + CHECK( d.responses[0].text == "This is a basic test response." ); + CHECK( d.responses[1].text == "This is a class test response." ); + for( npc *guy : g->allies() ) { guy->set_attitude( NPCATT_NULL ); } diff --git a/tests/npc_test.cpp b/tests/npc_test.cpp index 51bf996f93a0d..6029c5a1713b6 100644 --- a/tests/npc_test.cpp +++ b/tests/npc_test.cpp @@ -1,16 +1,16 @@ #include "catch/catch.hpp" #include "common_types.h" -#include "player.h" -#include "npc.h" -#include "npc_class.h" +#include "field.h" #include "game.h" #include "map.h" -#include "text_snippets.h" -#include "field.h" +#include "npc.h" +#include "npc_class.h" #include "overmapbuffer.h" -#include "vehicle.h" +#include "player.h" +#include "text_snippets.h" #include "veh_type.h" +#include "vehicle.h" #include "vpart_position.h" #include "vpart_reference.h" @@ -339,8 +339,8 @@ TEST_CASE( "npc-movement" ) if( type == 'V' || type == 'W' || type == 'M' ) { vehicle *veh = g->m.add_vehicle( vproto_id( "none" ), p, 270, 0, 0 ); REQUIRE( veh != nullptr ); - veh->install_part( 0, 0, vpart_frame_vertical ); - veh->install_part( 0, 0, vpart_seat ); + veh->install_part( point( 0, 0 ), vpart_frame_vertical ); + veh->install_part( point( 0, 0 ), vpart_seat ); g->m.add_vehicle_to_cache( veh ); } // spawn npcs diff --git a/tests/player_test.cpp b/tests/player_test.cpp index fef7fc94258ad..f6440dee6d2d9 100644 --- a/tests/player_test.cpp +++ b/tests/player_test.cpp @@ -1,17 +1,8 @@ #include "catch/catch.hpp" -#include "morale.h" -#include "player.h" #include "game.h" -#include "overmapbuffer.h" -#include "item_factory.h" -#include "start_location.h" -#include "path_info.h" -#include "mapsharing.h" -#include "options.h" -#include "map.h" +#include "player.h" #include "weather.h" -#include "itype.h" #include diff --git a/tests/ranged_balance.cpp b/tests/ranged_balance.cpp index 37d2ccb2f966e..6321145e9ec48 100644 --- a/tests/ranged_balance.cpp +++ b/tests/ranged_balance.cpp @@ -3,13 +3,11 @@ #include "ballistics.h" #include "dispersion.h" #include "game.h" -#include "monattack.h" +#include "map_helpers.h" #include "monster.h" #include "npc.h" -#include "units.h" - #include "test_statistics.h" -#include "map_helpers.h" +#include "units.h" #include @@ -82,8 +80,8 @@ static void equip_shooter( npc &shooter, const std::vector &apparel std::array accuracy_levels = {{ accuracy_grazing, accuracy_standard, accuracy_goodhit, accuracy_critical, accuracy_headshot }}; -static std::array firing_test( dispersion_sources dispersion, int range, - std::array thresholds ) +static std::array firing_test( const dispersion_sources &dispersion, + int range, const std::array &thresholds ) { std::array firing_stats; bool threshold_within_confidence_interval = false; @@ -95,7 +93,7 @@ static std::array firing_test( dispersion_sources dispersi // either above or below the threshold. projectile_attack_aim aim = projectile_attack_roll( dispersion, range, 0.5 ); threshold_within_confidence_interval = false; - for( int i = 0; i < ( int )accuracy_levels.size(); ++i ) { + for( int i = 0; i < static_cast( accuracy_levels.size() ); ++i ) { firing_stats[i].add( aim.missed_by < accuracy_levels[i] ); if( thresholds[i] == -1 ) { continue; @@ -296,7 +294,7 @@ TEST_CASE( "expert_shooter_accuracy", "[ranged] [balance]" ) static void range_test( const std::array &test_thresholds ) { int index = 0; - for( index = 0; index < ( int )accuracy_levels.size(); ++index ) { + for( index = 0; index < static_cast( accuracy_levels.size() ); ++index ) { if( test_thresholds[index] >= 0 ) { break; } diff --git a/tests/reload_magazine.cpp b/tests/reload_magazine.cpp index 5222371206ff0..fcf4aa0c3abb1 100644 --- a/tests/reload_magazine.cpp +++ b/tests/reload_magazine.cpp @@ -1,9 +1,9 @@ #include "catch/catch.hpp" #include "game.h" +#include "itype.h" #include "player.h" #include "visitable.h" -#include "itype.h" TEST_CASE( "reload_magazine", "[magazine] [visitable] [item] [item_location]" ) { @@ -109,7 +109,7 @@ TEST_CASE( "reload_magazine", "[magazine] [visitable] [item] [item_location]" ) // ignore ammo contained within guns or magazines return ( e->is_gun() || e->is_magazine() ) ? VisitResponse::SKIP : VisitResponse::NEXT; } ); - REQUIRE( found.size() == 0 ); + REQUIRE( found.empty() ); } } diff --git a/tests/shadowcasting_test.cpp b/tests/shadowcasting_test.cpp index b5202bcd9fb63..d391ad52f3f8c 100644 --- a/tests/shadowcasting_test.cpp +++ b/tests/shadowcasting_test.cpp @@ -5,8 +5,8 @@ #include "shadowcasting.h" #include +#include #include -#include "stdio.h" // Constants setting the ratio of set to unset tiles. constexpr unsigned int NUMERATOR = 1; @@ -29,7 +29,7 @@ void oldCastLight( float ( &output_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], return; } bool blocked = false; - static const tripoint origin( 0, 0, 0 ); + static constexpr tripoint origin( 0, 0, 0 ); tripoint delta( 0, 0, 0 ); for( int distance = row; distance <= radius && !blocked; distance++ ) { delta.y = -distance; @@ -97,30 +97,131 @@ bool bresenham_visibility_check( int offsetX, int offsetY, int x, int y, return visible; } -void shadowcasting_runoff( int iterations, bool test_bresenham = false ) +void randomly_fill_transparency( + float ( &transparency_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], + unsigned int numerator = NUMERATOR, unsigned int denominator = DENOMINATOR ) { // Construct a rng that produces integers in a range selected to provide the probability // we want, i.e. if we want 1/4 tiles to be set, produce numbers in the range 0-3, // with 0 indicating the bit is set. const unsigned seed = std::chrono::system_clock::now().time_since_epoch().count(); std::default_random_engine generator( seed ); - std::uniform_int_distribution distribution( 0, DENOMINATOR ); + std::uniform_int_distribution distribution( 0, denominator ); auto rng = std::bind( distribution, generator ); - float seen_squares_control[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; - float seen_squares_experiment[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; - float transparency_cache[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; - // Initialize the transparency value of each square to a random value. for( auto &inner : transparency_cache ) { for( float &square : inner ) { - if( rng() < NUMERATOR ) { + if( rng() < numerator ) { square = LIGHT_TRANSPARENCY_SOLID; } else { square = LIGHT_TRANSPARENCY_CLEAR; } } } +} + +bool is_nonzero( float x ) +{ + return x != 0; +} + +bool is_nonzero( four_quadrants x ) +{ + return is_nonzero( x.max() ); +} + +template +bool grids_are_equivalent( float control[MAPSIZE * SEEX][MAPSIZE * SEEY], + Exp experiment[MAPSIZE * SEEX][MAPSIZE * SEEY] ) +{ + for( int x = 0; x < MAPSIZE * SEEX; ++x ) { + for( int y = 0; y < MAPSIZE * SEEY; ++y ) { + // Check that both agree on the outcome, but not necessarily the same values. + if( is_nonzero( control[x][y] ) != is_nonzero( experiment[x][y] ) ) { + return false; + } + } + } + + return true; +} + +template +void print_grid_comparison( int offsetX, int offsetY, + float ( &transparency_cache )[MAPSIZE * SEEX][MAPSIZE * SEEY], + float control[MAPSIZE * SEEX][MAPSIZE * SEEY], + Exp experiment[MAPSIZE * SEEX][MAPSIZE * SEEY] ) +{ + for( int x = 0; x < MAPSIZE * SEEX; ++x ) { + for( int y = 0; y < MAPSIZE * SEEX; ++y ) { + char output = ' '; + bool shadowcasting_disagrees = + is_nonzero( control[x][y] ) != is_nonzero( experiment[x][y] ); + bool bresenham_disagrees = + bresenham_visibility_check( offsetX, offsetY, x, y, transparency_cache ) != + is_nonzero( experiment[x][y] ); + + if( shadowcasting_disagrees && bresenham_disagrees ) { + if( is_nonzero( experiment[x][y] ) ) { + output = 'R'; // Old shadowcasting and bresenham can't see. + } else { + output = 'N'; // New shadowcasting can't see. + } + } else if( shadowcasting_disagrees ) { + if( is_nonzero( control[x][y] ) ) { + output = 'C'; // New shadowcasting & bresenham can't see. + } else { + output = 'O'; // Old shadowcasting can't see. + } + } else if( bresenham_disagrees ) { + if( is_nonzero( experiment[x][y] ) ) { + output = 'B'; // Bresenham can't see it. + } else { + output = 'S'; // Shadowcasting can't see it. + } + } + if( transparency_cache[x][y] == LIGHT_TRANSPARENCY_SOLID ) { + output = '#'; + } + if( x == offsetX && y == offsetY ) { + output = '@'; + } + printf( "%c", output ); + } + printf( "\n" ); + } + for( int x = 0; x < MAPSIZE * SEEX; ++x ) { + for( int y = 0; y < MAPSIZE * SEEX; ++y ) { + char output = ' '; + if( transparency_cache[x][y] == LIGHT_TRANSPARENCY_SOLID ) { + output = '#'; + } else if( control[x][y] > LIGHT_TRANSPARENCY_SOLID ) { + output = 'X'; + } + printf( "%c", output ); + } + printf( " " ); + for( int y = 0; y < MAPSIZE * SEEX; ++y ) { + char output = ' '; + if( transparency_cache[x][y] == LIGHT_TRANSPARENCY_SOLID ) { + output = '#'; + } else if( is_nonzero( experiment[x][y] ) ) { + output = 'X'; + } + printf( "%c", output ); + } + printf( "\n" ); + } +} + +void shadowcasting_runoff( int iterations, bool test_bresenham = false ) +{ + float seen_squares_control[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; + float seen_squares_experiment[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; + float transparency_cache[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; + + randomly_fill_transparency( transparency_cache ); map dummy; @@ -147,7 +248,7 @@ void shadowcasting_runoff( int iterations, bool test_bresenham = false ) auto start2 = std::chrono::high_resolution_clock::now(); for( int i = 0; i < iterations; i++ ) { // Then the current algorithm. - castLightAll( + castLightAll( seen_squares_experiment, transparency_cache, offsetX, offsetY ); } auto end2 = std::chrono::high_resolution_clock::now(); @@ -161,18 +262,11 @@ void shadowcasting_runoff( int iterations, bool test_bresenham = false ) iterations, diff2 ); } - bool passed = true; - map m; - for( int x = 0; passed && x < MAPSIZE * SEEX; ++x ) { + bool passed = grids_are_equivalent( seen_squares_control, seen_squares_experiment ); + for( int x = 0; test_bresenham && passed && x < MAPSIZE * SEEX; ++x ) { for( int y = 0; y < MAPSIZE * SEEX; ++y ) { // Check that both agree on the outcome, but not necessarily the same values. - if( ( seen_squares_control[x][y] > LIGHT_TRANSPARENCY_SOLID ) != - ( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ) ) { - passed = false; - break; - } - if( test_bresenham && - bresenham_visibility_check( offsetX, offsetY, x, y, transparency_cache ) != + if( bresenham_visibility_check( offsetX, offsetY, x, y, transparency_cache ) != ( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ) ) { passed = false; break; @@ -181,95 +275,72 @@ void shadowcasting_runoff( int iterations, bool test_bresenham = false ) } if( !passed ) { - for( int x = 0; x < MAPSIZE * SEEX; ++x ) { - for( int y = 0; y < MAPSIZE * SEEX; ++y ) { - char output = ' '; - bool shadowcasting_disagrees = - ( seen_squares_control[x][y] > LIGHT_TRANSPARENCY_SOLID ) != - ( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ); - bool bresenham_disagrees = - bresenham_visibility_check( offsetX, offsetY, x, y, transparency_cache ) != - ( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ); - - if( shadowcasting_disagrees && bresenham_disagrees ) { - if( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ) { - output = 'R'; // Old shadowcasting and bresenham can't see. - } else { - output = 'N'; // New shadowcasting can't see. - } - } else if( shadowcasting_disagrees ) { - if( seen_squares_control[x][y] > LIGHT_TRANSPARENCY_SOLID ) { - output = 'C'; // New shadowcasting & bresenham can't see. - } else { - output = 'O'; // Old shadowcasting can't see. - } - } else if( bresenham_disagrees ) { - if( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ) { - output = 'B'; // Bresenham can't see it. - } else { - output = 'S'; // Shadowcasting can't see it. - } - } - if( transparency_cache[x][y] == LIGHT_TRANSPARENCY_SOLID ) { - output = '#'; - } - if( x == offsetX && y == offsetY ) { - output = '@'; - } - printf( "%c", output ); - } - printf( "\n" ); - } - for( int x = 0; x < MAPSIZE * SEEX; ++x ) { - for( int y = 0; y < MAPSIZE * SEEX; ++y ) { - char output = ' '; - if( transparency_cache[x][y] == LIGHT_TRANSPARENCY_SOLID ) { - output = '#'; - } else if( seen_squares_control[x][y] > LIGHT_TRANSPARENCY_SOLID ) { - output = 'X'; - } - printf( "%c", output ); - } - printf( " " ); - for( int y = 0; y < MAPSIZE * SEEX; ++y ) { - char output = ' '; - if( transparency_cache[x][y] == LIGHT_TRANSPARENCY_SOLID ) { - output = '#'; - } else if( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ) { - output = 'X'; - } - printf( "%c", output ); - } - printf( "\n" ); - } + print_grid_comparison( offsetX, offsetY, transparency_cache, seen_squares_control, + seen_squares_experiment ); } REQUIRE( passed ); } -void shadowcasting_3d_2d( int iterations ) +void shadowcasting_float_quad( int iterations, unsigned int denominator = DENOMINATOR ) { - // Copy-paste of the above, but for newest FoV vs. the "new" one - const unsigned seed = std::chrono::system_clock::now().time_since_epoch().count(); - std::default_random_engine generator( seed ); - std::uniform_int_distribution distribution( 0, DENOMINATOR ); - auto rng = std::bind( distribution, generator ); + float lit_squares_float[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; + four_quadrants lit_squares_quad[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{}}; + float transparency_cache[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; + + randomly_fill_transparency( transparency_cache, denominator ); + + map dummy; + + const int offsetX = 65; + const int offsetY = 65; + + auto start1 = std::chrono::high_resolution_clock::now(); + for( int i = 0; i < iterations; i++ ) { + castLightAll( + lit_squares_quad, transparency_cache, offsetX, offsetY ); + } + auto end1 = std::chrono::high_resolution_clock::now(); + + auto start2 = std::chrono::high_resolution_clock::now(); + for( int i = 0; i < iterations; i++ ) { + // Then the current algorithm. + castLightAll( + lit_squares_float, transparency_cache, offsetX, offsetY ); + } + auto end2 = std::chrono::high_resolution_clock::now(); + + if( iterations > 1 ) { + long diff1 = std::chrono::duration_cast( end1 - start1 ).count(); + long diff2 = std::chrono::duration_cast( end2 - start2 ).count(); + printf( "castLight on four_quadrants (denominator %u) " + "executed %d times in %ld microseconds.\n", + denominator, iterations, diff1 ); + printf( "castLight on floats (denominator %u) " + "executed %d times in %ld microseconds.\n", + denominator, iterations, diff2 ); + } + + bool passed = grids_are_equivalent( lit_squares_float, lit_squares_quad ); + if( !passed ) { + print_grid_comparison( offsetX, offsetY, transparency_cache, lit_squares_float, + lit_squares_quad ); + } + + REQUIRE( passed ); +} + +void shadowcasting_3d_2d( int iterations ) +{ float seen_squares_control[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; float seen_squares_experiment[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; float transparency_cache[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; - bool floor_cache[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{0}}; + bool floor_cache[MAPSIZE * SEEX][MAPSIZE * SEEY] = {{false}}; - // Initialize the transparency value of each square to a random value. - for( auto &inner : transparency_cache ) { - for( float &square : inner ) { - if( rng() < NUMERATOR ) { - square = LIGHT_TRANSPARENCY_SOLID; - } else { - square = LIGHT_TRANSPARENCY_CLEAR; - } - } - } + randomly_fill_transparency( transparency_cache ); map dummy; @@ -280,7 +351,7 @@ void shadowcasting_3d_2d( int iterations ) auto start1 = std::chrono::high_resolution_clock::now(); for( int i = 0; i < iterations; i++ ) { // First the control algorithm. - castLightAll( + castLightAll( seen_squares_control, transparency_cache, offsetX, offsetY ); } auto end1 = std::chrono::high_resolution_clock::now(); @@ -311,84 +382,14 @@ void shadowcasting_3d_2d( int iterations ) iterations, diff1 ); printf( "cast_zlight() executed %d times in %ld microseconds.\n", iterations, diff2 ); - printf( "new/old execution time ratio: %.02f.\n", ( double )diff2 / diff1 ); + printf( "new/old execution time ratio: %.02f.\n", static_cast( diff2 ) / diff1 ); } - bool passed = true; - map m; - for( int x = 0; passed && x < MAPSIZE * SEEX; ++x ) { - for( int y = 0; y < MAPSIZE * SEEX; ++y ) { - // Check that both agree on the outcome, but not necessarily the same values. - if( ( seen_squares_control[x][y] > LIGHT_TRANSPARENCY_SOLID ) != - ( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ) ) { - passed = false; - break; - } - } - } + bool passed = grids_are_equivalent( seen_squares_control, seen_squares_experiment ); if( !passed ) { - for( int x = 0; x < MAPSIZE * SEEX; ++x ) { - for( int y = 0; y < MAPSIZE * SEEX; ++y ) { - char output = ' '; - bool shadowcasting_disagrees = - ( seen_squares_control[x][y] > LIGHT_TRANSPARENCY_SOLID ) != - ( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ); - bool bresenham_disagrees = - bresenham_visibility_check( offsetX, offsetY, x, y, transparency_cache ) != - ( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ); - - if( shadowcasting_disagrees && bresenham_disagrees ) { - if( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ) { - output = 'R'; // Old shadowcasting and bresenham can't see. - } else { - output = 'N'; // New shadowcasting can't see. - } - } else if( shadowcasting_disagrees ) { - if( seen_squares_control[x][y] > LIGHT_TRANSPARENCY_SOLID ) { - output = 'C'; // New shadowcasting & bresenham can't see. - } else { - output = 'O'; // Old shadowcasting can't see. - } - } else if( bresenham_disagrees ) { - if( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ) { - output = 'B'; // Bresenham can't see it. - } else { - output = 'S'; // Shadowcasting can't see it. - } - } - if( transparency_cache[x][y] == LIGHT_TRANSPARENCY_SOLID ) { - output = '#'; - } - if( x == offsetX && y == offsetY ) { - output = '@'; - } - printf( "%c", output ); - } - printf( "\n" ); - } - for( int x = 0; x < MAPSIZE * SEEX; ++x ) { - for( int y = 0; y < MAPSIZE * SEEX; ++y ) { - char output = ' '; - if( transparency_cache[x][y] == LIGHT_TRANSPARENCY_SOLID ) { - output = '#'; - } else if( seen_squares_control[x][y] > LIGHT_TRANSPARENCY_SOLID ) { - output = 'X'; - } - printf( "%c", output ); - } - printf( " " ); - for( int y = 0; y < MAPSIZE * SEEX; ++y ) { - char output = ' '; - if( transparency_cache[x][y] == LIGHT_TRANSPARENCY_SOLID ) { - output = '#'; - } else if( seen_squares_experiment[x][y] > LIGHT_TRANSPARENCY_SOLID ) { - output = 'X'; - } - printf( "%c", output ); - } - printf( "\n" ); - } + print_grid_comparison( offsetX, offsetY, transparency_cache, seen_squares_control, + seen_squares_experiment ); } REQUIRE( passed ); @@ -451,7 +452,7 @@ static void run_spot_check( const grid_overlay &test_case, const grid_overlay &e } } - castLightAll( + castLightAll( seen_squares, transparency_cache, ORIGIN.x, ORIGIN.y ); // Compares the whole grid, but out-of-bounds compares will de-facto pass. @@ -616,6 +617,17 @@ TEST_CASE( "shadowcasting_3d_2d_performance", "[.]" ) shadowcasting_3d_2d( 100000 ); } +TEST_CASE( "shadowcasting_float_quad_equivalence", "[shadowcasting]" ) +{ + shadowcasting_float_quad( 1 ); +} + +TEST_CASE( "shadowcasting_float_quad_performance", "[.]" ) +{ + shadowcasting_float_quad( 1000000 ); + shadowcasting_float_quad( 1000000, 100 ); +} + // I'm not sure this will ever work. TEST_CASE( "bresenham_vs_shadowcasting", "[.]" ) { diff --git a/tests/string_formatter_test.cpp b/tests/string_formatter_test.cpp index fb18ad5afd2f6..8a2a3973bc43d 100644 --- a/tests/string_formatter_test.cpp +++ b/tests/string_formatter_test.cpp @@ -1,12 +1,9 @@ #include "catch/catch.hpp" -#include "string_formatter.h" #include "output.h" +#include "string_formatter.h" #include -#include -#include -#include // Same as @ref string_format, but does not swallow errors and throws them instead. template diff --git a/tests/test_main.cpp b/tests/test_main.cpp index 9e134acfb846c..dd2429bcaeff0 100644 --- a/tests/test_main.cpp +++ b/tests/test_main.cpp @@ -4,17 +4,15 @@ #include "debug.h" #include "filesystem.h" #include "game.h" -#include "init.h" +#include "loading_ui.h" #include "map.h" #include "mod_manager.h" -#include "morale.h" #include "overmap.h" #include "overmapbuffer.h" #include "path_info.h" #include "pathfinding.h" #include "player.h" #include "worldfactory.h" -#include "loading_ui.h" #include #include @@ -87,7 +85,7 @@ void init_global_game_state( const std::vector &mods, get_options().load(); // Apply command-line option overrides for test suite execution. - if( option_overrides.size() > 0 ) { + if( !option_overrides.empty() ) { for( auto iter = option_overrides.begin(); iter != option_overrides.end(); ++iter ) { name_value_pair_t option = *iter; if( get_options().has_option( option.first ) ) { @@ -98,7 +96,7 @@ void init_global_game_state( const std::vector &mods, } init_colors(); - g = new game; + g.reset( new game ); g->new_game = true; g->load_static_data(); @@ -211,7 +209,7 @@ struct CataReporter : Catch::ConsoleReporter { } }; -REGISTER_REPORTER( "cata", CataReporter ); +REGISTER_REPORTER( "cata", CataReporter ) int main( int argc, const char *argv[] ) { diff --git a/tests/test_statistics.h b/tests/test_statistics.h index 6c81d640f8078..a131c6d7fc4f6 100644 --- a/tests/test_statistics.h +++ b/tests/test_statistics.h @@ -1,3 +1,4 @@ +#pragma once #ifndef TEST_STATISTICS_H #define TEST_STATISTICS_H diff --git a/tests/throwing_test.cpp b/tests/throwing_test.cpp index 0f198fe1d226e..cc8d951ada5d1 100644 --- a/tests/throwing_test.cpp +++ b/tests/throwing_test.cpp @@ -1,26 +1,19 @@ #include "catch/catch.hpp" -#include "ballistics.h" #include "dispersion.h" #include "game.h" -#include "monattack.h" -#include "monster.h" -#include "npc.h" -#include "units.h" -#include "player.h" -#include "map.h" #include "item.h" #include "itype.h" +#include "line.h" +#include "map_helpers.h" #include "monster.h" +#include "npc.h" +#include "player.h" #include "projectile.h" -#include "ranged.h" -#include "line.h" - #include "test_statistics.h" -#include "map_helpers.h" -#include #include +#include TEST_CASE( "throwing distance test", "[throwing], [balance]" ) { @@ -256,7 +249,6 @@ void test_player_kills_monster( player &p, const std::string &mon_id, const std: mon.set_moves( 0 ); while( !mon_is_dead ) { - const int monster_speed = mon.get_speed(); ++turns; mon.process_turn(); diff --git a/tests/vehicle_efficiency.cpp b/tests/vehicle_efficiency.cpp index e594726533d9f..561a59762fde4 100644 --- a/tests/vehicle_efficiency.cpp +++ b/tests/vehicle_efficiency.cpp @@ -1,17 +1,16 @@ #include "catch/catch.hpp" +#include "cata_utility.h" #include "game.h" +#include "itype.h" #include "map.h" #include "map_iterator.h" -#include "vehicle.h" +#include "player.h" +#include "test_statistics.h" #include "veh_type.h" +#include "vehicle.h" #include "vpart_range.h" #include "vpart_reference.h" -#include "itype.h" -#include "player.h" -#include "cata_utility.h" -#include "options.h" -#include "test_statistics.h" typedef statistics efficiency_stat; @@ -55,7 +54,7 @@ std::map set_vehicle_fuel( vehicle &v, float veh_fuel_mult ) // First we need to find the fuels to set // That is, fuels actually used by some engine std::set actually_used; - for( const vpart_reference vp : v.get_parts() ) { + for( const vpart_reference vp : v.get_all_parts() ) { vehicle_part &pt = vp.part(); if( pt.is_engine() ) { actually_used.insert( pt.info().fuel_type ); @@ -82,7 +81,7 @@ std::map set_vehicle_fuel( vehicle &v, float veh_fuel_mult ) // Set fuel to a given percentage // Batteries are special cased because they aren't liquid fuel std::map ret; - for( const vpart_reference vp : v.get_parts() ) { + for( const vpart_reference vp : v.get_all_parts() ) { vehicle_part &pt = vp.part(); if( pt.is_battery() ) { @@ -117,7 +116,7 @@ float fuel_percentage_left( vehicle &v, const std::map &started_ { std::map fuel_amount; std::set consumed_fuels; - for( const vpart_reference vp : v.get_parts() ) { + for( const vpart_reference vp : v.get_all_parts() ) { vehicle_part &pt = vp.part(); if( ( pt.is_battery() || pt.is_reactor() || pt.is_tank() ) && @@ -136,7 +135,7 @@ float fuel_percentage_left( vehicle &v, const std::map &started_ // Weird - we started without this fuel float fuel_amt_at_start = iter != started_with.end() ? iter->second : 0.0f; REQUIRE( fuel_amt_at_start != 0.0f ); - left = std::min( left, ( float )fuel_amount[ type ] / fuel_amt_at_start ); + left = std::min( left, static_cast( fuel_amount[type] ) / fuel_amt_at_start ); } return left; @@ -175,7 +174,7 @@ long test_efficiency( const vproto_id &veh_id, const ter_id &terrain, vehicle &veh = *veh_ptr; // Remove all items from cargo to normalize weight. - for( const vpart_reference vp : veh.get_parts() ) { + for( const vpart_reference vp : veh.get_all_parts() ) { while( veh.remove_item( vp.part_index(), 0 ) ); } const auto &starting_fuel = set_vehicle_fuel( veh, fuel_level ); @@ -196,7 +195,6 @@ long test_efficiency( const vproto_id &veh_id, const ter_id &terrain, } int reset_counter = 0; long tiles_travelled = 0; - int turn_count = 0; int cycles_left = cycle_limit; bool accelerating = true; CHECK( veh.safe_velocity() > 0 ); @@ -290,7 +288,7 @@ int average_from_stat( const efficiency_stat &st ) void print_test_strings( const std::string &type ) { std::ostringstream ss; - ss << "test_vehicle( \"" << type << "\", "; + ss << " test_vehicle( \"" << type << "\", "; ss << average_from_stat( find_inner( type, "t_pavement", -1, false ) ) << ", "; ss << average_from_stat( find_inner( type, "t_dirt", -1, false ) ) << ", "; ss << average_from_stat( find_inner( type, "t_pavement", 5, false ) ) << ", "; @@ -375,20 +373,20 @@ TEST_CASE( "vehicle_make_efficiency_case", "[.]" ) // Fix test for electric vehicles TEST_CASE( "vehicle_efficiency", "[vehicle] [engine]" ) { - test_vehicle( "beetle", 287700, 230500, 15990, 13310 ); - test_vehicle( "car", 281700, 163300, 16070, 9336 ); - test_vehicle( "car_sports", 323400, 185500, 16690, 9176 ); - test_vehicle( "electric_car", 69460, 45070, 3620, 2300 ); - test_vehicle( "suv", 589700, 288700, 31870, 15320 ); - test_vehicle( "motorcycle", 80860, 44810, 3885, 2195 ); - test_vehicle( "quad_bike", 52140, 35180, 3310, 2195 ); - test_vehicle( "scooter", 71290, 66960, 3707, 3707 ); - test_vehicle( "superbike", 94350, 10150, 4005, 1407 ); - test_vehicle( "ambulance", 378800, 287200, 23740, 18680 ); - test_vehicle( "fire_engine", 452700, 380000, 27350, 23150 ); - test_vehicle( "fire_truck", 311100, 68740, 20680, 4312 ); - test_vehicle( "truck_swat", 340100, 75240, 24760, 5527 ); - test_vehicle( "tractor_plow", 281900, 281900, 16630, 16630 ); - test_vehicle( "apc", 1081000, 960200, 77710, 71540 ); - test_vehicle( "humvee", 438400, 210500, 28000, 12950 ); + test_vehicle( "beetle", 230100, 185500, 12790, 10650 ); + test_vehicle( "car", 225700, 130800, 12860, 7469 ); + test_vehicle( "car_sports", 259200, 148800, 13350, 7557 ); + test_vehicle( "electric_car", 69590, 45180, 3620, 2300 ); + test_vehicle( "suv", 474900, 233000, 26800, 13310 ); + test_vehicle( "motorcycle", 65910, 36970, 3108, 1756 ); + test_vehicle( "quad_bike", 42710, 28810, 2675, 1756 ); + test_vehicle( "scooter", 58320, 56490, 2966, 2966 ); + test_vehicle( "superbike", 75480, 8131, 3204, 1190 ); + test_vehicle( "ambulance", 303500, 230100, 19050, 14950 ); + test_vehicle( "fire_engine", 363100, 304800, 21880, 18520 ); + test_vehicle( "fire_truck", 249700, 55040, 16550, 3450 ); + test_vehicle( "truck_swat", 272100, 60190, 19810, 4421 ); + test_vehicle( "tractor_plow", 226900, 226900, 13300, 13300 ); + test_vehicle( "apc", 867300, 770300, 62170, 57230 ); + test_vehicle( "humvee", 353100, 169400, 22400, 10360 ); } diff --git a/tests/vehicle_interact_test.cpp b/tests/vehicle_interact_test.cpp index 56effd97a8595..f26ba61d2b94f 100644 --- a/tests/vehicle_interact_test.cpp +++ b/tests/vehicle_interact_test.cpp @@ -2,13 +2,12 @@ #include "game.h" #include "map.h" -#include "vehicle.h" -#include "veh_type.h" -#include "player.h" -#include "requirements.h" - #include "map_helpers.h" +#include "player.h" #include "player_helpers.h" +#include "requirements.h" +#include "veh_type.h" +#include "vehicle.h" static void test_repair( const std::vector &tools, bool expect_craftable ) { @@ -28,7 +27,7 @@ static void test_repair( const std::vector &tools, bool expect_craftable ) REQUIRE( veh_ptr != nullptr ); // Find the frame at the origin. vehicle_part *origin_frame = nullptr; - for( vehicle_part *part : veh_ptr->get_parts( vehicle_origin, "", false, false ) ) { + for( vehicle_part *part : veh_ptr->get_parts_at( vehicle_origin, "", part_status_flag::any ) ) { if( part->info().location == "structure" ) { origin_frame = part; break; diff --git a/tests/vehicle_power_test.cpp b/tests/vehicle_power_test.cpp new file mode 100644 index 0000000000000..893578cb87436 --- /dev/null +++ b/tests/vehicle_power_test.cpp @@ -0,0 +1,78 @@ +#include "catch/catch.hpp" + +#include "game.h" +#include "map.h" +#include "map_iterator.h" +#include "vehicle.h" +#include "veh_type.h" +#include "player.h" +#include "itype.h" +#include "calendar.h" +#include "weather.h" + +static const itype_id fuel_type_battery( "battery" ); +static const itype_id fuel_type_plut_cell( "plut_cell" ); + +TEST_CASE( "vehicle_power" ) +{ + GIVEN( "Reactor and solar panels" ) { + for( const tripoint &p : g->m.points_in_rectangle( tripoint( 0, 0, 0 ), + tripoint( MAPSIZE * SEEX, MAPSIZE * SEEY, 0 ) ) ) { + g->m.furn_set( p, furn_id( "f_null" ) ); + g->m.ter_set( p, ter_id( "t_pavement" ) ); + g->m.trap_set( p, trap_id( "tr_null" ) ); + g->m.i_clear( p ); + } + + g->m.build_map_cache( 0, true ); + + tripoint test_origin( 15, 15, 0 ); + g->u.setpos( test_origin ); + tripoint vehicle_origin = tripoint( 10, 10, 0 ); + VehicleList vehs; + vehs = g->m.get_vehicles(); + vehicle *veh_ptr; + for( auto &vehs_v : vehs ) { + veh_ptr = vehs_v.v; + g->m.destroy_vehicle( veh_ptr ); + } + g->refresh_all(); + REQUIRE( g->m.get_vehicles().empty() ); + veh_ptr = g->m.add_vehicle( vproto_id( "reactor_test" ), vehicle_origin, 0, 0, 0 ); + REQUIRE( veh_ptr != nullptr ); + g->refresh_all(); + REQUIRE( !veh_ptr->reactors.empty() ); + vehicle_part &reactor = veh_ptr->parts[ veh_ptr->reactors.front() ]; + reactor.ammo_unset(); + veh_ptr->discharge_battery( veh_ptr->fuel_left( fuel_type_battery ) ); + REQUIRE( veh_ptr->fuel_left( fuel_type_battery ) == 0 ); + reactor.ammo_set( fuel_type_plut_cell, 1 ); + REQUIRE( reactor.ammo_remaining() == 1 ); + veh_ptr->power_parts(); + CHECK( reactor.ammo_remaining() == 0 ); + CHECK( veh_ptr->fuel_left( fuel_type_battery ) == 100 ); + g->m.destroy_vehicle( veh_ptr ); + g->refresh_all(); + REQUIRE( g->m.get_vehicles().empty() ); + tripoint solar_origin = tripoint( 5, 5, 0 ); + veh_ptr = g->m.add_vehicle( vproto_id( "solar_panel_test" ), solar_origin, 0, 0, 0 ); + REQUIRE( veh_ptr != nullptr ); + g->refresh_all(); + calendar::turn = to_turns( calendar::turn.season_length() ) + DAYS( 1 ); + time_point start_time = calendar::turn.sunrise() + 3_hours; + veh_ptr->update_time( start_time ); + veh_ptr->discharge_battery( veh_ptr->fuel_left( fuel_type_battery ) ); + REQUIRE( veh_ptr->fuel_left( fuel_type_battery ) == 0 ); + g->weather_override = WEATHER_SUNNY; + veh_ptr->update_time( start_time + 30_minutes ); + int approx_battery1 = veh_ptr->fuel_left( fuel_type_battery ) / 100; + const int exp_min = 12; + const int exp_max = 14; + CHECK( approx_battery1 >= exp_min ); + CHECK( approx_battery1 <= exp_max ); + veh_ptr->update_time( start_time + 2 * 30_minutes ); + int approx_battery2 = veh_ptr->fuel_left( fuel_type_battery ) / 100; + CHECK( approx_battery2 >= approx_battery1 + exp_min ); + CHECK( approx_battery2 <= approx_battery1 + exp_max ); + } +} diff --git a/tests/vehicle_split_test.cpp b/tests/vehicle_split_test.cpp index ddc80e8d9c0fd..fc5f4e64b9937 100644 --- a/tests/vehicle_split_test.cpp +++ b/tests/vehicle_split_test.cpp @@ -2,9 +2,9 @@ #include "game.h" #include "map.h" -#include "vehicle.h" -#include "veh_type.h" #include "player.h" +#include "veh_type.h" +#include "vehicle.h" TEST_CASE( "vehicle_split_section" ) { @@ -12,8 +12,7 @@ TEST_CASE( "vehicle_split_section" ) tripoint test_origin( 15, 15, 0 ); g->u.setpos( test_origin ); tripoint vehicle_origin = tripoint( 10, 10, 0 ); - VehicleList vehs; - vehs = g->m.get_vehicles(); + VehicleList vehs = g->m.get_vehicles(); vehicle *veh_ptr; for( auto &vehs_v : vehs ) { veh_ptr = vehs_v.v; @@ -21,10 +20,12 @@ TEST_CASE( "vehicle_split_section" ) } g->refresh_all(); REQUIRE( g->m.get_vehicles().empty() ); - veh_ptr = g->m.add_vehicle( vproto_id( "cross_split_test" ), vehicle_origin, 0 ); + veh_ptr = g->m.add_vehicle( vproto_id( "cross_split_test" ), vehicle_origin, 0, 0, 0 ); REQUIRE( veh_ptr != nullptr ); g->m.destroy( vehicle_origin ); veh_ptr->part_removal_cleanup(); + REQUIRE( veh_ptr->get_parts_at( vehicle_origin, "", part_status_flag::available ).empty() ); + vehs = g->m.get_vehicles(); // destroying the center frame results in 4 new vehicles CHECK( vehs.size() == 4 ); @@ -41,10 +42,11 @@ TEST_CASE( "vehicle_split_section" ) g->refresh_all(); REQUIRE( g->m.get_vehicles().empty() ); vehicle_origin = tripoint( 20, 20, 0 ); - veh_ptr = g->m.add_vehicle( vproto_id( "circle_split_test" ), vehicle_origin, 0 ); + veh_ptr = g->m.add_vehicle( vproto_id( "circle_split_test" ), vehicle_origin, 0, 0, 0 ); REQUIRE( veh_ptr != nullptr ); g->m.destroy( vehicle_origin ); veh_ptr->part_removal_cleanup(); + REQUIRE( veh_ptr->get_parts_at( vehicle_origin, "", part_status_flag::available ).empty() ); vehs = g->m.get_vehicles(); CHECK( vehs.size() == 1 ); if( vehs.size() == 1 ) { diff --git a/tests/vehicle_test.cpp b/tests/vehicle_test.cpp index 6b44ce7147c20..e7d0e6e754ba6 100644 --- a/tests/vehicle_test.cpp +++ b/tests/vehicle_test.cpp @@ -2,9 +2,9 @@ #include "game.h" #include "map.h" -#include "vehicle.h" -#include "veh_type.h" #include "player.h" +#include "veh_type.h" +#include "vehicle.h" TEST_CASE( "destroy_grabbed_vehicle_section" ) { @@ -12,12 +12,15 @@ TEST_CASE( "destroy_grabbed_vehicle_section" ) tripoint test_origin( 60, 60, 0 ); g->u.setpos( test_origin ); tripoint vehicle_origin = test_origin + tripoint( 1, 1, 0 ); - vehicle *veh_ptr = g->m.add_vehicle( vproto_id( "bicycle" ), vehicle_origin, -90 ); + vehicle *veh_ptr = g->m.add_vehicle( vproto_id( "bicycle" ), vehicle_origin, -90, 0, 0 ); REQUIRE( veh_ptr != nullptr ); tripoint grab_point = test_origin + tripoint( 1, 0, 0 ); g->u.grab( OBJECT_VEHICLE, grab_point ); + REQUIRE( g->u.get_grab_type() != OBJECT_NONE ); + REQUIRE( g->u.grab_point == grab_point ); WHEN( "The vehicle section grabbed by the player is destroyed" ) { g->m.destroy( grab_point ); + REQUIRE( veh_ptr->get_parts_at( grab_point, "", part_status_flag::available ).empty() ); THEN( "The player's grab is released" ) { CHECK( g->u.get_grab_type() == OBJECT_NONE ); CHECK( g->u.grab_point == tripoint_zero ); diff --git a/tests/vehicle_turrets.cpp b/tests/vehicle_turrets.cpp index 4d77df4010982..064cd5438f566 100644 --- a/tests/vehicle_turrets.cpp +++ b/tests/vehicle_turrets.cpp @@ -1,12 +1,12 @@ #include "catch/catch.hpp" +#include "ammo.h" #include "game.h" #include "itype.h" -#include "ammo.h" #include "map.h" -#include "vehicle.h" -#include "veh_type.h" #include "player.h" +#include "veh_type.h" +#include "vehicle.h" static std::vector turret_types() { @@ -54,10 +54,10 @@ TEST_CASE( "vehicle_turret", "[vehicle] [gun] [magazine] [.]" ) vehicle *veh = g->m.add_vehicle( vproto_id( "none" ), 65, 65, 270, 0, 0 ); REQUIRE( veh ); - const int idx = veh->install_part( 0, 0, e->get_id(), true ); + const int idx = veh->install_part( point( 0, 0 ), e->get_id(), true ); REQUIRE( idx >= 0 ); - REQUIRE( veh->install_part( 0, 0, vpart_id( "storage_battery" ), true ) >= 0 ); + REQUIRE( veh->install_part( point( 0, 0 ), vpart_id( "storage_battery" ), true ) >= 0 ); veh->charge_battery( 10000 ); auto ammo = veh->turret_query( veh->parts[idx] ).base()->ammo_type(); @@ -67,7 +67,7 @@ TEST_CASE( "vehicle_turret", "[vehicle] [gun] [magazine] [.]" ) REQUIRE( tank ); INFO( tank->get_id().str() ); - auto tank_idx = veh->install_part( 0, 0, tank->get_id(), true ); + auto tank_idx = veh->install_part( point( 0, 0 ), tank->get_id(), true ); REQUIRE( tank_idx >= 0 ); REQUIRE( veh->parts[ tank_idx ].ammo_set( ammo->default_ammotype() ) ); diff --git a/tests/vision_test.cpp b/tests/vision_test.cpp new file mode 100644 index 0000000000000..ba880e54f8e3c --- /dev/null +++ b/tests/vision_test.cpp @@ -0,0 +1,425 @@ +#include "catch/catch.hpp" + +#include "game.h" +#include "player.h" +#include "field.h" +#include "string.h" +#include "map.h" + +#include "map_helpers.h" + +void full_map_test( const std::vector &setup, + const std::vector &expected_results, + calendar time ) +{ + const ter_id t_brick_wall( "t_brick_wall" ); + const ter_id t_window_frame( "t_window_frame" ); + const ter_id t_floor( "t_floor" ); + const ter_id t_utility_light( "t_utility_light" ); + const efftype_id effect_narcosis( "narcosis" ); + + g->place_player( tripoint( 60, 60, 0 ) ); + g->reset_light_level(); + g->u.clear_effects(); + clear_map(); + + REQUIRE( !g->u.is_blind() ); + REQUIRE( !g->u.in_sleep_state() ); + REQUIRE( !g->u.has_effect( effect_narcosis ) ); + + g->u.recalc_sight_limits(); + + calendar::turn = time; + + int height = setup.size(); + REQUIRE( height > 0 ); + REQUIRE( static_cast( height ) == expected_results.size() ); + int width = setup[0].size(); + + for( const std::string &line : setup ) { + REQUIRE( line.size() == static_cast( width ) ); + } + + for( const std::string &line : expected_results ) { + REQUIRE( line.size() == static_cast( width ) ); + } + + tripoint origin; + for( int y = 0; y < height; ++y ) { + for( int x = 0; x < width; ++x ) { + if( setup[y][x] == 'U' || setup[y][x] == 'u' ) { + origin = g->u.pos() - point( x, y ); + break; + } + } + } + + { + // Sanity check on player placement + tripoint player_offset = g->u.pos() - origin; + REQUIRE( player_offset.y >= 0 ); + REQUIRE( player_offset.y < height ); + REQUIRE( player_offset.x >= 0 ); + REQUIRE( player_offset.x < width ); + char player_char = setup[player_offset.y][player_offset.x]; + REQUIRE( ( player_char == 'U' || player_char == 'u' ) ); + } + + for( int y = 0; y < height; ++y ) { + for( int x = 0; x < width; ++x ) { + const tripoint p = origin + point( x, y ); + switch( setup[y][x] ) { + case ' ': + break; + case 'L': + g->m.ter_set( p, t_utility_light ); + break; + case '#': + g->m.ter_set( p, t_brick_wall ); + break; + case '=': + g->m.ter_set( p, t_window_frame ); + break; + case '-': + case 'u': + g->m.ter_set( p, t_floor ); + break; + case 'U': + // Already handled above + break; + default: + FAIL( "unexpected setup char '" << setup[y][x] << "'" ); + } + } + } + + // We have to run thw whole thing twice, because the first time through the + // player's vision_threshold is based on the previous lighting level (so + // they might, for example, have poor nightvision due to having just been + // in daylight) + g->m.update_visibility_cache( origin.z ); + g->m.build_map_cache( origin.z ); + g->m.update_visibility_cache( origin.z ); + g->m.build_map_cache( origin.z ); + + const level_cache &cache = g->m.access_cache( origin.z ); + const visibility_variables &vvcache = + g->m.get_visibility_variables_cache(); + + std::ostringstream fields; + std::ostringstream transparency; + std::ostringstream seen; + std::ostringstream lm; + std::ostringstream apparent_light; + std::ostringstream obstructed; + transparency << std::setprecision( 3 ); + seen << std::setprecision( 3 ); + apparent_light << std::setprecision( 3 ); + + for( int y = 0; y < height; ++y ) { + for( int x = 0; x < width; ++x ) { + const tripoint p = origin + point( x, y ); + map::apparent_light_info al = g->m.apparent_light_helper( cache, p ); + for( auto &pr : g->m.field_at( p ) ) { + fields << pr.second.name() << ','; + } + fields << ' '; + transparency << std::setw( 6 ) + << cache.transparency_cache[p.x][p.y] << ' '; + seen << std::setw( 6 ) << cache.seen_cache[p.x][p.y] << ' '; + four_quadrants this_lm = cache.lm[p.x][p.y]; + lm << this_lm.to_string() << ' '; + apparent_light << std::setw( 6 ) << al.apparent_light << ' '; + obstructed << ( al.obstructed ? '#' : '.' ) << ' '; + } + fields << '\n'; + transparency << '\n'; + seen << '\n'; + lm << '\n'; + apparent_light << '\n'; + obstructed << '\n'; + } + + INFO( "origin: " << origin ); + INFO( "player: " << g->u.pos() ); + INFO( "unimpaired_range: " << g->u.unimpaired_range() ); + INFO( "vision_threshold: " << vvcache.vision_threshold ); + INFO( "fields:\n" << fields.str() ); + INFO( "transparency:\n" << transparency.str() ); + INFO( "seen:\n" << seen.str() ); + INFO( "lm:\n" << lm.str() ); + INFO( "apparent_light:\n" << apparent_light.str() ); + INFO( "obstructed:\n" << obstructed.str() ); + + bool success = true; + std::ostringstream expected; + std::ostringstream observed; + + for( int y = 0; y < height; ++y ) { + for( int x = 0; x < width; ++x ) { + const tripoint p = origin + point( x, y ); + lit_level level = g->m.apparent_light_at( p, vvcache ); + const char exp_char = expected_results[y][x]; + if( exp_char < '0' || exp_char > '9' ) { + FAIL( "unexpected result char '" << + expected_results[y][x] << "'" ); + } + int expected_level = exp_char - '0'; + + observed << level << ' '; + expected << expected_level << ' '; + if( level != expected_level ) { + success = false; + } + } + observed << '\n'; + expected << '\n'; + } + + INFO( "observed:\n" << observed.str() ); + INFO( "expected:\n" << expected.str() ); + CHECK( success ); +} + +struct vision_test_case { + std::vector setup; + std::vector expected_results; + calendar time; + bool test_3d; + + static void transpose( std::vector &v ) { + if( v.empty() ) { + return; + } + std::vector new_v( v[0].size() ); + + for( size_t x = 0; x < v.size(); ++x ) { + for( size_t y = 0; y < new_v.size(); ++y ) { + new_v[y].push_back( v[x].at( y ) ); + } + } + + v = new_v; + } + + void transpose() { + transpose( setup ); + transpose( expected_results ); + } + + void reflect_x() { + for( std::string &s : setup ) { + std::reverse( s.begin(), s.end() ); + } + for( std::string &s : expected_results ) { + std::reverse( s.begin(), s.end() ); + } + } + + void reflect_y() { + std::reverse( setup.begin(), setup.end() ); + std::reverse( expected_results.begin(), expected_results.end() ); + } + + void test() const { + full_map_test( setup, expected_results, time ); + } + + void test_all_transformations() const { + // Three reflections generate all possible rotations and reflections of + // the test case + for( int transform = 0; transform < 8; ++transform ) { + INFO( "test case transformation: " << transform ); + vision_test_case copy( *this ); + if( transform & 1 ) { + copy.transpose(); + } + if( transform & 2 ) { + copy.reflect_x(); + } + if( transform & 4 ) { + copy.reflect_y(); + } + copy.test(); + } + } + + void test_all() const { + // Disabling 3d tests for now since 3d sight casting is actually + // different (it sees round corners more). + if( test_3d ) { + INFO( "using 3d casting" ); + fov_3d = true; + test_all_transformations(); + } + { + INFO( "using 2d casting" ); + fov_3d = false; + test_all_transformations(); + } + } +}; + +static constexpr int midnight = HOURS( 0 ); +static constexpr int midday = HOURS( 12 ); + +// The following characters are used in these setups: +// ' ' - empty, outdoors +// '-' - empty, indoors +// 'U' - player, outdoors +// 'u' - player, indoors +// 'L' - light, indoors +// '#' - wall +// '=' - window frame + +TEST_CASE( "vision_daylight", "[shadowcasting][vision]" ) +{ + vision_test_case t { + { + " ", + " ", + " U ", + }, + { + "444", + "444", + "444", + }, + midday, + true + }; + + t.test_all(); +} + +TEST_CASE( "vision_day_indoors", "[shadowcasting][vision]" ) +{ + vision_test_case t { + { + "###", + "#u#", + "###", + }, + { + "111", + "141", + "111", + }, + midday, + true + }; + + t.test_all(); +} + +TEST_CASE( "vision_light_shining_in", "[shadowcasting][vision]" ) +{ + vision_test_case t { + { + "##########", + "#--------#", + "#u-------#", + "#--------=", + "##########", + }, + { + "1144444166", + "1144444466", + "1444444444", + "1144444444", + "1144444444", + }, + midday, + false // 3D FOV gives different results here due to it seeing round corners more + }; + + t.test_all(); +} + +TEST_CASE( "vision_no_lights", "[shadowcasting][vision]" ) +{ + vision_test_case t { + { + " ", + " U ", + }, + { + "111", + "141", + }, + midnight, + true + }; + + t.test_all(); +} + +TEST_CASE( "vision_utility_light", "[shadowcasting][vision]" ) +{ + vision_test_case t { + { + " L ", + " ", + " U ", + }, + { + "444", + "444", + "444", + }, + midnight, + true + }; + + t.test_all(); +} + +TEST_CASE( "vision_wall_obstructs_light", "[shadowcasting][vision]" ) +{ + vision_test_case t { + { + " L ", + "###", + " U ", + }, + { + "666", + "111", + "141", + }, + midnight, + true + }; + + t.test_all(); +} + +TEST_CASE( "vision_see_wall_in_moonlight", "[shadowcasting][vision]" ) +{ + const time_duration till_full_moon = calendar::season_length() / 3; + // Verify that I've picked the full_moon time correctly. + CHECK( get_moon_phase( calendar::time_of_cataclysm + till_full_moon ) == MOON_FULL ); + // Want a night time + const int days_till_full_moon = to_days( till_full_moon ); + + vision_test_case t { + { + "---", + "###", + " ", + " ", + " U ", + }, + { + "666", + "111", + "111", + "111", + "141", + }, + DAYS( days_till_full_moon ), + true + }; + + t.test_all(); +} diff --git a/tests/visitable.cpp b/tests/visitable.cpp index fb874a82a8dfc..880c1a966939e 100644 --- a/tests/visitable.cpp +++ b/tests/visitable.cpp @@ -4,7 +4,6 @@ #include "inventory.h" #include "item.h" - TEST_CASE( "visitable_summation" ) { inventory test_inv; diff --git a/tests/visitable_remove.cpp b/tests/visitable_remove.cpp index b7395e1e3e374..dec0c688d923f 100644 --- a/tests/visitable_remove.cpp +++ b/tests/visitable_remove.cpp @@ -1,16 +1,16 @@ #include "catch/catch.hpp" #include "game.h" -#include "player.h" -#include "visitable.h" #include "itype.h" #include "map.h" #include "map_selector.h" +#include "player.h" #include "rng.h" -#include "vpart_position.h" -#include "vpart_reference.h" #include "vehicle.h" #include "vehicle_selector.h" +#include "visitable.h" +#include "vpart_position.h" +#include "vpart_reference.h" template static int count_items( const T &src, const itype_id &id ) @@ -21,7 +21,7 @@ static int count_items( const T &src, const itype_id &id ) return VisitResponse::NEXT; } ); return n; -}; +} TEST_CASE( "visitable_remove", "[visitable]" ) { diff --git a/tests/wield_times_test.cpp b/tests/wield_times_test.cpp index 2edd56eea8626..4e2d96e3257e1 100644 --- a/tests/wield_times_test.cpp +++ b/tests/wield_times_test.cpp @@ -1,11 +1,10 @@ #include "catch/catch.hpp" -#include "map_helpers.h" -#include "player_helpers.h" - -#include "player.h" #include "game.h" #include "map.h" +#include "map_helpers.h" +#include "player.h" +#include "player_helpers.h" #include